DOCA0214FR-04

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.

NOTE: Utilisez le mode diffusion (avec adresse de serveur Modbus = 0) pour définir la date et l'heure de tous les serveurs Modbus.

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

QR Code is a registered trademark of DENSO WAVE INCORPORATED in Japan and other countries.

Contenu utile ?