Übersicht Modbus Master



Mit diesem Funktionsbaustein wird die Modbus Master Funktion konfiguriert. Die Konfiguration ist hierbei in Slaves und Register unterteilt. Mit Slave ist hierbei eine Modbus ID gemeint, mehrere Slaves können auch dieselbe Schnittstelle verwenden. Sind mehrere Schnittstellen konfiguriert, werden diese der Reihe nach ausgelesen.

Der Funktionsbaustein ist auf 128 Registerzeilen begrenzt, werden mehr Register benötigt, können diese auf mehrere Funktionsbausteine aufgeteilt werden. Jede Registerzeile belegt so viele Ausgänge, wie unter „Anzahl Block lesen" eingestellt sind.

Wichtig: An den Funktionsbausteinen müssen immer Variablen verknüpft werden. Beim Erzeugen der Variablen geschieht dies automatisch.

Bereits integrierte Geräte-Vorlagen sowie Tipps zur Fehlersuche finden sich am Ende dieser Seite, siehe Vorlagen und Fehlersuche bei RTU (RS485).

Inhaltsverzeichnis


Parameter

Deaktivieren Mit diesem Parameter wird der Baustein deaktiviert und die Register nicht mehr abgefragt. Dies kann zur Diagnose verwendet werden um bestimmte Register vorübergehend auszublenden.
Modbus ID
Modbus ID (Slave Adresse) des Gerätes, Wertebereich 0 bis 255.
Telegrammabstand Minimaler Telegrammabstand. Laut Modbus Spezifikation ist der minimale Telegrammabstand 3.5 Zeichen und mindestens 1.75 ms, dies ist für manche Geräte zu kurz, dieser Parameter wird zum Standard Abstand addiert.
Timeout
Zeit die auf eine Antwort des Slaves gewartet wird bis ein Fehler erkannt wird.
Protokoll
Auswahl des Protokolls

  • Modbus RTU (RS485)
  • Modbus TCP
Schnittstelle
Bei Auswahl des Protokolls Modbus RTU werden hier die Schnittstellenparameter eingestellt. Wichtig: Über USB Umsetzer dürfen nur nicht kritische Komponenten verwendet werden.

Wichtig: Wenn mehrere Modbus Slaves auf einer Schnittstelle betrieben werden, müssen alle Funktionsbausteine die selben Schnittstellenparameter haben.
IP Adresse, Port
Bei Auswahl des Protokolls Modbus TCP werden hier die IP Adresse und der Port eingestellt, Standardport für Modbus ist 502.
Register Adressen Hier kann eingestellt werden ob die Register Adressen bei 0 oder 1 beginnen. Bei „Beginn mit 1" wird von jeder eingetragenen Registeradresse 1 abgezogen, bevor das Telegramm gesendet wird. Damit können die Adressen so eingetragen werden, wie sie in der Beschreibung des Gerätes stehen.
Register Öffnet die Liste der Register. Dieselbe Liste wird auch mit einem Rechtsklick auf den Baustein geöffnet. Die Parameter der Liste sind weiter unten beschrieben.
Verbindungen zusammenfassen Nur bei TCP. Mit dieser Option werden Geräte mit der selben IP Adresse und Portnummer über eine gemeinsame Verbindung ausgelesen. Standardmäßig werden alle Funktionsbausteine über separate Verbindungen ausgelesen. Das Zusammenfassen von Verbindungen kann bei Geräten notwendig sein die nur eine begrenzte Anzahl an gleichzeitigen Verbindungen zulassen.

Parameter Register

