Opérations sur sémaphores
Exemple d'application pour
les sémaphores
Problème posé
Un automate S5-155U comporte quatre CPU qui accèdent à une zone de mémoire
commune de la périphérie Q (QW 6) pour y déposer des signalisations d'état
qui sont transmises à un appareil de signalisation. Chaque signalisation
doit persister pendant 10 secondes avant de pouvoir être remplacée par une
nouvelle signalisation en provenance de la même ou d'une autre CPU.
L'accès au mot périphérique QW 6 (périphérie étendue, pas de mémoire image)
est géré par un sémaphore. Seule la CPU ayant positionné avec succès le
sémaphore correspondant à cette zone peut écrire sa signalisation sur QW 6.
Ce sémaphore reste positionné pendant une durée de 10 secondes (temporisati-
on T 10). Ce n'est qu'après l'écoulement de cette temporisation que la CPU
libère le sémaphore et la zone de mémoire, permettant ainsi aux autres CPU
d'y accéder. QW 6 peut alors recevoir une autre signalisation.
Si le sémaphore a déjà été positionné par une autre CPU au moment où la CPU
tente de le positionner, la CPU ajourne sa tentative de positionnement
jusqu'au cycle suivant.
Réalisation
Le programme suivant peut être traité dans les quatre CPU, avec à chaque
fois une signalisation différente.
FB 1 :
PROGRAMME
PRINCIPAL
5 mémentos sont utilisés :
M 10.0 = 1
Une signalisation est demandée ou en cours de traitement.
M 10.1 = 1
Le sémaphore a été positionné avec succès.
M 10.2 = 1
La temporisation est lancée.
M 10.3 = 1
La signalisation est transférée.
M 10.4 = 1
Le sémaphore est libéré.
3 - 78
FB 10 :
SIGNAL
FB 100 :
POSITIONNER LE
SEMAPHORE
FB 110 :
SORTIR LA
SIGNALISATION
FB 101 :
LIBERER LE
SEMAPHORE
Suite à la page suivante
Programmation de la CPU 948
C79000-G8577-C848-04