Forum: Mikrocontroller und Digitale Elektronik Max. 200 Meter Bussystem


von thiim (Gast)


Lesenswert?

Guten Abend,

ich möchte zwei Mikrocontroller miteinander kommunizieren lassen.
Keiner der beiden ist ein wirklicher "Master". Rund 150 Meter liegen 
zwischen beiden Teilnehmern, trotzdem kommt Funk nicht in Frage.

Ich dachte mir, ich mache das ganze mit Uart (RS-422) über Ethernetkabel 
(differenzielles Signal und natürlich noch Optokoppler dazu).

Leider habe ich keine Ahnung von Bussystemen. Kann mir jemand ein paar 
Tipps geben? Wird das überhaupt so funktionieren?

Beste Grüße.

von Falk B. (falk)


Lesenswert?

@ thiim (Gast)

>ich möchte zwei Mikrocontroller miteinander kommunizieren lassen.

Wenn es nur 2 sind, ist das kein wirklicher Bus.

>Ich dachte mir, ich mache das ganze mit Uart (RS-422) über Ethernetkabel
>(differenzielles Signal und natürlich noch Optokoppler dazu).

Kann man machen.

>Leider habe ich keine Ahnung von Bussystemen. Kann mir jemand ein paar
>Tipps geben? Wird das überhaupt so funktionieren?

Sicher. Nimm einfach den UART.

von K. H. (hegy)


Lesenswert?

Welche Baudrate soll es mal werden?

Generell würde ich eine symmetrische Verbindung machen. Das kann im 
einfachsten Fall eine 2-adrige Leitung sein, also wie RS-485. Dieser 
Verbindungstyp ist störunempfindlich weil Telefonleitungen, die ja 
durchaus mehrere Kilometer lang sind, genau so aufgebaut sind, ebenso 
der CAN-Bus. Dabei kommt es am Ende der Leitung nur auf den 
Spannungsunterschied zwischen den Leitungen an ob das High oder Low ist. 
Und eine entsprechende galv. Trennung kricht man damit auch hin, wenn 
man die den überhaupt braucht. Generell kann man RS-485 je nach Speed 
diverse Kilometer lang auslegen.

von Purzel H. (hacky)


Lesenswert?

Schau dir die Treiber von TI wie SN65HVD23D (25MBit@160m) & 
SN65HVD24D(3MBit @500mm) an. Ich wuerd RS422 mit 2 Aderpaaren RS422 
implementieren und mir die Umschalterei des RS485 sparen. Einfach je an 
das UART und gut ist.

: Bearbeitet durch User
von H.Joachim S. (crazyhorse)


Lesenswert?

Würde auch 4-Draht-Verbindung nehmen.
Optokoppler? Wenn es in verschiedenen Gebäuden ist ja, sonst brauchst du 
das eher nicht.
Und wenn isolieren, dann gleich sowas:
http://www.analog.com/en/products/interface-isolation/isolation/isolated-rs-485/adm2582e.html#product-overview

Isolation, isolated power und Transceiver, alles drin. Genial die Teile.

von thiim (Gast)


Lesenswert?

> Welche Baudrate soll es mal werden?

Darüber habe ich mir noch wenig Gedanken gemacht, aber wirklich viele 
Daten werden es nicht sein, die ich versenden muss.

> also wie RS-485.

Das dachte ich mir auch. Rs422 ist ja, so wie ich es verstanden habe, 
lediglich eine Erweiterung der RS485. Im letzteren liegt Rx und Tx auf 
dem selben verdrillten Aderpaar, bei RS422 sind es 4 Leitungen statt 2.


Ich schwanke gerade zwischen folgenden ICs:
SN65HVD24D
ADM2582E

Wobei ich sogar eher zum ADM2582E/ADM2587E tendiere. Dort ist ja in der 
Tat alles drinn was ich möchte. Ich müsste es nur noch an den UART 
packen.
Warum wird im Datenblatt eigentlich von RS485 geredet, obwohl Rx und Tx 
vorhanden?

Beste Grüße.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Wenn die Contorller CAN haben, denke auch den CAN Bus. Da brauchts Du 
nicht auf Arbitrierung zu achten und hast zumindestens einige 
Sicherungschichten...

