Forum: Mikrocontroller und Digitale Elektronik Optimierung RS485-Bus


von Stephan S. (plonk)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich grüble etwas über Kommunikationsprobleme an einer Kundenanlage...

Im Groben besteht der Informationsteil aus einem Master und 3 Slaves, 
die wie im Anhang "RS485_Problembus.png" dargestellt über eine 
RS485-Schnittstelle miteinander reden. Das scheint mir irgendwie schon 
nicht ganz sauber mit den fliegenden Massen. Der Kunde sagt zwar, die 
Kommunikation funktioniere so "normalerweise", das glaube ich aber nicht 
so recht. Denn die Baudrate ist mit 9600bd lächerlich gering und sobald 
das Fördersystem der Anlage anläuft sind gefühlt mehr fehlerhafte als 
korrekte Übertragungen vorhanden ;-). Sagt zumindest der Master...

Ich weiß, dass das hier wohl in die x-te "mit vs. ohne Masse"-Diskussion 
führt, aber sieht jemand außer diesem Umstand eine andere Ursache im 
Schaltplan? Würde nächste Woche mal in den Installationsschacht steigen 
und die Verdrahtung wie in "RS485_Problembus_Korrektur.png" gezeigt 
ändern, also die isolierten Massen aller Slaves zum Master und dort auf 
die Systemmasse legen. Sollte mich das zum Erfolg führen oder bringt das 
noch mehr Probleme?

Grüße ins Wochenende

von Harald K. (kirnbichler)


Lesenswert?

Stephan S. schrieb:
> Das scheint mir irgendwie schon
> nicht ganz sauber mit den fliegenden Massen.

Da ist 'ne galvanische Trennung, da ist 'ne Vorspannung, das ist so 
schon in Ordnung.

So sauber und ordentlich aufgebaut sieht man sowas selten.

Da sind jumperbare Abschlusswiderstände; sind die auch irgendwo aktiv?

Häng' da mal ein Oszilloskop dran und sieh' Dir die Signale an.

Wenn es zu Problemen kommt, könnte das möglicherweise an falscher 
Ansteuerung der Sender-/Empfänger-Umschaltung der RS485-Treiber liegen, 
lässt sich derjenige, der gesendet hat, zu viel Zeit mit der 
Deaktivierung, stört er die Übertragung dessen, der als nächster senden 
will.

von Uwe (uhi)


Lesenswert?

Eigentlich vom Feinsten.
- Die Richtung der Transceiver wird aktiv umgeschaltet. Check.
- Bias-Netzwerk im Master niederohmig. Check.
- Extra Isolator in jedem Knoten, so dass auch hunderte Volt 
Masseversatz nichts ausmachen. Check.

Etwas kritisch seh ich die 1nF, die für hochfrequente Störungen die 
Isolation unwirksam machen.

Wenn es gestörte Daten gibt, würde ich mit Oszi auf die Leitungen 
schaun. Vielleicht ist der Schaltplan die feine Theorie und in der 
Praxis hat sich ein Fehler eingeschlichen.

Eine grundsätzlich fehlende Masse seh ich nicht.

von Stephan S. (plonk)


Lesenswert?

Hallo Harald, Hallo Uwe,

Danke für die Antworten soweit!
Oszibilder reiche ich nach, die habe im Eifer des Gefechts vergessen.

Was die Abschlusswiderstände angeht: Ja, die Anzahl und Position ist 
richtig, auch alles wie im Lehrbuch. Zweimal je 120 Ohm, an beiden Enden 
des Busses.

Zur Masse muss ich nachfragen, das will mir noch nicht einleuchten. 
Jeder Slave sowie der Master haben ihr eigenes "GND iso." sowie "+5V 
iso.", wie habe ich hier einen Massebezug zwischen den Transceivern? 
Über den 1Meg||1nF kommt doch kaum was an Strom. Irgendwo stehe ich da 
noch richtig auf dem Schlauch...

von Harald K. (kirnbichler)


Lesenswert?

Stephan S. schrieb:
> eder Slave sowie der Master haben ihr eigenes "GND iso." sowie "+5V
> iso.", wie habe ich hier einen Massebezug zwischen den Transceivern?

