Le bloc fonction SEND_RECV_MSG envoie et reçoit des messages définis par l'utilisateur. Il envoie un message sur le support sélectionné (une ligne série, par exemple), puis attend une réponse. Vous pouvez également envoyer/recevoir un message sans attendre/envoyer de réponse.
Cette fonction doit être utilisée avec un gestionnaire ASCII. Elle peut également être utilisée avec un gestionnaire Modbus si vous souhaitez envoyer une requête qui n'est pas mise en œuvre dans la bibliothèque de communication. Dans ce cas, vous devez créer la requête vous-même.
Entrée |
Type |
Commentaire |
---|---|---|
QuantityToSend |
UINT |
QuantityToSend indique le nombre d'octets à envoyer. Limitation du contrôleur :
|
BufferToSend |
POINTER TO BYTE |
BufferToSend indique l'adresse du tampon (tableau d'octets) dans lequel le message à envoyer est stocké. La définition du pointeur associé nécessite l'utilisation de la fonction standard ADR. (Voir l'exemple ci-dessous.) Si la valeur est 0, la fonction est configurée uniquement pour la réception. |
SizeRecvBuffer |
UINT |
SizeRecvBuffer indique la taille disponible (en octets) dans le tampon de réception. La taille des données reçues (en octets) est disponible dans la propriété interne de l'instance de bloc fonction (variable interne) : <nom d'instance>.NbRecvBytes. Limitation du contrôleur :
|
BufferToRecv |
POINTER TO BYTE |
BufferToRecv est l'adresse du tampon (tableau d'octets SizeRecvBuffer) dans lequel le message reçu est stocké. La définition du pointeur associé nécessite l'utilisation de la fonction standard ADR. (Voir l'exemple ci-dessous.) Si la valeur est 0, la fonction est configurée uniquement pour l'envoi. |
Pour les opérations d'envoi uniquement, l'échange s'achève (Busy remis à 0) lorsque toutes les données (y compris les caractères de début et de fin éventuels) ont été envoyées à la ligne.
Pour les opérations d'envoi/réception ou de réception uniquement, le système reçoit des caractères jusqu'à ce que la condition de fin soit remplie. Une fois la condition satisfaite, l'échange s'achève (Busy remis à 0). Les caractères reçus sont alors copiés dans le tampon de réception jusqu'à la limite de caractères SizeRecvBuffer et la taille des données reçues (en octets) est indiquée dans la propriété d'instance de bloc fonction (variable interne) : <nom d'instance>.NbRecvBytes. L'entrée SizeRecvBuffer ne représente pas une condition de fin.
Les conditions de début et de fin des messages définis par l’utilisateur sont configurées dans la boîte de dialogue de configuration du gestionnaire ASCII :