15
2 Description du protocole
2.7 Format de transmission (valeurs entières, flottantes et texte)
Valeurs
entières
Avec le protocole Modbus, les valeurs entières sont transmises sous la forme
suivante : d’abord l’octet de poids fort, ensuite 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)
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 le standard IEEE 754
S - Bit de signe
E - Exposant (complément à 2)
M - Mantisse normalisée sur 23 bits
Format flottant Modbus
Exemple Consultation de la valeur flottante à l’adresse 0x0035 lorsque le contenu
à cette adresse est 550.0 (0x44098000 au 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.
Valeur flottante
SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM
octet 1 octet 2 octet 3 octet 4
Adresse Modbus x Adresse Modbus x+1
MMMMMMMM MMMMMMMM SEEEEEEE EMMMMMMM
octet 3 octet 4 octet 1 octet 2
De nombreux compilateurs (par ex. Microsoft Visual C++) manipulent
les valeurs flottantes dans l’ordre suivant :
Adresse x Adresse x+1 Adresse x+2 Adresse x+3
MMMMMMMM MMMMMMMM EMMMMMMM SEEEEEEE
octet 4 octet 3 octet 2 octet 1
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’in-
terface.