0% ont trouvé ce document utile (0 vote)
54 vues25 pages

Chapitre 3 P Av API V4

Le chapitre 3 traite des langages de programmation des API, en se concentrant sur la norme CEI 61131-3 qui définit les langages utilisés pour les automates programmables. Il décrit les types de variables, l'adressage des données, et les différents langages de programmation, y compris les langages graphiques et textuels. Les langages graphiques incluent le Ladder Diagram et le Function Block Diagram, tandis que les langages textuels comprennent l'Instruction List et le Structured Text.

Transféré par

lr.mohammednacer
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
54 vues25 pages

Chapitre 3 P Av API V4

Le chapitre 3 traite des langages de programmation des API, en se concentrant sur la norme CEI 61131-3 qui définit les langages utilisés pour les automates programmables. Il décrit les types de variables, l'adressage des données, et les différents langages de programmation, y compris les langages graphiques et textuels. Les langages graphiques incluent le Ladder Diagram et le Function Block Diagram, tandis que les langages textuels comprennent l'Instruction List et le Structured Text.

Transféré par

lr.mohammednacer
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Chapitre 3 : API Les langages programmation des API

I. Introduction
Pour réaliser-implémenter les programmes de fonctionnement d’un système automatisé il existe
différents langages en fonction de l’automate, de l’utilisateur et du concepteur. Les langages de
programmation utilisées pour les API ont évolué depuis l’introduction des automates à la fin des
années 60. Depuis 1993 ; une première édition est apparue, en 2003 la deuxième édition de la
norme CEI 61131-3 est apparue qui normalise tous les langages de programmation des API.
Chaque API traduit (interprète) le langage de programmation en langage compréhensible
directement par le microprocesseur ; ce langage est propre à chaque constructeur, il est lié au
matériel mis en œuvre.
La norme IEC 61131.x est actuellement répertorié en huit chapitres :
 IEC 61131-1 Programmable controllers - General information (En) (1992)
CEI 61131-1 définitions, informations générales (Fr).
 IEC 61131-2 Equipment requirements and tests (2003)
CEI 61131-2 spécifications et essais matériels
 IEC 61131-3 Programmable controllers - Programming languages (2003)
CEI 61131-3 langages de programmations
 IEC 61131-4 Programmable controllers - User guidelines
CEI 61131-4 documentations
 IEC 61131-5 Programmable controllers – Communications (2000)
CEI 61131-5 Communications
 IEC 61131-6 Reserved
 IEC 61131-7 Programmable controllers - Fuzzy control programming
CEI 61131-7 Automates programmables - Programmation en logique floue
 IEC 61131-8 Programmable controllers - Guidelines for the application and implementation
of programming languages
CEI 61131-8 Automates programmables – Lignes directives pour l’application et la mise en
œuvre des langages de programmation.
II. Les différents types des variables des données d’un API
Toutes les variables des données utilisées par l’API sont de types zones mémoires distinguées
comme suit :
Zone E : Mémoire image des entrées sur bus local ou bus de terrain tel que PROFIBUS
Zone A : Mémoire image des sorties sur bus local ou bus de terrain tel que PROFIBUS
Zone M : Mémoire utilisateur
Zone L : Mémoire locale, associée à un module de programme
Zone P : Accès à la périphérie
Zone T : Mémoire des temporisations
Zone Z : Mémoire des compteurs
Zone DB : Mémoire utilisateur ou système structuré dans des blocs de données

1
Chapitre 3 : API Les langages programmation des API

III. Adressage des variables (les données)


Toute les données traitées par un programme automate possède :

- Une Direction (Entrée, Sortie, Interne)


- Un format (Bit, Octet, Mot, ...)
- Un numéro d'adressage (nombre entier, cette valeur numérique indique la position de la
donnée dans la matrice mémoire de l'API).
La syntaxe pour toute donnée est la suivante : % 'Direction' . 'Format' . 'Numéro'

L ’adresse d’une variable est structurée pour tenir compte de la structure matérielle de
l ’automate. Les objets (directions) E, A, M, DB, PE et PA sont rangés dans les formats : Bits
ou dans des OCTET (8 bits) ou dans des MOT (Word : deux octets, 16 bits) ou dans des DOUBLE
MOT (Double Word : quatre octets, 32 bits) :

