FEMS App Modbus/TCP lesend
1. Modbus/TCP - Lesezugriff
Diese Anleitung dient der Beschreibung des Lesezugriffs auf ein FENECON Stromspeichersystem mittels Modbus/TCP API. Zunächst werden Grundlagen zum Protokoll beschrieben. Anschließend wird die Funktionsweise der Schnittstelle erklärt.
|
1.1. Voraussetzungen
Das auf das Stromspeichersystem zugreifende Gerät (z.B. Notebook/PC) muss direkten Zugriff auf die IP-Adresse des FEMS haben - also z. B. im gleichen physischen Netzwerk angeschlossen sein.
1.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) |
Die Schnittstelle ermöglicht standardmäßig Zugriff auf die Kanäle der Komponente _sum.
1.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:
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 |
1.4. Beispiel 1: Lesezugriff Batterieladezustand mit QModMaster
Im Folgenden soll der Lesezugriff auf den Ladezustand (SoC) der Batterie mittels des kostenlosen Tools QModMaster exemplarisch gezeigt werden.
Das Tool kann unter folgendem Link heruntergeladen werden:
Online: https://sourceforge.net/projects/qmodmaster/
Der Wert des Ladezustands ist wie folgt hinterlegt (s. oben):
Address |
Name |
Type |
Value/Description |
Unit |
Access |
302 |
_sum/EssSoc |
uint16 |
Percent [%] |
RO |
Standardmäßig wird in QModbusMaster die Base Address auf 1 gesetzt. Dieser Wert ist auf 0 zu ändern. Anderenfalls sind die Registeradressen aus dem Anlagenprofil um 1 verschoben.
Unter Modbus TCP Settings müssen Slave IP und TCP Port richtig konfiguriert sein.
Da es sich um einen unit16 handelt, muss ein 16-bit Wort, also ein Register, ausgelesen werden. Nach Setzen der Werte auf den Menüpunkt "Read/Write" klicken. Der gelesene Wert erscheint unten.
Der Abgleich mit dem Online-Monitoring bestätigt die Korrektheit des gelesenen Wertes.
Die Durchführung anderer Leseoperationen erfolgt analog.