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.
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.
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.
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 ?!
Wieso kommen die Gleichzeitig? Nutzt du für die Abfrage die ‚neue‘ Funktion des Blockbildens? Fragt irgendeine Variable trotzdem nochmal mit eigenem Timer ab?