→ Entrées E (I) (lecture dans la Mémoire Image d'Entrées MIE)


 Ey.x désigne une entrée, y est le n° de module physique (0 à 65566), x sa
position (voies) (0 à 8).
 EBy désigne un octet d'entrées.
 EWy désigne un mot d'entrées (16 bits).
 EDy désigne un double mot d'entrées (32 bits).

NB. Les mêmes termes précédés d'un P accèdent directement à la périphérie (PEWx, PEDx)

→ Sorties A (Q) (sortie dans la Mémoire Image de Sorties MIS)


 Ay.x désigne une sortie, y est le n° de module physique (0 à 65566), x sa
position (voies) (0 à 8).
 ABy désigne un octet de sorties (8 bits).
 AWy désigne un mot de sorties (16 bits).
 ADy désigne un double mot de sorties (32 bits).

NB. Les mêmes termes précédés d'un P accèdent directement à la périphérie (PAWx, PADx)
→ Mémentos M (lecture dans la mémoire interne)
 My.x désigne un bit de mémoire, y est le n° d'octets (0 à 65566), x sa position
(0 à 8).
 MBy désigne un octet de mémoire (8 bits).
 MWy désigne un mot de mémoire (16 bits).
 MDy désigne un double mot de mémoire (32 bits).
L'équation et le tableau suivants illustre l'affectation des bits dans une variable mémento :

2
Chapitre 3 : API Les langages programmation des API
𝑂𝑐𝑡𝑒𝑡 𝑀𝑜𝑖𝑛𝑠 𝑆𝑖𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑓 𝑂𝑐𝑡𝑒𝑡 𝑃𝑙𝑢𝑠 𝑠𝑖𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑡𝑖𝑓
"𝐿𝑆𝐵" "𝑀𝑆𝐵"
𝑀𝐷0 = ⏞
𝑀𝑊0 , ⏞
𝑀𝑊2
𝑀𝐷0
⏞ 𝑀𝑊0
⏞ 𝑀0
⏞𝐿𝑆𝐵 𝑀𝑆𝐵 𝑀𝑊2
= ⏞
𝑀0.0 , 𝑀0.1 , 𝑀0.2, 𝑀0.3 , 𝑀0.4 , 𝑀0.5 , 𝑀0.6 , ⏞
𝑀0.7 , 𝑀1 , ⏞
𝑀2 , 𝑀3

NB:

Ce type de numérotation/affectation s’applique à tous les types de variables (A.., E..,P...,


DB..,L..)

N° bit

Double
Octet

Mot

mot
7 6 5 4 3 2 1 0
M0.7

M0.6

M0.5

M0.4

M0.3

M0.2

M0.1

M0.0

M0

MW0
M1.7

M1.6

M1.5

M1.4

M1.3

M1.2

M1.1

M1.0

M1

MD0
M2.7

M2.6

M2.5

M2.4

M2.3

M2.2

M2.1

M2.0

M2

MW2

Mémoire de 1 Ko
M3.7

M3.6

M3.5

M3.4

M3.3

M3.2

M3.1

M3.0

M3
M4.7

M4.6

M4.5

M4.4

M4.3

M4.2

M4.1

M4.0

M4
M1023

MD1021
MW1023
M1024.7

M1024.6

M1024.5

M1024.4

M1024.3

M1024.2

M1024.1

M1024.0

M1024

Tab.3. Tableau des adressages des variables Mémentos

Les types des données des langages de programmation de l’API

Plage
Anglais Allemand Désignation Type de données
d'adresses
I E Bit d'entrée BOOL 0.0..65535.7
IB EB Octet d'entrée BYTE, CHAR 0..65535

3
Chapitre 3 : API Les langages programmation des API

Plage
Anglais Allemand Désignation Type de données
d'adresses
IW EW Mot d'entrée WORD, INT, S5TIME, DATE 0...65534
DWORD, DINT, REAL, TOD,
ID ED Double mot d'entrée 0…65532
TIME
Q A Bit de sortie BOOL 0.0...65535.7
QB AB Octet de sortie BYTE, CHAR 0…65535
QW AW Mot de sortie WORD, INT, S5TIME, DATE 0…65534
DWORD, DINT, REAL, TOD,
QD AD Double mot de sortie 0…65532
TIME
M M Bit de mémento BOOL 0.0...65535.7
MB MB Octet de mémento BYTE, CHAR 0…65535
MW MW Mot de mémento WORD, INT, S5TIME, DATE 0…65534
DWORD, DINT, REAL, TOD,
MD MD Double mot de mémento 0…65532
TIME
Octet de périphérie
PIB PEB BYTE, CHAR 0…65535
d'entrée
Octet de périphérie de
PQB PAB BYTE, CHAR 0...65535
sortie
PIW PEW Mot de périphérie d'entrée WORD, INT, S5TIME, DATE 0...65534
Mot de périphérie de
PQW PAW WORD, INT, S5TIME, DATE 0...65534
sortie
Double mot de périphérie DWORD, DINT, REAL, TOD,
PID PED 0…65532
d'entrée TIME
Double mot de périphérie DWORD, DINT, REAL, TOD,
PQD PAD 0...65532
de sortie TIME
T T Temporisation TIMER 0...65535
C Z Compteur COUNTER 0...65535
FB FB Bloc fonctionnel FB 0...65535
OB OB Bloc d'organisation OB 1...65535
DB DB Bloc de données DB, FB, SFB, UDT 1...65535
FC FC Fonction FC 0…65535
SFB SFB Bloc fonctionnel système SFB 0...65535
SFC SFC Fonction système SFC 0...65535
VAT VAT Table des variables 0...65535
Type de données
UDT UDT UDT 0...65535
utilisateur
Tab.2. Tableau des différentes variables de déclaration sous Step7 (Siemens)

4
Chapitre 3 : API Les langages programmation des API

IV. Les langages de programmation des API


Les langages de programmation normalisés par la norme CEI 61131-3 :
 Langages graphiques
→ Le Langage Ladder (LD) : Ladder Diagram
Ce langage utilise des schémas à contacts pour représenter le programme d'application
d'un système API.

→ Le Langage bloc fonctionnel (FBD) : Function Block Diagram


Ce langage de programmation graphique utilise des schémas fonctionnels (blocs) pour
représenter le programme d'application d'un système API

→ Le Langage (SFC) : Sequential Function Chart


Ce langage permet d’utiliser les notions d'étapes et de transitions représentant la
structure d'une unité d'organisation de programme (POU) : programme ou bloc
fonctionnel pour un système API (PLC).

 Langages Textuels (Littéraux)


→ Langage liste d’instructions (IL) : Instruction List
IL est un langage de programmation textuel utilise des instructions proche d’un
Assembleur, pour représenter le programme d'application pour un système API.

→ Langage texte structurée (ST) : Structured text


ST est un langage textuel utilisant des instructions d’un langage évolué (d'affectation,
de contrôle de sous-programme, de sélection et d'itération) pour représenter le
programme d'application d'un système API.

Remarque :

Dans la CEI 61131-3, les blocs fonction, les fonctions et programmes sont appelés unités
d'organisation de programme (POU : Program Organisation Unit). Le langage d'un POU est
défini par l'utilisateur dont la possibilité d’écrire chaque partie par un langage différent en
fonction de ses habitudes de la programmation et de la facilité à exprimer le problème. En
général un POU est composé de trois sections ou groupes principaux :

- Programmes représentant des opérations séquentielles ou cycliques


- Fonctions pouvant être appelées depuis n'importe quel autre programme. Une fonction
peut appeler d'autres fonctions. Une fonction retourne une valeur.
- Blocs fonctionnels ou Function_Blocks pouvant être appelées depuis n'importe quel
autre programme. Un bloc-fonction peut appeler d'autres bloc-fonctions. Un bloc-
fonction peut ne pas retourner de valeur (procédure).
5
Chapitre 3 : API Les langages programmation des API

IV.1. Les Langages graphiques


IV.1.1. Le langage Ladder (LD)
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. Dans ce
langage graphique symbolique la représentation est fondée sur des schémas à relais, il est
principalement caractérisé par les deux symboles suivants :
Ex.y Mx.y
 Contact (Entrée TOR, variable interne) ou
Ax.y Mx.y
 Bobine (Relais) (Sortie TOR, variable interne) ou
PEWx MWx
 Contact (Entrée ANA, variable interne) ou
PAWx MWx
 Bobine (Sortie ANA, variable interne) ou

IV.1.1.1. Association des Sorties (Bobines ou Relais)


 Sorties en parallèle
 L’association des sorties en parallèle permis de valider le « ET » (And) logique.
dcy MCC
Barre de liaison Barre
d’alimentation MPP
d’alimentation
 Sorties en série
L’association des bobines en série n’est pas possible.

IV.1.1.2. Association des Entrées


 Entrées en série
L’association des entrées en série permet de réaliser le « ET » :

dcy Arr MCC

MPP

 Entrées en parallèle
L’association des entrées en série permet de réaliser le « OU » :
dcy Arr MCC

MCC

6
Chapitre 3 : API Les langages programmation des API

IV.1.1.3. Les types d’Entrées TOR en Cont


Symbole Désignation Chronogramme

NO Contact normalement ouvert E


E S S

E S NC Contact normalement fermé E


S

Contact ouvert sur le front E


E P S montant S

E N S Contact ouvert sur le front E


descendant S

E P S Contact ouvert sur les deux fronts E


N montant et descendant S

IV.1.1.4. Les types de sorties TOR en Cont


Symbole Désignation Chronogramme

E
E S Bobine normale (directe)
S

E
E S Bobine négative(inverse) S

E
E p S S
Bobine pulsée sur

Bobine pulsée sur E


E N S
S

E P S Bobine pulsée sur les


N E
deux fronts
S

E S S Bobine « Set » ou E
d’enclenchement S

E R S
Bobine « Reset » ou de E
déclenchement S

7
Chapitre 3 : API Les langages programmation des API

IV.1.2. Le Langage FBD : (Function block diagram)

Le langage FBD permet d’exprimer le comportement des POU sous la forme graphique d'un
ensemble de blocs interconnectés. Ces blocs fonctionnels sont construits par des équations
complexes à partir des opérateurs standard, de fonctions ou de blocs fonctionnels. Dans FBD, un
bloc de fonction est représenté par un bloc rectangulaire qui décrit une fonction logique ou
arithmétique ou spécifique ou complexe avec des entrées entrant de la gauche et des sorties sortant
à droite. Le nom du type de bloc fonction est toujours affiché dans le bloc, alors que le nom de
l'instance de bloc fonctionnel est toujours affiché au-dessus du bloc.

IV.1.2.1. Structure d’un bloc fonctionnel

Un FDB est un ensemble des instructions blocs fonctionnels, chaque instruction FDB est décrite
comme un réseau de fonctions ou sous FDB plus élémentaires, reliées par des fils orientés.
Code_FDB

Entrée : TOR, ANA, …


Fonctions Sortie : TOR, ANA, …

Variable : TOR, ANA, … Standards

Temps FDB
Fonctions Variable : TOR, ANA, …

Temps
Alarme, évènement, …

Fig.xx. Structure générale d’un bloc en FBD


En général, les entrées et les sorties qui peuvent être caractérisées un bloc fonctionnel sont
illustrées sur la figure suivante :

Numéro d’instanciation
Enable Validation Enable Out
Type du bloc
Booléen Booléen

Entrée(s) TOR Booléen Booléen Sortie

Entrée(s) Analogique(s)
Word Booléen
Variable(s) :
TOR, ANA, B, W, I, T,C,…
W, I, DW, DI, R, T, C, …

Variable(s) de sortie(s) :
TOR, ANA, B, W, I,T, C, … Variable(s)
W, I, DW, DI, R, T, C, …
Variable(s) de Temps(s) Variable(s) de Temps(s)
Time Booléen

Fig.xx. Structure générale des Entrées-Sorties d’un bloc en FBD

8
Chapitre 3 : API Les langages programmation des API
NB.
Les blocs 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.
Comme exemple :

- L’entrée Booléenne Enable : est utilisée pour autoriser l’exécution du bloc


- La sortie Booléenne Enable Out : Est mise à un quand l’exécution a été correctement réalisée
IV.1.2.2. Les opérations principales effectuées par ce langage

a) Instructions sur bits


→ Les opérations logiques : Toutes les opérations logiques et les bascules.
→ Les Bits des mots d'état (Flags) : Les flags des opérations nulle, négative, …
b) Les opérations sur mots (Entier ou Réel ou Binaire) : Les opérations arithmétiques,
les opérations de comparaison.
c) Les opérations de décalage/rotation : Le shifting et le décalage à droite ou à gauche.
d) Operations de conversions : du BCD ver Entier, de l’Entier vers Double Entier, de ce
dernier vers le Réel, …
e) Opération de transfert
f) Opération de gestion du programme : Appel des fonctions, des blocs, Return, …
g) Les Temporisateurs : Il existe plusieurs types des temporisateurs propres à chaque
constructeur.
 Temporisation retard à l’activation

