Forum: Mikrocontroller und Digitale Elektronik RS485 und separate Spannungsquellen


von Frank K. (frank_kaiser)


Angehängte Dateien:

Lesenswert?

Hallo Forumsmitglieder,

ich betreibe an einem RS485-Bus im 9-Bit-Modus neben einem Master 12 
Slaves. Wie üblich steuert der Master die Kommunikation auf dem Bus, in 
dem er mit gesetztem 9.Bit einen Client adressiert (Rufbyte). Der Master 
räumt dem Client dann ein Antwortzeitfenster ein in dem dieser Senden 
darf. Der Client muss mindestens eine Quittung senden. Danach wird der 
nächste Client adressiert, usw.

[[Bild:RS485.png]]

Der Master sowie 11 Clients befinden sich an einer Spannungsversorgung. 
Der 12 Client an einer separate Spannungsversorgung.

Das System läuft selbst unter kritischen Busverhältnissen (ungeschirmte 
4 polige Leitung ohne Drill, 250 Meter Busleitung auf Kabeltrommel, 
gleichzeitige Verlegung mit Rechteckspannung hoher Amplitude und 
Flankensteilheit etc.) absolut zuverlässig (Softwareseitige Fehlerzähler 
etc.)

Während des Betriebes konnte jeder Client vom RS485 Bus genommen und 
später wieder angeschlossen werden (Hotplugfähigkeit), da über das 
Rufbyte und die ausbleibende Quittung dieses zuverlässig erkannt wurde. 
Ebenso war das Verhalten beim Abschalten der Versorgungsspannung eines 
Clients.

Der bisher separat spannungsversorte 12. Client musste nun auf eine 3,3V 
Versorgungsspannung umgebaut werden. Er erhielt hierfür statt des MAX485 
einen MAX3485.

Nach dem Umbau diese Clients und den erforderlichen Softwareanpassungen 
läuft das System wie bisher völlig stabil. Auch wenn dieser Client 
zeitweise von Bus getrennt oder wiederverbunden wurde.

Wird allerdings die 3,3V Versorgungsspannung dieses Clients abgeschaltet 
findet keine geordnete Buskommunikation mehr statt. Auf dem Bus ist 
keine Telegrammstruktur mehr erkennbar. Ebenso findet keine 
Synchronisierung durch das Rufbyte statt. Die Kommunikation auf dem Bus 
bricht völlig zusammen.

Nach meiner Bewertung entsprechen die Pegel der A und B Leitung nicht 
mehr der Spezifikation.

Wenn ich das Datenblatt des MAX3485 richtig interpretiere,  gehen die A 
und B Leitung bei fehlender Versorgungsspannung in den Fail-Safe- Modus 
und die Anschlüsse A und B werden hochohmig.

Ich hoffe ihr habt Ideen.

Gruß
Frank

von Interpreter (Gast)


Lesenswert?

Das einzige, was ich im Datenblatt über den fail-save Modus gefunden 
habe ist

"The receiver input has a fail-safe feature that
guarantees a logic-high output if both inputs are open
circuit."

Ich würde da jetzt nicht draus interpretieren, dass der fail-save modus 
irgendwas damit zutun hat wie der Chip sich verhält, wenn er keine 
Versorgungsspannung bekommt.

von Stefan F. (Gast)


Lesenswert?

Die 120Ω Abschlusswiderstände gehören an A+B nicht an A+GND.

Der Sinn deiner 680Ω Widerstände zwischen A+B sowie zwischen +5V und GND 
ist mir unklar.

von Anonymus B. (anonymus_bugmenot)


Lesenswert?

Stefan ⛄ F. schrieb:
> Die 120Ω Abschlusswiderstände gehören an A+B nicht an A+GND.
>
> Der Sinn deiner 680Ω Widerstände zwischen A+B sowie zwischen +5V und GND
> ist mir unklar.

Da bin ich komplett dabei, allerdings funktioniert es ja scheinbar 
stabil - never touch a running system.

