Forum: Mikrocontroller und Digitale Elektronik USB oder Ethernet


von Tikonteroga (Gast)


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

von Georg G. (df2au)


Lesenswert?

Das kann man nur mit einem entschiedenen "JA" beantworten. Wenn du es 
etwas genauer wissen willst, ist die Antwort "es kommt darauf an".

von Tikonteroga (Gast)


Lesenswert?

Hallo,

ich verstehe deine Antwort nicht.

Ich habe ja gefragt, ob Ethernet (TCP/IP) oder USB empfehlenswerter ist?

Sind noch genauere Informationen von meiner Seite erforderlich ?

von thomas s. (Gast)


Lesenswert?

Tikonteroga schrieb:
> Hallo,
>
> ich verstehe deine Antwort nicht.
>
> Ich habe ja gefragt, ob Ethernet (TCP/IP) oder USB empfehlenswerter ist?
>
> Sind noch genauere Informationen von meiner Seite erforderlich ?

ja

von Tikonteroga (Gast)


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.

von Εrnst B. (ernst)


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.

von Tikonteroga (Gast)


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 ?

von Martin H. (marrtn)


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.

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.