Langages de programmation

Download Report

Transcript Langages de programmation

NORMALISATION DES
LANGAGES DE
PROGRAMMATION
des
Automates
Programmables
CEI 61131-3
Industriels
-1-
Plan de la présentation
• Présentation générale de la norme
• Les objectifs de la norme CEI 61131
• Les notions de base et les concepts importants
• les éléments communs aux différents langages
• Les langages de programmation
Quelques exemples d ’utilisation
• Conclusions
-2-
Les différentes parties de
la norme
Elles s ’appliquent aux automates
programmables et aux périphériques
associés tels que :
• Les outils de programmation et de
mise au point
• Les équipements de test
• les interfaces homme - machine
-3-
Les cinq parties de la CEI 61131
• 1ère partie :
Informations générales
• 2ème partie :
Spécifications et essais des
équipements
• 3ème partie :
Langages de programmation
• 4ème partie :
Guide pour l ’utilisateur
• 5ème partie :
Communications
-4-
Les premières références internationales
CEI 61131-1 et -2 : octobre 1992
CEI 61131-3
: mars 1993
CEI/TR3 61131-4 : mars 1995
CEI 62231-5
: août 1999
version préliminaire avant publication
Voir http://www.iec.ch
-5-
Les premières références européennes
NF EN 61131-1 : septembre 1994
NF EN 61131-2 : octobre 1996
NF EN 61131-3 : novembre 1993
Elles comportent en plus des CEI une annexe normative
(correspondances normes européennes et internationales)
Voir http://www.afnor.fr
-6-
Les objectifs de la norme
(trois premières parties)
• Donner les définitions et identifier les principales
caractéristiques permettant de sélectionner et
d ’utiliser les A.P.
• Spécifier les prescriptions électriques, mécaniques et
fonctionnelles ainsi que les méthodes de test et les
procédures à suivre pour vérifier la conformité avec
ces prescriptions
• Spécifier la syntaxe, la sémantique et la
représentation des langages de programmation
devant être utilisés pour les A.P.
-7-
Quelques définitions
•
Pour une configuration d ’A.P. :
- (procédure d ’) arrêt de sécurité,
- reprise à froid, à chaud et immédiate …
•
pour les langages :
- un délimiteur,
- un double mot, un mot long,
- une instance,
- une variable globale,
- un libellé,
- une donnée non volatiles,
- un champ d ’application ...
-8-
Structure fonctionnelle de base d ’une
configuration d ’A.P.
Concepteur
Périphériques
Opérateur
de programme
d'application
Fonctions
d'interface
Homme-Machine
Fonctions de
communication
Fonct
alimen
tation
Fonction de
traitement
des données
Exécution des
programmes
d'application
Fonctions :
programmation,
mise au point
et test
Fonctions
du système
d'exploitation
Fonctions
de l'application
Fonctions
de stockage
des données
Fonctions d'interface
avec les capteurs/actionneurs
Alimentation
principale
Machine
-9-
Partie 3 : langages de programmation
Notions de base
• MODULES LOGICIELS
(Program organization units)
- le PROGRAMME
(Program)
- le BLOC FONCTIONNEL (Function Block)
- la FONCTION
(Function)
• LES LANGAGES DE PROGRAMMATION
(dans lesquels les modules peuvent être écrits)
-10-
La fonction
• Module logiciel ayant :
- plusieurs variables d ’entrée possibles,
- une seule variable de sortie,
- pas de mémoire interne,
-
parfois une entrée EN (validation) et
une sortie ENO (pas d ’erreur).
-11-
Exemples de fonctions
- fonctions de conversion de type,
- fonctions arithmétiques,
- fonctions sur chaînes de bits,
- fonctions sur chaînes de caractères,
- fonctions de sélection et comparaison,
- ...
-12-
Exemple de déclaration de fonction
Spécification externe de F1
F1
BO
O
L
IN
T
IN
T
IN
T
EN EN
O BO
O
L
A
B
C
D
IN
T
-13-
Exemple de déclaration de fonction
Spécification du corps de F1
F
1
_
E
N
A
B
A
D
D
M
U
L
E
NE
N
O
E
N
E
N
O
F
1
_
O
K
D
C
-14-
Le bloc fonctionnel
• Module logiciel ayant :
- plusieurs variables de sortie possibles,
- une mémoire interne.
-15-
Exemples de blocs fonctionnels
- mémoires,
- détection de fronts,
- compteurs, temporisations,
- blocs de communication,
- ...
-16-
Exemple de bloc fonctionnel standard
S
R
B
O
O
L S
1 Q
1
B
O
O
L
Corps du B.F. SR
B
O
O
L R
>
=
1
S
1
R
Q
1
&
-17-
Bloc fonctionnel instancié
S
R
B
O
O
L S
1 Q
1
B
O
O
L
B
O
O
L R
Il est possible de créer plusieurs instances d ’un même B.F.
(dans un programme ou un autre B.F.)
M
2_D
E
F
M
E
M
_D
E
F
S
R
%
IX
1.0
S
1 Q
1
%
IX
1.2
R
S
R
%
Q
X
3.0
%
IX
1.2
S
1 Q
1
%
IX
2.0
R
%
Q
X
3.4
-18-
Le programme
• Module logiciel construit à l ’aide de :
- fonctions,
- et blocs fonctionnels.
Les programmes ne peuvent être instanciés que dans des RESSOURCES
Des VARIABLES GLOBALES pourront être déclarées
-19-
La configuration logicielle
CONFIGURATION Unité_1
R E S S O U R C E S ta tio n _ 2
R E S S O U R C E S t a tio n _ 1
TACHE
m aître_ 2
TACHE
in terrup _ 2
TACHE
m a ître _ 1
TACHE
ra p id e _ 1
PR G _F1
PR G _G 1
PRG _F2
PRG _H 2
PR G F
PR G G
PR G F
PR G H
x1
y1
x2
FB _A 1
FB _B 1
FB _A
FB _B
m a ît r e _ 1
r a p id e _ 1
x1
y1
x2
FB _C 2
FB _E 2
FB _C
FB _E
y2
m a ître _ 1
m a ître _ 2
z2
m aître_ 2
z1
in terrup _ 2
% QW5
W
A
L
P
H
A
B
E
T
A
D
E
F
A
U
T
C
h
e
m
i
n
s
d
'
a
c
c
è
s
-20-
Les éléments communs
aux différents langages
• Les identificateurs
ARRET_TECHN,
• Les mots clés
FUNCTION,
• Les commentaires
(*production normale*)
• Les libellés :
+234,
RETOUR_OK
END_FUNCTION_BLOCK
16#E0, ‘ ARRET ’, TIME#2.7s
numériques, de chaînes de caractères, de datation et de temps,
• Les types de données
• Les variables
-21-
Les types de données, exemples
BOOL
BYTE
WORD
DWORD
LWORD
INT
UINT
UDINT
Booléen
Chaîne de bits de longueur 8
Mot
Mot double
Mot long
Entier
Entier non signé
Entier double non signé
1 bit
8 bits
16 bits
32 bits
64 bits
16 bits
16 bits
32 bits
-22-
Les variables à un seul élément
PREFIXE
I
Q
M
X
Aucun
B
W
D
L
SIGNIFICATION
Emplacement d'entrée
Emplacement de sortie
Emplacement de mémoire
Taille d'un seul bit
Taille d'un seul bit
Taille d'un octet (8 bits)
Taille d'un mot (16 bits)
Taille d'un double mot (32 bits)
Taille d'un mot long (64 bits)
-22bis-
Représentation des variables
à un seul élément
La représentation directe d'une variable à un seul
élément est assurée par l ’enchaînement :
du signe "%",
d'un préfixe d'emplacement,
d'un préfixe de taille,
et d'un ou plusieurs entiers non signés
séparés par le symbole "."
Exemples : %I2.0, %Q3.2, %MD25
-23-
Les langages de programmation
• Les langages littéraux :
- IL
liste d ’instructions,
- ST
langage littéral structuré.
• Les langages graphiques :
- LD
langage à contacts,
- FBD
langage à blocs fonctionnels.
• Le langage SFC
-24-
Le langage IL
Etiquette
Opérateur
Opérande
Commentaire
MV1 :
LD
%IX1
(*Etiquette non oblig.*)
AND N
%MX5
ST
%QX2
(*Marche ventilateur*)
Des fonctions et des blocs fonctionnels peuvent être lancés en I L
-25-
Le langage ST
Le langage littéral structuré ST utilise :
- des expressions
(E<F) AND NOT C
- et des énoncés
les énoncés d ’affectation,
C := C + 1 ;
les énoncés de sélection,
IF ... THEN … ELSE …, CASE
les énoncés d ’itération,
FOR … TO …, WHILE … REPEAT ...
les énoncés de commande.
de fonctions et B.F.
-26-
Le langage ST
Exemple d ’un énoncé de commande
M
E
M
_D
E
F
S
R
%
IX
1.0
S
1 Q
1
%
IX
1.2
R
(*déclaration*)
VAR MEM_DEF : SR; END VAR
(*exécution*)
%
Q
X
3.0
MEM_DEF (S1 := %IX1.0, R := %IX1.2);
(*affectation*)
%QX3.0 := MEM_DEF.Q1;
-27-
Les langages graphiques LD et FBD
a
d
a
b
c
b
>
=
1
d
&
c
Langage LD
Langage FBD
-28-
Langage FBD, exemple
CMD_EXPLOITATION
BOOL
BOOL
BOOL
BOOL
TIME
BOOL
BOOL
AUTO
AUTO_MODE
MANU
MANU_VERIF
TEMPS_MAX
RETOUR_OK
ACQUIT
CMD
ALARME
BOOL
BOOL
Description externe
-29-
Langage FBD, exemple
AUTO
&
>=1
AUTO_MODE
CMD
CMD_TMR
MANU
TON
&
IN
Q
PT
ET
MANU_VERIF
TEMPS_MAX
ALARM_FF
&
RETOUR_OK
ACQUIT
SR
S1
Q1
ALARME
R
Description interne
-30-
Le langage SFC
Il est destiné à être utilisé pour la structuration
de l ’organisation interne d ’un module logiciel
dans le but d ’assurer :
des fonctions de commande séquentielle
-31-
Le langage SFC, remarques
Tous les langages peuvent être utilisés
dans les blocs d ’actions
%IX1
%MX3
S8.X
C
D
S5
Le parallélisme interprété est exclu
ACTION_4
S5
&
%QX17
E6
MEM_1
LT
SR
S1 Q1
R
*
%MX10
a
t67
ACTION_4
E7
b
t68
E8
%QX17 := %IX1 & %MX3 & S8.X ;
MEM_1 (S1 := (C<D)) ;
%MX10 := MEM1_Q ;
-32-
CONCLUSIONS
La norme CEI 61131-3 répond à une attente des
utilisateurs concernant les langages de programmation
des API :
-
harmonisation des vocabulaires utilisés,
- notions et concepts de base s’appuyant sur une norme,
- syntaxe et sémantique des langages les plus indépendants
possibles d’un constructeur d’API donné,
- facilité de mise en œuvre de principes tels que structuration et
modularité des programmes,
- Possibilité de définir ses propres blocs fonctionnels
« utilisateur »
Nécessité d ’une spécification structurée en amont de la
phase de codage
-33-