Modbus-Abfragen unabhängig von Cycle

Hallo Forum,

Wir haben eine ganze Menge an Zählern (>30) im Einsatz. Einige der Modbus RTU<->TCP Gateways sind sporadisch recht “zickig” und kommen mit kurzen Zyklus-Zeiten nicht klar. Ich bin mittlerweile bei 4 Sekunden.

Ich würde manche Geräte (z.B. Thermometer) gerne z.B. alle 10 Zyklen abfragen. Der quick ‘n’ dirty way wäre ein Counter der über die EdgeEventConstants getriggert wird.

Ohne zu tief in die Modbus-Bridge einsteigen zu müssen - gibt es da einen einfachen Weg?

Gruß,
klinki

Hi. Für das gibs nen pr. Modbus TCP bridge skip cycle function by cvabc · Pull Request #2615 · OpenEMS/openems · GitHub

Das dürfte genau das sein was du suchst. Vielleicht hilft dir das weiter.

LG Daniel

1 Like

Hi Daniel,

Allerdings. Das würde passen - vielen Dank für die Info. Der PR scheint aktuell noch in der Luft zu hängen.

Der Ansatz über die Zeit anstatt über Zyklen zu gehen, gefällt mir.

Ich versuche mir mal Zeit zu nehmen den Code zu testen.

Gruß,
klinki

Hallo.

Ich bin gespannt auf eure Testergebnisse. Ich sehe die Umsetzung in dem PR noch kritisch. Die Logik in der Modbus-Bridge ist ziemlich komplex und natürlich eine der wichtigsten im ganzen OpenEMS-Projekt. Wenn man das macht, muss man es ordentlich machen und umfangreiche JUnit-Tests schreiben.

Den Use-Case kenne ich allerdings auch. Manche Geräte spezifizieren auch, dass man nicht so häufig lesen darf. Allerdings ist es bei mir bisher noch nicht so dringend, dass ich es selbst umsetzen musste.

Gruß,
Stefan

Moin,

Aus “will” wurde “dringend” und nun hab ich euren Ansatz auch bei mir eingebaut. Läuft seit einer Stunde stabil über ca. 15 Modbus-Gateways.

Ein dickes DANKE!

Gruß,
klinki