Probleme mit Modbus Binding
Verfasst: 15. Jul 2019 19:32
Hallo!
Normalerweise versuche ich ja mir selbst zu helfen, aber das Thema "Datentypen" scheint mich doch kräftig zu überfordern
Schön das es hier ein Forum gibt, vielleicht kann mir hier ja jemand unter die Arme greifen...
A. Meine Ausgangssituation
1. Hardware:
- Raspberry Pi B3+ mit "RS422/RS485 HAT" (wie ich lesen konnte benutzt der User Peter Aschinger aus diesem Forum die gleiche Kombi)
- Swentibold "EuroAir 250.5" Lüftungsanlage mit Erweiterungsplatine für Modbus
1. Software
- Openhabian 2 (aktuelle, stabile Version)
- als Testprogramm für das Modbus-Protokoll: "Modpoll Modbus Master Simulator" (https://www.modbusdriver.com/modpoll.html)
Ich habe im Internet ein paar Forenbeiträge gefunden, die sich mit dieser Lüftungsanlage und dem Thema "Modbus" befassen. Leider hat wohl bisher niemand dies zu Ende verfolgt.
Gefunden habe ich aber in einem Thread Unterlagen über die Modbus-Register und für die Einstellung der seriellen Schnittstelle.
Mit dem o.a. Testprogramm und der eingerichteten Aufsatzplatine kann ich die Register des Lüftunggerätes einlesen, leider kann ich diese Erkenntnisse nicht erfolgreich auf das Modbus-Binding von OpenHAB übertragen. Ich finde die Vielzahl der Datentypen verwirrend und ich habe auch Probleme die Angaben des Herstellers des Lüftunggerätes mit den Anforderungen/Einstellmöglichkeiten des Bindings zu verknüpfen.
Hier einfach einmal die Herstellerangaben (hoffentlich klappen die Einrückungen einigermaßen):
Supported functions:
Read register (3)
Write register (6)
Read actual value (4)
Request slave ID (17)
Illegal function (all not listed Requests)
Hier exemplarisch ein paar Typen aus dem Register:
Und hier noch exemplarisch zwei Typen aus einer Liste betitelt mit "Actual Values":
Für relevant halte ich die unterschiedlichen Angaben unter "mode" (R, R/W und R/C) und unter "repr"; zu letzterem gibt es vom Hersteller noch eine Angabe:
Wenn ich die o.a. Register mit dem Testprogramm Modpoll auslese, erhalte ich, soweit ich das beurteilen kann, plausible Werte:
Bei den "Actual Values" sieht es dann so aus:
Bei den Temperaturen habe ich das gleiche Problem wie Peter Aschinger, da müssten die ausgegebenen Werte mit 10 multipliziert werden. Aber soweit bin ich leider noch nicht, denn ich bekomme dies einfach nicht auf das Modbus-Binding übertragen. 
Lege ich mit dem Modbus-Binding ein "Thing" in der "PaperUI" an, erhalte ich, egal was ich versuche, ein graues "OFFLINE - CONFIGURATION ERROR". Ich hatte es auch mit den Skripten anderer versuchts, aber da ist das Topfschlagen noch größer.
Vielleicht habe ich als Anfänger bei OpenHAB etwas ganz anderes nicht verstanden, gehe in der falschen Reihenfolge vor? Ist es anhand der Angaben oben überhaupt möglich eine Entscheidung zu treffen, welche Einstellungen für den Datentyp usw. im Modbus-Bindung erfolgen müssen?
Wirklich für jeden Rat dankbar,
Grüße
Ralf
Normalerweise versuche ich ja mir selbst zu helfen, aber das Thema "Datentypen" scheint mich doch kräftig zu überfordern

Schön das es hier ein Forum gibt, vielleicht kann mir hier ja jemand unter die Arme greifen...
A. Meine Ausgangssituation
1. Hardware:
- Raspberry Pi B3+ mit "RS422/RS485 HAT" (wie ich lesen konnte benutzt der User Peter Aschinger aus diesem Forum die gleiche Kombi)
- Swentibold "EuroAir 250.5" Lüftungsanlage mit Erweiterungsplatine für Modbus
1. Software
- Openhabian 2 (aktuelle, stabile Version)
- als Testprogramm für das Modbus-Protokoll: "Modpoll Modbus Master Simulator" (https://www.modbusdriver.com/modpoll.html)
Ich habe im Internet ein paar Forenbeiträge gefunden, die sich mit dieser Lüftungsanlage und dem Thema "Modbus" befassen. Leider hat wohl bisher niemand dies zu Ende verfolgt.
Gefunden habe ich aber in einem Thread Unterlagen über die Modbus-Register und für die Einstellung der seriellen Schnittstelle.
Mit dem o.a. Testprogramm und der eingerichteten Aufsatzplatine kann ich die Register des Lüftunggerätes einlesen, leider kann ich diese Erkenntnisse nicht erfolgreich auf das Modbus-Binding von OpenHAB übertragen. Ich finde die Vielzahl der Datentypen verwirrend und ich habe auch Probleme die Angaben des Herstellers des Lüftunggerätes mit den Anforderungen/Einstellmöglichkeiten des Bindings zu verknüpfen.
Hier einfach einmal die Herstellerangaben (hoffentlich klappen die Einrückungen einigermaßen):
Code: Alles auswählen
Modbus RTU
Communication settings:
9600 Baud
8 data bits
No parity
1 stop bit
Read register (3)
Code: Alles auswählen
Request: Response: Exceptions:
Byte 0 : FC = 0x03 Byte 0 : FC = 0x03 Byte 0 : FC = 0x83
Byte 1-2 : Address Byte 1 : Number of bytes Byte 1 : 0x02 (Illegal Address)
Byte 3-4 : Number Byte 2-n : Values
Code: Alles auswählen
Request: Response: Exceptions:
Byte 0 : FC = 0x06 Byte 0 : FC = 0x06 Byte 0 : FC = 0x86
Byte 1-2 : Address Byte 1 : Address Byte 1 : 0x02 (Illegal Address)
Byte 3-4 : New value Byte 3-4 : New value (Illegal Address)
Code: Alles auswählen
Request: Response: Exceptions:
Byte 0 : FC = 0x04 Byte 0 : FC = 0x04 Byte 0 : FC = 0x84
Byte 1-2 : Address Byte 1 : Number of bytes Byte 1 : 0x02 (Illegal Address)
Byte 3-4 : Number Byte 3-4 : Values
Code: Alles auswählen
Request: Response: Exceptions:
Byte 0 : FC = 0x11 Byte 0 : FC = 0x11 None
Byte 1 : Number of bytes
Byte 2 : Slave ID
Byte 3 : Status
(0=OFF, 0xFF=ON)
Code: Alles auswählen
Example Request: Response: Exceptions:
Byte 0 : FC = 0x02 None Byte 0 : FC = 0x82
Byte 1 : 0x01 (Illegal function)
Code: Alles auswählen
Nummer Description mode repr unit range
0 Type R - 1 = Basis
2 = Bypass
3 = Comfort
1 On/Off R B - 0 = Off
1 = ON
4 Bypass open temp R/W A °C 15.0 ... 30.0
9 Start Taglüftung Monat R/W B min*10 0:00 ... 23:50, OFF
29 Status R C - Bit 0 = Reserved
Bit 1 = Mittel
Bit 2 = Hoch
Bit 3 ... 16 Reserved
40 Fehlerstatus R/C C - Bit 0 = E1
Bit 1 = E2 ...usw
Code: Alles auswählen
Nummer Description mode repr unit range
4 Aussenluft R A °C -30.0 ... 80.0 °C
6 Drehzahl Zufuhr R B rpmx10 0 ... rpm max
Code: Alles auswählen
A = fixed point one decimal
B = whole number
C = bit representation
Code: Alles auswählen
Protocol configuration: Modbus RTU
Slave configuration...: address = 1, start reference = 4 (PDU), count = 1
Communication.........: /dev/ttyS0, 9600, 8, 1, none, t/o 1.00 s, poll rate 1000 ms
Data type.............: 16-bit register, output register table
Code: Alles auswählen
Protocol configuration: Modbus RTU
Slave configuration...: address = 1, start reference = 4 (PDU), count = 1
Communication.........: /dev/ttyS0, 9600, 8, 1, none, t/o 1.00 s, poll rate 1000 ms
Data type.............: 16-bit register, input register table

Lege ich mit dem Modbus-Binding ein "Thing" in der "PaperUI" an, erhalte ich, egal was ich versuche, ein graues "OFFLINE - CONFIGURATION ERROR". Ich hatte es auch mit den Skripten anderer versuchts, aber da ist das Topfschlagen noch größer.
Vielleicht habe ich als Anfänger bei OpenHAB etwas ganz anderes nicht verstanden, gehe in der falschen Reihenfolge vor? Ist es anhand der Angaben oben überhaupt möglich eine Entscheidung zu treffen, welche Einstellungen für den Datentyp usw. im Modbus-Bindung erfolgen müssen?
Wirklich für jeden Rat dankbar,
Grüße
Ralf