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. 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 te rrup _ 2 TACHE m a ître _ 1 TACHE ra p id e _ 1 PR G _F1 PR G _G 1 PR G _F2 PR G _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 te rrup _ 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 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 R * %MX10 a t67 ACTION_4 E7 t68 b 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-