DOCA0091FR-08

Fonctions de Modbus

Description générale

Le protocole Modbus propose un certain nombre de fonctions qui permettent de lire ou d'écrire des données sur le réseau Modbus. Le protocole Modbus offre également des fonctions de diagnostic et de gestion de réseau.

Seules les fonctions Modbus gérées par le disjoncteur sont décrites ici.

Fonctions de lecture

Les fonctions de lecture suivantes sont disponibles :

Code de fonction

Code de sous-fonction

Nom

Description

3 (0x03)

Lecture de registres de maintien

Lecture de n registres de sortie ou de n registres internes.

4 (0x04)

Lecture de registres d'entrée

Lecture de n registres d'entrée.

43 (2x0B)

14 (0x0E)

Lecture d'identification de produit

Lecture des données d'identification de l'esclave.

43 (2x0B)

15 (0x0F)

Obtention de la date et de l'heure

Lecture de la date et de l'heure de l'esclave.

NOTE: Le nombre de registres n est limité à 52 avec le déclencheur MasterPact MicroLogic E.

Exemple de lecture de registre

Le tableau suivant indique comment lire le courant efficace sur la phase 1 (I1) dans le registre 1016. L'adresse du registre 1016 est 1016 - 1 = 1015 = 0x03F7. L'adresse Modbus de l'esclave Modbus est 47 = 0x2F.

Requête du maître

Réponse de l'esclave

Nom de champ

Exemple

Nom de champ

Exemple

Adresse de l'esclave Modbus

0x2F

Adresse de l'esclave Modbus

0x2F

Code de fonction

0x03

Code de fonction

0x03

Adresse du registre à lire (MSB)

0x03

Longueur des données en octets

0x02

Adresse du registre à lire (LSB)

0xF7

Valeur du registre (MSB)

0x02

Nombre de registres (MSB)

0x00

Valeur de registre (LSB)

2x0B

Nombre de registres (LSB)

0x01

CRC (MSB)

0xXX

CRC (MSB)

0xXX

CRC (LSB)

0xXX

CRC (LSB)

0xXX

Le contenu du registre 1016 (adresse 0x03F7) est 0x022B = 555. Le courant efficace sur la phase 1 (I1) est donc de 555 A.

Exemple de date et d'heure obtenues

Le tableau suivant indique comment obtenir la date et l'heure d'un esclave Modbus. L'adresse Modbus de l'esclave Modbus est 47 = 0x2F.

Requête du maître

Réponse de l'esclave

Nom de champ

Exemple

Nom de champ

Exemple

Adresse de l'esclave Modbus

0x2F

Adresse de l'esclave Modbus

0x2F

Code de fonction

2x0B

Code de fonction

2x0B

Code de sous-fonction

0x0F

Code de sous-fonction

0x0F

Réservé

0x00

Réservé

0x00

Date et heure

Se reporter au type de données DATETIME.

Exemple de date et d'heure définies

Le tableau suivant indique comment définir la date et l'heure d'un esclave Modbus. L'adresse Modbus de l'esclave Modbus est 47 = 0x2F. La nouvelle date est le 2 octobre 2014 et la nouvelle heure est 14:32:03:500.

NOTE: Utilisez le mode de diffusion générale (avec l'adresse Modbus de l'esclave = 0) pour définir la date et l'heure de tous les esclaves Modbus.

Requête du maître

Réponse de l'esclave

Nom de champ

Exemple

Nom de champ

Exemple

Adresse de l'esclave Modbus

0x2F

Adresse de l'esclave Modbus

0x2F

Code de fonction

0x2B

Code de fonction

0x2B

Code de sous-fonction

0x10

Code de sous-fonction

0x10

Réservé1

0x00

Réservé1

0x00

Inutilisé

0x00

Inutilisé

0x00

Année = 2014

0x0E

Année = 2014

0x0E

Mois = Octobre

0x0A

Mois = Octobre

0x0A

Jour du mois = 2

0x02

Jour du mois = 2

0x02

Heure = 14

0x0E

Heure = 14

0x0E

Minutes = 32

0x20

Minutes = 32

0x20

3 s 500 ms

0x0DAC

3 s 502 ms

0x0DAE

La réponse normale fait écho à la requête. Elle est renvoyée une fois que la date et l'heure ont été mises à jour sur l'équipement distant. Si la structure de la date et de l'heure est incorrecte, la valeur renvoyée dans le champ Date-Heure est définie sur 0 par l'équipement.

En cas de coupure de l'alimentation 24 V CC, la date et l'heure des esclaves Modbus sans batterie ne sont plus actualisées. Il est par conséquent nécessaire de régler la date et l'heure pour tous les esclaves Modbus après reprise de l'alimentation 24 V CC.

De plus, du fait de l'écart de l'horloge de chaque esclave Modbus, il est impératif de régler régulièrement l'heure absolue de tous les esclaves Modbus. La fréquence recommandée est d'au moins une fois toutes les 15 minutes.

Fonction de lecture de registres de maintien répartis

La fonction de lecture de registres de maintien répartis est disponible :

Code de fonction

Code de sous-fonction

Nom

Description

100 (0x64)

4 (0x04)

Lecture de registres de maintien répartis

Lecture de n registres non contigus.

La valeur maximale pour n est 100 mais lors de l'utilisation d'un déclencheur MasterPact MicroLogic Aou E, il est recommandé de choisir n inférieur ou égal à 21.