von K. H. (hegy)


Lesenswert?

thiim schrieb:
> Wobei ich sogar eher zum ADM2582E/ADM2587E tendiere. ....
> Warum wird im Datenblatt eigentlich von RS485 geredet, obwohl Rx und Tx
> vorhanden?

In der Zusammenfassung bzw. im Datenbladl steht auch RS-422.

Features and Benefits
- Isolated RS-485/RS-422 transceiver, configurable as half or full 
duplex
....

Applications
- Isolated RS-485/RS-422 interfaces
....

von H.Joachim S. (crazyhorse)


Lesenswert?

Uwe B. schrieb:
> Wenn die Contorller CAN haben, denke auch den CAN Bus. Da brauchts Du
> nicht auf Arbitrierung zu achten und hast zumindestens einige
> Sicherungschichten...

Hm, bin zwar CAN-Fan, aber hier bringt keine Vorteile. Hauptvorteil 
Multimaster entfällt (nur 2 Teilnehmer), Bandbreite ist deutlich 
geringer als bei RS422 (schlapper rezessiver Pegel, ack-timing, 
overhead, halb-duplex)

von Pandur S. (jetztnicht)


Lesenswert?

> .. Bandbreite (von CAN) ist deutlich geringer als bei RS422 ..

Man muss auch RS422 nicht mit der maximalen Geschwindigkeit laufen 
lassen.

Man sollte RS422 auch nicht mit CAN vergleichen. CAN ist schon ein 
Protokol, das hat einiges vorgegeben, das man mag oder nicht. Waehrend 
RS422 nur eine physikalische Spezifikation ist, ohn ein Bit zu 
definieren.

Schlusssendlich bestimmen das Medium und die Treiber die maximal 
moegliche Bit Rate.

: Bearbeitet durch User
von H.Joachim S. (crazyhorse)


Lesenswert?

Oh D. schrieb:
>> .. Bandbreite (von CAN) ist deutlich geringer als bei RS422 ..
>
> Man muss auch RS422 nicht mit der maximalen Geschwindigkeit laufen
> lassen.
Aber man kann :-)

> Man sollte RS422 auch nicht mit CAN vergleichen. CAN ist schon ein
> Protokol, das hat einiges vorgegeben, das man mag oder nicht. Waehrend
> RS422 nur eine physikalische Spezifikation ist, ohn ein Bit zu
> definieren.
> Schlusssendlich bestimmen das Medium und die Treiber die maximal
> moegliche Bit Rate.

Beim CAN eben nicht, das Ack muss in den dafür vorgesehenen Zeitschlitz 
passen und da fängt es an spannend zu werden bei längerer Leitung. 
Stärkere Treiber helfen nicht gegen Signallaufzeiten. 5ns/m machen bei 
100m eben schon 500ns -> 1MBit geht bei CAN und 100m eben nicht. Bei 
RS485/422 spielt das keine Rolle, deshalb deutlich höhere mögliche 
Datenraten und Entfernungen.
Klar nimmt einem der CAN-Controller Arbeit ab bei der Sicherung der 
Übertragung. Aber das ist mit CRC auch leicht möglich, es reicht ja i.a. 
zu erkennen, dass irgendwas beschädigt wurde. Daten neu anfordern, 
fertig.

Der Hauptvorteil ist und bleibt die einfache Vernetzbarkeit, und genau 
das wird hier überhaupt nicht benötigt.

von m.n. (Gast)


Lesenswert?

Es gingen auch RS232-Treiber/Empfänger mit Abschlußwiderständen an den 
RX-Eingängen. Galvanische Trennung mit Optokopplern schadet nie.

von thiim (Gast)


Lesenswert?

Danke für eure Hilfe!

> Es gingen auch RS232-Treiber/Empfänger mit Abschlußwiderständen an den
> RX-Eingängen. Galvanische Trennung mit Optokopplern schadet nie.

Bislang sieht es so aus als würde ich den ADM2582E nehmen.

Da keiner der beiden Teilnehmer wirklich der "Master" ist, bin ich am 
überlegen wie ich die Busbelegung realisiere. Wie mache ich die 
Arbitrierung?

von M. K. (sylaina)


Lesenswert?