Das läuft über die Vorspannung, d.h. die Pullups und -Downs an den 
Datenleitungen (in der Schaltung sind das 820-Ω-Widerstände).

von Icke ®. (49636b65)


Lesenswert?

Stephan S. schrieb:
> Zur Masse muss ich nachfragen, das will mir noch nicht einleuchten.
> Jeder Slave sowie der Master haben ihr eigenes "GND iso." sowie "+5V
> iso.", wie habe ich hier einen Massebezug zwischen den Transceivern?

Schreibe 100x an die Tafel: "Der RS485-Bus benötigt keine Masse."

Nochmal erklär ich es nicht, siehe hier..

Beitrag "Re: RS485 Pegelunterschiede"

von Uwe (uhi)


Lesenswert?

> Das läuft über die Vorspannung, d.h. die Pullups und -Downs an den
> Datenleitungen (in der Schaltung sind das 820-Ω-Widerstände).

Richtig. Anders ausgedrückt: Die Bias-Widerstände sorgen dafür, dass die 
Datenleitungen ungefähr mittig zwischen 5Viso und GNDiso liegen. Und da 
sonst kein weiterer Bezugspunkt da ist, folgt der 5Viso immer dem 
Bus+2.5V und der GNDiso dem Bus-2.5V. So haben alle GNDiso, obwohl nicht 
verbunden, das gleiche Potential. Bis auf Abweichungen, die durch 
Toleranzen der Widerstände zustandekommen. Die paar (hundert) Millivolt 
stören aber nicht, weil die Transceiver schon von sich aus mit 
Gleichtaktstörungen von deutlich mehr klarkommen.
Du kannst die GNDiso zusätzlich verbinden, das macht es weder besser 
noch schlechter.

: Bearbeitet durch User
von Rainer W. (rawi)


Lesenswert?

Icke ®. schrieb:
> Schreibe 100x an die Tafel: "Der RS485-Bus benötigt keine Masse."
>
> Nochmal erklär ich es nicht, siehe hier..

Das ändert nichts daran, dass die Potentiale der verbundenen Geräte 
nicht beliebig liegen dürfen, weil sonst die Bias-Widerstände, wegen 
ihrer Bemühung den Bus halbwegs in der Mitte zu halten, schlimmstenfalls 
einfach durchbrennen. Solange alles potentialmäßig frei durch die Gegend 
treiben kann, funktioniert es, aber bei harten Potentialdifferenzen 
helfen die Bias-Widerstände auch nicht immer. Daher muss man sich 
grundsätzlich über die Potentiale zwischen den Geräten im Klaren sein.

Mit einfach "RS485 braucht keine Masse" ist es nicht getan.

: Bearbeitet durch User
von Harald K. (kirnbichler)


Lesenswert?

Rainer W. schrieb:
> Das ändert nichts daran, dass die Potentiale der verbundenen Geräte
> nicht beliebig liegen dürfen

Und was könnte die galvanische Trennung bewirken, hmm?

von Rainer W. (rawi)


Lesenswert?

Harald K. schrieb:
> Und was könnte die galvanische Trennung bewirken, hmm?

Die galvanische Trennung kommt als Anforderung heraus, falls man frei 
von Potentialdifferenzen zwischen Systemen sein möchte - so ist das nun 
einmal.
Entweder man stellt bei jedem Busteilnehmer (evtl. bis auf einen) 
potentialfreie Versorgung und Busisolatoren zur Verfügung, so dass die 
über die Bias-Widerstände auf ausreichend gleiches Potential gezogen 
werden können oder man hat eine mitgeführte Versorgung für den Bus und 
rückt vom reinen 2-Draht System ab.
Die Netzbezeichnung mit "+5V Iso." und "Gnd Iso." bedeutet im Schaltplan 
normalerweise, dass bei den Baugruppen (hier Master und Slave[1..3]) die 
Busversorgungen verbunden sind, was in dem oben gezeigten Schaltplan 
aber wohl nicht so gemeint ist, wie es geschrieben steht, da innerhalb 
jedes Rahmens ein eigener, isolierender DC/DC-Wandler vorhanden ist. 
Kurz: Die Netznamen müssten verschieden sein, z.B. "+5V Iso1", "Gnd 
Iso1", "+5V Iso2", "Gnd Iso2" usw.

