• Aucun résultat trouvé

6.2 Vérification formelle de V2VM : Étude de cas

6.2.4 Opération de transformation des programmes LD en AT

Le programme LD de la V2VM est illustré dans la figure 6.5.

FIGURE6.5 – Programme LD de la V2VM

Il est constitué de six Rungs. Les deux premiers rungs permettent la transmission de l’état (FdcO et FdcC) de la vanne vers l’interface de supervision (StO et StC) pour que cet état soit affiché à l’utilisateur. Les rungs R3 et R4 se chargent de détecter respectivement le défaut de commande (StFCmd) et le défaut de matériel (StFMat). Un défaut de commande est déclenché si la vanne reste ouverte (FdcO dans la première branche) ou fermée (FdcC dans la deuxième branche) durant un délai dépassant la temporisation (Tempo) après une demande de fermeture ( !CtrlO) respectivement d’ouverture (CtrlO). Les rungs R5 et R6 permettent de déclencher les ordres d’ouverture (CmdO) et de fermeture (CmdC) à envoyer vers la vanne physique. Un ordre d’ouverture (CmdO) est émis après un front montant de la variable CtrlO (provenant de

6.2. Vérification formelle de V2VM : Étude de cas 159

l’interface de supervision) et une position fermée de la vanne (FdcC). Cet ordre est maintenu pendant une certaine temporisation (TOF).

Après application des règles de transformation sur le programme de commande de V2VM, nous obtenons l’automate temporisé présenté sur la figure 6.6. À l’état initial, le contrôleur est dans l’état Lecture Entrées, dans lequel il lit des entrées (CtrlO, FdcC, FdcO) provenant res- pectivement de l’interface de supervision, du capteur de fin de course-fermeture et du capteur de fin de course-ouverture (figure 6.6), puis il met à jour les entrées des temporisateurs (TON1 et TON2) et des blocs (RTRIG et FTRIG). Ensuite, il atteint l’état Traitements, où il commence le calcul des sorties. Les différents calculs sont représentés par des localités instantanées, ce qui signifie que ce sont des états immédiats. Il invoque successivement TON1, par l’envoi du message (TON1 !), TON2 (TON2 !), RTRIG (RTRIG !), TOF1 (TOF1 !), FTRIG (FTRIG !) et TOF2 (TOF2 !). Ensuite, le contrôleur atteint l’état Ecriture Sorties qui signifie que toutes les sorties sont calculées. Dans cet état, il met à jour les sorties calculées (StO, StC, StFMat, StFCmd) et (CmdO, CmdC) qu’il partage respectivement avec l’interface de supervision et la vanne physique. L’horloge cycle est remise à 0 (cycle=0) pour le prochain cycle.

FIGURE 6.6 – Automate temporisé généré automatiquement à partir du programme LD de la

figure 6.5

6.2.5 Opération de modélisation du composant physique en AT

La partie physique représente le comportement des deux capteurs fin de course-fermeture (figure 6.7-a) et fin de course-ouverture (figure 6.7-b), ainsi que celui de V2VM (figure 6.7-c). Le capteur fin de course-ouverture met la variable booléenne FdcO à 1 si la vanne est ouverte, sinon à 0. Le capteur de fin de course-fermeture met la variable booléenne FdcC à 1 si la vanne est fermée, sinon à 0.

FIGURE 6.7 – Modélisation du composant matériel : (a) Capteur fin de course-fermeture ; (b) Capteur fin de course-ouverture ; (c) La vanne

L’automate de la vanne est composé de 4 états (Fermée, Ouverte, En Ouverture, En Fer- meture). À l’état initial, la vanne est Fermée, les capteurs de fin de course-ouverture et fin de course-fermeture sont respectivement à l’état CapO_0 et CapC_1, ce qui signifie que les variables booléennes FdcO et FdcC sont respectivement à 0 et à 1. Si la vanne reçoit la com- mande d’ouverture (CmdO=1) du programme de commande, elle commence à s’ouvrir, elle met la variable closed à 0 et signale aux capteurs qu’elle change d’état, en envoyant le mes- sage broadcast (ChangePosition !). Quand elle atteint l’état En ouverture, le capteur de fin de course-fermeture passe de l’état CapC_1 à l’état CapC_0 (la vanne est entre-ouverte et fer- mée). L’état En ouverture de la vanne est doté d’une horloge w. On suppose que la vanne met une seconde pour s’ouvrir. Quand la seconde est passée, la vanne quitte l’état En ouverture et met la variable opened à 1. Ensuite, elle envoie le signal (ChangePosition !) aux capteurs, ce qui permet au capteur de fin de course-ouverture de passer à l’état CapO_1 (FdcO=1) et à la vanne d’atteindre l’état Ouverte. Un processus similaire est suivi pour la fermeture de la vanne.

