Guten Abend, ich würde gerne eine alte Steuerung abhören, die unverschlüsselt via RS 485 kommuniziert. Später soll ein Mikrocontroller über ca. 15 Meter Kabel die Daten loggen. Der Stecker für den Bus hat 4 Anschlüsse (+12 V, GND, A, B). Ich beschäftige mich zum ersten mal mit RS 485 und möchte die Steuerung auf keinen Fall beschädigen. Das Reverse Engineering wollte ich mit einem USB-Wandler machen, den ich schon oft mit Putty für serielle Verbindungen zu Mikrocontrollern genutzt habe: https://www.waveshare.com/usb-to-rs232-485-ttl.htm Der Wandler ist laut Anleitung isoliert, aber so lange ich nur A und B anschließe sollte da eh nichts passieren, richtig? Was sollte ich beachten, wenn ich später den Mikrocontroller am Bus anschließe? Mit welchem Programm würdet ihr unter Linux die Daten auswerten? Putty scheint ja mehr für Terminal-Emulationen Sinn zu machen und die Steuerung könnte theoretisch ja auch Binärdaten senden. Herzlichen Dank.
Max schrieb: > Was sollte ich beachten, wenn ich später den Mikrocontroller am Bus > anschließe? Vielleicht versorgst Du den Controller einfach aus der Steuerung raus, dann hast Du keine Probleme mit verschiedenen Spannungen und Potenialverschleppungen.
Max schrieb: > Mit welchem Programm würdet ihr unter Linux die Daten auswerten? Ich würde da im ersten Schritt eher mit Sigrok und einem billigen 8-Ch. Logig-Analyser (ca. <15€ bei ebay) rangehen.
:
Bearbeitet durch User
> Der Wandler ist laut Anleitung isoliert, aber so lange ich nur A und B > anschließe sollte da eh nichts passieren, richtig? Du musst auch GND anschliessen. Kaputt machen wirst du eher nix weil das die Bustreiber eigentlich sehr robust sind. Olaf
Wenn Du schon wüßtest welches Protokoll auf der RS485 genutzt wird, könnte man schon eher ein Programm zum auswerten empfehlen. Solang sonst nix bekannt ist, einfach die Hexwerte in ASCII wegschreiben z.B. auf SD-Karte.
Max schrieb: > Der Wandler ist laut Anleitung isoliert, aber so lange ich nur A und B > anschließe sollte da eh nichts passieren, richtig? Das ist keine gute Idee. Die Spannungen an A und B dürfen Grenzwerte nicht überschreiten (auch an deinem Lauscher). Um das zu gewährleisten muss ein gemeinsames Bezugspotential vorhanden sein (Gnd).
Wenn du einfach nur die Daten in eine Datei schreiben willst, kannst du jedes beliebige Terminalprogramm benutzen. Ich benutze gerne das "Hammer Terminal". Unter Linux kannst die Baudrate mit dem stty Befehl einstellen
1 | stty -F /dev/ttyUSB0 ispeed 19200 |
und danach die Daten mit dem copy Befehl in eine Datei kopieren
1 | cp /dev/ttyUSB0 ausgabedatei.bin |
oder mit dem cat Befehl anzeigen
1 | cat /dev/ttyUSB0 |
Wenn dir das Datenformat bekannt ist, macht es eher Sinn, ein eigenes Programm zu schreiben, dass es auswertet und ordentlich lesbar darstellt.
Hallo Wurstesser, zum Ablauschen der RS485 verwende ich immer H-Term. https://www.der-hammer.info/pages/terminal.html Ein extrem mächtiges Programm, da kannst z.Bsp. automatischen Zeilenumbruch nach x-ms einstellen (und sehr viel mehr). Sehr sinnvoll um Anfang und Ende von Telegrammen zu finden. Rein elektrisch kann nix passieren, wenn Du Dich dazuklemmst. Wenn Dein "Lauschgerät" ein Laptop ohne angeschlossenem Ladegerät (!) wäre, dann kann es auch nicht zu Potentialbeeinflussung kommen. Einfach nur A und B anklemmen und fertig. Die GND-Leitung brauchst Du nicht, weil nicht die Pegeländerung zu GND die Signale übnerträgt (Siehe RS232), sondern der Unterschied zwischen A & B. Falls A & B kurzgeschlossen werden sollte, passiert auch nix ! Nur Spannungen größer 12V (abhängig vom verwendetem RS485-IC -> Datanblatt) können den Treiber zerstören. Dazu kann es aber nicht kommen, wenn der Laptop nicht am Ladegerät hängt. Also sehr handhabungsfründlich. Ein eventuelles Problem könnten (!) die "Spreiz"-Widerstände vom Lausch-Adapter sein. Laut Datenblatt sind das meist einige hundert-Ohm. Habe aber auch schon Schaltungen mit 22k-Ohm gesehen. Daher mal bei beiden vorhandenen Busteilnehmern die Beschaltung am 485-IC betrachten. Viel Spaß beim Steuern der Heizungsanlage (?). :-D Grüße ... ausge-Gast GND --[###]--B--[###]--A--[###]--VCC
Die im Eröffnungsbeitrag genannte Idee das man keine Potentialtrennung braucht wenn man GND weglässt ist nicht richtig, da die beiden Anschlüsse A und B immer auf GND bezogen sind. Ob man eine Potentialtrennung braucht oder nicht hängt davon ab, ob beide Seiten ungefähr das gleiche GND Potential haben. Etwa 7V Differenz sind erlaubt, falls ich mich recht erinnere. Ein Laptop ohne Erdung hat relativ zu anderen Geräten gar kein definiertes GND Potential. Darauf würde ich mich nicht einlassen, könnte die ICs gefährden. Besser GND mit verbinden - oder alle Geräte erden.
Sven L. schrieb: > Vielleicht versorgst Du den Controller einfach aus der Steuerung raus, > dann hast Du keine Probleme mit verschiedenen Spannungen und > Potenialverschleppungen. Der Controller soll später in einigem Abstand zur Steuerung auch noch über andere Schnittstellen kommunizieren. Ich befürchte, dass ich mir eh Gedanken über die Potentiale machen muss. ausge-Gast schrieb: > Viel Spaß beim Steuern der Heizungsanlage (?). :-D Vielen Dank, hast mich erwischt! :) Stefan ⛄ F. schrieb: > Die im Eröffnungsbeitrag genannte Idee das man keine Potentialtrennung > braucht wenn man GND weglässt ist nicht richtig, da die beiden > Anschlüsse A und B immer auf GND bezogen sind. OK. Müsste man einen schädlichen Potentialunterschied nicht einfach mit einem Multimeter messen können? Also zwischen den beiden GNDs? Wobei ich mich dann frage, wie man das Ergebnis interpretiert...also bis zu welcher Differenz man die GNDs einfach verbindet und den Strom fließen lässt, ab wann man isoliert arbeitet und ab wann man den Elektriker ruft... :) Herzlichen Dank an alle für eure Hilfe.
Max schrieb: > Der Controller soll später in einigem Abstand zur Steuerung auch noch > über andere Schnittstellen kommunizieren. Ich befürchte, dass ich mir eh > Gedanken über die Potentiale machen muss. Da Du sowieso nur lauschen willst, nimm einen RS485 Transceiverbaustein und setze ihn hart auf Empfang. Dann entsprechend schnellen Optokoppler dahinter und Ruhe. Den Baustein versorgst Du aus einem der schon am Bus befindlichen Module. Damit kannst Du dann in ein FTDI Kabel und in den PC oder direkt an einem µC andocken. Gruß Jobst
Es gibt so Bausteine auch mit integrierter Potentialtrennung. Die werden aber IMHO auch gerade mit Gold aufgewogen. Olaf
Stefan ⛄ F. schrieb: > Die im Eröffnungsbeitrag genannte Idee das man keine Potentialtrennung > braucht wenn man GND weglässt ist nicht richtig, da die beiden > Anschlüsse A und B immer auf GND bezogen sind. Mit dieser unrichtigen Behauptung ignorierst du sowohl die RS485-Spec, die keine Masseverbindung vorsieht, als auch das Funktionsprinzip eines Differenzverstärkers. Im Eingangspost wird explizit erwähnt, daß der Wandler isoliert ist, also woher soll die schädliche Gleichtaktspannung an seinen Eingängen kommen? Das Mitführen von Masse dient lediglich der Kompensation mangelhafter Schaltungskonzepte. Ich betreue Anlagen, wo RS485-Busse mit einer Länge von mehr als einem Kilometer gebäude- und geländeübergreifend seit Jahrzehnten einwandfrei funktionieren und zwar ausschließlich mit A und B, OHNE Masse.
Icke ®. schrieb: > Mit dieser unrichtigen Behauptung ignorierst du sowohl die RS485-Spec, > die keine Masseverbindung vorsieht Falsch. RS485 braucht Masse, alles andere ist Wunschdenken. Das wurde u.a. auch auf MC.net bis zum Erbrechen ausdiskutiert und ist auch in jedem Transceiver DB nachlesbar, wenn man min/max Werte interpretieren und Schlussfolgerungen daraus ziehen kann. Icke ®. schrieb: > Ich betreue Anlagen, wo RS485-Busse mit einer Länge von mehr als einem > Kilometer gebäude- und geländeübergreifend seit Jahrzehnten einwandfrei > funktionieren und zwar ausschließlich mit A und B, OHNE Masse. Das ist schön für Dich. Ich betreue RS485 in Luftfahrzeugen. Aber entweder holen die sich ihre Masse über die PE Verbindung oder über eine ziemlich robuste Schutzbeschaltung oder beides. Die Transceiver haben einen max. Gleichtaktbereich von +12 / -7V und jede Differenz die darüber hinaus geht führt ohne Schutzbeschaltung zu Ausgleichsströmen über Chipsstrukturen wo man mit Sicherheit keine haben will. Differentielle Übertragung hat auch nichts damit zu tun ob die Potentialfrei ist oder nicht. Auf RS485 wird Uart Leitungscode gesprochen, den man erstmal Manchester kodieren müsste, um den gleichspannungsfrei zu bekommen damit man Übertrager zur Potentialtrennung verwenden kann. Icke ®. schrieb: > Im Eingangspost wird explizit erwähnt, daß der > Wandler isoliert ist, also woher soll die schädliche Gleichtaktspannung > an seinen Eingängen kommen? Ohne Masseanschluss sucht sich die Schaltung einen Massebezug über Ausgleichsströme. Der ext. Bus schwebt auch isoliert auf irgendeinem Potential, das sich von dem des Wandlers unterscheidet. Das wird sich ausgleichen und gibt es keine Masse dann gleicht sich das über die Transceiver Anschlüsse aus. Das kann unproblematisch sein oder auch zu Defekten führen. Der beschriebene Wandler bietet eine Masseklemme für RS485 und RS232. Laut Beschreibung ist das aber beides der gleiche GND und damit wird dann die Isolation wieder aufgehoben. Eine Trennung in Prim GND und Sek GND kann ich nicht erkennen. So einen völlig vermurksten Wandler hatte ich schon von einer anderen Fa. Toller teurer Icoupler von AD drin, aber Ein- und Ausgangsmasse übers Gehäuse verbunden. Man fragt sich manchmal ob die Firmen überhaupt wissen was die da zusammenstümpern. @TO: Transceiver auf Empfang hardcoden, A, B, GND verbinden und mitloggen. Zwischen Master und Slave Übertragung wird es einen kurzen Zeitverzug geben. Entweder neue Zeile nach x-ms inaktivität oder Du findest die Startpräambel heraus mit der der Master den/die Slave(s) abfragt. Dann wird es beliebig kompliziert. Ist die Übertragung CRC gesichert oder nur Checksumme oder garnicht. Hat sie immer die gleiche Länge oder hängt das davon ab was übertragen wird? Die Baudrate bekommst Du noch mit dem Oszi raus, indem Du den kürzesten Puls als eine Bitlänge rechnest. 8n1 ist das üblichste aber es gibt auch exotischeres. Das Telegramm zu entschlüsseln kann schnell gehen oder in einer frustrierenden Odysse enden. Versuche so viel wie möglich über die Geräte herauszubekommen die Du belauscht. Oft legen die Hersteller das Protokoll auch offen wenn man denen glaubhaft versichern kann das man in einer professionellen Anwendung ein eigenes Gerät an den Bus bringen muss,
Max schrieb: > Müsste man einen schädlichen Potentialunterschied nicht einfach mit > einem Multimeter messen können? Ja, das würde ich im Zweifelsfall machen, bevor ich Dinge miteinander verbinde, die sich gegenseitig zerstören. > also bis zu welcher Differenz man die GNDs einfach verbindet > und den Strom fließen lässt. Manche Geräte haben ca. 100 Volt auf GND, wegen einem Ableitkondensator im (potentialfreien) Schaltnetzteil. Aber die Stromstärke ist sehr gering, so dass man sie einfach verbinden kann (und sollte). Du könntest die Stromstärke messen:
1 | 100Ω |
2 | GND o---[===]---(A)---o GND |
Wenn die Stromstärke nur wenige mA beträgt kannst du die beiden GND gefahrlos miteinander verbinden. Wenn der Widerstand dabei abfackelt, geht das nicht :-) So oder so darf der GND Versatz nicht höher sein, als was die RS485 Treiber aller Busteilnehmer erlauben. Bei mehr als 7V hast du ein Problem.
Icke ®. schrieb: > Mit dieser unrichtigen Behauptung ignorierst du sowohl die RS485-Spec, > die keine Masseverbindung vorsieht, als auch das Funktionsprinzip eines > Differenzverstärkers. Der Differenzverstärker hat zwei Eingänge A und B. Beide erlauben Spannungen in einem gewissen Bereich relativ zu GND, den du im Datenblatt nachlesen kannst. Wenn der Eingang des Differenzverstärkers einen magnetischen Übertrager hätte (wie bei Ethernet), dann hättest du wirklich keinen direkten Bezug zu GND. Aber auch dann sind Grenzen einzuhalten, nämlich die Isolationsfähigkeit des Übertragers. Wenn der Übertrager nur 1000V verträgt, kannst du da nicht einfach A=5000 Volt und B=50002 Volt anlegen.
Was für ein Gewese um diese simple Aufgabe zu bewältigen. Ich nehme immer ein folgenden Adapter: http://trycom.com.tw/TRP-C08.htm Da ist gar kein GND-bezug vorgesehen. Läuft immer. Dazu HTERM. Fertig.
> Aber entweder holen die sich ihre Masse über die PE Verbindung oder über > eine ziemlich robuste Schutzbeschaltung oder beides. Genau das ist der Punkt den die meisten vergessen. ICh frag mich dann immer wie die damit jemals in der EMV Surge/Burst gemacht haben. Olaf
Jefe schrieb: > Was für ein Gewese um diese simple Aufgabe zu bewältigen. DAU sichere HW, bei der man nichts mehr verstehen muss, weil die HW jeden Fehler verzeiht. >>3000V DC isolated protection. >>Surge protection on RS422/485 data lines. Mit einer robusten Schutzschaltung fliessen die Ausgleichströme nicht über den Transceiver und die Signale werden auf Level geklemmt, die für beide Seiten tolerabel sind.
Max M. schrieb: > RS485 braucht Masse, alles andere ist Wunschdenken. > Das wurde u.a. auch auf MC.net bis zum Erbrechen ausdiskutiert und ist > auch in jedem Transceiver DB nachlesbar, wenn man min/max Werte > interpretieren und Schlussfolgerungen daraus ziehen kann. Auch wenn das millionenmal diskutiert und in der Praxis ebenso oft gemacht wird, die Masse mitzuführen ist weder laut Spec vorgesehen, noch bei vernünftigem Design erforderlich. Aus starkstromtechnischer Sicht verbietet sich das Verbinden von Geräten per Masse ohne Potentialausgleich sogar. > Die Transceiver haben einen max. Gleichtaktbereich von +12 / -7V und > jede Differenz die darüber hinaus geht führt ohne Schutzbeschaltung zu > Ausgleichsströmen über Chipsstrukturen wo man mit Sicherheit keine haben > will. Nochmal, ich rede nicht von 3€-Modulen mit einem MAX485, sondern von ordentlichen Schaltungen. Da heißt, isolierte Transceiver und natürlich Schutzbeschaltungen am Eingang. Wenn ausschließlich solche Geräte am Bus sind, woher sollen dann die schädlichen Spannungen kommen? > Differentielle Übertragung hat auch nichts damit zu tun ob die > Potentialfrei ist oder nicht. > Auf RS485 wird Uart Leitungscode gesprochen, den man erstmal Manchester > kodieren müsste, um den gleichspannungsfrei zu bekommen damit man > Übertrager zur Potentialtrennung verwenden kann. Ich bin mir nicht sicher, ob du den RS485-Bus verstanden hast. Der ist generell nicht gleichspannungsfrei, sondern arbeitet MIT Gleichspannung, die lediglich umgepolt und im Ruhezustand mit Hilfe der BIAS-Widerstände geklemmt wird. Übertrager zur Potentialtrennung der Busleitungen sind IMHO unüblich, isolierte Transceiver arbeiten i.d.R. mit Optokopplern in Richtung periphere Schaltung und nutzen Übertrager nur zur Erzeugung der Betriebsspannung für die isolierte Seite. > Ohne Masseanschluss sucht sich die Schaltung einen Massebezug über > Ausgleichsströme. Der ext. Bus schwebt auch isoliert auf irgendeinem > Potential, das sich von dem des Wandlers unterscheidet. Das wird sich > ausgleichen und gibt es keine Masse dann gleicht sich das über die > Transceiver Anschlüsse aus. Die isolierte Seite des Transceivers, wo der Bus angeschlossen ist, hat keinen Bezug zu Masse, außer über die sehr hohen Isolationswiderstände. Schädliche Ausgleichströme über Masse sind somit nicht möglich. Es muß lediglich sichergestellt sein, daß die zulässige Diffenrenzspannung zwischen A und B nicht überschritten wird. Die kann aber nur von einem anderen Transceiver kommen, nicht von außerhalb.
Stefan ⛄ F. schrieb: > Wenn der Übertrager nur 1000V verträgt, kannst du da > nicht einfach A=5000 Volt und B=50002 Volt anlegen. Super Beispiel. Was meinst du, was mit deinem massemitgeführten Bus in diesem Fall passiert?
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.