Programmation grafcet de l'automate nano 07

Le grafcet est un langage graphique adapté à l'expression de la partie séquentielle des automatismes de production.
Mais sur l'automate nano07 il n'est pas possible de programmer graphiquement les étapes et les transitions qui constituent un grafcet.
Il faudra donc passer en mode « list » et l'écrire avec des lignes de code à l'aide d'instructions dédiées.

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 l'étape initiale. 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 résumés ci-dessous.

Représentation graphiqueTranscription en langage PL7Rôle

Etape initiale
=*= iIndique le début de l'étape initiale (et donc la fin du traitement préliminaire)

Transition
#iActivation de l'étape i après désactivation de l'étape en cours
<
Etape
-*-iDé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
 DiDésactivation de l'étape en cours et de l'étape i spécifiée
 =*=POSTDébut du traitement postérieur et fin du traitement séquentiel
 %XiBit 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 !)
XiLD %XI
LDN %XI
AND %XI
ANDN %XI
OR %XI
ORN %XI
XOR %XI
XORN %XI
Test de l'activité de l'étape i
Xi(S)S %XiActivation de l'étape i
Xi(R)R %XiDésactivation de l'étape i

Remarques : les trois premier symboles (=*= 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. La figure 1 ci-après représente un grafcet linéaire.

123%I0.1%I0.2

Figure 1 : exemple simplifié d'un grafcet linéaire à 3 étapes.


=*=1
LD %I0.1
# 2
LD %I0.2
# 3
-*- 3
...

Code du programme PL7 correspondant au grafcet linéaire de la figure 1.

Description

« =*=1 » est le 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.

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.

Représentation d'un aiguillage en grafcet OU

Représentation de l'aiguillage en grafcet (fonction OU).


...
=*=4
LD %I0.3
# 5
LD %I0.4
# 6
-*- 5
LD %I0.5
# 7
-*- 6
LD %I0.6
# 7
...

Code de l'aiguillage grafcet en OU.

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 grafcet et son programme comme suit :

Aiguillage 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
...

Code de l'aiguillage en grafcet avec une fonction OU Exclusif.

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 (étape d'attente) dans chacune des branches (voir la représentation du grafcet suivant).

Grafcet séquences simultanées

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 *)
...

Code correspondant au grafcet simultané.

Structure d'un programme

La structure d'un programme obéit à des règles de conceptions aboutissant à un déroulement logique d'exécution des instructions. Ces instructions sont regroupées dans trois blocs principaux qui sont :

  • Les traitements préliminaires (initialisation et prise en compte de l'état des entrées),
  • les traitements séquentiels (calculs),
  • les traitements postérieurs (commandes des sorties).

Bloc des traitements préliminaires

Il est constitué d'une suite d'instructions assurant le traitement :

  • des reprises secteur,
  • des défaillances,
  • des changements de modes,
  • du pré-positionnement du graphe,
  • de la logique des entrées.

Il se termine par la première instruction « =*= » ou « -*- » rencontrée.

Traitement séquentiel

Il est constitué du graphe séquentiel (instructions le représentant) :

  • étapes,
  • transitions,
  • réceptivités.

C'est le corps du programme, il calcule et résout les équations logiques.
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 sorties.
Ne pas oublier l'instruction END à la fin du programme.

Exemple de code complet d'un grafcet pour nano 07

Le code et ses trois blocs de traitements

Le traitement préliminaire commence à la ligne 000 et fini à la ligne 004.
Le début du traitement séquentiel est à la ligne 005 et se termine en 013.
De la ligne 014 à 020 c'est le traitement postérieur.
La fin du programme (ligne 021) est codé « END ».


000 LDN %I0.6
001 S %S22
002 ST %M0
003 LDR %I0.6
004 S %21
005 =*= 1
006 LD %0.1
007 #2
008 -*- 2
009 LD %0.2
010 #3
011 -*- 3
012 LD %0.3
013 #1
014 =*= POST
015 LD %X1
016 ST %Q0.1
017 LD %X2
018 ST %Q0.2
019 LD %X3
020 ST %Q0.3
021 END

Le grafcet correspondant au code ci-dessus est représenté par le graphe suivant.

Grafcet complet

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