Die Liste der Register wird über den Parameter „Register" oder mit einem Rechtsklick auf den Baustein geöffnet. In der Werkzeugleiste der Liste können Zeilen hinzugefügt, gelöscht, verschoben und dupliziert werden, mit „Vorlage" wird die Konfiguration eines bereits integrierten Gerätes geladen und mit „Ex-Import" die Liste als Datei exportiert oder importiert (siehe unten). Ist „Register Hex" angewählt, werden die Registeradressen hexadezimal angezeigt und eingegeben.
Aktiv
Ist diese Option nicht angewählt, wird das Register nicht abgefragt und nicht geschrieben.
Name
Bezeichnung des Registers. Der Name wird beim automatischen Erzeugen der Variablen übernommen.
Register Adresse
Registeradresse laut Beschreibung des Slaves. Ob die Zählung bei 0 oder bei 1 beginnt, wird mit dem Parameter „Register Adressen" eingestellt.
Länge
Länge der Variable in Bit. Ein Modbus Register ist immer 16 Bit (2 Byte) groß. Die Länge legt daher fest, wie viele aufeinanderfolgende Register zu einem Wert zusammengefasst werden:
  • 16 Bit: 1 Register (2 Byte)
  • 32 Bit: 2 Register (4 Byte)
  • 64 Bit: 4 Register (8 Byte)
Bei Datentyp Register „Float" sind mindestens 32 Bit notwendig, 16 Bit wird automatisch auf 32 Bit gestellt. 32 Bit entspricht dabei einer Fließkommazahl mit einfacher Genauigkeit (IEEE 754), 64 Bit einer mit doppelter Genauigkeit.

Bei Bitbefehlen (Coils, discrete Inputs) wird diese Angabe ignoriert. Beim Schreiben von Registern werden nur 16 und 32 Bit übertragen.
Anzahl Block lesen
Anzahl an Variablen welche mit einer Abfrage gelesen werden sollen (1 bis 32). Die Variablen müssen im Slave lückenlos aufeinander folgen und alle dieselbe Länge haben; jede Variable belegt einen eigenen Ausgang des Bausteins. Gelesen werden damit „Anzahl Block lesen" mal „Länge" Register in einem Telegramm.

Beim Schreiben von Registern muss die Anzahl 1 sein. Bei Bitbefehlen (Coils, discrete Inputs) ist dies die Anzahl der Coils, beim Funktionscode 15 wird der ganze Block mit einem Telegramm geschrieben.
Datentyp Register
Auswahl zwischen Integer und Float entsprechend der Beschreibung des Slaves.
Vorzeichen
Nur bei Datentyp Integer: Auswahl zwischen unsigned (vorzeichenlos) und signed (vorzeichenbehaftet). Bei 48 und 64 Bit wird immer vorzeichenbehaftet gelesen.
Datentyp Variable
EIS-Typ der verknüpften Variable. Standardmäßig EIS 9 (Fließkomma 4 Byte). Siehe allgemeine Parameter für eine Beschreibung der EIS-Typen.
Byte order
  • Big Endian (ABCD): Standardeinstellung
  • Mid-Little Endian (CDAB): Beim Lesen von zwei Registern wird Hi-Loword vertauscht.
  • Little Endian (DCBA): Alle Bytes werden vertauscht.
Funktionscode
Modbus Funktionscode entsprechend der Beschreibung des Slaves: 01 Read Coils, 02 Read Discrete Input, 03 Read Holding Register, 04 Read Input Register, 05 Write single Coil, 06 Write single Register, 15 Write multiple Coils, 16 Write multiple Register.
Variable aktualisieren bei
  • Änderung: Standardeinstellung. Die verknüpfte Variable wird nur aktualisiert, wenn sich der gelesene Wert geändert hat.
  • Immer: Die Variable wird nach jeder erfolgreichen Abfrage aktualisiert, auch wenn sich der Wert nicht geändert hat. Damit lässt sich die Kommunikation überwachen: bleibt die Aktualisierung aus, antwortet der Slave nicht mehr. Überwacht wird dies mit dem Funktionsbaustein KNX Überwachung.
Gilt nur für Lesebefehle.
Schreiben bei
Nur für Schreibbefehle:
  • Änderung: Variable wird bei Änderung geschrieben.
  • Bei Start+Änderung: Variable wird beim Hochlauf der Steuerung einmalig und danach bei jeder Änderung geschrieben.
  • Zyklisch: Variable wird zyklisch geschrieben. Zeit aus Parameter Intervall.
