RS485 (Modbus Protokoll) mit mehreren Slaves

Gast #7934898
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?

#7934918
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

Gast #7935022
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.

#7935045
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.

#7935060
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.

#7935086
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.

#7935211
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).

Gast #7935343
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.

#7935394
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.

#7935414
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
#7935425
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.

#7935466
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.

#7935470
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.

Gast #7935588
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 !?

(Firma: Gast) #7935591
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
#7935603
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
Persönliche Seite #7937013
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 ;-)

Gast #7937934
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)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren