RS485 Mehrere Signalverstärker im Bus gegen Störungen

Gast #7234595
Lesenswert?

Hallo zusammen,

In einer DIY-Anwendung sollen ca. 10 Atmegas über eine serielle 
Verbindung via RS485 Daten zu einem RPi senden. Dafür ist auf den 
Atmega-Boards jeweils ein MAX485 vorgesehen. Das funktioniert auch alles 
soweit so gut.

ABER: Der Bus verläuft über die jeweiligen Boards. Die Verbindung 
dazwischen verläuft über (ungeschirmte) JST-XH Kabel. Und genau da liegt 
der Haken. Die Dinger bringen anscheinend so hohe Übergangswiderstände 
mit, dass ab einer bestimmten Anzahl Slaves am Bus die Verbindung nicht 
mehr funktioniert. Dabei scheint es hauptsächlich auf die Anzahl der 
insgesamt verwendeten Steckverbindungen anzukommen. Wenn ich noch 
mehrere Verlängerungsstücke (zusätzliche Stecker) hinzufüge, wird die 
Übertragung logischerweise noch schlimmer. Die Kabellänge zwischen den 
Steckern macht in meiner Anwendung (1-20m) keinen Unterschied. 
Terminierungswiderstände, Pullup, Pulldown der Signalleitungen sind 
bereits vorgesehen.

Die offensichtliche Lösung wäre natürlich für vernünftig geschirmte und 
verdrillte Kabel zu sorgen sowie für möglichst wenig Steckverbindungen. 
Das werde ich nun auch umsetzen.

Nun zur eigentlichen Frage:
Ich habe überlegt, ob man parallel zu der Minimierung der eigentlichen 
Störquellen auf den Slaves eine Art Signalverstärkung vorsehen könnte. 
Für die Kommunikation zwischen Arduino und RPi hab ich schonmal so Logic 
Converter gebaut (s. Bild). Könnte man etwas in der Art auch für das 
serielle Signal verwenden?
Sehr Ihr noch andere Möglichkeiten die Signalübertragung auf ähnliche 
Weise zu verbessern?

Vielen Dank im Voraus,
FN
Angehängte Dateien:
(Firma: Schweigstill IT) Persönliche Seite #7234616
Lesenswert?

Wie viele Abschlusswiderstände mit welchen Werten befinden sich an 
welchen Stellen des Busses?

Wie viele Failsafe-Widerst#nde mit welchen Werten befinden sich an 
welchen Stellen des Busses?

Sind die GND-Potentiale aller Baugruppen miteinander verbunden?

Welche Baudrate wird verwendet?

Werden die Microcontroller bzw. deren UART-Takte mit dem internen 
RC-Oszillator oder einem externen Quarz bzw. Quarzoszillator versorgt.

Sind die Stromversorgungen, insbesondere auch die Leitungstreiber, mit 
geeigneten Abblockkondensatoren ausgestattet? Wo befinden sich die 
Kondensatoren.

JST XH ist übrigens ein Steckverbindertyp und keine Leitung.
Gast #7234620
Lesenswert?

FN schrieb:
> Die Dinger bringen anscheinend so hohe Übergangswiderstände
> mit, dass ab einer bestimmten Anzahl Slaves am Bus die Verbindung nicht
> mehr funktioniert.

Was heißt "anscheinend"?
Wäre messen vielleicht eine Option?
Sind die XH-Stecker anständig gecrimpt?
Gast #7234624
Lesenswert?

Den RS485 Bus benutzt man immer mit Bustreibern wie den Max485 oder 
SN75ALS176. Diese brauchen keine weitere Verstärkung.

Dein "Logic Converter" ist nur für den I²C Bus gedacht, das ist eine 
ganz andere Welt als RS485.

> Dabei scheint es hauptsächlich auf die Anzahl der
> insgesamt verwendeten Steckverbindungen anzukommen. Wenn ich noch
> mehrere Verlängerungsstücke (zusätzliche Stecker) hinzufüge, wird die
> Übertragung logischerweise noch schlimmer.