Für die im ECAD-Systemen aus dem Schaltplan generierte Netzliste 
interessieren irgendwelche Linien zu Trennung von Baugruppen 
normalerweise nicht.

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

Stephan S. schrieb:
> Das scheint mir irgendwie schon nicht ganz sauber mit den fliegenden
> Massen.

Ja.

> Der Kunde sagt zwar, die Kommunikation funktioniere so
> "normalerweise", das glaube ich aber nicht so recht.

Bei wirklich fliegenden Massen (nur Funkentstörkondensatoren der 
jeweiligen Masse zum PE) entsteht ein annähernd gleiches Potential durch 
die Schutzdioden, bei dir SMBJ5 statt der internen im MAX485, aber das 
ist sehr unsauber und leicht störbar, da ist es sogar besser die 
baudrate zu erhöhen.

Richtig zuverlässig wird es aber erst, wenn man die Empfängermasse auf 
zumindest +/-1.5V zusammenführt, z.B. durch Anschluss an PE (also PELV 
statt SELV).

Daher sind 2-Draht RS485 Leitungen eigentlich Unsinn, Masse sollte man 
mitfuhren.

Bei dir wird eine Spannungsversorgung mitgeführt, aber ich nehme mal an, 
Gerätemasse ist absichtlich nicht an deren Minus angeschlossen.

von Martin S. (strubi)


Lesenswert?

Und taeglich gruesst das Murmeltier...

Wer mit vollem Ernst immer wieder gebetsmuehlenartig wiederholt, dass 
RS485 keine Masse benoetigt, sollte sich mal bezueglich der Funktion 
eines OPV weiterbilden, Stichwort: Rail to rail behaviour.
RS485 ist immer noch nicht DC-frei, wie Ethernet oder HDMI, wo man 
(sic!) ohne absolute Potentiale arbeiten kann.
Auch bei galvanischer Trennung muss der Arbeitsbereich auf dem Bus je 
nach Bauteil stimmen, ausser, es wurde vorher schon DC-frei encodiert, 
dann darf eine 'virtuelle Masse' kapazitiv gekoppelt herumfloaten.
Ende vom Lied: Masse immer verdrahten, und in den Boden stecken reicht 
nicht, im Umkreis einer TGV-Strecke sind auch heutzutage mal noch eben 
um die 100V Potentialunterschied auf einen Meter zu messen.

von Rainer W. (rawi)


Lesenswert?

Michael B. schrieb:
> Richtig zuverlässig wird es aber erst, wenn man die Empfängermasse auf
> zumindest +/-1.5V zusammenführt, z.B. durch Anschluss an PE (also PELV
> statt SELV).

Genau das tun die 820 Ω Widerstände, solange man den isolieren 
Spannungen und Bustreibern erlaubt (ausreichend hochohmig) zu driften. 
Damit der Bus nicht irgendwo hin driftet, muss er irgendwo z.B. nach PE 
gezogen werden, aber nicht unbedingt hart.

: Bearbeitet durch User
von Icke ®. (49636b65)


Lesenswert?

Martin S. schrieb:
> Und taeglich gruesst das Murmeltier...

Allerdings. Wenn Leute einfach nicht verstehen WOLLEN, wie der RS485-Bus 
arbeitet, kann man nichts machen. Einfaches Experiment, verbinde zwei 
batteriebetriebene, gegen Erde isolierte Geräte (häng sie z.B. an einem 
Perlon-Faden in die Luft) ausschließlich mit den Adern A und B. Erkläre 
dann, wieso die Übertragung funktioniert, obwohl Masse vollständig 
fehlt.

von Icke ®. (49636b65)


Lesenswert?

Rainer W. schrieb:
> Michael B. schrieb:
>> Richtig zuverlässig wird es aber erst, wenn man die Empfängermasse auf
>> zumindest +/-1.5V zusammenführt, z.B. durch Anschluss an PE (also PELV
>> statt SELV).
>
> Genau das tun die 820 Ω Widerstände, solange man den isolieren
> Spannungen und Bustreibern erlaubt (ausreichend hochohmig) zu driften.
> Damit der Bus nicht irgendwo hin driftet, muss er irgendwo z.B. nach PE
> gezogen werden, aber nicht unbedingt hart.

