Tables des registres Modbus
Description générale
Les chapitres suivants décrivent les registres Modbus de l'unité de contrôle MicroLogic et les registres Modbus des modules qui y sont connectés. Ces registres fournissent des informations qui peuvent être lues, telles que des mesures électriques et des informations de contrôle. L'interface de commandes permet de modifier ces registres de façon contrôlée.
Les règles de présentation des registres Modbus sont les suivantes :
-
Pour chaque module, les registres sont regroupés dans des tables affichant des informations logiquement liées au module associé :
-
Dans le cas de certains modules, les fichiers sont décrits séparément.
-
Pour chaque module, les commandes sont décrites séparément :
Pour rechercher un registre, utilisez la liste ordonnée des registres avec une référence croisée vers la page où ces registres sont décrits.
Format de table
Les tables de registres se composent des colonnes suivantes :
Adresse |
Registre |
RW |
Unité |
Type |
Plage |
Bit |
Description |
---|---|---|---|---|---|---|---|
-
Adresse : une adresse de registre de 16 bits sous forme de nombre hexadécimal. L'adresse correspond aux données utilisées dans la trame Modbus.
-
Registre : un numéro de registre de 16 bits sous forme de nombre décimal (registre = adresse + 1).
-
RW : état de lecture ou d'écriture du registre
-
R : le registre peut être lu en utilisant les fonctions Modbus
-
W : le registre peut être écrit en utilisant les fonctions Modbus
-
RW : le registre peut être lu et écrit en utilisant les fonctions Modbus
-
RC : le registre peut être lu en utilisant l'interface de commande
-
WC : le registre peut être écrit en utilisant l'interface de commande
-
-
Unité : unité de mesure de l'information.
-
Type : type de données de codage (voir la description des types de données ci-dessous).
-
Plage : valeurs permises pour cette variable, généralement un sous-ensemble de ce que permet le format.
-
Description : fournit des informations sur le registre et les restrictions qui s'appliquent.
Types de données
Types de données |
Description |
Plage |
---|---|---|
INT16U |
Entier de 16 bits non signé |
0 à 65535 |
INT16 |
Entier de 16 bits signé |
-32768 à +32767 |
INT32U |
Entier de 32 bits non signé |
0 à 4 294 967 295 |
INT32 |
Entier de 32 bits signé |
-2 147 483 648 à +2 147 483 647 |
INT64U |
Entier de 64 bits non signé |
0 à 18 446 744 073 709 600 000 |
INT64 |
Entier de 64 bits signé |
-9 223 372 036 854 775 808 à +9 223 372 036 854 775 807 |
FLOAT32 |
Entier de 32 bits signé à virgule flottante |
2-126 (1.0) à 2127 (2 - 2-23) |
OCTET STRING |
Chaîne de texte |
1 octet par caractère |
XDATE |
Date et heure des modules ULP |
– |
DATETIME |
Date et heure au format CEI 60870-5 |
– |
Format big-endian
Les variables INT32, INT32U, INT64 et INT64U sont stockées au format big-endian : le registre de poids fort est transmis d'abord, celui de poids faible ensuite.
Les variables INT32, INT32U, INT64 et INT64U sont constituées de variables INT16U.
Voici les formules de calcul de la valeur décimale de ces variables :
-
INT32: (0-bit31)x231 + bit30x230 + bit29x229 + ...bit1x21 + bit0x20
-
INT32U: bit31x231 + bit30x230 + bit29x229 + ...bit1x21 + bit0x20
-
INT64: (0-bit63)x263 + bit62x262 + bit61x261 + ...bit1x21 + bit0x20
-
INT64U: bit63x263 + bit62x262 + bit61x261 + ...bit1x21 + bit0x20
Exemple 1 :
L'énergie active totale du jeu de données standard est une variable INT64 codée dans les registres 32096 à 32099.
Si les valeurs des registres sont :
-
registre 32096 = 0
-
registre 32097 = 0
-
registre 32098 = 0x0017 ou 23
-
registre 32099 = 0x9692 ou 38546 comme variable INT16U et -26990 comme variable INT16 (utilisez la valeur INT16U pour calculer la valeur de l’énergie active totale).
Alors l'énergie active totale est égale à 0x248 + 0x232 + 23x216 + 38546x20 = 1545874 Wh.
Exemple 2 :
L'énergie réactive du jeu de données hérité est une variable INT32 codée dans les registres 12052 à 12053.
Si les valeurs des registres sont :
-
registre 12052 = 0xFFF2 = 0x8000 + 0x7FF2 ou 32754
-
registre 12053 = 0xA96E ou 43374 comme variable INT16U et -10606 comme variable INT16 (utilisez la valeur INT16U pour calculer la valeur de l’énergie réactive).
Alors l’énergie réactive est égale à (0-1)x231 + 32754x216 + 43374x20 = -874130 kVARh.
Type de données : FLOAT32
Le type de données FLOAT32 est représenté par le format simple précision IEEE 754 (norme IEEE pour l'arithmétique binaire en virgule flottante). Une valeur N est calculée de la manière suivante :
N = (-1)S x 2E-127 x (1+M)
Coefficient |
Signification |
Description |
Nombre de bits |
---|---|---|---|
S |
Signe |
Définit le signe de la valeur : 0 = valeur positive 1 = valeur négative |
1 bit |
E |
Exposant |
Excédent de 127 ajouté sous forme d'entier en valeur binaire. Lorsque 0 < E < 255, l'exposant réel est : e = E - 127. |
8 bits |
M |
Mantisse |
Magnitude, significande binaire normalisé |
23 bits |
Exemple :
0 = 0 00000000 00000000000000000000000
-1.5 = 1 01111111 10000000000000000000000
avec :
-
S = 1
-
E = 01111111 = 127
-
M = 10000000000000000000000 = 1x2-1 + 0x2-2 +...+ 0x2-23 = 0,5
-
N = (-1) x 20 x (1+0.5) = -1,5
Type de données : XDATE
XDATE est un type de données utilisé pour coder la date et l'heure définies par les modules ULP.
Registre |
Type |
Bit |
Plage |
Description |
---|---|---|---|---|
1 |
INT16U |
0–7 |
0x01–0x1F |
Jour |
8–15 |
0x01–0x0C |
Mois |
||
2 |
INT16U |
0–7 |
0x00–0x17 |
Heures |
8–15 |
0x50–0xC7 |
Année
Par exemple, 0x70 (112) correspond à l'année 2012. |
||
3 |
INT16U |
0–7 |
0x00–0x3B |
Secondes |
8–15 |
0x00–0x3B |
Minutes |
||
4 |
INT16U |
0–15 |
0x0000–0x03E7 |
Complément en millisecondes |
Type de données : DATETIME
DATETIME est un type de données utilisé pour coder la date et l'heure définies par la norme IEC 60870-5.
Registre |
Type |
Bit |
Plage |
Description |
---|---|---|---|---|
1 |
INT16U |
0–6 |
0x00–0x7F |
Année : 0x00 (00) à 0x7F (127) correspond aux années 2000 à 2127 Par exemple, 0x0D (13) correspond à l'année 2013. |
7–15 |
– |
Réservé |
||
2 |
INT16U |
0–4 |
0x01–0x1F |
Jour |
5–7 |
– |
Réservé |
||
8–11 |
0x00–0x0C |
Mois |
||
12–15 |
– |
Réservé |
||
3 |
INT16U |
0–5 |
0x00–0x3B |
Minutes |
6–7 |
– |
Réservé |
||
8–12 |
0x00–0x17 |
Heures |
||
13–15 |
– |
Réservé |
||
4 |
INT16U |
0–15 |
0x0000–0xEA5F |
Millisecondes |
Qualité des horodatages DATETIME
La qualité des horodatages codés avec le type de données DATETIME peut être indiquée dans le registre qui suit les 4 registres de l'horodatage. Dans ce cas, la qualité de l'horodatage est codée comme suit :
Bit |
Description |
---|---|
0–11 |
Réservé |
12 |
Synchronisée de façon externe :
|
13 |
Synchronisée :
|
14 |
Date et heure définies :
|
15 |
Réservé |
Qualité des bits dans les registres
La qualité de chaque bit d'un registre codé comme type de données INT16U en tant qu'énumération de bits peut être indiquée dans le registre précédent.
Exemple :
La qualité de chaque bit du registre 32001, état du disjoncteur, est donnée dans le registre précédent, 32000.
La qualité des données correspondant au bit 0 du registre 32001, Contact de signalisation d'état OF, est donnée dans le bit 0 du registre 32000 :
-
bit 0 du registre 32000 = qualité de signalisation d'état OF
-
bit 0 du registre 32001 = contact de signalisation d'état OF
Si |
Alors |
---|---|
Le bit 0 du registre 32000 = 1 ET le bit 0 du registre 32001 = 0 |
Le contact OF indique que l'appareil est ouvert. |
Le bit 0 du registre 32000 = 1 ET le bit 0 du registre 32001 = 1 |
Le contact OF indique que l'appareil est fermé. |
Le bit 0 du registre 32000 = 0 |
La signalisation de contact OF est incorrecte. |
Remarques
-
La colonne du type indique le nombre de registres à lire pour obtenir la variable. Par exemple, INT16U nécessite la lecture d'un registre, alors que INT32 nécessite la lecture de 2 registres.
-
Certaines variables telles que les mesures d'énergie doivent être lues comme un bloc de plusieurs registres. La lecture partielle du bloc provoque une erreur.
-
La lecture à partir d'un registre non documenté aboutit à une exception Modbus.
-
Les valeurs numériques sont données sous forme décimale. Lorsqu'il est utile de disposer de la valeur correspondante au format hexadécimal, celle-ci est indiquée comme une constante en langage C : 0xdddd. Par exemple, la valeur décimale 123 est représentée sous forme hexadécimale 0x007B.
-
Pour les mesures qui dépendent de la présence du neutre identifiée par le registre 3314, la lecture de la valeur renvoie 32768 (0x8000) si non applicable. Pour chaque tableau où cela apparaît, une explication est donnée en note de bas de page.
-
Les valeurs hors service et non applicables dépendent du type de données.
Type de données |
Valeurs hors service et non applicables |
---|---|
INT16U |
65535 (0xFFFF) |
INT16 |
-32768 (0x8000) |
INT32U |
4294967295 (0xFFFFFFFF) |
INT32 |
0x80000000 |
INT64U |
0xFFFFFFFFFFFFFFFF |
INT64 |
0x8000000000000000 |
FLOAT32 |
0xFFC00000 |
Note for TechPub writer: see D-SE-33693 (Compact NSX MB) for similar content and wording consistency.