Académique Documents
Professionnel Documents
Culture Documents
01
02
50
01
02 50
03
2
B OU
ET
Combinaison logique
Instruction de sortie
Elments
(*OUI*) S:=a; (*NON*) S:=NOT (a); (*OU*) S:=a OR b; (*AND*) S:= a AND b; S:= a XOR b;
b=FALSE
AND b
FALSE
S=FALSE
ST S
FALSE
7
LANGAGE IL
LD charge un oprande (variable ou constante). ST stocke le rsultat courant dans la variable. N traduit le NON.
Re=ab+cd
(* Re = ((a.b)+c).d *) ld a and b or c and d st Re (* Re = a.b+c.d *) ld a and b st Re Ld c and d or Re st Re (* Re = a.b+c.d *) ld a and b st VAR_1 Ld c and d st VAR_2 Ld VAR_1 or VAR_2 st Re
10
Organisation Logicielle
La norme suppose l existence d un systme (ressource) multitche et temps rel.
variables globales
PROG_1 PROG_2 PROG_3 PROG_4 Tche 2
Cyclique
PROG_5
Tche 1
Cyclique
FB1
FB2
FB3
Tche 3
Evnementiel
Tache1
variables locales
Tache2
Tache3
11
Notion de POU*
Program Organization Unit
les Programmes, les Fonctions, les Blocs Fonctionnels forment les POU. Le nom d'un POU doit tre unique au sein d'un projet Chaque POU se compose en deux parties diffrentes : la partie Dclaration de Variables , ou toutes les variables ncessaires sont dclares (Header) la partie Code du Programme qui contient les instructions dans le langage de programmation dsir (Body) * UOP = Unit dOrganisation de Programmes
12
13
Notion de Fonction
Les FONCTIONS sont des POUs avec plusieurs paramtres d'entre et exactement un paramtre de sortie L'appel d'une fonction avec les mmes valeurs entrane toujours le mme rsultat. A l'intrieur d'une mme fonction, il est possible d'appeler une autre fonction, mais pas un bloc fonctionnel ni un programme. Les appels rcursifs ne sont pas autoriss !
14
Les Blocs Fonctionnels sont des POUs avec plusieurs paramtres d'entre et de sortie. Linstanciation est possible. Il est possible de crer plusieurs instances (copies) nommes dun blocs. A l'intrieur d'un bloc fonctionnel, il est possible d'appeler un autre bloc fonctionnel(*) ou des fonctions, mais pas un programme. Les appels rcursifs ne sont pas autoriss !
15
Variable Declarations
program
VAR_GLOBAL VAR_GLOBAL_CONSTANT
BODY instructions
16
17
Variable Declarations
function
VAR_GLOBAL VAR_GLOBAL_CONSTANT HEADER Interface variables VAR_INPUT
18
19
Variable Declarations
block
VAR_GLOBAL VAR_GLOBAL_CONSTANT HEADER Interface variables VAR_EXTERNAL VAR_EXTERNAL_CONSTANT VAR_INPUT VAR_OUTPUT VAR_IN_OUT Local variables VAR VAR_CONSTANT BODY instructions
20
Exemple Mitsubishi
21
22
Les variables
23
24
Attribut
I: Entre Q : Sortie M : mmoire K : constante
type
X: boolean B: 8 bits W: 16 bits D: 32 bits F: flottant
i.j.k
i: numro de voie j: numro de carte k: numro de rack
%IX1.5 Entre TOR n5 de la carte n 1 du rack par dfaut n 0 %QX2.4.F Sortie TOR voie F du module 4 du rack 2 %MX128 bit interne n128 %MW4 entier 16 bits n 4
25
Exemple Schneider
26
Exemple B&R
27
28
29
30
Cinq Langages
(*Instruction List*) LD ANDN ST A B C Transition 1 Function Block Diagram Ladder Diagram A B C -| |--|/|----------------( ) Step 2 S Empty (*Sequential Function Chart*) (*Structured Text*) C:= A AND NOT B Step 1 N FILL
A B
Transition 2
Step 3
31
Fonctions Standards
La norme IEC 6 1131-3 dcrit des fonctions standard qui peuvent tre utilises dans le programme API
Oprations sur les cordons de bits :(AND, OR , XOR , NOT, SHL , SHR, ROL , ROR) Fonctions Numriques (ADD , SUB , MUL , DIV , MOD , EXPT , ABS , SQRT , LN , LOG , EXP , SIN , COS , TAN , ASIN ,ACOS , ATAN) Conversions de types ( x_TO_y : ex. USINT_TO_DINT , BOOL_TO_BYTE) Fonctions de Slections (SEL , MIN , MAX , LIMIT , MUX) Fonctions de Comparaison (GT, GE , EQ , LT , LE , NE) Fonctions de Chanes de caractres (LEN , LEFT, RIGHT, MID, CONCAT,INSERT, DELETE , REPLACE, FIND)
32
Fonctions numriques
LD a ADD b ST r LD a SUB b SUB c ST r LD a MUL b ST r LD a DIV b ST r LD a DIV b ST r LD a MOD b ST reste 33 r := a + b; r := a - b -c; r := a * b; r := a / b ; (*division entire *) r := (a / b); (* reste de la division *) reste := MOD (a, b);
Fonctions numriques
LD -1.0E1 ABS SQRT EXPT 5 ST Valeur1
Valeur1:=expt(sqrt(abs(-1.0E1)),5);
ABS Valeur absolue SQRT Racine carre EXPT Exponentiation LOG Logarithme
Sortie dans l'intervalle [-1.0 ,+1.0] COS Cosinus SIN Sinus TAN Tangente Entre dans l'intervalle [-1.0 ,+1.0] Sortie dans l'intervalle [0.0, PI] ACOS Arc cosinus ASIN Arc sinus ATAN Arc tangente
34
Fonctions de comparaisons
QX2_1 :=(t#999ms < t#1s) ; QX2_2 :=(2#010101010101 <= 16#8FFFFFFF) ; QX2_3 :=(123.1 <> 1.23E2) ; QX2_4 :=(singe = chimpanz) ; QX2_5 :=(t#1h1s1ms > t#1h1s) ; QX2_6 :=(16#FAC >=16#D0D0) ; LD t#999ms LT t#1s ST QX2_1 LD 2#010101010101 LE 16#8FFFFFFF ST QX2_2 LD 123.1 NE 1.23E2 ST QX2_3 LD singe EQ chimpanz ST QX2_4 LD t#1h1s1ms GT t#1h1sST QX2_5 LD 16#FACGE 16#D0D0 ST QX2_6
35
36
Avertissement
Les exemples de masquage sont issus de Isagraf. Le _mask permettant de faire la diffrence avec les oprateurs logiques (sur bit). En fait, la norme ne fait pas la diffrence. Voir cet exemple sous Mitsubishi.
37
LD 16#800BAFFE ROL 2#1010 ST S1 LD 16#FFFFB0B0 ROR 16#10 ST S2 LD 16#800BAFFE SHL 16#A ST S3 LD 16#FFFFB0B0 SHR 16 ST S4
38
Conversion de type
Instruction de la forme *_TO_** permettant la conversion de type Exemple
A := INT_TO_REAL (198); (*A = 198.0 *)
39
40
41
(*utilisation*)
43
44
CTU
...
...
(*CTU*) IF R THEN CV := 0 ; ELSIF CU AND (CV < PVmax) THEN CV := CV+1; END_IF ; Q := (CV >= PV) ;
45
CTD
...
...
(*CTD*) IF LD THEN CV := PV ; ELSIF CD AND (CV > PVmin) THEN CV := CV-1; END_IF ; Q := (CV <= 0) ;
LD
46
CTUD
... ...
R LD
(*CTUD*) IF R THEN CV := 0 ; ELSIF LD THEN CV := PV ; ELSE IF NOT (CU AND CD) THEN IF CU AND (CV < PVmax) THEN CV := CV+1; ELSIF CD AND (CV > PVmin) THEN CV := CV-1; END_IF; END_IF; END_IF ; QU := (CV >= PV) ; QD := (CV <= 0) ;
47
48
TON
49
TOFF
50
Bascule RS & SR
SET RESET1 Q1 BOO BOO BOO si TRUE, force Q1 TRUE si TRUE, force Q1 FALSE (prioritaire) tat de la bascule
SET1 RESET Q1
51
52
53
54
Avantages
Standard International Pratiquement tous les grands constructeurs des automates proposent des plateformes orientes vers IEC 6 1131 - 3 Structures de linterface, langages et lorganisation des programmes sont uniformes Economie du temps Modle unique du software et des donnes pour les diffrents types dautomates Il suffit dapprendre une fois pour programmer les diffrents API Risque derreurs rduit Fonctions et Blocs Fonctionnels standard Rutilisation et portabilit du software
55
Avantages
Qualit de programmation Indpendance du constructeur et du type de lautomate Structuration des programmes et dclarations des variables comme dans des langages informatiques Utilisation de donnes types et programmation symbolique permettent dviter des erreurs de programmation
Le choix d un meilleur langage pour chaque problme 5 langages de programmation (textuels et graphiques) Possibilit de mixer diffrents langages dans le projet utilisateur
56
IEC 61131-3
www.plcopen.org
57
Un algorithme est un ensemble de rgles opratoires rigoureuses ordonnant, un processeur particulier d'excuter, dans un ordre dtermin, un nombre fini d'oprations lmentaires pour rsoudre tous les problmes d'un type donn.
NFZ 61-100
Dbut, fin, interruption Dbut, fin ou interruption d'un programme, point de contrle, Symbole gnral "traitement" Opration ou groupe d'oprations sur des donnes, instructions Entre-sortie Mise disposition d'une information traiter ou enregistrement d'une information traite. Sous-programme Portion de programme considre comme une simple opration Embranchement ou test logique Prise en compte d'une condition variable impliquant un choix parmi plusieurs voies
59
Algorithmique en langage ST
structure conditionnelle : elle n'offre que deux issues possibles la poursuite de l'algorithme en s'excluant mutuellement. Structure itrative : la structure itrative rpte l'excution d'une opration ou d'un traitement. Structure de choix : elle permet d'effectuer des actions diffrentes suivant les valeurs que peut prendre une mme variable .
60
structure conditionnelle
[ IF THEN ELSE END_IF ]
Condition
Action 1
Action 2
(*EXEMPLE*) IF manual AND not (alarm) THEN level := manual_level; bx126 := bi12 OR bi45; ELSIF over_mode THEN level := max_level; ELSE level := (lv16 * 100) / scale; END_IF;
61
structure conditionnelle
[ IF THENEND_IF ]
Condition
Action
62
Structure itrative
[ REPEAT UNTILEND_REPEAT]
Action
Condition
63
Structure itrative
[ WHILE DO END_WHILE]
Action
(*EXEMPLE*) string := ''; (* chane vide *) nbchar := 0; WHILE ((nbchar < 16) & ComIsReady ( )) DO string := string + ComGetChar ( ); nbchar := nbchar + 1; END_WHILE;
64
Structure itrative
[ FOR TO BY DO END_FOR]
V = Vi
La mention [ BY n ] est optionnelle. Lorsquelle n'est pas spcifie, le pas d'incrment par dfaut est 1.
Action V = V n
V = Vf
(*EXEMPLE*) length := mlen (message); target := ''; (* chane vide *) FOR index := 1 TO length DO code := ascii (message, index); IF (code >= 48) & (code <= 57) THEN target := target + char (code); END_IF; END_FOR;
65
Structure de choix
[ CASE OF ELSE END_CASE ]
Cond. 1 Action 1
Cond. 2 Action 2
(*EXEMPLE*) CASE error_code OF 255: err_msg := 'Division by zero'; fatal_error := TRUE; 1: err_msg := 'Overflow'; 2, 3: err_msg := 'Bad sign'; ELSE err_msg := 'Unknown error'; END_CASE;
Cond. n
Action n+1
Action n
CASE var OF Valeur 1 : "action 1" Valeur 2 : "action 2" ......... Valeur n : "action n" ELSE action n+1 END_CASE
66
C1
C2
(*Ci ralise le test (var = valeur i) *) IF C1THEN ACTION1 ELSIF C2 THEN ACTION2 ELSE ACTION3 END_IF
ACTION 1
ACTION 2
ACTION3
67
Programmation en IL
[ IF THEN ELSE END_IF ]
Condition
Action 1
Action 2
LD condition JMPNC action2 (*saut a ltiquette action2 si condition est faux*) (* ici la description de l'action 1*) JMP suite (*traitement de l'action 1 termine. poursuite du programme*) action2: (* ici la description de l'action 2*) suite: (* ici la suite du traitement *)
68
Programmation en IL
[ WHILE DO END_WHILE]
Condition
Action
debut : LD condition JMPNC suite (*la condition est fausse, donc on saute la suite *) (* ici la description de l'action *) JMP debut (*on retourne tester la condition* ) suite: (* ici la suite du traitement *)
69
GS1
ST
(Temp1>2000) AND (Press > 20) Bear1 Tank1
FBD
MotorChecks Vibration Go Fuel
PreCheck
GS2
Power
GS1.X
LD
%IX4
GS1
Sw1
71
72
Qualifier None N R S L D P SD DS SL
Explanation Non-stored (null qualifier) Non-stored overriding Reset Set (Stored) time Limited time Delayed Pulse Stored and time Delayed Delayed and Stored Stored and time Limited
73
Ralisation De to/Xi
S1
S1
3s/X1
S2 S2
S1.t >=t#3s
74
1
%MX2
3s/X1
2
%T0 S1.X t#3s TON IN1 OUT IN2 %MX2
75
Exemple isagraf
drapeau dtape (ou variable dtape) GS*.x pour isagraf ou X* pour pl7 Dure dactivation GS*.t pour isagraf et X*.v pour pl7
76
C:=C+1 C=3
C:=0
77
2 2
C<3 C:=C+1 C=3 Not %MX2 %MX2
C:=0
S2.X S1.X 3
CTU CU Q RESET PV
%MX2
78
Structuration
Structure
79
Si les Instructions de forages ne sont pas dfinis dans la norme IEC 61131, les ateliers constructeurs offrent parfois des possibilits de hirarchisation
Le pre donne naissance au fils (GSTART) Le pre tue le fils (GKILL) Le pre gle le fils (GFREEZE) %S21 pour G7 { INIT} %S23 pour G7 {*}
80