Hallo Leute,
ich habe da ein Problem mit einer Steuerung, ich greife über einen Konverter Ethernet auf Modbus RTU RS485 auf meine Modbus-Steuerung zu. Im Prinzip läuft das schon seit vielen Jahren so. Aktuell wurden einige Umbaumaßnahmen im Netz getätigt (Neue Router, neue Netzsegmente usw.), seit dem Umbau kommt es ab und an vor, das die Kommunikation zwischen dem Konverter und unserer Steuerung mittendrinnen abgebrochen wird. Ist dies der Fall, reagiert der AVRco Modbus-Treiber plötzlich nicht mehr.
Eigentlich dachte ich immer, beim Modbus-RTU gilt eine Strenge Zeitschiene, also müsste doch der Slave nach einen TimeOut ein <NOK> senden und auf einen neuen Befehl warten.
Das macht er aber nicht, ist in dem RTU-Treiber irgendwie die Möglichkeit den Timer dafür anzupassen?
Im Ascii-Treiber habe ich das gefunden:
Beim RTU habe ich nichts gefunden.
Wenn ich die Steuerung bei diesem Problem resete läuft es wieder, kann ich irgendwo den ModbusRTU Treiber neustarten, ohne reset?
Wenn es hier keine saubere TimeOut Funktion im Treiber gibt, würde ich es mit einem Workaround machen. ich würde einen Timer mitlaufen lassen, wenn 5 Minuten lang kein neues Telegramm kommt und verarbeitet wird, würde ich die Steuerung per Software reseten. So würden diese abgesetzten Steuerungen nach spätestens 5 Minuten wieder laufen.
Oder hat Jemand eine andere Idee?
Thorsten
ich habe da ein Problem mit einer Steuerung, ich greife über einen Konverter Ethernet auf Modbus RTU RS485 auf meine Modbus-Steuerung zu. Im Prinzip läuft das schon seit vielen Jahren so. Aktuell wurden einige Umbaumaßnahmen im Netz getätigt (Neue Router, neue Netzsegmente usw.), seit dem Umbau kommt es ab und an vor, das die Kommunikation zwischen dem Konverter und unserer Steuerung mittendrinnen abgebrochen wird. Ist dies der Fall, reagiert der AVRco Modbus-Treiber plötzlich nicht mehr.
Eigentlich dachte ich immer, beim Modbus-RTU gilt eine Strenge Zeitschiene, also müsste doch der Slave nach einen TimeOut ein <NOK> senden und auf einen neuen Befehl warten.
Das macht er aber nicht, ist in dem RTU-Treiber irgendwie die Möglichkeit den Timer dafür anzupassen?
Im Ascii-Treiber habe ich das gefunden:
Code
Procedure mb_SetModBusTimeout (time: word);
{set timeout in ms} Function mb_GetModBusTimeout: word;
{get timeout in ms}
{set timeout in ms} Function mb_GetModBusTimeout: word;
{get timeout in ms}
Beim RTU habe ich nichts gefunden.
Wenn ich die Steuerung bei diesem Problem resete läuft es wieder, kann ich irgendwo den ModbusRTU Treiber neustarten, ohne reset?
Wenn es hier keine saubere TimeOut Funktion im Treiber gibt, würde ich es mit einem Workaround machen. ich würde einen Timer mitlaufen lassen, wenn 5 Minuten lang kein neues Telegramm kommt und verarbeitet wird, würde ich die Steuerung per Software reseten. So würden diese abgesetzten Steuerungen nach spätestens 5 Minuten wieder laufen.
Oder hat Jemand eine andere Idee?
Thorsten