Symphon-E App Modbus/TCP Schreibzugriff
1. Einleitung
Sehr geehrte Kundin, sehr geehrter Kunde,
vielen Dank, dass Sie sich für die »Symphon-E App Modbus/TCP Schreibzugriff« entschieden haben. Gerne können Sie uns Ihre Anregungen mitteilen, damit wir die Qualität unserer Produkte noch weiter verbessern können.
2. Installation der App
Mit der Bestellung der »Symphon-E App Modbus/TCP Schreibzugriff« haben Sie einen 16-stelligen Lizenzschlüssel erhalten. Mittels diesem Lizenzschlüssel können Sie die App eigenständig im EMS App Center einlösen.
Eine Anleitung zur Vorgehensweise finden Sie hier.
3. Modbus/TCP - Schreibzugriff
Diese Anleitung dient der Beschreibung des Schreibzugriffs auf ein Heckert Solar Stromspeichersystem mittels Modbus/TCP API. Zunächst werden Grundlagen zum Protokoll beschrieben. Anschließend wird die Funktionsweise der Schnittstelle erklärt.
|
3.1. Voraussetzungen
Das auf das Stromspeichersystem zugreifende Gerät (z.B. Notebook/PC) muss direkten Zugriff auf die IP-Adresse des EMS haben - also z. B. im gleichen physischen Netzwerk angeschlossen sein.
3.2. Grundlagen Modbus/TCP
Das Modbus-Protokoll ist ein Kommunikationsprotokoll, das auf einer Client/Server-Architektur basiert. Es wurde 1979 von Gould-Modicon für die Kommunikation mit seinen speicherprogrammierbaren Steuerungen ins Leben gerufen. In der Industrie hat sich der Modbus zu einem De-facto-Standard entwickelt, da es sich um ein offenes Protokoll handelt. Seit 2007 ist die Version Modbus TCP Teil der Norm IEC 61158.
Mittels Modbus können ein Client (z. B. ein PC/EMS) und mehrere Server (z. B. Mess- und Regelsysteme, Batteriespeicher, PV-Anlage, Ladestation E-Auto) verbunden werden. Es gibt zwei Versionen: Eine für die serielle Schnittstelle (EIA-232 und EIA-485) und eine für Ethernet. In dieser Anleitung wird die Version für Ethernet beschrieben. Hierbei werden TCP/IP-Pakete verwendet, um die Daten zu übermitteln.
Lese- und Schreibzugriffe sind auf folgende Objekttypen möglich:
Objekttyp |
Zugriff |
Größe |
Funktionscode |
Einzelner Ein-/Ausgang „Coil“ |
Lesen & Schreiben |
1-bit |
01 / 05 / 15 |
Einzelner Eingang „Discrete Input“ |
nur Lesen |
1-bit |
02 |
(analoge) Eingänge „Input Register“ |
nur Lesen |
16-bits |
04 |
(analoge) Ein-/Ausgänge „Holding Register“ |
Lesen & Schreiben |
16-bits |
03 / 06 / 16 |
Die Modbus-Schnittstelle ist folgendermaßen konfiguriert:
Geräteadresse |
IP-Adresse des EMS (z.B. 192.168.0.20) |
Port |
502 |
Unit-ID |
1 |
Function-Codes |
03 (Read Holding Registers) |
04 (Read Input Registers) |
|
06 (Write Single Holding Register) |
|
16 (Write Multiple Holding Registers) |
Die Schnittstelle ermöglicht standardmäßig Zugriff auf die Kanäle der Komponente _sum und ess0.
3.3. Modbus-Tabelle
Die individuelle Modbus-Tabelle für Ihr System können Sie bequem über das Online-Monitoring als Excel-Datei wie folgt herunterladen:
Im Live Detail Widget können Sie über den Button "PROTOKOLL HERUNTERLADEN" den Download starten.
Die wichtigsten Datenpunkte finden Sie auch hier in der Schnellübersicht:
Address (Adresse) |
Name |
Type |
Value/Description |
Unit |
Access |
200 |
Component-ID |
string16 |
_sum |
RO |
|
222 |
State |
enum16 |
0:Ok, 1:Info, 2:Warning, 3:Fault |
RO |
|
302 |
EssSoc |
uint16 |
Ladezustand |
Prozent [%] |
RO |
303 |
EssActivePower |
float32 |
AC-seitige Wirkleistung des Speichers inkl. überschüssiger DC-Erzeugung bei Hybrid-Wechselrichter |
Watt [W] |
RO |
309 |
EssReactivePower |
float32 |
AC-seitige Blindleistung des Speichers |
Voltampere Reaktiv [var] |
RO |
315 |
GridActivePower |
float32 |
Wirkleistung am Netzanschlusspunkt |
Watt [W] |
RO |
317 |
GridMinActivePower |
float32 |
Minimale je gemessene Wirkleistung am Netzanschlusspunkt |
Watt [W] |
RO |
319 |
GridMaxActivePower |
float32 |
Maximale je gemessene Wirkleistung am Netzanschlusspunkt |
Watt [W] |
RO |
327 |
ProductionActivePower |
float32 |
Wirkleistung des PV-Ertrags und ggf. Ertrag durch externe Wechselrichter |
Watt [W] |
RO |
329 |
ProductionMaxActivePower |
float32 |
Maximale je gemessene Wirkleistung der PV-Anlage |
Watt [W] |
RO |
331 |
ProductionAcActivePower |
float32 |
Wirkleistung der externen AC-Wechselrichter |
Watt [W] |
RO |
339 |
ProductionDcActualPower |
float32 |
Leistung der DC-Erzeugung des Hybridwechselrichters |
Watt [W] |
RO |
343 |
ConsumptionActivePower |
float32 |
Wirkleistung des elektrischen Verbrauchs |
Watt [W] |
RO |
345 |
ConsumptionMaxActivePower |
float32 |
Maximale je gemessene Wirkleistung des elektrischen Verbrauchs |
Watt [W] |
RO |
351 |
EssActiveChargeEnergy |
float64 |
Kumulierte elektrische Energie der AC-seitigen Speicherbeladung inkl. überschüssige PV-Erzeugung beim Hybrid-Wechselrichter |
Wattstunden [Wh] |
RO |
355 |
EssActiveDischargeEnergy |
float64 |
Kumulierte elektrische Energie vom Speicher zum Verbrauch über AC-Ausgang des Wechselrichters inkl. PV-Erzeugung |
Wattstunden [Wh] |
RO |
359 |
GridBuyActiveEnergy |
float64 |
Kumulierte elektrische Energie des Netzbezuges |
Wattstunden [Wh] |
RO |
363 |
GridSellActiveEnergy |
float64 |
Kumulierte elektrische Energie der Einspeisung |
Wattstunden [Wh] |
RO |
367 |
ProductionActiveEnergy |
float64 |
Kumulierte elektrische Energie der PV-Erzeugung + Erzeugung externer Wechselrichter |
Wattstunden [Wh] |
RO |
371 |
ProductionAcActiveEnergy |
float64 |
Kumulierte elektrische Energie der externen Wechselrichter |
Wattstunden [Wh] |
RO |
375 |
ProductionDcActiveEnergy |
float64 |
Kumulierte elektrische Energie der PV-Erzeugung des Wechselrichters |
Wattstunden [Wh] |
RO |
379 |
ConsumptionActiveEnergy |
float64 |
Kumulierter elektrischer Verbrauch |
Wattstunden [Wh] |
RO |
383 |
EssDcChargeEnergy |
float64 |
Kumulierte DC-elektrische Energie der Speicherbeladung |
Wattstunden [Wh] |
RO |
387 |
EssDcDischargeEnergy |
float64 |
Kumulierte DC-elektrische Energie der Speicherentladung |
Wattstunden [Wh] |
RO |
415 |
EssDischargePower |
float32 |
Tatsächliche AC-seitige Wirkleistung des Speichers |
Watt [W] |
RO |
417 |
GridMode |
enum16 |
1:On-Grid, 2:Off-Grid |
RO |
Address (Adresse) |
Name |
Type |
Value/Description |
Unit |
Access |
500 |
Component-ID |
string16 |
ess0 |
RO |
|
522 |
State |
enum16 |
0:Ok, 1:Info, 2:Warning, 3:Fault |
RO |
|
602 |
SoC |
uint16 |
Ladezustand |
Prozent [%] |
RO |
603 |
GridMode |
enum16 |
1:On-Grid, 2:Off-Grid |
RO |
|
604 |
ActivePower |
float32 |
Be- bzw. Entladeleistung (Negative Werte entsprechen Speicherbeladung - Positive Werte Speicherentladung) |
Watt [W] |
RO |
608 |
MinCellVoltage |
float32 |
Minimale Zellspannung |
Millivolt [mV] |
RO |
610 |
MaxCellVoltage |
float32 |
Maximale Zellspannung |
Millivolt [mV] |
RO |
612 |
MinCellTemperature |
float32 |
Minimale Zelltemperatur |
Grad Celsius [C] |
RO |
614 |
MaxCellTemperature |
float32 |
Maximale Zelltemperatur |
Grad Celsius [C] |
RO |
702 |
Minimum Power Set-Point |
float32 |
Minimaler Leistungssollwert |
Watt [W] |
RO |
704 |
Maximum Power Set-Point |
float32 |
Maximaler Leistungssollwert |
Watt [W] |
RO |
706 |
SetActivePowerEquals |
float32 |
Vorgabe Be- bzw. Entladeleistung |
Watt [W] |
WO |
708 |
SetReactivePowerEquals |
float32 |
Vorgabe Blindleistung |
Voltampere Reaktiv [var] |
WO |
710 |
SetActivePowerLessOrEquals |
float32 |
Vorgabe maximaler Entladeleistung |
Watt [W] |
WO |
712 |
SetReactivePowerLessOrEquals |
float32 |
Vorgabe maximaler Blindleistung |
Voltampere Reaktiv [var] |
WO |
714 |
SetActivePowerGreaterOrEquals |
float32 |
Vorgabe maximaler Beladeleistung |
Watt [W] |
WO |
716 |
SetReactivePowerGreaterOrEquals |
float32 |
Vorgabe minimaler Blindleistung |
Voltampere Reaktiv [var] |
WO |
Die Register für Blindleistungsvorgaben sind aktuell für Home-Systeme nicht nutzbar. |
3.4. Visualisierung und Konfiguration
Nach der Installation der »Symphon-E App Modbus/TCP Schreibzugriff« sehen Sie das folgende Widget in Ihrem Live-Monitoring:
Das Flat Widget zeigt den aktuellen Status der externen Schreibvorgaben an. Sobald ein Register überschrieben wird, ändert sich der Status von "Keine externen Vorgabe vorhanden" auf "Externe Vorgabe wird berücksichtigt".
Ein Klick auf das Widget öffnet die Detailansicht:
In der Detailansicht finden Sie eine Übersicht zu den jeweiligen Registern. Diese Übersicht beinhaltet für das Register der Wirkleistungsvorgabe (SetActivePowerEquals/706) Ihren gesetzten Vorgabewert sowie den tatsächlichen Wert, der technisch umsetzbar ist. Für alle weiteren Register wird lediglich der Vorgabewert angezeigt. Sobald weitere Register überschrieben werden, wird die Detailansicht automatisch aktualisiert.
3.5. Beispiel 1: Schreibzugriff auf EssActivePower mit QModMaster
Im Folgenden soll der Schreibzugriff für das Setzen der EssActivePower mittels des kostenlosen Tools QModMaster exemplarisch gezeigt werden. Hierdurch kann die Funktion des Controller Fix Active Power Symmetric simuliert werden.
Der Wert ist wie folgt hinterlegt (s. oben):
Address |
Name |
Type |
Value/Description |
Unit |
Access |
706 |
ess0/SetActivePowerEquals |
float32 |
Watt [W] |
WO |
|
Da es sich um einen float32 handelt, müssen zwei 16-bit Wörter, also zwei Register, geschrieben werden. In diesem Beispiel soll der Speicher mit 4000 (4E+03) Watt entladen werden. Der Wert kann direkt als Dezimalzahl in das Register eingegeben werden, wobei das Data Format Float zu wählen ist. Nach Setzen des Wertes auf den Menüpunkt "Read/Write" klicken, um die Schreiboperation durchzuführen.
Der Abgleich mit dem Online-Monitoring bestätigt die Korrektheit des geschriebenen Wertes:
|
Die Durchführung anderer Schreiboperationen erfolgt analog.
3.6. Watchdog
Die »Symphon-E App Modbus/TCP Schreibzugriff« hat eine integrierte „Watchdog“-Funktionalität. Diese stellt sicher, dass bei einem Verbindungsabbruch (z. B. Ausfall der übergeordneten Steuerung oder des Netzwerks) eine Be- oder Entladungsvorgabe beendet wird. In der Standardkonfiguration ist dieser „Api-Timeout“ auf 60 Sekunden gesetzt. Eine Schreibvorgabe wird somit für 60 Sekunden umgesetzt. Um eine kontinuierliche Ansteuerung umzusetzen, empfehlen wir eine erneute Vorgabe nach der Hälfte der konfigurierten Zeit, also in diesem Fall nach 30 Sekunden. Erfolgt keine erneuter Schreibvorgabe innerhalb von 60 Sekunden, wird die Be- oder Entladung beendet.
Der "Api-Timeout" kann über die App-Konfiguration im App Center geändert werden. Ein Wert von „0 Sekunden“ deaktiviert die Watchdog-Funktion.