6.1 Übertragungsformat
Integer-Werte
Float-Werte
Integer-Werte werden über MOD-Bus im folgenden Format übertragen:
Zuerst das High-, dann das Low-Byte.
z. B.:
Abfrage des int-Wertes von Adresse 0x0000, wenn unter dieser
Adresse der Wert 12 (0x000C) steht.
Anfrage: 010300000001840A (CRC16 = 0x0A84)
Antwort: 010302000CB841 (CRC16 = 41B8)
Bei float-Werten wird im MOD-Bus mit dem IEEE-754-Standard-Format (32bit)
gearbeitet, allerdings mit dem Unterschied, daß 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
MOD-Bus-float-Format
MOD-Bus-Adresse x
MMMMMMMM
Byte 3
z. B.:
Abfrage des float-Wertes von Adresse 0x0035, wenn unter dieser
Adresse der Wert 550.0 (0x44098000 im IEEE-754-Format) steht.
Anfrage: 010300350002D405 (CRC16 = 05D4)
Antwort: 0103048000440920F5 (CRC16 = F520)
Nach der Übertragung vom Gerät müssen die Byte des float-Wertes entspre-
chend vertauscht werden.
Viele Compiler (z. B. Microsoft C++, Turbo C++, Turbo Pascal, Keil C51) legen
die float-Werte in folgender Reihenfolge ab:
float-Wert
Adresse x
Adresse x+1
MMMMMMMM
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
SEEEEEEE
Byte 4
Adresse x+2
EMMMMMMM
Byte 3
6 Datenfluß
MMMMMMMM
Byte 3
MOD-Bus-Adresse x+1
EMMMMMMM
Byte 1
Adresse x+3
SEEEEEEE
Byte 2
Byte 1
Byte 4
Byte 2
19