Description fonctionnelle
La fonction DATA_EXCH
permet d'effectuer
des transferts de données entre des équipements avec des
UC (M340) M580, CPU et Premium :
émission de données,
réception de données,
émission suivie d'une réception de données.
Le type de requête susceptible d'être envoyée dépend du type d'UC :
Sur les UC Modicon M340 et M580, cette fonction permet d'envoyer des requêtes Modbus à un autre équipement. Le protocole d'application Modbus est décrit sur le site http://www.modbus.org.
Sur l'UC Premium, cette fonction permet d'envoyer des requêtes UNI-TE à un autre équipement. A cette fin, il est nécessaire de s'assurer que les données envoyées constituent la totalité de la trame requise par le protocole qui est utilisé.
Les paramètres supplémentaires EN
et ENO
peuvent être configurés.
Représentation en FBD
Représentation :

Représentation en LD
Représentation :

Représentation en IL
Représentation :
LD Address
DATA_EXCH Action, Data_to_Send, Management_Param,
Received_Data
Représentation en ST
Représentation :
DATA_EXCH(Address, Action, Data_to_Send, Management_Param,
Received_Data);
Description des paramètres
Le tableau suivant décrit les paramètres d’entrée :
Paramètre |
Type |
Commentaire |
---|---|---|
|
ARRAY [0... 5] OF ARRAY [0..7] OF |
Adresse de l’entité
destinataire de l’échange. Si le paramètre Pour l'UC Premium :
Pour l'UC Modicon M340 :
Pour l'UC Modicon M580 :
|
|
|
Type d'action à réaliser. Pour l'UC Premium, les valeurs possibles sont :
Pour les UC Modicon M340 et M580, la valeur possible est :
|
|
ARRAY [n..m] OF |
Tableau d'entiers à envoyer à l'équipement destinataire de la requête. NOTE : assurez-vous que la longueur minimale est égale
à 1 élément, même s'il n'y a pas
de données à envoyer (code 3 pour l'action, par
exemple).
NOTE : assurez-vous que la longueur des
données à envoyer (en octets) est affectée au quatrième mot
de la table de gestion avant de lancer la fonction, pour que celle-ci
puisse s'exécuter correctement.
|
Le tableau suivant décrit les paramètres d’entrée/sortie :
Paramètre |
Type |
Commentaire |
---|---|---|
|
ARRAY [0..3] OF |
Table de gestion de l'échange composée des mots suivants :
Pour plus d'informations, consultez la section Structure des paramètres de gestion. |
Le tableau suivant décrit les paramètres de sortie :
Paramètre |
Type |
Commentaire |
---|---|---|
|
ARRAY [n..m] OF |
Tableau d'entiers qui contient les données reçues lors d'une action en mode réception ou émission/réception. la taille des données reçues (en octets) est écrite automatiquement par le système dans le quatrième mot de la table de gestion NOTE : Même si l'action est
uniquement une transmission, vérifiez qu'une table
RECP existe avec une taille minimale de 1. |
Services Modicon M340
Sur les automates Modicon M340, l'utilisateur peut coder un protocole privé et gratuit pour envoyer des requêtes Modbus. Cela permet aux supports Modbus d'envoyer ou de recevoir une chaîne octale libre.
L'EF DATA_EXCH
peut être utilisée sur tous les ports
de communication à l'exception du port CANopen. Les limites
de taille du tampon SendBuffer sont fournies par les caractéristiques
du port de destination.
Le tableau ci-après indique la longueur pour tous les ports de communication :
|
|
---|---|
Ethernet (NOE ou port intégré) |
1 Ko |
Modbus |
256 octets |
La longueur du message à envoyer ou à recevoir est indiquée dans le quatrième mot du tableau de gestion.
Le bloc de conversion ADDM
est utilisé pour indiquer la destination de la
requête.
Reportez-vous à la fonction ADDM.
DATA_EXCH
est utilisée pour les commandes
Modbus sur Ethernet.Les autres entités Ethernet ne
sont pas prises en charge. L'EF DATA_EXCH
ne gère pas directement une connexion via TCP.
Pour le protocole utilisateur ouvert sur Modbus, la syntaxe suivante est acceptée :
- Serveur de module
- Protocole Modbus
- Protocole utilisateur
Exemple de service Modicon M340
Objectif : Ecrire dans un seul registre %MW100, longueur := 5
(* REQUEST WRITE SINGLE REGISTER %MW100 Length := 5 *)
(* Data_to_send = Modbus request encoding *)
(* Byte 1 = Register Address Hi = 0 ; Byte 0 = Function code = 06 *)
Data_to_Send[0] := 6;
(* Byte 3 = Register Value Hi ; Byte 2 = Register Address Lo = 100 *)
Data_to_Send[1] := (RegisterValue & 16#FF00) + 100;
(* Byte 5 = unused; Byte 4 = Register Value Lo)
Data_to_Send[2] := RegisterValue & 16#FF;
IF ((Management_Param[ACTIVITY] & 1) = 0 ) THEN
Management_Param[LENGTH] := 5; (* LENGTH RQ WRITE *)
END_IF;
Il est possible d'utiliser l'instruction ROL suivante :
Value_read := ROL(Received_Data[1], 8); (* CONVERT BIG/LITTLE ENDIAN *)