Instructions Grafcet
Les instructions Grafcet du langage PL7 permettent de traduire un Grafcet graphique de façon assez simple.
Le langage PL7 permet l'utilisation de 62 étapes au maximum, y compris la ou les étapes initiales. Le nombre
d'étapes actives simultanément n'est limité que par le nombre d'étapes.
Les instructions et objets permettant de programmer un grafcet sont expliqués ci-dessous.
| Représentation graphique | Transcription en langage PL7 | Rôle |
|---|---|---|
Etape initiale |
=*= i | Indique le début de l'étape initiale (et donc la fin du traitement préliminaire) |
Transition |
#i | Activation de l'étape i après désactivation de l'étape en cours |
Etape |
-*-i | Début de l'étape i et test de validité de la transition associée |
| # | Désactivation de l'étape en cours sans activation de tout autre étape | |
| Di | Désactivation de l'étape en cours et de l'étape i spécifiée | |
| =*=POST | Début du traitement postérieur et fin du traitement séquentiel | |
| %Xi | Bit associé à l'étape i, peut être testé n'importe où dans le programme mais ne peut être écrit que dans le traitement préliminaire (max 62 étapes !) | |
| LD %XI LDN %XI AND %XI ANDN %XI OR %XI ORN %XI XOR %XI XORN %XI |
Test de l'activité de l'étape i | |
| S %Xi | Activation de l'étape i | |
| R %Xi | Désactivation de l'étape i |
Remarques :
Les trois premier "symbole" ( =*= i, #i et -*-i) servirons d'instructions pour écrire
les étapes et les transitions du Grafcet.
Les actions associées aux étapes sont décrites dans une autre partie du programme que
l'on appelle traitement postérieur.
Exemples de Grafcet
Séquence linéaire
Le premier exemple est celui d'un grafcet dit "linéaire" ; les séquences se déroulent les une après
les autres sans branchement ou aiguillage. L'image ci-après représente un grafcet linéaire.

Code du programme d'un grafcet linéaire.
=*=1 (* début de l'étape initiale *)
LD %I0.1 (* décris les conditions de réceptivité
de la transition 1 vers 2 *)
# 2 (* désactive l'étape 1 et active l'étape 2 *)
LD %I0.2
# 3
-*- 3
Aiguillage
Les aiguillages (fonction OU)
sont des sélections de séquence (choix d'une branche parmi plusieurs).
Les transitions sont placées à l'intérieur des divergences et des convergences en OU.
Le graphe de l'aiguillage est le suivant :
.
Code aiguillage grafcet en OU.
=*=4
LD %I0.3
# 5
LD %I0.4
# 6
-*- 5
LD %I0.5
# 7
-*- 6
LD %I0.6
# 7
Pour un fonctionnement plus sûr il vaut mieux "verrouiller" les branches les une par rapport aux
autres. Pour cela, nous utilisons un OU exclusif
entre les réceptivités. Nous modifierons donc le programme comme suit :

Code du grafcet OU exclusif.
=*=4
LD %I0.3
LDN %I0.4
# 5
LDN %I0.3
LD %I0.4
# 6
-*- 5
LD %I0.5
# 7
-*- 6
LD %I0.6
# 7
Séquences simultanées
Lorsqu'il est nécessaire de mettre en fonctionnement simultané (fonction et)
plusieurs tâches ou machines dans le même Grafcet (gain de temps), nous mettons en parallèles
les branches dont on désire la simultanéité.
Nous représentons la divergence et la convergence par un double trait parallèle.
Les transitions sont placées à l'extérieur de la divergence et de la convergence.
Il est conseillé de mettre une étape tampon (d'attente) dans chacune des branches
(voir la représentation du grafcet suivant).

Code d'un grafcet simultané
-*- 8
LD %I0.7
# 9 (* activation de l'étape 9 *)
# 21 (* ET activation de l'étape 21 *)
-*- 9
LD %I0.8
# 10 (* activation de l'étape 10 *)
-*- 21
LD %I0.9
# 22 (* activation de l'étape 22 *)
-*- 10
LD %M0
AND %X22
#D 22 (* désactive l'étape en cours et désactive 22 )
# 11 (* désactive l'étape en cours et active l'étape 11 *)
-*- 11 (* début de l'étape 11 *)
Structure d'un programme
Traitement préliminaires
Il est constitué d'une suite d'instruction assurant le traitement des :
- reprises secteur,
- défaillances,
- changement de modes,
- prépositionnement du graphe,
- logiques d'entrées.
Il se termine par la première instruction =*= ou -*- rencontrée.
Traitement séquentiel
Il est constitué du graphe (instructions représentant le graphe) :
- étapes,
- transitions,
- réceptivités.
Il se termine par l'instruction =*=POST.
Traitement postérieur
Il est constitué d'une suite d'instructions assurant le traitement :
des ordres émanant du traitement séquentiel pour la commandes des sorties,
des sécurités indirectes spécifiques aux sortie.
Ne pas oublier l'instruction END à la fin du programme.
Exemple :
Code complet d'un grafcet pour nano 07.
000 LDN %I0.6 (* début traitement préliminaire *)
001 S %S22
002 ST %M0
003 LDR %I0.6
004 S %21
005 =*= 1 (* début traitement séquentiel *)
006 LD %0.1
007 #2
008 -*- 2
009 LD %0.2
010 #3
011 -*- 3
012 LD %0.3
013 #1
014 =*= POST (* début traitement postérieur *)
015 LD %X1
016 ST %Q0.1
017 LD %X2
018 ST %Q0.2
019 LD %X3
020 ST %Q0.3
021 END

Voir aussi : Cours Grafcet pour la programmation séquentielle des automates industriels.


