• Aucun résultat trouvé

5 Apports mutuels entre SCT et filtre logique : exemple du chat et de la souris130

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 =⇒ econdition.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+r3mC1 = 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 MC2 =f alse MC3 = f alse

r1c·M2 =f alse r3m·C1 = f alse MC5 =f alse MC3 = f alse

r3c·M2 =f alse r2m·C2 = f alse MC1 =f alse

r0c·M3 =f alse r0m·C3 = f alse MC4 =f alse

r4c·M4 =f alse r1m·C4 = f alse MC1 =f alse

r3c·M5 =f alse r3m·C4 = f alse MC4 =f alse

r1c·M5 =f alse r4m·C5 = f alse MC6 =f alse

r0c·M6 =f alse r0m·C6 = f alse MC6 =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