Ü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 Ausgänge begrenzt, werden mehr Register benötigt, können diese auf mehrere Funktionsbausteine aufgeteilt werden.

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

Folgende Geräte sind bereits als Vorlage integriert. Weitere können manuell konfiguriert werden.

Wechselrichter:
    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)
    Solaredge (TCP)
    Solaredge (TCP) + Smartmeter
    Solax (TCP) + Smartmeter
    Sungrow SH15/20/25T (TCP)

Wallbox:
    Wallbox KEBA KeContact P30 (TCP)
    Wallbox ABB Terra AC (TCP)
    Wallbox ABB Terra AC (RTU)
    Wallbox Siemens VersiCharge (TCP)

Wärmepumpe / Kessel:
    Ochsner (RTU)
    Fröhling Lamdatronic 3200 (RTU)

Klima:
    Samsung MIM-B19N (RTU)

Energiezähler:
    Energiezähler SDM 630 (RTU)
    EMU Professional II (RTU)
    SINEAX AMx000 (TCP)

Wetterstation:
    Wetterstation Thies (RTU)

Allgemein:
    Victron Cerbo (TCP)






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
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
Schnittstellenparameter
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 Adresse Hier kann eingestellt werden ob die Register Adresse bei 0 oder 1 beginnen.
Verbindung trennen Nur bei TCP. Mit dieser Option wird die Verbindung zum Modbus TCP Slave getrennt und neu initialisiert. Dies kann bei manchen Geräten notwendig sein wenn diese nach einer gewissen Zeit nicht mehr antworten oder bei Inaktivität die Verbindung trennen, beispielsweise wenn nur geschrieben wird und es keine Änderungen gibt.
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

Register aktiv
Ist diese Option nicht angewählt, wird das Register nicht abgefragt.
Kommentar
Bezeichnung des Registers
Adresse
Registeradresse. Diese beginnt immer bei 0.
Register Länge
Anzahl an Registern welche die Variable umfasst. Ein Register ist immer 2 Byte lang. Bei Bitbefehlen (Coils, discrete Inputs) wird diese Angabe ignoriert.
Anzahl Block Lesen
Anzahl an Variablen welche mit einer Abfrage gelesen werden sollen. Gilt nicht für Schreibbefehle, wenn Daten geschrieben werden muss die Anzahl 1 sein.

Bei Bitbefehlen (Coils, discrete Inputs) ist dies die Anzahl der Coils die gelesen werden.
Schreiben bei
  • Änderung: Variable wird bei Änderung geschrieben.
  • Zyklisch: Variable wird zyklisch geschrieben. Zeit aus Parameter Intervall.
Initialisieren
Schreiben des Registers einmalig bei Hochlauf der Steuerung bzw. Änderung des Projektes. 
Funktionscode
Modbus Funktionscode.
Intervall
Intervall in der das Register ausgelesen wird. Für Schreibbefehle nur wenn Senden auf zyklisch eingestellt.
Aktualisierung lesen
Verknüpfte Variable nur aktualisieren wenn sich der Wert geändert hat. Nur Lesebefehle. Standard ist ein. Diese Option kann beispielsweise verwendet werden um die Kommunikation zu überwachen, die Variable wird nur dann aktualisiert, wenn die Lesefabfrage erfolgreich war, da die Variable auch ohne Änderung des Wertes aktualisiert wird, kann dies mit dem Funktionsbaustein KNX Überwachung überwacht werden.
Register
Datentyp des Modbus Registers, dieser muss der Beschreibung des Slaves entnommen werden.
Byte Order
  • Big Endian (ABCD): Standardeinstellung
  • Mid-Little Endian (CDAB): Beim Lesen von zwei Registern wird Hi-Loword vertauscht.
Faktor
Wert des Modbus Registers wird mit diesem Faktor multipliziert, beispielsweise um einen Zählerwert von W auf kW umzurechnen.
Offset
Offset wird zum Wert des Modbus Registers addiert, beispielsweise um einen Temperatur oder Zählerwert zu korrigieren.

CSV Import / Export

Über die Schaltfläche CSV in der Toolbar 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 1 = 16 Bit   2 = 32 Bit   3 = 64 Bit
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 Multiplikator für den Registerwert (Dezimalzahl), Standard 1. Beispiel: 0.001 um Wh in kWh umzurechnen.
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

Siehe auch allgemeine Parameter aller Funktionsbausteine.