Klingt für mich nach falscher/fehlender Terminierung des Busses oder 
völlig falschem Aufbau, z.B. Sternförmig verkabelt.
Gast #7234674
Lesenswert?

FN schrieb:
> . Die Dinger bringen anscheinend so hohe Übergangswiderstände mit, dass
> ab einer bestimmten Anzahl Slaves am Bus die Verbindung nicht mehr
> funktionier

Hast Du ein Oszi? Messen.

Sind vielleicht Abschlusswiderstände etc an jedem Board? Oder Cs etc.?

Schaltplan?

Terminiert?

Stern?

Widerstand in Reihe, wofür auch immer?


100 oder mehr Steckkontakte sind kein Problem
(Firma: Schweigstill IT) Persönliche Seite #7234941
Lesenswert?

Alt G. schrieb:
> Die cheapo hardware hat mühe mit der rx-tx umschaltung.

Das ist aber ein Problem der besagten "cheapo hardware", nicht des 
Busprotokolls ans sich. RS-485 funktioniert in der Tat nicht immer 
korrekt bei Pegelwandlern, deren Treiber nicht per DE-Leitung, sondern 
durch Erkennen von Aktivität auf der TxD-Leitung umgeschaltet werden, da 
das erste Bit dann ggf. etwas verunstaltet ist. Bei ordentlicher 
Auslegung der Schnittstelle, d.h. UART+Leitungstreiber, gibt es da aber 
keine Probleme.
Gast #7235060
Lesenswert?

ziege schrieb:
> Wie viele denn?

Max. 10 aktuell.

Andreas S. schrieb:
> Wie viele Abschlusswiderstände mit welchen Werten befinden sich an
> welchen Stellen des Busses?

120R ganze vorne und ganz hinten im Bus wie im Datenblatt vom MAX485 
empfohlen.

Andreas S. schrieb:
> Wie viele Failsafe-Widerst#nde mit welchen Werten befinden sich an
> welchen Stellen des Busses?

Jeweils ein Pullup bzw Pulldown an den Leitungen direkt an der MainUnit 
(an einem Ende des Busses). Genauen Wert kann ich noch nachreichen.

>
> Sind die GND-Potentiale aller Baugruppen miteinander verbunden?
>

Ja

> Welche Baudrate wird verwendet?
>

9600. Reicht für mich völlig aus.

> Werden die Microcontroller bzw. deren UART-Takte mit dem internen
> RC-Oszillator oder einem externen Quarz bzw. Quarzoszillator versorgt.
>

Externer Quarz mit 16MHz, angelehnt an den Arduino Uno.

> Sind die Stromversorgungen, insbesondere auch die Leitungstreiber, mit
> geeigneten Abblockkondensatoren ausgestattet? Wo befinden sich die
> Kondensatoren.

Sind vorhanden, jeweils so dicht es geht an den jeweiligen Bauteilen. 
Dimensioniert anhang jeweiligem Datenblatt.

Wolfgang schrieb:
> Wäre messen vielleicht eine Option?
> Sind die XH-Stecker anständig gecrimpt?

Messen steht bei mir auch auf dem Programm, komme nur leider gerade 
nicht an ein Oszi ran. Die XH-Stecker hab ich fertig gekauft in der 
Hoffnung die sind besser gecrimpt als von mir von Hand.

A. S. schrieb:
> Stern?
>
> Widerstand in Reihe, wofür auch immer?

Nein, ist ne reine Linie.
Nein außer den Kabeln und Steckern keine weiteren Widerstände.

Wie gesagt, die typischen Anfängerfehler meine ich alle behoben zu 
haben. Meine Frage zielte ja darauf ab, ob es Möglichkeiten zum Filtern 
von Störungen oder zur Signalverstärkung gibt, falls sich die Qualität 
von Steckern und Kabeln nicht verbessern lässt.
Moderator (Firma: Titel) Persönliche Seite #7235090
Lesenswert?

