Description de la fonction
La fonction EXCH_QX
permet de transférer
des données (via Modbus) entre des esclaves Modbus connectés à un module de communication Modicon X80 (BMX NOM) situé dans une station EIO.
Les paramètres supplémentaires EN
et ENO
peuvent être configurés.
Les blocs fonction de communication utilisent un chemin de transaction de données et requièrent plusieurs cycles pour effectuer une opération. Le nombre de chemins de transaction disponibles par module et par cycle MAST dépend du port de communication utilisé :
Les modules à port intégré Modbus Plus ou NOM prennent en charge jusqu'à 4 blocs simultanément.
Le port intégré Ethernet TCP/IP prend en charge jusqu'à 4 blocs simultanément.
Les modules TCP/IP Ethernet NOE, NOC et 140 CRP 312 00 prennent en charge jusqu'à 16 blocs simultanément.
D'autres blocs fonction de communication peuvent être programmés sur le même port de communication. Toutefois, le bloc de communication qui dépasse le nombre maximum sur ce port n'est traité qu'après la mise à disposition d'un des chemins de transaction. Le bloc suivant sur le port devient alors actif et commence à utiliser un chemin disponible.
Représentation en FBD
Représentation :

Représentation en LD
Représentation :

Représentation en IL
Représentation :
CAL EXCH_QX_Instance (ENABLE:=ExchQxEnable,
ABORT:=ExchQxAbort, ADDR:=ModuleAddress, SEND_BYTE:=NbBytesToSend,
SEND_BUFFER:=ExchQxDataSource, DONE=>ExchQxSuccessfull, ACTIVE=>ExchQxActive,
ERROR=>ExchQxFaulty, STATUS=>ErrorCode, REC_BYTE=>NbBytesReceived,
REC_BUFFER=>ReceivedBuffer)
Représentation en ST
Représentation :
EXCH_QX_Instance (ENABLE:=ExchQxEnable,
ABORT:=ExchQxAbort, ADDR:=ModuleAddress, SEND_BYTE:=NbBytesToSend,
SEND_BUFFER:=ExchQxDataSource, DONE=>ExchQxSuccessfull, ACTIVE=>ExchQxActive,
ERROR=>ExchQxFaulty, STATUS=>ErrorCode, REC_BYTE=>NbBytesReceived,
REC_BUFFER=>ReceivedBuffer)
Description des paramètres
Le tableau suivant décrit les paramètres d’entrée :
Paramètre |
Type |
Commentaire |
---|---|---|
|
|
Réglé sur 1 pour effectuer des transferts de données. |
|
|
Réglé sur 1 pour abandonner l'opération en cours. |
|
|
Tableau contenant l'adresse de l'esclave Modbus, c'est-à-dire le résultat de la fonction ADDMX. |
|
|
Nombre d'octets à envoyer. |
|
|
Champ de données source. Une structure de données doit être déclarée en tant que variable localisée pour le fichier source. |
Le tableau suivant décrit les paramètres de sortie :
Paramètre |
Type |
Commentaire |
---|---|---|
|
|
Réglé sur 1 lorsque la fonction s'est exécutée correctement. |
|
|
Réglé sur 1 lorsque la fonction est en cours d'exécution. |
|
|
Réglé sur 1 si une erreur est détectée par le bloc fonction. |
|
|
Fournit le code d'erreur si le bloc fonction détecte une erreur. |
|
|
Nombre d'octets à recevoir par l'esclave Modbus. |
|
|
Données reçues (Une structure de données doit être déclarée en tant que variable localisée pour le fichier à lire.) |
Exemple ST
(* Example:
we want to read the %MW1000 on slave number 5 (a M340 PLC for instance)
wired to channel 0 of the NOM in
slot 2 of which IP address is 192.168.10.17,
the Quantum CRP is in slot 5 for instance.
First of all you should declare in
the data editor the following variables:
data_to_send as an ARRAY [0..4] OF BYTE (or more if
you want to send more bytes)
bytes_to_send as a WORD
slave_addres
as a STRING[40]
received_data
as an ARRAY [0..3] OF BYTE (or more if you need)
enable_sending as a BOOL
and you should
create an instance of EXCH_QX EFB named for instance EXCH_QX_6 *)
(* initialize the data to send *)
data_to_send[0]:=16#03; (* Modbus function
code read Holding register *)
data_to_send[1]:=16#03; (* MSB of the first register address *)
data_to_send[2]:=16#E8; (* LSB of the
first register address, 16#03E8 = 1000*)
data_to_send[3]:=16#00; (* MSB of the quantity of registers
to read *)
data_to_send[4]:=16#01;
(* LSB of the quantity of registers to read *)
(* initialize the number of byte to send
*)
bytes_to_send:=5;
(* initialize the address of
the slave *)
slave_address:='1.5.1{192.168.10.17}\\0.2.0.5';
(* CRP slot 5, Drop address 192.168.10.17,
NOM in slot 2 of main drop rack. *)
EXCH_QX_6 (ENABLE := enable_sending,
ADDR := addmx(slave_address),
SEND_BYTE := bytes_to_send,
SEND_BUFFER := data_to_send,
REC_BUFFER => received_data);
(* to start the EFB EXCH_QX_6 set enable_sending,
then
received_data[0] will
contain the function code sent (3)
received_data[1] will contain the number of bytes received (2)
received_data[2] and received_data[3]
will contain the value of %MW1000 from the slave number 5*)