Ich habe diverse Modbus-Zähler in OpenEMS integriert. Alle liefern brav ihre Werte, usw.
Das Problem ist möglicherweise das verbaute Modbus-Gateway. Dieses steigt nach Laufzeit (1,2 Tage - manchmal Wochen) aus und muss resettet werden.
Die Zähler werden teilweise auch noch von anderen Komponenten abgefragt. Hier kommt es dann möglicherweise zu Problemen.
Ich möchte Folgendes errreichen: OpenEMS fragt als einziges System die Zähler ab und stellt diese Daten allen anderen Systemen per Modbus zur Verfügung. Mit den Core.Sum-Kanälen setze ich das bereits um. Aber wie ist es möglich, dass OpenEMS auch die Zählerdaten von anderen Channels per Modbus verfügbar macht und wie komme ich an die entsprechenden Register?
angenommen für jeden der von dir ausgelesenen Zähler existiert eine ‘meter’-Komponente, z.B. meter0, meter1, .., meterX.
Dann könntest du einen “Controller Api Modbus/TCP Read-Only” aktivieren. Dort kann man bei den Komponenten IDs jeden einzelnen der oben angegebenen Meter hinzufügen (über das “+” bei Component IDs). Der Modbus Server bietet dann die angegebenen Komponenten zum Auslesen an.
Wie genau die Belegung der Modbus-Tabelle ist, kann man dann direkt als Excel-Protokollspezifikation herunterladen: Menü → Einstellungen → Anlagenprofil → Runterscrollen zu “Externe Schnittstellen” → den DropDown-Pfeil ganz links anklicken → dann das Protokoll herunterladen (siehe Screenshot)
Jede Komponente, die das ModbusSlave Interface erfüllt, kann über diesen Mechanismus ausgelesen werden. Ein Beispiel findest du hier.
Ich bin nicht sicher ob schon alle OpenEMS-Zähler das Modbus-Slave Interface erfüllen. Die von dir verwendeten Zähler müssten also vorab geprüft und evtl. erweitert werden.
VG Christian
Die entsprechenden Zähler mit ihren IDs hatte ich der Modbus-Bridge schon beigebracht. Es scheint so, als wenn die SDM630 noch erweitert werden müssten.
Christian hat das genau richtig beschrieben. Damit das funktioniert ist es allerdings notwendig, dass die Komponente das Interface ModbusSlave implementiert. Mit den nächsten FEMS-Backports gibt es in dem Fall ansonsten in Zukunft eine Warnmeldung im Log.
Leider ist das bei dem SDM630-Zähler aktuell noch nicht umgesetzt. Hier ein Beispiel aus der SOCOMEC-Komponente:
Genau so habe ich das mittlerweile auch beim SDM630 umgesetzt. Die IDs tauchen im Export nicht auf. Der Debugger reagiert auch nicht auf den Haltepunkt (in Deinem Auszug Zeile 424). Das Interface habe ich entsprechend erweitert:
Ich dachte, das hätte ich getan in dem ich die Zeilen aus Deinem vorherigen Post eingefügt habe…
Nachtrag: Habe für einen Test mal ein UMG604 angelegt und die ID im Modbus-Server angegeben. In der Excel-Datei steht auch dieser nicht. Hm…
Meine Version ist die 2022.8.2