Forum: Mikrocontroller und Digitale Elektronik Modbus // Poolsteuerung


von Michael (Gast)


Lesenswert?

Guten Abend!

Ich habe gerade in unserem Garten einen Pool gebaut und eine Steuerung 
von OSPA verbaut. Die Steuerung lässt sich per Modbus auslesen und das 
habe ich gerade vor.

Der Raspberry Pi ist über einen RS485 Adapter an die Modbus 
Schnittstelle (ebenfalls laut Doku RS485) angeschlossen. An der 
Steuerung mit 120 Ohm abgeschlossen und am Raspberry auch. Beide Geräte 
sind auf 19200 Baud, 8 N 1 eingestellt.

Jetzt sende ich ein Kommando, um ein Register auszulesen, ich kriege 
aber von der Steuerung keinerlei Reaktion. Daher dachte ich schon, es 
liegt evtl. an der Baudrate o.ä.

Habe das Signal mit einem Oszi angeschaut. Bitdauer sind 53us, 8 Bytes 
dauern ca. 4,1 ms. Das stimmt alles m.E. mit der Baudrate überein. Auch 
das Telegramm habe ich mir Bit für Bit angeschaut und es stimmt mit dem 
per Software gesendeten Telegramm überein.

Ich übertrage:
0x01 = Slave Adresse
0x04 = Read Input Register
0x00
0x03 = Adresse
0x00
0x01 = Anzahl der zu lesenden Register
0xC1 = CRC
0xCA = CRC

Ich würde - zumindest - eine Fehlernachricht oder ähnliches erwarten, 
erhalte aber überhaupt nichts. Bevor ich jetzt an die Herstellerfirma 
herantrete möchte ich zunächst eigene Fehlerquellen ausschließen.

Irgendeine Idee, woran es noch haken könnte?
Vielen Dank für euren Input!

von Dieter W. (dds5)


Lesenswert?

Es könnte sein, dass ein Vertauschen der Adern A und B Abhilfe schafft.

von Michael (Gast)


Lesenswert?

Auf einer Seite? Ich habe natürlich A mit A und B mit B verkabelt ...

von U. M. (oeletronika)


Lesenswert?

Hallo,
> Michael schrieb:
> Auf einer Seite? Ich habe natürlich A mit A und B mit B verkabelt
> ...
das wäre an sich so ok, aber leider gibt es da keinen richtigen Standard 
bezüglich der Bezeichnungen und Anschlüsse.
Also im Zweifelfall doch einfach mal auf einer Seite tauschen.

Die andere Sache ist die Frage, wer Master und wer Slave ist.
Die Steuerung sollte aber doch Slave sein.

Und bevor du an die Fa. Fragen schickst, hast du eine Softwaredoku dazu 
herunter geladen oder ein Programm zum testen oder zumindest ein 
Telegramm, dass zum testen dienen kann, z.B. per terminalprog.?
Probiere es doch auch mal mit PC und einem Modbus-Tool z.B. "ModPoll"
Gruß Öletronika

: Bearbeitet durch User
von Michael (Gast)


Lesenswert?

Beide Leitungen zu tauschen werde ich morgen mal probieren.

Die Doku des Herstellers sagt:
  M-Bus A entspricht Data +
  M-Bus B entspricht Data -

Am Raspberry Pi ist ein MAX481 verbaut. Im Datenblatt ist A = 
Noninverting und B = Inverting. Sollte doch dann eigentlich passen, 
oder?

Master ist der Raspberry Pi, Slave die Steuerung. In der Steuerung ist 
die Modbus-Adresse auf "1" eingestellt.

Die Doku zum Modbus habe ich mir von der Herstellerfirma besorgt und 
mehrfach durchgearbeitet. Im Raspberry Pi verwende ich die libmodbus. 
Das versendete Telegramm stimmt mit meinen Überlegungen überein. Über 
den PC kann ich es im Moment nicht testen, weil ich hierfür keinen 
Adapter habe.

von Falko Jahn (Gast)


Lesenswert?

Hallo,
Schau mal ob es nicht "E" statt "N" ist. Bei Modus ist oft even als 
Standard  (So auch bei unseren Geräten...)

von Michael (Gast)


Lesenswert?

Du hast Recht, das war der Standard. Ich habe es aber in der Steuerung 
auf 8 N 1 umgestellt.

Den Raspberry Pi und die Steuerung habe nicht noch mit GND verbunden. 
Ich nehme an, das sollte passen, oder?

von Falko Jahn (Gast)


Lesenswert?

GND sollte verbunden sein...

von Michael (Gast)


Lesenswert?

Gut - habe ich gemacht ...

Werde morgen mal A und B testweise tauschen, auch wenn ich mir nur wenig 
Hoffnung mache.

von Falko Jahn (Gast)


Lesenswert?

PS: Die Steuerung ist nicht zufällig im ASCII Modus? Hast du den Tipp 
Modus Poll ausprobiert?

von Michael (Gast)


Lesenswert?

Nein - die Steuerung ist im RTU Modus.

Du meinst Modbus Poll? Mangels RS485 Adapter kann ich das leider gerade 
nicht probieren.

von Falko Jahn (Gast)


Lesenswert?

Ups, ja das meinte ich. Du solltest dir so ein Konverter zu legen... 
echt praktisch... Ich geh jetzt schlafen. Gute Nacht :-)

von Michael (Gast)


Lesenswert?

Leider hat auch das Vertauschen von A und B keinerlei Änderung gebracht.

Habe in der Steuerung Auch die Adresse mal auf 2 gestellt und die 
Parität auf Even (natürlich im Raspi angepasst). Keinerlei Reaktion ...

von Michael (Gast)


Angehängte Dateien:

Lesenswert?

Beigefügt noch die Bilder des Telegramms mit 19200 8 N 1 von meinem 
Oszi, gemessen zwischen A und B.

Vielleicht kann sich das mal jemand anschauen, der mit dem Modbus 
Protokoll schon gearbeitet hat.

von Wolfgang (Gast)


Lesenswert?

Michael schrieb:
> Am Raspberry Pi ist ein MAX481 verbaut. Im Datenblatt ist A =
> Noninverting und B = Inverting. Sollte doch dann eigentlich passen,
> oder?

Und die Richtungsumschaltung für den Treiber machst du wie?

von Michael (Gast)


Lesenswert?

Wolfgang schrieb:
> Michael schrieb:
>> Am Raspberry Pi ist ein MAX481 verbaut. Im Datenblatt ist A =
>> Noninverting und B = Inverting. Sollte doch dann eigentlich passen,
>> oder?
>
> Und die Richtungsumschaltung für den Treiber machst du wie?

Macht das Interface automatisch, sobald Daten gesendet werden.

von Michael (Gast)


Lesenswert?

Kann es sein, dass die Spannungsdifferenz zwischen A und B zu gering 
ist? Ich messe laut Oszi knappe 1,5V.

Ich habe auf beiden Seiten nur einen 120 Ohm Abschlusswiderstand 
verbaut, den Bus aber nicht mit BIAS Widerständen vorgespannt. Wie muss 
das richtigerweise aussehen?

von Michael (Gast)


Lesenswert?

Mir ist aufgefallen, dass die Spannungsdifferenz zwischen A und B im 
Ruhepegel und bei logisch 1 nahezu 0 V beträgt (ca. 100 mV).

Jetzt habe ich den Bus A mit 240 Ohm gegen 5V und B mit 240 Ohm gegen 
GND vorgespannt. Die Spannungsdifferenz bei logisch 1 beträgt jetzt ca. 
0,6 V, bei logisch 0 -1V.

Das sollte doch jetzt passen, oder?

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.