Les bibliothèques
Où plutôt, la bibliothèque, car il n'y en a qu'une seule.
Cette bibliothèque est, lors de la rédaction de cet article, à sa version 1.1.3.0 et elle comporte les blocs fonctionnels nécessaires à la gestion d'une communication Modbus, que ce soit en mode série ou en mode Ethernet.
Coté Master
Les deux blocs fonctionnels à utiliser seront donc :
- Pour une communication série
- Pour une communication Ethernet TCP
En dehors de tous les paramètres qui sont liés à la communication, nous pouvons remarquer que les deux blocs fonctionnels travaillent avec les mêmes informations, à savoir :
- xTrigger : déclenchement de l'envoi de la requête (cette variable est mise à FALSE par le bloc lui-même lorsque la requête a été exécutée)
- utQuery : une structure contenant les informations de la requête.
- utResponse : une structure contenant les informations renvoyées par l'esclave / serveur
En travaillant avec ces deux blocs fonctionnels, nous pourrons donc arriver à réaliser un programme gérant une communication modbus. Cette communication sera rapidement modifiable au niveau de la couche physique puisqu'il suffira de changer de bloc fonctionnel, sans toucher ni à la génération des requêtes ni au traitement des réponses.
Coté Slave
Les deux blocs fonctionnels à utiliser seront donc :
- Pour une communication série
- Pour une communication Ethernet TCP
Les mêmes constatations que pour les blocs Master peuvent être faites.
En dehors des informations liées à la connexion, les deux blocs fonctionnels travaillent avec 4 tableaux :
Ces quatre tableaux contiennent les informations qui seront utilisées pour les échanges de données et utilisés en fonction des codes fonctions reçus par le Master :
No | Description | Data Type | Access | Access by Functioncodes |
---|---|---|---|---|
1 | Discrete Input Area | ARRAY[..] OF BOOL | Read only | FC02 |
2 | Discrete Output Area | ARRAY[..] OF BOOL | Read / Write | FC01 FC05 FC15 |
3 | Input Register Area | ARRAY[..] OF WORD | Read only | FC04 |
4 | Holding Register Area | ARRAY[..] OF WORD | Read / Write | FC03 FC06 FC16 FC22 FC23 |
Les bornes mini et maxi des tableaux donneront les adresses mini et maxi des registres modbus utilisables.
Par exemple, un tableau défini pour les Holding Register Area allant de 150 à 7500 défini comme suit :
VAR
awHoldingRegisters:ARRAY[150..7500] OF WORD;
END_VAR
permettra un accès en lecture / écriture aux adresses des registres modbus allant de 150 à 7500.