Forum: Mikrocontroller und Digitale Elektronik Single Pair Ethernet oder CAN-FD


von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Hi Zusammen,

ich plane gerade einen Robotter mit 8-12 Controllern (RPI, STM32H7, 
STM32F7 oder ahnliches) bisher habe ich für ähnliche Sachen CAN genommen 
mit einem selbst gestrickten Protokoll. Jetzt möchte ich aber was neues 
machen und da ich mit dem CAN 1MBit immer Probleme hatte Debugdaten 
schnell genug aus den Nodes zubekommen dachte ich ich gehe auf CAN-FD 
oder Single Pair Ethernet.

Hat wer aktuelle Erfahrungen mit SPE mit kleinen Controllern mit MAC 
drin? Oder ist es besser sowas wie ADIN1110 zu verwenden. Wie sieht der 
Netto-Datendurchsatz und der Hardwareaufwand im Vergleich zu CAN-FD aus. 
Taugt der LAN8650 was oder was könnt ihr empfehlen.

Gruß

Alex

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hast du dir Gedanken zur Topologie gemacht? ADIN1110 ist 10BASE-T1L und 
damit nur Point-To-Point. LAN8650 ist 10BASE-T1S und damit wie CAN-FD 
Point-To-Multipoint. Ethernet hat grundsätzlich den Charm mit einer 
Vielzahl von Protokollen zusammenzuarbeiten. CAN-FD ist dafür erheblich 
einfacher in der Umsetzung. Im weitesten Sinne ist das einfach CAN mit 
DLC bis zu 64. Kommt dann noch auf deine Komponenten an. Können alle 
CAN-FD (ohne den grausigen MCP2518)? Wie bekommst du 10BASE-T1x an 
deinen Pi?

Matthias

von Paul B. (paule201)


Lesenswert?

Alex E. schrieb:
> CAN genommen
> mit einem selbst gestrickten Protokoll.

Wäre XCP eventuell das was du brauchst um besser an Infos aus dem 
Steuergerät zu kommen zu können?
https://www.csselectronics.com/pages/ccp-xcp-on-can-bus-calibration-protocol

Wir haben mal ne Zeit lang mit Automotive Ethernet rumgespielt (KFZ) und 
sind dann wieder auf CAN zurück....zu speziell und unterm Strich nicht 
wirklich nötig für 200 (relevante) Werte und 200 Status Bits. Abgesehen 
davon nutzt es kaum einer der OEMs (die ich kenne).

Zum Rest kann ich dir leider nichts sagen.

von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Μαtthias W. schrieb:
> Hast du dir Gedanken zur Topologie gemacht? ADIN1110 ist 10BASE-T1L und
> damit nur Point-To-Point. LAN8650 ist 10BASE-T1S und damit wie CAN-FD
> Point-To-Multipoint. Ethernet hat grundsätzlich den Charm mit einer
> Vielzahl von Protokollen zusammenzuarbeiten. CAN-FD ist dafür erheblich
> einfacher in der Umsetzung. Im weitesten Sinne ist das einfach CAN mit
> DLC bis zu 64. Kommt dann noch auf deine Komponenten an. Können alle
> CAN-FD (ohne den grausigen MCP2518)? Wie bekommst du 10BASE-T1x an
> deinen Pi?
>
> Matthias

Guter Punkt das den ADIN nur Punkt zu Punkt macht ist mir nicht 
aufgefallen. MultiDrop ist schon das was ich will. Ein Switch macht 
alles nur kompliziert. Sonst könnte ich ja auch einfach überall wo es 
passt RJ45 dranklatschen.

Für das Interfacing zum Pi dachte ich an sowas 
https://www.nxp.com/products/interfaces/ethernet-/automotive-ethernet-phys/ethernet-media-converter-for-drones-rovers-mobile-robotics-and-automotive:RDDRONE-T1ADAPT

Der H7 als auch ein eventueller G4 haben beide CAN-FD onboard. Was mich 
da aber einschränkt ist die DLC mit 64. Die MTU von 1500 bei Eth ist 
schon schoner. Damit bekomme ich alle Daten die zusammen gehören mit 
einem Paket übertragen und muss mir keine Gedanken über die Reihenfolge 
der Can Pakete machen.

Paul B. schrieb:
> Wäre XCP eventuell das was du brauchst um besser an Infos aus dem
> Steuergerät zu kommen zu können?
> https://www.csselectronics.com/pages/ccp-xcp-on-can-bus-calibration-protocol