Faktor
Skalierungsfaktor zwischen Register und verknüpfter Variable. Beim Lesen wird der Registerwert mit dem Faktor multipliziert, beim Schreiben wird der Variablenwert durch den Faktor dividiert. Dadurch kann derselbe Faktor in beide Richtungen verwendet werden, beispielsweise rechnet 0.001 beim Lesen W in kW um und beim Schreiben kW zurück in W. Standardwert: 1.
Offset
Offset wird beim Lesen nach der Multiplikation mit dem Faktor addiert, beispielsweise um einen Temperatur- oder Zählerwert zu korrigieren. Hinweis: Anders als der Faktor wirkt der Offset nicht symmetrisch in beide Richtungen, er wird auch beim Schreiben addiert. Bei Schreibregistern sollte der Offset daher 0 bleiben.
Intervall
Intervall in dem das Register ausgelesen wird. Für Schreibbefehle nur wenn „Schreiben bei" auf zyklisch eingestellt ist. Beim Wert 0 wird das Register so schnell abgefragt wie es die Schnittstelle zulässt.

CSV Import / Export

Über die Schaltfläche Ex-Import in der Werkzeugleiste der Registerliste können alle Konfigurationsdaten exportiert und wieder importiert werden. Das Format ist Tab-getrennt (TSV), UTF-8 kodiert. Zeilen, die mit # beginnen, sind Spaltenüberschriften und werden beim Import ignoriert.

Dateiaufbau:

# Protokoll<TAB>IP-Adresse<TAB>Port<TAB>Knoten-ID<TAB>Register-Offset<TAB>Serielle-Schnittstelle<TAB>Timeout(ms)<TAB>Telegramm-Wartezeit(ms)<TAB>TCP-kombinieren
{9 Verbindungswerte}
# Aktiv<TAB>Name<TAB>Register-Adresse<TAB>Laenge<TAB>Anzahl-Block<TAB>Datentyp-Register<TAB>Vorzeichen<TAB>Datentyp-Variable<TAB>Byte-Order<TAB>Funktionscode<TAB>Variable-aktualisieren<TAB>Schreiben-bei<TAB>Faktor<TAB>Offset<TAB>Intervall
{15 Felder pro Registerzeile}
...

Verbindungsparameter (Zeile 2, 9 Felder)

Protokoll 0 = Modbus RTU (RS485)   1 = Modbus TCP
IP-Adresse IP-Adresse des Slaves (nur TCP), z. B. 192.168.1.100. Bei RTU leer lassen.
Port TCP-Port (nur TCP), Standard 502. Bei RTU leer lassen.
Knoten-ID Modbus-Slave-ID, Wertebereich 0255.
Register-Offset 0 = Registeradresse beginnt bei 0   1 = Registeradresse beginnt bei 1
Serielle-Schnittstelle Schnittstellenparameter-String (nur RTU), z. B. COM1,9600,8,N,1. Bei TCP leer lassen.
Timeout(ms) Wartezeit auf Antwort in Millisekunden, z. B. 1000.
Telegramm-Wartezeit(ms) Zusätzliche Pause zwischen Telegrammen in Millisekunden, Standard 0.
TCP-kombinieren 0 = separate Verbindungen   1 = Verbindungen mit gleicher IP zusammenfassen

Registerparameter (ab Zeile 4, 15 Felder pro Zeile)

