Envoi d'une requête Modbus
Traduction de la notice originale
Présentation
Utilisez l'opération 15 du bloc MSTR pour envoyer des requêtes Modbus génériques sur le réseau.
NOTE : cette opération n'est pas disponible sur les ports Modbus Plus (port intégré sur l'UC ou les modules NOM) et le port Ethernet intégré sur une UC.
Fonctionnement du bloc
Le bloc MBP_MSTR peut envoyer des requêtes et recevoir des réponses d'une longueur maximale de 253 octets.
Pour plus d'informations, reportez-vous à la section Fonctionnement du bloc :
Bloc CONTROL
Le format du bloc CONTROL est décrit dans la tableau ci-dessous :
Mot
Description
CONTROL[1]
15 = Envoi d'une requête Modbus
CONTROL[2]
Indique l'état de l'erreur détectée.
CONTROL[3]
Longueur de DATABUF (WORD)
CONTROL[4]
Offset du début de la réponse dans DATABUF (WORD).
NOTE : pour éviter d'écraser la requête, la valeur de l'offset de la réponse multipliée par 2 doit être supérieure à la longueur de la requête (CONTROL[10]).
CONTROL[5]
Registre de routage :
Octet de poids fort = Emplacement du module de communication Ethernet.
Octet de poids faible = Index de mappage MET (MBP on Ethernet Transporter) (également appelé ID unité).
CONTROL[6]
Octet 4 de l'adresse IP (MSB)
CONTROL[7]
Octet 3 de l'adresse IP
CONTROL[8
Octet 2 de l'adresse IP
CONTROL[9]
Octet 1 de l'adresse IP (LSB)
CONTROL[10]
Longueur des données de la requête DATABUF (octets).
CONTROL[11]
Longueur de la réponse DATABUF reçue (octets).
NOTE : cette valeur est en lecture seule. Elle est définie par le module optionnel à l'issue de l'opération.
Tampon de données
Le protocole MODBUS définit une unité PDU (Protocol Data Unit) indépendante des couches de communication sous-jacentes.
Le tampon de données (DATABUF) est constitué de registres contigus qui incluent la PDU de la requête Modbus et la PDU de la réponse Modbus :
DATABUF
La longueur du tampon de données est définie dans le mot CONTROL[3].
PDU de la requête Modbus :
La longueur de la réponse de données est définie dans le mot CONTROL[10].
PDU de la réponse Modbus :
Le début de la réponse de données (Offset de la réponse) est défini dans le mot CONTROL[4].
NOTE : pour éviter d'écraser la requête, la valeur de l'offset de la réponse multipliée par 2 doit être supérieure à la longueur de la requête (CONTROL[10]).
La longueur de la réponse de données est définie dans le mot CONTROL[11].
ATTENTION
PERTE DE DONNEES
Vérifiez que l'offset de la réponse est supérieur à la longueur de la requête de données.
Le non-respect de ces instructions peut provoquer des blessures ou des dommages matériels.
NOTE : la requête et la réponse doivent être structurées selon l'ordre « petit-boutiste ». Chaque mot présente 2 octets de données au format « petit-boutiste », dans lequel l'octet de poids faible est stocké dans la plus petite adresse mémoire.
Requête Modbus
Le format de la PDU de la requête Modbus est le suivant :
Offset d'octet
Champ
Type de données
Description
1
Code fonction
BYTE
Code fonction Modbus
2
Données de la requête
Zone BYTE
Ce champ dépend du code fonction et contient des informations telles que des références de variable, des décomptes de variables, des offsets de données, des codes de sous-fonction, etc.
Réponse Modbus
Le format de la PDU de la réponse Modbus est le suivant :
Offset d'octet
Champ
Type de données
Description
1
Code fonction
BYTE
Code fonction Modbus
2
Données de la réponse
Zone BYTE
Ce champ dépend du code fonction et contient des informations telles que des références de variable, des décomptes de variables, des offsets de données, des codes de sous-fonction, etc.
Réponse d'exception Modbus
Le format de la PDU de la réponse d'exception Modbus est le suivant :
Offset d'octet
Champ
Type de données
Description
1
Code fonction
BYTE
Code fonction Modbus + 80 (hexadécimal)
2
Code d'exception code
BYTE
Ce champ est défini dans la Spécification du protocole d'application MODBUS.
Spécification Modbus
Les codes fonction Modbus standard sont définis dans la Spécification du protocole d'application MODBUS V1.1b, disponible en téléchargement sur le site : www.modbus-ida.org.
Exemple d'envoi de requête Modbus
Pour lire quatre registres d'entrée contigus (code fonction Modbus 4) à partir du registre 100 (64 au format hexadécimal) dans un équipement distant, une requête Modbus doit être envoyée sur le réseau avec la réponse Modbus suivante :
Nom du champ de la requête
Valeur
Code fonction
04
Adresse de début, haute
00
Adresse de début, basse
64
Nombre de registres, haut
00
Nombre de registres, bas
04
Nom du champ de la réponse
Valeur
Code fonction
04
Nombre d'octets
08
Valeur du registre 100, haute
00
Valeur du registre 100, basse
01
Valeur du registre 101, haute
00
Valeur du registre 101, basse
02
Valeur du registre 102, haute
00
Valeur du registre 102, basse
03
Valeur du registre 103, haute
00
Valeur du registre 103, basse
04
Utilisation des valeurs suivantes du mot CONTROL :
Le codage des données dans le tampon de données est le suivant :
Champ
Valeur (hexadécimale)
Description
Requête
DATABUF[1]
0400
Code fonction + Adresse de début, haute
DATABUF[2]
6400
Adresse de début, basse + Nombre de registres, haut
DATABUF[3]
0400
Nombre de registres, bas + NULL
DATABUF[4]
0000
Valeur de type Null
DATABUF[5]
0000
Valeur de type Null
Réponse
DATABUF[6]
0408
Code fonction + Nombre d'octets
DATABUF[7]
0001
Valeur du registre 100, haute + Valeur du registre 100, basse
DATABUF[8]
0002
Valeur du registre 101, haute + Valeur du registre 101, basse
DATABUF[9]
0003
Valeur du registre 102, haute + Valeur du registre 102, basse
DATABUF[10]
0004
Valeur du registre 103, haute + Valeur du registre 103, basse
DATABUF[11]
0000
Valeur de type Null