Vous êtes sur la page 1sur 21

Atelier

comment
programmer
un Grafcet
sous Arduino.
Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
1/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

Table des matires


1Introduction.......................................................................................................................... 4
2Le Grafcet............................................................................................................................. 4
3Construction......................................................................................................................... 4
3.1tape/Action.................................................................................................................. 4
3.2Transition/Rceptivit.................................................................................................... 4
3.3Liaison........................................................................................................................... 4
4Type daction. EX.................................................................................................................. 5
5Structure............................................................................................................................... 6
5.1Type de squence.......................................................................................................... 6
5.2Cas particuliers.............................................................................................................. 7
6Rgles dvolution................................................................................................................ 8
7Rgles de syntaxe................................................................................................................. 9
8Rgle de la programmation du GRAFCET............................................................................10
8.1Rgle gnrale............................................................................................................. 10
8.2Rgle pour squences simultanes (ET)......................................................................10
8.3Rgle pour squences exclusives (OU)........................................................................11
9Situation problmatiques.................................................................................................... 12
9.1Evolution fugace.......................................................................................................... 12
9.2Problmatique de la boucle deux tapes..................................................................12
10Aller plus loin, Le GEMMA................................................................................................. 15
11Conclusion........................................................................................................................ 15
12Rferences........................................................................................................................ 16
13Partie pratique.................................................................................................................. 17
13.1Avant de commencer................................................................................................. 17
13.1.1Variables temporelles......................................................................................... 17
13.1.2tape initiale...................................................................................................... 17
13.1.3Appel du Grafcet................................................................................................. 17
13.1.4Routines des Grafcets......................................................................................... 17

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
2/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.


13.1.5Mise en oeuvre................................................................................................... 17
13.2Premier exercice, GRAFCET squence unique.........................................................18
13.2.1Routine GRAFCET_01_Bool.................................................................................. 18
13.2.2Routine GRAFCET_01_Int.................................................................................... 19
13.2.3Routine GRAFCET_01_If...................................................................................... 19
13.3Deuxime exercice, GRAFCET squences multiples exclusives..............................20
13.4Troisime exercice, GRAFCET squences multiples simultanes............................21

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
3/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

1 Introduction.
Prsentation

2 Le Grafcet.
GRAFCET (GRAph de Contrle des Etapes et Transitions)
(Graph de l'ACET- Association Francaise pour la Cyberntique Economique et
Technique)
Permet de dcrire le comportement logique dun systme indpendamment de la
technologie utilis. Dcrit dans la norme NF EN 60848(1)
Donne une mthode pour discuter d'un automatisme avec une personne non
technique.
Emmne penser et mettre sur papier un automatisme avant de le programmer.
Cela conomise du temps en dveloppement, dverminage et modification.

3 Construction.
Construit de trois lments de base :
tape/Action.
Transition/Rceptivit.
Liaison. (2)

3.1

tape/Action.

tape initiale Double Carr. Autres tapes carr unique.

Ltape caractrise le comportement invariant un instant donn.


Les actions sont associes une tape.(3)

3.2

Transition/Rceptivit.

Transition : Les diffrentes volutions entre les tapes.


Rceptivit : A chaque transition est affecte une rceptivit prsentant les
conditions dvolution. (3)
Nature des rceptivits :
Des variables boolennes.
Des comparaisons sur valeurs numriques. (5)
Fronts.
Temporelle.
Toujours vraie, avec prudence.(3)
Etc.

3.3

Liaison.

Les lignes qui relient les tapes entre elles.


Forment lvolution de lautomatisme dune tape lautre. (3)
Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
4/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

4 Type daction. EX

Continue. Sexcute tout au long de ltape.


digitalWrite(led, Etape30);

Conditionnelle. Sexcute seulement si une condition associe est vraie.


digitalWrite(led, Etape30 && Condition);

Action retarde ou limite. Action conditionnelle dont la condition associe


est une variable temporelle.
Retarde : digitalWrite(led, Etape30 && (Temps > 30));
Limite :
digitalWrite(led, Etape30 && (Temps < 30));

Action mmorise. Affecter une valeur qui doit tre conserve une sortie.
(Set, Reset)(3)
if (Etape30){LED13 = True;}
if (Etape60){LED13 = False;}
digitalWrite(led, LED13);

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
5/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

5 Structure.
La construction d'un Grafcet se structure selon les configurations suivantes :

5.1

Type de squence.

Squence unique :
Une suite dtapes dont le droulement seffectue toujours dans le mme
ordre.

