Forum: Mikrocontroller und Digitale Elektronik IP/Ethernet über RS485


von Tom (molecule)


Lesenswert?

Hallo

Ich habe eine etwas unkonventionelle Idee für ein IP-over-RS485-System. 
Die Architektur besteht aus einer "Master"-Einheit (z.B. ESP32 mit WiFi) 
und mehreren "Slave"-Einheiten (z.B. WCH CH32V*).

Der herkömmliche Ansatz wäre wahrscheinlich, dass die "Slave"-Einheiten 
die Daten an die "Master"-Einheit senden, welche sie dann sammelt und 
ins Internet überträgt. Dieser Ansatz erfordert jedoch eine enge 
Abstimmung zwischen "Master" und "Slave", da sie die übertragenen Werte 
voneinander kennen müssen.

Daher spiele ich mit der Idee, auf den "Slave"-Einheiten ebenfalls einen 
IP-Stack laufen zu lassen, während der "Master" als Router fungiert. Das 
bedeutet, dass der "Slave" hinter einem NAT einen regulären 
Internetzugriff hat.

Ist ein solches Vorhaben bei geringem IP-Datenaufkommen (z.B. MQTT) 
überhaupt sinnvoll? Oder stosse ich bereits an die Grenzen von RS485?

Mir ist bewusst, dass ich dafür eine Form von 
Kollisionserkennung/-vermeidung benötige. Welche Protokolle eignen sich 
hier? Gibt es geeignete Protokolle, in die ich meine IP-Pakete einpacken 
kann?

Ich freue mich auf eure Meinungen und Erfahrungen zu diesem Thema!

von Frank K. (fchk)


Lesenswert?

Egal was Du da auch machst, für Dein Vorhaben gibt es keine 
Standardlösung. Für RS232 hättest Du PPP machen können, aber das setzt 
eben eine Punkt-zu-Punkt Verbindung voraus.

Wenn Du schon soweit bist, einen kompletten IP-Stack auszurollen, der ja 
ohnehin schon recht fett für einen uC ist, dann ist der Weg zu Ethernet 
selber nicht mehr so weit. Das ist dann wieder eine Standardlösung. Wenn 
Du gerne eine Zweidraht-Verkabelung ohne Trafo und mit kleinen Steckern 
hättest, dann gibt es Single Pair Ethernet SPE, in Deinem Fall 
10BaseT1S. Microchip hat dafür sowohl nackte PHYs für RMII als auch 
MAC+PHY für SPI. Da sind dann all Deine Probleme, die Du mit RS485 hast, 
bereits gelöst, und zur Anbindung an einen Router mit normalem Ethernet 
reicht ein Switch bestehend aus LAN9354 (RMII+2*RJ45) plus LAN8671 SPE 
PHY.

https://www.microchip.com/en-us/product/LAN8651
https://www.microchip.com/en-us/product/LAN8671

SPE hat wie normales Ethernet bereits automatisch galvanische Trennung 
(hier kapazitiv) eingebaut und ist gleichspannungsfrei. Du musst also 
keinen GND mitschleppen und hast keine Common Mode Probleme etc.

Wenn Du auf RS485 bleiben willst, würde ich auf IP verzichten. 
Modbus/RTU ergibt auf den Slaves ein sehr sehr sehr viel schlankeres 
System und kann einfach auf Modbus/TCP über Ethernet/Wifi auf dem Master 
umgesetzt werden. Damit sind die Slaves übers Internet einzeln 
abfragbar, ohne dass der Master jeden einzelnen Parameter in einer Liste 
haben müsste. Und das funktioniert seit 40 Jahren.

fchk

: Bearbeitet durch User
von Michael (Firma: HW Entwicklung) (mkn)


Lesenswert?

Frank K. schrieb:
> 10BaseT1S
8 Busteilnehmer, 25m.
Ist die Frage ob dem TO das reicht.

> Wenn Du auf RS485 bleiben willst, würde ich auf IP verzichten.
+1

von Tom (molecule)


Lesenswert?

