Modbus // Poolsteuerung

Gast #4591303
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!
#4591333
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
Gast #4591341
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.
Gast #4591358
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?
Gast #4591709
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 ...
Gast #4591754
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?
Gast #4591904
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren