USB oder Ethernet

Gast #3130182
Lesenswert?

Hallo,

wenn man ein Device (Master) mit Windows CE und Intel Atom mit einem 
kleinen Embedded Device (Slave) mit ARM und 2x CAN verbinden möchte um 
zyklisch z. B. alle 1, 10 oder 100 ms Daten vom Slave an den Master 
übertragen möchte, ist dann eine Verbindung über USB oder Ethernet 
(TCP/IP) empfehlenswerter?

Mir geht es hauptsächlich um das zeitliche Verhalten. Die Funktion die 
das senden der Daten auf dem Slave realisiert, sollte eine möglichst 
kurze Ausführungszeit haben.

MfG

Tikonteroga
Gast #3130221
Lesenswert?

Also auf dem Slave werden über den CAN Nachrichten empfangen.

Die Signale in einer Nachricht, werden in Variablen im RAM auf dem Slave 
gespeichert. Dabei wird eine Signal-Variable immer durch das Signal der 
neu empfangenen Nachricht überschrieben. Es ist also immer der 
Signal-Wert der zuletzt empfangenen Nachricht verfügbar.

Dabei kann es sich um Größenordnungen von 100-500 Variablen handeln, die 
unterschiedlich vom Datentyp ubyte, sbyte, ..., uword, sword, ulonglong, 
slonglong sein können.

Über einen Timer werden einige Signale jede ms, einige alle 10 ms und 
einige alle 100 ms an den Master gesendet.

Dabei ist die Anzahl der Signale die jede ms übertragen werden niedriger 
als die Anzahl der Signale, die alle 100 ms übertragen werden.

Sagen wird mal, dass 512-1024 byte alle 100 ms ein realistischer Wert 
ist.

Der Kommunikation auf dem CAN werden quasi abgetastet.
#3130230
Lesenswert?

TCP/IP ist auf Windows CE-Seite "einfach schon da", d.H. viel weniger 
Aufwand.
Für USB bräuchtest du einen Treiber auf CE seite, oder musst einen 
generischen (CDC, HID, ...) recyclen.
Auf Slave-Seite gibt sich das nicht viel, Fertige Libs gibts sicher für 
beides.

Vom zeitlichen Verhalten ist evtl Ethernet besser, weil dein Slave da 
das Timing selbst bestimmen kann, und nicht vom Host vorgegeben kriegt. 
Kann bei entsprechender Hardware-Unterstützung in deinem ARM (DMA, 
Ping-Pong-Buffers, BlahMarketingFasel usw) aber auch egal sein.

Richtig "Echtzeitfähig" sind beide Übertragungswege nicht. Macht aber 
nix, einfach Timestamp im Slave/Arm generieren lassen und mitschicken.
Gast #3130331
Lesenswert?

Okay, danke ich tendiere auch zu Ethernet (TCP/IP. Ich hätte das dann 
auf Windows CE Seite über socket2.h realisiert.

Ein Frage hätte ich noch. Die Bootzeit des Windows CE System sollte 
möglichst niedrig sein (< 1s). Könnten USB-/Ethernettreiber bzw. die 
Geräteerkennung von USB, ... unterschiedliche Auswirkungen auf die 
Bootzeit haben ?
#3130354
Lesenswert?

Um ein wenig Verunsicherung zu stiften...
Bei USB ist Slaveseitig quasi kein Protokoll-Overhead vorhanden. Die 
Konfiguration erfolgt einmalig, danach werden die Daten einfach in den 
jeweiligen Endpoint geworfen und um den Rest kümmert sich der 
USB-Controller selbst.
TCP/IP braucht dagegen bekanntermaßen einen Protokoll-Stack.

Die Aufwände auf CE-Seite kann ich nicht beurteilen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren