Vous êtes sur la page 1sur 39

Introduction à la programmation

des API
Chapitre 4
Saber MARAOUI
Plan

Introduction
Notions préliminaires
Programmation en
langage LADDER
Programmation en
langage IL
1. Introduction
Les langages de programmations des Api
La norme CEI 61131-3
Les langages de programmation des
API
 Les programmes utilises avec les API peuvent être écrits dans
différents formats. Pour que les ingénieurs ayant peu de
connaissances en programmation puissent élaborer des
programmes pour les API, le langage a contacts a ete connu.
 une norme internationale a été établie pour le langage a contacts
et, par voie de conséquence, pour routes les méthodes de
programmation employées avec les API. Cette norme, publiée en
1993 par la Commission électrotechnique internationale, est
désignée sous la référence CEI 61131-3. La dernière version, qui
date de 2013, est une extension qui reste compatible avec la
version antérieure
Les langages de programmation des
API (2)
 La norme spécifie 5 langages qui sont :

• Langages graphiques :

o Langage LADDER (à relais), LD


o Boîtes fonctionnelles, ou Functional Block Diagram (FBD).
• Langages textuels :

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.
La norme CEI 61131
 La norme CEI 61131 couvre l’intégralité du cycle de vie des automates
programmables industriels :
Norme 61131-1
 Partie 1 : Définition générale de la terminologie et des concepts.
 Partie 2 : Exigences sur le matériel electronique et mécanique et tests de contrôle
des API et des équipements associes. Norme 61131-2
 Partie 3 : Langages de programmation.
 1. Portée
 2. Références normatives
 3. Termes et définitions
 4. Modelés architecturaux
 5. Conformité
 6. Eléments communs
 7. Langages textuels (listes d’instructions et texte structure) Norme 61131-3
 8. Langages graphiques
 Annexe A : Spécification formelle des éléments du langage
 Annexe В : Liste des modifications principales et des extensions de la troisième Edition.
La norme CEI 61131 (2)

 Partie 4 : Conseils de sélection, d’installation et de maintenance des API.


 Partie 5 : Fonctions logicielles pour la communication avec d’autres
appareils selon la norme MMS {Manufacturing Messaging Specification).
 Partie 6 : Communications via les fonctions logicielles de bus de terrain.
 Partie 7 : Programmation par logique floue.
 Partie 8 : Conseils d’impléméntation des langages de programmation
définis a la Partie 3.
Notions préliminaires
Outils de programmation
Cycle de fonctionnement d’un api
Identification des E/s et bit d’adresse
Bits de sauvegarde internes
Outils de programmation de Api
 Une unité de programmation peut être un appareil portatif, un terminal de bureau
ou un ordinateur. Apres que le programme a ete con<;u et teste sur l'unité de
programmation, il est prêt a être transfère dans la mémoire de I’API.
 Un appareil de programmation portatif généralement d’une quantité de
mémoire suffisante pour conserver les programmes afin de les déplacer d’un
endroit a un autre.
 Les terminaux de bureau sont généralement équipes d’un système d’affichage
graphique, avec un clavier et un écran.
 Les ordinateurs personnels sont souvent employés pour la programmation des
API. L’utilisation d’un ordinateur présente plusieurs avantages : le programme
peut être stocke sur le disque dur ou sur un CD-ROM et les copies sont faciles a
réaliser. L’ordinateur est relie a ГАР1 par L'intermédiaire d’un câble Ethernet, RS-
232, RS-485 ou RS-422
Outils de programmation de Api (2)
 Les fabricants d’API proposent des outils de développement pour leurs API
par exemple
 Siemens propose son environnement de développement nommé SIMATIC STEP 7,.
STEP 7 Basis comprend LAD et FBD, et le langage IL. Des options supplémentaires
pour d’autres langages de la CEI 61131-3, comme ST avec SIMATIC S7-SCL ou SFC
avec SIMATIC S7-Graph . L’environnement complet comprend des possibilités de
diagnostic, des outils de diagnostic des processus, la simulation d’API, la
maintenance a distance et la documentation des équipements. S7-PLCSIM est un
complément de STEP 7 qui permet de simuler une plate-forme SIMATIC S7 et de
tester un programme sur un PC.
 Rockwell Automation fournit RSLogix pour les API PLC-5 d’Allen-Bradley. Cette famille
de produits est fonctionnent sur les systèmes d’exploitation Windows. RSLogix™ 5
prend en charge la gamme d’automates programmables PLC-5 d’Allen-Bradley.
Cycle de fonctionnement d’un automate
 Le cycle de fonctionnement d’un automate peut être simplifié comme suit :

Le temps d’un cycle dépend de Lecture (scruter) des


la taille du programme à entrées et sauvegarde
exécuter et la vitesse du en mémoire
processeur avec une moyenne
de 2-5ms/K de programme. Le
scan du programme limite les Lecture des E en
vitesses (fréquences) des signaux mémoire, exécution
auxquels un API peut réagir. des instructions du
programme et
mémorisation des
sorties

Mise à jour (affecter)


des sorties
Exemple: 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)
. 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

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.
Identification des e/s et bit d’adresse

 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çons d’identifier
ces E/S
 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.
