Forum: Mikrocontroller und Digitale Elektronik RS485 - ich verzweifle


von Michael R. (Firma: Brainit GmbH) (fisa)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

meine Wärmepumpe spricht Modbus über RS485, und ich versuche verzweifelt 
mit ihr zu sprechen.

Eigentlich wäre der Plan, das über einen RS485-LAN-Adapter 
https://www.waveshare.com/wiki/RS485_TO_POE_ETH_(B) zu erledigen, 
welcher auch in der Lage ist Modbus-RTU in -TCP zu übersetzen, aber ich 
bekomme keine Kommunikation hin, bzw. keine Antwort.

Daraufhin habe ich mir einen (billigen) RS485-USB-Adapter besorgt, damit 
funktioniert es. Aber ich habe kein USB in meinem E-Verteiler.

Heute hab ich das mit dem Oszi beobachtet, und bin auf was seltsames 
gestoßen...

NewFile0.png ist ein Bild vom funktionierenden USB-Adapter... mit etwas 
Phantasie erkenne ich das erste Wort, die SlaveId 2 (Startbit, 0, 1, 0, 
...)

Wenn ich das gleiche mit dem WaveShare mache, sieht das zwar ähnlich 
aus, aber ich habe vor dem Startbit ein "halbes" Bit "high" 
(NewFile4.png)

Ich kann nur vermuten dass dieser "Artefakt" die Kommunikation stört...

Oder ist das irgendeine Einstellung? Verstehe ich was falsch?

Ich wäre für jeden Hinweis dankbar...

von Jochen S. (jochen_s)


Lesenswert?

Könnte es sein, dass entweder Masse nicht mitgenommen wurde, oder die 
Terminierung des Busses nicht passt?

In Summe müssen 60 Ohm raus kommen,beide Enden mit 120 Ohm.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Masse ist dabei (sollte aber keinen Unterschied machen), Terminierung 
zumindest einseitig (aber mein "Testaufbau" hat <100cm Leitung)

Was ich auch witzig finde: die Pegel des Waveshare sind "sauber", 
während der USB-Adapter das eher dreckig macht... trotzdem funktioniert 
das USB-Klump und das andere nicht :-(

von Falk B. (falk)


Lesenswert?

Anschlüsse A/B vertauscht?

von Monk (roehrmond)


Lesenswert?

Wie genau hast du das Oszilloskop an die Leitung angeschlossen?
Hast du einen 1:1 Tastkopf verwendet, oder einen anderen?

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

@Falk

Nö... deswegen Oszi :-)

Außerdem - frag nicht wie oft ich die schon gedreht habe...

PS nett wenn das USB-Viech die Anschlüsse als A+ und B- bezeichnet :-)

: Bearbeitet durch User
von Georg G. (df2au)


Lesenswert?

Michael R. schrieb:
> Masse ist dabei (sollte aber keinen Unterschied machen)

Ohne Masse spielst du Lotto.

von Wolf17 (wolf17)


Lesenswert?

Kann man beim LAN Adapter oder der WP das Protokoll verstellen? 
Wikipedia:

"Im Gegensatz zu anderen Bussen sind bei EIA-485 nur die elektrischen 
Schnittstellenbedingungen definiert. Das Protokoll kann 
anwendungsspezifisch gewählt werden. Deshalb werden sich EIA-485-Geräte 
unterschiedlicher Applikationen oder Hersteller im Allgemeinen nicht 
verstehen. "

von Monk (roehrmond)


Lesenswert?

Wie genau hast du das Oszilloskop an die Leitung angeschlossen?

Das rechte Bild zeigt +/- 4V Pegel. Daraus schließe ich, dass du die 
Spitze des Tastkopfes an A angeschlossen hast und den Ring an B. Dabei 
bestand wohl eine galvanische Trennung zwischen der Masse vom 
Oszilloskop und der gemessenen Schaltung.

Beim ersten Impuls liegt A auf 4V und B auf 0V.
Beim zweiten Impuls liegt A auf 0V und B auf 4V.

Im Linken Bild sehe ich einseitigen Hub um ca 3,5 Volt. Das lässt sich 
so erklären: Die Erdung vom PC und Oszilloskop sind durch die Steckdose 
miteinander verbunden. Deswegen hast du den Anschluss B effektiv kurz 
geschlossen. Du siehst hier nur noch das Signal von A, das zwischen 0 
und 3,5V pendelt.

Wenn du den Kurzschluss entfernst, also nur eine der Beiden Leitungen 
(A/B) gegen GND misst, bekommst du bestimmt ein viel schöneres Bild.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

a) ich bin so blöd!

b) ich bin so blöd!

