Probleme mit Modbus Binding

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

AnderOstsee
Beiträge: 24
Registriert: 15. Jul 2019 17:08
Answers: 0

Probleme mit Modbus Binding

Beitrag von AnderOstsee »

Hallo!
Normalerweise versuche ich ja mir selbst zu helfen, aber das Thema "Datentypen" scheint mich doch kräftig zu überfordern :mrgreen:
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
Supported functions:
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
Write register (6)

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)
Read actual value (4)

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
Request slave ID (17)

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)
Illegal function (all not listed Requests)

Code: Alles auswählen

Example Request:				Response:				Exceptions:
Byte 0 : FC = 0x02			None					Byte 0 : FC = 0x82
										Byte 1 : 0x01 (Illegal function)
Hier exemplarisch ein paar Typen aus dem Register:

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
Und hier noch exemplarisch zwei Typen aus einer Liste betitelt mit "Actual Values":

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
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:

Code: Alles auswählen

A = fixed point one decimal
B = whole number
C = bit representation
Wenn ich die o.a. Register mit dem Testprogramm Modpoll auslese, erhalte ich, soweit ich das beurteilen kann, plausible Werte:

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
Bei den "Actual Values" sieht es dann so aus:

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
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. :evil:
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

AnderOstsee
Beiträge: 24
Registriert: 15. Jul 2019 17:08
Answers: 0

Re: Probleme mit Modbus Binding

Beitrag von AnderOstsee »

Hallo,
jetzt habe ich einmal über die PaperUI nur einen "Regular Poll" in der Modbus-Binding eingerichtet, die Fehlermedlung lautet:

Code: Alles auswählen

2019-07-15 21:00:53.844 [ERROR] [et.wimpi.modbus.net.SerialConnection] - open port failed: gnu.io.PortInUseException: Modbus Serial Master

2019-07-15 21:00:53.851 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - connect try 1/1 error: open port failed: Modbus Serial Master. Connection SerialConnection@5a20ff[portName=/dev/ttyS0,port=<null>]. Endpoint ModbusSerialSlaveEndpoint@1e6b33[portName=/dev/ttyS0]

2019-07-15 21:00:53.856 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - re-connect reached max tries 1, throwing last error: open port failed: Modbus Serial Master. Connection SerialConnection@5a20ff[portName=/dev/ttyS0,port=<null>]. Endpoint ModbusSerialSlaveEndpoint@1e6b33[portName=/dev/ttyS0]

2019-07-15 21:00:53.861 [ERROR] [ing.ModbusSlaveConnectionFactoryImpl] - Error connecting connection SerialConnection@5a20ff[portName=/dev/ttyS0,port=<null>] for endpoint ModbusSerialSlaveEndpoint@1e6b33[portName=/dev/ttyS0]: open port failed: Modbus Serial Master

2019-07-15 21:00:53.866 [WARN ] [rt.modbus.internal.ModbusManagerImpl] - Could not connect to endpoint ModbusSerialSlaveEndpoint@1e6b33[portName=/dev/ttyS0] -- aborting request ModbusPollerThingHandlerImpl.ModbusPollerReadRequest@eeeb2c[slaveId=1,functionCode=READ_INPUT_DISCRETES,start=0,length=1,maxTries=3] [operation ID f6f9a367-1f40-464f-882e-5031dc0765e0]
Kann damit eventuell jemand etwas anfangen?

grüße
Ralf

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Probleme mit Modbus Binding

Beitrag von PeterA »

Hi Ralf,
das bekommen wir schon zusammen hin 😜
Als erstes: Hast Du das HAT genauso eingerichtet wie es der Hersteller schreibt? Damit wird der interne UART des Raspi für das HAT freigegeben.
Des wegen bekommst Du wahrscheinlich die Fehlermeldung...
Ich hab da auch sehr lange rumgefrickelt.
Hier ist übrigens der Link zum original Thread im englischen Forum:
https://community.openhab.org/t/solved- ... ing/65543
Das zeigt den "Werdegang" ganz gut 😜

Gibt es eine ModBus Adressliste von deiner Anlage?

Gruß Peter
- OpenHab 2.4
#PWRUP

AnderOstsee
Beiträge: 24
Registriert: 15. Jul 2019 17:08
Answers: 0

Re: Probleme mit Modbus Binding

Beitrag von AnderOstsee »