Ich habe da eher sowas wie Cyphal im Auge. https://opencyphal.org/
Aber auch die haben bei CAN-FD das Problem das größere Pakete müssen 
geteilt werden. Die nehmen da aber den CAN Treiber in die Pflicht dass 
dieser die Pakete mit der selben ID aber definierter Reihenfolge sendet. 
Das kollidiert eigentlich mit dem CAN-Gedanken. Weil Mechanismen wie 
Autoretransmit usw. da bestimmt Probleme machen.

von Obelix X. (obelix)


Lesenswert?

Alex E. schrieb:
> Taugt der LAN8650 was oder was könnt ihr empfehlen.

Für Empfehlungen musst du Daten liefern. Benötigte Datenrate, Latenz, 
Galvanisch getrennt, Anzahl Teilnehmer, Datensicherheit , Leitungslänge 
ist kein größes Thema, oder? ...

: Bearbeitet durch User
von Alex E. (tecnologic) Benutzerseite


Lesenswert?

Obelix X. schrieb:
> Alex E. schrieb:
>> Taugt der LAN8650 was oder was könnt ihr empfehlen.
>
> Für Empfehlungen musst du Daten liefern. Datenrate? Latenz? Galvanisch
> getrennt? Anzahl Teilnehmer?

5x Motorumrichter je:
 - galv. getrennt wegen Stromaufnahme
 - 0,1 - 0.8MBit/s (Wunsch wenn ich alles an Daten raus haue)
 - Zyklus 1ms
 - Latenz kleiner 100us, 10us wäre gut.

1x Servo-Aktor:
 - galv. getrennt wegen Stromaufnahme
 - 0,1MBit/s
 - Zyklus 5ms
 - Latenz kleiner 100us

1x IMU:
 - keine trennung notwendig
 - 0,5MBit ( Debug Datensammlung)
 - Zyklus 1ms
 - Latenz kleiner 100us

1x IO-Sammler:
 - keine Trennung notwendig
 - 0,05 MBit/s
 - Zyklus 10ms
 - Latenz kleiner 100us

1x Master (RPi):
 - keine Trennung notwendig
 - 0,5MBit/s
 - Zyklus 1ms (Gilt es noch zu testen ob das mit RT-PREEMT machbar ist 
für die Anwendung)
 - Latenz kleiner 100us (wird nicht einfach, ich weiß)

Die Datenraten verstehen ich als Theoretischer Wurst-Fall und werden 
praktisch wahrscheinlich nie alle gleichzeitig so hoch sein.
Wir reden vllt. von 4MBit wenn ich meine Datensammelwut etwas ausdunne. 
Was mit CAN-FD gehen sollte. Aber Ich müsste mich direkt am Anfang 
einschränken. Kann man machen aber einfach so Daten raushauen zu können 
und aufzuzeichnen wäre schon schon.

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

Alex E. schrieb:

> Taugt der LAN8650 was oder was könnt ihr empfehlen.

Der LAN8650 ist ein SPI MAC-PHY. Dein STM32H7 hat aber selber einen 
Ethernet MAC, und zwar mit Unterstützung durch CubeMX etc. Den solltest 
Du daher auch benutzen. Und wenn Du den benutzt, dann brauchst Du nur 
noch einen PHY, und das wäre dann ein LAN8670/71/72, je nach dem ob MII 
oder RMII gefragt ist.

Für den Pi wäre ein Ethernet Switch das geeignete (z.B. eine Kombination 
aus LAN9354 und LAN8671), oder ein LAN8651 am SPI als separater 
Netzwerkport. Da gibts z.B. das hier:

https://www.mikroe.com/two-wire-eth-click

fchk

von Frank K. (fchk)


Lesenswert?

Alex E. schrieb:

> Für das Interfacing zum Pi dachte ich an sowas
> 
https://www.nxp.com/products/interfaces/ethernet-/automotive-ethernet-phys/ethernet-media-converter-for-drones-rovers-mobile-robotics-and-automotive:RDDRONE-T1ADAPT

Das ist für 100BaseT1, also auch Punkt-zu-Punkt.

10BaseT1S, 10BaseT1L, 100BaseT1 und 1000BaseT1 sind nicht untereinander 
kompatibel. Du musst explizit nach 10BaseT1S suchen.

fchk

von Andreas M. (amesser)


Lesenswert?

T1S Multidrop hat halt hohe Latenzen, Token Ring eben.
https://www.ieee802.org/3/cg/public/Jan2019/Tutorial_cg_0119_final.pdf

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.