Meine Vermutung für die 680: Damit die Bus Kabel nicht komplett floaten 
und damit bei ausgeschalteter Spannungsversorgung auch nichts durch EMV 
eingespeist wird

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Stefan ⛄ F. schrieb:
> Die 120Ω Abschlusswiderstände gehören an A+B nicht an A+GND.
Der Schaltplan ist offenbar falsch. Die 3 Busleitungen sind von oben A, 
B und dann GND. Dann passen die Terminierungswiderstände, und die 680 
Ohm Widerstände bringen einen definierten Pegel, wenn kein Treiber aktiv 
ist.

Wenn der Bus in der Realität auch so verdrahtet ist, dann warst Zufall, 
wenn der bisher funktioniert hat.

: Bearbeitet durch Moderator
von Hmmm (Gast)


Lesenswert?

Frank K. schrieb:
> Wird allerdings die 3,3V Versorgungsspannung dieses Clients abgeschaltet
> findet keine geordnete Buskommunikation mehr statt.

Du darfst auch nicht einfach die Versorgungsspannung abschalten. Wie der 
Shutdown-Modus richtig funktioniert, steht im Datenblatt.

Stefan ⛄ F. schrieb:
> Die 120Ω Abschlusswiderstände gehören an A+B nicht an A+GND.

Der Schaltplan ist falsch, von oben nach unten ist es A, B und GND, bei 
den Verbindungen der ICs ist die Reihenfolge falschrum.

Stefan ⛄ F. schrieb:
> Der Sinn deiner 680Ω Widerstände zwischen A+B sowie zwischen +5V und GND
> ist mir unklar.

Bias-Widerstände, einer zwischen A und +5V, einer zwischen B und GND.

von Stefan F. (Gast)


Lesenswert?

Frank, bevor wir uns verzetteln, korrigiere bitte den Schaltplan 
und/oder die Schaltung, dann sehen wir weiter.

Denn das Abschalten der 3,3V Stromversorgung sollte sich nicht negativ 
auswirken. Der Max3485 belastet den Bus ohne Stromversorgung nicht mehr, 
als mit Stromversorgung - wenn er denn richtig angeschlossen ist.

"Never change a running system" gilt hier nicht, denn es funktioniert ja 
eben nicht richtig.

von Frank K. (frank_kaiser)


Angehängte Dateien:

Lesenswert?

Hallo Forumsmitglieder,

vielen Dank schon einmal für die Antworten und vor allem für den Hinweis 
des Fehlers im Schaltplan. Da hat sich in meiner Zeichnung leider der 
Fehlerteufel eingeschlichen. Hier der korrigierte Schaltplan.

von Stefan F. (Gast)


Lesenswert?

Frank K. schrieb:
> Hier der korrigierte Schaltplan.

Wenn ich nun den Plan mit dem Datenblatt des MAX3485 vergleiche, sehe 
ich keinen Grund für das von dir beschriebene Problem.

Zur Kontrolle würde ich mal 100Ω Widerstände in Reihe zu den beiden 
Eingängen (A,B) des Chips schalten. Dann kannst du (anhand des 
Spannungsabfalls an den Widerständen) messen, wie viel Strom in welchen 
Eingang fließt. Vielleicht bringt uns das weiter.

Mache das mal, und messe dann im Ruhezustand ohne 3,3V Versorgung 
folgende Spannungen:

Zwischen GND und A
Zwischen GND und B
Zwischen GND und 3,3V
Am Widerstand in der A-Leitung (notiere auch die Polarität)
Am Widerstand in der B-Leitung (notiere auch die Polarität)

von Frank K. (frank_kaiser)


Lesenswert?

Hallo Stefan,

hier die Meßergebnisse:

> Zwischen GND und A  1,3V = 13mA

> Zwischen GND und B  1,6V = 16mA

> Zwischen GND und 3,3V  0V

> Am Widerstand in der A-Leitung (notiere auch die Polarität)  - 0,09V = 0,9mA

> Am Widerstand in der B-Leitung (notiere auch die Polarität)  + 0,09V = 0,9 mA

Ich hoffe ich interpretiere die Werte mit dem Datenblatt richtig, dann 
sind die Werte innerhalb der Grenzen?

von Hmmm (Gast)