Aktiv 0 = Register deaktiviert   1 = Register aktiv
Name Bezeichnung des Registers. Kein Tabulator erlaubt.
Register-Adresse Modbus-Registeradresse, Wertebereich 065535.
Laenge Länge der Variablen: 1 = 16 Bit (1 Register)   2 = 32 Bit (2 Register)   3 = 64 Bit (4 Register)
Anzahl-Block Anzahl Variablen, die mit einer Abfrage gelesen werden (1–32). Bei Schreibbefehlen muss der Wert 1 sein.
Datentyp-Register 0 = Integer   1 = Float
Vorzeichen 0 = Unsigned   1 = Signed (nur bei Datentyp Integer)
Datentyp-Variable Index des Variablentyps:
0 EIS 0: Konstante
1 EIS 1: Bit schalten (Bit)
2 EIS 2: Dimmen (4 Bit)
3 EIS 3: Zeit (3 Byte)
4 EIS 4: Datum (3 Byte)
5 EIS 5: Fließkomma (2 Byte)
6 EIS 6: Relativ Wert 0–100% (1 Byte)
7 EIS 7: Antriebsteuerung (Bit)
8 EIS 8: Zwangsteuerung/Priorität (2 Bit)
9 EIS 9: Fließkomma (4 Byte) – häufigste Verwendung
10 EIS 10: Zählerwert 16 Bit (2 Byte)
11 EIS 11: Zählerwert 32 Bit (4 Byte)
12 EIS 12: Zugangskontrolle (4 Byte)
13 EIS 13: ASCII Zeichen (1 Byte)
14 EIS 14: Zählerwert (1 Byte)
15 EIS 15: Zeichenkette (14/255 Byte)
16 EIS 16: Zählerwert (8 Byte)
17 EIS 17: Fließkomma (8 Byte)
Byte-Order 0 = Big Endian (ABCD) – Standard
1 = Mid-Little Endian (CDAB)
2 = Little Endian (DCBA)
Funktionscode Echter Modbus-Funktionscode (nicht der Index):
1 = Read Coils
2 = Read Discrete Input
3 = Read Holding Register
4 = Read Input Register
5 = Write Single Coil
6 = Write Single Register
15 = Write Multiple Coils
16 = Write Multiple Registers
Variable-aktualisieren 0 = nur bei Änderung   1 = immer (auch ohne Wertänderung)
Schreiben-bei 0 = Änderung   1 = Start + Änderung   2 = Zyklisch
Faktor Skalierungsfaktor (Dezimalzahl), Standard 1. Beim Lesen wird der Registerwert mit dem Faktor multipliziert, beim Schreiben dividiert — derselbe Wert kann daher in beide Richtungen verwendet werden. Beispiel: 0.001 um beim Lesen Wh in kWh umzurechnen (und beim Schreiben umgekehrt).
Offset Additionswert zum Registerwert (Dezimalzahl), Standard 0.
Intervall Abfrageintervall in Millisekunden. Bei Schreibbefehlen nur relevant wenn Schreiben-bei = Zyklisch.

Beispiel-CSV (Fronius Wechselrichter, Modbus TCP)

# Protokoll	IP-Adresse	Port	Knoten-ID	Register-Offset	Serielle-Schnittstelle	Timeout(ms)	Telegramm-Wartezeit(ms)	TCP-kombinieren
1	192.168.1.100	502	1	0		1000	0	0
# Aktiv	Name	Register-Adresse	Laenge	Anzahl-Block	Datentyp-Register	Vorzeichen	Datentyp-Variable	Byte-Order	Funktionscode	Variable-aktualisieren	Schreiben-bei	Faktor	Offset	Intervall
1	AC Wirkleistung [W]	40092	2	1	1	0	9	0	3	0	0	1	0	5000
1	AC Lifetime Energy [kWh]	40102	2	1	1	0	9	0	3	0	0	0.001	0	60000
1	DC Spannung [V]	40282	2	1	1	0	9	0	3	0	0	1	0	5000

Tipp: Fehlersuche bei RTU (RS485)

Fehlermeldungen im Log Im Runtime-Log (Diagnose → Log) tauchen bei Kommunikationsproblemen vor allem zwei Meldungen auf:

RTU READ ERROR – es kam gar keine oder keine vollständige Antwort innerhalb des eingestellten Timeouts. Das deutet auf ein Problem auf der Busleitung selbst hin (Verkabelung, Schnittstelleneinstellungen, fehlender Abschlusswiderstand) oder darauf, dass unter dieser Modbus ID gar kein Gerät antwortet.

RTU CRC ERROR – es kommt zwar eine Antwort, die Prüfsumme stimmt aber nicht. Das Telegramm wurde auf dem Weg verfälscht, meist durch Störungen, eine zu hohe Baudrate für die Leitungslänge oder mehrere Geräte, die gleichzeitig senden.

