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
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.
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.
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
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
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.
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.
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.
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)
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?
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.
>> 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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.