Hallo Peter,
hatte ja gehofft das Du das hier liest :)
Bei der Aufsteckplatine hatte ich mich eigentlich sklavisch an die Anleitung gehalten, die LED blinkt auch beim Zugriff usw., aber ich kann das ja morgen Abend noch einmal überprüfen. Was mir dabei gerade einfällt: Kann das Deconz-Bindung da eventuell stören? Ich warte noch auf den Zigbee-USB-Stick von Dresden-Elektronik und hatte schon einmal das Bindung installiert. Auch da werde ich noch einmal schauen.
DIe Berechtigungen für "/dev/ttyS0" stimmen, das habe ich zwischenzeitlich noch einmal geprüft.
Eine Modbus-Adressliste gibt es als eingescannte PDFs u.a. im Homematic-Forum: https://homematic-forum.de/forum/downlo ... ee352328af. Falls der direkte Download der Zip-Datei nicht klappen sollte, hier noch der Link in den Thread: https://homematic-forum.de/forum/viewtopic.php?t=11781. Es haben sich da und auch woanders wohl einige versucht (und aufgegeben?).
Aber eigentlich hatte ich ja mühsam die meiner Meinung nach interessanten Punkte oben zusammengebastelt :D
Deinen Thread werde ich mir auch noch durchlesen, den kannte ich noch nicht.

Danke und Gute Nacht,

Ralf

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Probleme mit Modbus Binding

Beitrag von PeterA »

Ralf, du hast eine PN von mir ...
- OpenHab 2.4
#PWRUP

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Probleme mit Modbus Binding

Beitrag von PeterA »

So kann das in der Sitemap aussehen:
Screenshot_20190716-151457.png
Screenshot_20190716-151439.png
- OpenHab 2.4
#PWRUP

AnderOstsee
Beiträge: 24
Registriert: 15. Jul 2019 17:08
Answers: 0

Re: Probleme mit Modbus Binding

Beitrag von AnderOstsee »

Hallo Peter, Hallo Forum!
Sieht sehr gut aus (DaumenHochSmiley)!
Dank deines verlinkten Threads konnte ich inzwischen "prinzipiell Werte" meiner Lüftungsanlage auslesen (Temperaturen, Schaltzeiten), das hat zum Verständnis wirklich extrem geholfen.
Da werden sicher noch einige Fragen auftauchen, wie z.B. Zugriff auf die Fehlercodes ("bitweise" :o ) oder vor allem bei der Verarbeitung der Daten. Bei dem Gerät werden u.a. die Schaltzeiten für Tag- und Nachtlüftung für jeden Wochentag einzeln eingestellt, es gibt also keine Möglichkeit, dies nach Werktagen und Wochenende zu sortieren. Nicht sehr praktisch. Dazu werden die Schaltzeiten in Zehnminuten-Schritten verarbeitet, dies muss natürlich bei der Anzeige und Neueingabe berücksichtigt werden. Ein Wert wie 1260 (--> 21:00 Uhr) ist ja für Nichtmathematiker auch ein wenig sperrig :D . Oder es fehlt ein "Partymodus" um mal für eine kurze Zeit die Lüftungsanlage auf höchster Stufe zu schalten und diese danach wieder in ihr Normalprogramm zurückfällt.
Also Ideen sind ausreichend vorhanden, Zeit gerade nicht so übermäßig. Aber das kennt wohl jeder.
Ich werde also Schritt für Schritt vorangehen und hier bei Bedarf nachfragen.

Vielen Dank

Ralf

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Probleme mit Modbus Binding

Beitrag von PeterA »

Hi Ralf,
Ja bei meiner Westaflex gibt es auch einen haufen Register für den Timer.
Das braucht Du mit OpenHab aber eigentlich nicht mehr.
Denn Du kannst dir mit TimeCron oder CalDav auch eine Art Zeitschaltuhr bauen.
Und die Partyfunktion bzw Boost bzw Lüfter auf 100% könnte man mit dem ExpireBinding lösen....
- OpenHab 2.4
#PWRUP

AnderOstsee
Beiträge: 24
Registriert: 15. Jul 2019 17:08
Answers: 0

Re: Probleme mit Modbus Binding

Beitrag von AnderOstsee »

Hallo Peter,
habe mich die letzten Tage nicht weiter mit dem Thema "Modbus" beschäftigen können, also hat sich da noch nichts weiter getan.
Natürlich hast du Recht mit den Timern, das war ein Gedankenfehler von mir ;)

Grüße

Ralf

Peter H
Beiträge: 5
Registriert: 4. Okt 2019 18:42
Answers: 0

Re: Probleme mit Modbus Binding

Beitrag von Peter H »

Hallo AnderOstsee,
ich versuche seit einiger Zeit eine Modbusverbindung zum Lüftungsgerät Euroair zu erstellen - ohne Erfolg.
Bist du inzwischen erfolgreich gewesen?
Welche Zusatzplatine verwendest du? Genügt es nicht, den RS485 Ausgang des Geräts zu verwenden, an dem die exteren Bedieneinheit angeschlossen wird?
Die Dokumentation von Swentibold mit den Registern habe ich. Nicht klar ist mir, wie die Slave ID lautet. Darin steht etwas von Slave ID 180. Ich habe es damit und mit 1 probiert, aber das Gerät gibt immer nur 5 Bytes zurück, die meine Modbus Software (QModMaster) nicht interpretieren kann.
Für Tips wäre ich sehr dankbar.
Gruß
Peter H

Antworten