SlideShare une entreprise Scribd logo
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 1
Chapitre 2
Programmation des API
1. Introduction
Les langages de programmation utilisée pour les API ont évolué depuis l’introduction des automates à la fin
des années 60. Actuellement la norme CEI 61131-3 (la partie 3 sur 8 de la norme noté précédemment 1131,
apparu en 1993 et en deuxième édition en 2003 et spécifiant les langages de programmation), spécifie 5
langages qui sont :
• langages graphiques :
o langage LADDER (à relais), LD
o Boîtes fonctionnelle, ou Functional Block Diagram (FBD).
• Langages textuel :
o Texte structuré (ST)
o Liste d’instructions(IL)
• Diagramme de fonctions séquentielles (Sequential Chart function, SFC) :
o Version graphique (proche du grafcet)
o Version textuelle.
Le cycle de fonctionnement d’un automate peut être simplifié comme suit :
Lecture des entrées et
sauvegarde en mémoire
Lecture des entrées de la
mémoire, exécution des
instructions du
programme et
mémorisations des
sorties
Mise à jour des sorties
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 2
Le temps d’un cycle dépend de la taille du programme à exécuté et la vitesse du processeur avec une
moyenne de 2-5ms/K de programme. Le scan du programme limite les vitesses (fréquences) des signaux
auxquels un api peut réagir. La figure suivante illustre le cas où l’automate compte le nombre d’impulsions
d’un signal : le premier est moins rapide que la vitesse de scan du programme, le comptage est correct. Le
deuxième signal est plus rapide et l’automate peut rater quelques impulsions. Le troisième est encore plus
rapide et l’automate peut rater plusieurs impulsions. Pour que la lecture des entrées se fait correctement,
théoriquement il faut que le temps d’une impulsion en entrée dure plus que 1/(2*période de scan). Par
exemple si le temps de scan est de 20ms, l’automate peut lire des impulsions d’une largeur de
1/(2*0.01)=0.02s soit une fréquence de 50Hz. En pratique, d’autres facteurs, tel que le filtrage sur les
entrées, ont un effet considérable sur la vitesse de lecture et doivent être pris en compte.
Un autre problème moins évident peut apparaitre lorsque le changement d’une entrée parvient juste après
sa lecture, ce qui va retarder l’activation (ou désactivation) de la sortie concernée un cycle (voir figure)
Entrée
processus
Sortie
processus
Scan du
programme
Lecture de
l’entrée
Mise à jour
de la sortie
Entrée processus
Sortie processus
Scan du
programme
Lecture de
l’entrée
Mise à jour de la
sortie
Scan du
programme
Par exemple considérant un processus ou la matière d’ouvre est déplacée avec la vitesse de 15m/s (par
exemple barre de fer de construction), et qui doit être découpé sous la commande d’un api avec un temps
de scan de 30ms, après un signal d’une photocellule. La marge d’erreur est donc de 15000*0.03=450mm.
Les constructeurs peuvent proposer des cartes spéciales (avec leur propre *P) pour traiter ces signaux
rapides.
Signal 1
Signal 2
Signal 3
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 3
2. Identification des entrées/sorties et bit d’adresses :
2.1. Rangés, cartes et signaux
Le programme d’API concerne les connections avec le processus et les modules des entrées et sorties
doivent être identifié dans le programme. Les constructeurs ont différentes façon d’identifier ces E/S (voir
exemple figure ci-dessous)
Notation: (a) Mitsubishi, (b) Siemens, (c) Allen-Bradley, and (d) Télémecanique.
Généralement les apis contiennent des rangés (racks) locales ou éloigné. Chacune contient des cartes (ou
modules) d’entrées sorties avec 8, 16 ou 32 connections. L’idée est d’adresser ces E/s en utilisant la notion
de rack/module/bit.
Exemple 1 Allen Bradley PLC-5:
L’Allen Bradley PLC-5 peut avoir jusqu’à 8 racks dans sa version 5/25. Le rack 0 contient automatiquement le
processeur, et l’utilisateur peut attribuer des adresses dans les autres racks (de 1 à 7) en positionnant des
switchers. Ses racks (outre le n°0) se connectent au processeur via un câble de communication série des E/S
lointaines. Il y a trois façons avec laquelle un rack peut être configuré pour ce constructeur mais seule la plus
simple est présentée.
Chaque rack contient une carte à 16 voie d’entrées et une carte à 16 voie de sortie, ou bien deux cartes de 8
voies généralement (mais pas nécessairement du même type. Dans la figure suivante par exemple le slot 1
contient une carte d’entrée à 16 voies et une carte de sortie à 16 voies. Le slot 2 contient 2 cartes de sorties
de 8 voies chacune.
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 4
L’adressage des entrées est comme suit : I : Rack Slot/bit, où bit est sur deux digits.
Allen Bradley utilise un système d’adressage octal pour les bits, donc les nombres autorisés sont0-7 et 10-17.
Par exemple l’adresse I :27/14 désigne l’entrée 14 sur le slot 7 dans le rack 2. Les sorties sont adressées de
manière analogue : O:Rack Slot/Bit. Donc l’adresse O:35/06 est la sortie 6 sur le slot 5 du rack 2.
Exemple 2 Siemens SIMATIC S5 :
Les E/s numérique des API de Siemens sont organisé en groupes de 8 bits (appelé Byte).un signal est identifié
utilisant son numéro de bit (0-7)et son numéro de byte (0-127). Les entrées ont noté I<byte>.<bit>, et les
sorties Q<byte>.<bit>, exemple l’entrée I9.4 et la sortie Q52.7.
Comme pour l’Allen Bradley, siemens utilise des slots pour les cartes dans un ou plusieurs racks. Les cartes
sont disponibles en 16 bits (2-ytes) ou 32 bits (4-bytes). Un système peut être construit à partir de racks
locaux connecté via un câble de bus parallèle, des racks éloignés avec une connexion série. Les racks locaux
sont plus rapides et peuvent résoudre quelques problèmes liés aux processus rapides et aux connections
séries, mais ne peuvent pas être qu’à quelques mètres de distance du processeur.
La forme la plus simple d’adressage est les slots fixes (figure ci-dessous). Quatre bytes sont attribués
séquentiellement à chaque slot (0-3 pour le premier slot, 4-7 pour le deuxième,…). L’entrée I2.4 est donc le
bit d’entrée numéro 4 du premier byte de la carte dans le slot 3 du premier rack.
L’utilisateur a la possibilité d’affecter l’adressage par byte (appelé adressage de slots variable). Le numéro du
premier byte et le nombre de bytes (2 pour les cartes à 16 bites et 4 pour les cartes à 32 bites) peuvent être
fixé pour chaque slot indépendamment avec des switchers dans le module adaptateur pour chaque rack.
N’importe quelle combinaison est possible, toutefois il est recommandé d’utiliser une numérotation
séquentielle (figure suivante).
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 5
A noter finalement que siemens utilise différentes notation dans différents pays avec des terminaux de
programmation multilingues (par exemple E pour l’entrée et a pour la sortie en Allemagne).
2.2. Bits de sauvegarde internes.
Comme pour les entrées et sorties, l’automate nécessite de sauvegarder des signaux internes de données
concernant par exemple le bon fonctionnement du système, mise en attente, défaillance détecté, …
L’automate permet d’alloué des bits internes pour ces signaux. Ces bits ont des appellations qui varient d’un
constructeur à un autre, par exemple relais auxiliaires pour Mitsubishi, drapeaux (flags) pour Siemens, bit de
sauvegarde pour Allen Bradley…, de même la notation varie, Mitsubishi utilise Mnnn, avec nnn est un
nombre dans une zone prédéfinie de M100 à M377 (octal), Siemens utilise la notation FByte.bit (e.g. F27.06),
pour le PLC-5 de Allen Bradley, le bit de sauvegarde (bit storage) est noté B3/n où n est le numéro du signal
(e.g. B3/100). Dans cette notation B est pour Bit storage, 3 vient du fait que le PLC-5 maintient les donnée en
fichiers (fichier 3 pour ces bits, fichier 4 pour les timers (T4), fichier 5 pour les compteurs (C5), …).
3. Programmation en langage Ladder :
Le langage Ladder (LD) est issu du domaine des relais électromécaniques et décrit le flux d’énergie à travers
un réseau d’une unité organisé du programme, de gauche à droite. Initialement ce langage est destiné à
commander des signaux booléens. Ces réseaux sont organisé du haut vers le bas sauf spécification de
l’utilisateur.
En LD l’évaluation du réseau dépend de sa forme graphique (noms des variables et types de connections).
Les éléments sont connecté soit en série soit e parallèle.
3.1. Eléments de base d’un réseau Ladder
Un réseau LD consiste en les éléments suivants :
- Connections
- Contacts et bobines.
- Eléments graphiques pour contrôler l’exécution de la séquence (sauts)
- Eléments graphiques pour appelés des fonctions blocs (FB)
- Connecteurs.
Le tableau suivant donne les principaux éléments (contacts et bobines) d’un réseau LD :
Objet graphique nom
-| |- Contact normalement ouvert
-|/|- Contact normalement fermé
-|P|- Contact fermé au front montant
-|N|- Contact fermé au front descendant
-( )- Bobine normalement ouverte
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 6
-( / )- Bobine normalement fermée
-( S )- (ou –( L)- Bobine Latch (maintenu à 1 une fois actionné
-( R )- (ou –( U )- Bobine Reset (remise à 0 de la bobine latch)
-( P )- Bobine active au front montant de son entrée
-( N )- Bobine active au front descendant de son entrée
|-<return> Retour unconditionnel (vers le sous-programme appelant)
|-cond-<return> Retour conditionnel
|->>Label Saut inconditionnel
|-cond->>Label Saut conditionnel
3.2. Appelle de fonctions ou blocs fonctionnels (FB):
Les fonctions et les FB, représentés par des rectangles, peuvent avoir plusieurs paramètres et variables
d’entrées et de sorties. Les fonctions peuvent avoir un ou plusieurs paramètres à retourner. Les noms
formels des paramètres d’entrées et de sortie doivent apparaître à l’intérieur du bloc. Le paramètre
approprié ‘actuel’ (variables, constantes sont écrit en dehors du bloc, sur le fils adjacent au paramètre
formel, il est aussi possible de connecté les entrées/sorties d’un bloc avec celle d’un autre bloc.
Les paramètres d’une (FB) peuvent être des donnée de n’importe quel type, mais au moins une seule entrée
et une seule sortie doivent être de type booléen et doivent avoir des connections direct ou indirect aux
lignes de puissance gauche et droite. Une FB standard à une sortie Q pour répondre à cette exigence.
Les fonctions doivent avoir un paramètre d’entrée et un de sortie spéciales appelé EN et ENO
respectivement, qui contrôlent l’exécution de la fonction. Si EN est évalué à faux (= 0), la fonction n’est pas
exécutée et ENO est aussi mis à 0. Il est possible d’utiliser ENO comme un paramètre d’erreur. Les autres
états pour lesquelles ENO est 0, sont déterminés par le constructeur et doivent être documentés.
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 7
3.3. Variables en boucle de retour (feedback)
Si une variable est utilisé pour sauvegarder une valeur (sortie) dans un cycle et lue comme une entrée dans
le cycle suivant dans le même réseau, elle est appelée variable en feedback
Seules les connections implicites en feedback (en répétant le nom de la variable) sont possible en LD et donc
pas de connexion explicite (de droite vers la gauche) ne sont autorisées.
Si un FB et une variable en feedback font partie du même réseau, ceci peut conduire à des comportements
différents selon les systèmes d’API.
Considérant par exemple le réseau donné par la figure suivante :
Dans cette exemple il n’est pas claire si le contact var2 sera attribué la valeur du paramètre FBname O2 du
cycle d’automate en cours ou celle du cycle précèdent. La norme 61131-3 ne discute pas en détails cette
ambiguïté. Pour résoudre ce problème le FB doit être considéré comme un réseau LD à part. S’il y a besoin
d’utiliser des parties du réseau pour prédéfinir un paramètre d’entrée, ou d’utiliser un paramètre de sortie
dans le même réseau, alors cette variable ne doit pas être affectée à un contact ou une bobine dans le
même réseau.
4. Programmation en liste d’instruction (IL)
4.1. Syntaxe
Le langage IL est un langage simple, semblable au langage assembleur, largement utilisé pour la
programmation de l’api et souvent comme langage intermédiaire vers lequel les programmes écrits en
autres langages sont traduits.
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 8
Un programme en IL se présente comme une série d’instructions avec une instruction par ligne. Chaque
instruction consiste en un opérateur suivit par un ou plusieurs opérandes. D’une façon générale, une
instruction en IL a la syntaxe suivante
Label : Opérateur/Fonction Opérande (list) (*Commentaire*)
par exemple :
LD A
Qui indique que l’opérande A est à charger, ou bien : OUT Q
Les opérandes utilise un code mnémonique qui varie de constructeur à un autre, bien que la norme indique
les instructions à utiliser (et qui sont largement adopté), le tableau suivant donne quelques instructions
selon cette norme et son équivalent pour certain constructeurs :
CEI 61131-3 Mitsubishi Omron Siemens Description
LD LD LD A Charger l’opérande
dans le registre
résultat
LDN LDI LD NOT AN Charger le
complément de
l’opérande
AND AND AND A ET logique
ANDN ANI AND NOT AN ET logique avec le
complément de
l’opérande
OR OR OR O OU logique
ORN ORI OR NOT ON Ou logique avec le
complément de
l’opérande
ST OUT OUT = Sauvegarder le
registre de résultat
dans l’opérande
Exemple 1 : programmation de l’équation .Q A B= utilisant la notation de Siemens :
A A (* charger A*)
AN B (*Charger le complément de B*)
= Q (*sauvegarderle résultat en Q*)
Exemple 2:
A(
A I0.0
AN I1.1
O(
AN I0.0
A I0.1
)
= Q2.0
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 9
4.2. Accumulateur universel (Résultat courant)
Les langages assembleurs standards se basent sur une architecture matérielle dans laquelle un accumulateur
est utilisé pour sauvegarder les résultats des différentes opérations effectuées par le processeur. Le langage
IL offre cette possibilité d’accumulateur appelé résultat courant (Current Result, CR). Toutefois le CR n’a pas
un nombre de bits fixes comme pour un accumulateur, le compilateur IL assure qu’un accumulateur virtuel
(incluant une pile accumulateur) est toujours disponible pour n’importe quelle largeur de mémoire. Le
nombre de bits dépond de type de donnée de l’opérande, et elle varie d’instruction à autre pour s’adapter à
l’instruction la plus récente.
Les types de données dans le CR peuvent être :
- élémentaires
- Composées (structure, array, …)
- Fonction bloc.
Exemple :
VAR_INPUT
FirstOperand: INT;
END_VAR
VAR
SecondOperand, ThirdOperand: INT := 10;
WordVar: WORD;
END_VAR
LD 1 (* 1 {INT} *)
ADD FirstOperand (* 11 {INT} *)
ST SecondOperand (* 11 {INT} *)
LT ThirdOperand (* Faux {BOOL} *)
AND WordVar (* Erreur: WordVar est de type WORD, pas BOOL comme CR *)
(* type de donnée non compatible *)
ST Exam43
4.3. Utilisation des fonctions ou blocs fonctionnels (FB):
• Appelle d’une fonction
Une fonction est appelée en IL en écrivant son nom. Les paramètres de cette fonction suivent séparé » par
des virgules. Les paramètres formels peuvent être aussi prendre les valeurs actuelles en ligne par ligne
utilisant le signe « := ». le premier paramètre de la fonction est le CR, il faut donc qu’il soit charger just avant
l’appel de la fonction. Le premier opérande dans l’appelle de la fonction est le deuxième paramètre, ainsi de
sutie.
Exemple : soit la fonction LIMIT ayant trois paramètres d’appel, MN, MX et IN, l’appel de cette fonction peut
se faire comme suit :
Utilisant les paramètres actuels Utilisant les paramètres formels Utilisant les paramètres formels
LD 1
Limit 2,3
LIMIT(
MN :=1
MX :=2
IN :=3
)
LIMIT(
MX :=2
MX :=1
IN :=3
)
Une fonction doit retourner au moins une sortie, dont le type est spécifié dans la déclaration de la fonction,
et qui sera sauvegarder dans CR.
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 10
Exemple d’appel et de déclaration de fonction :
Dans cet exemple on fait deux appels à UserFun. Dans le premierappel Funpar1 est égale à 10, dans le
deuxième il est égale) 60. A la fin des deux appels la valeur 110 est sauvegardée dans la variable Sum.
• Appelle d’un bloc fonction (FB)
Un FB peut être activé par l’opérateur CAL (ou CALC pour l’appel conditionnel, ou CALCN pour l’appel
conditionnel avec négation). La norme 61131-3 décrit trois méthodes pour passer les paramètres à un FB en
langage IL :
1- Utilisant un appel incluant la liste des instances actuelles des paramètres d’entrée et sortie entre
parenthèses.
2- Charger et sauvegarder les paramètres d’entrée avant l’appel de la FB
3- Appeler implicitement e utilisant les paramètres d’entrée comme opérateur. Cette méthode n’est
valable que pour les FB standard et non pour celle définies par l’utilisateur, etelle est rarement
utilisée en pratique.
Exemple : considérant le bloc suivant (temporisation) qui sera appelé par les trois méthodes :
(*Declarations des variables*)
VAR
Rel, Out: BOOL := 0; (* Release - Input; Output *)
Time1: TON; (* FB TON standard a les paramètres formels… *)
(* …IN, PT (entrées) et Q, ET (sorties *)
Value TIME; (* entrée –mise à 1 *)
END_VAR
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 11
(*methode 1*) (*donner les
paramètres*)
(* Appel: *)
CAL Time1 (
IN:=Rel,
PT:= t#500ms,
Q=>Out, (* Output p. 1 *)
ET=>VALUE (* Output p. 2 *)
)
(*methode 2*) LD t#500ms
ST Time1.PT
LD Rel
ST Time1.IN
CAL Time1 (*Utilisation des paramètres de
sortie*)
LD Time1.Q
ST Out
LD Time1.ET
ST Value
(*methode 3*) LD t#500ms
PT Time1
LD Rel
IN time1
5. Programmation en FBD (Logigramme)
Un programme (ou partie de programme) écrit en langage FBD (Function Block Diagram) comporte trois
parties : départ en fin du programme, partie déclaration et partie code.
La partie déclaration peut être textuelle ou graphique. La partie code est divisé en réseaux. Un réseau est
constitué de :
- Label du réseau
- Commantaire
- Graphique du réseau
Dans ce langage on utilise des fonctions logique comme ET, OU, NAND, NOR, XOR ou des combinaisons de
ces fonctions. L’utilisateur peut aussi définir ses propres fonctions o FB, comme pour le langage LD.
Exemple :
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 12
6. Programmation en texte structuré (ST)
Comme le IL, le langage ST est un langage textuel. Il est dit de haut niveau. Il offre un ensemble
d’instructions abstraites décrivant des fonctions plus ou moins complexes d’une façon condensée. Les
avantages du langage ST par rapport à celui de l’IL sont nombreuses, parmi lesquelles :
- Formulation très condensée des fonctions à réaliser.
- Construction claire du programme en blocs fonctionnels.
- Possibilité poussée de commande de processus.
Les inconvénients de ce langage sont liés principalement à leur compilation, puisque généralement les
programmes compilés sont plus longs et plus lents à l’exécution.
Expressions en ST
Un programme écrit en ST est formé par un ensemble d’expressions, séparé par un “;” (le retour à la ligne
est interprété comme un simple espace). Les commentaires sont de la forme (*Commentaire*) et peuvent
être dans l’expression même comme : A := B (* elongation *) + C (* temperature *);
Les expressions du langage sont résumé dans le tableau suivant :
Mot clé Description exemple
:= Affectation D :=10 ;
Appel de fonction FBName(
Par1:=10,
Par2:=20,
Par3:=>Res);
Return Retour Return ;
If Sélection IF d < e THEN f:=1;
ELSIF d=e THEN f:=2;
ELSE f:= 3;
END_IF;
Case Choix multiple CASE f OF
1: g:=11;
2: g:=12;
ELSE g:=FunName();
END_CASE;
For
Itération
FOR h:=1 TO 10 BY 2 DO
f[h/2] := h;
END_FOR;
While WHILE m > 1 DO
n := n / 2;
END_WHILE;
Repeat REPEAT
i := i*j;
UNTIL i < 10000
END_REPEAT;
Exit Fin de boucle exit;
N.B : différents opérateurs sont utilisé pour effectuer les opérations logiques et arithmétiques (&,and, or,
<,>, parenthèses,…) , comme par exemple pour le langage C, l’ordre de priorité est aussi semblable.
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 13
7. Programmation SFC (Grafcet)
Le langage SFC (Sequentiel Function Chart) de la norme CEI 61131-3 a été défini pour pouvoir diviser un
problème complexe en des unités plus petites et plus manipulable, et aussi pour décrire le flux de
commande entre ces unités. La séquence d’exécution de ces unités dépond de conditions statiques définies
par le programme et des conditions dynamiques définies par les E/S. Les unités peuvent elles même être
programmées utilisant les autres langages de programmations des API.
Le premier langage largement adopté décrivant un processus par un ensemble d’états et de conditions
transitoires est le Grafcet, qui est par la suite largement intégré dans le langage SFC.
Les processus pouvant être décris par un comportement séquentiels caractérisé par des étapes, sont
particulièrement adaptés pour que leurs fonctionnement soit décrit avec ce langage.
7.1. Rappel sur le grafcet :
Le GRAFCET (GRAphe Fonctionnel de Commande par Etape Transition) est un outil graphique qui permet la
description du fonctionnement du système automatisé au cours du temps d'une façon claire et sans
ambiguïté.
Un grafcet est un ensemble des étapes, des transitions et des liaisons orientées.
Etape : Une étape correspond à une phase durant laquelle on effectue une action
pendant une certaine durée (même faible mais jamais nulle). L'action doit être stable, c'est à
dire que l'on fait la même chose pendant toute la durée de l'étape.
A chaque étape on associe une ou plusieurs actions.
Une étape peut être active on effectue l'action qui lui est associée,
ou désactive.
Les actions peuvent :
 Commander des actions extérieures : Déplacement d’un chariot, mise en marche d’un moteur,
allumage d’un voyant…
 Effectuer des relations intérieures : lancer une temporisation, activer un autre cycle…
Transition : Une transition est une condition de passage d'une étape à une autre. Elle
définit la fin de l’étape qui la précède. A chaque transition on associe une condition logique
appelée réceptivité qui définit la condition de passage d'une étape à la suivante.
Les liaisons orientées
Les liaisons orientées indiquent les voies d’évolution du grafcet. Elles sont horizontales ou verticales. Le sens
général d’évolution du grafcet est du haut vers le bas. Des flèches doivent être utilisées dans le cas contraire
ou lorsqu’une meilleure compréhension pourra en résulter.
La figure suivante illustre les différentes composantes d’un grafcet :
3* 3
Etape
active
Etape inactive
2 Marche
avant
Montée
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 14
Règles d’évolution d’un GRAFCET
La modification de l'état de l'automatisme est appelée évolution, et est régie par 5 règles :
Règle 1 : Situation initiale : Un grafcet doit contenir au moins une étape qui soit active au début
du fonctionnement du système et à partir du quelle le grafcet va évoluer. Cette étape est
appelée étape initiale.
Règle 2 : Franchissement d'une transition : Une transition est franchissable si toutes les étapes
immédiatement précédentes sont actives et la réceptivité associée à cette transition est vraie. Si
une transition est franchissable, elle est forcément franchie.
Règle 3 : Activation et désactivation d'une étape :Le franchissement d'une transition entraîne
l'activation de toutes les étapes immédiatement suivantes et la désactivation de toutes les
étapes immédiatement précédentes.
Règle 4 : Plusieurs transitions simultanément franchissables sont simultanément franchies.
Règle 5 : Si au cours du fonctionnement d’une même étape doit être active et désactivée simultanément,
alors elle reste activée.
Différentes structures d'un grafcet
Un cycle d’automatisme peut être linéaire, ou ramifié. Les cycles simples ne comportent qu’une seule
séquence, c’est à dire un ensemble d’étapes les unes à la suite des autres.
Les cycles ramifiés comportent plusieurs séquences, le rôle des aiguillages dans un GRAFCET est soit de
sélectionner une séquence : Aiguillage en OU (on parle dans ce cas de cycle à plusieurs branches avec
sélection de séquence), soit d’exécuter simultanément plusieurs séquences : Aiguillage en ET (on parle dans
ce cas de cycle à plusieurs séquence à séquences simultanées).
Gracet à séquence unique : C’est un grafcet constitué d’une suite d’étapes et transitions sans ramifications.
Le cycle de poinçonnage traité précédemment en est un exemple.
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 15
Aiguillage en OU : Dans ce cas, le grafcet possède une structure à plusieurs branches à exécution exclusive
c'est-à-dire une seule séquence (branche) est exécuté à la fois lors d’un cycle.
D’autres structures d’aiguillage en OU sont aussi possibles comme le saut d’étapes ou la reprise de
séquence:
Aiguillage en Et (séquences simultanées) : C’est grafcet qui possède plusieurs séquences (branches) qui vont
se déroulées simultanément (en parallèle).
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 16
7.2. Identification des étapes et transissions en SFC
En SFC, une étape peut être identifiée graphiquement par un rectangle et un nom d’étape (ou double
rectangle pour l’étape initiale) ou textuellement via une déclaration :
Ou : Step Identifiant
(* Corps de l’étape pour décrire les actions *)
End_step
Une réceptivité associé à une transition peut être écrite en l’un des langages ST, LD ou FBD, mais pas e,IL
dans la version graphique du SFC.
Langage LD Langage ST Langage FBD
²
On peut aussi utiliser des connecteurs pour lier une réceptivité à une transition.
dans ce cas les langages ST et IL ne sont pas autorisés.
Identifiant
Initiale
Initial_step identifiant ;
(*Corps de l’étape *)
End_step
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 17
Une troisième méthode consiste à utiliser le nom de la réceptivité associé à la transition, écrite
indépendamment du diagramme SFC, les langages textuels peuvent être utilisés dans ce cas. Cette méthode
à l’avantage de pouvoir utiliser le nom de la réceptivité pour différentes transitions auxquelles sont associé
la même condition logique.
Exemple :
Déclaration de la réceptivité :
7.3. Description des actions :
Une action est utilisée pour décrire les instructions à exécuté en association avec une étape active. Ces
instructions peuvent être une action booléenne ou une séquence d’instructions programmée en LD, IL, FBD,
ST ou un sous-programme en SFC.
Un bloc action est constitué d’une action avec une condition d’exécution (appelée qualificateur d’action) et
un indicateur booléen variable (optionnel). Un bloc d’action peut être définit en version graphique ou
textuelle.
Qualificateur d’action Nom d’action Indicateur booléen variable
Instruction en LD, IL, ST ou SFC
Appel de la transition :
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 18
Exemples :
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 19
8. Types de données et déclaration des variables
8.1. Types de données
Types de données élémentaires :
Les types de données élémentaires spécifiés par la norme 61131-3, sont donnés par le tableau suivant :
Booléenne/string Entiers signés Entiers non signés Réels (FP) Temps, durée et
date
BOOL
BYTE
WORD
DWORD
LWORD
INT
SINT
DINT
LINT
UINT
USINT
UDINT
ULINT
REAL
LREAL
TIME
DATE
TIME_OF_DAY
DATE_AND_TIME
STRING
Avec : D= double, L= long, S = Short et U = unsigned.
Ces types ont caractérisé par leurs largeurs (nombres de bits) ainsi que par leur étendus (ou intervalles de
valeurs). Ceci ne s’applique pas aux types de temps et dates qui ont leurs propres spécifications.
Ces grandeurs sont résumées dans les tableaux suivants pour les différents types élémentaires.
Type de variable Bits Intervalle Initiale
BOOL 1 [0,1] 0
BYTE 8 [0,…,16#FF] 0
WORD 16 [0,…,16#FFFF] 0
DWORD 32 [0,…,16#FFFF FFFF] 0
LWORD 64 [0,…,16#FFFF FFFF FFFF FFFF] 0
SINT 8 [-127,…,128] 0
INT 16 [-32768,…,32767] 0
DINT 32 [-231
,…,231
-1] 0
LINT 64 [-263
,…,263
-1] 0
USINT 8 [0 … 255] 0
UINT 16 [0… 65535] 0
UDINT 32 [0… 231
-1] 0
ULINT 64 [0 …264
-1] 0
REAL 32 Spécifié par la norme IEEE 754-2008 0.0
LREAL 64 0.0
Type dtae Description Initiale
DATE Date (seulement) D#0001-01-01
TOD Temps durant la journée Tod#00 :00 :00
DT Temps et date Dt#0001-01-01-00 :00 :00
Time Durée t#0s
Types de données dérivées (ou définition de type)
L’utilisateur peut définir ses propres types de données à partir des types élémentaires. Ceci est appelé
dérivation ou définition de type. Ceci permet à l’utilisateur de définir les types les plus appropriés à ses
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 20
besoins. Ses définitions sont globales pour un projet api. La définition de type de variables utilise les mots
clés Type … END_TYPE.
Exemple :
TYPE
LongFloatNum : LREAL; (*derivation depuis le norme *)
FloatingPoint : LongFloatNum; (* derivation depuis un type définit par l’utilisateur *)
InitFloatNum : LREAL := 1.0; (* derivation avec une nouvelle valeur initiale *)
tControl : BOOL := TRUE; (* derivation avec nouvelle valeur initiale *)
END_TYPE
On peut aussi déclarer des type de données de type array (vecteur) ou structure.
Un array est une suite d’éléments de même type consécutifs en la mémoire et peuvent être accédé via un
index, alors que la structure est formée de sous-éléments qui peuvent être de type élémentaire ou dérivés.
Exemples:
1)
TYPE
Colour : (red, yellow, green); (* enumeration *)
Sensor : INT (-56..128); (* range *)
Measure : ARRAY [1..45] OF Sensor; (* array *)
TestBench : (* structure *)
STRUCT
Place : UINT; (* elementary data type *)
Light : Colour:= red; (* enumerated data type with initial value *)
Meas1 : Measure; (* array type *)
Meas2 : Measure; (* array type *)
Meas3 : Measure; (* array type *)
END_STRUCT;
END_TYPE
2) définition de structure relative au fonctionnement d’un moteur
TYPE
LimitedRevol : UINT (0..230);
TypLevel : (Idling, SpeedUp1, SpeedUp2, MaxPower);
MotorState :
STRUCT
Revolutions : LimitedRevol; (* limites *)
Level : TypLevel; (*type enumeration*)
MaxReached : BOOL; (*type elementaire *)
Failure : BOOL; (*type elementaire *)
Brake : BYTE; (*type elementaire *)
END_STRUCT;
END_TYPE
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 21
8.2. Déclaration de variable :
Forme générale de déclaration :
Les variables sont déclarées avec le type de donnée et des propriétés. Ces propriétés peuvent être définies
dans la déclaration utilisant :
- Les propriétés du type de données spécifiques.
- Informations (optionnelles) sur les valeurs initiales
- Informations (optionnelles) sur les valeurs limites
- type de variable du bloc de déclaration dans lequel la variable a été déclarée (avec
qualificateur/attribue)
Exemple :
VAR_OUTPUT RETAIN
Var1 : Byte := 10;
END_VAR
Attribues de types de variables :
La norme CEI 61131-3 définie des attribues (ou qualificateurs) avec lesquelles de propriétés supplémentaires
peuvent être ajoutées aux variables :
- RETAIN : variable retenu (peut être récupérer après coupure de courant grâce à la batterie).
- NON_RETAIN : non récupérable.
- CONSTANT : variable constante, ne peut pas être modifiée
- R_EDGE : à front montant
- F_EDGE : à front descendant
- READY_ONLY : protéger en écriture
- READ_WRITE : peut-être accédée pour l’écriture et la lecture
Type de variable
Nom de variable
Type de donnée
Valeur initiale
Fin du type de variable
Attribue
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 22
9. Fonctions standards
Les fonctions standards ont des variables d’entrée (paramètres formels) ainsi que la valeur retourné par la
fonction.
9.1. Fonctions de conversions de types:
Ces fonctions standards convertie la variable d’entrée en le type de donnée retournée par la fonction. Ces
fonctions sont résumées par la figure suivante :
9.2. Fonctions numériques :
Permettent de réaliser des fonctions mathématiques de base (abs, sqrt, Ln, Log, sin, cos, tan, asin,…)
9.3. Fonctions arithmétiques :
Permettent de réaliser des opérations arithmétiques (add, sub, mult, div)
Addition et multiplication :
Soustraction et division :
MOD :
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 23
9.4. Opérations sur les bits :
Permettent de manipuler des bit (shift droite/gauche, rotation droite/gauche : SHR,SHL, ROR et ROL)
9.5. Opérations bit à bit
Permettent de réaliser des opérations de type fonctions logique de base (not, and, or, xor)
9.6. Fonction sélection
Les fonctions MAX, MIN et LIMIT permettent de faire une sélection selon la valeur de l’entrée
Pour Max ou Min :
Pour limit :
Pour cette fonction : F :=MIN(MAX(IN,MN),MX) ;
9.7. Fonctions SEL et Mux :
Sel : sélection binaire.
F := IN0 si G=1 sinon F :=IN1
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 24
Mux : multiplexeur.
F :=INi, si K=i avec K=0…n-1
9.8. Fonctions pour variable de type date :
Dans ces figure (***)= ADD ou SUB
(***)=Mul ou Div
Conversion :
10. Fonctions blocs standard :
Bascules :
Bascule à set dominant Bascule à reset dominant
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 25
Détection de front :
Détection front montant Détection front descendant
Compteurs :
Trois types de compteurs : incrémentation (CTU), décrémentation (CTD) et incrémentation-décrémentation
(CTUD)
CTU CTD CTUD
FUNCTION_BLOCK CTU (* up counter *)
VAR_INPUT
CU : BOOL R_EDGE; (* CU front montant*)
R : BOOL;
PV : INT;
END_VAR
VAR_OUTPUT
Q : BOOL;
CV : INT;
END_VAR
IF R THEN (* reset compteur *)
CV := 0;
ELSIF CU AND ( CV < PV) THEN
CV := CV + 1; (* count up *)
ENDIF;
Q := (CV >= PV); (* limite attainte*)
END_FUNCTION_BLOCK
FUNCTION_BLOCK CTD (* down counter*)
VAR_INPUT
CD : BOOL R_EDGE;
LD : BOOL;
PV : INT;
END_VAR
VAR_OUTPUT
Q : BOOL;
CV : INT;
END_VAR
IF LD THEN (* reset compteur*)
CV := PV;
ELSIF CD AND ( CV > 0) THEN
CV := CV - 1; (* count down *)
ENDIF;
Q := (CV <= 0); (* zero reached *)
END_FUNCTION_BLOCK
FUNCTION_BLOCK CTUD
VAR_INPUT
CU : BOOL R_EDGE;
CD : BOOL R_EDGE;
R : BOOL;
LD : BOOL;
PV : INT;
END_VAR
VAR_OUTPUT
QU : BOOL;
QD : BOOL;
CV : INT;
END_VAR
IF R THEN (*reset counter(reset dominant)*)
CV := 0;
ELSIF LD THEN
CV := PV; (* valeur à compter value *)
ELSE
IF NOT (CU AND CD) THEN
IF CU AND ( CV < PV) THEN
CV := CV + 1; (* count up *)
ELSIF CD AND ( CV > 0) THEN
CV := CV - 1; (* count down *)
ENDIF;
ENDIF;
ENDIF;
QU := (CV >= PV); (* limit reached *)
QD := (CV <= 0); (* zero reached *)
END_FUNCTION_BLOCK
Temporisation :
Trois types de temporisations sont disponible TON (décompte T…0), TOF (comptage T…0) et à impulsion
*** = TON ou TOF ou TP
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
S. MARAOUI Page 26
Temporisation à impulsions TP
Le diagramme ci-après montre le comportement des sortie ET et Q selon les valeurs des entrées IN et PT
La fonction bloc standard TP fonctionne comme générateur d’impulsions, qui fournit une impulsion de
largeur fixe (TP) à la sortie Q lorsqu’un front montant est détecté sur l’entrée IN. Le temps qui s’est passé
peut être lu sur ET (Elapsed Time). Anoter que l’impulsion ne peut pas réinitialiser avant sa fin (voir
intervalle entre t2 et t2+PT).
Temporisation TON (On delay timer)
Le timer TON fournit la valeur de l’entrée IN à la sortie Q avec un délai lors qu’un front montant est détecté
sur IN. Si in est 0 un pour une dur2e plus courte que PT ? LE TIMER N4EST PAS D2MARRER.
TEMPORISATION TOF
Son fonctionnement est le contraire de celui de TON

Contenu connexe

Tendances

تمارين وحلول خاصة ببرمجة Ladder et instructions automates
تمارين وحلول خاصة ببرمجة Ladder et instructions automatesتمارين وحلول خاصة ببرمجة Ladder et instructions automates
تمارين وحلول خاصة ببرمجة Ladder et instructions automates
electrolouhla
 
Ppt mesure et analyse des vibrations
Ppt   mesure et analyse des vibrationsPpt   mesure et analyse des vibrations
Ppt mesure et analyse des vibrations
Maxime MIGNANWANDE
 
Document ressources analyse fonctionnelle
Document ressources analyse fonctionnelleDocument ressources analyse fonctionnelle
Document ressources analyse fonctionnelle
sedmorabet
 
2 correction des systèmes asservis
2 correction des systèmes asservis2 correction des systèmes asservis
2 correction des systèmes asservis
Rachid Lajouad
 
Chapitre 1 Représentation d'état des systèmes linéaires
Chapitre 1 Représentation d'état des systèmes linéaires Chapitre 1 Représentation d'état des systèmes linéaires
Chapitre 1 Représentation d'état des systèmes linéaires
sarah Benmerzouk
 
Instrumentation et régulation
Instrumentation et régulationInstrumentation et régulation
Instrumentation et régulation
Pierre Maréchal
 
Systeme embarque td1
Systeme embarque td1Systeme embarque td1
Systeme embarque td1
SinGuy
 
Cours Bus de communication et réseaux industriels. Chapitre 1 : introduction.
Cours Bus de communication et réseaux industriels. Chapitre 1 :  introduction.Cours Bus de communication et réseaux industriels. Chapitre 1 :  introduction.
Cours Bus de communication et réseaux industriels. Chapitre 1 : introduction.
Tarik Zakaria Benmerar
 
Cours api
Cours apiCours api
Soutenance projet LABVIEW
Soutenance projet LABVIEWSoutenance projet LABVIEW
Soutenance projet LABVIEW
sarah Benmerzouk
 
les-automates-programmables-industriels
les-automates-programmables-industrielsles-automates-programmables-industriels
les-automates-programmables-industriels
electrolouhla
 
1 introduction générale à l'automatique slideshare
1 introduction générale à l'automatique slideshare1 introduction générale à l'automatique slideshare
1 introduction générale à l'automatique slideshare
Kheddioui
 
Electronique de puissance
Electronique de puissanceElectronique de puissance
Electronique de puissance
badr zaimi
 
Regulation PI
Regulation PIRegulation PI
Regulation PI
Hamza Lagueneb
 
64378311-Traitement-Du-Signal.ppt
64378311-Traitement-Du-Signal.ppt64378311-Traitement-Du-Signal.ppt
64378311-Traitement-Du-Signal.ppt
docteurgyneco1
 
Les actionneurs-et-les-capteurs-www.cours-online.com
Les actionneurs-et-les-capteurs-www.cours-online.comLes actionneurs-et-les-capteurs-www.cours-online.com
Les actionneurs-et-les-capteurs-www.cours-online.com
morin moli
 
Ppt ines f
Ppt ines fPpt ines f
Ppt ines f
Inès IG
 
Variateur moteur à courant continu 04 quadrants
Variateur moteur à courant continu  04 quadrantsVariateur moteur à courant continu  04 quadrants
Variateur moteur à courant continu 04 quadrants
Boubakri Mohamed
 

Tendances (20)

تمارين وحلول خاصة ببرمجة Ladder et instructions automates
تمارين وحلول خاصة ببرمجة Ladder et instructions automatesتمارين وحلول خاصة ببرمجة Ladder et instructions automates
تمارين وحلول خاصة ببرمجة Ladder et instructions automates
 
Ppt mesure et analyse des vibrations
Ppt   mesure et analyse des vibrationsPpt   mesure et analyse des vibrations
Ppt mesure et analyse des vibrations
 
Document ressources analyse fonctionnelle
Document ressources analyse fonctionnelleDocument ressources analyse fonctionnelle
Document ressources analyse fonctionnelle
 
2 correction des systèmes asservis
2 correction des systèmes asservis2 correction des systèmes asservis
2 correction des systèmes asservis
 
Chapitre 1 Représentation d'état des systèmes linéaires
Chapitre 1 Représentation d'état des systèmes linéaires Chapitre 1 Représentation d'état des systèmes linéaires
Chapitre 1 Représentation d'état des systèmes linéaires
 
Instrumentation et régulation
Instrumentation et régulationInstrumentation et régulation
Instrumentation et régulation
 
Systeme embarque td1
Systeme embarque td1Systeme embarque td1
Systeme embarque td1
 
Cours Bus de communication et réseaux industriels. Chapitre 1 : introduction.
Cours Bus de communication et réseaux industriels. Chapitre 1 :  introduction.Cours Bus de communication et réseaux industriels. Chapitre 1 :  introduction.
Cours Bus de communication et réseaux industriels. Chapitre 1 : introduction.
 
Cours api
Cours apiCours api
Cours api
 
Soutenance projet LABVIEW
Soutenance projet LABVIEWSoutenance projet LABVIEW
Soutenance projet LABVIEW
 
les-automates-programmables-industriels
les-automates-programmables-industrielsles-automates-programmables-industriels
les-automates-programmables-industriels
 
1 introduction générale à l'automatique slideshare
1 introduction générale à l'automatique slideshare1 introduction générale à l'automatique slideshare
1 introduction générale à l'automatique slideshare
 
Electronique de puissance
Electronique de puissanceElectronique de puissance
Electronique de puissance
 
Regulation PI
Regulation PIRegulation PI
Regulation PI
 
64378311-Traitement-Du-Signal.ppt
64378311-Traitement-Du-Signal.ppt64378311-Traitement-Du-Signal.ppt
64378311-Traitement-Du-Signal.ppt
 
Les actionneurs-et-les-capteurs-www.cours-online.com
Les actionneurs-et-les-capteurs-www.cours-online.comLes actionneurs-et-les-capteurs-www.cours-online.com
Les actionneurs-et-les-capteurs-www.cours-online.com
 
La commande numerique
La commande numeriqueLa commande numerique
La commande numerique
 
C 80
C 80C 80
C 80
 
Ppt ines f
Ppt ines fPpt ines f
Ppt ines f
 
Variateur moteur à courant continu 04 quadrants
Variateur moteur à courant continu  04 quadrantsVariateur moteur à courant continu  04 quadrants
Variateur moteur à courant continu 04 quadrants
 

Similaire à API et Supervision industrielle

Fpga handout
Fpga handoutFpga handout
Fpga handout
assnad
 
Formation API iNiveau 1 sur les automates programmable industriels de derni...
Formation API iNiveau  1 sur les automates programmable industriels de  derni...Formation API iNiveau  1 sur les automates programmable industriels de  derni...
Formation API iNiveau 1 sur les automates programmable industriels de derni...
azilalfree
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le Microprocesseur
TheCrazyMan
 
Cours Systemes embarques.pptx
Cours Systemes embarques.pptxCours Systemes embarques.pptx
Cours Systemes embarques.pptx
SihemNasri3
 
Cours et travaux diriges sur l'automatisme et les systemes automatises
Cours et travaux diriges sur l'automatisme et les systemes automatisesCours et travaux diriges sur l'automatisme et les systemes automatises
Cours et travaux diriges sur l'automatisme et les systemes automatises
morin moli
 
Chapitre 2api- ladder architecteur2024.pdf
Chapitre 2api- ladder architecteur2024.pdfChapitre 2api- ladder architecteur2024.pdf
Chapitre 2api- ladder architecteur2024.pdf
hammardjamel0
 
Présentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HODPrésentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HOD
webmasterref68
 
ETUDE D UN SYSTEME NUMERIQUE.pdf
ETUDE D UN SYSTEME NUMERIQUE.pdfETUDE D UN SYSTEME NUMERIQUE.pdf
ETUDE D UN SYSTEME NUMERIQUE.pdf
ssuser457a8b
 
prog_reg.pptx
prog_reg.pptxprog_reg.pptx
prog_reg.pptx
MbarkiIsraa
 
Chapitre3.pptx
Chapitre3.pptxChapitre3.pptx
Chapitre3.pptx
Hachmi3
 
Automate programmable industriepar_www.cours-electromecanique.com_
Automate programmable industriepar_www.cours-electromecanique.com_Automate programmable industriepar_www.cours-electromecanique.com_
Automate programmable industriepar_www.cours-electromecanique.com_
med benchaib
 
Chapitrdfdfdfddddddddddddddddddddddddddddddddddddde3.pdf
Chapitrdfdfdfddddddddddddddddddddddddddddddddddddde3.pdfChapitrdfdfdfddddddddddddddddddddddddddddddddddddde3.pdf
Chapitrdfdfdfddddddddddddddddddddddddddddddddddddde3.pdf
AhmedJguirim
 
Arduino cottenceau1112
Arduino cottenceau1112Arduino cottenceau1112
Arduino cottenceau1112
Hafid Moujane
 
Architecture et programmation des circuits CPLD et des FPGA
Architecture et programmation des circuits CPLD et des FPGAArchitecture et programmation des circuits CPLD et des FPGA
Architecture et programmation des circuits CPLD et des FPGA
Chiheb Ouaghlani
 
Automates Programmables Industriels (API).pdf
Automates Programmables Industriels (API).pdfAutomates Programmables Industriels (API).pdf
Automates Programmables Industriels (API).pdf
MENNANIZinedine
 
Généralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasicGénéralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasic
morin moli
 
Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32
Hajer Dahech
 
COpenCVLabjack.ppt
COpenCVLabjack.pptCOpenCVLabjack.ppt
COpenCVLabjack.ppt
ZohraCHANNOUF1
 
API: Utilisation de l'automate programmable Industruel
API: Utilisation de l'automate programmable IndustruelAPI: Utilisation de l'automate programmable Industruel
API: Utilisation de l'automate programmable Industruel
Mohamed Amine Bahhane
 

Similaire à API et Supervision industrielle (20)

Fpga handout
Fpga handoutFpga handout
Fpga handout
 
Formation API iNiveau 1 sur les automates programmable industriels de derni...
Formation API iNiveau  1 sur les automates programmable industriels de  derni...Formation API iNiveau  1 sur les automates programmable industriels de  derni...
Formation API iNiveau 1 sur les automates programmable industriels de derni...
 
Exposé Le Microprocesseur
Exposé   Le MicroprocesseurExposé   Le Microprocesseur
Exposé Le Microprocesseur
 
Cours Systemes embarques.pptx
Cours Systemes embarques.pptxCours Systemes embarques.pptx
Cours Systemes embarques.pptx
 
Cours et travaux diriges sur l'automatisme et les systemes automatises
Cours et travaux diriges sur l'automatisme et les systemes automatisesCours et travaux diriges sur l'automatisme et les systemes automatises
Cours et travaux diriges sur l'automatisme et les systemes automatises
 
Chapitre 2api- ladder architecteur2024.pdf
Chapitre 2api- ladder architecteur2024.pdfChapitre 2api- ladder architecteur2024.pdf
Chapitre 2api- ladder architecteur2024.pdf
 
Présentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HODPrésentation Arduino par Christian, F5HOD
Présentation Arduino par Christian, F5HOD
 
ETUDE D UN SYSTEME NUMERIQUE.pdf
ETUDE D UN SYSTEME NUMERIQUE.pdfETUDE D UN SYSTEME NUMERIQUE.pdf
ETUDE D UN SYSTEME NUMERIQUE.pdf
 
prog_reg.pptx
prog_reg.pptxprog_reg.pptx
prog_reg.pptx
 
Chapitre3.pptx
Chapitre3.pptxChapitre3.pptx
Chapitre3.pptx
 
Automate programmable industriepar_www.cours-electromecanique.com_
Automate programmable industriepar_www.cours-electromecanique.com_Automate programmable industriepar_www.cours-electromecanique.com_
Automate programmable industriepar_www.cours-electromecanique.com_
 
Chapitrdfdfdfddddddddddddddddddddddddddddddddddddde3.pdf
Chapitrdfdfdfddddddddddddddddddddddddddddddddddddde3.pdfChapitrdfdfdfddddddddddddddddddddddddddddddddddddde3.pdf
Chapitrdfdfdfddddddddddddddddddddddddddddddddddddde3.pdf
 
Arduino cottenceau1112
Arduino cottenceau1112Arduino cottenceau1112
Arduino cottenceau1112
 
Architecture et programmation des circuits CPLD et des FPGA
Architecture et programmation des circuits CPLD et des FPGAArchitecture et programmation des circuits CPLD et des FPGA
Architecture et programmation des circuits CPLD et des FPGA
 
Automates Programmables Industriels (API).pdf
Automates Programmables Industriels (API).pdfAutomates Programmables Industriels (API).pdf
Automates Programmables Industriels (API).pdf
 
Généralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasicGénéralités sur les microcontrôleurs et PicBasic
Généralités sur les microcontrôleurs et PicBasic
 
Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32Généralités sur les périphériques du STM32
Généralités sur les périphériques du STM32
 
Mini projet 3t2i se
Mini projet 3t2i seMini projet 3t2i se
Mini projet 3t2i se
 
COpenCVLabjack.ppt
COpenCVLabjack.pptCOpenCVLabjack.ppt
COpenCVLabjack.ppt
 
API: Utilisation de l'automate programmable Industruel
API: Utilisation de l'automate programmable IndustruelAPI: Utilisation de l'automate programmable Industruel
API: Utilisation de l'automate programmable Industruel
 

Dernier

Auguste Herbin.pptx Peintre français
Auguste   Herbin.pptx Peintre   françaisAuguste   Herbin.pptx Peintre   français
Auguste Herbin.pptx Peintre français
Txaruka
 
1e Espaces productifs 2024.Espaces productif
1e Espaces productifs 2024.Espaces productif1e Espaces productifs 2024.Espaces productif
1e Espaces productifs 2024.Espaces productif
NadineHG
 
GUIDE POUR L’EVRAS BALISES ET APPRENTISSAGES
GUIDE POUR L’EVRAS BALISES ET APPRENTISSAGESGUIDE POUR L’EVRAS BALISES ET APPRENTISSAGES
GUIDE POUR L’EVRAS BALISES ET APPRENTISSAGES
DjibrilToure5
 
Droits et devoirs, éthique universitaire..
Droits et devoirs, éthique universitaire..Droits et devoirs, éthique universitaire..
Droits et devoirs, éthique universitaire..
TarikBouchala
 
1e geo metropolisation metropolisation x
1e geo metropolisation metropolisation x1e geo metropolisation metropolisation x
1e geo metropolisation metropolisation x
NadineHG
 
La Révolution Bénédictine Casadéenne du Livradois-Forez: De Charlemagne à Fra...
La Révolution Bénédictine Casadéenne du Livradois-Forez: De Charlemagne à Fra...La Révolution Bénédictine Casadéenne du Livradois-Forez: De Charlemagne à Fra...
La Révolution Bénédictine Casadéenne du Livradois-Forez: De Charlemagne à Fra...
Editions La Dondaine
 
Burkina Faso libraries newsletter for June 2024
Burkina Faso libraries newsletter for June 2024Burkina Faso libraries newsletter for June 2024
Burkina Faso libraries newsletter for June 2024
Friends of African Village Libraries
 
Zineb Mekouar.pptx Écrivaine marocaine
Zineb Mekouar.pptx   Écrivaine  marocaineZineb Mekouar.pptx   Écrivaine  marocaine
Zineb Mekouar.pptx Écrivaine marocaine
Txaruka
 
MÉDIATION ORALE - MON NOUVEL APPARTEMENT.pdf
MÉDIATION ORALE - MON NOUVEL APPARTEMENT.pdfMÉDIATION ORALE - MON NOUVEL APPARTEMENT.pdf
MÉDIATION ORALE - MON NOUVEL APPARTEMENT.pdf
lebaobabbleu
 
A1- Compréhension orale - présentations.pdf
A1- Compréhension orale - présentations.pdfA1- Compréhension orale - présentations.pdf
A1- Compréhension orale - présentations.pdf
lebaobabbleu
 

Dernier (10)

Auguste Herbin.pptx Peintre français
Auguste   Herbin.pptx Peintre   françaisAuguste   Herbin.pptx Peintre   français
Auguste Herbin.pptx Peintre français
 
1e Espaces productifs 2024.Espaces productif
1e Espaces productifs 2024.Espaces productif1e Espaces productifs 2024.Espaces productif
1e Espaces productifs 2024.Espaces productif
 
GUIDE POUR L’EVRAS BALISES ET APPRENTISSAGES
GUIDE POUR L’EVRAS BALISES ET APPRENTISSAGESGUIDE POUR L’EVRAS BALISES ET APPRENTISSAGES
GUIDE POUR L’EVRAS BALISES ET APPRENTISSAGES
 
Droits et devoirs, éthique universitaire..
Droits et devoirs, éthique universitaire..Droits et devoirs, éthique universitaire..
Droits et devoirs, éthique universitaire..
 
1e geo metropolisation metropolisation x
1e geo metropolisation metropolisation x1e geo metropolisation metropolisation x
1e geo metropolisation metropolisation x
 
La Révolution Bénédictine Casadéenne du Livradois-Forez: De Charlemagne à Fra...
La Révolution Bénédictine Casadéenne du Livradois-Forez: De Charlemagne à Fra...La Révolution Bénédictine Casadéenne du Livradois-Forez: De Charlemagne à Fra...
La Révolution Bénédictine Casadéenne du Livradois-Forez: De Charlemagne à Fra...
 
Burkina Faso libraries newsletter for June 2024
Burkina Faso libraries newsletter for June 2024Burkina Faso libraries newsletter for June 2024
Burkina Faso libraries newsletter for June 2024
 
Zineb Mekouar.pptx Écrivaine marocaine
Zineb Mekouar.pptx   Écrivaine  marocaineZineb Mekouar.pptx   Écrivaine  marocaine
Zineb Mekouar.pptx Écrivaine marocaine
 
MÉDIATION ORALE - MON NOUVEL APPARTEMENT.pdf
MÉDIATION ORALE - MON NOUVEL APPARTEMENT.pdfMÉDIATION ORALE - MON NOUVEL APPARTEMENT.pdf
MÉDIATION ORALE - MON NOUVEL APPARTEMENT.pdf
 
A1- Compréhension orale - présentations.pdf
A1- Compréhension orale - présentations.pdfA1- Compréhension orale - présentations.pdf
A1- Compréhension orale - présentations.pdf
 

API et Supervision industrielle

  • 1. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 1 Chapitre 2 Programmation des API 1. Introduction Les langages de programmation utilisée pour les API ont évolué depuis l’introduction des automates à la fin des années 60. Actuellement la norme CEI 61131-3 (la partie 3 sur 8 de la norme noté précédemment 1131, apparu en 1993 et en deuxième édition en 2003 et spécifiant les langages de programmation), spécifie 5 langages qui sont : • langages graphiques : o langage LADDER (à relais), LD o Boîtes fonctionnelle, ou Functional Block Diagram (FBD). • Langages textuel : o Texte structuré (ST) o Liste d’instructions(IL) • Diagramme de fonctions séquentielles (Sequential Chart function, SFC) : o Version graphique (proche du grafcet) o Version textuelle. Le cycle de fonctionnement d’un automate peut être simplifié comme suit : Lecture des entrées et sauvegarde en mémoire Lecture des entrées de la mémoire, exécution des instructions du programme et mémorisations des sorties Mise à jour des sorties
  • 2. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 2 Le temps d’un cycle dépend de la taille du programme à exécuté et la vitesse du processeur avec une moyenne de 2-5ms/K de programme. Le scan du programme limite les vitesses (fréquences) des signaux auxquels un api peut réagir. La figure suivante illustre le cas où l’automate compte le nombre d’impulsions d’un signal : le premier est moins rapide que la vitesse de scan du programme, le comptage est correct. Le deuxième signal est plus rapide et l’automate peut rater quelques impulsions. Le troisième est encore plus rapide et l’automate peut rater plusieurs impulsions. Pour que la lecture des entrées se fait correctement, théoriquement il faut que le temps d’une impulsion en entrée dure plus que 1/(2*période de scan). Par exemple si le temps de scan est de 20ms, l’automate peut lire des impulsions d’une largeur de 1/(2*0.01)=0.02s soit une fréquence de 50Hz. En pratique, d’autres facteurs, tel que le filtrage sur les entrées, ont un effet considérable sur la vitesse de lecture et doivent être pris en compte. Un autre problème moins évident peut apparaitre lorsque le changement d’une entrée parvient juste après sa lecture, ce qui va retarder l’activation (ou désactivation) de la sortie concernée un cycle (voir figure) Entrée processus Sortie processus Scan du programme Lecture de l’entrée Mise à jour de la sortie Entrée processus Sortie processus Scan du programme Lecture de l’entrée Mise à jour de la sortie Scan du programme Par exemple considérant un processus ou la matière d’ouvre est déplacée avec la vitesse de 15m/s (par exemple barre de fer de construction), et qui doit être découpé sous la commande d’un api avec un temps de scan de 30ms, après un signal d’une photocellule. La marge d’erreur est donc de 15000*0.03=450mm. Les constructeurs peuvent proposer des cartes spéciales (avec leur propre *P) pour traiter ces signaux rapides. Signal 1 Signal 2 Signal 3
  • 3. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 3 2. Identification des entrées/sorties et bit d’adresses : 2.1. Rangés, cartes et signaux Le programme d’API concerne les connections avec le processus et les modules des entrées et sorties doivent être identifié dans le programme. Les constructeurs ont différentes façon d’identifier ces E/S (voir exemple figure ci-dessous) Notation: (a) Mitsubishi, (b) Siemens, (c) Allen-Bradley, and (d) Télémecanique. Généralement les apis contiennent des rangés (racks) locales ou éloigné. Chacune contient des cartes (ou modules) d’entrées sorties avec 8, 16 ou 32 connections. L’idée est d’adresser ces E/s en utilisant la notion de rack/module/bit. Exemple 1 Allen Bradley PLC-5: L’Allen Bradley PLC-5 peut avoir jusqu’à 8 racks dans sa version 5/25. Le rack 0 contient automatiquement le processeur, et l’utilisateur peut attribuer des adresses dans les autres racks (de 1 à 7) en positionnant des switchers. Ses racks (outre le n°0) se connectent au processeur via un câble de communication série des E/S lointaines. Il y a trois façons avec laquelle un rack peut être configuré pour ce constructeur mais seule la plus simple est présentée. Chaque rack contient une carte à 16 voie d’entrées et une carte à 16 voie de sortie, ou bien deux cartes de 8 voies généralement (mais pas nécessairement du même type. Dans la figure suivante par exemple le slot 1 contient une carte d’entrée à 16 voies et une carte de sortie à 16 voies. Le slot 2 contient 2 cartes de sorties de 8 voies chacune.
  • 4. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 4 L’adressage des entrées est comme suit : I : Rack Slot/bit, où bit est sur deux digits. Allen Bradley utilise un système d’adressage octal pour les bits, donc les nombres autorisés sont0-7 et 10-17. Par exemple l’adresse I :27/14 désigne l’entrée 14 sur le slot 7 dans le rack 2. Les sorties sont adressées de manière analogue : O:Rack Slot/Bit. Donc l’adresse O:35/06 est la sortie 6 sur le slot 5 du rack 2. Exemple 2 Siemens SIMATIC S5 : Les E/s numérique des API de Siemens sont organisé en groupes de 8 bits (appelé Byte).un signal est identifié utilisant son numéro de bit (0-7)et son numéro de byte (0-127). Les entrées ont noté I<byte>.<bit>, et les sorties Q<byte>.<bit>, exemple l’entrée I9.4 et la sortie Q52.7. Comme pour l’Allen Bradley, siemens utilise des slots pour les cartes dans un ou plusieurs racks. Les cartes sont disponibles en 16 bits (2-ytes) ou 32 bits (4-bytes). Un système peut être construit à partir de racks locaux connecté via un câble de bus parallèle, des racks éloignés avec une connexion série. Les racks locaux sont plus rapides et peuvent résoudre quelques problèmes liés aux processus rapides et aux connections séries, mais ne peuvent pas être qu’à quelques mètres de distance du processeur. La forme la plus simple d’adressage est les slots fixes (figure ci-dessous). Quatre bytes sont attribués séquentiellement à chaque slot (0-3 pour le premier slot, 4-7 pour le deuxième,…). L’entrée I2.4 est donc le bit d’entrée numéro 4 du premier byte de la carte dans le slot 3 du premier rack. L’utilisateur a la possibilité d’affecter l’adressage par byte (appelé adressage de slots variable). Le numéro du premier byte et le nombre de bytes (2 pour les cartes à 16 bites et 4 pour les cartes à 32 bites) peuvent être fixé pour chaque slot indépendamment avec des switchers dans le module adaptateur pour chaque rack. N’importe quelle combinaison est possible, toutefois il est recommandé d’utiliser une numérotation séquentielle (figure suivante).
  • 5. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 5 A noter finalement que siemens utilise différentes notation dans différents pays avec des terminaux de programmation multilingues (par exemple E pour l’entrée et a pour la sortie en Allemagne). 2.2. Bits de sauvegarde internes. Comme pour les entrées et sorties, l’automate nécessite de sauvegarder des signaux internes de données concernant par exemple le bon fonctionnement du système, mise en attente, défaillance détecté, … L’automate permet d’alloué des bits internes pour ces signaux. Ces bits ont des appellations qui varient d’un constructeur à un autre, par exemple relais auxiliaires pour Mitsubishi, drapeaux (flags) pour Siemens, bit de sauvegarde pour Allen Bradley…, de même la notation varie, Mitsubishi utilise Mnnn, avec nnn est un nombre dans une zone prédéfinie de M100 à M377 (octal), Siemens utilise la notation FByte.bit (e.g. F27.06), pour le PLC-5 de Allen Bradley, le bit de sauvegarde (bit storage) est noté B3/n où n est le numéro du signal (e.g. B3/100). Dans cette notation B est pour Bit storage, 3 vient du fait que le PLC-5 maintient les donnée en fichiers (fichier 3 pour ces bits, fichier 4 pour les timers (T4), fichier 5 pour les compteurs (C5), …). 3. Programmation en langage Ladder : Le langage Ladder (LD) est issu du domaine des relais électromécaniques et décrit le flux d’énergie à travers un réseau d’une unité organisé du programme, de gauche à droite. Initialement ce langage est destiné à commander des signaux booléens. Ces réseaux sont organisé du haut vers le bas sauf spécification de l’utilisateur. En LD l’évaluation du réseau dépend de sa forme graphique (noms des variables et types de connections). Les éléments sont connecté soit en série soit e parallèle. 3.1. Eléments de base d’un réseau Ladder Un réseau LD consiste en les éléments suivants : - Connections - Contacts et bobines. - Eléments graphiques pour contrôler l’exécution de la séquence (sauts) - Eléments graphiques pour appelés des fonctions blocs (FB) - Connecteurs. Le tableau suivant donne les principaux éléments (contacts et bobines) d’un réseau LD : Objet graphique nom -| |- Contact normalement ouvert -|/|- Contact normalement fermé -|P|- Contact fermé au front montant -|N|- Contact fermé au front descendant -( )- Bobine normalement ouverte
  • 6. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 6 -( / )- Bobine normalement fermée -( S )- (ou –( L)- Bobine Latch (maintenu à 1 une fois actionné -( R )- (ou –( U )- Bobine Reset (remise à 0 de la bobine latch) -( P )- Bobine active au front montant de son entrée -( N )- Bobine active au front descendant de son entrée |-<return> Retour unconditionnel (vers le sous-programme appelant) |-cond-<return> Retour conditionnel |->>Label Saut inconditionnel |-cond->>Label Saut conditionnel 3.2. Appelle de fonctions ou blocs fonctionnels (FB): Les fonctions et les FB, représentés par des rectangles, peuvent avoir plusieurs paramètres et variables d’entrées et de sorties. Les fonctions peuvent avoir un ou plusieurs paramètres à retourner. Les noms formels des paramètres d’entrées et de sortie doivent apparaître à l’intérieur du bloc. Le paramètre approprié ‘actuel’ (variables, constantes sont écrit en dehors du bloc, sur le fils adjacent au paramètre formel, il est aussi possible de connecté les entrées/sorties d’un bloc avec celle d’un autre bloc. Les paramètres d’une (FB) peuvent être des donnée de n’importe quel type, mais au moins une seule entrée et une seule sortie doivent être de type booléen et doivent avoir des connections direct ou indirect aux lignes de puissance gauche et droite. Une FB standard à une sortie Q pour répondre à cette exigence. Les fonctions doivent avoir un paramètre d’entrée et un de sortie spéciales appelé EN et ENO respectivement, qui contrôlent l’exécution de la fonction. Si EN est évalué à faux (= 0), la fonction n’est pas exécutée et ENO est aussi mis à 0. Il est possible d’utiliser ENO comme un paramètre d’erreur. Les autres états pour lesquelles ENO est 0, sont déterminés par le constructeur et doivent être documentés.
  • 7. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 7 3.3. Variables en boucle de retour (feedback) Si une variable est utilisé pour sauvegarder une valeur (sortie) dans un cycle et lue comme une entrée dans le cycle suivant dans le même réseau, elle est appelée variable en feedback Seules les connections implicites en feedback (en répétant le nom de la variable) sont possible en LD et donc pas de connexion explicite (de droite vers la gauche) ne sont autorisées. Si un FB et une variable en feedback font partie du même réseau, ceci peut conduire à des comportements différents selon les systèmes d’API. Considérant par exemple le réseau donné par la figure suivante : Dans cette exemple il n’est pas claire si le contact var2 sera attribué la valeur du paramètre FBname O2 du cycle d’automate en cours ou celle du cycle précèdent. La norme 61131-3 ne discute pas en détails cette ambiguïté. Pour résoudre ce problème le FB doit être considéré comme un réseau LD à part. S’il y a besoin d’utiliser des parties du réseau pour prédéfinir un paramètre d’entrée, ou d’utiliser un paramètre de sortie dans le même réseau, alors cette variable ne doit pas être affectée à un contact ou une bobine dans le même réseau. 4. Programmation en liste d’instruction (IL) 4.1. Syntaxe Le langage IL est un langage simple, semblable au langage assembleur, largement utilisé pour la programmation de l’api et souvent comme langage intermédiaire vers lequel les programmes écrits en autres langages sont traduits.
  • 8. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 8 Un programme en IL se présente comme une série d’instructions avec une instruction par ligne. Chaque instruction consiste en un opérateur suivit par un ou plusieurs opérandes. D’une façon générale, une instruction en IL a la syntaxe suivante Label : Opérateur/Fonction Opérande (list) (*Commentaire*) par exemple : LD A Qui indique que l’opérande A est à charger, ou bien : OUT Q Les opérandes utilise un code mnémonique qui varie de constructeur à un autre, bien que la norme indique les instructions à utiliser (et qui sont largement adopté), le tableau suivant donne quelques instructions selon cette norme et son équivalent pour certain constructeurs : CEI 61131-3 Mitsubishi Omron Siemens Description LD LD LD A Charger l’opérande dans le registre résultat LDN LDI LD NOT AN Charger le complément de l’opérande AND AND AND A ET logique ANDN ANI AND NOT AN ET logique avec le complément de l’opérande OR OR OR O OU logique ORN ORI OR NOT ON Ou logique avec le complément de l’opérande ST OUT OUT = Sauvegarder le registre de résultat dans l’opérande Exemple 1 : programmation de l’équation .Q A B= utilisant la notation de Siemens : A A (* charger A*) AN B (*Charger le complément de B*) = Q (*sauvegarderle résultat en Q*) Exemple 2: A( A I0.0 AN I1.1 O( AN I0.0 A I0.1 ) = Q2.0
  • 9. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 9 4.2. Accumulateur universel (Résultat courant) Les langages assembleurs standards se basent sur une architecture matérielle dans laquelle un accumulateur est utilisé pour sauvegarder les résultats des différentes opérations effectuées par le processeur. Le langage IL offre cette possibilité d’accumulateur appelé résultat courant (Current Result, CR). Toutefois le CR n’a pas un nombre de bits fixes comme pour un accumulateur, le compilateur IL assure qu’un accumulateur virtuel (incluant une pile accumulateur) est toujours disponible pour n’importe quelle largeur de mémoire. Le nombre de bits dépond de type de donnée de l’opérande, et elle varie d’instruction à autre pour s’adapter à l’instruction la plus récente. Les types de données dans le CR peuvent être : - élémentaires - Composées (structure, array, …) - Fonction bloc. Exemple : VAR_INPUT FirstOperand: INT; END_VAR VAR SecondOperand, ThirdOperand: INT := 10; WordVar: WORD; END_VAR LD 1 (* 1 {INT} *) ADD FirstOperand (* 11 {INT} *) ST SecondOperand (* 11 {INT} *) LT ThirdOperand (* Faux {BOOL} *) AND WordVar (* Erreur: WordVar est de type WORD, pas BOOL comme CR *) (* type de donnée non compatible *) ST Exam43 4.3. Utilisation des fonctions ou blocs fonctionnels (FB): • Appelle d’une fonction Une fonction est appelée en IL en écrivant son nom. Les paramètres de cette fonction suivent séparé » par des virgules. Les paramètres formels peuvent être aussi prendre les valeurs actuelles en ligne par ligne utilisant le signe « := ». le premier paramètre de la fonction est le CR, il faut donc qu’il soit charger just avant l’appel de la fonction. Le premier opérande dans l’appelle de la fonction est le deuxième paramètre, ainsi de sutie. Exemple : soit la fonction LIMIT ayant trois paramètres d’appel, MN, MX et IN, l’appel de cette fonction peut se faire comme suit : Utilisant les paramètres actuels Utilisant les paramètres formels Utilisant les paramètres formels LD 1 Limit 2,3 LIMIT( MN :=1 MX :=2 IN :=3 ) LIMIT( MX :=2 MX :=1 IN :=3 ) Une fonction doit retourner au moins une sortie, dont le type est spécifié dans la déclaration de la fonction, et qui sera sauvegarder dans CR.
  • 10. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 10 Exemple d’appel et de déclaration de fonction : Dans cet exemple on fait deux appels à UserFun. Dans le premierappel Funpar1 est égale à 10, dans le deuxième il est égale) 60. A la fin des deux appels la valeur 110 est sauvegardée dans la variable Sum. • Appelle d’un bloc fonction (FB) Un FB peut être activé par l’opérateur CAL (ou CALC pour l’appel conditionnel, ou CALCN pour l’appel conditionnel avec négation). La norme 61131-3 décrit trois méthodes pour passer les paramètres à un FB en langage IL : 1- Utilisant un appel incluant la liste des instances actuelles des paramètres d’entrée et sortie entre parenthèses. 2- Charger et sauvegarder les paramètres d’entrée avant l’appel de la FB 3- Appeler implicitement e utilisant les paramètres d’entrée comme opérateur. Cette méthode n’est valable que pour les FB standard et non pour celle définies par l’utilisateur, etelle est rarement utilisée en pratique. Exemple : considérant le bloc suivant (temporisation) qui sera appelé par les trois méthodes : (*Declarations des variables*) VAR Rel, Out: BOOL := 0; (* Release - Input; Output *) Time1: TON; (* FB TON standard a les paramètres formels… *) (* …IN, PT (entrées) et Q, ET (sorties *) Value TIME; (* entrée –mise à 1 *) END_VAR
  • 11. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 11 (*methode 1*) (*donner les paramètres*) (* Appel: *) CAL Time1 ( IN:=Rel, PT:= t#500ms, Q=>Out, (* Output p. 1 *) ET=>VALUE (* Output p. 2 *) ) (*methode 2*) LD t#500ms ST Time1.PT LD Rel ST Time1.IN CAL Time1 (*Utilisation des paramètres de sortie*) LD Time1.Q ST Out LD Time1.ET ST Value (*methode 3*) LD t#500ms PT Time1 LD Rel IN time1 5. Programmation en FBD (Logigramme) Un programme (ou partie de programme) écrit en langage FBD (Function Block Diagram) comporte trois parties : départ en fin du programme, partie déclaration et partie code. La partie déclaration peut être textuelle ou graphique. La partie code est divisé en réseaux. Un réseau est constitué de : - Label du réseau - Commantaire - Graphique du réseau Dans ce langage on utilise des fonctions logique comme ET, OU, NAND, NOR, XOR ou des combinaisons de ces fonctions. L’utilisateur peut aussi définir ses propres fonctions o FB, comme pour le langage LD. Exemple :
  • 12. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 12 6. Programmation en texte structuré (ST) Comme le IL, le langage ST est un langage textuel. Il est dit de haut niveau. Il offre un ensemble d’instructions abstraites décrivant des fonctions plus ou moins complexes d’une façon condensée. Les avantages du langage ST par rapport à celui de l’IL sont nombreuses, parmi lesquelles : - Formulation très condensée des fonctions à réaliser. - Construction claire du programme en blocs fonctionnels. - Possibilité poussée de commande de processus. Les inconvénients de ce langage sont liés principalement à leur compilation, puisque généralement les programmes compilés sont plus longs et plus lents à l’exécution. Expressions en ST Un programme écrit en ST est formé par un ensemble d’expressions, séparé par un “;” (le retour à la ligne est interprété comme un simple espace). Les commentaires sont de la forme (*Commentaire*) et peuvent être dans l’expression même comme : A := B (* elongation *) + C (* temperature *); Les expressions du langage sont résumé dans le tableau suivant : Mot clé Description exemple := Affectation D :=10 ; Appel de fonction FBName( Par1:=10, Par2:=20, Par3:=>Res); Return Retour Return ; If Sélection IF d < e THEN f:=1; ELSIF d=e THEN f:=2; ELSE f:= 3; END_IF; Case Choix multiple CASE f OF 1: g:=11; 2: g:=12; ELSE g:=FunName(); END_CASE; For Itération FOR h:=1 TO 10 BY 2 DO f[h/2] := h; END_FOR; While WHILE m > 1 DO n := n / 2; END_WHILE; Repeat REPEAT i := i*j; UNTIL i < 10000 END_REPEAT; Exit Fin de boucle exit; N.B : différents opérateurs sont utilisé pour effectuer les opérations logiques et arithmétiques (&,and, or, <,>, parenthèses,…) , comme par exemple pour le langage C, l’ordre de priorité est aussi semblable.
  • 13. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 13 7. Programmation SFC (Grafcet) Le langage SFC (Sequentiel Function Chart) de la norme CEI 61131-3 a été défini pour pouvoir diviser un problème complexe en des unités plus petites et plus manipulable, et aussi pour décrire le flux de commande entre ces unités. La séquence d’exécution de ces unités dépond de conditions statiques définies par le programme et des conditions dynamiques définies par les E/S. Les unités peuvent elles même être programmées utilisant les autres langages de programmations des API. Le premier langage largement adopté décrivant un processus par un ensemble d’états et de conditions transitoires est le Grafcet, qui est par la suite largement intégré dans le langage SFC. Les processus pouvant être décris par un comportement séquentiels caractérisé par des étapes, sont particulièrement adaptés pour que leurs fonctionnement soit décrit avec ce langage. 7.1. Rappel sur le grafcet : Le GRAFCET (GRAphe Fonctionnel de Commande par Etape Transition) est un outil graphique qui permet la description du fonctionnement du système automatisé au cours du temps d'une façon claire et sans ambiguïté. Un grafcet est un ensemble des étapes, des transitions et des liaisons orientées. Etape : Une étape correspond à une phase durant laquelle on effectue une action pendant une certaine durée (même faible mais jamais nulle). L'action doit être stable, c'est à dire que l'on fait la même chose pendant toute la durée de l'étape. A chaque étape on associe une ou plusieurs actions. Une étape peut être active on effectue l'action qui lui est associée, ou désactive. Les actions peuvent :  Commander des actions extérieures : Déplacement d’un chariot, mise en marche d’un moteur, allumage d’un voyant…  Effectuer des relations intérieures : lancer une temporisation, activer un autre cycle… Transition : Une transition est une condition de passage d'une étape à une autre. Elle définit la fin de l’étape qui la précède. A chaque transition on associe une condition logique appelée réceptivité qui définit la condition de passage d'une étape à la suivante. Les liaisons orientées Les liaisons orientées indiquent les voies d’évolution du grafcet. Elles sont horizontales ou verticales. Le sens général d’évolution du grafcet est du haut vers le bas. Des flèches doivent être utilisées dans le cas contraire ou lorsqu’une meilleure compréhension pourra en résulter. La figure suivante illustre les différentes composantes d’un grafcet : 3* 3 Etape active Etape inactive 2 Marche avant Montée
  • 14. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 14 Règles d’évolution d’un GRAFCET La modification de l'état de l'automatisme est appelée évolution, et est régie par 5 règles : Règle 1 : Situation initiale : Un grafcet doit contenir au moins une étape qui soit active au début du fonctionnement du système et à partir du quelle le grafcet va évoluer. Cette étape est appelée étape initiale. Règle 2 : Franchissement d'une transition : Une transition est franchissable si toutes les étapes immédiatement précédentes sont actives et la réceptivité associée à cette transition est vraie. Si une transition est franchissable, elle est forcément franchie. Règle 3 : Activation et désactivation d'une étape :Le franchissement d'une transition entraîne l'activation de toutes les étapes immédiatement suivantes et la désactivation de toutes les étapes immédiatement précédentes. Règle 4 : Plusieurs transitions simultanément franchissables sont simultanément franchies. Règle 5 : Si au cours du fonctionnement d’une même étape doit être active et désactivée simultanément, alors elle reste activée. Différentes structures d'un grafcet Un cycle d’automatisme peut être linéaire, ou ramifié. Les cycles simples ne comportent qu’une seule séquence, c’est à dire un ensemble d’étapes les unes à la suite des autres. Les cycles ramifiés comportent plusieurs séquences, le rôle des aiguillages dans un GRAFCET est soit de sélectionner une séquence : Aiguillage en OU (on parle dans ce cas de cycle à plusieurs branches avec sélection de séquence), soit d’exécuter simultanément plusieurs séquences : Aiguillage en ET (on parle dans ce cas de cycle à plusieurs séquence à séquences simultanées). Gracet à séquence unique : C’est un grafcet constitué d’une suite d’étapes et transitions sans ramifications. Le cycle de poinçonnage traité précédemment en est un exemple.
  • 15. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 15 Aiguillage en OU : Dans ce cas, le grafcet possède une structure à plusieurs branches à exécution exclusive c'est-à-dire une seule séquence (branche) est exécuté à la fois lors d’un cycle. D’autres structures d’aiguillage en OU sont aussi possibles comme le saut d’étapes ou la reprise de séquence: Aiguillage en Et (séquences simultanées) : C’est grafcet qui possède plusieurs séquences (branches) qui vont se déroulées simultanément (en parallèle).
  • 16. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 16 7.2. Identification des étapes et transissions en SFC En SFC, une étape peut être identifiée graphiquement par un rectangle et un nom d’étape (ou double rectangle pour l’étape initiale) ou textuellement via une déclaration : Ou : Step Identifiant (* Corps de l’étape pour décrire les actions *) End_step Une réceptivité associé à une transition peut être écrite en l’un des langages ST, LD ou FBD, mais pas e,IL dans la version graphique du SFC. Langage LD Langage ST Langage FBD ² On peut aussi utiliser des connecteurs pour lier une réceptivité à une transition. dans ce cas les langages ST et IL ne sont pas autorisés. Identifiant Initiale Initial_step identifiant ; (*Corps de l’étape *) End_step
  • 17. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 17 Une troisième méthode consiste à utiliser le nom de la réceptivité associé à la transition, écrite indépendamment du diagramme SFC, les langages textuels peuvent être utilisés dans ce cas. Cette méthode à l’avantage de pouvoir utiliser le nom de la réceptivité pour différentes transitions auxquelles sont associé la même condition logique. Exemple : Déclaration de la réceptivité : 7.3. Description des actions : Une action est utilisée pour décrire les instructions à exécuté en association avec une étape active. Ces instructions peuvent être une action booléenne ou une séquence d’instructions programmée en LD, IL, FBD, ST ou un sous-programme en SFC. Un bloc action est constitué d’une action avec une condition d’exécution (appelée qualificateur d’action) et un indicateur booléen variable (optionnel). Un bloc d’action peut être définit en version graphique ou textuelle. Qualificateur d’action Nom d’action Indicateur booléen variable Instruction en LD, IL, ST ou SFC Appel de la transition :
  • 18. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 18 Exemples :
  • 19. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 19 8. Types de données et déclaration des variables 8.1. Types de données Types de données élémentaires : Les types de données élémentaires spécifiés par la norme 61131-3, sont donnés par le tableau suivant : Booléenne/string Entiers signés Entiers non signés Réels (FP) Temps, durée et date BOOL BYTE WORD DWORD LWORD INT SINT DINT LINT UINT USINT UDINT ULINT REAL LREAL TIME DATE TIME_OF_DAY DATE_AND_TIME STRING Avec : D= double, L= long, S = Short et U = unsigned. Ces types ont caractérisé par leurs largeurs (nombres de bits) ainsi que par leur étendus (ou intervalles de valeurs). Ceci ne s’applique pas aux types de temps et dates qui ont leurs propres spécifications. Ces grandeurs sont résumées dans les tableaux suivants pour les différents types élémentaires. Type de variable Bits Intervalle Initiale BOOL 1 [0,1] 0 BYTE 8 [0,…,16#FF] 0 WORD 16 [0,…,16#FFFF] 0 DWORD 32 [0,…,16#FFFF FFFF] 0 LWORD 64 [0,…,16#FFFF FFFF FFFF FFFF] 0 SINT 8 [-127,…,128] 0 INT 16 [-32768,…,32767] 0 DINT 32 [-231 ,…,231 -1] 0 LINT 64 [-263 ,…,263 -1] 0 USINT 8 [0 … 255] 0 UINT 16 [0… 65535] 0 UDINT 32 [0… 231 -1] 0 ULINT 64 [0 …264 -1] 0 REAL 32 Spécifié par la norme IEEE 754-2008 0.0 LREAL 64 0.0 Type dtae Description Initiale DATE Date (seulement) D#0001-01-01 TOD Temps durant la journée Tod#00 :00 :00 DT Temps et date Dt#0001-01-01-00 :00 :00 Time Durée t#0s Types de données dérivées (ou définition de type) L’utilisateur peut définir ses propres types de données à partir des types élémentaires. Ceci est appelé dérivation ou définition de type. Ceci permet à l’utilisateur de définir les types les plus appropriés à ses
  • 20. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 20 besoins. Ses définitions sont globales pour un projet api. La définition de type de variables utilise les mots clés Type … END_TYPE. Exemple : TYPE LongFloatNum : LREAL; (*derivation depuis le norme *) FloatingPoint : LongFloatNum; (* derivation depuis un type définit par l’utilisateur *) InitFloatNum : LREAL := 1.0; (* derivation avec une nouvelle valeur initiale *) tControl : BOOL := TRUE; (* derivation avec nouvelle valeur initiale *) END_TYPE On peut aussi déclarer des type de données de type array (vecteur) ou structure. Un array est une suite d’éléments de même type consécutifs en la mémoire et peuvent être accédé via un index, alors que la structure est formée de sous-éléments qui peuvent être de type élémentaire ou dérivés. Exemples: 1) TYPE Colour : (red, yellow, green); (* enumeration *) Sensor : INT (-56..128); (* range *) Measure : ARRAY [1..45] OF Sensor; (* array *) TestBench : (* structure *) STRUCT Place : UINT; (* elementary data type *) Light : Colour:= red; (* enumerated data type with initial value *) Meas1 : Measure; (* array type *) Meas2 : Measure; (* array type *) Meas3 : Measure; (* array type *) END_STRUCT; END_TYPE 2) définition de structure relative au fonctionnement d’un moteur TYPE LimitedRevol : UINT (0..230); TypLevel : (Idling, SpeedUp1, SpeedUp2, MaxPower); MotorState : STRUCT Revolutions : LimitedRevol; (* limites *) Level : TypLevel; (*type enumeration*) MaxReached : BOOL; (*type elementaire *) Failure : BOOL; (*type elementaire *) Brake : BYTE; (*type elementaire *) END_STRUCT; END_TYPE
  • 21. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 21 8.2. Déclaration de variable : Forme générale de déclaration : Les variables sont déclarées avec le type de donnée et des propriétés. Ces propriétés peuvent être définies dans la déclaration utilisant : - Les propriétés du type de données spécifiques. - Informations (optionnelles) sur les valeurs initiales - Informations (optionnelles) sur les valeurs limites - type de variable du bloc de déclaration dans lequel la variable a été déclarée (avec qualificateur/attribue) Exemple : VAR_OUTPUT RETAIN Var1 : Byte := 10; END_VAR Attribues de types de variables : La norme CEI 61131-3 définie des attribues (ou qualificateurs) avec lesquelles de propriétés supplémentaires peuvent être ajoutées aux variables : - RETAIN : variable retenu (peut être récupérer après coupure de courant grâce à la batterie). - NON_RETAIN : non récupérable. - CONSTANT : variable constante, ne peut pas être modifiée - R_EDGE : à front montant - F_EDGE : à front descendant - READY_ONLY : protéger en écriture - READ_WRITE : peut-être accédée pour l’écriture et la lecture Type de variable Nom de variable Type de donnée Valeur initiale Fin du type de variable Attribue
  • 22. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 22 9. Fonctions standards Les fonctions standards ont des variables d’entrée (paramètres formels) ainsi que la valeur retourné par la fonction. 9.1. Fonctions de conversions de types: Ces fonctions standards convertie la variable d’entrée en le type de donnée retournée par la fonction. Ces fonctions sont résumées par la figure suivante : 9.2. Fonctions numériques : Permettent de réaliser des fonctions mathématiques de base (abs, sqrt, Ln, Log, sin, cos, tan, asin,…) 9.3. Fonctions arithmétiques : Permettent de réaliser des opérations arithmétiques (add, sub, mult, div) Addition et multiplication : Soustraction et division : MOD :
  • 23. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 23 9.4. Opérations sur les bits : Permettent de manipuler des bit (shift droite/gauche, rotation droite/gauche : SHR,SHL, ROR et ROL) 9.5. Opérations bit à bit Permettent de réaliser des opérations de type fonctions logique de base (not, and, or, xor) 9.6. Fonction sélection Les fonctions MAX, MIN et LIMIT permettent de faire une sélection selon la valeur de l’entrée Pour Max ou Min : Pour limit : Pour cette fonction : F :=MIN(MAX(IN,MN),MX) ; 9.7. Fonctions SEL et Mux : Sel : sélection binaire. F := IN0 si G=1 sinon F :=IN1
  • 24. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 24 Mux : multiplexeur. F :=INi, si K=i avec K=0…n-1 9.8. Fonctions pour variable de type date : Dans ces figure (***)= ADD ou SUB (***)=Mul ou Div Conversion : 10. Fonctions blocs standard : Bascules : Bascule à set dominant Bascule à reset dominant
  • 25. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 25 Détection de front : Détection front montant Détection front descendant Compteurs : Trois types de compteurs : incrémentation (CTU), décrémentation (CTD) et incrémentation-décrémentation (CTUD) CTU CTD CTUD FUNCTION_BLOCK CTU (* up counter *) VAR_INPUT CU : BOOL R_EDGE; (* CU front montant*) R : BOOL; PV : INT; END_VAR VAR_OUTPUT Q : BOOL; CV : INT; END_VAR IF R THEN (* reset compteur *) CV := 0; ELSIF CU AND ( CV < PV) THEN CV := CV + 1; (* count up *) ENDIF; Q := (CV >= PV); (* limite attainte*) END_FUNCTION_BLOCK FUNCTION_BLOCK CTD (* down counter*) VAR_INPUT CD : BOOL R_EDGE; LD : BOOL; PV : INT; END_VAR VAR_OUTPUT Q : BOOL; CV : INT; END_VAR IF LD THEN (* reset compteur*) CV := PV; ELSIF CD AND ( CV > 0) THEN CV := CV - 1; (* count down *) ENDIF; Q := (CV <= 0); (* zero reached *) END_FUNCTION_BLOCK FUNCTION_BLOCK CTUD VAR_INPUT CU : BOOL R_EDGE; CD : BOOL R_EDGE; R : BOOL; LD : BOOL; PV : INT; END_VAR VAR_OUTPUT QU : BOOL; QD : BOOL; CV : INT; END_VAR IF R THEN (*reset counter(reset dominant)*) CV := 0; ELSIF LD THEN CV := PV; (* valeur à compter value *) ELSE IF NOT (CU AND CD) THEN IF CU AND ( CV < PV) THEN CV := CV + 1; (* count up *) ELSIF CD AND ( CV > 0) THEN CV := CV - 1; (* count down *) ENDIF; ENDIF; ENDIF; QU := (CV >= PV); (* limit reached *) QD := (CV <= 0); (* zero reached *) END_FUNCTION_BLOCK Temporisation : Trois types de temporisations sont disponible TON (décompte T…0), TOF (comptage T…0) et à impulsion *** = TON ou TOF ou TP
  • 26. ISIM Gabès API et Supervision industrielle A.U. 2011/2012 LASCMI3 S. MARAOUI Page 26 Temporisation à impulsions TP Le diagramme ci-après montre le comportement des sortie ET et Q selon les valeurs des entrées IN et PT La fonction bloc standard TP fonctionne comme générateur d’impulsions, qui fournit une impulsion de largeur fixe (TP) à la sortie Q lorsqu’un front montant est détecté sur l’entrée IN. Le temps qui s’est passé peut être lu sur ET (Elapsed Time). Anoter que l’impulsion ne peut pas réinitialiser avant sa fin (voir intervalle entre t2 et t2+PT). Temporisation TON (On delay timer) Le timer TON fournit la valeur de l’entrée IN à la sortie Q avec un délai lors qu’un front montant est détecté sur IN. Si in est 0 un pour une dur2e plus courte que PT ? LE TIMER N4EST PAS D2MARRER. TEMPORISATION TOF Son fonctionnement est le contraire de celui de TON