ad a) Wenn man schon extra den Trenntrafo rausräumt, um das Oszi 
potentialfrei zu betreiben, so ist es ggf. hilfreich, das Oszi auch am 
Trenntrafo anzustecken, und nicht parallel dazu an der normalen 
Schuko-Dose (ist euch sicher noch nie passiert, oder?)

b) wenn meine Wärmepumpe ~70 msec braucht, um auf ein Modbus-Kommando zu 
reagieren, dann ist es ggf. hilfreich, das "instruction timeout" am 
Modbus-Gateway auf >70 msec einzustellen...

Danke euch trotzdem, und "sorry for the noise"

: Bearbeitet durch User
von Monk (roehrmond)


Lesenswert?

Für die Nummer mit dem Trenntrafo: 🤦

von Falk B. (falk)


Lesenswert?

Michael R. schrieb:
> ad a) Wenn man schon extra den Trenntrafo rausräumt, um das Oszi
> potentialfrei zu betreiben, so ist es ggf. hilfreich, das Oszi auch am
> Trenntrafo anzustecken, und nicht parallel dazu an der normalen
> Schuko-Dose (ist euch sicher noch nie passiert, oder?)

Tja, das Oszi potentialfrei zu betreiben ist in den allermeisten Fällen 
weder sinnvoll noch empfehlenswert. Entweder gleich richtig mit einem 
Differenztastkopf messen oder mit zwei Kanälen gegen normale Masse mit 
Differenzbildung im Oszi. Ist nicht perfekt, reicht aber meistens.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Falk B. schrieb:
> Tja, das Oszi potentialfrei zu betreiben ist in den allermeisten Fällen
> weder sinnvoll noch empfehlenswert.

Da hast du sicher recht. Ein Diff-Tastkop steht seit gefühlt 10 Jahren 
auf meiner Wunschliste (aber leider brauch ich mein Oszi zu selten, 
leider berufsbedingt wenig Zeit für mein Hobby)

Ich sollte das aber vielleicht zum Anlass nehmen... Empfehlungen (die a) 
leistbar und b) zu meinem eher Billig-Oszi Rigol DS1052E passen?)

Falk B. schrieb:
> Differenzbildung im Oszi
boah... muss mal nachsehen ob meins das kann...

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

Offensichtlich gibts noch ein Folgeproblem :-(
1
lizard:~/SmartPV/RS485 # mbpoll x2.reinelt.local -a 2 -0 -r 200 -c 1 -t 4:int -B -v -l 10000
2
3
Connecting to [x2.reinelt.local]:502
4
5
-- Polling slave 2... Ctrl-C to stop)
6
[00][01][00][00][00][06][02][03][00][C8][00][02]
7
Waiting for a confirmation...
8
<00><02><00><00><00><07><02><03><04><00><00><55><7A>
9
Invalid transaction ID received 0x2 (not 0x1)
10
Read output (holding) register failed: Invalid data

Das dürfte aber ein Fehler meines Gateways sein (wenigstens war er 
billig)

Mal sehen ob ich das (Modbus in Perl) hinbekomme...

von Falk B. (falk)


Lesenswert?

Michael R. schrieb:
> Ich sollte das aber vielleicht zum Anlass nehmen... Empfehlungen (die a)
> leistbar und b) zu meinem eher Billig-Oszi Rigol DS1052E passen?)

Naja, die billigsten fangen bei 200 Euro an, fast so teuer wie ein 
Billigoszi.

> Falk B. schrieb:
>> Differenzbildung im Oszi
> boah... muss mal nachsehen ob meins das kann...

Bei mir steht das Gleiche, der MATH Kanal kann A+B, A-B, AxB und FFT.

von Purzel H. (hacky)


Lesenswert?

Allenfalls goennt man sich eben einen isolierenden RS485-TTL konverter 
fuer das Oszilloskop.

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


Lesenswert?

Purzel H. schrieb:
> Allenfalls goennt man sich eben einen isolierenden RS485-TTL konverter
> fuer das Oszilloskop.
Wofür dann ein Oszilloskop, wenn ich die analogen Originalsignale nicht 
mehr sehe, sondern nur ein digitales Abbild davon?

Bestenfalls ein Differenztastkopf könnte da noch brauchbar sein und z.B. 
Buskollisionen (zwei Sender gleichzeitig aktiv) anzeigen.

So richtig sinnvoll ist beim RS485 aber eigentlich vorrangig die Messung 
von A und B mit den "Masseklemmen" direkt am Massepin des Transceivers. 
Denn dann sieht man, ob die Werte und Pegel eingehalten werden, die im 
Datenblatt des Transceivers für eine verlässliche Funktion gefordert 
sind.

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.