Présentation
Le bloc XXMIT prend en charge les fonctions de communication ASCII suivantes :
Entrée ASCII terminée
Entrée ASCII simple
Messages sous forme de chaînes ASCII
Configuration du port Modbus
La fonction XXMIT est configurée à travers son bloc fonction. Le bloc fonction initialise le port Modbus 1 chaque fois qu'il est actif, avec les paramètres définis. Les paramètres XXMIT peuvent être affichés sur l'écran LCD de l'automate.
Exemple de configuration du bloc fonction XXMIT :

Exemple d'écran de configuration d'UC avec un ensemble de valeurs différent :

Exemples de paramètres sur l'écran LCD de l'automate :

Les trois graphiques ci-dessus présentent des valeurs différentes pour la fonction XXMIT. Indépendamment des éléments définis ou affichés sur l'écran de configuration de l'UC ou sur l'écran LCD, les valeurs réelles utilisées pour la transmission sont celles du bloc fonction XXMIT :
Débit : 2400
Parité : Paire
Bits de données : 7
Bits d'arrêt : 2
Fonction d'entrée ASCII terminée
Lorsque le bit 11 (Entrée ASCII terminée) du mot de commande est à 1, le tableau MsgOut doit contenir le tableau de définition d'entrée ASCII. En fonction du type de données sélectionné pour MsgOut, la longueur du tableau de définition d'entrée ASCII terminée est de trois mots ou six octets. Le tableau de définition d'entrée ASCII terminée est présenté ci-dessous.
Tableau de définition d'entrée ASCII terminée (type de données WordArray)
Mot |
Octet de poids fort |
Octet de poids faible |
---|---|---|
MsgOut[1] |
Nombre de caractères de départ (contenu autorisé = 0, 1, 2) |
Nombre de caractères de fin (contenu autorisé = 1, 2) |
MsgOut[2] |
Premier caractère de départ |
Deuxième caractère de départ |
MsgOut[3] |
Premier caractère de fin |
Deuxième caractère de fin |
Tableau de définition d'entrée ASCII terminée (type de données ByteArray)
Octet |
Fonction |
---|---|
MsgOut[1] |
Longueur de la chaîne de départ (0, 1 ou 2) |
MsgOut[2] |
Longueur de la chaîne de fin (1 ou 2) |
MsgOut[3] |
Premier caractère de départ |
MsgOut[4] |
Deuxième caractère de départ |
MsgOut[5] |
Premier caractère de fin |
MsgOut[6] |
Deuxième caractère de fin |
Au cours du processus, RecCount contient le cumul des caractères écrits dans le tableau MsgIn. Après réception de la chaîne de fin, la sortie Done du bloc XXMIT passe à 1 et RecCount contient la longueur totale de la chaîne reçue, y compris les chaînes de départ et de fin. A ce stade, le bloc XXMIT contrôle toujours le port et continue d'enregistrer les caractères récemment reçus dans le tampon FIFO de réception ASCII, car le bit 7 (Validation du tampon FIFO de réception ASCII) du mot de commande est à 1.
A l'aide du programme, vous pouvez mettre le bit Entrée ASCII simple à 0 avant le prochain cycle, tout en laissant le bit Validation du tampon FIFO de réception ASCII à 1. MsgIn n'est donc PAS écrasé par les données FIFO plus récentes, toujours collectées. A l'aide du programme, vous pouvez mettre à 0 le bit 7 (Validation du tampon FIFO de réception ASCII) et le bit 11 (Entrée ASCII terminée) pour redonner le contrôle du port à l'automate.
Lorsque le tableau MsgIn contient trop de caractères et qu'AUCUN caractère de fin n'a été détecté, ou que le tableau MsgIn est en dehors de la plage autorisée pour l'automate configuré, une erreur est générée dans Status et le paramètre RecCount n'est pas significatif. La limite de caractères est le nombre le plus petit entre 1024 et deux fois la taille du tableau MsgIn.
Exemple d'entrée ASCII terminée
Supposons que le bloc XXMIT est activé avec les bits 7 et 11 du mot de commande définis. Validez le tampon FIFO ASCII et l'entrée ASCII terminée. Le port reçoit la chaîne ASCII suivante : "AMScrlf$weight = 1245 GRAMScrlf$wei". Reportez-vous au tableau de définition d'entrée ASCII présentant le contenu indiqué par ( ) utilisé dans cet exemple.
Tableau de définition d'entrée ASCII terminée (contenu pour le type de données ByteArray)
Octet |
Contenu |
---|---|
MsgOut[1] |
Nombre de caractères de départ (0x01) |
MsgOut[2] |
Nombre de caractères de fin (0x02) |
MsgOut[3] |
Premier caractère de départ ("$") |
MsgOut[4] |
Deuxième caractère de départ (inutilisé) |
MsgOut[5] |
Premier caractère de fin ("cr") |
MsgOut[6] |
Deuxième caractère de fin ("lf") |
Exemple de tableau de définition d'entrée ASCII terminée (contenu pour le type de données WordArray)
Mot |
Octet de poids fort |
Octet de poids faible |
---|---|---|
MsgOut[1] |
Nombre de caractères de départ (0x01) |
Nombre de caractères de fin (0x02) |
MsgOut[2] |
Premier caractère de départ ("$") |
Deuxième caractère de départ (inutilisé) |
MsgOut[3] |
Premier caractère de fin ("cr") |
Deuxième caractère de fin ("lf") |
Le bloc XXMIT s'ACTIVE, puis supprime les cinq premiers caractères du tampon FIFO ("AMScrlf"), car ils ne correspondent pas au premier caractère de départ ("$"). Au cours du cycle logique, après réception de "$", le bloc XXMIT reste ACTIF et copie le "$" et les caractères suivants dans le tableau MsgIn, en mettant à jour RecCount avec le décompte effectué jusque-là, au fur et à mesure de l'entrée des caractères.
Après réception du dernier caractère de fin, la sortie Done est activée et MsgLen contient la longueur totale, égale à 22 caractères (0x0016). Le tableau MsgIn comporte : "$weight = 1245 GRAMScrlf" pour le type de données ByteArray (ou : "$w", "ei", "gh", "t", "=", "12", "45", "G", "RA", "MS", "crlf" pour le type de données WordArray).
Au cours du cycle où la sortie Done est activée, les caractères déjà reçus du message suivant ("$wei"), arrivés après la chaîne de fin, restent dans le tampon FIFO d'entrée ASCII. Le programme peut ainsi désactiver l'entrée ASCII terminée avant l'exécution du cycle suivant du bloc XXMIT pour ce port, en gardant les caractères dans le tampon FIFO jusqu'à ce que l'automate ait terminé le traitement du message courant, ce qui peut prendre plusieurs cycles.
Fonction d'entrée ASCII simple
Tous les caractères entrants sont placés dans le tableau MsgIn. Si MsgIn est réglé sur ByteArray (recommandé), les caractères entrants sont simplement stockés ainsi : le premier caractère dans le premier élément de tableau, le deuxième caractère dans le deuxième, etc. Si MsgIn est réglé sur WordArray, deux caractères sont stockés dans chaque élément. Le premier caractère est stocké dans l'octet de poids faible du premier élément. Le deuxième caractère est stocké dans l'octet de poids fort du premier élément. Le troisième caractère est stocké dans l'octet de poids fort du deuxième élément, etc. La variable de longueur du message (MsgLen) contient la longueur du message (1 à 1 024 caractères).
Messages sous forme de chaînes ASCII
Lorsque le bit 9 (Messages sous forme de chaînes) du mot de commande est à 1, le tableau MsgOut doit contenir les informations ASCII à transmettre. La longueur du message MsgLen doit être définie en fonction de la longueur du message à transmettre.
Comme indiqué dans la section Description détaillée des paramètres, MsgOut peut être de n'importe quel type de données. Pour les messages sous forme de chaînes ASCII, le type de données ByteArray reflète mieux la nature des chaînes : le premier octet contient le premier caractère, et ainsi de suite (pour plus d'informations, voir Envoi ASCII simple).
Passage du mode d'émission au mode de réception
Si votre application exige la réception d'une réponse d'un autre équipement à la suite de l'émission d'un message (requête-réponse), vous aurez besoin du bloc XXMIT pour passer du mode d'émission au mode de réception et ainsi pouvoir lire la réponse fournie par votre partenaire de communication. Le passage d'un bloc XXMIT du mode émission au mode réception peut se faire au plus tôt au cours du cycle qui suit l'opération d'émission. Il incombe à l'utilisateur de s'assurer que la réponse intervient au moins un cycle après la demande de l'automate afin d'éviter l'échec de la communication.
Le délai de transmission de votre partenaire de communication est particulièrement important en cas de cycles longs pour le demandeur et de partenaires rapides.
Considérations relatives au délai du partenaire :

Le schéma ci-dessus (qui n'est pas à l'échelle) permet d'estimer l'influence des trois facteurs de temps (cycle du demandeur, durée de transmission et cycle du partenaire) sur le délai requis pour le partenaire. Les cycles du demandeur et du partenaire étant asynchrones, celui du partenaire ne doit pas être pris en compte. La durée de transmission dépend de la longueur du télégramme envoyé et du débit en bauds. L'envoi d'un message de 18 caractères à 9600 bauds prend 14 ms. Le cycle du demandeur est sans nul doute le facteur temps le plus important. Par conséquent, même si le délai minimum du partenaire peut être inférieur à la durée du cycle du demandeur, il est recommandé d'utiliser celle-ci comme délai minimal du partenaire en vue de garantir une communication efficace.