Lesenswert?

Frank K. schrieb:
>> Zwischen GND und A  1,3V = 13mA
>
>> Zwischen GND und B  1,6V = 16mA

Frank K. schrieb:
> Ich hoffe ich interpretiere die Werte mit dem Datenblatt richtig, dann
> sind die Werte innerhalb der Grenzen?

Kann es sein, dass Du die Bias-Widerstände falsch angeschlossen hast? 
Wenn kein Transceiver sendet, muss A mindestens 0.2V über (nicht unter) 
B liegen, denn die Ruhelage ist ein High-Pegel.

Bei Deiner Konstellation (beidseitige Terminierung mit 120 Ohm, 
Bias-Widerstände je 680 Ohm, VCC für Bias 5V) solltest Du auf A ca. 2.6V 
und auf B ca. 2.4V gegen GND messen.

von Stefan F. (Gast)


Lesenswert?

>> Zwischen GND und A  1,3V = 13mA
>> Zwischen GND und B  1,6V = 16mA

Im Ruhezustand müsste die Spannung an A höher sein als an B. Und zwar 
A=2,6V und B=2,4V.

Mir ist nicht klar wie du da jetzt auf 13 bzw. 16mA gekommen bist.

>> Am Widerstand in der A-Leitung (notiere auch die Polarität)  - 0,09V = 0,9mA
>> Am Widerstand in der B-Leitung (notiere auch die Polarität)  + 0,09V = 0,9 mA

Der Strom durch deinen Spannungsteiler (aus den 4 Widerständen) müsste 
rein rechnerisch 3,5mA ergeben. Deine Polaritätsangabe ist für mich 
nutzlos solange ich nicht weis, an welchen Punkten du die rote und 
schwarze Strippe des Multimeters angeschlossen hast.

Hmmm schrieb:
> Kann es sein, dass Du die Bias-Widerstände falsch angeschlossen hast?

Ich habe auch immer noch den Eindruck, dass die Schaltung nicht dem 
letzten (richtigen) Plan entspricht. Die Messwerte zeigen das deutlich. 
Man könnte jetzt noch die ganzen Leitungstreiber abtrennen um 
auszuschließen dass einer der IC's defekt ist oder falsch angeschlossen.

von Freivogel (Gast)


Lesenswert?

Frank K. schrieb:
> Wird allerdings die 3,3V Versorgungsspannung dieses Clients abgeschaltet
> findet keine geordnete Buskommunikation mehr statt.

Wo kommen die 3,3 Volt her?

Ist dieser 12. Teilnehmer derjenige, der über ein langes Kabel 
angeschlossen ist? Wie ist die räumliche Anordnung der Nodes? Wie ist 
die Stromversorgung gemacht?

von Frank K. (frank_kaiser)


Lesenswert?

Nach vielen Stunden der Suche ist der Fehler ist gefunden.
Stefan lieferte den entscheidenden Hinweis.

Stefan ⛄ F. schrieb:
> Im Ruhezustand müsste die Spannung an A höher sein als an B. Und zwar
> A=2,6V und B=2,4V.

Zunächst hatte ich die Bias-Widerstände abgeklemmt, die waren 
glücklichweise mit Jumpern versehen. Es trat jedoch keine Veränderung 
ein.

Dann habe ich tasächlich alle Bustreiber ausgebaut und direkt an den 
Sockeln die Leitungen A und B "durchgeklingelt". Und tatsächlich waren 
am neu entworfenen Slave die Leitungen A und B vertauscht. Die Ursache 
geradezu lächerlich. Der Bestückungsdruck für die 4-polige Buchse der 
Busleitung war in EAGLE im falsche Layer statt Top, Bottom. Die 
Busleitung ist belegt mit GND A B GND.

Das auf der falschen Platinenseite vertauscht dann A und B. Als Hobbyist 
nehme ich für die Zunkunft mit, solche Buchsen besser künftig mit GND A 
GND B zu belegen, dann fällt so ein Fehler eher auf.

Nun läuft alles wieder wie gewohnt.

Vielen Dank für eure konstruktiven Beiträge.

Gruß
Frank

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.