Tables des registres Modbus
Description générale
Les chapitres suivants décrivent les registres Modbus du déclencheur MicroLogic et les registres Modbus des Modbus qui y sont connectés. Ces registres fournissent des informations qui peuvent être lues, comme des mesures électriques, la configuration de la protection et des informations de contrôle. L'interface de commande permet à l'utilisateur de modifier ces registres de façon contrôlée.
Les règles de présentation des registres Modbus sont les suivantes :
-
Les registres sont groupés selon le module auquel ils sont liés :
-
Pour chaque module, les registres sont groupés sous forme de tableaux d'informations logiquement liées. Les tableaux sont présentés par adresse croissante.
-
Pour chaque module, les commandes sont décrites séparément :
Format des tables
Les tables de registre se composent des colonnes suivantes :
Adresse |
Registre |
L/E |
X |
Unité |
Type |
Plage |
A/E |
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).
-
L/E : état de lecture ou d'écriture du registre
-
L : le registre peut être lu en utilisant les fonctions Modbus
-
E : le registre peut être écrit en utilisant les fonctions Modbus
-
L/E : le registre peut être lu et écrit en utilisant les fonctions Modbus
-
LC : le registre peut être lu en utilisant l'interface de commande.
-
EC : le registre peut être écrit en utilisant l'interface de commande.
-
-
X: le facteur d'échelle. Une échelle de 10 signifie que le registre contient la valeur multipliée par 10. La valeur réelle est donc la valeur du registre divisée par 10.
Exemple :
Le registre 1054 contient la fréquence du système. L'unité est le Hz et le facteur d'échelle est 10.
Si le registre renvoie la valeur 503, cela signifie que la fréquence du système est
503/10 = 50,3 Hz.
-
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.
-
A/E : type de mesure du déclencheur MicroLogic.
-
type A (ampèremètre) : mesures du courant
-
type E (énergie) : mesures de courant, de tension, de puissance et d'énergie
-
-
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 |
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) |
CHAÎNE D'OCTETS |
Chaîne de texte |
1 octet par caractère |
DATETIME |
Date et heure au format IEC 60870-5 Type de données: DATETIME |
– |
ULP DATE |
– |
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).
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).
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: 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. |
Type de données: ULP DATE
ULP DATE est un type de données utilisé pour coder la date et l'heure. Cette table présente le type de données ULP DATE.
Registre |
Type |
Bit |
Plage |
Description |
---|---|---|---|---|
1 2 |
INT32U |
– |
0x00000000–0xFFFFFFFF |
Nombre de secondes depuis le 1er janvier 2000 |
3 |
INT16U |
– |
– |
Complément en millisecondes |
0-9 |
– |
Code les millisecondes |
||
10-11 |
– |
Inutilisé |
||
12 |
0–1 |
Etat de la synchronisation externe de l'interface de communication IFM ou IFE 0 = l'interface de communication n'a pas subi de synchronisation externe au cours des 2 dernières heures. 1 = l'interface de communication a subi une synchronisation externe au cours des 2 dernières heures. |
||
13 |
0–1 |
État de la synchronisation interne du module ULP 0 = le module ULP n'a pas subi de synchronisation interne. 1 = le module ULP a subi une synchronisation interne. |
||
14 |
0–1 |
Date absolue définie depuis la dernière mise sous tension 0 = non 1 = oui |
||
15 |
– |
Réservé |
Compteur de date du module ULP
La date au format ULP DATE est comptée en nombre de secondes depuis le 1er janvier 2000.
En cas de coupure d'alimentation d'un module IMU, le compteur de date est réinitialisé et redémarre au 1er janvier 2000.
Si une synchronisation externe se produit après une coupure d'alimentation, le compteur de date est mis à jour et convertit la date de synchronisation au nombre exact de secondes depuis le 1er janvier 2000.
Principe de conversion de la date ULP
Pour convertir la date du nombre de secondes depuis le 1er janvier 2000 en date actuelle, il faut appliquer les règles suivantes :
-
1 année non bissextile = 365 jours
-
1 année bissextile = 366 jours
Les années 2000, 2004, 2008, 2012… (multiple de 4) sont des années bissextiles (sauf l'année 2100).
-
1 jour = 86 400 secondes
-
1 heure = 3 600 secondes
-
1 minute = 60 secondes
Le tableau suivant décrit les étapes à suivre pour obtenir la date du jour à partir du nombre de secondes écoulées depuis le 1er janvier 2000 :
Étape |
Action |
---|---|
1 |
Calculez le nombre de secondes écoulées depuis le 1er janvier 2000 : S = (contenu du registre 1 x 65536) + (contenu du registre 2) |
2 |
Calculez le nombre de jours depuis le 1er janvier 2000 : D = valeur entière du quotient S / 86 400 Calcul du nombre de secondes restantes : s = S - (D x 86 400) |
3 |
Calcul du nombre de jours écoulés durant l'année en cours : d = D - (NL x 365) - (L x 366) avec NL = nombre d'années non bissextiles depuis l'année 2000 et L = nombre d'années bissextiles depuis l'année 2000 |
4 |
Calcul du nombre d'heures : h = valeur entière du quotient s/3 600 Calcul du nombre de secondes restantes : s' = s - (h x 3 600) |
5 |
Calcul du nombre de minutes : m = valeur entière du quotient s'/60 Calcul du nombre de secondes restantes : s'' = s' - (m x 60) |
6 |
Calcul du nombre de millisecondes : ms = (contenu du registre 3) ET 0x03FF |
7 |
Résultat :
|
Exemple de conversion de date du module ULP
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 comme suit 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.
NOTE: Avec l'implémentation actuelle, certains registres peuvent afficher différentes valeurs hors service et non applicables. Par exemple, les registres INT16U peuvent renvoyer 32768 (0x8000) et le registre INT32U peut afficher 0x80000000.
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 |