Modbus Variable überschreibt sich

Guten Abend,

mir ist gerade aufgefallen, dass sich Modbusvariablen überschreiben.
Ich habe ein Modbus Gateway angelegt und Frage Blöcke ab, z.B. Holding Reg(3) 1-5.
Dazu habe ich zum Beispiel einmal die Aussentemperatur auf Register 1, die Vorlauftemperatur auf Register 5 und die Rücklauftemperatur auf Register 4.

Nun haben aber alle 3 Variablen immer den Wert vom Register 5 drin.
Wenn ich die Außentemperatur öffne und unten den Button „Aktualisieren“ klicke und schnell genug bin sehe ich für ca. 1-2 Sekunden den plausiblen Wert bis er wieder überschrieben wird.

Ich hab Symcon neu gestartet, kein Erfolg.

Gibt es dazu Hilfestellungen ?

Vielen Dank.

Lg
paul

Haben die Register die passende Größe eingestellt? Oft wird die Adresse in Byte angegeben. Wenn ein Register jetzt vier Byte groß ist, muss man immer 3 zwischendurch freihalten. Also wären valide Register 1,5,9. Aber nicht 1,2,3.

Ich kann dazu sagen, dass es jetzt knapp 1 Jahr sauber funktionierte :slight_smile:
Daher glaube ich nicht daran, dass die Adressen falsch gesetzt sind.

Symcon Update? Modbus Gerät und ggf. Modbus/TCP Wandler neugestartet? Debuglog vom Modbus-Interface (TCP-Socket) wäre jetzt mal notwendig.

Das Modbusgerät neustarten wird nicht viel helfen, triggert man manuell die Ablesung stimmen die Werte ja sofort.

Mit anderen Tools kommen auch die Daten richtig interpretiert heraus.

Ja, tatsache habe ich heute Symcon geupdatet.

dump.txt (19,8 KB)

Das wäre mal ein Debug von der TCP-Schnittstelle.
Ich habe die Variable auch nach Referenzen abgesucht ob noch etwas darauf schreibt, daber ich finde nichts.

Mit dieser Seite kann man das ganz gut mal per Hand dekodieren.
Zudem mal den Debug der überschriebenen Variablen öffnen, ob hier vielleicht gut zu sehen ist, womit überschrieben wird.

https://rapidscada.net/modbus/

Zum Beispiel diese Antwort

HEX: 13.04.2024, 22:16:12 |             RECEIVED | 00 55 00 00 00 0D 01 03 0A 00 91 01 1D 01 4C D8 F1 01 2B 

hat 10-Byte. Da überschreibt sich schnell mal das nachfolgende Byte.

Beim direkten Debug von einer Modbusvariable wird leider nichts geschrieben.
Das mit dem Byte überschreiben kann ich nicht einordnen, wie und was du da jetzt genau meinst.

Ich frage Holding 1-5 ab.
Holding Register 1 ist die Außentemperatur als 16-Bit Integer Zahl.
Hat nun 1 Jahr funktioniert, jetzt plötzlich nachdem Update nicht mehr, da muss doch beim bzw. mit de Update ein Problem reingekommen sein ?!

Die Daten passen. (Werte werden mit 10 dividiert)
145 die Außentemperatur
285 die Rücklauftemperatur
332 die Vorlauftemperatur

Aber in allen Variablen wird nur die 33,2 geschrieben

Wieso kommen die Gleichzeitig? Nutzt du für die Abfrage die ‚neue‘ Funktion des Blockbildens? Fragt irgendeine Variable trotzdem nochmal mit eigenem Timer ab?

Ja korrekt die werden in einen Block abgefragt, was ja auch absolut sinnvoll ist.
Hat, wie bereits gesagt, ein Jahr lang problemlos funktioniert.

Nein, die einzelnen Instanzen haben alle im Intervall 0 zu stehen.

Vielleicht ist das ein BUG in der neuen Version von Symcon ?