Communication de sortie Modbus

Informations techniques relatives à la sortie Modbus de l'eGauge

AVIS:

  • Avant la version 4.0 du firmware, les adresses Modbus pouvaient changer en cas de modification du nom ou du contenu d'un registre. La version 4.0 ajoute des plages d'adresses supplémentaires liées à l'identifiant du registre. Les adresses utilisées avant la version 4.0 restent utilisables pour assurer la rétrocompatibilité, mais sont obsolètes et leur utilisation est déconseillée, car une reconfiguration des paramètres d'installation peut les modifier. Les registres virtuels sont classés selon leur ordre d'apparition sur la page des paramètres ; par conséquent, les adresses peuvent changer si des registres virtuels sont ajoutés ou supprimés.
  • Pour plus d'informations sur l'activation de la communication de sortie Modbus, veuillez consulter : Procédure : Activation et configuration de la communication de sortie Modbus

Carte d'enregistrement Modbus

La configuration Modbus exacte dépend de l'appareil eGauge et est disponible dans les paramètres du serveur Modbus. Vous pouvez la consulter dans votre navigateur web ou la télécharger au format CSV (valeurs séparées par des virgules) pour l'importer dans n'importe quel tableur.

Plage d'adresses Description
Horodatage
30000 -- 30003 horodatage local (à utiliser lors de la lecture à partir d'adresses <35000)
30004 -- 30007 L'horodatage THD indique la date et l'heure d'acquisition des données utilisées par les fonctions FFTarg(), FFTarg2(), FFTmag() et THD().
30008 -- 30009 horodatage enregistré (à utiliser lors de la lecture à partir d'adresses ≥35000)
Données locales (vérificateur de canal)
30500 -- 30999 Tensions de ligne (RMS)
31000 -- 31499 Tensions de ligne (CC/moyenne)
31500 -- 31999 Fréquences de ligne
32500 -- 32999 Valeurs du capteur (moyenne/DC)
33000 -- 33949 Fréquences des capteurs
Données d'enregistrement [v4.0 et supérieures]
34000 -- 34999 Valeurs cumulatives des registres physiques à précision réduite (flottant)
35000 -- 35999 Valeurs cumulées des registres virtuels (entiers signés 64 bits)
36000 – 36999 Modification de la valeur du registre virtuel (flottant)
37000 -- 37999 Valeurs cumulatives des registres virtuels à précision réduite (flottant)
38000 -- 38999 Valeurs cumulées des registres physiques (entiers signés 64 bits)
39000 -- 39999 Modification de la valeur du registre physique (flottant)

Données enregistrées [ANTÉRIEUR à la version 4.0 du firmware, désormais obsolète]

35000 -- 35999 Valeurs cumulatives des registres (entiers signés 64 bits) [DÉPRÉCIÉ]
36000 -- 36999 Modification de la valeur du registre (flottant) [DÉPRÉCIÉ]
37000 -- 37999 Valeurs cumulatives des registres à précision réduite (flottant) [DÉPRÉCIÉ]

Dans la version 4.0 et les versions ultérieures , les adresses Modbus sont liées aux identifiants des registres eGauge. Elles peuvent être calculées comme suit :

Valeur cumulée du flottant physique = 34000+(ID*2)

Valeur cumulée physique s64 = 38000+(ID*4)

Valeur instantanée flottante physique = 39000+(ID*2)

Les registres virtuels sont classés dans l'ordre où ils apparaissent sur la page des paramètres d'installation et sont donc susceptibles de se déplacer lors de suppressions ou d'ajouts.

L'identifiant du registre peut être trouvé en survolant le bouton de suppression du registre dans la page Paramètres d'installation :

Un exemple de carte Modbus, que vous pouvez trouver dans Paramètres -> Serveur Modbus, est affiché ci-dessous :


  • Les registres Modbus de type t16 sont des chaînes UTF-8 de longueur variable et il peut donc être nécessaire de lire plusieurs registres jusqu'à ce qu'un caractère nul UTF-8 soit atteint.

Exemples de transmissions Modbus

Exemples de transmissions Modbus

Exemple : Requête et réponse Modbus TCP pour la tension RMS L1 :

Request: [00 01] [00 00] [00 06] [01] [04] [01 f4] [00 02]

[00 01] = Identifiant de transaction

[00 00] = Identifiant du protocole (toujours 00 00)

[00 06] = Octets suivants (0x0006 = 6 octets)

[01] = ID de l'unité

[04] = Code de fonction (0x04 correspond à la lecture des registres d'entrée)

[01 f4] = Adresse du registre de départ (500)

[00 02] = Nombre de mots à renvoyer (2 mots pour une valeur flottante)

Response: [00 01] [00 00] [00 07] [01] [04] [04] [42 f6 2a 06]

[00 01] = Identifiant de transaction

[00 00] = Identifiant du protocole (toujours 00 00)

[00 07] = Octets suivants (0x0007 = 7 octets)

[01] = ID de l'unité

[04] = Code de fonction (0x04 correspond à la lecture des registres d'entrée)

[42 f6 2a 06] = Contenu des registres 500 et 501 respectivement

0x42f62a06 décodée en format big-endian (ABCD) à virgule flottante est approximativement égale à 123,08 V , donc la tension L1 est de 123,08 Vrms.

Exemple : Requête et réponse Modbus RTU pour la tension RMS L1 :

Request: [01] [04] [01 f4] [00 02] [31 c5]


[01] = ID de l'unité

[04] = Code de fonction (0x04 correspond à la lecture des registres d'entrée)

[01 f4] = Adresse du registre de départ (500)

[31 c5] = Contrôle d'erreur CRC


Response: [01] [04] [04] [42 f6 2a 06] [90 ac]

[01] = ID de l'unité

[04] = Code de fonction (0x04 correspond à la lecture des registres d'entrée)

[04] = Octets de données à suivre (CRC non inclus)

[42 f6 2a 06] = Contenu des registres 500 et 501 respectivement


0x42f62a06 décodée en format big-endian (ABCD) à virgule flottante est approximativement égale à 123,08 V , donc la tension L1 est de 123,08 Vrms.

Notes techniques supplémentaires

  • La taille maximale d'une trame Modbus est de 255 octets. Cela correspond à 61 registres 32 bits ou 30 registres 64 bits. La plupart des systèmes DAS et Modbus segmentent automatiquement les requêtes afin de limiter la taille de la réponse et d'éviter tout dépassement de cette limite. Si la requête dépasse la capacité d'une seule trame en termes de registres, la réponse peut être tronquée ou une exception peut être levée.
  • Une aide supplémentaire est disponible en cliquant sur les boutons [?] de la page des paramètres du serveur Modbus.
  • Toutes les données sont fournies sous forme de registres d'entrée Modbus et leurs adresses Modbus commencent donc à 30 000. La trame brute envoyée ne comprend pas le préfixe « 30 », qui indique le code de fonction utilisé.
  • Pour chaque registre enregistré par eGauge, il est possible de lire sa valeur cumulée actuelle et sa variation depuis l'intervalle d'une seconde précédent. La valeur cumulée est disponible en pleine résolution sous forme de nombre signé 64 bits. Par commodité, cette même valeur est également disponible, en résolution réduite, sous forme de nombre à virgule flottante 32 bits. La variation de valeur est disponible uniquement sous forme de nombre à virgule flottante 32 bits. Outre les données des registres, il est également possible de lire des données mesurées localement, telles que les tensions de ligne, les fréquences et la valeur mesurée par chaque port de capteur.
  • Le serveur Modbus garantit la cohérence des données lues lors d'une requête unique. L'horodatage permet d'assurer cette cohérence même lors de la lecture de données via plusieurs requêtes (par exemple, pour lire plusieurs registres non contigus). La procédure est la suivante : (i) lecture de l'horodatage, (ii) exécution des requêtes de lecture souhaitées, puis (iii) nouvelle lecture de l'horodatage. Si les deux horodatages sont identiques, le lecteur a la certitude que les données sont cohérentes.