FN schrieb:
> Für die Kommunikation zwischen Arduino und RPi hab ich schonmal so
> Logic Converter gebaut (s. Bild). Könnte man etwas in der Art auch für
> das serielle Signal verwenden?
Die kurze Version heißt "Nein".
Die ausführliche Begründung für dieses "Nein" verweist mehrmals auf das 
Wort "Impedanz" und "Terminierung". Sie hat viel mit den Grundlagen des 
RS485 zu tun und die müssen hier nicht zum x-ten Mal wiederholt werden.

> Die Dinger bringen anscheinend so hohe Übergangswiderstände mit, dass ab
> einer bestimmten Anzahl Slaves am Bus die Verbindung nicht mehr
> funktioniert.
Du bist auf einem Irrweg.
Mit einem Oszilloskop kann man übrigens direkt an den Treiber-IC-Pins 
messen und die Messungen mal mit dem Datenblatt dieser Treiber 
vergleichen. Wenn die Spezifikation der Bauteile eingehalten wird, dann 
läuft der Bus.

FN schrieb:
>> Sind die GND-Potentiale aller Baugruppen miteinander verbunden?
> Ja
Sind die Busleitungen verdrillt? Denn die Physik des RS485 basiert auf 
verdrillten Leitungen.

FN schrieb:
> Die XH-Stecker hab ich fertig gekauft in der
> Hoffnung die sind besser gecrimpt als von mir von Hand.
Dann liegt das Problem sicher woanders. Aber selbt eine Handcrimpung 
wirst du nur mutwillig so schlecht hinbekommen, dass die das Problem 
ist.

> Messen steht bei mir auch auf dem Programm,
> komme nur leider gerade nicht an ein Oszi ran.
Dann warten wir mal ab und bis dahin kannst du dich ja mal zum RS485 
aufschlauen.
Gast #7235179
Lesenswert?

Noch eine Frage zu den Kabeln: Ich benutze 5-Polige Kabel mit den Adern 
12V+, GND, RS485-A, RS485-B und ein Digital IO, der nur im Setup des 
Programms überhaupt aktiv, ansonsten LOW ist.

Würde es überhaupt zur Verdrillung helfen, das ganze Kabel in sich zu 
verdrillen, oder funktioniert das nur paarweise?

Zur Erinnerung: Ich brauche ja nicht mehrere hundert Meter Reichweite. 
10-20m würden mir völlig reichen.
Moderator (Firma: Titel) Persönliche Seite #7235182
Lesenswert?

FN schrieb:
> Würde es überhaupt zur Verdrillung helfen, das ganze Kabel in sich zu
> verdrillen, oder funktioniert das nur paarweise?
Sinnvollerweise wäre paarig, denn sonst koppelt du ja jeden Dreck von 
der Versorgung möglichst innig auf die Datenleitungen.

Mein Vorschlag: probier einfach mal, nur die Datenleitungen ausgehend 
von der Kabelmitte zu verdrillen. Macht ja nichts aus, wenn die links 
der Mitte links herum verseilt sind und rechts der Mitte rechts herum. 
Verdrillt ist verdrillt.

> 10-20m würden mir völlig reichen
Nimm ein vernünftig geschirmtes und paarig verdrilltes Buskabel.
Du kannst den GND auf den Schirm legen, die 12V und das Digitalsignal 
auf ein Adernpaar und die RS485-Signale auf das andere Adernpaar.
Gast #7235184
Lesenswert?

FN schrieb:
> Würde es überhaupt zur Verdrillung helfen, das ganze Kabel in sich zu
> verdrillen, oder funktioniert das nur paarweise?

Nur RS485-A und -B.

Es ist vorteilhaft, wenn alle 5 Adern nochmals ein bis zwei Mal pro 
Meter verdreht sind, aber bei 9k6 und

> 10-20m würden mir völlig reichen.
nicht notwendig. Wenn RS485 da nicht funktioniert, liegt es an einem 
groben Fehler.

Was hast Du da? Multimeter, Oszi,

Was für Fehler genau stellen sich ein?
(Firma: Schweigstill IT) Persönliche Seite #7235330
Lesenswert?

Falls das ganze mit einem schrottigen Schaltnetzteil versorgt wird, kann 
es durchaus sein, dass sich dessen Störungen auf den Datenleitungen 
bemerkbar machen.

Wenn die Spitzen(!)stromaufnahme der Baugruppen zu hoch sein sollte, 
können solche Spitzenströme bei langen Versorgungsleitungen dazu führen, 
dass das Massepotential kurz angehoben wird und somit der 
Gleichtaktbereich einiger RS-485-Treiber verlassen wird. Bei den Treiber 
gibt es gerade bezüglich des Gleichtaktbereichs ganz gewaltige 
Qualitätsunterschiede; einige funktionieren sogar noch bei -5 V oder 
mehr/wenige, andere bis zu +70 V, und schrottige mögen nix, was auch nur 
in die Nähe ihrer Versorgungsspannung kommt.

Viele Markenprodukte (Maxim, Analog Devices, TI, usw.) sind derzeit 
nicht erhältlich. Ich musste auch gerade eine Bestellung meines 
Lieblinggstyps direkt bei AD platzieren, um schon Ende März 2023 
hoffentlich welche zu bekommen. Es gibt aber sehr viele chinesischen 
Hersteller, z.B. bei LCSC, mit Preisen im Centbereich. Bei denen wäre 
ich durchaus etwas vorsichtiger. Das große Problem: Es wird sicherlich 
einige Plagiateure geben, die solche Billigtypen umetikettieren und für 
den zehn- oder zwanzigfachen Preis als Markenware verkaufen. Und viele 
Eigenschaften (ESD, Slewrate- Störempfindlichkeit, Gleichtaktbereich) 
bemerkt man eben nicht auf Anhieb.

Hast Du denn die RS-485-Treiber von einem der offiziellen Distributoren 
einschließlich Herkunftsnachweis gekauft?
Gast #7235347
Lesenswert?

Danke euch für die vielen Hinweise. Ich sehe schon, eine Oszi-Messung 
würde da sehr viel Licht ins Dunkel bringen. Vielleicht darf ich in der 
nächsten Zeit bei der Arbeit mal an eines ran, dann bin ich auf jeden 
Fall schlauer und melde mich nochmal.
Gast #7235364
Lesenswert?

Falls Du nur ein Multimeter hast, kann das vielleicht einen Hinweis 
liefern:

a) Bricht die Versorgungsspannung ein (am Netzteil, am letzten Gerät)
b) Bricht die Ruhespannung am 485 ein? (Keine Kommunikation)
c) Verschiebt sich die Ruhespannung (also z.B. A gegen Masse?
d) Kurzschlussstrom A/B

Jeweils mit einem / allen Devices.
Gast #7235379
Lesenswert?

FN schrieb:
> Messen steht bei mir auch auf dem Programm, komme nur leider gerade
> nicht an ein Oszi ran.

Den von dir vermuteten hohen Übergangswiderständen sollte man mit einem 
simplen Multimeter auf die Spur kommen können.
Wenn es allerdings daran nicht liegt, ist ein Oszi ausgesprochen 
hilfreich.
Gast #7235548
Lesenswert?

FN schrieb:
> eine Oszi-Messung
> würde da sehr viel Licht ins Dunkel bringen. Vielleicht darf ich in der
> nächsten Zeit bei der Arbeit mal an eines ran

Wer um Gottes Willen beauftragt einen Mitarbeiter mit der Entwicklung 
eines Bussystems, ist aber zu knauserig einen Oszi zur Verfügung zu 
stellen? Das ist ja so als ob jemand einen Pkw-Motor auswechseln soll, 
aber das Werkzeug in der Werkstatt darf er nicht benutzen.

Georg
Gast #7235556
Lesenswert?

Wir benutzen einen Rs485 Bus mit 20 Teilnehmern der durch 10 Gebäude 
geht mit über 1.5km länge, bestimmt 50 Klemmleisten/Wagos in 30 Jahre 
alten Kabeln.. in 30DA gemeinsam neben Alten Telefonleitungen, neuen 
Digitalen Leitungen, anderen  Ring/Bus Systemen und sogar mehrere Point 
to Point 2 Wire Ethernet Lösungen.

