Forum: Mikrocontroller und Digitale Elektronik RS 485 abhören und später mit µC loggen


von Max (wurstesser)


Lesenswert?

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.

von Sven L. (sven_rvbg)


Lesenswert?

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.

von Harry L. (mysth)


Lesenswert?

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
von Olaf (Gast)


Lesenswert?

> 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

von Ulf (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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).

von Stefan F. (Gast)


Lesenswert?

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.

von ausge-Gast (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von Max (wurstesser)


Lesenswert?

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.

von Jobst M. (jobstens-de)


Lesenswert?

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

von Olaf (Gast)


Lesenswert?

Es gibt so Bausteine auch mit integrierter Potentialtrennung.
Die werden aber IMHO auch gerade mit Gold aufgewogen.

Olaf

von Icke ®. (49636b65)


Lesenswert?

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.

von Max M. (Gast)


Lesenswert?

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,

von Stefan F. (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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.

von Jefe (Gast)


Lesenswert?

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.

von Olaf (Gast)


Lesenswert?

> 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

von Max M. (Gast)


Lesenswert?

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.

von Icke ®. (49636b65)


Lesenswert?

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.

von Icke ®. (49636b65)


Lesenswert?

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
Noch kein Account? Hier anmelden.