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.
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.
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?
@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…
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?
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.