Automatisme : norme 1131-3 et GRAFCET/Techniques de programmations des GRAFCETs

Leçons de niveau 14
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
Techniques de programmations des GRAFCETs
Icône de la faculté
Chapitre no 6
Leçon : Automatisme : norme 1131-3 et GRAFCET
Chap. préc. :Transitions, Actions et temps
Chap. suiv. :Le langage IL de la norme 1131-3
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Automatisme : norme 1131-3 et GRAFCET : Techniques de programmations des GRAFCETs
Automatisme : norme 1131-3 et GRAFCET/Techniques de programmations des GRAFCETs
 », n'a pu être restituée correctement ci-dessus.

Le grafcet est un langage qui permet de réaliser certaines structures algorithmiques. Nous allons les présenter maintenant même si nous avons déjà eu l’occasion d’en aborder quelques unes.

Les structures algorithmiques de base[modifier | modifier le wikicode]

Les structures algorithmiques sont parfois appelées structures de contrôle. En voici quelques unes de référencées dans Wikipédia :

En ce qui nous concerne ici, les noms seront parfois un peu différents mais les principes sont les mêmes.

Séquence linéaire[modifier | modifier le wikicode]

La séquence est la structure algorithmique de base : pour faire une certaine tâche il me faut d’abord effectuer la tâche 1 puis la tache 2... et finalement la tâche N.

séquence ordre "A" puis ordre "B"

La transitioon peut être inconditionnelle, il suffit de remplacer "c" par "=1". En général elle est conditionnelle et "c" représente une variable capapble de nous dire qu'ordre "A" est terminé.

Sélection de séquence[modifier | modifier le wikicode]

La sémantique des séquences alternatives est probablement la plus ambigüe de toutes les structures algorithmiques.

La sélection de séquence

Vous n'aurez aucun problème si vous respectez la règle :

Début d’un principe
Fin du principe

Le principe ci-dessus exprime que le OU réalisé par le trait horizontal doit être exclusif. Cette exclusivité peut être réalisée de plusieurs manières :

  • logique : vous exprimez des réceptivités qui sont exclusives
  • technologique : c’est la Partie opérative qui réalise l'exclusivité. Par exemple deux capteurs de position d'un vérin (sorti et entré) sont exclusifs car un vérin ne peut être à la fois entré et sorti.
  • avec priorité : c’est vous qui décidez quelle est la branche qui est prioritaire.

La compréhension de la priorité est importante car très utilisée.


Saut d'étapes et reprise de séquences[modifier | modifier le wikicode]

Nous présentons maintenant deux structures algorithmiques différentes.

Saut d'étapes et boucle

À gauche il s'agit d'un saut conditionnel, c'est-à-dire réalisé si seulement une certaine condition est vraie. À droite, il s'agit d'une boucle, ou reprise de séquence tant qu'une certaine condition n’est pas vraie.

Séquences simultanées, séquences parallèles[modifier | modifier le wikicode]

Pour ceux qui connaissent un peu les langages de programmation, il s'agit d'une structure algorithmique que l’on ne peut pas faire dans les langages traditionnels. Pour être complet sur la question, disons qu'on ne peut pas le faire de manière simple, mais le parallélisme présent dans tous les systèmes d'exploitation peut naturellement être utilisé.

Séquences simultanées

Dans un grafcet on utilise simplement un double trait. Il s'agit du parallélisme structural comme déjà mentionné ailleurs.

Les étapes 22 et 13 de la figure ci-dessus sont un peu particulières : elles n'ont pas d'action associée. Ce sera souvent le cas. Elles sont appelées étapes de synchronisation. Imaginons que l'étape 21 reste active une heure tandis que l'exécution des étapes 11 et 12 prend seulement cinq minutes. Une fois 12 terminée le jeton arrive en 13. Puis une fois 21 terminée le jeton arrive en 22 (55 min après). L'étape 13 permet donc d'attendre que l'action D soit terminée pour aller à la suite. Si au contraire l'action D se terminait avant l'action C, ce serait 22 qui permettrait d'attendre. Voila pourquoi elles sont appelées étapes de synchronisation.

Macro-étapes[modifier | modifier le wikicode]

Une macro-étape ressemble à un appel de sous-programme.

Une macro-étape

La figure ci-dessus présente la notion de macro-étape. Les notations utilisées dépendent beaucoup des logiciels de programmation. La macro-étape à gauche peut être entièrement remplacée par son contenu à droite.

Ressources communes - Structure d'arbitrage[modifier | modifier le wikicode]

Les ressources d'arbitrages sont des structures de contrôle liées au parallélisme. Dans le monde de la programmation on appelle cela l’exclusion mutuelle qui peut être réalisée à l'aide de sémaphore par exemple.