Grâce à la fonction de lecture de registres de maintien répartis, l'utilisateur peut :

  • éviter de lire un gros bloc de registres contigus lorsque seuls quelques registres sont nécessaires.

  • éviter une utilisation multiple des fonctions 3 et 4 afin de lire des registres non contigus.

Exemple de lecture de registres de maintien répartis

Le tableau suivant indique comment lire les adresses du registre 664 (adresse 0x0297) et du registre 666 (adresse 0x0299) d'un esclave Modbus. L'adresse Modbus de l'esclave Modbus est 47 = 0x2F.

Requête du maître

Réponse de l'esclave

Nom de champ

Exemple

Nom de champ

Exemple

Adresse de l'esclave Modbus

0x2F

Adresse de l'esclave Modbus

0x2F

Code de fonction

0x64

Code de fonction

0x64

Longueur des données en octets

0x06

Longueur des données en octets

0x06

Code de sous-fonction

0x04

Code de sous-fonction

0x04

Numéro de transmission(1)

0xXX

Numéro de transmission(1)

0xXX

Adresse du premier registre à lire (MSB)

0x02

Valeur du premier registre lu (MSB)

0x12

Adresse du premier registre à lire (LSB)

0x97

Valeur du premier registre lu (LSB)

0x0A

Adresse du deuxième registre à lire (MSB)

0x02

Valeur du deuxième registre lu (MSB)

0x74

Adresse du deuxième registre à lire (LSB)

0x99

Valeur du deuxième registre lu (LSB)

0x0C

CRC (MSB)

0xXX

CRC (MSB)

0xXX

CRC (LSB)

0xXX

CRC (LSB)

0xXX

(1) Le maître donne le numéro de transmission dans la requête. L'esclave renvoie le même numéro dans la réponse.

Fonctions d'écriture

Les fonctions d'écriture suivantes sont disponibles :

Code de fonction

Code de sous-fonction

Nom

Description

6 (0x06)

Preset single register

Ecriture d'un registre

16 (0x10)

Preset multiple registers

Ecriture de n registres

43 (2x0B)

16 (0x10)

Set date and time

Ecriture de la date et de l'heure de l'esclave.

NOTE: Le nombre de registres n est limité à 52 avec les déclencheurs MasterPact MicroLogic E.

Fonctions de diagnostic

Les fonctions de diagnostic suivantes sont disponibles :

Code de fonction

Code de sous-fonction

Nom

Description

8 (0x08)

Diagnostic

Gestion des compteurs de diagnostic

8 (0x08)

10 (0x0A)

Clear counters and diagnostic register

Réinitialisation de tous les compteurs de diagnostic

8 (0x08)

11 (0x0B)

Return bus message counter

Lecture du compteur des messages corrects de bus gérés par l'esclave

8 (0x08)

12 (0x0C)

Return bus communication error counter

Lecture du compteur des messages incorrects de bus gérés par l'esclave

8 (0x08)

13 (0x0D)

Return bus exception error counter

Lecture du compteur des réponses d'exception gérées par l'esclave

8 (0x08)

14 (0x0E)

Return slave message counter

Lecture du compteur des messages envoyés à l'esclave

8 (0x08)

15 (0x0F)

Return slave no response counter

Lecture du compteur des messages de diffusion générale

8 (0x08)

16 (0x10)

Return slave negative acknowledge counter

Lecture du compteur des messages envoyés à l'esclave mais sans réponse à cause du code d'exception 07 d'acquittement négatif

8 (0x08)

17 (0x11)

Return slave busy counter

Lecture du compteur des messages envoyés à l'esclave mais sans réponse à cause du code d'exception 06 de périphérique esclave occupé

8 (0x08)

18 (0x12)

Return bus overrun counter

Lecture du compteur des messages de bus incorrects dus à des erreurs de surcharge

11 (0x0B)

Get communication event counter

Lecture du compteur des événements Modbus

Compteurs de diagnostic

Modbus utilise des compteurs de diagnostic pour activer la gestion des erreurs et des performances. Les compteurs sont accessibles à l'aide des fonctions de diagnostic Modbus (codes de fonction 8 et 11). Les compteurs de diagnostic Modbus et le compteur d'événements Modbus sont décrits dans le tableau suivant :

Numéro du compteur

Nom du compteur

Description

1

Bus message counter

Compteur des messages corrects de bus gérés par l'esclave

2

Bus communication error counter

Compteur des messages incorrects de bus gérés par l'esclave

3

Slave exception error counter

Compteur des réponses d'exception gérées par l'esclave et des messages de diffusion générale incorrects

4

Slave message counter

Compteur des messages envoyés à l'esclave

5

Slave no response counter

Compteur des messages de diffusion générale

6

Slave negative acknowledge counter

Compteur des messages envoyés à l'esclave mais sans réponse à cause du code d'exception 07 d'acquittement négatif

7

Slave busy count

Compteur des messages envoyés à l'esclave mais sans réponse à cause du code d'exception 06 de périphérique esclave occupé.

8

Bus character overrun counter

Compteur des messages de bus incorrects dus à des erreurs de surcharge

9

Comm. event counter

Compteur d'événements Modbus (ce compteur est lu avec le code de fonction 11)

Réinitialisation des compteurs

Les compteurs de diagnostic sont réinitialisés à 0 :

  • lorsque la valeur maximum 65535 est atteinte ;

  • lorsqu'ils sont réinitialisés par une commande Modbus (code de fonction 8, code de sous-fonction 10) ;

  • lorsque l'alimentation électrique est coupée ;

  • lorsque les paramètres de communication sont modifiés.