Fonctions de Modbus
Description générale
Le protocole Modbus propose un certain nombre de fonctions permettant 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 l'ATSE 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 registre de maintien |
Lecture de n registres de sortie ou de n registres internes. |
43 (2x0B) |
14 (0x0E) |
Lecture de l'identification du produit |
Lecture des données d'identification du serveur |
43 (0x2B) |
15 (0x0F) |
Obtention de la date et de l'heure |
Lecture de la date et de l'heure du serveur |
Exemple de lecture de registre
Le tableau suivant montre comment lire la tension de SI dans le registre 2000. L'adresse du registre 2000 est 2000 - 1 = 1999 = 0x07CF. L'adresse Modbus du serveur Modbus est 47 = 0x2F.
Requête du client |
Réponse du serveur |
||
---|---|---|---|
Nom de champ |
Exemple |
Nom de champ |
Exemple |
Adresse du serveur Modbus |
0x2F |
Adresse du serveur Modbus |
0x2F |
Code de fonction |
0x03 |
Code de fonction |
0x03 |
Adresse du registre à lire (MSB) |
0x07 |
Longueur des données en octets |
0x02 |
Adresse du registre à lire (LSB) |
0xCF |
Valeur du registre (MSB) |
0x02 |
Nombre de registres (MSB) |
0x00 |
Valeur de registre (LSB) |
0x2B |
Nombre de registres (LSB) |
0x01 |
CRC (MSB) |
0xXX |
CRC (MSB) |
0xXX |
CRC (LSB) |
0xXX |
CRC (LSB) |
0xXX |
– |
Exemple d’obtention de date et d'heure
Le tableau suivant montre comment obtenir la date et l'heure d'un serveur Modbus. L'adresse Modbus du serveur Modbus est 47 = 0x2F.
Requête du client |
Réponse du serveur |
||
---|---|---|---|
Nom de champ |
Exemple |
Nom de champ |
Exemple |
Adresse du serveur Modbus |
0x2F |
Adresse du serveur Modbus |
0x2F |
Code de fonction |
0x2B |
Code de fonction |
0x2B |
Code de sous-fonction |
0x0F |
Code de sous-fonction |
0x0F |
Réservé |
0x00 |
Réservé |
0x00 |
– |
– |
Date et heure |
Voir le type de données DATETIME |
Exemple de définition de la date et de l'heure
Le tableau suivant indique comment définir la date et l'heure d'un serveur Modbus. L'adresse Modbus du serveur Modbus est 47 = 0x2F, la nouvelle date est le 2 octobre 2014 et la nouvelle heure est 14:32:03:500.
Requête du client |
Réponse du serveur |
||
---|---|---|---|
Nom de champ |
Exemple |
Nom de champ |
Exemple |
Adresse du serveur Modbus |
0x2F |
Adresse du serveur 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 d'horodatage n'est pas cohérente avec une date-heure réelle (horodatage invalide), la valeur renvoyée dans le champ Date / Heure est définie sur 0 par l'équipement.
En cas de perte d'alimentation 24 VCC, la date et l'heure des serveurs Modbus sans batterie ne sont plus actualisées. Il est donc obligatoire de régler la date et l'heure de tous les serveurs Modbus après avoir rétabli l'alimentation 24 VCC.
De plus, en raison de l'écart d'horloge de chaque serveur Modbus, il est impératif de régler périodiquementt la date et l'heure de tous les serveurs 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 :
Fonction |
Code de sous-fonction |
Nom |
Description |
---|---|---|---|
100 (0x64) |
4 (0x04) |
Lecture de registres de maintien répartis |
Lecture de n registres non contigus. |
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 1022 (adresse 0x03FD) et du registre 1100 (adresse 0x044B) d'un serveur Modbus. L'adresse Modbus du serveur Modbus est 47 = 0x2F.
Requête du client |
Réponse du serveur |
||
---|---|---|---|
Nom de champ |
Exemple |
Nom de champ |
Exemple |
Adresse du serveur Modbus |
0x2F |
Adresse du serveur 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) |
0x03 |
Valeur du premier registre lu (MSB) |
0x12 |
Adresse du premier registre à lire (LSB) |
0xFD |
Valeur du premier registre lu (LSB) |
0x0A |
Adresse du deuxième registre à lire (MSB) |
0x04 |
Valeur du deuxième registre lu (MSB) |
0x74 |
Adresse du deuxième registre à lire (LSB) |
0x4B |
Valeur du deuxième registre lu (LSB) |
0x0C |
CRC (MSB) |
0xXX |
CRC (MSB) |
0xXX |
CRC (LSB) |
0xXX |
CRC (LSB) |
0xXX |
(1) Le client indique le numéro de transmission dans la requête. Le serveur 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 (0x2B) |
16 (0x10) |
Set date and time |
Ecrire la date et l'heure du serveur |