thiim schrieb:
> Darüber habe ich mir noch wenig Gedanken gemacht, aber wirklich viele
> Daten werden es nicht sein, die ich versenden muss.

Die Menge der Daten sagt nichts über die erforderliche Datenrate aus ;)

OK, wenn dir 9600 oder 19200 Baud zum Beispiel reichen dann würde ich an 
deiner Stelle ernsthaft über eine läppische UART-Verbindung nachdenken. 
Klar, RS485/422 sind "stabiler" aber UART ist auch sehr "stabil" und 
wenn es nicht sehr schnell sein muss kommt man damit auch sehr weit, 
deine 200m schafft man locker problemlos damit.

von m.n. (Gast)


Lesenswert?

thiim schrieb:
> Wie mache ich die
> Arbitrierung?

Unter TCP/IP wird da wohl nichts gehen :-(

M. K. schrieb:
> Klar, RS485/422 sind "stabiler" aber UART ist auch sehr "stabil"

Und nachts ist es kälter als draußen :-(
Hat der Regen die Rüben aufgeweicht?

von Scork (Gast)


Lesenswert?

thiim schrieb:
> Ich dachte mir, ich mache das ganze mit Uart (RS-422) über Ethernetkabel
> (differenzielles Signal und natürlich noch Optokoppler dazu).

Wenn Du die beiden 120 Ohm-Abschlusswiderstände nicht vergisst, dann 
hast Du mit dieser Konfiguration selbst bei 250 kBaud noch reichlich 
Reserve.

von thiim (Gast)


Lesenswert?

> Unter TCP/IP wird da wohl nichts gehen :-(

Naja, von den 8 Leitungen sind bislang nur 4 belegt (A und B, X und Y).
Andererseits ist UART vollduplexfähig (hat ja ein eigenes Sende- und
Empfangsbuffer), wodurch ich eine Arbitrierung bei zwei Teilnehmern auch 
gar nicht brauche, richtig?

Ich dachte kurzzeitig an ein data ready / data accepted Signal, aber das 
würde auch einen weiteren ADM2582E erfordern.

von Andi B. (Gast)


Lesenswert?

Prinzipiell wäre auch meine erste Wahl in so einem Fall RS485 (RS422 
wenn keiner Master spielen kann/will).

thiim schrieb:
> Bislang sieht es so aus als würde ich den ADM2582E nehmen.

Ist aber wahrscheinlich nicht die beste Wahl für dein Anliegen, weil 
viel zu schnell. Slew rate limited Typen wie MAX3082 oder MAX3072 sind 
da besser. Aber wenn du wirklich die galvanisch Trennung brauchst, dann 
nimm lieber den ADM2587E vom selben Datenblatt. Grund, die schnellen 
Flanken sind es die die Reflexionen verursachen. Und da du ja keine 
Hochgeschwindigkeitsübertragung brauchst....

Selbst schon getestet mit ca. 250m Stern/Stich/Stich auf Stich/... also 
wilde durcheinander Topologie, 112k/250kBaud und nicht mal verdrillten 
Kabeln mit MAX3082/72. Das Ganze noch dazu ohne Abschlusswiderstände (2x 
1/256 in den MAX) und trotzdem ziemlich saubere Signale. Wenn bei dir 
beide gleichzeitig senden, dann sind verdrillte Leitungen natürlich zu 
bevorzugen. LAN, CAT5 Kabel ist perfekt dafür, und billig.

von thiim (Gast)


Lesenswert?

Argv, schweres Thema.

> Grund, die schnellen Flanken sind es die die Reflexionen verursachen.

Ja, daran habe ich tatsächlich nicht gedacht.
Von der MAX308x Reihe kommt zwar der MAX3089 in Frage, aber mit dem 
ADM2587E bekomme ich alles sauber galvanisch getrennt (zudem habe ich 
nur 3.3V auf dem Board).

Nehme ich dem Kabel eigentlich ein Aderpaar für V_isoout / V_isoin und 
GND_2? Lege ich diese also auch mit auf die Leitung? (neben A/B, X/Y)?

von Pandur S. (jetztnicht)


Lesenswert?

ein GND gehoert auch auf das Kabel, derwelche, der zu den Ausgaengen 
passt, dh der potentialgetrennte GND

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.