NEWS
Modbus adapter
-
So hab ich es eingestellt.
-
Hallo zusammen,
mittlerweile habe ich meine SDM630 einigermaßen stabil laufen. Es fehlen in unregelmäßigen Abständen immer mal wieder 2 Minuten Daten. Nun habe ich von solch einem Moment mal den Log im Debugmode mitgeschnitten.
Vielleicht hat von euch noch einer eine Idee. Ich hab übrigens mittlerweile die Version 3.0.4 laufen.Der Log beinhaltet den Moment wo noch Daten kommen bis zu dem Moment, wo er wohl den Adater komplett neu startet und dann auch wieder Daten kommen.
modbus.0 2020-06-05 17:15:17.317 debug (3203) Poll inputRegs DevID(1) address 334 - 48 bytes modbus.0 2020-06-05 17:15:17.125 debug (3203) Poll inputRegs DevID(1) address 224 - 46 bytes modbus.0 2020-06-05 17:15:17.050 debug (3203) Poll inputRegs DevID(1) address 200 - 8 bytes modbus.0 2020-06-05 17:15:16.984 debug (3203) Poll inputRegs DevID(1) address 100 - 8 bytes modbus.0 2020-06-05 17:15:16.895 debug (3203) Poll inputRegs DevID(1) address 80 - 8 bytes modbus.0 2020-06-05 17:15:16.563 debug (3203) Poll inputRegs DevID(1) address 0 - 80 bytes modbus.0 2020-06-05 17:15:16.558 debug (3203) Poll device 1 modbus.0 2020-06-05 17:15:16.553 info (3203) Connected to slave modbus.0 2020-06-05 17:15:16.525 debug (3203) connect to serial /dev/ttyUSB0 with 9600 modbus.0 2020-06-05 17:15:13.713 info (3203) starting. Version 3.0.0 in /opt/iobroker/node_modules/iobroker.modbus, node: v12.18.0, js-controller: 3.1.4 modbus.0 2020-06-05 17:14:39.180 info (3182) Terminated (NO_ERROR): Without reason modbus.0 2020-06-05 17:14:39.176 info (3182) terminating modbus.0 2020-06-05 17:14:39.168 debug (3182) Cleaning up request fifo. modbus.0 2020-06-05 17:14:39.166 debug (3182) Clearing timeout of the current request. modbus.0 2020-06-05 17:14:39.151 error (3182) Error: Reconnect did not help, restart adapter at pollResult (/opt/iobroker/node_modules/iobroker.modbus/lib/master.js:254:23) at Timeout._onTimeout (/opt/iobroker/node_modules/iobroker modbus.0 2020-06-05 17:14:39.147 error (3182) uncaught exception: Reconnect did not help, restart adapter modbus.0 2020-06-05 17:14:39.139 warn (3182) Poll error count: 13 code: "App Timeout" modbus.0 2020-06-05 17:14:35.407 debug (3182) Poll inputRegs DevID(1) address 0 - 80 bytes modbus.0 2020-06-05 17:14:35.405 debug (3182) Poll device 1 modbus.0 2020-06-05 17:14:35.403 info (3182) Connected to slave modbus.0 2020-06-05 17:14:35.397 debug (3182) connect to serial /dev/ttyUSB0 with 9600 modbus.0 2020-06-05 17:14:33.401 debug (3182) Cleaning up request fifo. modbus.0 2020-06-05 17:14:33.399 debug (3182) Clearing timeout of the current request. modbus.0 2020-06-05 17:14:33.393 info (3182) Disconnected from slave modbus.0 2020-06-05 17:14:33.387 warn (3182) Poll error count: 12 code: "App Timeout" modbus.0 2020-06-05 17:14:28.939 debug (3182) Poll inputRegs DevID(1) address 0 - 80 bytes modbus.0 2020-06-05 17:14:28.937 debug (3182) Poll device 1 modbus.0 2020-06-05 17:14:28.934 info (3182) Connected to slave modbus.0 2020-06-05 17:14:28.928 debug (3182) connect to serial /dev/ttyUSB0 with 9600 modbus.0 2020-06-05 17:14:26.930 debug (3182) Cleaning up request fifo. modbus.0 2020-06-05 17:14:26.928 debug (3182) Clearing timeout of the current request. modbus.0 2020-06-05 17:14:26.923 info (3182) Disconnected from slave modbus.0 2020-06-05 17:14:26.919 warn (3182) Poll error count: 11 code: "App Timeout" modbus.0 2020-06-05 17:14:23.186 debug (3182) Poll inputRegs DevID(1) address 0 - 80 bytes modbus.0 2020-06-05 17:14:23.185 debug (3182) Poll device 1 modbus.0 2020-06-05 17:14:23.182 info (3182) Connected to slave modbus.0 2020-06-05 17:14:23.175 debug (3182) connect to serial /dev/ttyUSB0 with 9600 modbus.0 2020-06-05 17:14:21.178 debug (3182) Cleaning up request fifo. modbus.0 2020-06-05 17:14:21.176 debug (3182) Clearing timeout of the current request. modbus.0 2020-06-05 17:14:21.170 info (3182) Disconnected from slave modbus.0 2020-06-05 17:14:21.167 warn (3182) Poll error count: 10 code: "App Timeout" modbus.0 2020-06-05 17:14:16.719 debug (3182) Poll inputRegs DevID(1) address 0 - 80 bytes modbus.0 2020-06-05 17:14:16.717 debug (3182) Poll device 1 modbus.0 2020-06-05 17:14:16.715 info (3182) Connected to slave modbus.0 2020-06-05 17:14:16.707 debug (3182) connect to serial /dev/ttyUSB0 with 9600 modbus.0 2020-06-05 17:14:14.712 debug (3182) Cleaning up request fifo. modbus.0 2020-06-05 17:14:14.710 debug (3182) Clearing timeout of the current request. modbus.0 2020-06-05 17:14:14.703 info (3182) Disconnected from slave modbus.0 2020-06-05 17:14:14.699 warn (3182) Poll error count: 9 code: "App Timeout" modbus.0 2020-06-05 17:14:10.965 debug (3182) Poll inputRegs DevID(1) address 0 - 80 bytes modbus.0 2020-06-05 17:14:10.964 debug (3182) Poll device 1 modbus.0 2020-06-05 17:14:10.961 info (3182) Connected to slave modbus.0 2020-06-05 17:14:10.955 debug (3182) connect to serial /dev/ttyUSB0 with 9600 modbus.0 2020-06-05 17:14:08.960 debug (3182) Cleaning up request fifo. modbus.0 2020-06-05 17:14:08.958 debug (3182) Clearing timeout of the current request. modbus.0 2020-06-05 17:14:08.950 info (3182) Disconnected from slave modbus.0 2020-06-05 17:14:08.946 warn (3182) Poll error count: 8 code: "App Timeout" modbus.0 2020-06-05 17:14:04.499 debug (3182) Poll inputRegs DevID(1) address 0 - 80 bytes modbus.0 2020-06-05 17:14:04.497 debug (3182) Poll device 1 modbus.0 2020-06-05 17:14:04.495 info (3182) Connected to slave modbus.0 2020-06-05 17:14:04.488 debug (3182) connect to serial /dev/ttyUSB0 with 9600 modbus.0 2020-06-05 17:14:02.491 debug (3182) Cleaning up request fifo. modbus.0 2020-06-05 17:14:02.490 debug (3182) Clearing timeout of the current request. modbus.0 2020-06-05 17:14:02.484 info (3182) Disconnected from slave modbus.0 2020-06-05 17:14:02.481 warn (3182) Poll error count: 7 code: "App Timeout" modbus.0 2020-06-05 17:13:58.745 debug (3182) Poll inputRegs DevID(1) address 0 - 80 bytes modbus.0 2020-06-05 17:13:58.744 debug (3182) Poll device 1 modbus.0 2020-06-05 17:13:58.741 info (3182) Connected to slave modbus.0 2020-06-05 17:13:58.734 debug (3182) connect to serial /dev/ttyUSB0 with 9600 modbus.0 2020-06-05 17:13:56.739 debug (3182) Cleaning up request fifo. modbus.0 2020-06-05 17:13:56.737 debug (3182) Clearing timeout of the current request. modbus.0 2020-06-05 17:13:56.731 info (3182) Disconnected from slave modbus.0 2020-06-05 17:13:56.727 warn (3182) Poll error count: 6 code: "App Timeout" modbus.0 2020-06-05 17:13:52.281 debug (3182) Poll inputRegs DevID(1) address 0 - 80 bytes modbus.0 2020-06-05 17:13:52.279 debug (3182) Poll device 1 modbus.0 2020-06-05 17:13:52.277 info (3182) Connected to slave modbus.0 2020-06-05 17:13:52.271 debug (3182) connect to serial /dev/ttyUSB0 with 9600 modbus.0 2020-06-05 17:13:50.275 debug (3182) Cleaning up request fifo. modbus.0 2020-06-05 17:13:50.274 debug (3182) Clearing timeout of the current request. modbus.0 2020-06-05 17:13:50.269 info (3182) Disconnected from slave modbus.0 2020-06-05 17:13:49.269 warn (3182) Poll error count: 5 code: {"err":"timeout"} modbus.0 2020-06-05 17:13:49.268 error (3182) Request timed out. modbus.0 2020-06-05 17:13:49.266 warn (3182) Error: undefined modbus.0 2020-06-05 17:13:46.526 debug (3182) Poll inputRegs DevID(1) address 0 - 80 bytes modbus.0 2020-06-05 17:13:46.525 debug (3182) Poll device 1 modbus.0 2020-06-05 17:13:45.521 warn (3182) Poll error count: 4 code: "App Timeout" modbus.0 2020-06-05 17:13:39.263 debug (3182) Poll inputRegs DevID(1) address 0 - 80 bytes modbus.0 2020-06-05 17:13:39.261 debug (3182) Poll device 1 modbus.0 2020-06-05 17:13:39.259 info (3182) Connected to slave modbus.0 2020-06-05 17:13:39.253 debug (3182) connect to serial /dev/ttyUSB0 with 9600 modbus.0 2020-06-05 17:13:37.257 debug (3182) Cleaning up request fifo. modbus.0 2020-06-05 17:13:37.255 debug (3182) Clearing timeout of the current request. modbus.0 2020-06-05 17:13:37.249 info (3182) Disconnected from slave modbus.0 2020-06-05 17:13:36.249 warn (3182) Poll error count: 3 code: {"err":"timeout"} modbus.0 2020-06-05 17:13:36.248 error (3182) Request timed out. modbus.0 2020-06-05 17:13:36.247 warn (3182) Error: undefined modbus.0 2020-06-05 17:13:35.320 debug (3182) Poll inputRegs DevID(1) address 0 - 80 bytes modbus.0 2020-06-05 17:13:35.318 debug (3182) Poll device 1 modbus.0 2020-06-05 17:13:34.315 warn (3182) Poll error count: 2 code: "App Timeout" modbus.0 2020-06-05 17:13:26.243 debug (3182) Poll inputRegs DevID(1) address 0 - 80 bytes modbus.0 2020-06-05 17:13:26.242 debug (3182) Poll device 1 modbus.0 2020-06-05 17:13:26.239 info (3182) Connected to slave modbus.0 2020-06-05 17:13:26.231 debug (3182) connect to serial /dev/ttyUSB0 with 9600 modbus.0 2020-06-05 17:13:24.238 debug (3182) Cleaning up request fifo. modbus.0 2020-06-05 17:13:24.236 debug (3182) Clearing timeout of the current request. modbus.0 2020-06-05 17:13:24.227 info (3182) Disconnected from slave modbus.0 2020-06-05 17:13:24.115 debug (3182) Poll inputRegs DevID(1) address 0 - 80 bytes modbus.0 2020-06-05 17:13:24.113 debug (3182) Poll device 1 modbus.0 2020-06-05 17:13:23.223 error (3182) Request timed out. modbus.0 2020-06-05 17:13:23.220 warn (3182) Error: undefined modbus.0 2020-06-05 17:13:23.109 warn (3182) Poll error count: 1 code: "App Timeout" modbus.0 2020-06-05 17:13:13.216 debug (3182) Poll inputRegs DevID(1) address 80 - 8 bytes modbus.0 2020-06-05 17:13:12.907 debug (3182) Poll inputRegs DevID(1) address 0 - 80 bytes modbus.0 2020-06-05 17:13:12.906 debug (3182) Poll device 1 modbus.0 2020-06-05 17:13:11.741 debug (3182) Poll inputRegs DevID(1) address 334 - 48 bytes modbus.0 2020-06-05 17:13:11.561 debug (3182) Poll inputRegs DevID(1) address 224 - 46 bytes modbus.0 2020-06-05 17:13:11.490 debug (3182) Poll inputRegs DevID(1) address 200 - 8 bytes modbus.0 2020-06-05 17:13:11.434 debug (3182) Poll inputRegs DevID(1) address 100 - 8 bytes modbus.0 2020-06-05 17:13:11.376 debug (3182) Poll inputRegs DevID(1) address 80 - 8 bytes modbus.0 2020-06-05 17:13:11.074 debug (3182) Poll inputRegs DevID(1) address 0 - 80 bytes modbus.0 2020-06-05 17:13:11.072 debug (3182) Poll device 1 modbus.0 2020-06-05 17:13:09.910 debug (3182) Poll inputRegs DevID(1) address 334 - 48 bytes modbus.0 2020-06-05 17:13:09.728 debug (3182) Poll inputRegs DevID(1) address 224 - 46 bytes modbus.0 2020-06-05 17:13:09.655 debug (3182) Poll inputRegs DevID(1) address 200 - 8 bytes modbus.0 2020-06-05 17:13:09.598 debug (3182) Poll inputRegs DevID(1) address 100 - 8 bytes modbus.0 2020-06-05 17:13:09.540 debug (3182) Poll inputRegs DevID(1) address 80 - 8 bytes modbus.0 2020-06-05 17:13:09.230 debug (3182) Poll inputRegs DevID(1) address 0 - 80 bytes modbus.0 2020-06-05 17:13:09.228 debug (3182) Poll device 1
-
Edit: Hab eine Verbindung herstellen können. Mit anderem Programm. Wollte nur die richtige Konfiguration wissen und die Kommunikation zwischen Adapter und ESP.
Schöne Grüße
############Hallo Leute,
ich versuche seit Tagen mit meinem NodeMcu esp8266 Board eine Verbindung zu herstellen über ModBus. Leider haut es nicht hin. Habe alles mögliche ausprobiert. Iobroker-Modbus adapter ist Master und NodeMcu als Sk eingestellt.
Eigentlich will ich meine Garage damit steuern mit rs485. Die Garage ist weit weg, mit Wlan ist unmöglich, bricht immer wieder ab. Ich hab mich noch nie mit Modbus befasst. Bin sehr dankbar für alle mögliche Tips oder HinweiseGruss Memo.
Hier ist das Programm mit Arduino-IDE geschrieben für Esp8266.
/* Modbus-Arduino Beispiel - Lampe (Modbus Serial) Copyright by André Sarmento Barbosa http://github.com/andresarmento/modbus-arduino */ #include <ModbusRTU.h> #define SLAVE_ID 1 // Modbus registriert Offsets (0-9999) const int LAMP1_COIL = 100 ; // Verwendete Pins const int ledPin = 0 ; // ModbusSerial Objekt ModbusRTU mb; void setup () { // Modbus Serial konfigurieren (Port, Geschwindigkeit, Byte-Format) Serial.begin(9600, SERIAL_8N1); mb.begin(&Serial); // Setze die Slave ID (1-247) mb.slave(SLAVE_ID); // LEDPin-Modus einstellen pinMode (ledPin, OUTPUT); // LAMP1_COIL-Register hinzufügen - Verwenden Sie addCoil () für digitale Ausgänge mb. addCoil (LAMP1_COIL); } void loop () { // Einmal in loop () aufrufen - alles Magie hier mb. task (); // füge ledPin an das LAMP1_COIL Register an digitalWrite (ledPin, mb. Coil (LAMP1_COIL)); }
Und hier ist mein Steckboard mit NodeMcu
Modbus Konfiguration
Iobroker Log
-
Hallo,
ich bin neu hier und erstmal Danke für den klasse Modbus Adapter!
Ich habe meine Heizung ETA PC40 per Modbus TCP angebunden und kann hier auch mehrere Register auslesen.
Allerdings kann ich nur ca. 10 Register auslesen, wenn ich mehr versuche zu lesen bricht der Modbus zusammen und er wird rot.
Dann immer wieder gelb grün und sofort wieder rot.
Sobald ich die auszulesenden Register reduziere werd der Bus wieder Grün.Ich habe das ganze auch mit Node Red getestet, hier kann ich ohne Probleme wesentlich mehr Register auslesen. Ich habe auch die Zeiten geändert, leider alles ohne Erfolg.
Habt ihr noch einen Rat?Vielen Dank für eure Hilfe.
-
Hallo,
ich nutze auch Node-Red für Modbus. Mit dem Modus Adapter kam ich auf keinen grünen Zweig.
Allerdings klappte es bei Node-Red auch nicht auf Anhieb. Ich musste mehrere USB-RS 485 Adapter probieren, bis endlich einer durchlief. Allerdings klappt es auch mit diesem Stick nicht per Modbus Adapter.
Somit spricht für mich nichts dagegen bei Node-Red zu bleiben.
Wenn der Umbau weitergeht, will ich den Modbus per TCP anbinden. Dann probiere ich es nochmal mit dem Modbus Adapter. Das dauert allerdings noch etwas.
-
Re: Modbus adapter
Hallo Zusammen,
vielen Dank für diesen tollen Adapter
Da ich bei meinem CELSA WECM80-E M das RegSet1 verwende, bin ich leider auch mit Signed 64 bit (Big Endian) Werten konfrontiert.
Leider habe ich im Adapter aber nur Unsigned 64 als Auswahlmöglichkeit gefunden. Oder habe ich da etwas übersehen ?
Falls nicht, könnte man das dann eventuell noch implementieren? Ansonsten müsste ich halt, vor dem weiterverarbeiten der entsprechenden Werte, selbst von UINT64 nach INT64 umwandeln, was aber unschön wäre da in den Objekten dann ja, bei negatieven Werten, riesige Zahlen stehen würden.
Vielen Dank für eure Antworten.
-
Ich antworte mir mal selbst:
doublebe - Double ist wohl der richtige Typ ... habe ich wohl übersehen
Allerdings erhalte ich ich bei Double leider immer 0 zurück. Da mache ich wohl immer noch etwas falsch ... aber was ???
Falls mir jemand auf die Sprünge helfen kann, schon einmal vielen Dank im Voraus.
Hier noch die Definition im Adapter und die entsprechenden Objekte:
definition modbus (2 x gleichen Register mit unterschiedlichem Datentyp):
inhalt der beiden Objekte:
QModMaster
-
Hallo zusammen,
ich habe 2 Instanzen des Modbus-Adapter im Einsatz (1xWechselrichter PV-Anlage, 1x Batteriewechselrichter).
Läuft seit ca. 1 Jahr alles prima.
Habe nach Neuinstallation des gesamten Systems Probleme, deren Ursache (Zeitpunkt/Versionen) ich leider nicht mehr nachvollziehen kann.
Ich berechne den Gesamtverbrauch des Hauses mit:
Alle Werte aus dem Adapter in kWh, da quasi Zählerstände.
Ich ziehe vom PV-Ertrag die Batterieladung und die Netzeinspeisung ab und addiere die Batteieentladung und den Netzbezug auf.
Funktioniert auch tadellos.
Der Adapter setzt die Werte für PV-Ertrag, Batterie(ent-)ladung um Mitternacht auf "0", weshalb meine Berechnung durcheinanderkommt.
PV-Ertrag:
Batterieladung:
Batterie-Entladung:
Die "0"-Werte machen ja bei dem "Zählerstand" keinen Sinn. Kann ich in den Einstellungen des Adapters verhindern, dass die "0"-Werte geschrieben werden?
Viele Grüße
onkel-ede -
Ich habe es erstmal so gelöst, indem ich eigene Datenpunkte angelegt habe, in die ich die Werte bereinigt schreibe. Also wenn Wert > 0, dann schriebe in Datenpunkt.
Mit diesen Datenpunkten berechne ich dann den Gesamtverbrauch des Hauses. -
@Umsteiger Hast du dein Gerät irgendwie mit dem Modbusadapter ansprechen können? Mein Gerät akzeptiert immer noch keine Werte. Es kann definitiv nur etwas mit FC16 anfangen.
EDIT: Habe einen weg gefunden: https://github.com/ioBroker/ioBroker.modbus/issues/54
Wenn man in der master.js (Version 3.1.4) die Zeile:if (objects[id].native.len > 1 && !options.config.doNotUseWriteMultipleRegisters) {
auskommentiert bzw. löscht und stattdessen:
if ( !options.config.doNotUseWriteMultipleRegisters) {
nutzt, funktioniert es mit dem Schreiben eines Wertes.
-
Servus zusammen,
weiß nicht ob das Problem schon mal angesprochen wurde, aber bei mir stehen in den Objekten andere ID´s als im Eingangsregister des Adapters.
Jemand eine Idee woran das liegen kann?!EDIT: Problem gefunden bzw. Logik. In den Objekten wird jede ID eine Stufe tiefer erstellt!!
Aus 30002 wird dann 30001. Wtf?!PS: wenn ich die Werte im Eingangsregister eintrage, übernimmt er die Nummern auch nicht, sondern zählt fortlaufend weiter...
-
@Habedere
Ich habe eine neue Heizung bekommen die ich nun einbinden wollte, da dachte das ist ja einfach es gibt ja schon einen Adapter. Den ganzen Tag probiere ich es.
Mit ModBus Scanner die Adressen ausgelesen ob die laut Hersteller auch stimmen. Klappte auch ohne Probleme, nur im Adapter lief das nicht. Bis mir eben aufgefallen ist, dass wenn man den Adapter STOPPT und die Werte nun ändert und danach den Adapter wieder aktiviert, läuft alles wie es soll und der liest auch die richtigen Werte aus von der richtigen Adresse. -
@oliver2017 Danke, gut zu wissen.
-
@oliver2017 sagte in Modbus adapter:
@Habedere
Ich habe eine neue Heizung bekommen die ich nun einbinden wollte, da dachte das ist ja einfach es gibt ja schon einen Adapter. Den ganzen Tag probiere ich es.
Mit ModBus Scanner die Adressen ausgelesen ob die laut Hersteller auch stimmen. Klappte auch ohne Probleme, nur im Adapter lief das nicht. Bis mir eben aufgefallen ist, dass wenn man den Adapter STOPPT und die Werte nun ändert und danach den Adapter wieder aktiviert, läuft alles wie es soll und der liest auch die richtigen Werte aus von der richtigen Adresse.Hmm aber der Adapter macht ja automatisch einen restart wenn man etwas ändert oder?
-
Hallo,
möglich, dass die Pause beim Neustart nicht reicht, um den Modbus in einen definierten | stabilen Zustand zu bekommen.
-
Hi
Hat schon mal wer die Verbindung zum CMI von TA geschafft? Mit einer Slave App lässt sich das cmi problemlos erreichen, mit ioBroker bekomm ich keine Verbindung... Ideen?Die Einstellung Master im Adapter... heißt das, dass der Adapter Master ist oder ist es dann der Partner?
-
Ich nutze Modbus über NodeRed. Den Modbus-Adapter habe ich mit unserem Zähler nicht zum Laufen bekommen. Frage ich den Zähler zu schnell ab, scheint sich was zu verschlucken. Daher habe ich Pausen eingefügt:
-
-
Hi, danke für die Tips, hab das probiert aber leider ohne Erfolg ...
ich bekomme folgende Logs: (mit Adresse 0.0.0.0 und mit der IP des CMI)
kann wer was damit anfangen?
UPDATE: geht wohl um Port 502 ... bei 5020 funkts ...
-
Hallo zusammen,
ich habe mir einen SDM230 gekauft, um mit dem Todbus-Adapter die Daten auszulesen. Ich haben den IObroker auf einem RaspberryPi4, welcher per USB einen RS485-Adapter hat. Ich bekomme den Modbus-Adapter auf "Gründ" und es kommen auch werte. Nur habe ich leider keine Ahnung, wie ich die Register einstelle.
Hat zufällig einer von den SDM230 und kann mir weiter helfen?
Danke schon mal