2.7
Format de transmission
2.7.1
Valeurs entières
Les valeurs entières sont transmises sous la forme suivante : d'abord l'octet de poids fort, en-
suite l'octet de poids faible.
Exemple
Consultation de la valeur entière à l'adresse 0x0021 lorsque le contenu à cette adresse est "4"
(valeur du mot 0x0004)
Demande : 01 03 0021 0001 (+ 2 octets CRC16)
Réponse : 01 03 02 0004 (+ 2 octets CRC16)
2.7.2
Valeurs flottantes
Le protocole Modbus traite les valeurs flottantes conformément au format standard IEEE 754 (32
bits) ; toutefois il y a une différence : les octets 1 et 2 sont échangés avec les octets 3 et 4.
Format des valeurs flottantes simples (32 bits) suivant standard IEEE 754
SEEEEEEE
octet 1
S = Bit de signe
E - Exposant (complément à 2)
M - Mantisse normalisée sur 23 bits
Format des valeurs flottantes avec le protocole Modbus
Adresse Modbus x
MMMMMMMM
octet 3
Exemple
Consultation de la valeur flottante à l'adresse 0x0035 lorsque le contenu à cette adresse est
550.0 (0x44098000 en format IEEE-754)
Demande : 01 03 0035 0002 (+ 2 octets CRC16)
Réponse : 01 03 04 8000 4409 (+ 2 octets CRC16)
Après le transfert depuis l'appareil, il faut échanger les octets de cette valeur.
De nombreux compilateurs (par ex. Microsoft Visual C++) manipulent les valeurs flottantes dans
l'ordre suivant :
Adresse x
MMMMMMMM
octet 4
REMARQUE !
Déterminez le mode de stockage des valeurs flottantes dans votre application. Le cas
échéant, après la consultation de l'enregistreur sans papier, il faudra échanger les octets
dans votre programme d'interface.
EMMMMMMM
octet 2
MMMMMMMM
octet 4
Adresse x+1
MMMMMMMM
octet 3
MMMMMMMM
octet 3
Adresse Modbus x+1
SEEEEEEE
octet 1
Adresse x+2
SEEEEEEE
octet 2
2 Protocole
MMMMMMMM
octet 4
EMMMMMMM
octet 2
Adresse x+3
EMMMMMMM
octet 1
13