Implémentation du GRAFCET


Lors du passage à l'implémentation d'un grafcet, deux algorithmes d'évolution sont employés pour appliquer les règles d'évolution. Ces algorithmes diffèrent par la notion de stabilité de la situation atteinte.

Stabilité : Pour une valeur du vecteur d’entrée du système isolé conduisant à une situation donnée, cette situation atteinte sera dite stable si après franchissement de toutes les transitions franchissables, une nouvelle situation ne peut être obtenue que sur occurrence d’un événement externe (changement de valeur d'une des entrées Ei).

Algorithme Sans Recherche de Stabilité

Cet algorithme (Alogrithme Sans Recherche de Stabilité ou SRS) peut aboutir à un comportement non déterministe (les mêmes causes peuvent produire des effets différents) (et donc à une interprétation érronée) d'un grafcet. En effet cet algorithme permet l'évaluation des entrées lors d'une évolution d'un grafcet. Ainsi si la machine cible est relativement lente (par rapport au processus physique), un changement de valeur du vecteur des entrées peut avoir lieu lors du calcul d'une évolution d'un grafcet (passage d'un état stable à un autre état stable) et sera pris en compe lors du calcul en cours.

Ainsi dans l'exemple de la figure suivante, suivant le temps de calcul d'une évolution du grafcet, l'algorithme SRS donne un marquage différent. Seul le cas ou ce temps de calcul est inférieur à la période d'activation de a est correcte, c'est à dire qu'il correspond à une interprétation correcte du GRAFCET.

Algorithme Avec Recherche de Stabilité

C'est l'implémentation retenue par GrafcetVIEW.

Le second Algorithme, appelé Algorithme Avec Recherche de Stabilité (ARS) assure à un grafcet un comportement déterministe, car il ne considère une nouvelle valeur du vecteur des entrées que lorsqu'il a atteint une situation dite stable. Ainsi l'application de l'algorithme ARS précédente donnera toujous pour marquage final correcte (étape 3 active) et ce quelquesoit le temps nécessaire au calcul d'une évolution.

Cependant:

Si l'on n'a pas de mécanisme de stockage des événements, alors des événements peuvent être perdus (si le calcul n'est pas assez rapide). Il faut noter que ceci est vrai aussi pour l'algorithme SRS. Il faut donc prévoir un mécanisme de stockage des événements lors de l'implémentation.
Cet algorithme peut conduire à des blocages (deadlock) du système s'il ne peut atteindre une situation stable. On est alors dans une situation instable où le système ne prend plus en compte les nouvelles valeurs des entrées. Un mécanisme de détection des situations instables doit alors être intégrés dans l'algorithme d'évolution, cependant cette détection peut s'avérer délicate car couteuse en temps machine et en espace mémoire.
Il est important de remarquer que lorsque cet algorithme est utilisé alors :

Les sorties ne sont émises que lors de l'atteinte d'un état stable. En particulier toute sortie appartenant à une étape qui est activée puis désactivée lors d'une même évolution ne sera pas émise.
Les opérateurs de temporisations ne perçoivent que les changements d'états des étapes lors des situations stables. Ainsi une temporisation portant sur une étape qui se trouve désactivée puis réactivée lors d'une même évolution ne perçoit pas le changement d'état de cette étape.