Frank K. schrieb:
> Wenn
> Du gerne eine Zweidraht-Verkabelung ohne Trafo und mit kleinen Steckern
> hättest, dann gibt es Single Pair Ethernet SPE, in Deinem Fall
> 10BaseT1S. Microchip hat dafür sowohl nackte PHYs für RMII als auch
> MAC+PHY für SPI.

Stimmt, zu Single Pair Ethernet hatte ich mal einen Vertreter da. Das 
ist ein sehr guter Vorschlag!

Zu dem Zeitpunkt war jedoch die Einschränkung, dass der Multipoint 
betrieb noch nicht möglich ist. Hat sich da etwas geändert? In den 
Datenblättern lese ich an mehreren Stellen, dass Multipoint möglich sein 
soll. Ein Schaubild o.ä. habe ich jedoch nicht gefunden.


Frank K. schrieb:
> Wenn Du auf RS485 bleiben willst, würde ich auf IP verzichten.

Danke für deine Einschätzung!

von Markus H. (dasrotemopped)


Lesenswert?

>unkonventionelle Idee für ein IP/Ethernet-over-RS485-System
RS485: halbduplex über 2 Adern ~ 1Mbit
Ethernet: minimal Halbduplex über 2 Adern ~ 10Mbit (Twisted Pair statt 
Coax)

die Endpunkte sind leistungsfähig genug (Protokollaufwand, nicht 
Datendurchsatz) um einen IP-Stack zu verwalten.
Der Datensammler hat genug Leistung um die Datenverbindungen der 
Endpunkte zu verwalten.
Alle Geräte haben direkten Internetzugriff.

Ist die Motivation für RS485 der geringere Hardwarepreis statt eines 
echten Ethernet Controllers wie z.B. Microchip ENC28J60 ?

Was für uC willst du für die Endpunkte verwenden ?
Ist SPI statt UART möglich (Datendurchsatz!)?
Kann die Kosteneinsparung auf der Hardware die erhöhten Softwareaufwände 
aufwiegen ?
Wann muss es fertig werden ?
Oder ist das ein Projekt "weil es einfach geht" ?

> Wenn Du auf RS485 bleiben willst, würde ich auf IP verzichten.
dito

>Egal was Du da auch machst, für Dein Vorhaben gibt es keine Standardlösung.
dito, weil diese Lösung keinerlei Vorteile bietet

Beim Preis für einen Ethernet Controller+uC kann man aber auch einfach 
alle Endpunkte mit einem ESP32 Modul ausstatten. Keine Kabel, nur einen 
WLAN Access Point, IP im ESP32 mitgeliefert.

von Frank K. (fchk)


Lesenswert?

Tom schrieb:

> Stimmt, zu Single Pair Ethernet hatte ich mal einen Vertreter da. Das
> ist ein sehr guter Vorschlag!
>
> Zu dem Zeitpunkt war jedoch die Einschränkung, dass der Multipoint
> betrieb noch nicht möglich ist. Hat sich da etwas geändert? In den
> Datenblättern lese ich an mehreren Stellen, dass Multipoint möglich sein
> soll. Ein Schaubild o.ä. habe ich jedoch nicht gefunden.

SPE ist nicht ein einziger Standard, sondern mehrere (>5).
1000BASE-T1, 100BASE-T1 und 10BASE-T1L sind physikalisch Punkt-zu-Punkt 
Verbindungen, die einen Switch benötigen. 10Base-T1S und zukünftig 
10Base-T1M sind Busse (Multidrop). Die einzelnen Standards sind 
untereinander NICHT kompatibel. Du willst 10Base-T1S (IEEE802.3cg-2019).

https://cdn.vector.com/cms/content/events/2021/vAES21/vAES21_02_Miller_Microchip.pdf
https://de.teledynelecroy.com/doc/10base-t1s-auto-ethernet-tech-brief
https://www.analog.com/en/thought-leadership/why-10base-t1s-is-the-missing-ethernet-link.html

fchk

von Markus W. (naggusm)


Lesenswert?

Du kannst versuchen dir vlt. eine Ethernet zu RS485 bridge zu machen.
Du kannst ja die TX/RX Mac-Frames die vom/zum Eth-Mac kommen ja einfach 
RAW darüber durchsenden. Musst dir dann ein bisschen überlegen ob du 
noch ein bisschen Protokoll / Kolission-Detection selber implementierst.

