exemple du chat et de la souris
Cette section a pour objectif de montrer que le filtre logique permet l’impl´ementation
efficace du superviseur calcul´e par la SCT. Pour cela, une extension de la SCT permettant
la transformation d’un superviseur en ´equations logiques est utilis´ee (Miremadi et al.,
2011).
Cette ´etude permet ´egalement de montrer que la SCT peut servir dans l’approche par
filtre logique, afin de g´en´erer automatiquement l’ensemble des contraintes d´efinissant le
filtre logique d´evelopp´e dans cette th`ese. Ce dernier point implique une modification de
la m´ethodologie d’obtention du filtre logique (Fig. 41).
Dans un premier temps, la section III-5.1 pr´esente comment il est possible, `a partir de
la mod´elisation propos´ee dans la section II-3.3, de g´en´erer un ensemble de contraintes
logiques traduisant le superviseur de la SCT (Miremadi et al., 2011). Puis, la section
III-5.2 utilise cet ensemble de contraintes comme entr´ee de l’approche par filtre logique. Ces
contraintes sont ensuite analys´ees et compar´ees `a un ensemble d´efini manuellement.
III-5 Apports mutuels entre SCT et filtre logique : exemple du chat et de la souris 131
Validation : propriété de suffisance Exigences Contraintes et priorités Filtre logique Intégration Cohérence ? Ensemble de contraintes Modèles automates à états finis Existence de solutions ? Spécification manuelle
Traduction automatique
Choix d'une solution : priorités
Implémentation automatique
Figure 41 – Variante m´ethodologique pour l’obtention du filtre utilisant la SCT
III-5.1 G´en´eration automatique des contraintes logiques
La m´ethodologie d´evelopp´ee dans Miremadi et al. (2011) utilise les arbres de d´ecisions
binaires (BDD : Binary Decision Diagram) afin de repr´esenter les mod`eles. Les BDD
permettent des calculs efficaces mˆeme sur des mod`eles de grande dimension.
Le principe de calcul de Miremadi et al. (2011) peut ˆetre r´esum´e en plusieurs ´etapes :
1- L’automate S
0=G||K est calcul´e par composition, avec G le mod`ele du syst`eme
etK le mod`ele des sp´ecifications.
2- Certains ´etats doivent ˆetre exclus dans le but d’obtenir le superviseur. Trois types
d’´etats sont alors d´efinis : les ´etats interdits, les ´etats autoris´es et les ´etats
quel-conques. Ces ´etats sont identifi´es dansS
0.
3- Un ensemble de contraintes logiques est calcul´e, chaque contrainte autorise ou
interdit un ´ev´enement `a apparaˆıtre afin de ne jamais pouvoir atteindre un ´etat
interdit `a partir d’un ´etat quelconque ou autoris´e de S
0.
4- Les contraintes sont r´eduites automatiquement afin de minimiser le nombre de
variables apparaissant dans celles-ci.
Avec cette approche, le superviseur final n’est pas d´ecrit `a l’aide d’un automate `a ´etats
finis, mais avec un ensemble de contraintes logiques. Une contrainte peut ˆetre assimil´ee `a
la suppression d’une transition dans un automate `a ´etats finis.
Supremica (Akesson et al., 2006). Cet outil est accessible lorsque Supremica est en mode
«editor» puis dans l’onglet«Analyze/Symbolic (BDD) Synthesis/Optimization on
TE-FAs...». La fenˆetre qui s’ouvre alors a besoin d’ˆetre configur´ee comme pr´esent´ee sur la
figure 42.
Figure 42 – Configuration du g´en´erateur de gardes
L’option«Print the guards»permet l’affichage du r´esultat dans la console de Supremica.
L’option«From forbidden states»permet un formatage du r´esultat facile `a utiliser comme
pr´esent´e par la suite. Par d´efaut, l’outil va g´en´erer une garde pour chaque ´ev´enement
contrˆolable, il est n´eanmoins possible de n’en s´electionner qu’un seul.
Plusieurs types de r´esultats sont alors possibles :
1- FORBIDDEN guard for evente: This event is always ENABLED by the supervisor.
−→ cet ´ev´enement peut toujours ˆetre autoris´e
2- FORBIDDEN guard for event e : This event is always DISABLED by the
super-visor.
−→ cet ´ev´enement ne doit jamais ˆetre autoris´e
3- FORBIDDEN guard for evente: This event is always DISABLED by the supervisor
(Blocked in the synchronization process).
−→ cet ´ev´enement ne doit jamais ˆetre autoris´e, n´eanmoins il ne peut jamais
apparaˆıtre si l’´etat courant est correct.
III-5 Apports mutuels entre SCT et filtre logique : exemple du chat et de la souris 133
4- FORBIDDEN guard for event e :condition
−→ Si la conditionest valid´ee, l’´ev´enement e est autoris´e
A partir de ces r´esultats il est possible d’extraire les contraintes logiques imm´ediatement.
La solution 1 signifie qu’aucune contrainte ne portera sur cette variable. La solution 2
indique que la variable doit toujours ˆetre forc´ee `a 0. La solution 3 indique que la variable
doit ´egalement toujours ˆetre forc´ee `a 0 mais que normalement il n’est pas n´ecessaire de
le faire car en fonctionnement normal cela n’arrivera jamais. La solution 4 est la plus
int´eressante, en effet la contrainte r´esultante est : condition =⇒ e ⇔ condition.e = 0.
Prenons un exemple tir´e du chat et de la souris, la porte C2 ne doit pas ˆetre ouverte
quand la souris est dans la pi`ece 2 (mouse curr = 2) :
FORBIDDEN guard for event C2: mouse curr 6= 2
⇔(mouse curr6= 2)·C2 = 0
⇔(mouse curr = 2)·C2 = 0
⇔r2m·C2 = 0
mouse curr est une variable enti`ere interne `a Supremica permettant de connaˆıtre l’´etat
courant du mod`ele «mouse» pr´esent´e pr´ec´edemment. Dans notre cas nous avons
direc-tement une variable logique indiquant si le chat est dans la pi`ece 2 : r2m, c’est pourquoi
la contrainte r´esultante est : r2m·C2 = 0.
Si la condition comporte des ET logique (not´e«&»dans Supremica) il est n´ecessaire de
cr´eer 2 contraintes :
FORBIDDEN guard for event C1: ((mouse curr6= 1) & (mouse curr6= 3))
⇔((mouse curr6= 1)·(mouse curr 6= 3))·C1 = 0
⇔(r1m+r3m)·C1 = 0
⇔(r1m·C1) + (r3m·C1) = 0
Enfin, lorsque l’´ev´enement est un ´ev´enement «simultan´e» comme pr´esent´e pr´ec´
edem-ment, cela va se traduire par une contrainte combin´ee :
FORBIDDEN guard for event M5 C1 : This event is always DISABLED by the
supervisor.
En effectuant les mˆemes transformations pour tous les ´ev´enements commandables de
l’exemple, l’ensemble de contraintes g´en´er´e automatiquement est pr´esent´e dans le tableau
13. Les variables en majuscules sont commandables et celles en minuscules sont
non-commandables.
Table 13 – Contraintes g´en´er´ees automatiquement
Contraintes simples Contraintes combin´ees
r2c·M1 =f alse r1m·C1 = f alse M1·C2 =f alse M6·C3 = f alse
r1c·M2 =f alse r3m·C1 = f alse M4·C5 =f alse M3·C3 = f alse
r3c·M2 =f alse r2m·C2 = f alse M5·C1 =f alse
r0c·M3 =f alse r0m·C3 = f alse M5·C4 =f alse
r4c·M4 =f alse r1m·C4 = f alse M2·C1 =f alse
r3c·M5 =f alse r3m·C4 = f alse M2·C4 =f alse
r1c·M5 =f alse r4m·C5 = f alse M6·C6 =f alse
r0c·M6 =f alse r0m·C6 = f alse M3·C6 =f alse
Bien que le probl`eme comporte plusieurs dizaines de variables, chaque contrainte est assez
simple `a lire. Les contraintes simples de cet exemple sont toutes de la mˆeme forme : si un
animal est dans une pi`ece, alors une porte est ferm´ee. Prenons l’exemple de la premi`ere :
r2c.M1 = f alse, r2c signifie que le chat est dans la pi`ece 2, donc la porte M1 doit ˆetre
ferm´ee (M1 =f alse) afin de garantir que la souris ne puisse pas entrer.
Les contraintes combin´ees ont elles aussi toutes la mˆeme forme : elles empˆechent le
mouve-ment simultan´e des deux animaux si ce mouvement entraine obligatoirement une situation
dangereuse. Toutes les combinaisons de portes ne sont pas interdites. Par cons´equent, il
existe des d´eplacements simultan´es qui ne posent pas de probl`eme.
III-5.2 Analyse de l’ensemble de contraintes g´en´er´e
Dans le document
Contribution à la Commande des Systèmes à Événements Discrets par Filtre Logique
(Page 131-135)