T n°
x y
Trig
tr

Fig.x.x Tempo type1


 Temporisation retard au déclenchement

T n°
x y
Trig
tr

Fig.x.x Tempo type2

9
Chapitre 3 : API Les langages programmation des API

 Temporisation monostable

T n°
x y
Trig
tr

Fig.x.x Tempo type3


 Temporisation retard au déclenchement
T n°
x y
Trig
tr

Fig.x.x Tempo type4


 Temporisation retard au déclenchement
T n°
x y
Trig
tr

Fig.x.x Tempo type5


h) Les Compteurs
Généralement tous les compteurs sont caractérisés par les entrées et les sorties suivantes :
C n°
CU
CU : Entrée de comptage (Bool, sur front)
Count QU
CD CD : Entrée d” décomptage (Bool, sur front)
Reset : Entrée mise à zéro (Bool)
Reset QD Load : Entrée de pré-chargement (Bool)
PV : Valeur de pré-chargement (entier)
Load QU : Sortie passe à TRUE si CV=0 (Bool)
CV QD : Sortie passe à TRUE si CV=PV (Bool)
PV
CV : Sortie valeur courante du compteur(entier)
Fig.xx. sssssssssssss
i) Les Sauts
j) Les opérations complémentaires : Cette section est propre à chaque constructeur de faire
faciliter ou de donner plus d’avantage aux programmeurs, généralement elle est composée
de : Fonctions spéciales : racine carré, exponentiel, fonction PID, …
Exemple 1 : Quelques fonctions en FBD

Z=X+Y (somme des nombres réels) A=sin(B)


10
Chapitre 3 : API Les langages programmation des API

Comparateur Temporisateur Type1 (Step7) Fonction spéciale


IV.1.3. Le langage Logigramme (LOG)

Il utilise les pavés logiques bien connus dans l'algèbre booléenne pour la représentation logique
(ET, OU, Bascule RS, JK, … ). Il permet en outre de représenter des fonctions complexes, telles
que les fonctions mathématiques en les mettant directement en liaison avec ces pavés logiques.

Exemple :

S = a + b « OU » S=a.b « ET » Bascule RS Front P et N

NB. Toutes les opérations réalisées par le langage LOG sont des opérations du langage FBD.

IV.1.4. Le Langage SFC (Sequential Function Chart)


Ce langage de programmation est inspiré du standard français GRAFCET (GRAphe Fonctionnel
de Commande Etape/Transition) développé en France à la fin des année 70 par l’AFCET normalisé
NE FR 60848 08/2002. Il devient standard IEC 848 en 1988. Actuellement est appelé SFC
(Sequential Functional Chart) dans le standard IEC 61131-3, dans certaine littérature est appelé
langage GRAPH tout court (exemple Graph S7 de Siemens). Un autre langage graphique de haut
niveau qui a une structure ressemblant à la structure d’un réseau de Petri est HiGRAPH de Siemens
comme exemple.

VI.1.4.1. Les éléments du SFC


Les composants de base du langage graphique SFC sont en général les symboles graphiques
classique reconnus par le grafcet :

- Étapes et étapes initiales ;


- Transitions ;
- Liaisons orientées ;
- Renvoi (saut) à une étape.
Le SFC peut générer une séquence des étapes en série, sélection de séquence (aiguillage,
divergence), séquence parallèles (simultanées), Saut d’étape et reprise de séquence, ainsi que :

11
Chapitre 3 : API Les langages programmation des API

(a) Condition d'assignation (b) Action retardée (c) Action limitée dans le temps
normale non dépendante du temps

(d) Cas particulier du compteur (e) Action sur un évènement


(incrémentation ou décrémentation)
La méthode de connections de composants du SFC est quasiment ressemble au Grafcet, néanmoins
se distinguent dans quelques agissements :

S0 Quantificateur (attribut)
T1 Nom_action
N Moteur
S1 N Moteur
Actions

T2
Section de branche
S2
T3 T3 T3
S3 S3 S3
T3 T3 T3 Saut d’étape

Label1

S3 Branches parallèles
T3

S3 S3 S3
T3
S3

T3
S3 Etiquette

Label1 :
D Action1
S3 L Action2
T3

Fig.xx. Grafcet sous SFC

12
Chapitre 3 : API Les langages programmation des API

→ ETAPES
À l’exécution, un jeton indique si l’étape est active.

Etape n active  Xn = 1 Etape n inactive  Xn = 0

- Les attributs d’une étape peuvent être testés depuis tous les langages :

 NomEtape.x activité de l’étape (valeur booléenne) ;

 NomEtape.t durée d’activité de l’étape (valeur temporelle).

→ ETAPES et Actions
La particularité du SFC est la description détaillée des actions exécutées quand l’étape est
active, les différents types d’action sont :

- Action booléenne :Elle est forcée à chaque fois que le signal d’activité de l’étape change
d’état ;
- Action impulsionnelle programmée en ST, LD ou IL : c’est une liste d’instructions ST, IL
ou LD, exécutée à chaque cycle pendant toute la durée d’activité de l’étape;
- Action normale programmée en ST, LD ou IL ;
- Action SFC : Une action SFC est une séquence fille SFC, lancée ou tuée selon les
évolutions du signal d’activité de l’étape. Elle peut être décrite avec les qualificatifs
d’action N (non mémorisée), S (set), ou R (reset).)
Une action booléenne consiste à assigner à une variable booléenne le signal d’activité d’une
étape, les types d’activation des sorties (attribut ou quantificateur) en SFC sont :

(1) N : Non-stored The action is active as long as the step


Copie le signal d’activité de l’étape dans la variable ;

Etape connectée par N


Action

Fig.xx. Chronogramme d’une action quantifiée par l’attribut N


(2) S : Set (Stored) The action is activated and remains active until a Reset
Force la variable à TRUE quand le signal d’activité de l’étape prend l’état TRUE ;
(3) R : Reset The action is deactivated (overriding a time limited activation)
Force la variable à FALSE quand le signal d’activité de l’étape prend l’état TRUE.

13
Chapitre 3 : API Les langages programmation des API

Etape connectée par S RS Action Etape connectée par S


S Q
Action
Etape connectée par R Etape connectée par R
R
Fig.xx. Chronogramme d’une action quantifiée par les attributs S ou R
(4) L : Action exécutée pendant T secondes
Action exécutée pendant X secondes
Etape connectée par L Action
AND
TON
IN Q Etape connectée par L
Action T
time (T)
T
Fig.xx. Chronogramme d’une action quantifiée par l’attribut L (T)
(5) D : time Delayed The action becomes active after a certain time if the step is still active and
then it remains active as long as the step is active.

TON
Etape connectée par D
IN Q Action Etape connectée par D
Action T
time (T)
T

Fig.xx. Chronogramme d’une action quantifiée par l’attribut D (T)


(6) P : Pulse : The action is executed just one time if the step is active
TRIG
Etape connectée par P Action Etape connectée par P
CLK
Action
1 cycle

Fig.xx. Chronogramme d’une action quantifiée par l’attribut P


(7) SD : Stored and time Delayed :The action is activated after a certain time and remains active
until a Reset
RS TON
Etape connectée par SD
S Q IN Q Action

Etape connectée par R Etape connectée par SD T


R T
Action
Time (T)
Etape connectée par R

Fig.xx. Chronogramme d’une action quantifiée par l’attribut SD


(8) DS : Delayed and Stored The action is activated after a certain time as long as the step is
still active and remains active up to a Reset

14
Chapitre 3 : API Les langages programmation des API

TON RS
Etape connectée par DS Action
IN Q S Q
Etape connectée par DS T
Time (T)
T R Action
Etape connectée par R
Etape connectée par R

Fig.xx. Chronogramme d’une action quantifiée par l’attributs DS


(9) SL : Stored and time limited The action is activated for a certain time
RS
Etape connectée par SL Action
S Q1 AND
TON
Etape connectée par R IN Q
R

Time (T) T

Etape connectée par SL


Action T
Etape connectée par R

Fig.xx. Chronogramme d’une action quantifiée par l’attributs SL


(10) time : Limited The action is activated for a certain time, maximum as long as the step is active

NB. Les quantificateurs L, D, SD, DS et SL nécessite une valeur de temps de format constant.
→ Transitions
La condition de transition (ou de passage entre étapes) est élaborée par le langage LD ou IL.
IV.2. Langages Textuels (Littéraux)
IV.2.1. Langage Liste d’instructions (IL)
IV.2.1.1. Définition

Ce type de langage (List) est textuel proche du langage machine, plus proche du comportement
interne de l'automate. Il est très proche du langage assembleur (ressemble à l'assembleur dans un
ordinateur) on travaille au plus près du processeur en utilisant l'unité arithmétique et logique ALU,
ses registres et ses accumulateurs. Le programme se compose d'une suite de lignes, chacune
spécifiant un code opération suivi d'un opérande (et un seul). L'opérande peut être une adresse
absolue (E0.0) ou un mnémonique entre guillemets. Comme on ne peut pas utiliser deux opérandes
dans une même ligne.

15
Chapitre 3 : API Les langages programmation des API

IV.2.1.2. Opérations IL
IV.2.1.2.1. Opérateurs d’affectation

Opérateur Description
LD Accu= Opérande (Op) : Le résultat est égal à l’opérande (load : lire la valeur).
ST Op = Accu : L’opérande associé prend la valeur de la zone de test.
S Si Accu Alors Set Op : L’opérande associé est mis à 1 lorsque le résultat de la
zone de test est à 1.
R Si Accu Alors Reset Op : L’opérande associé est mis à 1 lorsque le résultat de
la zone de test est à 1.
LDN Accu= Not Op : Le résultat est égal à l’inverse de l’opérande (contact
ouverture).
STN Op = Not Accu : L’opérande associé prend la valeur inverse de la zone de test.
IV.2.1.2.2. Opérateurs logiques

Opérateur Description
AND Accu= Accu AND Op
OR Accu = Accu OR Op
XOR Accu = Accu XOR Op
NOT Accu= NOT Accu
ANDN Accu = Accu AND NOT Op
ORN, XORN… …
IV.2.1.2.3. Opérateurs arithmétiques

Opérateur Description
ADD Accu= Accu + Op
MUL Accu = Accu * Op
MOD Accu = Reste Accu / Op
SUB Accu= Accu - Op
DIV Accu = Accu / Op

IV.2.1.2.4. Opérateurs de comparaison

Opérateur Description
GT Accu= (Accu > Op)
LT Accu = (Accu < Op)
EQ Accu = (Accu = Op)
GE Accu= (Accu >= Op)
LE Accu = (Accu <= Op)
NE Accu = (Accu<> Op)

16
Chapitre 3 : API Les langages programmation des API

IV.2.1.2.5. Langage IL : Branchement et Appel

Opérateur Description
JMPC Saut au Label si (Accu=TRUE)
JMP Saut inconditionnel au Label
JMPCN Saut au Label si (Accu=FALSE)
RETC RETURN si (Accu <> 0)
RET RETURN
RETCN RETURN si (Accu = 0)

