Forum: Mikrocontroller und Digitale Elektronik RS485 (Modbus Protokoll) mit mehreren Slaves


von David (Gast)


Lesenswert?

Hallo Experten,
ich strebe eine RS485 Kommunikation mit mehreren Slaves (diverse 
Laborgeräte,3-4 an der Zahl)  an - Master ist ein µC, Modbus ist das 
Protokoll. Hat jemand Erfahrung damit, ob Abschlusswiderstände nötig 
sind und wenn ja, wo und wie groß ? Was wäre sonst noch zu beachten 
gegenüber einer 1:1 Verbindung, die bislang problemlos läuft?

Länge der Leitungen (A,B) zwischen den Slaves und dem Master max. 2-3 
Meter, 3 Slaves werden angestrebt. Manche empfehlen 2 Widerstände zu je 
120 Ohm am Ende der A/B Leitung zwischen A und B und am µC Anschluss.

Wer hat Erfahrung und kann hierzu was sagen damit das Ganze möglichst 
unproblematisch von 1:1 auf 1:n erweitert werden kann?

von Rainer W. (rawi)


Lesenswert?

David schrieb:
> Hat jemand Erfahrung damit, ob Abschlusswiderstände nötig sind und wenn
> ja, wo und wie groß ?

Es gibt Datenblätter, Applikationsschriften und diverse Beschreibungen 
zum RS485-Bus. Wie kritisch das alles ist, hängt von der von dir 
verwendeten Übertragungsgeschwindigkeit ab.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

David schrieb:
> ob Abschlusswiderstände nötig
> sind und wenn ja, wo und wie groß ?

RS485 selbst (und seine Komponenten) sind hervorragend dokumentiert!
Selbst Wikipedia liefert die allgemeinen Grundlagen zu deiner 
allgemeinen Frage.

von Frank K. (fchk)


Lesenswert?

Lies das:
https://d1.amobbs.com/bbs_upload782111/files_48/ourdev_700533NAUWXP.pdf
https://www.ti.com/lit/an/slla272d/slla272d.pdf

und den offiziellen Standard:
https://www.mikrocontroller.net/attachment/428561/eia485.pdf

Und denke daran: RS485 ist ein Bus, eine Linie. Am Anfang muss ein 
Abschluss hin, um Reflektionen zu vermeiden, dann kommen die einzelnen 
Geräte ohne Stichleitungen und ohne Abzweigungen, und am Ende muss 
wieder ein Abschluss. Dazu irgendwo Failsafe-Widerstände, und dem Bus in 
Ruhe auf logisch 1 zu halten.

fchk

von David (Gast)


Lesenswert?

Danke alle für die Antworten, RS485 ist noch Neuland für mich, gelesen 
hatte ich einiges darüber und auch eine 1:1 Verbinung/Kommunikation 
lauffähig ohne Probleme bekommen (9600 Baud) - aber die 1:1 
Kommunikation war ohne jegliche Abschlusswiderstände. Insofern die 
Frage, ob man diese überhaupt braucht oder ob diese sogar u.U. eher 
"schädlich" sein können.

von N. M. (mani)


Lesenswert?

David schrieb:
> und auch eine 1:1 Verbinung/Kommunikation lauffähig ohne Probleme
> bekommen (9600 Baud)

Vermutlich kurze Strecken. Dann ist es eine niedrige Datenrate, was auch 
unkritischer ist. Man kann Glück haben. Muss aber nicht. Wenn man es 
stabil haben will nimmt man paarweise Verdrillte Leitungen mit Schirm. 
Linien Topologie. Anfang und Ende mit Abschlusswiderstand. Aber das hat 
Frank ja auch schon alles erklärt.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

David schrieb:
> Insofern die
> Frage, ob man diese überhaupt braucht oder ob diese sogar u.U. eher
> "schädlich" sein können.

Du willst es gar nicht wissen!

von Rainer W. (rawi)


Lesenswert?

David schrieb:
> RS485 ist noch Neuland für mich
> ...
> Insofern die Frage, ob man diese überhaupt braucht oder ob diese sogar
> u.U. eher "schädlich" sein können.

Mit RS485 speziell hat das wenig zu tun.

Das sind Grundlagen der HF-Technik für die Ausbreitung von Signalen auf 
Leitungen. Impedanzstoßstellen erzeugen Signalreflektionen und die 
Reflektionen überlagern sich deinem Nutzsignal als Störung. Wie die sich 
auswirken hängt von der Signallaufzeit und damit vom Abstand ab.

von Harald K. (kirnbichler)


Lesenswert?

Rainer W. schrieb:
> Das sind Grundlagen der HF-Technik für die Ausbreitung von Signalen auf
> Leitungen.

