Des fonctions de communication spécifiques sont définies pour l'envoi et la réception de données via une voie de communication en mode caractère. Ces fonctions dépendent de la plate-forme.
Fonctions de communication
Des fonctions de communication spécifiques sont définies pour l'envoi et la réception de données via une voie de communication en mode caractère :
Plate-forme
|
Envoi d'une chaîne de caractères
|
Lecture d'une chaîne de caractères
|
Lecture d'un tableau d'octets
|
M580
|
PRINT_CHAR
|
INPUT_CHAR
|
INPUT_BYTE
|
M340
|
PRINT_CHAR
|
INPUT_CHAR
|
INPUT_BYTE
|
Quantum
|
PRINT_CHAR_QX
|
INPUT_CHAR_QX
|
–
|
NOTE : Pour confirmer le bit d'activité de la fonction INPUT_CHAR, il est nécessaire de définir une valeur de timeout si la voie est configurée sans l'option Arrêt sur silence.
Mécanisme interne du module BMXNOM0200
Le BMXNOM0200 peut stocker jusqu'à 16 trames en émission ou en réception. Les trames dans les tampons sont gérées selon leur ordre d'arrivée. Sur les lignes RS-232, elles sont gérées en mode Full Duplex.
Les données reçues sont enregistrées dans 16 tampons cycliques en série de 1024 octets chacun.
Ce mécanisme est représenté ci-dessous :
Nombre de trames reçues dans les tampons
Lorsque le port série est configuré en mode caractère, %MWr.m.c.7 indique le nombre de trames contenues dans le tampon de réception du module BMXNOM0200.
Ce mot est incrémenté chaque fois que le BMXNOM0200 reçoit une trame sur une ligne RS-232.
Les trames sont récupérées par le programme d'application à l'aide de fonctions de réception de caractères, à savoir les fonctions élémentaires (EF) INPUT_CHAR et INPUT_CHAR_QX pour la réception d'une chaîne ou l'EF INPUT_BYTE pour la réception de données binaires.
L'EF de réception de données peut être exécutée avant la réception des données par le module. Dans ce cas, le module attend les données de la ligne, puis les envoie à l'UC.
L'EF peut également être exécutée une fois la trame reçue (par exemple, après la vérification de %MWr.m.c.7 avec READ_STS). Dans ce cas, le module envoie immédiatement la trame en mémoire tampon à l'UC.
Il est également possible de forcer le module à attendre les données de la ligne en réglant le paramètre Reset de l'EF sur 1. Dans ce cas, les données précédemment placées en mémoire tampon sont vidées et le BMXNOM0200 attend de nouvelles données à envoyer à l'UC.
Le comportement du module diffère en fonction de :
-
la configuration de la voie (avec ou sans paramètres d'arrêt),
-
les paramètres d'entrée des fonctions de communication,
-
l'état de la mémoire tampon avant l'activation de la fonction de communication.
NOTE : La taille maximale d'une trame envoyée par le module BMXNOM0200 à l'UC est de 1024 octets. Cependant, en interne, la trame de réception a une taille maximale de 1025 octets si un octet de fin de trame est configuré. Cet octet n'est pas inclus dans les données envoyées à l'UC.
Le tableau ci-après décrit le comportement du module dans les conditions suivantes :
Si
|
Alors
|
Si le tampon n'est pas vide avant l'activation de l'EF
|
Le module envoie à l'UC le contenu du tampon dans la limite de 1024 caractères.
|
Si le tampon est vide avant l'activation de l'EF
|
Le module attend la réception des premiers caractères avant d'envoyer le contenu du tampon à l'UC.
|
Si la réinitialisation du tampon est sélectionnée avant l'activation de l'EF
|
Le module vide d'abord le tampon, puis attend la réception des premiers caractères suivants.
|
Le tableau ci-après décrit le comportement du module dans les conditions suivantes :
Si
|
Alors
|
Si le tampon n'est pas vide avant l'activation de l'EF
|
Le module attend que le tampon contienne NB ou INPUT_LEN octets avant d'envoyer ce contenu à l'UC.
|
Si le tampon est vide avant l'activation de l'EF
|
Le module attend la réception des NB ou INPUT_LEN caractères avant d'envoyer le contenu du tampon à l'UC.
|
Si la réinitialisation du tampon est sélectionnée avant l'activation de l'EF
|
Le module vide le tampon et attend la réception des NB ou INPUT_LEN caractères suivants.
|
Le tableau ci-après décrit le comportement du module dans les conditions suivantes :
Si
|
Alors
|
Si le tampon contient un message avant l'activation de l'EF
|
Le module envoie le message à l'UC à raison de 1024 caractères maximum.
|
Si le tampon est vide avant l'activation de l'EF
|
Le module attend la réception du premier message avant de l'envoyer à l'UC à raison de 1024 caractères maximum.
|
Si la réinitialisation du tampon est sélectionnée avant l'activation de l'EF
|
Le module vide le tampon et attend la réception des premiers messages suivants.
|
Les trames de taille nulle sont rejetées. Si un octet de fin de trame est configuré et non demandé dans les données, une trame de taille nulle reçue par le module BMXNOM0200 n'est pas envoyée à l'UC. Dans ce cas, si un octet de fin de trame est reçu sans donnée le précédant, cette trame est rejetée et aucune information n'est envoyée à l'UC.
Réception de plusieurs trames pendant une tâche MAST
Plusieurs trames peuvent être transmises par le module BMXNOM0200 à l'UC pendant une tâche MAST et plusieurs instances d'EF INPUT_CHAR peuvent être lancées en parallèle concernant le même module BMXNOM0200. Cela peut être nécessaire si une quantité importante de données arrive sur la ligne série.
Cancel et Timeout sont transmis au module BMXNOM0200. La condition Timeout (expiration de délai) et les ordres Cancel (annulation) appliqués à une instance de INPUT_CHAR sont transmis au module BMXNOM0200. La tâche en attente correspondante est supprimée de la file d'attente des tâches du module BMXNOM0200.
Mécanisme interne du module BMXNOM0200 : émission
Utilisez l'EF PRINT_CHAR ou PRINT_CHAR_QX pour envoyer des données sur la ligne série du module BMXNOM0200.
NOTE : Si plusieurs trames ont été envoyées (plusieurs instances de l'EF appelées) et qu'un silence a été configuré, le module BMXNOM0200 insère un temps de silence entre chaque trame.
Il est possible de lancer jusqu'à 16 requêtes d'EF : elles sont envoyées en série, séparées par un silence.