IV.2.1.2.6. Appel d’un bloc fonctionnel

Opérateur Description
ST Nominstance.Entrée 1 etc…
CAL Nominstance(<Entrée 1> :=<Valeur>,…)
LD Nominstance.Sortie
ST Résultat

IV.2.1.2.7. Appel d’une fonction : ex fonction utilisateur LIMIT (Min, Val, Max)

Opérateur Description
LD Min
LIMIT Val, Max
ST Résultat

IV.2.1.2.8. Les Temporisateurs

IV.2.1.2.9. Les Compteurs

Zzz
Zzzz
Zzz
Zzz

17
Chapitre 3 : API Les langages programmation des API

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é), le tableau suivant donne
quelques instructions selon cette norme et son équivalent pour certains 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

IV.2.1.3. Exemples
 Exemple 1 :
Traduire « x=a ET b » en List par :
U "a"
U "b"
= "S"
et « y= c OU d » par :
O "c"
O "d"
= "S"
 Exemple 2 :
00 LD %E0.01 //tester l’entrée d’adresse E0,01
01 AND %E0.02 //ET entre l’entrée (E0,01) et l’entrée E0,02
02 ST %A0.01 //Donner le résultat logique du ET à la sortie A0,01
 Exemple 3 :
Traduire le réseaux LD suivant en IL :

Solution :
00 LD % I0,00 //tester Le bouton marche S1
01 OR % Q0,01 //Exécuter un OU avec KM1
02 AND % I0,02 //exécuter un ET avec le bouton marche S2
03 ST % Q0,01 //Activer la sortie du contacteur pompe KM1
04 LD % I0,03 //tester le capteur pression C1
05 ST % Q0,02 //Activer la sortie du voyant H1

18
Chapitre 3 : API Les langages programmation des API

 Exemple 4 :
Donner le code IL du réseaux LD suivant :

Solution :
LD %X11
AND %M0
AND N %I1.1
OR N %I1.2
ST %M2
ST %Q2.0
LD %M2
AND %M1
R %M2
 Exemple 6 :
La figure suivante montre la mise en œuvre d'un temporisateur dans les différents langages
normalisés (LD, FBD, IL, ST)

figure 3-4

 Exemple 7 :
A0.0 passe à l’état 1, 2s après l'activation de E0.0, s'éteint en même temps que E0.0

19
Chapitre 3 : API Les langages programmation des API

Solution :
U E0.0
L S5T#2S
SE T1
U T1
= A0.0

Exemple 8 :
Traduise le réseau suivant en code IL

Solution :
LD %I1.0
OR [%MW3>100]
MPS
[%MW5:=%MW1+%MW2]
MPP
IN %TM1
LD %TM1.Q
ST %Q2.3
Exemple 9 :
Coder les deux équations suivantes en IL : D=A*B+C , D=A*(B+C)

Solution :
LD A (*Accu=A*)
MUL B (*Accu=Accu*B*)
ADD C (*Accu=Accu+C*)
ST D (*D=Accu=A*B+C*)
--------
--------
LD A (*Accu=A*)
MUL( B (*Accu1=B*)
ADD C (*Accu1=Accu1+C*)
) (*Accu=Accu+Accu1*)
ST D (*D=Accu*)

IV.2.2. Langage ST
IV.2.2.1. Introduction

