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 :

  • 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].

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 :

  • 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