(5)

Squences multiples simultanes (ET) :


Lorsque le franchissement dune transition conduit activer plusieurs tapes.
Dbute toujours sur une rceptivit unique.
Se termine toujours sur une rceptivit unique.
Toutes les tapes finales des squences doivent tre actives pour franchir la
transition finale.
Reprsent par une double barre.

(5)

Squences multiples exclusives(OU) :


Lorsque, partir dune tape, on peut effectuer un choix entre plusieurs
squences possibles conditionnes par plusieurs rceptivits exclusives.
Au dbut, pour chaque aiguillage possible, une transition unique et exclusive.
A la fin, autant de transitions que de squences aiguillables.
Reprsente par une barre simple.

(5)

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
6/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

5.2

Cas particuliers.

Saut dtape :
Permet de sauter un certain nombre dtapes.
Reprise dtape :
Permet de rpter une mme squence jusqu ce que la rceptivit de fin de
squence soit vraie. (5)

(5)

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
7/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

6 Rgles dvolution.
1. Linitialisation correspond aux activits la mise sous tension. Par convention
les tapes initiales sont reprsentes par un double-care. Les tapes initiales
sont actives sans autre condition.(3)
2. Une transition est soit valide soit non-valide.
Elle est valide lorsque toutes les tapes immdiatement prcdentes sont
actives.
Une transition ne peut tre franchie que lorsquelle est valide et que la
rceptivit associe la transition est vraie.
3. Le franchissement dune transition entrane simultanment lactivation de
toutes les tapes immdiatement suivantes et la dsactivation des tapes
immdiatement prcdentes.
4. Plusieurs transitions simultanment franchissables sont simultanment
franchies.
5. Si au cours du fonctionnement, une tape doit tre dsactive et active
simultanment, elle reste active.(4)

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
8/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

7 Rgles de syntaxe.
1. Lalternance tape-transition doit tre respecte.
2. Deux tapes ne doivent jamais tre relies directement.
3. Deux transitions ne doivent jamais tre relies directement.

Les flches sont inutiles, elle ne participent pas la syntaxe. Elle peuvent tout de
mme aider la lecture.(5)
GRAFCET Niveau 1 : Spcification fonctionnelles. Description textuelle.
GRAFCET Niveau 2 : Spcification technologiques, oprationnelles.
GRAFCET Niveau 3 : Spcification de programmation.

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
9/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

8 Rgle de la programmation du GRAFCET.


Jusqu' prsent si vous flottiez dans une torpeur semi-consciente, REVEILLEZ-VOUS !!! Voici
l'essentiel de ce que vous devez retenir.
La programmation d'un Grafcet obit aux rgles suivantes.

8.1

Rgle gnrale.

Activation, auto-maintient, dsactivation.


Activation : Toujours tape prcdente et rceptivit.
EtapeX = EtapeX-1 . Rceptivit
Auto-maintient : Une fois active, une tape se garde active par elle mme.
EtapeX = EtapeX
Dsactivation : Toujours tape suivante.
EtapeX = /EtapeX+1
Exemple :
EtapeX = ((EtapeX-1 . Rceptivit) + EtapeX) . /EtapeX+1
Ce qui donne en C++ :
Etape2 = (((Etape1 && Receptivite) || Etape2) && !Etape3);
Cette rgle s'applique toutes les tapes d'une squence unique.

8.2

Rgle pour squences simultanes (ET).

Lorsque le Grafcet contient des squences simultanes, l'quation de l'tape prcdent la


divergence et celle de l'tape suivant la convergence doit tre adapt.
E10 = ((E00 && X00) || E10) && !(E20 && E50);

E70 = ((E40 && E60 && X60) || E70) && ! E80;

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
10/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

8.3

Rgle pour squences exclusives (OU).

Lorsque le Grafcet contient des squences exclusives, l'quation de l'tape prcdent la


divergence et celle de l'tape suivant la convergence doit tre adapt.
E10 = ((E00 && X00) || E10) && !(E20 || E50);

E70 = ((E40 && X40) || (E60 && X60) || E70) && ! E80;
Quand vous faites face des squences exclusives, vous voudrez peut tre donner la priorit une squence dans le cas o plusieurs transitions seraient vraies en mme temps.
E20 = ((E10 && X1020 && !X1030 && !X1040) || E20) && !EXX;
E30 = ((E10 && X1030 && !X1040) || E30) && !EXX;
E40 = ((E10 && X1040) || E40) && !EXX;
Dans l'exemple prcdent la premire priorit ira la transition E10 vers E40. Le deuxime
priorit ira la transition E10 vers E30.

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
11/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

