Académique Documents
Professionnel Documents
Culture Documents
34 API-Allen Bradeley
34 API-Allen Bradeley
2011/2012
LASCMI3
Chapitre 2
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.
S. MARAOUI Page 1
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
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.
Signal 1
Signal 2
Signal 3
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)
Lecture de Mise à jour Lecture de Mise à jour de la
l’entrée de la sortie l’entrée sortie
Entrée
Entrée processus
processus
Sortie
Sortie processus
processus
Scan du Scan du Scan du
programme programme 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.
S. MARAOUI Page 2
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
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.
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.
S. MARAOUI Page 3
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
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.
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).
S. MARAOUI Page 4
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
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).
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), …).
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.
- 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 :
S. MARAOUI Page 5
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
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.
S. MARAOUI Page 6
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
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.
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.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.
S. MARAOUI Page 7
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
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
par exemple :
LD A
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 :
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
S. MARAOUI Page 8
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
- é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
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( LIMIT(
Limit 2,3 MN :=1 MX :=2
MX :=2 MX :=1
IN :=3 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.
S. MARAOUI Page 9
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
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.
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 :
S. MARAOUI Page 10
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
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 :
S. MARAOUI Page 11
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
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 *);
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.
S. MARAOUI Page 12
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
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.
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.
2 Marche Montée 3* 3
avant
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.
S. MARAOUI Page 13
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
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 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.
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.
S. MARAOUI Page 14
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
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).
S. MARAOUI Page 15
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
Ou : Step Identifiant
Identifiant
(* Corps de l’étape pour décrire les actions *)
End_step
Initial_step identifiant ;
Initiale
(*Corps de l’étape *)
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.
On peut aussi utiliser des connecteurs pour lier une réceptivité à une transition.
S. MARAOUI Page 16
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
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é :
Appel de la transition :
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.
S. MARAOUI Page 17
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
Exemples :
S. MARAOUI Page 18
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
Booléenne/string Entiers signés Entiers non signés Réels (FP) Temps, durée et
date
BOOL INT UINT REAL TIME
BYTE SINT USINT LREAL DATE
WORD DINT UDINT TIME_OF_DAY
DWORD LINT ULINT DATE_AND_TIME
LWORD 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.
S. MARAOUI Page 19
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
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
S. MARAOUI Page 20
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
Exemple :
Type de variable
Attribue
VAR_OUTPUT RETAIN
- 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
S. MARAOUI Page 21
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
9. Fonctions standards
Les fonctions standards ont des variables d’entrée (paramètres formels) ainsi que la valeur retourné par la
fonction.
Addition et multiplication :
Soustraction et division :
MOD :
S. MARAOUI Page 22
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
Pour limit :
S. MARAOUI Page 23
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
Mux : multiplexeur.
(***)=Mul ou Div
Conversion :
S. MARAOUI Page 24
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
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)
Temporisation :
Trois types de temporisations sont disponible TON (décompte T…0), TOF (comptage T…0) et à impulsion
S. MARAOUI Page 25
ISIM Gabès API et Supervision industrielle A.U. 2011/2012
LASCMI3
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 TOF
Son fonctionnement est le contraire de celui de TON
S. MARAOUI Page 26