Frage mich wie ich das sinnvoll abfangen kann …
Ob der Socket verbunden ist kann ich ja grundsätzlich über einen ‚ping‘ feststellen, nur beim ModBus Read wüsste ich nicht wo ich eine Bedingung setzen könnte.
Die Zeitüberschreitung passiert sicher wenn die Heizungssteuerung grad gut zu tun hat, gibt es da eine Möglichkeit die Fehlermeldung abzufangen?
Naja, wenn man vor dem Read mit einem kurzen Ping die Verfügbarkeit prüfen würde wäre das abzufangen, eine boolsche Variable als Bedingung beim Read Request wäre vielleicht eine Möglichkeit …
Ein Ping bedeutet nicht das auch die TCP Verbindung funktioniert. Das sind ja verschiedene Protokolle.
Du kannst natürlich den Read Intervall in den Instanzen deaktivieren und dann in einem Script erst den Zustand vom Clientsocket abfragen und wenn der okay ist, alle ModBus_RequestRead Befehl auslösen.
Die Meldung aus deinem Screenshot zeigen ja das die
TCP Verbindung verloren geht.
Michael
Ah, Danke, das geht natürlich …ist aber lästig
Gibt es einen Ansatz wie ich dahinter komme warum die TCP Verbindung ab und zu verloren geht?
Wirklich stören tut das ja nicht, ich wollte nur das Statusprotokoll mal sauberer kriegen …
Gruß Michael
Ich vermute folgendes:
Je höher das Abfrageinterfall, desto mehr Fehler gibt es. Ich vermute, dass hinten die letzte Abfrage noch nicht fertig ist, während IP-Symcon vorne wieder versucht, die ersten Abfragen durchzuführen, was dann zu einem Timeout führt.
Es gibt in den Properties die Möglichkeit, die Abfrageintervalle zwischen zwei Instanzen einzustellen bzw. die Pause zwischen diesen Abfragen. Mit sehr viel Herumspielen mit diesem Wert habe ich es mal geschafft, für 3 Tage keine Fehler zu haben. Die Lösung war das jedoch nicht.
Wir machen nie Abfragen „gleichzeitig“ sondern warten immer auf die Antwort (es sei denn diese dauert mehrere Sekunden - dies wäre ein Timeout). Wie @Nall-chan schon korrekt gesehen hat, scheint der Socket Abbrüche zu haben. Das kann eigentlich nicht durch IP-Symcon passieren, sondern eher das Gerät muss die Verbindung verlieren.
Wie viele Instanzen mit was für einem Intervall fragen denn ab? Wie @DerStandart schon sagte gibt es intern noch eine Property zum Einstellen der Pause zwischen den Abfragen. Evtl. ist dein Gerät mit der Geschwindigkeit der Anfrage überlastet.
Verstehe. Die Info hilft, den Sachverhalt etwas besser zu verstehen. Danke. Ich habe immer noch sehr oft die Meldung „Zeitüberschreitung“, was ja dann auf einen TimeOut hindeutet.
Ich habe hier einen Modbus Stromzähler, der aus mir unerfindlichen Gründen immer wieder TimeOuts liefert. Werde mal recherchieren und experimentieren, woran das liegen kann.
Wenn du trotz höherem Delay Wert immer noch Timeouts bekommst, kannst du ja mal ein Debug Log mitlaufen lassen. Ich vermute, dass sich dein Gerät irgendwo verschluckt und eher einen Bug in der Modbus Implementation hat. Gibt es evtl. Firmware Updates für dein Gerät?