9 Situation problmatiques.
Voici la description de situations problmatiques qui sont frquemment rencontres.

9.1

Evolution fugace.

On appel situation stable dun Grafcet une situation qui reste inchange durant
plusieurs cycles danalyse dvolution de Grafcet conscutive.
Dans le cas o plusieurs tapes sont actives pendant la dure dun seul cycle
danalyse dvolution le grafcet est instable et on qualifie donc son volution de
fugace. (1)
Les actions associes aux tapes instables risquent de ne pas tre excutes. Il y a
lieu dtudier le systme et danalyser les situations dinstabilit afin dajouter des
conditions supplmentaires aux rceptivits.(3)
Mthodes possibles : Compteur, Temporisation.

9.2

Problmatique de la boucle deux tapes.

Une situation qui nest pas abordes dans les ouvrages consults. Pis encore, dans
ces mmes ouvrages on y montre une multitude dexemples comportant des
boucles deux tapes.
Lorsquun grafcet comporte une boucle compose de deux tapes, lquation
boolenne des deux tapes est fausse en permanence ds lors que la premire
tape est active. Voyons les explications suivantes.

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
12/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
13/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
14/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

10Aller plus loin, Le GEMMA.


Le Grafcet en soit ne suffit pas construire un automatisme au complet.
Le Grafcet permet de grer le fonctionnement normal de lautomatisme. (3 )
Pour avoir une vision globale dun automatisme, il faut appliquer le GEMMA.
Guide dtude des Modes de Marche et dArrt.
Le GEMMA donne une mthode pour grer les diffrentes situations et modes de marche
possibles. Cest avec cette mthode quon traite les fonctionnements anormaux (Arrt
durgence, arrt de production, marche de test, Marche prparatoire, etc). (3)
La partie que nous avons faite reprsente les modes A1 Arrt dans ltat initiale et F1
Production Normale.
La loi suprme du GEMMA est lunicit des modes.(6)

11Conclusion.
Lutilisation du Grafcet permet de crer des squences dautomatisme grce une
mthode normalise. Cette mthode permet de dcrire lautomatisme avant mme
davoir fait le choix technologique. Toutefois, cette mthode nest pas une mthode
absolue. Elle se prte trs mal au contrle analogique. Dans des cas trs simples il
peut tre plus rapide d'utiliser des quations logiques. Toutefois, le Grafcet saura
vous simplifier la vie particulirement lors de la cration de contrles squentiels.

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
15/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

12Rferences.
1. Sciences industrielles pour l'ingnieur tout-en-un 2e anne MP, PSI, PT ...
Par Jean-Dominique Mosser,Jacques Tanoh,Pascal Leclercq
Dunod, Paris 2010
ISBN 978-2-10-054636-7
2. Informatique et automation : automatismes programmables controls par ordinateur
Par Jean Mbihi
Publibook 2006
ISBN 2748311361
3. Le Grand Guide des systmes de contrle-commande industriels
Cdric Sindjui
Lexitis Edition 2014
ISBN 978-2-36233-135-0
4. Commande des systmes dynamiques : Introduction la modlisation et au contrle
des systmes automatiques.
Arnaud Hubert
Presses universitaires de Franche-Comt 2008
ISBN 2848672358
5. http://fr.wikipedia.org/wiki/Grafcet
6. Le Gemma
S. Moreno, E. Peulot
Casteilla 1997
ISBN 2 7135 1752 4

