1
Automatismes Séquentiels
3 Cours, 3 Travaux Dirigés et 3 séances de TP de 4h
2
Plan du cours
3
Plan du cours
4
Plan du cours
5
Plan du cours
6
Plan du cours
7
Plan du cours
8
Exemples vidéos de postes automatisés
1 Production: Fabrication de tube 1 1m11s
2 Fabrication de bretzel 2 54s
3 Assemblage meubles 3 27s
4 Assemblage semi automatisé 4 32s
5 Mouvement 1 axe, Mouvement 2axes 5 16s
6 Effort et précision 6 23s
7 Contrôle Qualité intégré 7 32s
8 Marquage, traçabilité 8 24s
9 Rapidité et précision 1 9 35s
10
Rapidité et précision 2 10 10s
Contexte et possibilités: Illustrations
9
Pourquoi automatise-t-on?
10
Constituants d’un Système Automatisé de Production
Agir sur la matière d’œuvre
Ventouse, convoyeur…
Transformer l’énergie
Moteur, Vérin…
Acquérir des informations
Capteur de Position…
Traiter les données,Emettre des ordres
API, Commande câblée…
Communiquer
IHM, Superviseur, VoyantsTerminaux de dialogue
Distribuer l’énergie
Contacteur électrique,Distributeur pneumatique…
11
Analyse fonctionnelle
Energie convertie
Energie du réseau de distribution
Ordre
Compte rendu InformationCapteurs
Acquérir de l’information
Préactionneurs
Distribuer l’énergie
ActionneurConvertir l’énergie en
action
Effecteurs
Agir sur le produit
Constituants de dialogue
Dialoguer avec l’opérateur
Constituants decommunication
Communication avecd’autres systèmes
PARTIE COMMANDE
Traiter lesinformations
Consignes, Messages
Echange d’énergie
Echanged’informations
Ajout de valeur ajoutée
12
Du point de vue de la commande
PARTIE COMMANDE
CONSIGNES DE FONCTIONNEMENT
- Mise en fonctionnement- Mise à l’arrêt- Consigne de cadence- Consigne de recette- …
INFORMATIONS SUR L’ÉTAT DU
PROCESS
-Informations binaires.Pièces en butée, Niveau atteint, Faisceau coupé, Évènement…-Informations numériques.Niveau de température, dans trémie. Comptage.
COMPTE-RENDU DE FONCTIONNEMENT
- Signalisation visuelle, sonore- Signalisation via un module IHM- Ecriture dans une base de données- …
ORDRES D’ACTIONS SUR LE
PROCESS.
- Ordre booléen Ouverture/Fermeture vanne, Mise en marche moteur- Ordre numériqueBloc de régulation PID intégré, consigne de vitesse- Consigne pour modules déportés
13
Différents moyens d’implanter une partie commande
14
Architectures d’automatismes
Architecture centralisée
Architecture décentralisée
15
Commande décentralisée et répartie
Architecture décentralisée et répartie
16
Exemple d’architecture de commande
17
L’Automate Programmable Industriel
API : Automate Programmable Industriel
PLC : Programmable Logic Controlleur
Liste de principaux constructeurs:
Allen Bradley (US); Siemens (GER); Schneider (FR); Rockwell Automation (US); FESTO (GER); WAGO (GER); GE Fanuc (US); Beckhoff (GER); Omron (JPN); ABB (SU); Mitsubishi (JPN); …
Un API est un dispositif électronique de contrôle commande en temps réel des systèmes ,
programmable et robuste.
18
L’API: Structure Matérielle
Exemple de configuration matérielle d’un API modulaire
19
2 Gammes d’API Non exhaustives
Siemens LOGO S200 S300 C7 S400
Schneider
ZELIO TWIDO TSX Micro M340 Premium Quantum
20
L’API: Structure logicielle
3 notions importantes:
21
Principe du déroulement d’un cycle automate
Scrutation cyclique Scrutation périodique
1. Les instructions du programme sont exécutées les unes après les autres
2. Lorsque toutes les instructions on été évaluées, le programme reprend à nouveau depuis le début, de toute façon.
Cette scrutation peut s’effectuer de manière cyclique ou périodique:
Cette relecture cyclique est ininterrompue, on parle de scrutation ou encore de cycle automate
22
Déterminisme temporel des APIChaque tâche d’un programme d’automate dispose d’un chien de garde
paramétrable vérifiant que sa durée de scrutation est limitée.
Dès lors que ce temps de scrutation de la tâche maître est limité, on peut garantir une borne supérieure au temps de réponse à une entrée donnée
Un API est une machine « temps réel » il garantit une réponse avant une durée maximale donnée et courte…
23
Temps de réponse maximal d’un API
Temps de réponse: entre 1 à 2 temps de scrutation (borné par chien de garde)
24
Traitement mémoire des E/S: MIE
Sur la durée d’une scrutation, les états des entrées sont rendus stables par l’utilisation de la mémoire image des entrées (MIE)
Le principe est le suivant:
1. En début de scrutation, les états de chaque entrées des coupleurs d’entrées sont recopiés en mémoire MIE de l’UC.
2. En cours d’exécution du code utilisateur, si une instruction requiert l’état d’une entrée, c’est l’image mémoire correspondante qui est lue
3. La mémoire image des entrées est rafraichie en début de scrutation suivante
25
Traitement mémoire des E/S: MIS
Selon un mécanisme similaire:
1. Chaque instruction du programme utilisateur affecte l’image mémoire de la sortie adressée. Cette image mémoire porte le même nom que la sortie physique.
2. Chaque nouvelle instruction met la mémoire image à jour
3. Après déroulement complet de la scrutation, les états de la MIS sont recopiées en bloc vers les coupleurs de sortie.
26
Structure logicielle mono-tâche et multi-tâches 2/2
Structure mono tâche:
- Le traitement interne programme constructeur.
- Une tâche maître standard.
Une tâche représente un ensemble d’opération exécuté séquentiellement.
Contrairement à l’informatique, une tâche réalise l’ensemble des opérations qui lui sont désignées puis s’arrête et ce, jusqu’à son prochain
lancement
Ordonnancement correspondant
27
Structure logicielle mono-tâche et multi-tâches 1/2
Structure multi tâches: tâche par ordre de priorité croissante
- Le traitement interne programme constructeur.
- Une tâche maître standard.- tâches rapides
(Optionnelles, Toujours périodique (1-255ms), E/S propres, Chien de garde affecté)- tâches évènements
(Optionnelle, Sur occurrence d’un évènement prédéfini, E/S propres, Chien de garde affecté)
1. A tout moment, une seule tâche exécutée.2. Les tâches ont leurs propres cycles de traitement (Lecture/Calcul/Ecriture)3. Les tâches communiquent entre-elles par des zones de mémoires allouées
Exemple Ordonnancement pour une tâche rapide à 200m
28
Norme CEI 61131-3 / NF EN 61131-3
Normalisation des 5 langages de programmation des API
• Développée par des constructeurs, utilisateurs industriels finaux, universitaires (1993 pour …-3)• Valable pour automates présents et futurs.• Intégration partielle conforme (Position dans la gamme)• Pas d’obligation légale d’implantation de l’ensemble des aspects de la norme.
1. Informations généralesDéfinitions générales et Caractéristiques fonctionnelles générales des PLC
2. Spécifications et essais matérielsDéfinitions de caractéristiques mécaniques, électriques et de conditions d’environnement
3. Langages de programmation des PLCHarmonisation des langages de programmations des PLC, Modèle élémentaire de programme d’automatisation
4. Aide utilisateurInformations pratiques d’aide à l’utilisateur depuis l’analyse du besoin et l’acquisition du PLC jusqu’à la maintenance
5. CommunicationsCommunications entre les PLC de différents constructeurs et autres équipements
CEI 61131
29
Périmètre de la CEI 61131-3
30
Les unités logiques de programmation
Ce sont des modules logiciels qui peuvent être de 3 types:
1. Les programmes
2. Les blocs fonctionnels
3. Les fonctions
Objectif poursuivit:Créer des encapsulations de structure de données et d’algorithme associé indépendant de l’application.Création de bibliothèques d’outils dédiés
31
Fonctions et blocs fonctionnels standards
Toutes les applications de programmation d’API intègrent nativement des fonctions et blocs fonctionnels prédéfinis:
Fonctions prédéfiniesnumériques: ABS, SQRT, EXP…
arithmétiques: ADD, MUL, SUB…
Booléenne: AND, OR, XOR….
sur tableau de bits: RHL, SHL, ROL…
comparaison: EQ, LT, LE….
sur chaînes de caractères: CONCAT, INSERT, DELETE…
Conversion de type: x_TO_y, BCD,…
…
Blocs fonctionnels prédéfinisTON Temporisateur à l’enclenchement
TOFF Temporisateur au déclenchement
TP Monostable
CTU compteur
CTUD Compteur / Décompteur
R_TRIG Front montant
F_TRIG Front descendant
File FIFO/LIFO Registre First In-First Out …
La norme prévoit de pouvoir créer ses propres fonctions et blocs fonctionnels
32
Ces modules logiciels sont hiérarchisés
Types d’appel possible entre module logiciel selon IEC 61131-1
Les appels réciproques sont hiérarchisés
33
Structure commune des modules logiciels IEC
Les codages de ces modules logiciels ont des structures identiques:
Exemple du bloc fonctionnel « bascule SR » recrée en ST:
34
La fonction: Unité logique de programmationUne fonction est un module logiciel
• Une seule variable de sortie• Plusieurs variables d’entrées possibles• Pas de mémoire interne
Tous langages de la norme peut servir à définir une fonction
Exemple n°1:Une fonction qui prend un mot en argument et retourne l’octet de poids faible ou celui de poids fort.Ecrite en IL
Exemple n°2:Une fonction qui réalise D=(A+B)*CEcrite en FDB
35
Le bloc fonctionnel (FB)
Un bloc fonctionnel est un module logiciel :
• Plusieurs variables de sortie possibles (ou aucune)• des mémoires internes• Eventuellement une entrée de validation et une sortie « pas d’erreur »
Tous langages de la norme peut servir à définir un bloc fonctionnel
36
Instanciation d’un bloc fonctionnel
• Les blocs fonctionnels, dès lors qu’ils sont crées, s’instancient
• Une instance possède un identificateur unique et peut-être déclarée comme locale ou globale.
En reprenant l’exemple: %Passage_droit.Q peut être utilisé en fonction de la déclaration de l’instance « Passage droit » du bloc fonctionnel bascule SR
• On instancie un BF dans un programme, ou dans un autre BF.
☢ Toutes les valeurs sont conservées d’une exécution de bloc fonctionnel jusqu’à l’autre
37
Le programme: Unité logique de programmation
Il y a toujours un programme principal effectuant les affectations des E/S, des variables globales…
Pour chaque programme, on peut définir un mode de scrutation indépendamment des autres.
Il n’y a pas d’instance de programmes (sur un même API)
38
Les blocs déclaratifs des variables
Pour chaque blocs déclaratifs des modules logiciels, il est nécessaire de définir:
1. La portée de chacune des variables utilisées dans le bloc.
2. Le type de chacune de ces variables.
39
Éléments commun des langages
Chaque variable doit être parfaitementTypée Identifiée ou localiséeDe portée déterminée (locale, globale, entrée, sortie, E/S..)
Une variable ne peut-être typée que selon l’une des 3 catégories suivantes:
- un type standard- Un type prédéfini par le développeur- une instance de bloc fonctionnel
40
Types de données standards selon le CEI 61131-3Type de données Description Bits Gamme
BOOL booléen 1 [0, 1]
BYTE Chaîne de 8bits 8 [0,…,16#FF]
WORD Chaîne de 8bits 16 [0,…,16#FFFF]
DWORD Chaîne de 8bits 32 [0,…,16#FFFF FFFF]
LWORD Chaîne de 64bits 64 [0,…,16#FFFF FFFF FFFF FFFF]
SINT Entier signé court 8 [-128, 127]
INT Entier signé 16 [-32768,…,+32767]
DINT Entier double signé 32 [-2(31),…,2(31)-1]
LINT Entier long signé 64 [-2(63),…,2(63)-1]
USINT Entier court non signé 8 [0, 255]
UINT Entier non signé 16 [0,…,65535]
UDINT Entier double non signé 32 [-0,…,2(32)-1]
ULINT Entier long non signé 64 [-0,…,2(64)-1]
REAL Nombre réel 32
STRING Chaîne de car. ASCII .. 255 caractères maxi
DATE Date 32 D#0000-00-00
TOD Heure 32 Tod#00:00:00
TIME Durée 32 T#0s
Principaux types de données prédéfinis par l’IEC61131
41
Type de données prédéfinis
1°) Type EnuméréTYPE Couleur : (rouge, verte, bleue); END_TYPE;TYPE RefType : (REF,DIFF):=REF; END_TYPE;
2°) Type TableauTYPE Mesure : ARRAY[1..10] OF INT; END_TYPE;
3°) Type StructureTYPE Acquisition STRUCT Valide:BOOL:=FALSE; Reference:RefType; ACQ:Mesure; END_STRUCTEND_TYPE
42
Identification et étendues des variables
Préfixe d’emplacement
Signification
I Emplacement d’entrée
Q Emplacement de sortie
M Emplacement de mémoire
K Emplacement de mémoire constante
Préfixe de taille
Signification
(Rien) Taille d’un seul bit
X Taille d’un seul bit
B Taille d’un octet
W Taille d’un mot de 16 bits
D Taille d’un mot de 32 bits
Exemple: %I1.2; %IW0.1; %MB10; %KD10;
Une variable peut être identifiée de manière symbolique ou bien localisée
Pour une variable localisée, la désignation est normalisée:
%(Préfixe d’emplacement)(Préfixe de taille)(Indices de positions <Equipement.>slot.voies)
43
Les 5 langages de programmation de la norme
IL ST LD FDB SFC
Instruction list Structured Text Ladder diagram Function block diagram
Sequential function chart
Listes d’instructions
Texte structuré Langage à contacts Langage à blocs fonctionnels
Langage inspiré du GRAFCET
44
Langage IL
Label Opérateur (<modificateur>)
Opérande Commentaire
L1: ADD 10 (* Accu:=Accu+10*)
Exemple:
Langage textuel, de bas niveau, proche du langage assembleur.Un programme IL se présente comme une liste de ligne d’instructions évaluées séquentiellement
- Le label est optionnel, il ne sert qu’au éventuel saut de programme.
- L’opérateur code l’opération a effectuer entre l’accumulateur et l’opérande. Le résultat de cette opération est placé dans l’accumulateur
- Le modificateur « ( » permet de créer un second accumulateur quand nécessaire.- Cet accumulateur est évalué et détruit par l’opérateur « ) », parenthèse fermante.
LD A(*Accu=A*)
MUL B(*Accu=Accu*B*)
ADD C(*Accu=Accu+C*)
ST D(*D=Accu=A*B+C*)
LD A(*Accu=A*)
MUL( B (*Accu1=B*)
ADD C(*Accu1=Accu1+C*)
)(*Accu=Accu+Accu1*)
ST D(*D=Accu*)
D=A*B+C D=A*(B+C)
Principe:
45
Langage IL: Principaux opérateurs
Opérateur Description
LD Accu=Opérande (Op)
ST Op=Accu
S Si Accu Alors Set Op
R Si Accu Alors Reset Op
LDN Accu=NOT Op
STN Op= NOT Accu
Opérateurs d’affectation
Opérateur Description
AND Accu=Accu AND Op
OR Accu=Accu OR Op
XOR Accu=Accu XOR Op
NOT Accu= NOT Accu
ANDN Accu=Accu AND NOT Op
ORN, XORN…. …
Opérateurs logiques
Opérateur Description
ADD Accu=Accu + Op
MUL Accu=Accu * Op
MOD Accu=Reste Accu/Op
SUB Accu= Accu-Op
DIV Accu=Accu /Op
Opérateurs arithmétiques
Opérateur Description
GT Accu=(Accu>Op)
LT Accu=(Accu<Op)
EQ Accu=(Accu=Op)
GE Accu=(Accu>=Op)
LE Accu=(Accu=<Op)
NE Accu=(Accu<>Op)
Opérateurs de comparaison
+ fonctions de conversion de type, sur chaînes de bits, sur chaînes de caractères…
46
Langage IL: Branchement et Appel
Opérateur Description
JMPC Saut au Label si (Accu=TRUE)
JMP Saut inconditionnel au Label
JMPCN Saut au Label si (Accu=FALSE)
RETC RETURN si (Accu<>0)
RET RETURN
RETCN RETURN si (Accu=0)
Opérateurs de branchements
Appel d’un bloc fonctionnelST NomInstance.Entrée1 etc….CAL NomInstance(<Entrée1>:=<Valeur>,….)LD NomInstance.SortieST Resultat
Appel d’une fonction: Ex fonction utilisateur LIMIT(Min,Val,Max)
LD MinLIMIT Val,MaxST Resultat
47
Langage IL: Exercices
1°) Ecrire le programme IL qui code l’équation combinatoire suivante:
Résultat=a1+(a2*(a3-a4)*a5)+a6
2°) Ecrire le programme IL qui code les instructions FDB suivantes
3°) Ecrire un bloc fonctionnel AFFECTE qui a pour argument un entier non signé« Selecteur » et qui si Selecteur=i i∈{0,1,2} positionne un bit de sortie bsi à TRUE i∈{0,1,2}sans modifier les autres bits
Ecrire une séquence d’instruction IL qui appelle ce bloc et lit un des 3 bits de sortie
48
Langage STLangage textuel, de haut niveau, proche de langage informatique type PASCAL.
Le langage ST est adapté à la programmation de fonctions algorithmiques complexes, aux manipulations sur tableaux, difficile à traduire en langage graphique.
Exemple:(*Recherche du premier élément non nul dans un tableau de 32 mots, détermination de sa valeur (%MW10), de son rang (%MW11). Cette recherche s ’effectue si %M0 est à 1, %M1 est mis à 1 si un élément non nul existe, sinon il est mis à 0*)
IF %M0 THENFOR %MW99:=0 TO 31 DO
IF TAB[%MW99]<>0 THEN%MW10:=TAB[%MW99];%MW11:=%MW99;%M1:=TRUE;EXIT;
ELSE%M1:=FALSE;
END_IF;END_FOR;
ELSE%M1:=FALSE;
END_IF
49
Langage ST: Sélecteurs de branches
IF-THEN-ELSIF-ELSE-END_IF CASE-OF-ELSE-END_CASESyntaxe IF <Expression Booléenne> THEN
<énoncé><énoncé>;…
ELSIF <Expression Booléenne> THEN<énoncé>;<énoncé>;…
ELSE<énoncé>;<énoncé>;…
END_IF
CASE <Expression Entière> THEN<valeur>:<énoncé>;<valeur>:<énoncé>;<valeur>, <valeur>:<énoncé>;…
ELSE<énoncé>;<énoncé>;…
END_CASE
Enoncés ELSE et ELSEIF optionnels On peut avoir plusieurs valeurs différentes donnant lieu au même traitement.L’énoncé ELSE est optionnel.
Exemple IF manual AND not(alarm) THENLevel:=manual_level;bx126:=bit12 OR bit16;ELSE_IF over_mode THENlevel;:=(level*100)/scale;END_IF;IF overflow THEN alarm_level:=TRUE; END_IF;
CASE error_code THEN255 : err_msg:=‘Division par zéro’; fatal_eror:=TRUE;1 : err_msg:=‘Dépassement’;2,3 : err_msg:=‘Erreur de signe’;ELSEerr_msg:=‘Erreur Inconnue’;END_CASE;
50
Langage ST: Opérateurs d’itérations
WHILE-DO-END_WHILE REPEAT-UNTIL-END_REPEAT FOR-TO-BY-DO-END_FOR
Syntaxe WHILE <Expression
Booléenne> DO<énoncé><énoncé>;…
END_WHILE;
REPEAT<énoncé>;<énoncé>;…
UNTIL <Expression Booléenne>
END_REPEAT;
FOR<index>:=<mini> TO <maxi> BY
<pass> DO<énoncé>;<énoncé>;
…
END_DO;
BY est optionnel, par défaut, l’incrément est de 1.
String:=‘’ (*vide*);Nbchar:=0;IF ComlsReady() THENREPEAT String:=string+ComGetChar(); Nbchar:=nbchar+1;UNTIL ((nbchar>=16)OR NOT(ComlsReady()))END_REPEAT;
Length:=mlen(message);Found:=FALSE;
FOR index:=1 TO length DO Code:=ascii(message,index);
IF code:=searched_chard THEN Found:=TRUE;
EXIT;
END_IF;
END_FOR;
Instructions:EXIT : Quitte la boucle d’itérations (FOR, WHILE ou REPEAT).
RETURN : Quitte la fonction ou le bloc fonctionnel dans laquelle elle est placée.
51
Langage ST: Appel de fonctions et de blocs fonctionnels
Appel de fonction élémentaire:<resultat>:=NomFonction(<argument1,argument2,…);
Appel de bloc fonctionnel: On appelle une instance du bloc souhaité.On invoque les paramètres de sortie correspondants
NomInstanceBlocFonctionnel(<argument1,argument2,…);
<resultat1>:=NomInstanceBlocFonctionnel.<retour1>;<resultat2>:=NomInstanceBlocFonctionnel.<retour2>;…
Exemple: Si trigb1 est une instance de « R_TRIG », BF de détection de front montant.
trigb1(b1);IF trigb1.Q THEN nb_fronts:=nb_fronts+1; END_IF;
52
Langage LD
Langage graphique, proche du langage à contact des électriciens.Ce langage est toujours disponible, quelque soit la gamme API.
Entre la zone de calcul et la zone d’affectation ne transite que des valeurs booléennes
Langage LD
53
Relais direct output:=input
Relais inversé output:=NOT(input)
Relais forçage SET: IF Input THEN Output:=TRUE END_IF
Relais forçage RESET: IF Input THEN Output:=FALSE END_IF
Contact direct passant si %I1.2
L’association en série (ET) et en parallèle (OU) de contacts de différentes natures réalise la logique booléenne souhaitée
Contact inversé passant si NOT(%I1.2)
Contact passant sur Front de %I1.2
Toutes fonctions/bloc fonctionnels ramenant une valeur logique peut être utilisé dans la zone de calcul ( Fonction de comparaison, Temporisation…) Toutes fonctions peut être invoquées par la
possibilité d’adjoindre une entrée EN (et une sortie ENO correspondante) [ même pour des blocs qui n’ont pas été crée nativement avec cette entrée]
Dès lors que cette entrée est à 1, résultat d’un réseau LD, le bloc est exécuté
54
LD: Schéma de base à connaître.
Reconstruction d’un front en LD
Si l’interface de programmation de l’API ne permet pas d’obtenir directement l’information « front »),on reconstruit l’information en utilisant un bit additionnel (ici b), selon le schéma ci-contre:
Mémoire à enclenchement prioritaire
Mémoire à déclenchement prioritaire
M0=/OFF·(ON+M0)
M0=ON+(/OFF·M0)
55
Langage FDB
Langage graphique concis
Une instruction FDB est décrite comme un réseau de fonctions plus élémentaires, reliées par des fils orientés , correspondant à des flux de donnés typées
56
Langage FDB: Fonction de base
Désignation Nom de la fonction
Addition ADD
Soustraction SUB
Division DIV
Multiplication MUL
Transfert MOVE
Strictement supérieur GT
Strictement inférieur LT
Egalité EQ
Inégalité NE
OU Logique OR
ET Logique AND
NON NOT
Etc.… etc.… ….
• l’entrée EN « Enable »
L’entrée EN est utilisée pour autoriser l’exécution de la fonction
• La sortie ENO « Enable Out»
Est mise à UN quand la fonction a été correctement réalisée
57
Langage FDB: Exercice
Ligne de conditionnement:
Une ligne de conditionnement doit travailler sur 2 types de pièces différentes.
Pour chaque pièce, le nombre de pièces par sacs et le nombre de sac par carton varie. Le système doit permettre de visualiser à tout moment le nombre de pièces en cours de conditionnement « Valeurs courante pièces » et de donner l’information « carton plein ».
On souhaite écrire un bloc fonctionnel type « Compteurs pièces », ont été crées 2 instances portant les noms « Compteur pièces1 » et « Compteur pièces 2 »
Ecrire le bloc fonctionnel « Compteur de pièces » en langage FDB
58
Langage SFC
Langage graphique de programmation directement inspiré du langage GRAFCET.SFC est particulièrement adapté à la programmation des séquences.
Les principes et conventions sont identiques aux principes et conventions du grafcet à quelques exceptions près
-Un bloc SFC doit avoir une en-tête déclarative.
-Les actions sont caractérisées N (continue),D(retardée),L(limitée dans le temps), R ,S(mémorisée),P(impulsionnelle)
-Les actions peuvent correspondre à l’appel d’autres modules fonctionnels
-Les forçages ne sont pas si explicite.-…
59
Le GRAFCET: outils de description des automatismes séquentiels
GRAFCET: GRaphe Fonctionnel de Commande Etapes-Transitions
C’est un langage normalisé (NE FR 60848 – 08/2002) de description du fonctionnement de systèmes séquentiels
☢ Le GRAFCET n’est pas un langage de programmation.
On parle d’analyse GRAFCET d’une système séquentiel
60
Le GRAFCET: Eléments de base
L’état du GRAFCET peut se résumer au vecteur X dont les composantes sont les variables d’étapes binaires Xi, représentant l’état de l’étape i.
61
Grafcet: Exercice de base
2 bacs sont utilisés de façon similaire.
Le bac 1 est vide lorsque le niveau est au dessous de b1.Il est plein lorsque le niveau est au dessus de h1.
A l’état initial, les 2 bacs sont vides. Au moment où on appuie sur un bouton poussoir m, les 2 bacs se remplissent grâce à l’ouverture des vannes V1 et V2.
Dès qu’un bac est plein, on arrête son remplissage et on commence à utiliser son contenu. Lorsque le bac est vide, on ferme la vanne W correspondante. Le remplissage ne pourra recommencer que lorsque les 2 bacs seront vides. Ce remplissage sera déclenché par appui sur le bouton poussoir m.
Proposer un grafcet qui corresponde au fonctionnement souhaité.
62
Le GRAFCET: 5 Règles d’évolution
Règle n°1 Situation initiale du GRAFCETLes étapes initiales sont activées dès que la PC est opérationnelle
Règle n°2 Transition FranchissableUne transition est validée dès lors que toutes ses étapes immédiatement précédentes sont actives.
Une transition est franchissable et franchie dès lors que:
Elle est validée ET La réceptivité associée est VRAIE
Règle n°3 Franchissement d’une transitionLe franchissement d’une transition entraine simultanément:
- la désactivation de toutes les étapes immédiatement précédentes - l’activation de toutes les étapes immédiatement suivantes
63
Le GRAFCET: 5 Règles d’évolution
Règle n°4 Franchissements simultanésPlusieurs transitions simultanément franchissables sont simultanément franchies
Règle n°5 Activation et désactivation simultanées
Si, au cours du fonctionnement, une même étape doit être désactivée et activée simultanément, elle reste active.
64
Une variable temporisation S s’écrit de manière générale [t1,E , t2] ou:- E une variable d’entrée booléenne.- t1 retard à l’enclenchement de E- t2 retard au déclenchement de E
Les réceptivités
Condition logique affectée à toute transition et calculée à partir:
• d’une entrée booléenne (issue des MIE/MIS par exemple)
• d’un évènement (↑e ) ou (↓b) : changement d’état d’un booléen
• une condition logique toujours vraie: 1
• de l’évaluation de toute fonction ramenant un booléen [Cpt>6]; [Value=10];…
• d’une état d’un GRAFCET Xi , bit d’étape n°i.
• d’une temporisation
€
: Toutes les actions continues sur X66 sont maintenue pendant 5s
65
Les actions 1/3
Il existe 4 types d’action que l’on peut associer à une étape GRAFCET:
1. Les actions continues
2. Les actions conditionnelles (dont temporisées)
3. Les actions mémorisées.
4. Les actions impulsionnelles
KA1=X21
KA1=X21./Depassement
Action continue
Action conditionnelle
66
Les actions 2/3
Action conditionnée par une temporisation = Action temporisée
Action mémorisée
Action limitée Action retardée
Action impulsionnelle
De durée théorique nulle, ces actions peuvent être effectuées à l’activation, à la désactivation d’une étape ou sur l’occurrence d’un évènement.
67
Les actions sur étapes instables 3/3
Supposons les étapes 1 et 11 actives et b=1, lorsque la variable a passe de 0 à 1,les étapes 3 et 13 sont alors directement activées. Les étapes 2 et 12 sont ici instables.
L’action continue sur X2 instable n’est pas réalisée, de toute façon.
L’action mémorisée sur X12 instable est effectuée, dès lors qu’elle est programmée comme action à l’activation ou à la désactivation de l’étape 12.
On parle d’évolution fugace quand plusieurs transitions successives sont franchies sans évènement sur les réceptivités correspondantes
68
Le GRAFCET: Structures de base 1/4
L’écriture de GRAFCET décrivant des automatismes séquentiels fait apparaître des structures classiques et récurrentes, à connaître:
1. Séquence linéaire ou séquence obligée
2. Sélection de séquences
3. Séquences parallèles
4. Saut de séquence
5. Reprise de séquence
6. Séquences alternées
7. Séquences exclusives
La description complète d’une application d’automatisme résulte alors en la résolution d’un problème d’organisation et de synchronisation de
telles structures.
69
Le GRAFCET: Structures de base 2/4
1. Séquence linéaire.
2. Sélection de séquences
Branche de l’étape 22 prioritairesans blocage
Pas de branche prioritaireblocage si a=b=1
Structure OU
☢ Si a=b=1 lors de l’évènement activation de l’étape 21, Les étapes 22 et 23 seront activés immédiatement
… Et l’on a réalisé le ET de séquences parallèles
Solution: rendre exclusive les réceptivités a et b
Cette structure permet de traduire les séquences obligées.
70
Le GRAFCET: Structures particulières 3/4
3. Séquences parallèles
4. Saut de séquence 5. Reprise de séquence
Structure ET : parallélisme structurel de séquences
☢ Toujours resynchroniser le retour de 2 séquences parallèles:C’est le rôle des étapes 25 et 26 ici. La dernière de ces 2 étapes a être activée aura une activité fugace.
71
Le GRAFCET: Structures particulières 4/4
6. Séquences alternées
7. Séquences exclusives
Cas classique d’une ressource commune à laquelle 2 moyens doivent avoir accès consécutivement
: Séquence 1, puis séquence 2, puis séquence 1…
Cas classique d’une ressource commune à laquelle 2 moyens doivent avoir accès de manière concurrente
Ce sont les réceptivités r1et r2 qui gèrent l’attribution de la ressource.
On peut envisager une attribution de priorité séquentielle….
72
Le GRAFCET: Organisation et synchronisation 1/2
En pratique, la description d’un automatisme complexe à l’aide du langage GRAFCET donne toujours lieu à la donnée de plusieurs grafcets partiels, interdépendants et hiérarchisés.
€
GRAFCET GLOBAL = GRAFCETi{ }i∈ 1...n[ ]
Appel et synchronisationInterdépendance:
1. Appel respectif
2. Synchronisation
3. Forçage
73
Le GRAFCET: Organisation et synchronisation 1/3
Synchronisation unilatérale
Synchronisation bilatérale
74
Le GRAFCET: Organisation et synchronisation 2/2
Notation : Gi{x} Grafcet n°i forcé dans la situation x
Forçage d’un grafcet
☢ Les ordres de forçage rompent « brutalement » les séquences.
Ils sont à utiliser avec parcimonie pour résoudre des « situations anormales » dans le déroulement du processus (typiquement le traitement de problème de sécurité, d’apparition d’obstacle etc…)
- Difficulté pratique d’implantation de ces ordres dans les API (forçage ciblé)
75
Grafcet: Exercice
Un étudiant, peu inspiré, a proposé l’analyse grafcet ci-contre.
Retrouver les erreurs..
76
Implantation d’une analyse grafcet dans un API
Dès lors que l’on ne peut utiliser le langage SFC,
Il s’agit de coder, dans le langage choisi, et dans l’ordre:
1. Les évolutions de tous les grafcets
2. Les équations de sortie associées à chacune des actions
77
Implantation d’une analyse grafcet dans un automate
Principe de transcription d’une analyse grafcet en équation booléenne.
1. A chaque étape on affecte un bit mémoire
Ce bit doit être mis à 1 quand la transition amont est franchie (ON)Ce bit doit être mis à 0 quand le transition avale est franchie (OFF)
Mémoire à enclenchement prioritaire ( R5 d’évolution).
M21= ON + NOT(OFF).M21
2. Pour programmer les « ON/OFF », on associe à chaque transition un bit qui est mis à 1 dès lors que la transition est franchissable (Toutes étapes amont actives et réceptivité associée vraie)
3. Il est nécessaire d’initialiser toutes les étapes initiales(Si aucun bit mémoire d’étape n’est à 1 Alors Mettre à 1 les bits mémoires des étapes initiales)
78
Exercice
Ecrire l’ensemble des équations booléennes permettant d’implanter cette analyse grafcet dans un API ne se programmant pas en SFC.