NEWS
Modbus Adapter Register einzelt abfragen, mit delay
-
Hallo zusammen
Ich nutzte den Modbus Adpater um von meiner solarfocus Heizung die Daten auszulesen.
Die Werte einiger Adressen ergeben einfach keinen Sinn. Nun habe ich Kontakt mit einem Solarfocus Techniker. Er meinte das die Adressen korrekt sind und welche software ich nutze.... Und ich soll mal "nur" den Wert auslesen, welcher mir komisch vorkommtSo, jetzt wirds interessant
Ich habe den adapter ein zweites mal installiert und nur diesen einen Adressparameter abgefragt.
Siehe da -> Es funktoniert!Nun habe ich eine Handy App um Modbus parameter zu nutzen und festgestellt, dass es auch hier funktioniert, ABER auch hiermit kann ich nur 1 Paramter immer abfragen.
Nun müsste ich für jeden Parameter einen neuen Modbus adpater hinzufügen, damit ich immer nur einen Parameter abfrage. Das ist auch nicht Sinn der Sache.
Kann man einen Delay zwischen den einzelnen Paramterabfragen festlegen?
Vielen Dank
LG jumbo -
@jumbo125 ich bin letztens bei der Hilfe zu modbus bei eine Anleitung für ein Gerät über eine Bemerkung gestolpert, dass nur eine sehr niedrige Anzahl von Registern auf einmal abgefragt werden dürfe.
womit genau das im Adapter eingestellt wird weiss ich nicht, habe aber daraufhin diese Parameter gesehen
Vielleicht trifft so etwas auch für dein Gerät zu
-
@jumbo125 sagte in Modbus Adapter Register einzelt abfragen, mit delay:
Nun habe ich eine Handy App um Modbus parameter zu nutzen und festgestellt, dass es auch hier funktioniert, ABER auch hiermit kann ich nur 1 Paramter immer abfragen.
Dann liegt das aber an der Handy App und nicht am Modbus.
-
@jumbo125 said in Modbus Adapter Register einzelt abfragen, mit delay:
Kann man einen Delay zwischen den einzelnen Paramterabfragen festlegen?
Ich denke nicht, dass das eine Sache des Timings ist. Die meisten Modbus Master, versuchen Lese-Zugriffe zu optimieren, indem sie nicht jedes Register einzeln lesen, sondern Registerbereiche. Will man also z.B. Register 5 und 15 lesen, wird eine Abfrage zum Lesen der Register von 5 bis 15 gemacht.
Nun ist es aber so, dass manche Modbus Slaves eine Exception werfen, wenn ein Register gelesen wird, das sie nicht unterstützen. In diesem Fall wird die komplette Abfrage verworfen.
Ich weiß jetzt nicht genau, wie der ioBroker Adapter da genau vorgeht, aber das Setzen der beiden von @Homoran genannten Einstellungen auf 1 klingt aber so, als könnte es dein Problem lösen.
-
@ralla66 am handy funktioniert es. auch am iobroker, wenn ich nur einen punkt abfrage.
habe das selbe auch hier gefunden: https://forum.iobroker.net/topic/62046/modbus-tcp-problem/3werde das testen
-
@jumbo125 sagte in Modbus Adapter Register einzelt abfragen, mit delay:
habe das selbe auch hier gefunden:
passt!
da klappt es dann mit der 1 in Anzahl der zu pollenden Register -
@homoran
passt "fast" alles.
Der modbus raubt mir etwas die nerven.
ich habe es nun auf "1" begrenzt, aber da hängt sich der Modbus auf und blockt die verbindung.
bei 10 Daten pro Abfrage, funktioniert es wieder..... Nun habe ich mir gedacht, dass der Modbus ev. bei 20 aufeinander folgenden anfragen, sich überschneidet oder einfach nicht zurecht kommt -> Fazit: ich habe ein delay für das lesen von 100ms eingetragen. Jetzt funktioniert es!ABER hin und weder steht in den logs, dass es zu einem Timeout vom Modbus kam. Ich denke das liegt daran, dass beim abfragen von 20 Adressen mit jeweils 100ms pause dazwischen, sind dass schon 2sekunden.....
Wo stellt man nun das timeout ein?
ich denke, ich sollte auch den abfrage intervall auf mind. 3sek stellen, wenn die abfrage schon 2 sek. dauert,hier meine einstellungen
-
@jumbo125 sagte in Modbus Adapter Register einzelt abfragen, mit delay:
wenn die abfrage schon 2 sek. dauert,
dann kannst du nicht alle 1000ms die nächste Abfrage starten
-
@jumbo125 said in Modbus Adapter Register einzelt abfragen, mit delay:
ABER hin und weder steht in den logs, dass es zu einem Timeout vom Modbus kam. Ich denke das liegt daran, dass beim abfragen von 20 Adressen mit jeweils 100ms pause dazwischen, sind dass schon 2sekunden.....
Den Satz verstehe ich nicht. Ohne Log kann ich jetzt nur raten, aber meist ist die Ursache für einen Timeout Fehler, dass das Gerät nicht rechtzeitig geantwortet hat bzw. die Antwort evtl. nicht verstanden wurde. Soweit ich mich erinnere tritt so ein Timeout nach der Zeitspanne auf, die du bei "Wartezeit lesend" eingetragen hast, bei dir also 8 Sekunden. Diese Zeitspanne gilt soweit ich weiß für jede Abfrage getrennt, d.h. also nach dem lesen jedes einzelnen Registers. Dass alle Abfragen zusammen 2 Sekunden dauern ist unerheblich. Ich würde eher vermuten, dass dein Gerät mit einer Abfrage alle 100 ms überfordert ist. Ich würde da mal auf einen höheren Wert gehen und beobachten, ob sich das Verhalten bessert.
-
@gaspode danke
-
@homoran ja, das setzte ich höher.
Setzte nun die abfrage auf 4 sekunden und die ms pro abfrage auf 150 -
@jumbo125
leider bekomme ich noch immer fehlermeldungen protokolliert:
im Protokoll steht:Poll error count: 2 code : "App Timeout"
meine einstellungen sind:
danke euch!