NEWS
Modbus APP Timeouts nur beim schreiben mit blockly
-
Hallo iobroker Fan Gemeinde
Erstmal besten Dank an alle Entwickler und Unterstützer dieses Pojekts.
Einen passenden Topic habe ich nicht gefunden, deshalb mach ich mal einen Neuen auf.
Ich hänge jetzt schon seit mehreren Tagen an einem Problem mit dem Modbus Adapter fest.
Erstmal zu meiner Anwendung:
Ich habe eine Wago 750-8202 über Modbus TCP an den Raspberry angebunden. Das pollen von Registern funktioniert auch wunderbar. Auch das Schreiben von Registern funktioniert grundsätzlich.Jetzt habe ich aber Daten über die Gardena Smartgarden App ausgelesen und möchte diese via Blockly in Modbus Register schreiben. Das funktioniert dann eine ganze Zeit und dann kommen meistens so nach einer Stunde vom Modbus Adapter jede Menge APP Timeouts.
Das geht dann solange, wie mein Rasenmäher läuft und der Batteriestatus sich verändert, also geschrieben wird. Danach beruhigt sich das ganze wieder und die Fehlermeldungen sind weg.Solange nur die Warnmeldungen kommen würde es mich noch nicht mal richtig stören, aber das schaukelt sich irgendwann hoch und der Modbus Adapter oder Blockly steigt total aus.
Ich kenne mich beruflich mit Modbus Schnittstellen sehr gut aus und benutze diese für unsere Datenerfassungen fast nur. Wenn ich also irgendwas an Infos beibringen kann, gerne.
Hardwarefehler oder Kommunikationsprobleme mit der Steuerung kann ich ausschließen. Das Netzwerk ist gemessen und parallel frage ich die Steuerung mit einer Datenerfassung ab.
Ich habe es schon mit zig verschiedenen Einstellungen im Modbus Adapter und auch mit Verzögerungen im Script versucht, hat alles nichts gebracht.
Was mir auch nicht klar ist, ich benutze „steuere ObjectID“ funzt auch, mit aktualisiere ObjectID wird der Wert des Objekts zwar geändert, aber nicht bis in die SPS reingeschrieben.
2020-07-20 11:29:38.116 - info: javascript.0 (3421) script.js.Gardena.SmartGardenState: registered 0 subscriptions and 0 schedules
2020-07-20 11:32:30.138 - info: javascript.0 (3421) script.js.Gardena.SmartGardenState: 3
2020-07-20 11:32:34.137 - info: javascript.0 (3421) script.js.Gardena.SmartGardenState: 7
2020-07-20 11:33:26.157 - info: javascript.0 (3421) script.js.Gardena.SmartGardenState: 9
2020-07-20 12:25:49.220 - info: javascript.0 (3421) script.js.Gardena.SmartGardenState: 10
2020-07-20 12:28:04.635 - info: javascript.0 (3421) script.js.Gardena.SmartGardenState: 2
2020-07-20 12:38:46.204 - warn: modbus.0 (3405) Poll error count: 1 code: "App Timeout"
2020-07-20 12:43:46.415 - warn: modbus.0 (3405) Poll error count: 1 code: "App Timeout"
2020-07-20 12:45:16.847 - warn: modbus.0 (3405) Poll error count: 1 code: "App Timeout"
2020-07-20 12:49:16.416 - warn: modbus.0 (3405) Poll error count: 1 code: "App Timeout"
2020-07-20 12:50:16.830 - warn: modbus.0 (3405) Poll error count: 1 code: "App Timeout"
2020-07-20 12:51:46.459 - warn: modbus.0 (3405) Poll error count: 1 code: "App Timeout"
2020-07-20 12:52:46.993 - warn: modbus.0 (3405) Poll error count: 1 code: "App Timeout"
2020-07-20 12:55:47.025 - warn: modbus.0 (3405) Poll error count: 1 code: "App Timeout"
2020-07-20 12:57:46.184 - warn: modbus.0 (3405) Poll error count: 1 code: "App Timeout"
2020-07-20 12:58:25.913 - info: javascript.0 (3421) Stop script script.js.Gardena.SmartGardenState
2020-07-20 13:22:25.692 - info: javascript.0 (3421) Stop script script.js.Gardena.SmartGardenState
2020-07-20 13:22:28.524 - info: javascript.0 (3421) Start javascript script.js.Gardena.SmartGardenState
2020-07-20 13:22:28.604 - info: javascript.0 (3421) script.js.Gardena.SmartGardenState: registered 0 subscriptions and 0 schedules
2020-07-20 13:37:24.861 - info: javascript.0 (3421) script.js.Gardena.SmartGardenState: 3
2020-07-20 13:37:28.861 - info: javascript.0 (3421) script.js.Gardena.SmartGardenState: 7
2020-07-20 13:38:16.871 - info: javascript.0 (3421) script.js.Gardena.SmartGardenState: 9
2020-07-20 14:01:02.014 - info: javascript.0 (3421) Stop script script.js.Gardena.SmartGardenState
2020-07-20 14:01:02.127 - info: javascript.0 (3421) Start javascript script.js.Gardena.SmartGardenState
2020-07-20 14:01:02.166 - info: javascript.0 (3421) script.js.Gardena.SmartGardenState: registered 0 subscriptions and 0 schedules -
update:
ich habe mir jetzt eine zusätzliche SPS zum Testen besorgt.
Das Schreiben allein scheint nicht das Problem zu sein. Ich habe via Blockly alle 2 Sekunden einen Registerwert verändert, ohne Fehler zu bekommen.
Daraufhin habe ich testweise auch in meine Haus-SPS diese Werte geschrieben auch kein Problem.
Erst wenn ich den "Trigger Falls Objekt wurde geändert" benutze und damit die Batterie vom Robby abfrage, gehen anscheinend die Probleme los.Jetzt habe ich den script etwas verändert und benutze die Funktion "Falls --> mache" (siehe Grafik). Das läuft jetzt seit 5 Stunden fehlerfrei.
Schön, dass es jetzt funktioniert, aber was habe ich verkehrt gemacht?
Ich werde jetzt noch weiter beobachten und dann auch nochmal die alte Situation ausprobieren. Info kommt.
Ach ja, ich habe nur Admin, Javascript, Modbus und smartgarden Instanzen aktiv. Alle Adapter sind auf dem neuesten Stand.
-
update:
ich habe jetzt herausgefunden, dass der Trigger "Falls Objekt wurde geändert" sich nicht im Timeout vom Type Interval befinden darf. Ohne Interval läuft alles ohne Problem. Das hat auch nichts mit smartgarden zu tun. Ich habe es mit meiner Teststeuerung nur über Objekte vom Modbus ausprobiert.
Mit Interval und dem Trigger darin muss sich irgendwas hochschaukeln. Nach ca. 1 -1,5 Std. ist die Weboberfläche kaum noch bedienbar und so entstehen dann auch die Modbus APP Timeouts.
Ich bin es von anderen Programmiersprachen gewohnt Resourcenschonend zu programmieren, hier habe ich genau das Gegenteil erreicht.
Bei mir ist das reproduzierbar, vielleicht kann es ja mal jemand anderes probieren.
-
Ich kann nur von meinen, leienhaften, Experimenten mit ModBus berichten.
Ich warte immer bis sich der Wert eines Gerätes (Inverter) aktuallisiert hat und schreibe dann
erst die neuen Werte.
Also der Trigger ist nicht "geändert" sondern "aktuallisiert". -
Hallo Blechsoldat,
danke für deine Antwort.
Ich hab's mal probiert, ob geändert oder aktualisiert ist egal. Befindet sich der Trigger innerhalb eines Intervals gehen nach 1 - 1,5 Stunden die Probleme los.
Mein Problem ist gelöst, weil ich den Interval jetzt weg lasse. Aber vieleicht helfe ich anderen mit dieser Info, oder die Entwickler gehen dieses Problem mal bei Zeiten an.