Forum: PC Hard- und Software WinCe Board - CAN/USB - Motoransteuerung


von René (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich arbeite gerade an der Steuerung für unser Maturaprojekt einen 
Tripod. (Bild)

Nun habe ich, dass Problem dass ich mit möglichst echtzeitfähiger 
Kommunikation die drei Motoren ansteuern soll.
Die Koordinatentransformation ist bereits erledigt und ich habe jetzt 
auch schon ein WinCe Board von Keith & Koep, auf dem Windows CE 4.0 
installiert ist.
Dazu haben wir drei Antriebsregler von miControl besorgt die einen 
USB-CAN Umsetzer dabei haben.
Kann man mit diesem USB-CAN Umsetzer überhaupt in echtzeit übertragen?

Unser WinCe Board hat auch einen CAN-BUS integriert, aber ich leider 
habe noch nicht die größte Erfahrung in CAN-Protokoll Programmierung...

Was meint Ihr, wie würdet ihr es lösen?
Sollte ich die Motoren über ein anderes WinCe Board, der ein USB-Target 
hat, mit dem USB-CAN Umsetzter ansteuern ODER mit dem bereits 
vorhandenen Board über den CAN-BUS?
Oder gibt es andere bessere Möglichkeiten ? (Linux...)

Danke für eure Hilfe!!!

von Volker Z. (vza)


Lesenswert?

René schrieb:
> möglichst echtzeitfähiger

Definiere doch deine Echtzeitanforderung. Dann kann man auch abschätzen 
ob es Reicht.

- Windows CE 4.0 ist, glaube ich, nicht Echtzeitfähig.

- Eingebaute Schnittstellen weisen immer geringere Latenszeiten auf, als
  externe.

- Linux ist nicht Echtzeitfähig. Es sei den du nimmst ein spezielles
  Echtzeitkernal.

- Auch ist der CANbus nicht Echtzeitfähig. Ausnahme: TTCAN.

Echtzeit heisst: Eine bestimmte Reaktion in einer definierten Zeit. Die 
"definierten Zeit" kann auch eine Stunde sein.

Du musst kein Echtzeitsystem haben. Meistens reicht es, wenn es 
ausreichend Schnell ist.

Welche Reaktionszeiten benötigt euer Projekt den?

von René (Gast)


Lesenswert?

Laut Berechnung wäre 1ms ideal, aber wahrscheinlich würden konstante 
10ms Taktzeiten pro gesendeten Wert (8Byte Nachrichten) reichen, aber 
ich weiß nicht um wie viel sich die Linearität der Gerade ändert bei 
10ms...

Wichtig ist, dass der Timer möglichst genau 1ms (10ms) schafft und nicht 
von anderen Programmen abgelenkt werden kann...

Die müssten halt immer konstant sein, was beim normalen Win7 leider 
nicht gewährleistet ist...
WinCe ab 4.0 ist echtzeitfähig...

von Löwe (Gast)


Lesenswert?

Moin,

1ms Latenz ohne Jitter wirst du über USB nicht hinbekommen...
Dein größter Feind werden dabei die Schwankungen in der Latenz sein.

Hast du dir mal ein paar Linux-Alternativen angeschaut?

Z.B. hier:
http://www.linuxcnc.org/

Ich weiß nicht ob sich deine Anforderung damit 1:1 umsetzen lässt.

Zumindest bietet die Software einen Hardware Abstraction Layer, mit dem 
sich die Geometrie deiner Maschine nachbilden lässt. Schnittstellen 
werden auch genügen unterstützt.

von René (Gast)


Lesenswert?

Danke für eure bisherigen schnellen Rückmeldungen!!!

Ja, das Problem ist, ich habe bereits ein C#-Programm geschrieben, das 
wird wahrscheinlich nicht auf einen Linux-System laufen...

von bluppdidupp (Gast)


Lesenswert?

managed Anwendungen sind oft auch nicht echtzeitfähig (Der Garbage 
Collector haut einem willkürlich rein)

von Martin (Gast)


Lesenswert?

... Eine bestimmte Reaktion in einer definierten Zeit. ...

Nach dieser Definition ist der CAN-Bus echtzeitfähig.

von Volker Z. (vza)


Lesenswert?

Martin schrieb:
> Nach dieser Definition ist der CAN-Bus echtzeitfähig.

Nein.  Du kannst nicht hervorsagen wie viele Messages mit höherer 
Priorität sich "vordrängeln" werden. Nur TTCAN ist echtzeitfähig.
http://de.wikipedia.org/wiki/TTCAN#TTCAN

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.