NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables CEI 61131-3 Industriels Jean-Jacques DUMÉRY -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. C o n cep teu r P é r ip h é r iq u e s O p é r a te u r d e p ro gra m m e d 'a p p lic a t io n F o n c t i o n s d ' i n t e r f a c e H o m m e - M a c h i n e F o n c t i o n s d e c o m m u n i c a t i o n F on ct a lim e n ta tio n F o n c tio n d e tr a ite m e n t d es do nn ées E x é c u tio n d e s p ro g ra m m e s d 'a p p l i c a t i o n F o n c t i o n s : p r o g r a m m a t i o n , m i s e a u p o i n t e t t e s t F o n c t io n s d u s y s tè m e d 'e x p l o i t a t i o n F o n c tio n s d e l'a p p l i c a t io n F o n c t io n s d e sto c k a g e des données F o n c t i o n s d 'i n t e r f a c e a v e c le s c a p te u rs /a c tio n n e u rs A lim e n ta tio n p r in c ip a le M a c h in e -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 BOOL EN INT INT INT A B C ENO D BOOL INT -13- Exemple de déclaration de fonction Spécification du corps de F1 ADD F1_EN A B EN ENO MUL EN ENO F1_OK 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 SR BOOL S1 BOOL R Q1 BOOL Corps du B.F. SR >=1 S1 R Q1 & -17- Bloc fonctionnel instancié SR BOOL S1 BOOL R Q1 BOOL Il est possible de créer plusieurs instances d ’un même B.F. (dans un programme ou un autre B.F.) MEM_DEF M2_DEF SR SR %IX1.0 S1 %IX1.2 R Q1 %QX3.0 %IX1.2 S1 %IX2.0 R Q1 %QX3.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 RESSOURCE Station_2 RESSOURCE Station_1 TACHE maître_2 TACHE interrup_2 TACHE maître_1 TACHE rapide_1 PRG_F1 PRG_G1 PRG_F2 PRG_H2 PRG F PRG G PRG F PRG H x1 y1 x2 FB_A1 FB_B1 FB_A FB_B maître_1 rapide_1 x1 y1 x2 FB_C2 FB_E2 FB_C FB_E y2 maître_1 maître_2 z2 maître_2 z1 interrup_2 %QW5 W ALPHA BETA DEFAUT Chemins d'accè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 MEM_DEF SR %IX1.0 S1 %IX1.2 R Q1 %QX3.0 (*déclaration*) VAR MEM_DEF : SR; END VAR (*exécution*) 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 b c >=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 & CMD >=1 AUTO_MODE CMD_TMR MANU TON Q IN & MANU_VERIF PT TEMPS_MAX ET 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 * %MX10 R 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-