Wenn man den Bus a) nicht allzulang macht (also eher nur ein paar Meter 
als ein paar hundert Meter) und b) sich bei der Baudrate zurückhält, 
dann kann man die HF-Technik eine ganze Zeit lang ignorieren.

Modbus kann man auch mit 9600 Baud betreiben. Das ist dann sehr 
gutmütig, was Abweichungen vom Ideal angeht.

von Rainer W. (rawi)


Lesenswert?

Harald K. schrieb:
> Wenn ..., dann kann man die HF-Technik eine ganze Zeit lang ignorieren.

Ach nee (1. Antwort).

Rainer W. schrieb:
> ... Wie kritisch ...

Schädlich ist ein ordentlicher Aufbau aus technischer Sicht allerdings 
nie.

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

David schrieb:
> Manche empfehlen 2 Widerstände zu je 120 Ohm am Ende der A/B Leitung
> zwischen A und B und am µC Anschluss.
> Wer hat Erfahrung und kann hierzu was sagen damit das Ganze möglichst
> unproblematisch von 1:1 auf 1:n erweitert werden kann?

Du nutzt EINE lange Leitung mit Terminierung an beiden Enden und hängst 
die Controller daran auf wie Bushaltestellen auf der Strecke, ohne 
weitere Widerstände.

Baue KEINEN Stern.

Achte auf ähnliches GND Potential, sonst funktioniert es nicht. Du musst 
also GND sämtlicher Busteilnehmer über eine dritte Ader verbinden können 
ohne dass es funkt (und wenn das geht, kann die dritte Ader wieder weg).

von Harald K. (kirnbichler)


Lesenswert?

Rainer W. schrieb:
> Schädlich ist ein ordentlicher Aufbau aus technischer Sicht allerdings
> nie.

Nein. Aber man muss sich auch nicht unnötig verkrampfen oder eine 
Wissenschaft draus machen. Man kann natürlich auch damit anfangen, dann 
aber sollte man sich auch mit Augendiagrammen beschäftigen.

von David (Gast)


Lesenswert?

Michael B. schrieb:
> Achte auf ähnliches GND Potential, sonst funktioniert es nicht. Du musst
> also GND sämtlicher Busteilnehmer über eine dritte Ader verbinden können
> ohne dass es funkt (und wenn das geht, kann die dritte Ader wieder weg).

Welchen GND meinst du - den vom Gehäuse der Slaves? Von den jeweiligen 
RS485 Slave Schnittstellen gibt es selber nur die A/B-Anschlüsse, keine 
expliziten Massenanschluss der RS485 Schnittstelle.

von Nemopuk (nemopuk)


Lesenswert?

David schrieb:
> Welchen GND meinst du - den vom Gehäuse der Slaves?

Er meint den elektrischen GND aller Busteilnehmer, auf den sich die 
Signale A und B beziehen.

von Michael B. (laberkopp)


Lesenswert?

David schrieb:
> Welchen GND meinst du - den vom Gehäuse der Slaves?

Den GND Anschluss der Treiber-ICs.

Ja, RS485 hat meist nur 2 Adern. Das funktioniert dank der Widerstände 
auch wenn alle Busteilnehmer galvanisch unabhängig sind oder auf 
gleichem Potential liegen.

Doch manchmal ist das nicht der Fall und der Anwender wundert 
sich,,warum es nicht funktioniert.

Zum Test eine Masseleitung zu verlegen zeigt, ob es ohne gehen würde 
oder nicht. Es knallt dann nämlich, wenn es nicht gehen würde.

von Rainer W. (rawi)


Lesenswert?

Michael B. schrieb:
> Es knallt dann nämlich, wenn es nicht gehen würde.

Nun hör doch auf, solchen Unsinn zu verbreiten. Nicht jede 
Potentialdifferenz zwischen den Massepotentialen der Geräte ist so 
niederohmig, dass es knallt.

Auch kann es sein, dass der RS485-Treiber im Gerät galvanisch isoliert 
ist, so dass das Massepotential des Gerätes überhaupt nichts mit dem Gnd 
der RS485-Treibers zu tun hat und man schnell den falschen Gnd erwischt.

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

Rainer W. schrieb:
> Auch kann es sein, dass der RS485-Treiber im Gerät galvanisch isoliert
> ist, so dass das Massepotential des Gerätes überhaupt nichts mit dem Gnd
> der RS485-Treibers zu tun hat

Was meinst du  warum ich GND des Treibers und nicht GND des Geräts 
schreibe.

Aber meine Beschreibung hat dich sicher überhaupt erst auf die Idee 
gebracht, dass da ein Unterschied sein könnte und nun verkaufst du es 
als deine eigene. Ärmlich.

