Ich bin leider keine Elektrofachkraft - vielleicht wäre dann diese Frage nicht notwendig
Ich habe viel gegooglet und auch hier im Forum gelesen
und Youtube-Videos zu RS485 geschaut
Trotzdem habe ich leider keine Antwort auf eine grundlegende RS485 Verständnisfrage gefunden: Wann kommt woher Spannung auf den Bus?
Erstmal die eine Frage: Von Woher kommt Spannung auf den Bus? Gibt es nur eine einzelne Spannungsquelle auf dem Bus (dann wahrscheinlich der Master) oder mehrere (dann alle Busteilnehmer)?
Und dann noch die wichtigere Frage: Wann "kommt" Spannung auf den Bus? Ist dauerhaft Spannung auf dem Bus, oder nur, wenn Kommunikation stattfindet?
Ich hoffe, die Fragen sind verständlich. Schonmal danke für eure Antworten!
nur eine einzelne Spannungsquelle auf dem Bus (dann wahrscheinlich der
Master) oder mehrere (dann alle Busteilnehmer)?
Jeder Teilnehmer muss die Spannung auf dem Bus zum Kommunizieren verändern können. Alle Slaves hören zu, der Master spricht einen Slave an, geht auf zuhören und der angesprochene Slave antwortet durch Änderung der Spannungsdifferenz zwischen A und B.
Ich bin leider keine Elektrofachkraft - vielleicht wäre dann diese
Frage nicht notwendig
Normalerweise kann eine Elektrofachkraft gerade so, an einem guten Tag, einen Lichtschalter anschließen. Natürlich werden alle Kabel zu kurz abgeschnitten und alles mit dem Hammerstil in die Dose gehämmert. Aber die Lampe leuchtet ab und zu.
Von diesem Thema hier verstehen die sicher nichts.
Jeder Teilnehmer muss die Spannung auf dem Bus zum Kommunizieren
verändern können. Alle Slaves hören zu, der Master spricht einen Slave
an, geht auf zuhören und der angesprochene Slave antwortet durch
Änderung der Spannungsdifferenz zwischen A und B.
Das Grundlegende Schema, wie Master und Slaves über den Bus kommuniziert wird, ist mir soweit bekannt. Aus deiner Antwort entnehme ich, dass die Busteilnehmer selbst keine Spannung auf den Bus geben, sondern die Spannung von einer externen Quelle kommt und die Busteilnehmer diese Spannung lediglich ändern?
Hintergrund der Frage ist, dass ich ein Endgerät habe, das partout nicht Modbus mit mir sprechen will - ich habs mit mehreren Mastern versucht. Zwischen A und B liegen an diesem Endgerät 3,3V an. Das hat mich stutzig gemacht, deswegen will ich nun die physische Ebene der Kommunikation besser verstehen.
Gegen Masse ist dauerhaft eine Spannung auf dem Bus durch
Bias-Widerstände in jedem Slave.
Mal wieder eine "Nicht-Elektriker" Frage dazu: Du sprichst von einer Spannung gegen die Masse. Ist denn auf dem eigentlichen Bus (A und B) dauerhaft eine Spannung, oder nur wenn kommuniziert wird?
Ist dauerhaft Spannung auf dem Bus, oder nur, wenn Kommunikation
stattfindet?
Ein vernünftiger RS485-Bus hat Bias-Widerstände, die dafür sorgen, dass ein sauberer Ruhepegel (i.d.R. High) da ist, wenn niemand sendet.
Der Bus ist nicht dafür gedacht, die Teilnehmer zu versorgen, das musst Du anderweitig lösen, z.B. mit einem 4adrigen Kabel für RS485-A/B, GND und Versorgungsspannung.
Gegen Masse ist dauerhaft eine Spannung auf dem Bus durch
Bias-Widerstände in jedem Slave.
Die Bias-Widerstände sollten tunlichst nur bei einem Busteilnehmer (idealerweise dem Master) vorhanden sein, weil man sonst mit jedem weiteren Teilnehmer immer mehr die Ausgangstreiber quält, bis gar nichts mehr geht.
Ein brauchbarer Wert für einen 5V-Bus mit beidseitiger 120-Ohm-Terminierung ist 680 Ohm.
danke für die Antworten! Ich fasse zur Kontrolle nochmal mein bisheriges Verständnis zusammen:
Es gibt nicht eine einzelne Spannungsquelle für den Bus, sondern jeder Busteilnehmer "gibt" die Spannung auf den Bus
Das tun die Teilnehmer nur, wenn sie senden
Das würde für mich auch bedeuten, dass, wenn der Bus offen ist bzw. ein Teilnehmer noch gar nicht verdrahtet ist, keine Spannung an diesem Teilnehmer zwischen A und B messbar sein sollte? (Siehe meine Beobachtung mit den dauerhaften 3,3V an dem Endgerät, bei dem ich Kommunikationsprobleme habe).
Ja, der Ruhepegel, nicht mal unbedingt ein Stopbit sondern oft
'illegal'. Man braucht ihn auf jeden Fall wenn keine dritte Leitung
Masse verbindet.
Ich habe bisher immer nur mit 2-Draht gearbeitet. Hier wirds für mich nochmal spannend - zum Ruhepegel finde ich beim recherchieren wenig brauchbares. Dieser Ruhepegel ist keine Spannung zwischen A und B (würde ja den Feststellungen oben widersprechen)?
So wie ich das aus einem ABB Handbuch verstehe, geht es da wieder um die Bias-Widerstände. Ich bastle keinen Controller zusammen sondern verwende einen "fertigen" Modbus-Master, wo diese Funktionalität ja bereits verbaut sein sollte.
Nochmals danke für euren Input, eure Antworten haben mir schon viel geholfen! Es wundert mich immer noch, dass ich bei meiner bisherigen Recherche keine Antwort auf die scheinbar einfache Frage "wann kommt von wo Spannung auf den Bus" gefunden habe...
Nochmals danke für euren Input, eure Antworten haben mir schon viel
geholfen! Es wundert mich immer noch, dass ich bei meiner bisherigen
Recherche keine Antwort auf die scheinbar einfache Frage "wann kommt von
wo Spannung auf den Bus" gefunden habe...
warscheinlich weil die KI noch nicht gelernt hat das umzusetzen in "welche Signalpegel liegen bei RS485 auf dem Bus".
Es wundert mich immer noch, dass ich bei meiner bisherigen Recherche
keine Antwort auf die scheinbar einfache Frage "wann kommt von wo
Spannung auf den Bus" gefunden habe
Weil der ganze Rest der Welt weiss, dass ein Punkt immer eine Spannung (die wird nämlich gegenüber einem anderen Punkt gemessen) hat, auch eine Wolke gegenüber der Erde.
Die Frage ist eher, wie belastbar die Spannung ist. So eine elektrostatische Spannung auf einer Plastikoberfläche halt eher wenig. Ein Starkstromkabel eher mehr. Und wenn ein Starkstromkabel an beiden Enden nicht angeschlossen ist liegt jeder Leiter trotzdem auf einer Spannung z.B. gegenüber Erde aber es wird kein Strom fliessen wenn man ihn verbindet, z.B. erdet sondern die Spannungsdifferenz zwischen beiden wird schnellstens zusammenbrechen.
Es gibt kein Kabel 'ohne Spannung', es gibt nur eine Spannungsdifferenz von 0 zwischen 2 Leitern, und da Bias-Widerstände bei RS485 oft gehen Masse der angeschlossenen Geräte gehen, ist die Differenz wenn keiner sendet oft 0 und liegt damit im illegalen Bereich.
Erst wenn einer sendet wird von ihm eine positive bzw. negative Differenzspannung aufgelegt.
Es wundert mich immer noch, dass ich bei meiner bisherigen
Recherche keine Antwort auf die scheinbar einfache Frage "wann kommt von
wo Spannung auf den Bus" gefunden habe...
Na ja, du hast u. a. bei Youtube recherchiert, wie du sagst. IMHO ist das eine Informationsquelle der Art, wie sie Hauisfrauen nutzen, wenn sie Tipps für Hefeteig suchen. SCNR.
In Wikipedia siehst du Bilder der Transmitter und eine Tabelle mit den Buszuständen. Außerdem wird gesagt, dass die Amplitude der Transmitter knapp unter der Betriebsspannung liegt. Alle diese Informationen zusammengenommen erlauben nur einen Schluss:
Solange Spannung da ist, kommt sie (wenn alles in Ordnung ist) in jedem Moment immer von einem einzigen Transmitter. Solange dieser eine Transmitter seinen Ausgang nicht freiwillig hochohmig schaltet und dies allen anderen vorher mitteilt, darf kein anderer Spannung auf den Bus geben.
Gut, der WP-Autor hätte das explizit sagen können. Aber eigentlich ist es ja nach seiner Beschreibung klar.
Ja, der Ruhepegel, nicht mal unbedingt ein Stopbit sondern oft
'illegal'.
Was für ein Schwachsinn. Ein Stopbit bezeichnet ein Zeitfenster nach der Übertragung der Daten.
Hier geht es um den Ruhepegel, der logisch dem Pegel während des Stopbits entspricht.
Der Ruhepegel muss innerhalb der Spezifikation liegen. Was ist daran illegal?
Das würde für mich auch bedeuten, dass, wenn der Bus offen ist bzw. ein
Teilnehmer noch gar nicht verdrahtet ist, keine Spannung an diesem
Teilnehmer zwischen A und B messbar sein sollte?
Kommt darauf an. Wenn Bias-Widerstände vorhanden sind, sorgen die wie gesagt für den Ruhepegel.
Dieser Ruhepegel ist keine Spannung zwischen A und B (würde ja den
Feststellungen oben widersprechen)?
Dir fehlen wirklich massiv Grundlagen.
Die Bias-Widerstände ziehen A auf High-Pegel (meistens 5V) und B auf Low-Pegel (GND), was natürlich zu einer entsprechenden Differenz zwischen A und B führt.
Diese Differenz fällt aber bei einem sauber terminierten Bus geringer aus, weil Bias- und Terminierungswiderstände einen Spannungsteiler bilden. Der Standard schreibt mindestens 200mV vor.
Ich bastle keinen Controller zusammen sondern verwende einen "fertigen"
Modbus-Master, wo diese Funktionalität ja bereits verbaut sein sollte.
Mit einem Oszilloskop und einem Logic Analyzer sollte man das Problem eingrenzen können, aber ich glaube, dafür brauchst Du jemanden vor Ort, der sich damit auskennt.
Ja, der Ruhepegel, nicht mal unbedingt ein Stopbit sondern oft
'illegal'.
Was für ein Schwachsinn. Ein Stopbit bezeichnet ein Zeitfenster nach der
Übertragung der Daten.
Hier geht es um den Ruhepegel, der logisch dem Pegel während des
Stopbits entspricht.
Der Ruhepegel muss innerhalb der Spezifikation liegen. Was ist daran
illegal?
Gehirn zu Hause vergessen ? Einfach mal rumstänkern wollen ohne Sachverstand ?
Illegal ist ein Pegel, wenn er weder der logischen 1 noch der logischen 0 zugeordnet ist.
Und RS485 definiert eine Differenz >0.2V als 1 und eine <-0.2V als 0.
Liegt die Spannung beider Leitung weniger auseinander, z.B. 0V, ist das ein illegaler Zustand.
Klug wäre, die Leitung durch die Bias Widerstände nicht auf den Wert des Startbits, sondern den Wert des Stopbits zu legen, damit eine neginnende Kommunikation unmittelbar synchronisiert. Bei zumindest 55 Ohm sind dafür aber 3.7mA oder 645 Ohm an 5V und GND nötig. Die üblichen bias-Widerstände sind viel grösser, 4k7 oder 10k, so dass nicht mal die Parallelschaltung aller dafür reicht.
Sie dienen nur der Übermittlung eines Potentialbezugs bei nicht-vorhandener GND Verbindung und gehen meist bei A und B an GND.
Und RS485 definiert eine Differenz >0.2V als 1 und eine <-0.2V als 0.
Liegt die Spannung beider Leitung weniger auseinander, z.B. 0V, ist das
ein illegaler Zustand.
Eben - das Bias-Netzwerk wurde genau erfunden, um einen definierten Zustand sicherzustellen, auch wenn gerade niemand auf den Bus sendet.
Die üblichen bias-Widerstände sind viel grösser, 4k7 oder 10k
Das mag vielleicht auf irgendwelchen Chinamodulen üblich sein, die bei Leuten mit ein paar cm Buslänge und daher ohne Terminierung auf dem Schreibtisch betrieben werden.
Wenn man einen ernsthaften Bus betreiben will, muss man es schon richtig machen:
Klug wäre, die Leitung durch die Bias Widerstände nicht auf den Wert des
Startbits, sondern den Wert des Stopbits zu legen, damit eine neginnende
Kommunikation unmittelbar synchronisiert.
Sehr kluge Idee. So macht man das gewöhnlich. Nur Leute die nicht verstanden haben, dass es bei RS485 mit den Signalzuordnungen "A" und "B" munter durcheinander geht, kommen auf die Idee, den Bus auf Startbit-Pegel vorzuspannen.
Auch dort ist der obere Biaswiderstand viel zu groß, um genügend Strom durch den Abschlusswiderstand fließen zu lassen. Ein der Spezifikation entsprechender Pegel wird nicht erreicht.
Auch dort ist der obere Biaswiderstand viel zu groß, um genügend Strom
durch den Abschlusswiderstand fließen zu lassen. Ein der Spezifikation
entsprechender Pegel wird nicht erreicht.
Doch, das passt. Du hast bloss übersehen, dass das Ding mit 24V versorgt wird.
In Wikipedia siehst du Bilder der Transmitter und eine Tabelle mit den
Buszuständen.
Wikipedia war meine erste Recherchequelle. Wenn man sich mit dem Thema bereits auskennt, kann man aus diesen Informationen sicherlich meine Frage beantworten.
Ja, das habe ich gemeint mit "ich bin keine Elektrofachkraft". Ich war zwar damals Jahrgangsbester im Physik-LK, aber das bringt für solche praktischen Fragestellungen wenig - bzw. ist einiges Wissen wohl auch einfach nicht mehr da :)
Die Bias-Widerstände ziehen A auf High-Pegel (meistens 5V) und B auf
Low-Pegel (GND), was natürlich zu einer entsprechenden Differenz
zwischen A und B führt.
Daraus schließe ich, dass ich durch einfaches Messen der Spannung zwischen A- und B Ausgang eines Endgeräts im offenen oder Ruhezustand nicht schließen kann, ob es korrekt funktioniert - dazu müsste ich dann genauer wissen, wie das Gerät intern aufgebaut ist.
An den Endgeräten, die ich auf dem Schreibtisch zur Verfügung habe, habe ich nachgemessen. Hier war sowohl im offenen als auch im Ruhezustand jeweils 0V zwischen A und B.
Mit einem Oszilloskop und einem Logic Analyzer sollte man das Problem
eingrenzen können, aber ich glaube, dafür brauchst Du jemanden vor Ort,
der sich damit auskennt.
Zu dieser Einschätzung komme ich nun auch. Die 3,3V, die im offenen Zustand an dem Endgerät, mit dem ich nicht kommunizieren konnte, waren mein erster Strohhalm zur weiteren Fehlersuche...
Bei RS485 definiert sich ein logisches Bit aber über den unterschied von einer Spannungsdifferenz der differentiellen Leitungen. Da ist der Ruhepegel erstmal vollkommen egal.
Daraus schließe ich, dass ich durch einfaches Messen der Spannung
zwischen A- und B Ausgang eines Endgeräts im offenen oder Ruhezustand
nicht schließen kann, ob es korrekt funktioniert - dazu müsste ich dann
genauer wissen, wie das Gerät intern aufgebaut ist.
Die RS-485-Spezifikation erlaubt für einen Empfänger (also einen Transceiver mit inaktivem Sender) einen Widerstand von höchstens ca. 12 kΩ; für den genauen Zusammenhang zwischen Spannung und Strom siehe die Grafik. Das ist ein "Unit Load"; moderne Chips haben oft 1/8 UL. Du kannst also zwischen den Pins alles mögliche messen.
Ob ein Treiber korrekt funktioniert, kannst du nur messen, wenn er aktiv ist.
Zwischen A und B liegen an diesem Endgerät 3,3V an.
Das könnte ein Kurzschluss zur Stromversorgung sein (schlecht), oder einfach nur ein schwacher Pull-Up-Widerstand (OK).
Wie weit kann dein Treiber diese Spannung ändern? (Das kannst du nur mit einem Oszilloskop herausfinden.)
Interessant wäre noch, um welche Geräte es überhaupt geht.
Als Master verwende ich verschiedene USB-RS485 Bridges, mit denen ich bisher immer erfolgreich Modbus "gesprochen" habe. Das Endgerät ist ein Ultraschall-Wasserzähler: https://www.thomsen-messtechnik.com/at600.htm
Ich bin mit dem Hersteller im Kontakt, um die Kommunikation herzustellen. Die dauerhaften 3,3V waren eine erste Beobachtung, mit denen ich die Fehlersuche gestartet habe. Diese haben mich zu der Frage dieses Threads geführt :)
Du
kannst also zwischen den Pins alles mögliche messen.
Ob ein Treiber korrekt funktioniert, kannst du nur messen, wenn er aktiv
ist.
Danke für dieses Fazit. Und dieses Messen kann nur mit einem Oszilloskop erfolgen, für dessen korrekte Bedienung man wiederum viel Erfahrung braucht.
Schonmal danke für eure schnelle Hilfe, schön, ein so aktives Forum zu haben.