Zum Hauptinhalt springen

Modbus/TCP - Lese-/Schreibzugriff

Ihr SOLIO als Datenquelle für andere Systeme

Über Modbus/TCP können andere Geräte in Ihrem Netzwerk die Werte Ihres SOLIO direkt abfragen, zum Beispiel eine Gebäudeleittechnik, eine Steuerung oder ein Visualisierungssystem. Mit dem Schreibzugriff kann ein externes System außerdem vorgeben, wie stark Ihr Speicher lädt oder entlädt.

Für Fachleute

Diese Seite richtet sich an Installateure, Elektrofachkräfte und Systemintegratoren. Als Hausbesitzer brauchen Sie die Schnittstelle in der Regel nicht.

Wofür brauche ich das?​

Modbus/TCP ist ein weit verbreiteter Standard, mit dem Geräte im lokalen Netzwerk Daten austauschen. Typische Einsätze:

  • Eine Gebäudeleittechnik oder SPS zeigt Ladezustand, Netzbezug und Erzeugung an oder wertet sie aus.
  • Ein übergeordnetes Energiemanagement oder ein Direktvermarkter gibt die Lade- und Entladeleistung des Speichers vor.
  • Ein eigenes Visualisierungs- oder Smart-Home-System liest die Werte regelmäßig aus.

Voraussetzungen​

  • Das zugreifende Gerät, zum Beispiel ein PC oder eine Steuerung, ist im selben Netzwerk wie das SOLIO und erreicht dessen IP-Adresse direkt.
  • Sie kennen die IP-Adresse des SOLIO, zum Beispiel aus der Geräteliste Ihres Routers.
  • Gleichzeitig sind bis zu fünf Verbindungen möglich.
Nur in vertrauenswürdigen Netzwerken

Modbus/TCP kennt keine Anmeldung. Jedes Gerät, das Ihr SOLIO im Netzwerk erreicht, kann die Werte lesen und bei freigeschaltetem Schreibzugriff auch Vorgaben senden. Geben Sie den Port 502 deshalb nie ins Internet frei.

Lesezugriff​

Der Lesezugriff gehört zum Standardumfang. Im App Center ist dafür die App Modbus/TCP lesend installiert.

ParameterWert
GeräteadresseIP-Adresse des SOLIO, z. B. 192.168.178.30
Port502
Unit-ID1
Function Codes03 (Read Holding Registers), 04 (Read Input Registers)
AdressierungBasisadresse 0
Byte-ReihenfolgeBig Endian

Standardmäßig stellt die Schnittstelle die Summenwerte der Anlage bereit (Komponente _sum). Weitere Komponenten, zum Beispiel einzelne Speicher oder Zähler, können projektbezogen freigegeben werden.

Registertabelle herunterladen​

Die Register hängen davon ab, welche Komponenten freigegeben sind. Die passende Tabelle für Ihre Anlage erhalten Sie direkt aus dem Portal:

Anlagenprofil öffnen

Öffnen Sie im Menü Profil → Systemeinstellungen und klicken Sie bei Anlagenprofil auf Öffnen.

Schnittstelle suchen

Scrollen Sie zur Liste der Komponenten bis zum Eintrag der Modbus/TCP-Schnittstelle.

Tabelle herunterladen

Klicken Sie auf Protokoll Herunterladen. Sie erhalten eine Excel-Datei mit allen Registern.

Wichtige Register (Auszug)​

Die folgende Tabelle zeigt die wichtigsten Summenwerte. Maßgeblich ist immer die Tabelle Ihrer Anlage.

AdresseNameTypBeschreibungEinheit
0Hash of „OpenEMS“uint16Kennung 0x6201
2–4OpenEMS Version Major/Minor/Patchuint16Softwareversion
5Manufacturerstring16Hersteller
200Component-IDstring16_sum
222_sum/Stateenum160: Ok, 1: Info, 2: Warning, 3: Fault
302_sum/EssSocuint16Ladezustand des Speichers%
303_sum/EssActivePowerfloat32Speicherleistung AC, negativ = Laden, positiv = EntladenW
315_sum/GridActivePowerfloat32Netzleistung, negativ = Einspeisung, positiv = BezugW
327_sum/ProductionActivePowerfloat32Gesamte ErzeugungW
331_sum/ProductionAcActivePowerfloat32Erzeugung ACW
339_sum/ProductionDcActualPowerfloat32Erzeugung DCW
343_sum/ConsumptionActivePowerfloat32VerbrauchW
351_sum/EssActiveChargeEnergyfloat64Energie SpeicherbeladungWh
355_sum/EssActiveDischargeEnergyfloat64Energie SpeicherentladungWh
359_sum/GridBuyActiveEnergyfloat64Energie NetzbezugWh
363_sum/GridSellActiveEnergyfloat64Energie NetzeinspeisungWh
367_sum/ProductionActiveEnergyfloat64Energie ErzeugungWh
379_sum/ConsumptionActiveEnergyfloat64Energie VerbrauchWh
391–395_sum/EssActivePowerL1 … L3float32Speicherleistung je PhaseW
397–401_sum/GridActivePowerL1 … L3float32Netzleistung je PhaseW
403–407_sum/ProductionAcActivePowerL1 … L3float32Erzeugung AC je PhaseW
409–413_sum/ConsumptionActivePowerL1 … L3float32Verbrauch je PhaseW
415_sum/EssDischargePowerfloat32Tatsächliche Entladeleistung AC, negativ = LadenW
417_sum/GridModeenum161: On-Grid, 2: Off-Grid