Rainer W. schrieb:
> Nicht jede Potentialdifferenz zwischen den Massepotentialen der Geräte
> ist so niederohmig, dass es knallt.

Schlecht wäre, wenn sie nicht niederohmig aber auch nicht so hochohmig 
wäre dass die (4k7) Widerstände sie glattziehen könnten, denn dann 
funktioniert es trotz des Tests mit der Leitung nicht. Glücklicherweise 
sind solche mittelohmigen Masseverbindungen, also weder PELV noch SELF, 
nur in deiner Phantasie abzutreffen.

von Harald K. (kirnbichler)


Lesenswert?

Wenn galvanisch getrennte Treiber verwendet werden und mit Pullup- und 
-Down-Widerständen eine Vorspannung erzeugt wird, dann ist ein reiner 
Zweidrahtbetrieb bei RS485 durchaus möglich.

Es gibt hinreichend viele professionelle Geräte, die genauso konstruiert 
sind.

von Rainer W. (rawi)


Lesenswert?

Michael B. schrieb:
> Schlecht wäre, .., denn dann
> funktioniert es trotz des Tests mit der Leitung nicht.

Jetzt hast du es anscheinen verstanden.
Die Welt IST manchmal schlecht und dein Knalltest versagt dann.

von Falk B. (falk)


Lesenswert?

Harald K. schrieb:
> Es gibt hinreichend viele professionelle Geräte, die genauso konstruiert
> sind.

So wie die Boeing 737 MAX?

von Rainer W. (rawi)


Lesenswert?

Falk B. schrieb:
> So wie die Boeing 737 MAX?

Bei der ging es nicht um galvanisch isolierte Treiber, sondern um nicht 
zu Ende gedachte Algorithmen in der Software.

Bei einer sauberen Trennung der Versorgung der Treiber reichen die A/B 
Signale zusammen mit dem Widerstandsnetzwerk, damit die Signale den 
Common-Mode Bereich nicht verlassen.

von Falk B. (falk)


Lesenswert?

Rainer W. schrieb:
> Bei einer sauberen Trennung der Versorgung der Treiber reichen die A/B
> Signale zusammen mit dem Widerstandsnetzwerk, damit die Signale den
> Common-Mode Bereich nicht verlassen.

Das stimmt teilweise, ist aber dennoch nicht optimal. Denn damit wird 
der Gleichtaktbereich der EMPFÄNGER nur durch deren interne 
Eingangswiderstände definiert. Das funktioniert erstaunlich oft und gut, 
ist aber trotzdem nicht die 1. Wahl. Eine Masse kann man nur dann 
wirklich weglassen, wenn man eine galvanisch getrennte Übertragung mit 
Trafos macht, so wie Ethernet.

von Nemopuk (nemopuk)


Lesenswert?

Manchmal habe ich so ein Gefühl, wie damals als Teenager. Wenn ich 
langeweile hatte ging ich manchmal zur Unterhaltung in ein Seniorenheim.

Da haben bestimmte Personen immer wieder leidenschaftlich das selbe 
Thema durch gekaut. Man kam sich vor, wie in einer Endlosschleife.

Heute kommt das Seniorenheim über Internet zu mir.

von Michael B. (laberkopp)


Lesenswert?

Rainer W. schrieb:
> Jetzt hast du es anscheinen verstanden

Ich hab schon lange verstanden, dass du mit irgendwelchen an den Haaren 
herbeigezogenen theoretischen Ausnahmesituation versuchst als kleiner 
Wadenbeisser dein Unwesen zu treiben.

von David (Gast)


Lesenswert?

Nochmal meine Frage/Problem: Die angeschlossenen Slaves haben nicht alle 
einen GND Anschluss an der RS485 Schnittstelle sondern führen lediglich 
die A/B Anschlüsse heraus. Der am µC (Modbus Master) angedachte TTL zu 
RS485 Konverter hat neben A/B auch einen GND. Also, was mache ich mit 
den Slaves, die mir keinen expliziten GND Anschluss an deren RS485 Port 
liefern ?

Was ist mit "GND Anschluss der Treiber-ICs" gemeint, extern ist nur 
dieser erwähnte "TTL zu RS485" Konverter im Einsatz, Treiber ICs sind 
zumindest nicht bewusst im Spiel !?

von Falk B. (falk)


Lesenswert?

David schrieb:
> Also, was mache ich mit
> den Slaves, die mir keinen expliziten GND Anschluss an deren RS485 Port
> liefern ?

Eben ohne GND anschließen. Nicht super, geht aber meistens.

