WRITE_READ_VAR : lire et écrire des registres internes sur un équipement Modbus
Cette fonction permet de lire et d'écrire des registres internes (de type MW uniquement) sur un équipement externe utilisant le protocole Modbus. Ces opérations de lecture et d'écriture s'effectuent au cours d'une transaction unique.
L'opération d'écriture est exécutée en premier. La fonction WRITE_READ_VAR peut ensuite :
oécrire des registres internes consécutifs et les consulter immédiatement pour vérifier leurs valeurs ;
oécrire des registres internes consécutifs et en lire d'autres en une seule requête.
Description des paramètres spécifiques du bloc fonction WRITE_READ_VAR
Entrée |
Type |
Commentaire |
---|---|---|
ObjType |
Le paramètre ObjType indique le type d'objet à écrire et à lire (MW uniquement). |
|
FirstWriteObj |
DINT |
Le paramètre FirstWriteObj indique l'index du premier objet à écrire. |
WriteQuantity |
UINT |
Le paramètre WriteQuantity indique le nombre d'objets à écrire : o1 à 121 : registres (type MW) |
WriteBuffer |
POINTER TO BYTE |
Adresse du pointeur sur le tableau qui contient les données à écrire sur l’appareil cible. Le tableau doit être égal ou supérieur aux données à écrire. Utilisez la fonction ADR pour transmettre l'adresse du premier octet du tableau (reportez-vous au diagramme CFC dans l'exemple). |
FirstReadObj |
DINT |
Le paramètre ReadFirstObj indique la valeur d'index du premier objet à lire. |
ReadQuantity |
UINT |
Le paramètre ReadQuantity indique le nombre d'objets à lire : o1 à 125 : registres (type MW) |
ReadBuffer |
POINTER TO BYTE |
Adresse du pointeur sur le tableau qui contient les données reçues qui ont été lues de l’appareil cible. Le tableau doit être égal ou supérieur aux données à lire. Utilisez la fonction ADR pour transmettre l'adresse du premier octet du tableau (reportez-vous au diagramme CFC dans l'exemple). |
NOTE : Pour empêcher tout accès non autorisé, par exemple un accès de pointeur (hors limites) dans la mémoire, veillez à ce que la taille du tableau lié à l’entrée Buffer soit égale ou supérieure aux données qui seront écrites sur l’équipement cible. Il est recommandé de lier le paramètre Quantity défini des données à écrire ou à lire dans la déclaration du tampon comme dans l’exemple suivant.
Cet exemple montre l’implémentation du bloc fonction WRITE_READ_VAR en association avec le bloc fonction ADDM afin d’écrire deux registres commençant à l’adresse 11 et de lire deux registres commençant à l’adresse 1 d’un esclave Modbus. L’esclave Modbus est défini avec l’adresse 8 et doit être joignable via l’interface de ligne série 1. La condition préalable est la configuration de Modbus Manager en tant que maître sous l'interface de ligne série 1.