NEWS
ModBus Adapter / Registerabfrage
-
Moin zusammen,
ich bin gerade dabei mit dem ModBus Adapter einige Register meines Wasserzählers abzufragen. Es werden Datenpunkte angelegt, jedoch stehen als Werte lediglich Nullen drin:
Über das M-Bus-Gateway kann ich die Datenpunkte korrekt auslesen:
Hier auch nochmal meine ModBus-Konfiguration:
Woran könnte es liegen bzw. was mache ich eventuell falsch? Vielleicht kann mir ja auch jemand sagen welche Einstellungen ich im ModBus Adapter vornehmen muss, um die benötigten Datenpunkte auszulesen.
-
@dillio Bist Du sicher, dass die Werte nicht in Holding Registern vorgehalten werden? Hast Du eine Registerbeschreibung zu dem Teil?
Ich habe den Zähler nicht, aber im Prinzip läuft das eigentlich immer sehr ähnlich ab...Der Adapter hat sich mit dem Zähler verbunden, sprich die beiden oberen Punkte der Instanz sind grün?
-
@dillio Die meisten Wasserzähler haben eine M-Bus Schnittstelle. Das ist kein Modbus. Du schreibst ja auch von einem "M-Bus Gateway" über das du korrekte Daten auslesen konntest. Überprüfe doch noch einmal ob der Zähler auch wirklich eine Modbus Schnittstelle hat. Es gibt aber auch einen M-Bus Adapter.
-
Sorry, ich sehe gerade, dass meine Formulierung tatsächlich etwas schwammig formuliert ist. Daher hole ich etwas aus.
Also, ich habe folgenden Wasserzähler verbaut:
Und folgendes Gateway:
https://www.energie-zaehler.com/epages/61422236.mobile/de_DE/?ObjectID=56680240
Ich habe bereits versucht die Daten über den M-Bus Adapter auszulesen. Hier wurde mir dann im Forum gesagt, dass mein M-Bus Gateway die M-Bus Geräte nur über ModBus auslesen kann. Deswegen versuche ich nun über den ModBus Adapter die Daten auszulesen. Wie gesagt, über das Webinterface liest das Gateway mittels automatischen Scan meinen Wasserzähler erfolgreich aus.
-
@dillio Kannst Du bitte mal die Beschreibung verlinken. Ohne Infos kann ich jedenfalls nichts weiter dazu sagen.
-
@joergh hier ist das Datenblatt:
http://datenblatt.stark-elektronik.de/solvimus/Datenblatt_MBUS-GE80M-IS.pdf
Und hier etwas ausführlicher das Handbuch:
https://www.solvimus.de/wp-content/uploads/2020/06/MBUS_GEM_UG_1.32__1_-2.pdf
-
@dillio Danke. Da steht es in Kapitel 6.2.2 beschrieben:
Im Holding Register Reiter also bspw. entsprechend das Register eintragen und "Poll" nicht vergessen, sonst kommen keine Daten. Ich empfehle erst einmal ein einziges Register zu nehmen und wenn es läuft die anderen sukzessive nacheinander einzutragen, da ModBus die Verbindung bei einer fehlerhaften Angabe eines Wertes gerne abbricht und man dann wieder im Protokoll suchen muss was nicht gepasst hat.
-
@joergh perfekt, das war der entscheidende Hinweis; vielen Dank!!
Somit konnte ich die für mich wichtigsten Datenpunkte abrufen.
Nun versuche ich das gleiche mit einem anderen Gateway. Vielleicht kannst du mir hier auch nochmal helfen. Hier scheinst das anscheinend anders zu funktionieren: HD67044-B2_.pdf
-
@dillio So wie ich das sehe, legt man die Modbus Register hier selber fest. Die M-Bus Register gibt das Gerät vor und man weist dann in den Einstellungen Registeradressen auf dem Modbus zu und fragt diese dann so ab, wie immer.
-
@joergh nun hatte ich endlich mal wieder etwas Zeit mich damit zu beschäftigen. Leider funktioniert es immer noch nicht. Der Adapter wird für 4 Sekunden grün und danach gelb. Gefühlt habe ich schon sämtliche Einstellungen verändert, aber anscheinend noch nicht die passende gefunden. Vielleicht kannst du mir hier nochmal helfen?
So sieht meine Konfiguration auf dem MBus Gerät aus:
Und hier nochmal im Adapter:
-
@dillio sagte in ModBus Adapter / Registerabfrage:
@joergh nun hatte ich endlich mal wieder etwas Zeit mich damit zu beschäftigen. Leider funktioniert es immer noch nicht. Der Adapter wird für 4 Sekunden grün und danach gelb. Gefühlt habe ich schon sämtliche Einstellungen verändert, aber anscheinend noch nicht die passende gefunden. Vielleicht kannst du mir hier nochmal helfen?
So sieht meine Konfiguration auf dem MBus Gerät aus:
Und hier nochmal im Adapter:
Soweit sehe ich keinen Fehler, aber bist Du sicher, dass der nur 2400 baud hat? Die meisten laufen mit 8n1 9600 baud...?
Was sagt denn das Log? Stell doch mal auf Debug um und poste was er meldet wenn er versucht zu ziehen. Ich vermute das Register ist nicht korrekt und deswegen geht er auf gelb, aber mal sehen...
-
@joergh ich habe die Baudrate auf 9600 umgestellt; hat jedoch nichts gebracht. Anbei die Logausgabe:
modbus.0 2022-05-20 17:10:35.999 debug (25979) Closing client on purpose. modbus.0 2022-05-20 17:10:34.998 debug (25979) Cleaning up request fifo. modbus.0 2022-05-20 17:10:34.996 debug (25979) Socket closed with error modbus.0 2022-05-20 17:10:34.983 info (25979) Disconnected from slave xxx.xxx.xxx.xxx modbus.0 2022-05-20 17:10:34.981 debug (25979) Closing client on purpose. modbus.0 2022-05-20 17:10:34.929 warn (25979) Poll error count: 6 code: {"errorCode":131,"exceptionCode":221} modbus.0 2022-05-20 17:10:34.927 debug (25979) Received pdu describes an error. modbus.0 2022-05-20 17:10:34.563 debug (25979) [DevID_0/holdingRegs] Poll address 101 - 1 registers modbus.0 2022-05-20 17:10:34.561 debug (25979) [DevID_0] Poll start --------------------- modbus.0 2022-05-20 17:10:33.510 warn (25979) Poll error count: 5 code: {"errorCode":131,"exceptionCode":221} modbus.0 2022-05-20 17:10:33.508 debug (25979) Received pdu describes an error. modbus.0 2022-05-20 17:10:33.144 debug (25979) [DevID_0/holdingRegs] Poll address 101 - 1 registers modbus.0 2022-05-20 17:10:33.142 debug (25979) [DevID_0] Poll start --------------------- modbus.0 2022-05-20 17:10:32.091 warn (25979) Poll error count: 4 code: {"errorCode":131,"exceptionCode":221} modbus.0 2022-05-20 17:10:32.089 debug (25979) Received pdu describes an error. modbus.0 2022-05-20 17:10:31.725 debug (25979) [DevID_0/holdingRegs] Poll address 101 - 1 registers modbus.0 2022-05-20 17:10:31.724 debug (25979) [DevID_0] Poll start --------------------- modbus.0 2022-05-20 17:10:30.672 warn (25979) Poll error count: 3 code: {"errorCode":131,"exceptionCode":221} modbus.0 2022-05-20 17:10:30.670 debug (25979) Received pdu describes an error. modbus.0 2022-05-20 17:10:30.306 debug (25979) [DevID_0/holdingRegs] Poll address 101 - 1 registers modbus.0 2022-05-20 17:10:30.305 debug (25979) [DevID_0] Poll start --------------------- modbus.0 2022-05-20 17:10:29.252 warn (25979) Poll error count: 2 code: {"errorCode":131,"exceptionCode":221} modbus.0 2022-05-20 17:10:29.250 debug (25979) Received pdu describes an error. modbus.0 2022-05-20 17:10:28.886 debug (25979) [DevID_0/holdingRegs] Poll address 101 - 1 registers modbus.0 2022-05-20 17:10:28.885 debug (25979) [DevID_0] Poll start --------------------- modbus.0 2022-05-20 17:10:27.833 warn (25979) Poll error count: 1 code: {"errorCode":131,"exceptionCode":221} modbus.0 2022-05-20 17:10:27.832 debug (25979) Received pdu describes an error. modbus.0 2022-05-20 17:10:27.462 debug (25979) [DevID_0/holdingRegs] Poll address 101 - 1 registers modbus.0 2022-05-20 17:10:27.462 debug (25979) Initialization of scale factors done! modbus.0 2022-05-20 17:10:27.460 debug (25979) [DevID_0] Poll start --------------------- modbus.0 2022-05-20 17:10:27.459 info (25979) Connected to slave xxx.xxx.xxx.xxx modbus.0 2022-05-20 17:10:26.836 debug (25979) Add holdingRegisters.101_Volume: {"_id":"holdingRegisters.101_Volume","type":"state","common":{"name":"Volume","role":"value","type":"number","read":true,"write":true,"def":0,"unit":"m³"},"na modbus.0 2022-05-20 17:10:26.836 debug (25979) Initialize Objects for holdingRegs: [{"_address":101,"name":"Volume","description":"Volume","unit":"m³","type":"uint16be","len":1,"factor":1,"offset":0,"formula":"","role":"value","room":""," modbus.0 2022-05-20 17:10:26.835 debug (25979) Initialize Objects for inputRegs: [] modbus.0 2022-05-20 17:10:26.835 debug (25979) Initialize Objects for coils: [] modbus.0 2022-05-20 17:10:26.834 debug (25979) Initialize Objects for disInputs: [] modbus.0 2022-05-20 17:10:26.502 info (25979) starting. Version 4.0.4 in /opt/iobroker/node_modules/iobroker.modbus, node: v14.19.3, js-controller: 4.0.23 modbus.0 2022-05-20 17:10:25.848 info (25979) Plugin sentry Sentry Plugin disabled for this process because sending of statistic data is disabled for the system modbus.0 2022-05-20 17:10:25.834 debug (25979) Plugin sentry Initialize Plugin (enabled=true) modbus.0 2022-05-20 17:10:25.624 debug (25979) States create User PubSub Client modbus.0 2022-05-20 17:10:25.623 debug (25979) States create System PubSub Client modbus.0 2022-05-20 17:10:25.559 debug (25979) Objects client initialize lua scripts modbus.0 2022-05-20 17:10:25.407 debug (25979) Objects create User PubSub Client modbus.0 2022-05-20 17:10:25.406 debug (25979) Objects create System PubSub Client modbus.0 2022-05-20 17:10:25.403 debug (25979) Objects client ready ... initialize now
-
@dillio Da ich das alte Log nicht gesehen habe, kann ich nicht beurteilen ob es "nichts gebracht" hat, schliesslich kann es multiple Probleme geben. Jedenfalls sieht das für mich so aus, als ob er sich mit 9600 verbunden hat, aber beim Abfragen des Registers 101 ein Fehler aufgetreten ist.
EDIT: Woher hast Du denn das Register 101?
-
@joergh welches alte Log? Mit der Baudrate 2400 sieht das Log übrigens genauso aus.
Das Register 101 kam aus einer Beispielkonfiguration des Geräts. Ich habe es lediglich im ioBroker angepasst.
-
@dillio Das "alte Log" mit 2400 Baud....wenn es identisch ist, dann kann er sich wohl auch mit 2400 unterhalten...jedenfalls liegt es an Deinen Einstellungen im Gateway würde ich mal sagen...ist halt schwer, wenn man nicht selber damit rumprobieren kann und das Teil noch nie in den Fingern hatte...
-
@joergh ja, das habe ich mir schon fast gedacht. Wie gesagt, gefühlt habe ich schon zig Einstellungen ausprobiert. Leider war die richtige Konfiguration noch nicht dabei und ich weiß auch nicht, was ich genau verändern sollte, damit es endlich klappt...
-
@dillio sagte in ModBus Adapter / Registerabfrage:
@joergh ja, das habe ich mir schon fast gedacht. Wie gesagt, gefühlt habe ich schon zig Einstellungen ausprobiert. Leider war die richtige Konfiguration noch nicht dabei und ich weiß auch nicht, was ich genau verändern sollte, damit es endlich klappt...
Das Teil zeigt alle Birnen grün?
-
@joergh So sieht es aus, nachdem ich den Adapter starte:
Device state blinkt durchgehend grün, M-Bus Comm. und Modbus Comm. blinken mehrfach kurz nach dem Start des Adapters orange, danach leuchtet M-Bus Error.
-
@dillio sagte in ModBus Adapter / Registerabfrage:
@joergh So sieht es aus, nachdem ich den Adapter starte:
Device state blinkt durchgehend grün, M-Bus Comm. und Modbus Comm. blinken mehrfach kurz nach dem Start des Adapters orange, danach leuchtet M-Bus Error.
Ich sehe gerade Du hast ja hier einen Wert von 16 Bit unsigned eingestellt...der Zähler wirft aber laut Beschreibung einen Wert unsigned INT64 (Big Endian) bzw. auf Offset 4-5 einen FLOAT32 (BigEndian) auf den Bus...
Sollte der Zähler umgestellt sein auf das reduzierte Layout, dann ist es am Offset 0 ein FLOAT32 (Big Endian)
64 Bit
-
@joergh Ok, ich habe jetzt lediglich an der Konfiguration im Adapter rumgespielt, jedoch ohne Erfolg. Die Einstellungen im Gerät sind gleich geblieben. Logbuch bleibt auch unverändert.
Wenn ich dich richtig verstanden habe, dann sollte es so aussehen:
bzw so:
Ist das so richtig? Der Adapter bleibt leider weiterhin gelb.