> Was ist mit "GND Anschluss der Treiber-ICs" gemeint,

Eben das. GND vom IC / Chip im Konverter.

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

David schrieb:
> Nochmal meine Frage/Problem: Die angeschlossenen Slaves haben
> nicht alle
> einen GND Anschluss an der RS485 Schnittstelle sondern führen lediglich
> die A/B Anschlüsse heraus. Der am µC (Modbus Master) angedachte TTL zu
> RS485 Konverter hat neben A/B auch einen GND. Also, was mache ich mit
> den Slaves, die mir keinen expliziten GND Anschluss an deren RS485 Port
> liefern ?

Hier muss man unterscheiden zwischen Bastlerkram und professionellen 
Anwendungen z.B. in der Industrie.

In der Industrie gibt es für jede Schnittstelle eines Gerätes eine 
Beschreibung, wie sie zu verwenden ist.
Z.B. ob sie Potentialgetrennt ist

Das ist der Startpunkt: Doku lesen!

Dann gibt es Hersteller wie https://www.phoenixcontact.com/de-de/ oder 
https://www.wut.de/ Welche alle Möglichkeiten bieten um solche Dinge 
professionell/stabil zu lösen.
Wandler Isolatoren und vieles weitere

: Bearbeitet durch User
von Nemopuk (nemopuk)


Lesenswert?

David schrieb:
> Also, was mache ich mit
> den Slaves, die mir keinen expliziten GND Anschluss an deren RS485 Port
> liefern ?

Wenn sie isolierte Schnittstellen haben: gar nichts, nur A und B 
anschließen.

Wenn sie keine isolierten Schnittstellen haben: Die Geräte erden, und 
darauf hoffen (besser: messen), dass das Erdpotential an allen Geräten 
ungefähr gleich ist.

David schrieb:
> Was ist mit "GND Anschluss der Treiber-ICs" gemeint

Genau das. Sorry, aber wenn du unsere Sprache nicht sprichst, musst du 
sie lernen. Es gibt keine einfachere Umschreibung dafür.

> extern ist nur dieser erwähnte "TTL zu RS485" Konverter im Einsatz,
> Treiber ICs sind zumindest nicht bewusst im Spiel !?

In den Konvertern befinden sich Treiber ICs

Irgendwo muss der Konverter ein GND Anschluss haben. Ich habe welche in 
Form von USB Sticks ohne herausgeführten GND Anschluss. Für den Fall der 
Fälle habe ich USB Isolatoren zum dazwischen-stecken. Zum Basteln mit 
kurzen Leitungen reicht das, aber für eine reale Anwendung taugen meine 
RS485 Sticks halt nicht.

: Bearbeitet durch User
von J. S. (engineer) Benutzerseite


Lesenswert?

David schrieb:
> Danke alle für die Antworten, RS485 ist noch Neuland für mich, gelesen
> hatte ich einiges darüber und auch eine 1:1 Verbinung/Kommunikation
> lauffähig ohne Probleme bekommen (9600 Baud)

Das kleine Bruder der 485 ist die 422. Dieser wird für das im 
Audio-Bereich genutzte AES-EBU Protokoll benutzt. Da laufen bei mir 
384kHz Audiodaten über gemessene 50m durch ein 75 Ohm Coax-Kabel in 1:1. 
Das entspricht einer Datenrate von 24,5 MHz bei einer etwa-Bandbreite 
von 200MHz.

Ich würde sagen, daß das für 9600 Baud knapp reichen könnte ;-)

von David (Gast)


Lesenswert?

Update: Da die Meinungen für die genannten Bedingungen auseinander 
gingen, hatte ich es die letzten Tage einfach mal in der Praxis 
umgesetzt:
- Baudrate 9600
- Leitungslänge ca. 3 Meter (habe 2 adrigen Klingeldraht benutzt)
- 3 Slaves, 1 Master (PIC als µC)
- 1 RS485 TTL Konverter

Terminierung oder sonstige Widerstände zwischen Bus und Bauteilen waren 
unter diesen Bedingungen nicht nötig, auch keinen GND Anschluss - läuft 
jetzt seit über einen Tag stabil. Nur der Konverter/Adapter hatte ein 
paar Fallstricke, die aber mit dem Bus selber nichts zu tun hatten. 
(Allerdings hat laut Datenblatt der Konverter einen integrierten 120Ohm 
Abschlusswiderstand. Ob dieser entscheidend ist, kann ich nicht sagen, 
zusätzlich waren zumindest keine Abschlusswiderstände nötig)

von Arduino F. (Firma: Gast) (arduinof)


Lesenswert?

Alles klar!
Keine Fragen mehr, alles klar.

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.