6.1 Übertragungsformat
Integer-Werte
Beispiel
Float-Werte
Beispiel
Integer-Werte werden über Modbus im folgenden Format übertragen:
Zuerst das High-, dann das Low-Byte.
Abfrage des Integer-Wertes von Adresse 0x0000, wenn unter dieser Adresse
der Wert "20" (ASCII-Codierung: 0x3230) steht.
Anfrage: 14030000000186CF (CRC16 = CF86)
Antwort: 1403023230A0F3 (CRC16 = xF3A0)
Bei Float-Werten wird im Modbus mit dem IEEE-754-Standard-Format (32bit)
gearbeitet, allerdings mit dem Unterschied, dass Byte 1 und 2 mit Byte 3 und
4 vertauscht sind.
Single-float-Format (32bit) nach Standard IEEE 754
SEEEEEEE
Byte 1
S - Vorzeichen-Bit
E - Exponent (2er-Komplement)
M - 23Bit normalisierte Mantisse
Modbus-float-Format
Modbus-Adresse x
MMMMMMMM
Byte 3
Abfrage des Float-Wertes von Adresse 0x0035, wenn unter dieser Adresse der
Wert 550.0 (0x44098000 im IEEE-754-Format) steht.
Anfrage: 140300350002D6C0 (CRC16 = C0D6)
Antwort: 140304800044096434 (CRC16 = 3464)
Nach der Übertragung vom Gerät müssen die Byte des Float-Wertes entspre-
chend vertauscht werden.
Viele Compiler (z. B. Microsoft Visual C++) legen die Float-Werte in folgender
Reihenfolge ab:
Float-Wert
Adresse x
MMMMMMMM
Byte 4
Bitte ermitteln Sie, wie in Ihrer Anwendung Float-Werte gespeichert werden.
Ggf. müssen die Byte nach der Abfrage vom Bildschirmschreiber in Ihrem
Schnittstellenprogramm entsprechend getauscht werden.
EMMMMMMM
MMMMMMMM
Byte 2
MMMMMMMM
Byte 4
Adresse x+1
MMMMMMMM
Byte 3
6 Datenfluss
MMMMMMMM
Byte 3
Modbus-Adresse x+1
SEEEEEEE
Byte 1
Adresse x+2
EMMMMMMM
Byte 2
Byte 4
EMMMMMMM
Byte 2
Adresse x+3
SEEEEEEE
Byte 1
22