Dokumentation

cFos Charging Manager mittels Modbus lesen und steuern

Neben HTTP und MQTT stellt der cFos Charging Manager auch ein Modbus API zur Verfügung. Dieses ist nach SunSpec modelliert. Unter der Charging Manager Konfiguration können Sie unter "SunSpec Adress-Einstellungen einen TCP Port oder COM Port Parameter, sowie eine Modbus ID angeben. Dadurch hört der cFos Charging Manager auf den TCP Port bzw. auf dem COM Port unter den angegebenen Parametern und auf die Modbus ID und Modbus ID + 1. Unter der Modbus ID sind allgemeine Charging Manager Werte, Parameter, Flags und Variablen verfügbar. Unter ID + 1 können im Charging Manager eingerichtete Geräte (Wallboxen und Zähler) abgefragt werden. Als Modbus Funktion können Sie 3 und 4 zum Lesen und 6 und 16 zum Schreiben verwenden. Achtung: Unter Raspberry sind TCP Ports unter 1024 Programmen mit Admin-Rechten vorbehalten. Wählen Sie daher lieber eine höhere Portnummer, z.B. 1502.

Die SunSpec Modbus Spezifikation besagt, dass der Modbus Adressebereich mit einer Kennung "SunS" beginnt und dann sogenannte SunSpec Modelle enthält. Jedes Modell hat eine Modell Kennzahl an Offset 0 und eine Längenangabe der verbleibenden zum Modell gehörenden Register an Offset 1. Ab Offset 2 folgen dann die Werte des Modells. Wichtig: Sie sollten den SunSpec Adressebereich scannen und dabei immer um die an Offset 1 stehende Länge veranschreiten. Gehen Sie nicht von festen Längen oder festen Register-Adressen aus, da es sehr wahrscheinlich ist, dass wir im Laufe der Zeit, die Modelle um weitere Werte erweitern. Als erstes kommt immer Modell 1 (Common) mit Angabe des Hersteller, Versionsnummern, etc. Bitte laden Sie die SunSpec Modbus Spezifikationen bei der SunSpec Alliance für detailierte Informationen. Der SunSpec Adressebereich für den cFos Charging Manager beginnt mit Adresse 40000.

Der cFos Charging Manager blendet unter der Modbus ID nach dem Common Modell zunächst folgende Werte als jeweils Modell 213 (three phase meter, float) ein:
Netzbezug
Summe Verbraucher
Summe Erzeuger
PV Überschuss
Genutzte Wallboxleistung
Verfügbare Wallboxleistung
Fehler-Leistung

Dann folgt "custom" Modell 60000 mit Einstellparametern des cFos Charging Managers: Nach Modell und Länge folgen derzeit 8 float Werte: Maximaler Gesamtstrom, Reserve, Überziehung, maximaler Wallbox-Gesamtstrom jeweils in mA pro Phase, maximale Phasenschieflage (in mA), Lastmanagement aktiv (1 = aktiv, 0 = inaktiv), Schieflage inkl. Verbraucher (1 = aktiv, 0 = inaktiv), Maximaler Gesamtstrom in Prozent. Dies sind die globalen auch im UI einstellbaren Charging Manager Parameter. Änderungen dieser Werte werden (mit einer maximalen Verzögerung von 150sec.) gespeichert. Mit dem prozentualen Gesamtstrom kann man z.B. auf Anforderung des Netzbetreibers die Ladeleistung dynamisch anpassen.

Dann folgt "custom" Modell 60001. Nach Modell und Länge folgen 32 Register (16bit). Diese können die Werte 0 und 1 enthalten und lesen bzw. schreiben bis zu 32 Charging Manager flags. Der Zustand dieser Flags kann in Formeln dann durch CM._flag1 bis CM._flag32 abgefragt und zu Berechnungen herangezogen werden.

Dann folgt "custom" Modell 60002. Nach Modell und Länge folgen mögliche Charging Manager Variablen. Für jede Variable stehen 22 Register zur Verfügung. Die ersten 20 Register sind ein Modbus String für den Variablennamen (zu lange Namen werden abgeschnitten). Die folgenden 2 Register beinhalten den aktuellen float Wert der Variable. Wenn Sie den float Wert einer Charging Manager Variablen schreiben, löschen Sie damit eine eventuell vorhandene Formel und setzen die Variable auf einen festen Wert.

Unter Modbus ID + 1 werden im Charging Manager eingerichtete Zähler und Wallboxen wie folgt eingeblendet. Wallboxen tauschen als SunSpec Modell 113 um 2 16 bit Register erweitert auf. An Offset 62 steht der Zustand der Wallbox (1=Warten, 2=Eingesteckt, 3=Laden, 4=Laden mit Lüftung, 5=Fehler) und an Offset 63 steht die Geräte ID. 1 = E1, 2 = E2, etc. Zähler werden mit dem um 2 16 bit Register erweiterten Modell 213 dargestellt. An Offset 126 steht die Rolle des Zählers (0=Anzeige, 1=Verbrauch, 2=Erzeugung, 3=Netzbezug, 4=Verbrauch E-Auto, 5= Speicher Home, 6=Speicher Alles), an Offset 127 steht die Geräte ID (-1 für M1, -2 für M2, etc.). Falls es sich bei dem Zähler um einen Speicher handelt (Rolle 5 oder 6), folgt auf das Modell 213 noch das um ein 16 bit Register erweitertes Modell 124. An Offset 26 steht hier wieder die Geräte ID. Damit Geräte unter Modbus ID + 1 eingeblendet werden, müssen Sie in den Geräteeinstellungen "Geräte Infos via Modbus publizieren" aktivieren.

