Modbus-Device (seit V7.0) - Virtuelle Variabeln aktualisieren sich nicht

Hallo Zusammen

Ich habe versucht, meine Modbus-Instanzen mit der neuen Modbus-Implementierung (via Modbus-Gerät) umzusetzen. Da ich nun das blockweise Lesen nutze, habe ich den Intervall im Device auf 0 gestellt.
Leider aktualisieren sich die virtuellen Variabeln/Adressen des Modbus-Device dadurch nicht mehr.

Kann das jemand bestätigen?

Danke und Grüsse
Martin

Stimmt. Die virtuellen Adressen werden immer nach dem Timer aktualisiert. Das ist natürlich etwas suboptimal. Ich muss mal überlegen, wie man die Adressen effektiv aktualisieren könnte - denn das Modul weiß ja aktuell nicht, welche Idents in den virtuellen Adressen genutzt werden.

paresy

Ja, verstehe.
Könnte man nicht beim Erstellen/Speichern der Geräte-Instanz (z.B. bei Anpassungen der Adressen) der übergeordneten Gateway-Instanz gleich die nötige Info (quasi welche virtuelle Variabeln aktualisiert werden müssten) mitgeben?

Ein Beitrag wurde in ein neues Thema verschoben: Hat IPS sowas wie einen Modbus-Proxy?

@paresy wie sieht es hierzu nun bei der 8.x aus? Ich glaube, das Thema ist mittlerweile an verschiedenen Orten aufgeführt resp. erwähnt, daher frage ich mal hier nach.
Es wäre schön, wenn diese (prinzipiell tolle) Möglichkeit mal funktionieren würde…

Danke schon mal

PS: siehe auch hier - Weiterer Modbus Fehler? - #22 von paresy

@paresy ich beziehe mich auf meine letzte Frage…

Zudem siehe auch hier

Wie sieht es hier nun aus? Wann werden die virtuellen Variabeln denn funktionieren?
In einem Post (von Juni 2024) steht was von 7.2. … aber mittlerweile sind wir schon weiter und, zumindest bei mir (8.0), funktionieren diese immer noch nicht… Oder ich mache noch was falsch??

Danke für eine Rückmeldung und schöne Ostern.
Grüsse
Martin

Ich habe in dem Zusammenhang ein ganz ähnliches Problem festgestellt.
Wenn ich im ModBus-Splitter eine Blockabfrage konfiguriert habe, aktualisieren sich die dazugehörigen Variablen von ModBus-Geräten (nicht die virtuellen) in den aller meisten Fällen nur minütlich, selbst wenn die Blockabfrage häufiger läuft. Wieso ist das so? Läuft da in der Geräte-Instanz noch irgendein zusätzlicher Timer, der die Daten vom Splitter periodisch aktiv abfragt?

Meine Erwartung wäre eigentlich, dass sich alle betroffenen Variablen aktualisieren, sobald über den zugehörigen Splitter passende Daten eintreffen. Das ist doch das allgemeine Vorgehen in der Modul-Kommunikation, dass die Daten an die Children weitergeleitet werden.

Ich nehme mal an, dass es beim Ursprungsproblem (virtuelle Variablen) noch nichts neues gibt, oder?

Hierzu gibt es eine Antwort von @paresy Verbesserte ModBus Anbindung (IP-Symcon 7.0) - #257 von paresy
Ich hoffe nun wirklich, dass es mit der Version 8.2 endlich erledigt ist… es wurde ja schon mehrfach versprochen (davor noch für die 7.2 ..!)

Betreffend dem anderen…
es gibt ja verschiedene Timer auch bei der Blockabfrage, wenn ich das richtig interpretiere:

  • zum einen der Wert “Abfrageverzögerung” bei den Expertenoptionen im Modbus-Gateway
  • und dann pro Block auch noch ein Intervall

Aus meiner Sicht spielt hier alles zusammen, denke ich

Danke für deine Antwort.
Die Timer kenne ich alle. Die können es aus meiner Sicht nicht sein. Der Timer für die Blockabfrage arbeitet genau so, wie ich ihn eingestellt habe. Das sehe ich ja im Debug, wie die Daten abgefragt werden und rein kommen. Die Abfrageverzögerung beeinflusst da auch nichts. Wenn ich beispielsweise 5.000 ms eingestellt habe, kommen die Daten auch alle 5 Sekunden im Splitter an. Nur kommen sie eben nicht alle 5 Sekunden bei der Geräte-Instanz an, sondern dort nur alle 60/61 Sekunden. Im Gerät selbst habe ich den Timer komplett deaktiviert, sonst würde ich ja alles doppelt abfragen und hätte durch die Blockabfrage nichts gewonnen. Irgendwie seltsam alles.

Ich vermute ganz stark, dass der Splitter seine Blockabfragen alle puffert und dann gesammelt nach 1 Minute an die Geräte weiterleitet.