Un exemple concret sera encore une fois plus parlant qu'une grande théorie. Imaginons une double voie ferrée sur laquelle circulent deux trains en sens inverse. Si à un moment donné cette double voie se transforme en une seule voie, il est clair que ce tronçon doit être partagée entre deux trains arrivant de sens contraires. C'est cela que l’on appelle une ressource commune : une ressource ne pouvant pas être partagée (sous peine d'accident ou de casse).

Les deux techniques de ressources communes en grafcet

Comme le montre la figure ci-dessus, il existe plusieurs façon de partager une ressource commune : soit directement avec des réceptivités adaptées (à gauche), soit en utilisant une étape symbolisant la ressource à droite. La ressource est notée comme action dans cette figure mais ce n’est pas forcément le cas !

Dans la technique utilisé en partie droite de la figure ci-dessus, nous n'avons pas dessiné le mécanisme permettant d'amener un jeton dans l'étape 10. Un moyen est de transformer cette étape 10 en étape initiale. Un autre moyen est d’utiliser une transition non dessinée...

Le forçage dans les GRAFCETs[modifier | modifier le wikicode]

Le forçage consiste à donner la possibilité aux grafcets de s'arrêter (figeage) ou de se mettre dans un état particulier (forçage).

Hiérarchie de grafcets[modifier | modifier le wikicode]

Dès que l’on s'intéresse au forçage, il nous faut :

  • considérer plusieurs grafcets et les nommer
  • définir une hiérarchie sur les grafcets

La hiérarchie est très importante car en cas de forçage car il nous faut respecter la règle suivante :

Début d’un principe
Fin du principe

Cette règle simple est destinée à éviter les interblocages.

Les forçages[modifier | modifier le wikicode]

L'ensemble des forçages d'un grafcet

Les noms des grafcets ne sont pas choisis au hasard en principe. Nous n'allons pas les présenter tous, il faut mieux les découvrir au fur et à mesure, mais nous avons besoin de quelques noms pour la suite :

  • GPN Grafcet de Production Normale : c’est le grafcet qui est destiné à réaliser les pièces demandées
  • GC : Grafcet de Conduite. c’est un grafcet destiné à gérer les différentes phases : mise en production, production, ...
  • GS : Grafcet de Sécurité. C'est le grafcet destiné à gérer les arrêts d'urgence,...

Puisqu'on a parlé de hiérarchie tout à l’heure, GC est toujours plus haut dans la hiérarchie que GPN : c’est GC qui décide quand lancer GPN.

Commentons et expliquons maintenant la figure ci-contre.

Lorsque l’étape 2 est active, le GRAFCET nommé GPN est forcé dans la situation caractérisée par l’activité de l’étape 10 (l’étape 10 est activée et les autres étapes sont désactivées). Notons que tant qu’il y a un jeton dans l'étape 2, le grafcet GPN reste figé dans l'étape 2 !

Lorsque l’étape 20 est active, le GRAFCET nommé GC est forcé dans la situation caractérisée par l’activité des étapes 30 et 35 (les étapes 30 et 35 sont activées et les autres étapes sont désactivées).

Lorsque l’étape 25 est active, le GRAFCET nommé GPN est forcé dans la situation où il se trouve à l’instant du forçage. On appelle également cet ordre « figeage ».

Lorsque l’étape 22 est active, le GRAFCET nommé GPN est forcé dans la situation vide. Dans ce cas aucune de ses étapes n’est active.

Lorsque l’étape 34 est active, le GRAFCET nommé G4 est forcé dans la situation dans laquelle seules ses étapes initiales sont actives.

Tous les outils de programmation ne proposent pas forcément la possibilité de dessiner des actions de forçages ou de figeages. Si vous avez conçu votre programme avec ces actions, il est important de pouvoir les implanter. C'est ce que nous allons examiner maintenant.

Les équations de récurrences du forçage[modifier | modifier le wikicode]

Cela se fait facilement en remarquant qu'un forçage fonctionne de la même manière qu'une initialisation, à savoir : certaines étapes sont forcées activées d'autres sont forcées désactivées. Pour une initialisation on utilisait une entrée (ou bit interne) appelé "Init" et le principe général était :

  • rajouter un + Init à l'équation de récurrence pour les étapes (initiales) à activer
  • rajouter un ./Init à l'équation de récurrence pour les étapes à désactiver.

On peut garder ce même principe pour le forçage mais "Init" sera remplacé par la variable d'étape qui force. Tout cela complique un peu les équations de récurrences d'autant qu’il faudra garder les deux, l'initialisation et le forçage. Quand vous écrivez vos équations, introduisez la partie "Init" en dernier car c’est le plus prioritaire.

Cette remarque nous montre que la multiplication globale de l'équation de récurrence par /Forçage résout tous les problèmes de priorité. Cependant s'il y a beaucoup de forçage cela complique vraiment les équations et c’est à ce moment là qu’il faudra chercher s'il n'y a pas des choses à faire sur simplement les .

Les équations de récurrences du figeage[modifier | modifier le wikicode]

Les choses sont peut être moins intuitives ici. L’idée est de travailler sur les en les modifiant pour qu'un figeage le rende nul. Par exemple si l'étape 10 d'un grafcet (appelé GMM) fige un grafcet (appelé GPN), alors tous les de GPN sont à remplacer par :