Modbus-Tabellenformat und Datentypen
Format der Tabellen
Die Registertabellen umfassen folgende Spalten:
Adresse |
Register |
Nr. |
R/W |
X |
Einheit |
Typ |
Bereich |
Standardwert |
Sich |
Funktionscode |
Beschreibung |
Bezeichnung |
Beschreibung |
---|---|
Adresse |
16-Bit-Registeradresse im Hexadezimalformat. Die Adresse entspricht der Angabe im Modbus-Rahmen. |
Register |
16-Bit-Registernummer im Dezimalformat. Register = Adresse + 1 |
Nr. |
Anzahl der 16-Bit-Register, die gelesen/geschrieben werden müssen, um auf die vollständigen Informationen zuzugreifen. |
R/W |
Register mit Schreibschutz (R) oder mit Schreib-/Lesezugriff (R/W). |
X |
Skalenfaktor:
|
Einheit |
Informationen zur Messeinheit:
|
Typ |
Typ der codierten Daten (siehe Datentyptabelle). |
Bereich |
Zulässige Werte für die jeweilige Variable, in der Regel ein Teilbereich des formatabhängigen Wertebereichs. Für den Datentyp BITMAP ist der Inhalt dieser Domäne „–“. |
Standardwert |
Standardwert für die Variable. |
Sich |
Sicherung des Wertes bei einem Ausfall der Versorgungsspannung:
HINWEIS: Beim Einschalten oder bei einer Reinitialisierung
werden die verfügbaren Werte übernommen.
|
Funktionscode |
Code der verwendbaren Funktionen im Register |
Beschreibung |
Informationen über das Register und die geltenden Einschränkungen |
Datentypen
Die folgenden Datentypen werden in den Tabellen der Modbus-Register angezeigt:
Name |
Beschreibung |
Bereich |
---|---|---|
UINT |
16-Bit-Ganzzahl ohne Vorzeichen (1 Wort) |
0 bis 65535 |
INT |
16-Bit-Ganzzahl mit Vorzeichen (1 Wort) |
-32768 bis +32767 |
UINT32 |
32-Bit-Ganzzahl ohne Vorzeichen (2 Wörter) |
0 bis 4 294 967 295 |
INT32 |
32-Bit-Ganzzahl mit Vorzeichen (2 Wörter) |
-2 147 483 648 bis +2 147 483 647 |
Float32 |
32-Bit-Wert (2 Wörter) |
-3,4028E+38 bis +3,4028E+38 |
ASCII |
Alphanumerisches Zeichen aus 8 Bit |
Tabelle der ASCII-Zeichen |
BITMAP |
16-Bit-Feld (1 Wort) |
– |
DATE |
Siehe Datumstabelle |
– |
Daten des Typs Float32: Einzel-Präzisions-Float mit Vorzeichen-Bit, 8-Bit-Exponent, 23-Bit-Mantisse (positiv und negativ normalisiert reell)
Für Daten des Typs ASCII lautet die Reihenfolge bei der Übertragung von Zeichen in Wörtern (16-Bit-Register) wie folgt:
-
niederwertiges Zeichen n
-
höherwertiges Zeichen n + 1
Alle Register (16 Bit oder 2 Byte) werden mit Big Endian-Codierung übertragen:
-
Das höherwertige Byte wird zuerst übertragen.
-
Das niederwertige Byte folgt an zweiter Stelle.
32-Bit-Variablen, die in zwei 16-Bit-Wörtern gespeichert sind (z. B. Verbrauchszähler), weisen das Big Endian-Format auf:
-
Das höherwertige Wort wird zuerst übertragen, gefolgt vom niederwertigen Wort.
64-Bit-Variablen, die in vier 16-Bit-Wörtern gespeichert sind (z. B. Datumsangaben), weisen das Big Endian-Format auf:
-
Das höherwertige Wort wird zuerst übertragen usw.
DATETIME
DATETIME ist ein zur Codierung von Datum und Uhrzeit verwendeter Datentyp gemäß der Definition der Norm IEC 60870-5.
Register |
Typ |
Bit |
Bereich |
Beschreibung |
---|---|---|---|---|
1 |
INT16U |
0-6 |
0x00–0x7F |
Jahr: Die Werte 0x00 (00) bis 0x7F (127) entsprechen den Jahren 2000 bis 2127. Beispiel: 0x17 (23) entspricht dem Jahr 2023. |
7-15 |
– |
Reserviert |
||
2 |
INT16U |
0–4 |
0x01–0x1F |
Tag |
5-7 |
– |
Reserviert |
||
8-11 |
0x00–0x0C |
Monat |
||
12-15 |
– |
Reserviert |
||
3 |
INT16U |
0-5 |
0x00–0x3B |
Minuten |
6-7 |
– |
Reserviert |
||
8-12 |
0x00–0x17 |
Stunden |
||
13-15 |
– |
Reserviert |
||
4 |
INT16U |
0-15 |
0x0000–0xEA5F |
Millisekunden |
Direktadressierung eines Bits
Die Adressierung ist zulässig für die Bereiche des Typs BITMAP mit den Funktionen 1, 2, 5 und 15.
Die Adresse des ersten Bits ist wie folgt aufgebaut: (Adresse des Registers x 16) + Bit-Nummer.
Dieser Adressierungsmodus ist spezifisch für Schneider Electric.
Beispiel: Für die Funktionen 1, 2, 5 und 15 muss das Bit 3 des Registers 0x0078 adressiert werden. Die Adresse des Bits ist daher 0x0783.
Beispiel für Modbus-Frames
Anfrage
Definition |
Anzahl Bytes |
Wert |
Kommentar |
---|---|---|---|
Servernummer |
1 Byte |
0x05 |
I/O Smart Link-Modbus-Adresse |
Funktionscode |
1 Byte |
0x03 |
Lesen von n Ausgangs- oder internen Wörtern |
Adresse |
2 Byte |
0x36E2 |
Adresse eines Verbrauchszählers mit der Dezimaladresse 14050 |
Anzahl Wörter |
2 Byte |
0x002C |
Lesen von 44 16-Bit-Registern |
CRC |
2 Byte |
xxxx |
Wert von CRC16. |
Antwort
Definition |
Anzahl Bytes |
Wert |
Kommentar |
---|---|---|---|
Servernummer |
1 Byte |
0x05 |
I/O Smart Link-Modbus-Adresse |
Funktionscode |
1 Byte |
0x03 |
Lesen von n Ausgangs- oder internen Wörtern |
Anzahl Bytes |
2 Byte |
0x0058 |
Anzahl gelesener Bytes |
Wert der gelesenen Wörter: |
88 Byte |
– |
Lesen von 44 16-Bit-Registern |
CRC |
2 Byte |
xxxx |
Wert von CRC16. |
Modbus-Adresse
Die Liste der Modbus-Adressen, die durch das Modbus-Protokoll definiert sind, beginnt bei 0.
Die Adresse des Registers mit der Nummer n lautet n-1.
Die detaillierten Tabellen in den folgenden Kapiteln dieses Handbuchs enthalten sowohl Registernummern (im Dezimalformat) als auch die entsprechenden Adressen (im Hexadezimalformat). Adressbeispiel: die Adresse der Registernummer 3000 ist 0x0BB7 (2999).