J'ai cit au mieux les rfrences prises dans ces ouvrages. Il reste possible que
certains passages se rfrent ces ouvrages sans qu'ils ne soient explicitement
identifis comme tel.
Autre rfrence (J'ai consult mais je ne sais plus pourquoi au juste)
Automatique industrielle en 20 fiches
Grard Boujat, Patrick Anaya
Dunod 2013
EAN13 : 9782100502042

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
16/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

13Partie pratique
Vous trouverez dans cette section les informations relatives la partie pratique de l'atelier.

13.1

Avant de commencer

Avant de commencer la partie pratique de l'atelier, voici quelques informations utiles.

13.1.1 Variables temporelles


Les variables suivantes peuvent tre utilises pour faire clignoter la LED sur la sortie #13
de la carte Arduino diffrentes frquences selon l'tape active.
lent : variable qui bagotte 1HZ.
normal : variable qui bagotte 2Hz.
rapide : variable qui bagotte 4Hz.

13.1.2 tape initiale


Activation de l'tape initiale du GRAFCET au dmarrage de l'Arduino.
int GRAFCET_Etape = 0;
boolean GRAFCET_Bool[] = {true, false, false,.,} ;

13.1.3 Appel du Grafcet


Pour appeler la routine contenant le Grafcet dsir, il faut enlever les commentaires devant son appel et
mettre les commentaires devant les appels des autres Grafcets.
// GRAFCET_Test(Serie_Lu, &Etape_Active);
Ce Grafcet n'est pas excut
GRAFCET_01_Bool(Serie_Lu, &Etape_Active, GRAFCET_Bool); Ce Grafcet est excut
// GRAFCET_01_Int(Serie_Lu, &Etape_Active, &GRAFCET_Etape);
Ce Grafcet n'est pas excut

13.1.4 Routines des Grafcets


Voici le nom des diffrentes routines de Grafcet avec leur description.
GRAFCET_Test
GRAFCET_01_Bool
GRAFCET_01_Int
GRAFCET_01_If
GRAFCET_OU
GRAFCET_ET

Routine pour tester le lien srie


Grafcet squence unique programm en quation boolenne.
Grafcet squence unique programm avec switch case.
Grafcet squence unique programm avec if then.
Grafcet squences exclusives.
Grafcet squences simultanes.

13.1.5 Mise en oeuvre


Tlverser le programme dans l'Arduino.
Ouvrir le moniteur srie en appuyant sur l'icne.
Le moniteur retourne le numro des tapes actives.
crire une valeur de 1 9 dans le fentre puis cliquez sur
envoyer pour transmettre une rceptivit au Grafcet.
Entrer ici le nombre de 1 9 transmettre l'Arduino.
# d'tapes retournes par l'Arduino

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
17/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

13.2

Premier exercice, GRAFCET squence unique.

La premire manipulation se fera avec un Grafcet squence unique. Trois mthodes de


programmation seront utilises.
L'quation logique.
Le if.
Le switch case.
Les deux dernires mthodes sont particulirement bien adaptes pour un Grafcet
squence unique. Elles sont plus difficiles mettre en uvre avec une squence multiple,
particulirement avec la mthode switch case cause de l'utilisation de la commande
break. Elles permettent aussi des actions sur transition. Cela ne fait pas parti des rgles du
GRAFCET mais est une possibilit intressante.

13.2.1 Routine GRAFCET_01_Bool


Dans cette routine les tapes sont actives et dsactives par des quations logiques tel
que vu dans la partie thorique. Les tapes sont mmorises dans un tableau de boolens.
Cette routine vous est donne compltement programme. Chargez la et faite voluer le
Grafcet. Observez la LED 13.
Exercice : programmez un rebouclage de l'tape 30 vers l'tape 10 comme dans le Grafcet
ci-dessous.

Grafcet squence unique

Grafcet squence unique avec rebouclage

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
18/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

13.2.2 Routine GRAFCET_01_Int


Dans cette routine, les tapes sont actives et dsactives par une structure switch case.
Les tapes sont mmorises dans un entier.
Compltez la programmation incluant les actions dans les tapes.
Exercice : programmez un rebouclage de l'tape 30 vers l'tape 10.

13.2.3 Routine GRAFCET_01_If


Dans cette routine, les tapes sont actives et dsactives par une suite de if(){}. Les
tapes sont mmorises dans un entier.
Compltez la programmation incluant les actions dans les tapes.
Exercice : programmez un rebouclage de l'tape 30 vers l'tape 10.

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
19/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

13.3 Deuxime exercice, GRAFCET squences multiples exclusives.


La routine utiliser est GRAFCET_OU.
Dans cette routine les tapes sont actives et dsactives par des quations logiques tel
que vu dans la partie thorique. Les tapes sont mmorises dans un tableau de boolens.
Compltez la programmation pour obtenir le Grafcet ci-dessous.

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
20/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.

Atelier Comment programmer un Grafcet sous Arduino.

13.4 Troisime exercice, GRAFCET squences multiples simultanes.


La routine utiliser est GRAFCET_ET.
Dans cette routine les tapes sont actives et dsactives par des quations logiques tel
que vu dans la partie thorique. Les tapes sont mmorises dans un tableau de boolens.
Compltez la programmation pour obtenir le Grafcet ci-dessous.

Cet uvre est mise disposition par Fabien Levac selon les termes de la Licence
21/21
Creative Commons Attribution - Partage dans les Mmes Conditions 4.0 International.