Documentation MCS32
END WHILE
FinTimeOut! = TIMER+0.200
WAIT (Inp(Capteur)=On) Or (TIMER>FinTimeOut&)
6-1-6- Evénements
A) Evénements
Dans un système multitâche, les mécanismes d'événements sont utiles pour la communication
entre tâches. La gestion d'événements peut aussi fournir des fonctions de contrôle de process.
Plusieurs programmes peuvent attendre ou envoyer le même événement. Le langage de
programmation offre deux mécanismes pour déclarer ces opérations d'événements entre tâches.
6-1-7- Signal ou Diffuse et Wait Event
Pour envoyer un même événement à un seul programme, il existe la fonction SIGNAL. Pour
l'envoyer à tous les programmes, il existe la fonction Diffuse.
Syntaxe : SIGNAL <NomEvenement> ou DIFFUSE <NomEvenement>
Le <NomEvenement> peut être n'importe quel nom qui n'est pas un mot-clé mais doit être
utilisé au moins une fois dans une fonction d'attente d'événement.
SIGNAL enverra l'événement au premier programme qui l'attend alors que Diffuse l'enverra à
tous ceux qui l'attendent.
L'instruction WAIT EVENT est utilisée pour attendre cet événement.
La syntaxe de l'instruction WAIT EVENT est :
WAIT EVENT <NomEvenement>
Après l'instruction WAIT EVENT, l'exécution du programme est arrêtée et continuera dès que
l'événement sera reçu.
Exemple
avec SIGNAL et WAIT EVENT:
'Tâche maître
PROG
...
RUN TacheEsclave
...
WAIT Inp(CycleStart)=On
...
SIGNAL Start
...
...
WAIT Inp(CycleStop)=On
HALT TacheEsclave
...
END PROG
Dans cet exemple, il y a une tâche maître qui contrôle l'exécution d'une tâche esclave. La tâche
maître attend le bouton start. Quand la condition est vraie, la tâche maître signale le démarrage
à la tâche esclave en envoyant l'événement start. Si le bouton Stop est pressé, la tâche maître
arrête la tâche esclave. La tâche esclave attend l'événement start. Quand cet événement est reçu,
la tâche esclave exécute son cycle et se remet de nouveau en attente.
Exemple
avec DIFFUSE et WAIT EVENT:
'Tâche maître
PROG
...
RUN TacheEsclave
...
WAIT Inp(CycleStart)=On
...
DIFFUSE Start
...
R342
EX
'Attente d'un capteur ou
'd'un time-out de 200ms.
'Tâche esclave
PROG
Debut:
...
...
...
WAIT EVENT Start
GOTO Debut
END PROG
'Tâche esclave
PROG
Debut:
...
...
...
WAIT EVENT Start
GOTO Debut
- 128 -
SERAD S.A.