Der Modbus Master Treiber ermöglicht es Datenpunke/Register aus Geräten die als Modbus Slave arbeiten auszulesen sowie zu schreiben. Jeder Modbus Slave kann bis zu vier verschiedene Registertypen zur Verfügung stellen.
1.Holding Register | 16Bit Register mit Lese-/Schreibzugriff |
---|---|
2.Input Register | 16Bit Register mit Lesezugriff |
3.Coil Register | 1Bit Register mit Lese-/Schreibzugriff |
4.Status Register | 1Bit Register mit Lesezugriff |
Für die Register werden jeweils unterschiedliche Lese- sowie Schreibfuntionen genutzt.
Register lesen | Register schreiben | Mehrere zusammenhängende Register schreiben (MultiWrite, default) | |
---|---|---|---|
Holding | 3 | 6 | 16 |
Input | 4 | – | – |
Coil | 1 | 5 | 15 |
Status | 2 | – | – |
Der Name des Modbus-Treibers lautet: mod
Die Routing-Adresse des ersten Modbus-Treibers ist die 80
Die Datenpunktdatei für den ersten Modbus-Treiber heißt: modmster1.txt
Die Konfigurationsdatei für globale Einstellungen des ersten Modbus-Treibers heißt: modmster1.cfg
Bei dem Modbus-Treiber sowie allen weiteren Gateway-Treibern gilt für die Definiton von Datenpunkten in der Datenpunktdatei:
Typ: | Bedeutung |
---|---|
M | Ganzzahliger Wert (Binäre Datenpunkte,Zählwerte) der vom Gateway nur gelesen werden kann/soll. |
S | Ganzzahliger Wert der vom Gateway gelesen sowie geschrieben werden kann/soll. |
X | Analogwert (mit Nachkommastellen) der vom Gateway nur gelesen werden kann/soll. |
Y | Analogwert (mit Nachkommastellen) der vom Gateway gelesen sowie geschrieben werden kann/soll. |
A | String, findet z.B. Verwendung bei BACnet Trends und ESPA4.4.4 Datenpunkten |
Die Adressen sind wie folgt aufgebaut.
„<slave> <register> <no>[.<bit>]“
Hinweis: Bei Verwendung der Einzelbitadressierung über <.bit> ist die Nummerierung der Bits von 1..16. Bit 0 = 1, Bit 15 = 16
Kommunikationsstatus mit MODBUS-Slave: „<slave> failure“
Dabei gilt folgende Definition:
Parameter | Wertebereich | Beschreibung |
---|---|---|
<slave> | 0 - 247 | Adresse des anzusprechenden Slave-Gerätes |
<register> | holding, input, coil, status | Registertyp |
<no> | 0 - 65535 | Registeradresse |
<bit> | 1-16 | Einzelbit innerhalb des Registers |
Die Adresse des Coil-Registers 120 vom Slave „2“ wird demnach wie folgt in der Datei modmsterX.txt angegeben:
[M 2 coil 120]
Um dem Treiber mitzuteilen wie er die unter einem Register abgelegten Informationen auswerten kann muss für jeden Datenpunkt das Format übergeben werden. Dies erfolgt anhand der Formatdefinition:
format = <format>
Dabei kann <format> folgende Werte annehmen:
<format> | Beschreibung |
---|---|
u | 16bit integer unsigned (Vorzeichenlos) |
ut | 16bit unsigned / 10 (Gewinn einer Nachkommastelle) |
uh | 16bit unsigned / 100 (Gewinn zweier Nachkommastellen) |
um | 16bit unsigned / 1000 |
s | 16bit integer signed (Vorzeichenbehaftet) |
st | 16bit signed / 10 (Gewinn einer Nachkommastelle) |
sh | 16bit signed / 100 (Gewinn zweier Nachkommastellen) |
sm | 16bit signed / 1000 |
c | 32bit integer signed |
ci | 32bit signed (Bytereihenfolge vertauscht) |
ct | 32bit signed / 10 (Gewinn einer Nachkommastelle) |
ch | 32bit signed / 100 (Gewinn zweier Nachkommastellen) |
cm | 32bit signed / 1000 |
u32 | 32bit integer unsigned |
u32s | 32bit integer unsigned (Wortreihenfolge vertauscht) |
u64 | 64bit integer unsigned |
f | 32bit IEEE754 floating point (Fliesskommazahl) |
fi | 32bit IEEE754 floating point (Bytereihenfolge vertauscht) |
j | 32bit IEEE754 floating point (Fliesskommazahl mit vertauschten Worten) |
ji | 32bit IEEE754 floating point (Byte- und Wortreihenfolge vertauscht) |
d | 64bit IEEE754 floating point (Fliesskommazahl) |
dm | 64bit IEEE754 floating point (Bytereihenfolge vertauscht) |
bcd | 16bit BCD |
sbit06 | 1bit Einzelbit aus Holding oder Input Register. Erfordert die Angabe von <bit> in der Adresse. Zum schreiben wird Funktionscode 06 bzw. 05 verwendet. |
sbit16 | 1bit Einzelbit aus Holding oder Input Register. Erfordert die Angabe von <bit> in der Adresse. Zum schreiben wird Funktionscode 16 bzw. 15 verwendet. |
Weitere spezielle Formate auf Anfrage.
Für Coil- sowie Status-Register wird keine Formatangabe benötigt.
32bit-Formate benötigen mehr als ein Register, die fehlenden Register werden aus den nachfolgenden Registern gebildet. Diese Register sind dann für andere Datenpunkte nicht mehr verwendbar!
Typische Datenpunktdefinitionen können demnach sein:
[M 2 failure]
name = Ausfall der Kommunikation zu MODBUS-Slave-2 (0=OK 1=Ausfall)
query = pe
[M 2 status 5]
name = digitale Betriebsmeldung
query = pe
[S 2 coil 10]
name = digitaler Sollwert
query = pe
writecache = yes
[M 2 input 10.3]
name = digitale Betriebsmeldung
query = pe
format = sbit06
[S 2 holding 11.5]
name = digitaler Sollwert
query = pe
format = sbit06
writecache = yes
[M 2 holding 15]
name = multistate Meldung z.B. 0,1,2 für Aus,An,Auto
query = pe
format = u
[S 2 holding 16]
name = multistate Sollwert z.B. Stufenschalter 0,1,2 für Aus,An,Auto
query = pe
format = u
writecache = yes
[X 2 input 17]
name = Temperatur Messwert (Register 17+18)
query = pe
format = f
[Y 2 holding 17]
name = Temperatur Sollwert, eine Nachkommastelle
query = pe
format = st
writecache = yes