Davon zu unterscheiden sind RTU ERROR-Meldungen: Hier antwortet das Gerät korrekt, lehnt die Anfrage aber ab. Häufige Meldungen und Ursachen sind:
  • ILLEGAL FUNCTION – der eingestellte Funktionscode wird vom Gerät nicht unterstützt.
  • ILLEGAL DATA ADDRESS – die Registeradresse ist nicht vorhanden oder die Einstellung „Beginn mit 0/1" ist falsch.
  • ILLEGAL DATA VALUE – der geschriebene Wert oder die angeforderte Anzahl an Registern ist für das Gerät unzulässig.
  • SLAVE DEVICE FAILURE – das Gerät konnte die Anfrage wegen eines internen Fehlers nicht ausführen.
  • SLAVE DEVICE BUSY – das Gerät ist vorübergehend beschäftigt; Abfrageintervall oder Telegrammabstand erhöhen.
Diese Meldungen sind normalerweise kein Fehler der Busleitung. Registeradresse, Funktionscode, Länge, Blockanzahl und den zulässigen Wertebereich mit der Gerätebeschreibung vergleichen.
A und B vertauscht Die häufigste Ursache für „RTU READ ERROR" bei neu verkabelten Geräten. Da A und B bei Herstellern nicht einheitlich beschriftet sind (A/B, +/-, D+/D-), hilft am schnellsten der Tausch der beiden Adern auf einem Gerät zum Test. Bringt das keine Besserung, liegt die Ursache woanders.
Schnittstelleneinstellungen
Baudrate, Datenbits, Parität und Stopbits (Parameter „Schnittstelle") müssen exakt mit den Einstellungen des Gerätes übereinstimmen, sonst kommt entweder gar keine oder nur unbrauchbare Antwort an (führt ebenfalls zu CRC- oder Timeout-Fehlern). Diese Werte stehen in der Anleitung des Slaves bzw. an dessen Bedienfeld/DIP-Schaltern – im Zweifel dort nachsehen statt zu raten.

Werden mehrere Slaves auf derselben Schnittstelle betrieben, müssen alle Funktionsbausteine dieselben Schnittstellenparameter verwenden.
Abschlusswiderstand Bei längeren Leitungen (Faustregel: ab einigen zehn Metern, abhängig von Baudrate und Störeinflüssen) braucht der RS485-Bus an beiden physikalischen Enden einen Abschlusswiderstand (üblich 120 Ohm), sonst kommt es zu Reflexionen auf der Leitung. Das äußert sich meist als sporadischer CRC- oder Timeout-Fehler, der bei kurzen Testleitungen im Labor oft gar nicht auftritt und erst auf der langen Leitung in der Anlage sichtbar wird.
Doppelte Modbus ID Haben zwei Geräte am selben Bus dieselbe Modbus ID, antworten bei einer Abfrage beide gleichzeitig – die Telegramme überlagern sich auf der Leitung und ergeben einen CRC-Fehler oder eine unbrauchbare Antwort. Das tritt oft erst sporadisch auf, wenn beide Geräte zufällig zeitgleich antworten, und wirkt dadurch wie ein instabiles Kabel. Alle Modbus IDs eines Busses auf Eindeutigkeit prüfen (auch bei Geräten, die gerade nicht im Fokus stehen).
Vorgehen bei der Fehlersuche
  • Nur ein Register mit langem Intervall aktiv lassen, alle anderen deaktivieren (Spalte „Aktiv") – damit lässt sich im Log klar einer Modbus ID zuordnen, ob und wie oft Fehler auftreten.
  • Prüfen, ob der Fehler bei allen Geräten am Bus auftritt (spricht für Verkabelung/Abschlusswiderstand/ Schnittstelleneinstellungen) oder nur bei einem (spricht für A/B-Vertauschung, doppelte ID oder ein defektes Gerät).
  • Bei RTU-Umsetzern (USB-RS485 o.ä.) den Umsetzer testweise tauschen, günstige Umsetzer sind eine häufige Fehlerquelle.
  • Telegrammabstand erhöhen, falls das Gerät auf den minimalen Modbus-Abstand (3.5 Zeichen) nicht rechtzeitig reagiert.

Tipp: Fehlersuche bei Modbus TCP

Fehlermeldungen im Log Im Runtime-Log (Diagnose → Log) geben die Meldungen einen ersten Hinweis auf die Fehlerursache:
  • TCP ERROR READ 1 ... TIMEOUT – innerhalb des Timeouts kam keine Antwort. Häufige Ursachen sind eine falsche IP-Adresse oder Portnummer, eine unterbrochene Netzwerkverbindung, eine Firewall oder ein im Gerät nicht aktivierter Modbus-TCP-Dienst.
  • TCP ERROR READ 2 oder TCP ERROR READ 3 ... INCOMPLETE FRAME – die Antwort ist unvollständig oder enthält eine unplausible Länge. Verbindung, Gerät und Timeout prüfen.
  • TCP ERROR SEND – die Anfrage konnte nicht über die bestehende Verbindung gesendet werden. Das Gerät oder die Netzwerkverbindung wurde wahrscheinlich getrennt.
  • TCP ERROR RESPONSE ID, RESPONSE FC oder DATA SIZE – Modbus ID, Funktionscode oder Länge der Antwort passen nicht zur Anfrage. Geräteparameter und Registerkonfiguration prüfen.
  • TCP ERROR TRANSACTION ID – die Antwort gehört nicht zur erwarteten Anfrage. Das kann bei einem überlasteten oder fehlerhaften Gerät sowie bei ungeeignetem Zusammenfassen von Verbindungen auftreten.
  • TCP ERROR ... ILLEGAL FUNCTION, ILLEGAL DATA ADDRESS oder ILLEGAL DATA VALUE – das Gerät ist erreichbar, lehnt aber Funktionscode, Registeradresse, Blocklänge oder Wert ab. Dies ist normalerweise kein Netzwerkfehler.
Erreichbarkeit und Port prüfen IP-Adresse und Port mit der Gerätekonfiguration vergleichen; der Standardport ist 502. Prüfen, ob Steuerung und Gerät im selben Netzwerk liegen und ob IP-Adresse, Subnetzmaske und gegebenenfalls Gateway richtig eingestellt sind. Das Gerät sollte von einem Rechner im selben Netzwerk erreichbar sein. Eine erfolgreiche Ping-Antwort beweist jedoch nur die Netzwerkverbindung – Modbus TCP kann trotzdem deaktiviert oder durch eine Firewall gesperrt sein.
Modbus TCP am Gerät Bei vielen Geräten muss Modbus TCP zuerst aktiviert werden. Manche Geräte erlauben zusätzlich nur bestimmte Gegenstellen oder benötigen trotz TCP eine bestimmte Modbus ID (Unit ID). Bei TCP-zu-RTU-Gateways bestimmt diese ID, welcher RTU-Slave angesprochen wird. Die zulässige ID in der Anleitung des Gerätes oder Gateways prüfen.
Verbindungen und Auslastung Manche Geräte lassen nur eine oder wenige gleichzeitige TCP-Verbindungen zu. Werden mehrere Modbus-Master-Bausteine mit derselben IP-Adresse verwendet, die Option Verbindungen zusammenfassen aktivieren. Bei sporadischen Fehlern zusätzlich Abfrageintervall oder Timeout erhöhen und die Anzahl gleichzeitig abgefragter Register verringern.
Vorgehen bei der Fehlersuche
  • Prüfen, ob sich die IP-Adresse des Gerätes durch DHCP geändert hat; für fest eingebundene Geräte eine feste Adresse oder DHCP-Reservierung verwenden.
  • Nur ein bekanntes Register aktiv lassen und Adresse, Funktionscode, Modbus ID sowie Einstellung „Beginn mit 0/1" mit der Gerätebeschreibung vergleichen.
  • Netzwerkkabel, Switch-Port und Statusanzeigen prüfen und das Gerät testweise direkt im selben Netzwerksegment ansprechen.
  • Bei mehreren Bausteinen zur selben IP zunächst nur einen Baustein aktiv lassen. Funktioniert dieser, Verbindungsanzahl und Abfragelast schrittweise erhöhen.
  • Treten die Fehler erst unter Last auf, Blocklänge und Abfragerate reduzieren oder Timeout und Telegrammabstand erhöhen.

Vorlagen

Folgende Geräte sind bereits als Vorlage integriert. Weitere können manuell konfiguriert werden. Das Vorlagen-Menü ist nach Gerätegruppen unterteilt; der oberste Eintrag Suchen öffnet ein Menü mit Suchfeld, das alle Vorlagen unabhängig von der Gruppe findet.

Wechselrichter / Akku:
    Fronius Symo Gen 24 Float (TCP)
    Fronius Symo Gen 24 Float Batterie (TCP)
    Fronius Symo Gen 24 Float Smart Meter (TCP)
    Fronius Verto Float (TCP)
    Fronius Verto Float Batterie (TCP)
    Huawei (TCP)
    Huawei Batterie (TCP)
    Huawei EMMA (TCP)
    Kostal PIKO IQ / PLENTICORE (TCP)
    Solaredge (TCP)
    Solaredge (TCP) + Smartmeter
    Solax (TCP) + Smartmeter
    Solax EMS1000 (TCP)
    Solax EMS1000 Wechselrichter/Batterie (TCP)
    Solax EMS1000 Steuerung TRENE (TCP)
    SOFAR BTS-5K 10-10 (RTU)
    SOFAR BTS-5K 10-10 Batterie (RTU)
    Sungrow SH15/20/25T (TCP)
    Wattsonic Gen3 (RTU)
    Wattsonic Gen3 Batterie (RTU)
    Wenergy Akku Star289 (TCP)

Wallbox:
    Wallbox KEBA KeContact P30 (TCP)
    Wallbox KEBA KeContact P40 / P40 Pro (TCP)
    Wallbox ABB Terra AC (TCP)
    Wallbox ABB Terra AC (RTU)
    Wallbox Siemens VersiCharge (TCP)
    Wallbox HAGER Witty Plus (TCP)
    Wallbox Alpitronic 150 (TCP)

Wärmepumpe / Kessel:
    Ochsner (RTU)
    Fröhling Lamdatronic 3200 (RTU)
    OEKOBOILER (RTU)
    KNV (TCP)
    NIBE S-Serie (TCP)
    Templari

Klima:
    Samsung MIM-B19N (RTU)

Energiezähler:
    Energiezähler SDM 630 (RTU)
    Energiezähler DS100 (RTU)
    EMU Professional II (RTU)
    SINEAX AMx000 (TCP)
    Janitza UMG 604 (TCP)

Wetterstation:
    Wetterstation Thies (RTU)

Allgemein:
    Victron Cerbo (TCP)
    SMARTFOX Pro (TCP)


KEBA Ladestationen

Unterstützte Geräte
  • KeContact P30 c-Serie ab Firmware 3.10.16 und KeContact P30 x-Serie ab Software 1.11. Die Schnittstelle wird an der Ladestation mit dem DIP-Schalter DSW1.3 = ON freigegeben. Modbus TCP und die UDP-Schnittstelle der Ladestation schließen einander aus, es kann nur eine von beiden genutzt werden. Die b-Serie hat keine Netzwerkschnittstelle und unterstützt kein Modbus.
  • KeContact P40 und P40 Pro. Die Schnittstelle ist ab Werk abgeschaltet und wird in der KEBA eMobility App oder über OCPP freigegeben. Das Auslesen der RFID-Karte muss zusätzlich einzeln erlaubt werden.
Verbindung Protokoll TCP, Port 502, Modbus ID 255 und Beginn der Registeradresse mit 0. Die Ladestation kennt nur die Funktionscodes 3 (Lesen) und 6 (Schreiben, ein Register). Je Anfrage wird immer nur ein Register übertragen, die Anzahl Register je Block bleibt daher auf 1. Jeder Lesewert ist 4 Byte groß, die Länge ist also 32 Bit; geschrieben wird mit 16 Bit. KEBA empfiehlt einen Abstand von mehr als 0,5 s zwischen zwei Leseanfragen und mehr als 5 s zwischen zwei Schreibvorgängen.
Schreibregister nicht lesen Die Register ab 5000 sind reine Schreibregister. Wird ein solches Register mit Funktionscode 3 abgefragt, antwortet die Ladestation nicht und im Protokoll erscheint fortlaufend TCP ERROR READ 1 ... TIMEOUT. In der Vorlage sind diese Register deshalb mit Funktionscode 6 und Schreiben bei Änderung hinterlegt; das Abfrageintervall hat dort keine Bedeutung.
Register lesen
(Funktionscode 3)
  • 1000 Ladezustand: 0 = Anlauf, 1 = nicht bereit, 2 = bereit und wartet auf das Fahrzeug, 3 = lädt, 4 = Störung, 5 = unterbrochen (zu hohe Temperatur oder gesperrt)
  • 1004 Kabelzustand: 0 = kein Kabel, 1 = Kabel an der Ladestation, 3 = Kabel an der Ladestation und verriegelt, 5 = Kabel an Ladestation und Fahrzeug, 7 = zusätzlich verriegelt
  • 1006 Fehlercode, 0 = kein Fehler
  • 1008 / 1010 / 1012 Ladestrom L1 / L2 / L3 in mA
  • 1014 Seriennummer
  • 1016 Gerätetyp und Ausstattung
  • 1018 Firmwarestand (P30 hexadezimal zu lesen, P40 als Dezimalzahl, z.B. 10000 = 1.0.0)
  • 1020 Wirkleistung in mW
  • 1036 Zählerstand gesamt in 0,1 Wh
  • 1040 / 1042 / 1044 Spannung L1 / L2 / L3 in V
  • 1046 Leistungsfaktor in 0,1 %
  • 1100 eingestellter maximaler Ladestrom in mA
  • 1110 vom Gerät unterstützter maximaler Strom in mA (kleinster Wert aus DIP-Schaltern, Kabelkodierung und Temperaturüberwachung)
  • 1200 Schnellladen (nur P40): 1 = eingeschaltet, der Ladestrom lässt sich dann nicht über Modbus steuern
  • 1500 die ersten 4 Byte der Kennung der verwendeten RFID-Karte
  • 1502 geladene Energie der laufenden Ladung in 0,1 Wh
  • 1550 Quelle der Phasenumschaltung, 1552 Phasenlage (1 oder 3)
  • 1600 eingestellter Notstrom in mA, 1602 eingestellte Notüberwachungszeit in s
  • 1700 / 1702 Hardwarestand (nur P40)
Register schreiben
(Funktionscode 6)
  • 5004 Ladestrom in mA. P30: 6000 bis 63000. P40: zusätzlich 0, das unterbricht die Ladung; oberer Wert 32000.
  • 5010 Energiemenge für die laufende Ladung in 10 Wh. Ist sie erreicht, wird die Ladung beendet; 0 löscht die Vorgabe.
  • 5012 Stecker entriegeln, Wert 0. Die Ladung muss vorher beendet sein.
  • 5014 Ladestation freigeben: 0 = gesperrt, 1 = freigegeben. Eine laufende Ladung wird abgebrochen.
  • 5016 Notstrom in mA: 0 sperrt die Ladung, sonst 6000 bis 32000.
  • 5018 Notüberwachungszeit in s: 0 schaltet die Überwachung ab, sonst 5 bis 600.
  • 5020 Noteinstellung dauerhaft speichern, Wert 1 (nur P30).
  • 5050 Quelle der Phasenumschaltung, 5052 Phasenumschaltung auslösen (0 = 1-phasig, 1 = 3-phasig).
  • 5200 Schnellladen für die laufende Ladung einschalten, Wert 1 (nur P40). Ausschalten ist über Modbus nicht möglich.
Notbetrieb (Failsafe) Damit die Ladestation bei einem Ausfall der Verbindung nicht mit dem zuletzt vorgegebenen Strom weiterlädt, lässt sich ein Notbetrieb einstellen. Scharf wird er erst mit einer Notüberwachungszeit größer 0 in Register 5018; der Strom aus Register 5016 allein genügt nicht. Jedes empfangene Modbus-Telegramm setzt die Zeit zurück – auch ein Lesezugriff. Bleibt es aus, schaltet die Ladestation auf den Notstrom. Zum Abschalten wird 5018 auf 0 gesetzt. In den Vorlagen sind diese Register angelegt, aber nicht aktiv.
Bekannte Abweichung Beim P40 mit einem Softwarestand unter 1.2.1 melden die Register 1036 und 1502 den Wert in Wh statt in 0,1 Wh. In diesem Fall ist der Faktor der beiden Register zu verzehnfachen.

Siehe auch allgemeine Parameter aller Funktionsbausteine.