NEWS
Probleme mit dem Modbus Adapter, oder doch der Hardware?
-
Hallo,
ich lese zwei Geräte mit dem Modbus-Adapter (Fronius WR und Elgris Zähler) aus.
Von beiden Geräten lese ich alle 5 Sekunden die Leistung aus und das klappt gut.
Auch von beiden Geräten möchte ich alle 5 Minuten Zählwerte auslesen und das klappt nur beim WR zufriedenstellend.
Ich habe 4 Modbus Instanzen eingerichtet,
modbus.0 Zähler Datenabfrageintervall 5000ms - funktioniert
modbus.1 WR Datenabfrageintervall 5000ms - funktioniert
modbus.2 Zähler Datenabfrageintervall 300000ms - funktioniert nicht
modbus.3 WR Datenabfrageintervall 300000ms - funktioniertmodbus.2 fragt den Zähler alle 1:40 (min:sek) ab. Ich habe das Intervall auf 1200000ms erhöht - ohne Änderung.
Nun habe ich im Forum schon gesucht und gefunden das es an Verbindungsabbrüchen liegen kann. Und ja, diese sind vorhanden. 40 Sek. nach dem Pollbeginn wir wird die Verbindung unterbrochen. Nach der im Adapter eingestellten Minute wird dann wieder eine Verbindung aufgebaut, usw. Ich denke die Verbindung wird vom Zähler beendet.Was kann man da tun?
Kann man von einem Script aus die Datenabfrage des Modbusadapters steuern?
Kann man von einem Script aus TCP-Netzwerkverbindungen aufbauen und sich um den Modbus selber kümmern?Wer kann helfen? Gedankenanstöße?
Grüße Martin
Protokollausschnitt:
2024-10-24 21:05:32.128 - debug: modbus.3 (7022) [DevID_1] Poll start --------------------- 2024-10-24 21:05:32.130 - debug: modbus.3 (7022) [DevID_1/holdingRegs] Poll address 509 - 4 registers 2024-10-24 21:05:32.367 - debug: modbus.3 (7022) [DevID_1/holdingRegs] Poll address 509 DONE 2024-10-24 21:05:32.377 - info: javascript.0 (797) script.js.common.ZaehlerModbus: Modbus3 (509) alter Wert. 26270600, neuer Wert: 26270600 2024-10-24 21:05:57.542 - info: modbus.2 (6993) Connected to slave 192.168.178.31 2024-10-24 21:05:57.543 - debug: modbus.2 (6993) [DevID_1] Poll start --------------------- 2024-10-24 21:05:57.544 - debug: modbus.2 (6993) [DevID_1/holdingRegs] Poll address 40107 - 10 registers 2024-10-24 21:05:57.552 - debug: modbus.2 (6993) [DevID_1/holdingRegs] Poll address 40107 DONE 2024-10-24 21:05:57.605 - info: javascript.0 (797) script.js.common.ZaehlerModbus: Modbus2 (40107) alter Wert. 4852271, neuer Wert: 4852271 2024-10-24 21:05:57.609 - info: javascript.0 (797) script.js.common.ZaehlerModbus: Modbus2 (40115) alter Wert. 206768, neuer Wert: 206771 2024-10-24 21:06:37.413 - debug: modbus.2 (6993) Socket closed with error 2024-10-24 21:06:37.413 - debug: modbus.2 (6993) Clearing timeout of the current request. 2024-10-24 21:06:37.414 - debug: modbus.2 (6993) Cleaning up request fifo. 2024-10-24 21:06:38.416 - debug: modbus.2 (6993) Closing client on purpose. 2024-10-24 21:06:38.416 - info: modbus.2 (6993) Disconnected from slave 192.168.178.31 2024-10-24 21:07:38.426 - info: modbus.2 (6993) Connected to slave 192.168.178.31 2024-10-24 21:07:38.427 - debug: modbus.2 (6993) [DevID_1] Poll start --------------------- 2024-10-24 21:07:38.428 - debug: modbus.2 (6993) [DevID_1/holdingRegs] Poll address 40107 - 10 registers 2024-10-24 21:07:38.440 - debug: modbus.2 (6993) [DevID_1/holdingRegs] Poll address 40107 DONE 2024-10-24 21:07:38.448 - info: javascript.0 (797) script.js.common.ZaehlerModbus: Modbus2 (40107) alter Wert. 4852271, neuer Wert: 4852271 2024-10-24 21:07:38.489 - info: javascript.0 (797) script.js.common.ZaehlerModbus: Modbus2 (40115) alter Wert. 206771, neuer Wert: 206774 2024-10-24 21:08:18.011 - debug: modbus.2 (6993) Socket closed with error 2024-10-24 21:08:18.012 - debug: modbus.2 (6993) Clearing timeout of the current request. 2024-10-24 21:08:18.012 - debug: modbus.2 (6993) Cleaning up request fifo. 2024-10-24 21:08:19.013 - debug: modbus.2 (6993) Closing client on purpose. 2024-10-24 21:08:19.014 - info: modbus.2 (6993) Disconnected from slave 192.168.178.31 2024-10-24 21:09:19.201 - info: modbus.2 (6993) Connected to slave 192.168.178.31 2024-10-24 21:09:19.202 - debug: modbus.2 (6993) [DevID_1] Poll start --------------------- 2024-10-24 21:09:19.203 - debug: modbus.2 (6993) [DevID_1/holdingRegs] Poll address 40107 - 10 registers 2024-10-24 21:09:19.225 - debug: modbus.2 (6993) [DevID_1/holdingRegs] Poll address 40107 DONE 2024-10-24 21:09:19.237 - info: javascript.0 (797) script.js.common.ZaehlerModbus: Modbus2 (40107) alter Wert. 4852271, neuer Wert: 4852271 2024-10-24 21:09:19.278 - info: javascript.0 (797) script.js.common.ZaehlerModbus: Modbus2 (40115) alter Wert. 206774, neuer Wert: 206777 2024-10-24 21:09:59.112 - debug: modbus.2 (6993) Socket closed with error 2024-10-24 21:09:59.113 - debug: modbus.2 (6993) Clearing timeout of the current request. 2024-10-24 21:09:59.113 - debug: modbus.2 (6993) Cleaning up request fifo. 2024-10-24 21:10:00.114 - debug: modbus.2 (6993) Closing client on purpose. 2024-10-24 21:10:00.115 - info: modbus.2 (6993) Disconnected from slave 192.168.178.31 2024-10-24 21:10:32.422 - debug: modbus.3 (7022) [DevID_1] Poll start --------------------- 2024-10-24 21:10:32.423 - debug: modbus.3 (7022) [DevID_1/holdingRegs] Poll address 509 - 4 registers 2024-10-24 21:10:32.638 - debug: modbus.3 (7022) [DevID_1/holdingRegs] Poll address 509 DONE 2024-10-24 21:10:32.646 - info: javascript.0 (797) script.js.common.ZaehlerModbus: Modbus3 (509) alter Wert. 26270600, neuer Wert: 26270600 2024-10-24 21:11:00.123 - info: modbus.2 (6993) Connected to slave 192.168.178.31 2024-10-24 21:11:00.123 - debug: modbus.2 (6993) [DevID_1] Poll start --------------------- 2024-10-24 21:11:00.124 - debug: modbus.2 (6993) [DevID_1/holdingRegs] Poll address 40107 - 10 registers 2024-10-24 21:11:00.139 - debug: modbus.2 (6993) [DevID_1/holdingRegs] Poll address 40107 DONE 2024-10-24 21:11:00.147 - info: javascript.0 (797) script.js.common.ZaehlerModbus: Modbus2 (40107) alter Wert. 4852271, neuer Wert: 4852271 2024-10-24 21:11:00.189 - info: javascript.0 (797) script.js.common.ZaehlerModbus: Modbus2 (40115) alter Wert. 206777, neuer Wert: 206780 2024-10-24 21:11:39.711 - debug: modbus.2 (6993) Socket closed with error 2024-10-24 21:11:39.711 - debug: modbus.2 (6993) Clearing timeout of the current request. 2024-10-24 21:11:39.712 - debug: modbus.2 (6993) Cleaning up request fifo. 2024-10-24 21:11:40.713 - debug: modbus.2 (6993) Closing client on purpose. 2024-10-24 21:11:40.715 - info: modbus.2 (6993) Disconnected from slave 192.168.178.31 2024-10-24 21:12:40.763 - info: modbus.2 (6993) Connected to slave 192.168.178.31 2024-10-24 21:12:40.764 - debug: modbus.2 (6993) [DevID_1] Poll start --------------------- 2024-10-24 21:12:40.765 - debug: modbus.2 (6993) [DevID_1/holdingRegs] Poll address 40107 - 10 registers 2024-10-24 21:12:40.774 - debug: modbus.2 (6993) [DevID_1/holdingRegs] Poll address 40107 DONE 2024-10-24 21:12:40.784 - info: javascript.0 (797) script.js.common.ZaehlerModbus: Modbus2 (40107) alter Wert. 4852271, neuer Wert: 4852271 2024-10-24 21:12:40.868 - info: javascript.0 (797) script.js.common.ZaehlerModbus: Modbus2 (40115) alter Wert. 206780, neuer Wert: 206783
-
-
@peterfido Danke aber ich wollte deswegen jetzt nicht noch ein weiteres Programm verwenden.
Grüße Martin
-
@martin-5 sagte in Probleme mit dem Modbus Adapter, oder doch der Hardware?:
debug: modbus.2 (6993) Socket closed with error
kommt da irgendwo ein Code als Fehler im
@martin-5 sagte in Probleme mit dem Modbus Adapter, oder doch der Hardware?:
debug: modbus.2 (6993) [DevID_1/holdingRegs] Poll address 40107 - 10 registers
oder sind die 10 Register zu viel auf einmal
oder was ist 40107?wie sind die Einstellungen?
was macht der javascript adapter da zeitgleich?
-
@homoran sagte in Probleme mit dem Modbus Adapter, oder doch der Hardware?:
kommt da irgendwo ein Code als Fehler
Nö, nur das was da steht.
oder sind die 10 Register zu viel auf einmal
Ist auch bei einem Register so.
oder was ist 40107?
Das ist das erste Register.
Der Zähler beendet einfach die Verbindung nach 40sek. Setze ich die Pollzeit auf 30 Sekunden passiert das nicht.
Aber da kommt mir eine Idee. Ich setze die Zeit für das Wiederverbinden auch auf 5 Minuten dann könnte es klappen.
Grüße Martin
-
@martin-5 sagte in Probleme mit dem Modbus Adapter, oder doch der Hardware?:
Nö, nur das was da steht.
Da strht das ja auch nicht.
Das steht als Wert bei dem angemeckerten Registerz.B.
-
Das auslesen der Register funktioniert ja und die Werte stimmen. Der Fehler kommt ja erst 40 Sekunden später.
2024-10-24 21:05:57.543 - debug: modbus.2 (6993) [DevID_1] Poll start -------------------- 2024-10-24 21:05:57.544 - debug: modbus.2 (6993) [DevID_1/holdingRegs] Poll address 40107 - 10 registers 2024-10-24 21:05:57.552 - debug: modbus.2 (6993) [DevID_1/holdingRegs] Poll address 40107 DONE 2024-10-24 21:06:37.413 - debug: modbus.2 (6993) Socket closed with error 2024-10-24 21:06:37.413 - debug: modbus.2 (6993) Clearing timeout of the current request. 2024-10-24 21:06:37.414 - debug: modbus.2 (6993) Cleaning up request fifo. 2024-10-24 21:06:38.416 - debug: modbus.2 (6993) Closing client on purpose. 2024-10-24 21:06:38.416 - info: modbus.2 (6993) Disconnected from slave 192.168.178.31
Setze ich die Wartezeit bis zum erneuten Verbinden auf den gleichen Wert wie die Pollzeit scheint es zu funktionieren.
Die Verbindung wird zwar auch unterbrochen aber die nächste Verbindung erfolgt erst wenn die Register wieder ausgelesen werden sollen. Dabei ist mir allerdings ein weiteres Problem aufgefallen. Gepollt wird nicht zu jeder durch 5 teilbaren Minute sondern alle 5 Minuten und ein paar Millisekunden. Somit ist es nicht sicher zu welcher Zeit genau der Zählwert ermittelt wurde, es ist irgendwo zwischen der 0. und der 5. Minute.Grüße Martin
-
@martin-5 sagte in Probleme mit dem Modbus Adapter, oder doch der Hardware?:
sondern alle 5 Minuten
+ die in den Objekten unter polltime stehende Zeit.
Also 5 Minuten Pause zwischen zwei Aktionen -
@homoran Ja so ist es. Ich brauche aber den Zählerstand zu festen Zeiten. ... 0, 5, 10,15 usw. Minuten.
Ich probiere weiter, vielen Dank.
Grüße Martin
-
@martin-5 sagte in Probleme mit dem Modbus Adapter, oder doch der Hardware?:
Ich brauche aber den Zählerstand zu festen Zeiten.
wofür?
Für eine Berechnung?
Nimm die Zeit zwischen den Timestamps -
@homoran
Ich berechne die durchschnittliche Leistung der letzten 5 Minuten aus der Differenz der Zählerstände und speichere sie in eine Datei im Format Sekunden: Leistung (z.B. 300: 2, 600: 3 usw.). Dauert eine Aktion 100 ms und die Zeit zwischen den Aktionen ist 5 min verschiebt sich die Zeit über den Tag um 28,8 sek und im Monat um etwa 14min und 24 sek. Man könnte nun die Pollzeit anpassen aber es bleibt ein Fehler der sich aufsummiert. Besser wäre es doch zeitgesteuert zu pollen.Meine Fragen sind aber beantwortet und ich weiß nun wie der Modbus-Adapter arbeitet.
Danke dafür.Grüße Martin
-
@martin-5 sagte in Probleme mit dem Modbus Adapter, oder doch der Hardware?:
aus der Differenz der Zählerstände
...und der Differenz der Timestamps...
dann kannst du normieren
@martin-5 sagte in Probleme mit dem Modbus Adapter, oder doch der Hardware?:
Besser wäre es doch zeitgesteuert zu pollen.
nein!
JS arbeitet ereignisbasiert.
Da ist es genauer bei der Änderung des Werts zu rechnen.