ModBus: Kann Daten nicht zur Instanz #40493 weiterleiten: TransactionID stimmt nicht überein

Dies Fehlermeldung bekomme ich momentan regelmäßig:

Hinter der Instanz #40493 verbirgt sich eine Splitter Instanz
image

Die Splitter Instanz hat einen Client Socket als Parent
image

und zwei ModBus Geräte Instanzen als Children:
image

Beide Modbus Geräte lesen über Datenblöcke die Informationen und erhalten sie auch.

Bei beiden Geräten ist die Fehlerbehandlung auf „Fehler nie ins Log protokollieren“ gesetzt.

Kann es damit zu tun haben? Aktiviere ich die Fehlerbhandlung dann kommen folgende Einträge:

Momentan frage ich mich, was der Auslöser ist und ob ich die Fehlermeldungen los werden kann.

Hast Du Daten geschrieben?
Bei meiner Trovis ging das Lesen per Blockread super, bis ich zum ersten mal geschrieben habe, danach ähnliche Timeouts wie bei Dir.
Habe nun den Versuch mit den Blöcken abgebrochen. Lieber 8 Sekunden statt 2 fürs Lesen, dafür aber seid Wochen stabiles Schreiben…

Bei mir wird nur gelesen.

Ich habe es bei meiner Trovis nun zum Laufen gekriegt, zumindest habe ich seit gestern Abend keine Fehlermeldungen mehr.

Ursache war, das bei der Trovis Datenblöcke definiert waren und ein Blockread durfte nicht über so eine Grenze hinweggehen. Tat er dies, kam wohl die Trovis durcheinander und ich habe wahlweise die Fehlermeldungen bekommen, dass ein Blockread fehlgeschlagen ist oder Schreiben war nicht erfolgreich.

Vorher hatte ich die Möglichkeiten von Modbus (125 Bytes Holding oder 1000 Bits Coils) ausgenutzt. Nun habe ich teilweise Blöcke mit nur einem Byte, teilweise direkt anschliessend an einen Block mit z.B. 12 Bytes aber dazwischenliegender Blockgrenze. Habe ich vorher diese 13 Bytes zusammen gelesen kamen die Fehler.

Vielleicht hilft Dir das ja bei Deinen Fehlern…

@bumaas Kannst du mir passend zu den Fehlermeldungen noch ein Debug vom Splitter und I/O Instanz anhängen?

paresy

Gerne. Diese Meldungen kamen zuletzt:

ModBusGateway.txt (155,0 KB)
ClientSocket.txt (87,1 KB)

Noch eine Ergänzung: das Timeout im Gateway steht auf 7 Sekunden.

Gibt es einen Grund, warum man die Wartezeit nur „sehr vorsichtig“ erhöhen sollte? Ich wäre geneigt, sie mal auf 15 Sekunden zu setzen.

Hier noch die Analyse der KI

Keine Ahnung, ob sie richtig liegt. Klingt aber plausibel. Vielleicht hilft dir die Voranalyse weiter.

Edit:
@paresy: hattest du schon Gelegenheit, dir den Fall anzusehen?