6.2.5.1 Scénario d’ouverture d’une vanne

Initialement, la vanne est fermée. La tâche Vanne Fermée de la figure 6.1 est représen- tée par la réception du message (VanneFermée ?) dans la figure 6.2, ce qui veut dire que pour l’utilisateur, la vanne s’affiche fermée. Ensuite, pour commander la vanne, le bandeau de com- mande doit être affiché. Si l’automate temporisé modélisant le comportement de l’utilisateur reçoit le message (BandeauAffiché ?), cela signifie que le bandeau de commande est affiché. L’utilisateur peut alors commander la vanne, sinon, l’utilisateur reçoit le message (Bandeau- Masqué ?), signifiant que le bandeau est masqué. Dans ce cas, l’utilisateur doit afficher le ban- deau, en cliquant sur le widget de V2VM, représenté par l’envoi du message (CliquerV2VM !). Ainsi, l’objet relié au widget de V2VM dans le module du dialogue reçoit le message (Cli- querV2VM ?)qui inverse la condition d’activation du bandeau de 0 à 1. Cela permet au bandeau de commande (objet informationnel) qui était à l’état Masqué d’atteindre l’état Affiché. Dans

6.2. Vérification formelle de V2VM : Étude de cas 161

cet état, il envoie le message (BandeauAffiché !) à l’utilisateur, qui signifie que le bandeau vient d’être affiché. Une fois le bandeau affiché, il envoie à tous ses fils (boutons Ouverture, Ferme- ture, Valider, Quitter) le message (VueMereAffichée !). Chaque bouton teste alors sa condition d’activation et de désactivation pour atteindre l’un des états Masqué, Affiché Activé ou Affiché Désactivé. Alors, l’utilisateur (figure 6.2) reçoit simultanément les messages (OuvertureAffi- chéActivé ?), (FermetureMasqué ?), (ValiderAffichéActivé ?) et (QuitterAffichéActivé ?), repré- sentés par l’état Fils BandeauAffichés. Cet état est modélisé par une localité instantanée afin de modéliser la concurrence. Ensuite, l’utilisateur clique sur le bouton Ouverture (envoi du mes- sage (CliquerOuverture !)) puis il valide son choix (il clique sur le bouton Valider). L’objet de commande lié au bouton Valider met la variable CtrlO à 1. Cette information, qui veut dire que l’utilisateur demande l’ouverture de la vanne, est émise vers l’automate temporisé modélisant le programme de commande. Ce dernier (figure 6.6) exécute un cycle et met, à la fin du cycle, la variable CmdO à 1 (envoi de la commande d’ouverture vers la vanne physique). La vanne physique reçoit la commande et passe alors de la position Fermée à la position Ouverte. Cette information (FdcO=1 et FdcC=0) est transmise au programme de commande qui met à jour les variables StO=1 et StC=0, puis, il les envoie à la supervision. Quand l’interface de supervi- sion reçoit cette variable (condition d’activation de l’objet informationnel lié au widget Vanne Ouverte), elle affiche la vanne en état Ouverte à l’utilisateur.

6.2.6 Opération de spécification des exigences en CTL

Au niveau interface, nous proposons de vérifier des propriétés de visibilité pour garantir l’utilisabilité de l’IHM :

P1. A[] not (OuvertureAffichéActivé && FermetureAffichéActivé). Les deux boutons Ou- vertureet Fermeture ne doivent jamais être affichés en même temps.

Une propriété de sûreté est à vérifier au niveau du programme de commande :

P2. A[] not (CmdO==1 && CmdC==1). Le programme de commande ne peut jamais envoyer en simultané une commande d’ouverture (CmdO) et de fermeture (CmdC) à la vanne.

Une propriété qualitative à vérifier sur tout le composant est le non blocage : P3. A[] not deadlock.