ST (« Structured Text » ou texte structuré. Le ST est un langage textuel de haut niveau. Il permet
la programmation de tout type d’algorithme plus ou moins complexe. Il ressemble aux langages
évolués de haut niveau utilisés pour les ordinateurs (C, VBS, … ) proche du Pascal, conforme à
20
Chapitre 3 : API Les langages programmation des API

une norme sur les automates programmables CEI 61131-3. ST dispose d’éléments de langage
spécifiques aux automates programmables caractérisé par POU, comme les entrées, sorties,
temporisations, mémentos, appels de blocs etc. Le langage ST est adapté à la programmation de
fonctions algorithmiques complexes, aux manipulations sur tableaux, difficile à traduire en
langage graphique.

Pour le cas du logiciel de Siemens, son langage SCL (Structured Control Language) semble être
la version Siemens du langage ST (texte structuré), potentiellement, il y a quelques différences,
mais le concept global et les fonctionnalités seront les mêmes. Un programme SCL se compose
d’un ou plusieurs source SCL ; une source peut contenir un block ou un programme complet de
plusieurs blocks. Des sources block SCL permet être de type block fonction FB, fonction FC,
block d’organisation OB ou block de données DB.

IV.2.2.2. Opérations du ST
IV.2.2.2.1. Assignation
variable := expression;
IV.2.2.2.2. Opérateurs booléens
NOT, AND, OR et XOR
IV.2.2.2.3. Sélecteurs de branches
 IF-THEN-ELSIF-ELSE-END_IF

IF <Expression Booléenne> THEN


<Énoncés> ;

ELSIF <Expression Booléenne> THEN
<Énoncés> ;

ELSE
<Énoncés> ;

END_IF ;
 CASE-OF-ELSE-END_CASE

CASE <Expression Entière> THEN


<valeur> : <énoncé_1> ;
<valeur> : <énoncé_2>;

ELSE
<énoncé_a> ;
<énoncé_b>;

END_CASE ;

IV.2.2.2.4. Opérateurs d’itérations


 WHILE-DO-END_WHILE
21
Chapitre 3 : API Les langages programmation des API

WHILE <Expression Booléenne> DO


<énoncé_1> ;
<énoncé_2>;

END_WHILE;
 REPEAT-UNTIL-END_REPEAT

REPEAT
<Énoncé_1> ;
<Énoncé_2>;

UNTIL <Expression Booléenne>
END_REPEAT;
 FOR-TO-BY-DO-END_FOR

FOR <index>:=<min> TO <max> BY <pass> DO


<énoncé_1> ;
<énoncé_2>;

END_DO ;

IV.2.2.2.5. Instruction de contrôle


L’utilisation des Instructions suivantes est toujours possible :
EXIT : Quitte la boucle d’itérations (FOR, WHILE ou REPEAT).
RETURN : Quitte la fonction ou le bloc fonctionnel dans laquelle elle est placée.
IV.2.2.2.6. Appel de bloc fonctionnel

Appel de bloc fonctionnel : On appelle une instance du bloc souhaité.


On invoque les paramètres de sortie correspondants
<resltat1> :=NomInstanceFonctionnel.<retour1> ;
<resltat2> :=NomInstanceFonctionnel.<retour2> ;
..
Exemple :
si trigb1 est une instance de « R_TRIG », BF de détection de front montant.
Solution :
Trigb1(b1) ;
IF trigb1.Q THEN nb_fronts+1; END_IF;

IV.2.2.2.7. Appel de fonction

22
Chapitre 3 : API Les langages programmation des API

Appel de fonction élémentaire :

<resultat> :=NomFonction(<argument1,argument2,..) ;

IV.2.2.2.8. Appel de bloc d’organisation

IV.2.2.2.9. Énoncés spéciaux pour le lien avec le langage GRAFCET

Déclaration des variables

 Pour chaque bloc déclaratif des modules logiciels, il est nécessaire de définir :
1. La portée de chacune des variables utilisées dans le bloc.

Variable type Permission


PROGRAM FUNCTION_BLOCK FUNCTION
VAR yes yes yes
VAR_INPUT yes yes yes
VAR_OUTPUT yes yes no
VAR_IN_OUT yes yes no
VAR_EXTERNAL yes yes no
VAR_CLOBAL yes no no

2. Le type de chacune de ces variables.

IV.2.2.3. Exemples

Exemple 1 :

23
Chapitre 3 : API Les langages programmation des API

Recherche du premier élément non nul dans un tableau de 32 mots, détermination de sa valeur
(%MW11). Cette recherche s’effectue si %M0 est à 1, %M1 est mis à 1 si un élément non nul
existe, sinon il est mis à 0.
Solution :

IF %M0 THEN
FOR %MW99 :=0 TO 31 DO
IF TAB[%MW99]<>0 THEN
%MW10=TAB[%MW99] ;
%MW11=%MW99 ;
%M1 :=TRUE ;
EXIT ;
ELSE
%M1 :=FALSE ;
END_IF ;
END_FOR ;
ELSE
%M1 :=FALSE ;
END_IF

Exemple 2 :

IF manual AND not (alarm) THEN CASE error_code THEN


Level := manual_level; 255 : err_msg:=’Division par zéro’;
Bx126:=bit12 OR bit16; Fatal_error := TRUE ;
ELSE_IF over_mode THEN 1 : err_msg :=’Dépassement’ ;
Level:= (level*100)/scale; 2,3 : err_msg :=’Erreur de signe’ ;
END_IF ELSE
IF overlow THEN Err_msg :=’Erreur Inconnues’ ;
alarm_level:=TRUE; END_CASE
END_IF

Exemples :
Exemple 1

Langage ST

IF (%X11 AND %M0 AND NOT(%I1.1)) OR (NOT(%I1.2)) THEN


%Q2.0 := TRUE ;
IF %M1 THEN
RESET %M2 ;
END_IF
24
Chapitre 3 : API Les langages programmation des API

ELSE
%Q2.0:= FALSE ;
END_IF

Exemple 2

:
Langage ST
....
IF %I1.0 OR (%MW3>100) THEN
%MW5 := %MW1 + %MW2 ;
START %TM1;
END_IF
%Q2.3 := %TM1.Q ;
....

25

Vous aimerez peut-être aussi