Je nach Datenverkehr dürfte der Packet-Loss dann aber sehr hoch 
ausfallen. TCP/IP sollte aber gegen packet-loss theoretisch immun sein.

von Frank K. (fchk)


Lesenswert?

Auf RS485 will man eigentlich keine Kollisionen haben. Das heißt 
nämlich, dass auf physikalischer Ebene zwei Push-Pull-Treiber 
gegeneinander arbeiten, und wer dabei gewinnt, ist nicht definiert. Das 
ist außerdem nicht gut für die Ausgangstreiber. Bei CAN ist das anders. 
Da haben die Transceiver keine Push-Pull-Treiber, sondern Open-Drain, 
und Kollisionen sind dort definiert und werden schon auf Hardwareebene 
erkannt und behandelt.

Wenn IP über RS485, dann per Token Passing Mechanismus, um eben 
Kollisionen zu vermeiden.

Ethernet-Header über RS485 zu senden ist grob ineffizient und unnötig. 
Wenn, dann direkt IP via CSLIP mit Headerkompression. Siehe RFC1144. 
Aber eigentlich ist auch das ineffizient - Modbus wäre hier tatsächlich 
passender.

fchk

von Steve van de Grens (roehrmond)


Lesenswert?

Tom schrieb:
> Welche Protokolle eignen sich hier?

Frank K. schrieb:
> Egal was Du da auch machst, für Dein Vorhaben gibt es keine
> Standardlösung.

Ich widerspreche teilweise:

Denn ich hatte mal ein GSM Modem, dass IP über den seriellen Port fuhr. 
Das Verfahren ist standardisiert und wird nach meinem Kenntnisstand 
immer noch von allen gängigen Desktop Betriebssystemen unterstützt:

https://de.wikipedia.org/wiki/Serial_Line_Internet_Protocol

Da steht auch etwas zur Datenrate.

Das war allerdings nicht für einen Bus mit mehr als 2 Teilnehmern 
gedacht. Du bräuchtest zusätzlich noch etwas gegen Kollisionen. Die 
Frage ist, ob der Aufwand dazu gerechtfertigt ist. IP ist ja an sich 
schon relativ schwergewichtig.

: Bearbeitet durch User
von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Steve van de Grens schrieb:

> https://de.wikipedia.org/wiki/Serial_Line_Internet_Protocol
>
> Da steht auch etwas zur Datenrate.
>
> Das war allerdings nicht für einen Bus mit mehr als 2 Teilnehmern
> gedacht.

Ganz genau. Und genau das ist ein Riesenproblem.

P2P ist Pipifax. Jeder, der schon in den frühen 90ern oder noch früher 
im Internet war, hat natürlich entsprechende Protokolle und Geräte 
genutzt.

von Frank K. (fchk)


Lesenswert?

Steve van de Grens schrieb:

> Ich widerspreche teilweise:
>
> Denn ich hatte mal ein GSM Modem, dass IP über den seriellen Port fuhr.
> Das Verfahren ist standardisiert und wird nach meinem Kenntnisstand
> immer noch von allen gängigen Desktop Betriebssystemen unterstützt:
>
> https://de.wikipedia.org/wiki/Serial_Line_Internet_Protocol

Dein GSM-Moden wird mit Sicherheit PPP gesprochen haben und nicht 
(C)SLIP. Als (C)SLIP aktuell war, war noch das C-Netz Stand der Technik. 
Oder AMPS in den USA.

> Das war allerdings nicht für einen Bus mit mehr als 2 Teilnehmern
> gedacht.

(C)SLIP und PPP sind überhaupt gar nicht für Busse gedacht und geeignet, 
nur für Punkt-zu-Punkt Verbindungen.

> Du bräuchtest zusätzlich noch etwas gegen Kollisionen.

... die Du eben bei RS485 nicht willst. Und weder bei SLIP noch bei PPP 
gibt es irgendwo im Standard die Möglichkeit, mehrere Geräte zu 
adressieren. Kann man irgendwie machen, aber nicht mit SLIP und PPP.

Also: 6. Setzen.

fchk

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.