Présentation
Utilisez l'opération 15 du bloc MSTR pour envoyer des requêtes Modbus génériques sur le réseau.
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 :
Lorsque la broche d'entrée ENABLE est activée (ON), l'operation 15 débute.
Si la broche d'entrée ABORT est activée (ON) ou si la broche d'entrée ENABLE est désactivée (OFF), l'opération est arrêtée.
La broche de sortie ACTIVE est activée (ON) pendant l'opération.
La broche de sortie ERROR est activée (ON) si l'opération n'aboutit pas.
La broche de sortie SUCCESS est activée (ON) si l'opération aboutit.
Les broches de sortie CONTROL et DATABUF définissent l'opération (reportez-vous aux sections Bloc CONTROL et Tampon de données).
EN et ENO peuvent être configurés comme paramètres supplémentaires.
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 | |
---|---|
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
doit être envoyée sur le réseau avec la 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 :
CONTROL[1] (opération MSTR) = 15
CONTROL[2] (code d'erreur) = reportez-vous à la description du bloc CONTROL (lecture seule)
CONTROL[3] (longueur de DATABUF) = 11
CONTROL[4] (offset de la réponse) = 5
CONTROL[5] (registre de routage) = reportez-vous à la description du bloc CONTROL
CONTROL[6] (IP1) = reportez-vous à la description du bloc CONTROL
CONTROL[7] (IP1) = reportez-vous à la description du bloc CONTROL
CONTROL[8] (IP1) = reportez-vous à la description du bloc CONTROL
CONTROL[9] (IP1) = reportez-vous à la description du bloc CONTROL
CONTROL[10] (longueur de la requête) = 5
CONTROL[11] (offset de la réponse) = 10
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 |