Wenn man mal etwas umklemmt können schonmal Treiber aussteigen das man 
ein Gerät neu starten muss, ansonsten läuft es wie es läuft bei 38400 
Baud ohne verlorene Pakete bei mehreren Tausend am Tag.

Das einzig wichtige sind die Richtigen Pullups auf einer Seite und die 
einmalige Terminierung an jedem Ende.

Dann kann man noch drüber streiten ob man eine geschlossene Masse ohne 
Erdverbindung als zusätzliche Leitung unter den Treibern mitzieht.
#7235568
Lesenswert?

FN schrieb:
> ABER: Der Bus verläuft über die jeweiligen Boards. Die Verbindung
> dazwischen verläuft über (ungeschirmte) JST-XH Kabel. Und genau da liegt
> der Haken.


> Meine Frage zielte ja darauf ab, ob es Möglichkeiten zum Filtern
> von Störungen oder zur Signalverstärkung gibt, falls sich die Qualität
> von Steckern und Kabeln nicht verbessern lässt.

Du hast ja mittlerweile einige Hinweise bekommen. Es ist momentan nur 
eines relativ sicher: Genau da wird der Haken NICHT liegen!
#7236045
Lesenswert?

FN schrieb:
> dass ab einer bestimmten Anzahl Slaves am Bus die Verbindung nicht
> mehr funktioniert.

Das schreit geradezu nach einem Fehler in der Implementierung Deines 
unbekannten Protokolls. Die Adressierung muß absolut sauber erfolgen mit 
genügend Gap zum Umschalten des jeweiligen Transceivers.
Meine obige Nachfrage hast Du ja standhaft ignoriert.
Beitrag "Re: RS485 Mehrere Signalverstärker im Bus gegen Störungen"
Gast #7236247
Lesenswert?

Rs485 ist ja auch nicht rs485..

Ich kenne je nach Hardware Umsetzung viele verschiedene Geräte von PV 
Wechselrichtern bis Industriebus die in den Anleitungen verschiedene 
maximale Längenangaben haben welche wohl auf verschiedene Treiber 
zurückzuführen sind.

Das geht bunt laut Anleitungen von 30m,100m, 300m bis
Verdrahtungsabhängig >1000m.

Wenn man Budget hat gibt es auch von Westermo frei konfigurierbare 
isolierte Bus Verstärker mit denen man sogar Sternabzweige für gerade 
mal 700€ umsetzen kann.
Gast #7245491
Lesenswert?

Hallo nochmal,

Wolfgang schrieb:
> Den von dir vermuteten hohen Übergangswiderständen sollte man mit einem
> simplen Multimeter auf die Spur kommen können.
> Wenn es allerdings daran nicht liegt, ist ein Oszi ausgesprochen
> hilfreich.

Das habe ich inzwischen mit meinem Multimeter auch überprüft und ist in 
der Tat quatsch, der Widerstand auch von mehreren Steckverbindungen 
hintereinander ist kaum messbar.

Peter D. schrieb:
> Das schreit geradezu nach einem Fehler in der Implementierung Deines
> unbekannten Protokolls. Die Adressierung muß absolut sauber erfolgen mit
> genügend Gap zum Umschalten des jeweiligen Transceivers.

Selbst wenn ich da Wartezeiten von 1s einbaue tritt der Fehler weiter 
auf. Die Adressierung funktioniert, die Slaves haben eine Anzeige. Nur 
ist die Übertragung eben fehlerhaft.

TotoMitHarry schrieb:
> Das einzig wichtige sind die Richtigen Pullups auf einer Seite und die
> einmalige Terminierung an jedem Ende.

Für die ersten Tests hab ich son RS485 Konverter Modul gekauft und mich 
dann beim weiteren Design der Platine an den Widerständen (20k Pullups) 
in dessen Schaltplan orientiert. Hab auch spaßeshalber geringere Werte 
(500R) getestet, das hatte in meiner Erinnerung gar keinen großen 
Einfluss, solange da immerhin welche dran sind.
https://www.makershop.de/download/MAX485-Module-Sch1.jpg

Morgen komme ich endlich an ein Oszi ran, mit den Ergebnissen melde ich 
mich nochmal.

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