Nein, und nochmals Nein. Ein Massebezug ist ausschließlich innerhalb der 
Endgeräte relevant, NICHT auf dem Bus! Die BIAS-Widerstände sorgen für 
einen Stromfluß über den Terminierungswiderstand, damit die Adern A und 
B im Ruhezustand eine definierte, stabile Polarität mit einem 
Mindestpegel von 200mV haben. Siehe u.a. hier:

Beitrag "Re: RS485 Pegelunterschiede"

von Rainer W. (rawi)


Lesenswert?

Icke ®. schrieb:
> Nein, und nochmals Nein. Ein Massebezug ist ausschließlich innerhalb der
> Endgeräte relevant, NICHT auf dem Bus!

Nimm irgendeinen RS485-Treiber. Die Spannung zwischen dessen Gnd und den 
Signalleitungen darf die im Datenblatt genannten Grenzwerte nicht unter- 
bzw. überschreiten. Und genau das wird bei (weitgehend) floatenden 
Geräten sichergestellt, indem über die Bias-Widerstände ein 
Potentialangleich zwischen den Massen der beteiligten Geräte statt 
findet.
Willst du das leugnen?

: Bearbeitet durch User
von Icke ®. (49636b65)


Lesenswert?

Rainer W. schrieb:
> Willst du das leugnen?

Bullshit-Vokabular. Du hast die Funktion der BIAS-Widerstände NICHT 
verstanden.

von Oliver S. (oliverso)


Lesenswert?


von Rainer W. (rawi)


Lesenswert?

Icke ®. schrieb:
> Du hast die Funktion der BIAS-Widerstände NICHT verstanden.

Wenn die Bias-Widerstände in ihrer Zweitfunktion nicht die Potential 
angleichen würden, könnte man sich Isolatoren sparen.

von Michael (k-mte)


Lesenswert?

Icke ®. schrieb:
> Nochmal erklär ich es nicht

Das ist auch gut so, denn das Modell des Receivers mit den LEDs und die 
darauf aufbauende Erklärung sind schlicht falsch.

Die Angabe eines Gleichtakt-Eingangsspannungsbereichs im Datenblatt von 
RS485-Receivern weist deutlich auf die Verwendung eines 
Differenzverstärkers im Eingang eines Receivers hin.

Beim Umschalten fließt der Strom nicht durch einen Eingang in den 
Differenzverstärker des Receivers und durch den anderen Eingang wieder 
hinaus, sondern von den Ausgängen A und B des Transmitters durchs Kabel 
und von dort auf der Massseleitung wieder zurück.

Es gibt theoretisch eine Gleichtakt-Spannung auf dem Bus, bei der sich 
der Strom aus dem A-Ausgang des Transmitters mit dem aus dem B-Ausgang 
des Transmitters in der Summe näherungsweise aufheben - in der Praxis 
hat das aber keine Bedeutung.

von Uwe (uhi)


Lesenswert?

Könntest du diese Aussagen bitte mit einer Skizze veranschaulichen, mit 
eingezeichneten Strompfeilen und beispielhaften Werten?

von Martin S. (strubi)


Lesenswert?

Icke ®. schrieb:
> Allerdings. Wenn Leute einfach nicht verstehen WOLLEN, wie der RS485-Bus
> arbeitet, kann man nichts machen. Einfaches Experiment, verbinde zwei
> batteriebetriebene, gegen Erde isolierte Geräte (häng sie z.B. an einem
> Perlon-Faden in die Luft) ausschließlich mit den Adern A und B. Erkläre
> dann, wieso die Übertragung funktioniert, obwohl Masse vollständig
> fehlt.

Schau, deine empirische Herleitung genuegt schlicht nicht in einer 
industriellen Umgebung, wo Potentialunterschiede vorliegen. Dein 
Gedankenexperiment uebertraegt dann nicht mehr ordentlich, wenn ich 
einen van-der-Graaf-Generator oder ordentliche Funkenspritze 
danebenstelle.
Erklaere, warum.
Alles andere wurde schon oben gesagt.

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.