représente donc une valeur négative. Pour trouver la valeur réelle, il faut :
a) Multiplier le registre supérieur par (2^16) 4294836224
b) Additionner le registre inférieur
c) Le représenter en hex
d) Inverser tous les bits
e) Additionner un
f) Représenter en décimal
g) Diviser par deux élevé au nombre de bit déc.
h) Appliquer le signe négatif
Le couple de registres 31072 (inférieur) et 65534 (supérieur) représentent donc la valeur
-100000.
2) SL_00 (aucun bit décimal).
Supposons de lire la valeur 34464 dans le registre d'indice inférieur et 1 dans le registre
d'indice supérieur. Comme on peut le voir, le bit 15 du registre supérieur est 0 et
représente donc une valeur positive. Pour trouver la valeur réelle, il faut :
a) Multiplier le registre supérieur par (2^16) 65536
b) Additionner le registre inférieur
c) Diviser par deux élevé au nombre de bits en décimal
Donc, la paire de registres 34464 (inférieur) et 1 (supérieur) représentent la valeur
100000.
3) SL_08 (huit bits en décimal).
Supposons de lire la valeur 31072 dans le registre d'indice inférieur et 65534 dans le
registre d'indice supérieur. Comme on peut le voir, le bit 15 du registre supérieur est 1 et
représente donc une valeur négative. Pour trouver la valeur réelle, il faut :
a) Multiplier le registre supérieur par (2^16) 4294836224
b) Additionner le registre inférieur
c) Le représenter en hex
d) Inverser tous les bits
e) Additionner un
f) Représenter en décimal
g) Diviser par deux élevé au nombre de bit déc.
h) Appliquer le signe négatif
Le couple de registres 31072 (inférieur) et 65534 (supérieur) représentent donc la valeur
-390,625.
4) SL_08 (huit bits en décimal).
Supposons de lire la valeur 34464 dans le registre d'indice inférieur et 1 dans le registre
d'indice supérieur. Comme on peut le voir, le bit 15 du registre supérieur est 0 et
représente donc une valeur positive. Pour trouver la valeur réelle, il faut :
a) Multiplier le registre supérieur par (2^16) 65536
b) Additionner le registre inférieur
c) Diviser par deux élevé au nombre de bits en décimal
Donc, la paire de registres 34464 (inférieur) et 1 (supérieur) représentent la valeur
390,625.
6.2.6
STR_XX
Ce code indique une information de type chaîne ASCII. Les informations peuvent occuper un
ou plusieurs registres (contigus). Le champ "XX" indique le nombre de registres.
Les chaînes sont transférées à travers MODBUS en mémorisant deux caractères pour
chaque registre et en utilisant un certain nombre de registres consécutifs. Un exemple de
chaîne peut être le nom de l'installation qui est transférée sur certains dispositifs en utilisant
les "holding registers" 40829-40840 (et qui sera donc identifiée au format STR_12). Le nom
de l'installation est composé donc au maximum de 24 caractères (12 registres par deux
caractères). Tenir compte cependant que l'unité terminale des chaînes qui est le caractère
ASCII 00 doit être également présente. Par exemple, supposons que le nom de l'installation
soit "NOUVELLE INSTALLATION". Elle sera ainsi transférée :
26
4294867296
FFFE7960H 11111111111111100111100101100000
0001869FH 00000000000000011000011010011111
000186A0H 00000000000000011000011010100000
100000
4294867296
FFFE7960H 11111111111111100111100101100000
0001869FH 00000000000000011000011010011111
000186A0H 00000000000000011000011010100000
100000
Communication en série et protocole SMS
100000
100000 / (2^0) = 100000
-100000
100000 / (2^0) = 100000
100000
100000 / (2^8) = 390,625
-390,625
100000 / (2^8) = 390,625