SEND_RECV_MSG : Envoi et/ou réception de messages définis par l'utilisateur

Description de la fonction

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.

Représentation graphique

Description des paramètres spécifiques du bloc fonction SEND_RECV_MSG

Entrée

Type

Commentaire

QuantityToSend

UINT

QuantityToSend indique le nombre d'octets à envoyer.

Limitation du contrôleur :

  • M258/LMC058 : 1050 octets

  • M241/M251/M262 : 252 octets

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 :

  • M258/LMC058 : 1050 octets

  • M241/M251/M262 : 252 octets

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 paramètres d'entrée et de sortie communs à tous les blocs fonction de la bibliothèque PLCCommunication sont décrits dans une autre section.

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 :

NOTE : Il n'y a aucun caractère de début et de fin dans l'exemple ci-dessus. La condition de fin de trame reçue est un délai d'expiration de 250 ms.

Exemple

Cette unité organisationnelle de programme (POU) permet uniquement d'envoyer le message défini par l’utilisateur "hello" sur la ligne série 1 :

NOTE : Un front montant sur la variable Start lance la conversion d'une adresse et l'envoi du message.