Ein float32 belegt zwei Register, ein float64 vier.

Beispiel: Ladezustand mit QModMaster lesen​

Das kostenlose Programm QModMaster eignet sich gut für einen ersten Test. Gelesen wird der Ladezustand aus Register 302 (_sum/EssSoc, uint16).

Basisadresse auf 0 stellen

QModMaster beginnt ab Werk bei Adresse 1. Stellen Sie die Base Address auf 0, sonst sind alle Adressen um eins verschoben.

Verbindung einrichten

Tragen Sie unter Modbus TCP Settings die IP-Adresse des SOLIO als Slave IP und 502 als TCP Port ein.

Register lesen

Wählen Sie als Function Code Read Input Registers (0x04), als Start Address 302 und bei Number of Registers 1. Klicken Sie auf Read/Write. Der Wert erscheint im unteren Bereich.

QModMaster: Base Address auf 0 stellen
Base Address auf 0 stellen
QModMaster: gelesener Ladezustand
Der gelesene Ladezustand

Zum Vergleich können Sie den Wert mit dem Ladezustand im Portal abgleichen.

Schreibzugriff​

Mit dem Schreibzugriff kann ein externes System die Wirk- und Blindleistung des Speichers vorgeben. Er gehört nicht zum Standardumfang, kann aber jederzeit über die App Modbus/TCP Schreibzugriff freigeschaltet werden. Sprechen Sie uns dazu an.

ParameterWert
GeräteadresseIP-Adresse des SOLIO
Port502
Unit-ID1
Function Codes03, 04 (Lesen), 06 (Write Single Register), 16 (Write Multiple Registers)
Timeout60 Sekunden (Standard)

Beschreibbare Register​

Die Register gehören zum Block des Speichers (ess0). Die Adressen unten gelten für eine typische Anlage. Prüfen Sie sie in der Registertabelle Ihrer Anlage.

AdresseNameTypBedeutungEinheit
706ess0/SetActivePowerEqualsfloat32Vorgabe WirkleistungW
708ess0/SetReactivePowerEqualsfloat32Vorgabe Blindleistungvar
710ess0/SetActivePowerLessOrEqualsfloat32Vorgabe maximaler EntladeleistungW
712ess0/SetReactivePowerLessOrEqualsfloat32Vorgabe maximaler Blindleistungvar
714ess0/SetActivePowerGreaterOrEqualsfloat32Vorgabe maximaler BeladeleistungW
716ess0/SetReactivePowerGreaterOrEqualsfloat32Vorgabe minimaler Blindleistungvar
  • Vorzeichen: Negative Werte laden den Speicher, positive Werte entladen ihn.
  • Timeout: Eine Vorgabe gilt nur für die Dauer des Timeouts, standardmäßig 60 Sekunden. Senden Sie den Wert deshalb regelmäßig neu. Kommt keine neue Vorgabe, übernimmt wieder die normale Regelung.
  • Tatsächlicher Wert: Die Grenzen des Speichers gelten weiter. Die tatsächliche Leistung kann deshalb von der Vorgabe abweichen.

Anzeige im Portal​

Ist der Schreibzugriff eingerichtet, finden Sie im Menü unter Speichersystem einen eigenen Eintrag für die Schnittstelle. Er zeigt den Aktuellen Status (Externe Vorgabe wird berücksichtigt oder Keine externe Vorgabe vorhanden), die zuletzt geschriebene Vorgabe und den Tatsächlichen Wert. Über Protokoll Herunterladen erhalten Sie dort ebenfalls die Registertabelle.

Beispiel: Entladeleistung mit QModMaster vorgeben​

Im Beispiel soll der Speicher mit 4.000 W entladen. Geschrieben wird ess0/SetActivePowerEquals in Register 706 (float32, zwei Register).

Grundeinstellungen prüfen

Base Address steht auf 0, Endian auf Big.

Wert schreiben

Wählen Sie als Function Code Write Multiple Registers (0x10), als Start Address 706, bei Number of Registers 2 und als Data Format Float. Tragen Sie 4000 ein und klicken Sie auf Read/Write.

Ergebnis prüfen

Im Portal sehen Sie unter Speichersystem, dass der Speicher entlädt. Nach 60 Sekunden ohne neue Vorgabe endet sie.

QModMaster: Einstellungen für den Schreibzugriff
Einstellungen für den Schreibzugriff
QModMaster: Float-Wert 4000 schreiben
Den Wert 4000 als Float schreiben

Passende Themen​