Aufstellung Start-Addressen der Modelle:
Modbus ID:
Model: 1, Addr: 40002
Model: 213, Addr: 40070, Netzbezugszähler
Model: 213, Addr: 40196, Summe Verbraucher
Model: 213, Addr: 40322, Sume Erzeuger
Model: 213, Addr: 40448, PV Überschuss
Model: 213, Addr: 40574, Genutzte Wallboxleistung
Model: 213, Addr: 40700, Verfügbare Wallboxleistung
Model: 213, Addr: 40826, Fehler-Leistung
Model: 60000, Addr: 40952
Model: 60001, Addr: 40970
Model: 60002, Addr: 41004
Die konkreten Start-Addressen können bei späteren Versionen des cFos Charging Managers variieren, daher sollte der Register-Bereich, wie oben beschrieben, gescannt werden.
Modbus ID + 1:
Modelle und Startadressen hängen von den eingeblendeten Geräten ab.

Aufstellung der Werte für Modell 213:
Offset 0: 213
Offset 1: Länge
Offset 2: Summe Ströme L1-L3 (A)
Offset 4: Strom L1 (A)
Offset 6: Strom L2 (A)
Offset 8: Strom L3 (A)
Offset 10: Spannung (V)
Offset 12: Spannung L1 (V)
Offset 14: Spannung L2 (V)
Offset 16: Spannung L3 (V)
Offset 26: 50 Hz
Offset 28: Leistung (W)
Offset 30: Leistung L1 (W)
Offset 32: Leistung L2 (W)
Offset 34: Leistung L3 (W)
Offset 36: Scheinleistung (VA)
Offset 38: Scheinleistung L1 (VA)
Offset 40: Scheinleistung L2 (VA)
Offset 42: Scheinleistung L3 (VA)
Offset 44: Blindleistung (VAr)
Offset 60: Export, Wirkleistung (Wh)
Offset 68: Import, Wirkleistung (Wh)
Offset 126: Rolle (bei Modbus ID + 1)
Offset 127: Geräte ID (bei Modbus ID + 1)

Aufstellung der Werte für Modell 113:
Offset 0: 113
Offset 1: Länge
Offset 2: Summe Ströme L1-L3 (A)
Offset 4: Strom L1 (A)
Offset 6: Strom L2 (A)
Offset 8: Strom L3 (A)
Offset 16: Spannung L1 (V)
Offset 18: Spannung L2 (V)
Offset 20: Spannung L3 (V)
Offset 22: Leistung (W)
Offset 24: 50 Hz
Offset 26: Scheinleistung (VA)
Offset 32: Import, Wirkleistung (Wh)
Offset 62: Zustand (bei Modbus ID + 1)
Offset 63: Geräte ID (bei Modbus ID + 1)

Aufstellung der Werte für Modell 124:
Offset 0: 124
Offset 1: Länge
Offset 2: Max aus Lade/Entladeleistung (W)
Offset 3: Prozent des aktuellen Ladeleistungslimit
Offset 4: Prozent des aktuellen Entladeleistungslimit
Offset 8: State of Charging in Prozent
Offset 18: Skalierungsfaktor für Offset 2
Offset 19: Skalierungsfaktor für Offset 3 und 4
Offset 26: Geräte ID (bei Modbus ID + 1)

Aufstellung der Werte für Modell 60000:
Alle Werte in float, read/write access, bewirkt Aktualisieren des Flash, d.h. nicht oft ändern, um Schäden zu vermeiden.
Offset 0: 60000 (unt16, read-only)
Offset 1: Länge (uint16, read-only)
Offset 2: Max. Gesamtstrom (mA)
Offset 4: Power Reserve (mA)
Offset 6: Überziehung (mA)
Offset 8: Max Wallbox-Gesamtstrom (mA)
Offset 10: Max. Phasenschieflage (mA)
Offset 12: 1 = Lastmanagement aktiv, 0 = inaktiv
Offset 14: 1 = Addiere Hausverbrauch zur Schieflage, 0 = inaktiv
Offset 16: Prozent des max. Gesamtstrom, wird nicht gespeichert, kann oft verändert werden.

Aufstellung der Werte für Modell 60001:
Alle Werte 0 oder 1, int16, read/write access, werden nicht gespeichert, können oft geändert werden.
Offset 0: 60001 (uint16, read-only)
Offset 1: Länge (uint16, read-only)
Offset 2: CM._flag1
...
Offset 33: CM._flag32

Aufstellung der Werte für Modell 60002:
Alle Werte float, read/write access, werden nicht gespeichert, können oft geändert werden. Offset 0: 60002 (uint16, read-only)
Offset 1: Länge (uint16, read-only)
Offset 2..22: Name Charging Manager Variable 1
Offset 23..24: Wert Charging Manager Variable 1
Offset 25..45: Name Charging Manager Variable 2
Offset 46..47: Wert Charging Manager Variable 2
...