DOCA0091FR-08

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 :

Pour rechercher un registre, utilisez la liste ordonnée des registres avec référence croisée vers la page où ces registres sont décrits.

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

Date et heure au format 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 :

  • 0 = Non valide

  • 1 = Valide

13

Synchronisée :

  • 0 = Non valide

  • 1 = Valide

14

Date et heure définies :

  • 0 = Non valide

  • 1 = Valide

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

01

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

01

É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

01

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 :

  • La date actuelle est d + 1.

    Par exemple, si d = 303, la date actuelle correspond au 304e jour de l'année, soit au 31 octobre 2007.

  • L'heure actuelle est h:m:s'':ms

Exemple de conversion de date du module ULP

Les registres 2900 et 2901 renvoient la date en nombre de secondes depuis le 1er janvier 2000. Le registre 2902 renvoie le complément en ms avec la qualité de la date.

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