Notation: (a) Mitsubishi, (b) Siemens, (c) Allen-Bradley, and
(d) Schneider (Télémécanique).
Exemple 1 Siemens SIMATIC S7 :
• Les E/S numérique des API de Siemens sont organisées en groupes de
8 bits (appelés Byte). Un signal est identifié utilisant son numéro de
bit (0-7) et son numéro de byte (0-127). Les entrées sont notées
I<byte>.<bit>, et les sorties Q<byte>.<bit>, exemple l’entrée I9.4 et la
sortie Q52.7.
• siemens utilise des slots pour les cartes dans un ou plusieurs racks.
Les cartes sont disponibles en 16 bits (2-bytes) ou 32 bits (4-bytes).
Un système peut être construit à partir de racks locaux connectés via
un câble de bus parallèle, des racks éloignés avec une connexion
série.
• La forme la plus simple d’adressage est les slots fixes (figure). 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.
Exemple 2 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
• Chaque rack contient une carte à 16 voies d’entrées et une carte
à 16 voies de sortie, ou bien deux cartes de 8 voies
généralement (mais pas nécessairement du même type.
• 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.
Bits de sauvegarde internes
 Comme pour les E/S, l’automate nécessite de sauvegarder des signaux internes de données
(bon fonctionnement du système, mise en attente, défaillance détectée, … )

 L’automate permet d’allouer des bits internes pour ces signaux.

 Du point de vue programmation, ils peuvent être considères de la même manière qu’un relais
externe de sortie ou d’entrée.
 Ces bits ont des appellations qui varient d’un constructeur à un autre, (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),

 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ées en fichiers (fichier 3 pour ces bits, fichier 4 pour les timers (T4), fichier 5 pour les compteurs
(C5), …).
Programmation en langage
Ladder
Éléments de base du langage LADDER
Appel de fonctions et FB
Variable en boucle de retour
Eléments de base du 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ée du programme, de gauche à droite.
 Initialement ce langage est destiné à commander des signaux booléens.
 Ces réseaux sont organisés du haut vers le bas sauf spécification de l’utilisateur.
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
-( / )- 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 inconditionnel (vers le sous-programme appelant)
|-cond-<return> Retour conditionnel
|->>Label Saut inconditionnel
|-cond->>Label Saut conditionnel
Appel de fonctions ou de bloc fonctionnel (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 écrites en dehors du bloc, sur le fils adjacent au
paramètre formel, il est aussi possible de connecter les
entrées/sorties d’un bloc avec celle d’un autre bloc.
 Les paramètres d’une (FB) peuvent être des données
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 directe ou
indirecte aux lignes de puissance gauche et droite.
Variable en boucle de retour (feedback)
 Si une variable est utilisée 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 possibles en LD et
donc pas de connexions explicites (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 cet exemple il n’est pas clair 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.
Programmation en liste
d’instruction (IL)
Syntaxe
Accumulateur universel
Utilisation des fonctions et FB
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.

 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
Les opérandes utilisent un code mnémonique qui varie de constructeur à un autre, bien que la norme
indique les instructions à utiliser (et qui sont largement adoptées),
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

Quelques instructions selon cette norme et son équivalent pour certains constructeurs
Exemple 1 : programmation de l’équation 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.
Accumulateur universel
 Équivalent au registre accumulateur dans l’architecture des processeurs
 Le langage IL offre la possibilité d’accumulateur appelé résultat courant (Current Result, CR)
 le CR n’a pas un nombre de bits fixes
 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
Appel de fonction en IL
 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 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 chargé juste avant
l’appel de la fonction
 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
Exemple d’appel et de déclaration de fonction
A la fin des deux appels la valeur 110 est sauvegardée dans la variable Sum
Appel d’un bloc fonctionnel (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, et elle 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
(*donner les paramètres*) (* Appel: *)
CAL Time1 (
IN:=Rel,
(*méthode 1*) PT:= t#500ms,
Q=>Out, (* Output p. 1 *)
ET=>VALUE (* Output p. 2
*)
)
LD t#500ms CAL Time1 (*Utilisation des paramètres de
sortie*)
(*méthode 2*) ST Time1.PT
LD Time1.Q
LD Rel
ST Out
ST Time1.IN
LD t#500ms IN time1 LD Time1.ET
(*méthode 3*) PT Time1 ST Value
LD Rel
Programmation en FBD et ST
Programmation en FBD
Programmation en ST
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

 partie code.

 La partie déclaration peut être textuelle ou graphique. La partie code est divisée en réseaux. Un réseau est
constitué de :

- Label du réseau
- Commentaire
- Graphique du réseau

 Dans ce langage on utilise des fonctions logiques comme ET, OU, NAND, NOR, XOR ou des combinaisons de
ces fonctions. L’utilisateur peut aussi définir ses propres fonctions ou FB, comme pour le langage LD.
Exemple
Programmation en texte structuré (ST)
 C’est un langage textuel de haut niveau
 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 à sa compilation, puisque


généralement les programmes compilés sont plus longs et plus lents à l’exécution.
 Un programme écrit en ST est formé par un ensemble d’expressions, séparées 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 (* élongation *) + C (* température *);
Mot clé Description Exemple
:= Affectation D :=10 ;
Appel de fonction FBName(

Par1:=10,

Par2:=20,
Les expressions du langage sont Par3:=>Res);
résumées dans le tableau Return Retour Return ;
If Sélection IF d < e THEN f:=1;
suivant :
ELSIF d=e THEN f:=2;

ELSE f:= 3;

END_IF;
Case Choix multiple CASE f OF

1: g:=11;
N.B : différents opérateurs sont 2: g:=12;
utilisés pour effectuer les
ELSE g:=FunName();
opérations logiques et
END_CASE;
arithmétiques (&, and, or, <,>, For FOR h:=1 TO 10 BY 2 DO
parenthèses,) , comme par Itération f[h/2] := h;
exemple pour le langage C, l’ordre END_FOR;
de priorité est aussi semblable. 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;

Vous aimerez peut-être aussi