AI1 Chap 4 Programmation API PDF
Document Details
Uploaded by Deleted User
ENSTA Paris
N. GHAZI
Tags
Summary
This document is a chapter from a course on industrial automation, focusing on API programming languages. It details various programming languages, including structured text (ST) and instruction list(IL). It also includes information on the IEC 61131 standard for automation.
Full Transcript
املدرسة الوطنية العليا للتكنولوجيات املتقدمة 1 Ecole Nationale Supérieure des Technologies avancées Département Génie Industriel et Maintenance 2ème année du cycle ingénieurs : GI – MIMI – MECA Chapit...
املدرسة الوطنية العليا للتكنولوجيات املتقدمة 1 Ecole Nationale Supérieure des Technologies avancées Département Génie Industriel et Maintenance 2ème année du cycle ingénieurs : GI – MIMI – MECA Chapitre 4 Les langages de programmation API Automatismes Industriels 1 N. GHAZI 1. Introduction : Contexte Industriels ❑ L'évolution rapide de la technique d'automatisation a donné naissance à une multitude de langages et dialectes. ❑ La base de langage commune s'est de plus en plus perdue, causant des problèmes de communication entre les différents automates. ❑ La Commission Internationale pour l'Electrotechnique (CEI) sous la présidence des Etats- Unis a établi le standard pour l'automatisation : La norme CEI 61131 donnant ainsi une base unifiée aux techniques d'automatisation. 2. La normes API CEI 61131 ❑ La norme CEI 61131 couvre l’intégralité su cycle de vie des automates programmables industriels. ❑ Elle s’applique 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 ❑ La norme IEC 61131 est composée de 7 parties : 1) IEC 61131-1 : Aperçu général et définitions : Définition générale de la terminologie et des concepts. 2) IEC 61131-2 : Structure matériel : exigences sur le matériel électronique et mécanique et tests de contrôle des API et des équipements associés 3) IEC 61131-3 : Langages de programmation 4) IEC 61131-4 : Guide utilisateur : conseils de sélection, d’installation et maintenance des API. 5) IEC 61131-5 : Communication entre automates de différents fabricants : Fonctions logicielles pour la communication avec d’autre appareils selon la norme MMS (Manufacturing Messaging Specification). 6) IEC 61131-6 : Communications via les fonctions logicielles de bus de terrain. 7) IEC 61131-7 : Contrôle flou : programmation par logique floue. 8) IEC 61131-8 : Guide pour application et implémentation : Conseils d’implémentation des langages de programmation définis à la partie 3 de la norme. 3. La normes CEI 61131-3 : Programmation API ❑ La section 61131-3 définit les langages de programmation des API. ❖ Les langages de programmation d’API les plus répandus dans le monde ont été harmonisés et ont donné naissance à 5 langages de programmation. ❖ Cette norme définit cinq langages de programmation des automates programmables qui sont classer suivant trois catégories : A. Langages littéraux 1) Langage Instruction List (IL) : liste d’instructions 2) Structured Text (ST) : Texte structuré ou littéral structuré B. Langages graphiques 3) Ladder Diagram (LD) : Langage à contact 4) Function Block Diagram (FBD) Langage: Diagrammes des schémas fonctionnelles ou à blocs fonctionnels basé sur le langage booléen (logigramme). 5) Sequential Function Chart (SFC) : Graphes de fonction séquentielle ou suite de séquences, basé sur le langage GRAFCET ❑ Elle Spécifie la syntaxe, la sémantique et la représentation des langages de programmation devant être utilisés pour les API Définition d’un dénominateur commun de règles et d'éléments y est défini Définition de la structuration du programme en fonctions et blocs fonctionnels. Amélioration de la compréhension, de l'application et de l'implémentation de ces langages Résultat Chaque API possède son propre langage Mais les constructeurs proposent tous une interface logicielle répondant à la norme CEI1 1131-3. 4. La programmations des API ❑ Un projet est composé de configurations. ❑ Une configuration est une description d’un système d’automate programmables ou une plate-forme matérielle composée elle-même d’une ou plusieurs ressources. ❑ Une ressource représente un cycle automate (ou noyau cible). chacune des ressources est divisée en plusieurs unités de programmation appelées POUs (Program Organization unit). Elle Contient un ou plusieurs programmes exécutés sous le contrôle de zéro ou plusieurs tâches. ✓ Les POUs d’une ressource sont organisés en une architecture hiérarchisée. ✓ Les POUs peuvent être des programmes, des fonctions ou des blocs fonctionnels ✓ Les programmes peuvent être décrits avec les langages graphiques ou textuels SFC, FBD, LD, ST ou IL. 4. La programmations des API Architecture de commande ❑La norme IEC 61131-3 définit des unités d’organisation de programmes qui sont : 1) La fonction 2) Le bloc fonctionnel 3) Le programme ❑Les unités sont fournies par le constructeur ou programmées par l’utilisateur ❑Les unités d’organisations ne sont pas restrictives ❑ Des facilités sont offertes au niveau des outils pour définir de façon structurée les architectures matérielles et logicielle : ✓ Rack, Alimentation ✓ Processeur ✓ Cartes utilisées ✓ Tâches, programmes, FB … ❑Ainsi pour les configurer et les paramétrer : ✓ Définition des tâches ✓ Définition des symboles associés aux E/S 4. La programmations des API ❑ Un programme est une unité logique de programmation qui décrit des opérations entre les variables de l’application. Un programme décrit des opérations séquentielles ou cycliques. Un programme cyclique est exécuté systématiquement à chaque cycle automate. L’exécution d’un programme séquentiel respecte les règles d’évolution du langage SFC. ❑ L’écriture d’un programme consiste à créer une liste d’instructions permettant l’exécution des opérations nécessaires au fonctionnement du système. ❑ Les programmes sont organisés dans un système hiérarchique arborescent. Ceux placés au sommet de la hiérarchie, programmes principaux, sont activés par le système. ▪ La description d’un programme peut être réalisée à l’aide de langages graphiques ou textuels. ▪ Plusieurs langages ne peuvent pas être utilisés dans un même programme, à l’exception des langages LD et FBD qui peuvent être mêlés dans le même diagramme. ❑ L’API traduit 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. ❑ Chaque instruction du programme est composée : ▪ de l’opération à effectuer ( la nature de l’opération est codée 1 ou 0). ▪ de la variable sur laquelle l’opération va être effectué (variable de sortie, variable d’entrée, variable interne,…) ▪ de la nature de la variable (binaire, numérique, texte, …) ❑ Chaque instruction est écrite dans une partie de la mémoire appelée adresse ou label. 4. La programmations des API La programmation s’effectue au moyen d’un terminal de programmation qui permet également la mise en service ainsi que le réglage des variables internes. Ce terminal de programmation peut être utilisé: En mode local : Préparation du programme en bureau d’étude. Ou relié à l’API afin de transférer le programme et de réaliser la mise en service. Lecture du programme En fonctionnement, le microprocesseur de l’API lit en permanence le programme et exécute les instructions les unes à la suite des autres. Traitement interne L’ensemble de ces tâches réalisées par le microprocesseur s’appelle une scrutation. Acquisition des entrées (%i) Une sortie spécifique de l’automate qui change d’état lorsqu’une défaillance de l’automate survient permet de Traitement du programme couper le circuit d’arrêt d’urgence du système, cette sortie de sécurité est appelée chien de garde. Mise à jour des sorties (%Q) La lecture du programme est conditionné par la fonction RUN / STOP de l’API. (Marche/Arrêt) 5. Eléments communs aux différents langages 5.1. Principaux types de données élémentaires ❑Toutes les données doivent être déclarées et initialisées avant d’être utilisées ( possibilité de les initialiser avec des valeurs par défaut. ❑Toute expression, constante ou variable, utilisée dans un programme doit être caractérisée par un type. La cohérence des types doit être respectée dans les réseaux graphiques et les énoncés textuels. ❑La norme IEC 61131-3 définit des types de données élémentaires présentés dans le tableau suivant. Tableau 1 Type de données Description Taille ou nombre de bits Etendue BOOL Booléen 1 0 ou 1 (FALSE – TRUE) BYTE Cordon de 8 bits 8 0... 255 WORD Cordon de caractères de longueur 16 16 0... 65535 DWORD Cordon de caractères de longueur 32 32 0... 4294967295 LWORD Cordon de caractères de longueur 64 64 0... + INT Entier signé n=16 -2 n-1 à + (2n+1 – 1) UINT Entier non signé n=16 0 à (2n – 1) REAL Nombre réel 32 Virgule flottante STRING Cordon de caractères Encadré par deux apostrophes ‘a’ ou ‘9’ TIME Durée Dépend de l’application concernée 5. Eléments communs aux différents langages 5.1. Principaux types de données élémentaires Dates et Durée SYMBOLE DESCRIPTION Exemples Durée (type d Jour (24 h) T#14ms TIME) h Heure ou TIME#14ms m Minute T#5d_4h_23m_12s_45ms s Seconde ou TIME#5d_4h_23m_12s_45ms ms Milliseconde T# ou t# Préfixe court d'une durée TIME# ou time# Préfixe long d'une durée Date and time D# ou Date D#2005-10-22 DATE# ou DATE#2005-10-22 TOD# ou Heure du jour TOD#18:11:54 TIME_OF_DAY# ou TIME_OF_DAY#18:11:54 DT# ou Date et Heure DT#2005-10-22-18:11:54 DATE_AND_TIME# ou DATE_AND_TIME#2005-10-22-18:11:54 5. Eléments communs aux différents langages 5.2. Déclaration des variables ❑Chaque unité d’organisation comporte une partie déclaration des variables. ✓ VAR, VAR_INPUT, VAR_OUTPUT, VAR_GLOBAL, VAR_EXTERNAL, RETAIN… END_VAR ❑Le champ d’application des déclarations est local à l’unité d’organisation de programme qui le contiens sauf : ✓ Si les variables ont explicitement été déclarées comme entrées ou sortie de ces unités. ✓ Si les variables ont été déclarées globales : VAR_EXTERNAL compatible avec le type déclaré dans le type VAR_GLOBAL du programme. ❑La déclaration des variables comporte les nombreux champs suivant : VAR_ AT : ; END_VAR ❑Les champs « Usage » et « Usage option » permettent de définir la catégorie de la variable. 5. Eléments communs aux différents langages 5.2. Déclaration des variables Mot clé Variable usage VAR Variable interne à une unité d'organisation VAR_GLOBAL Variable globale VAR_EXTERNAL Alimentée par une configuration via VAR_GLOBAL. Peut être modifiée sans unité d'organisation. VAR_TEMP Variable temporaire pour bloc fonctionnel et programme. VAR_ACCESS Chemin d'accès. VAR_INPUT Alimentée par une entité externe. Ne peut pas être modifié par une unité d'organisation. C'est typiquement une variable représentant une entrée physique ou une entrée d'un bloc fonctionnel. VAR_OUTPUT Alimentée par une unité d'organisation pour une entité externe. C'est typiquement une variable représentant une sortie physique ou une sortie d'un bloc fonctionnel. VAR_IN_OUT Alimentée par une entité externe. Peut être modifiée sans unité d'organisation. C'est par exemple une variable représentant à la fois une entrée et une sortie d'un bloc fonctionnel. VAR_CONFIG Utilisé pour la déclaration d'une configuration Mot clé Variable usage option CONSTANT Pour la déclaration d'une constante. RETRAIN Variable permanente (« retentive »). NON_RETRAIN Variable non permanente. AT Localisation 5. Eléments communs aux différents langages 5.3. Représentation des variables ❖ Une variable permet d’identifier des objets de données dont le contenu peut varier. Les données sont associes Aux entrées de l’API aux sorties de l’API ou aux emplacements mémoire de l’API 5.3.1. Représentation directe des variables : Adressage des variables ❑ représentation directe de la correspondance entre variable et emplacement physique ou logique de l’élément adressé en mémoire, en entrée ou en sortie de l’automate programmable. La représentation directe d'une variable comporte les trois champs suivants : % ❖ Le tableau suivant permet de représenter symboliquement une variable. 1er Préfixe de localisation I Input :Emplacement d’une entrée automate Exemples : Q Output : Emplacement d’une sortie automate M Emplacement de mémento ou mémoire interne 1) %IW123 : Emplacement du mot d’entrée 123 2ème Préfixe de taille 2) %QB25 : Emplacement de l’octet de sortie 25 X Taille d’un seul bit 3) %MD43 : Emplacement du mot mémoire B Taille d’un byte ou octet double 43 W Taille d’un word : mot de 16 bits D Taille d’un double Word : mot double de 32 bits L Taille d’un mot long : mot de 64 bits 5. Eléments communs aux différents langages 5.3. Représentation des variables 5.3.2. Variables « Déclaration des tableaux » Types de données structurées ▪ Des variables tableaux composés de données d’un même type, référencées par un ou plusieurs indices mis entre crochets et séparés par des virgules. ▪ La déclaration des tableaux ce fait grâce aux mots clé ARRAY et OF. ▪ Le champ Type de la déclaration des variables s'exprime de la façon suivante : ARRAY[1 , …, j] OF type_j ARRAY [] OF ✓ Des types structurés enregistrement de sous-élément des types STRUCT type_1 : Real; type-2 : Time; END_STRUCT ❑ Types des données dérivés : ✓ Utilisés dans les déclarations de variables en plus des élémentaires. La structures de ces types sera préalablement définit par l’utilisateur ou le constructeur TYPE T1 : ARRAY[1 … 16] OF T2 T3: STRUCT … END_STRUCT END_TYPE 5. Eléments communs aux différents langages 5.3. Représentation des variables ❑ Variables « Déclaration des tableaux » : Types de données structurées ▪ Exemples Déclaration Commentaires VAR_INPUT Déclaration de variables d'entrée TempFour AT %IW5.1 : INT; TempFour représente l'entrée 16 bits localisée en 5.1 VerouPorte AT %IX6.3 : BOOL; VerouPorte représente l'entrée TOR localisée en 6.3 END_VAR VAR Déclaration de variables internes EcTemp AT %MW0 : INT; EcTemp représente un mot mémoire 16 bits localisé en 0 ConsTempFour AT %MW2 : INT := 25 ConsTempFour représente un mot mémoire 16 bits localisé en 2 END_VAR VAR_GLOBAL Déclaration de variables globales Delay AT %MD24 : TIME; Delay représente une variable mémoire de type TIME localisée en 24 NbPoint AT %M* : INT := 10; NbPoint représente une variable mémoire de type INT initialisée à 10 non P0 AT %M* : Point; localisée Traj AT %M* : ARRAY [0..20] OF Point; P0 représente une variable mémoire de type Point (exemple 3.3.3) non localisée END_VAR Traj représente un tableau mémoire de 20 éléments de type Point non localisée VAR_GLOBA L CONSTANT Déclaration d'une constante NbMaxPoint AT %M* : INT := 20; NbMaxPoint représente la constante 20. Cette valeur n'est pas modifiable END_VAR 5. Eléments communs aux différents langages 5.3. Représentation des variables ❑ Variables « Déclaration des tableaux » : Exemples Déclaration Commentaires VAR_GLOBAL RETAIN Déclaration de variables « retentive » NumSerie AT %M0 : INT; NumSerie représente un entier 16 bits Client AT %M2 : STRING; Client représente une chaîne de 30 caractères END_VAR Ces deux variables sont dites « retentive » (permanentes) c'est-à-dire que ces variables ne seront réinitialisée uniquement par un « cold restart » (Démarage à froid). VAR_INPUT Déclaration des variables d'un bloc fonctionnel IN : BOOL ; IN de type BOOL et DELAY de type TIME sont deux entrées pour le bloc DELAY : TIME ; fonctionnel considéré. END_VAR VAR_OUTPUT IN et DELAY ne peuvent pas être modifiée par le bloc fonctionnel. Q : BOOL ; Q de type BOOL est une sortie pour le bloc fonctionnel considéré. Q est calculée par END_VAR le bloc fonctionnel. VAR_IN_OUT SOM est à la fois une entrée et une sortie du bloc fonctionnel considéré. SOM, bien SOM : REAL ; qu'en entrée du bloc fonctionnel, peut être modifiée par ce dernier. END_VAR 5. Eléments communs aux différents langages 5.4. Unités d’organisation de programmes ❑ Un programme CEI 61131 est organisé au travers d’unités d’organisation de programme. ❑ Ces unités d’organisation de programme (POU) sont généralement constituées d’une partie déclarative (en-tête) et d’une partie comportant les instructions (corps). ✓ La partie déclarative contient les données, c-à-d toutes les variables, les drapeaux, entrées/sorties, qui sont utilisés dans le corps de programme. ✓ La partie instructions contient le programme effectif. Celle-ci est programmée dans l’un des langages IEC LT, TS, SR, LOG ou GRAFCET. ❖ la structuration d’un programme est établie grâce à 3 types d’unités Fonction : Module ayant plusieurs entrées possibles, une seule variable de sortie et pas de mémoire interne Bloc fonctionnel: Module ayant plusieurs variables d’entrée et de sortie possibles et une mémoire interne Programme : Module construit à l’aide de fonctions et de blocs fonctionnels ❑Les fonctions et les bloc fonctionnels sont des « unités d'organisation de programme » communes à tous les langages de programmation. 5. Eléments communs aux différents langages 5.5. Les Fonctions 1. Définition ❑Une fonction est une unité d'organisation de programme qui, lorsqu'elle est exécutée, fournit exactement un élément de donnée (valeur, structure, tableau,...). C'est un opérande dans une expression. ❑Une fonction ne comporte aucune information concernant son état interne c'est-à-dire que le lancement d'une fonction dotée des mêmes paramètres d'entrée donne toujours la même valeur de sortie. 5. Eléments communs aux différents langages 5.5. Les Fonctions 2. Fonctions standards 2.1 Les fonctions de conversion ❑Les fonctions de conversion permettent de changer le type d'une valeur. Par exemple la fonction BOOL_TO_INT transforme une valeur booléenne en une valeur entière 16 bits. Fonction Exemple Symbole Conversion de Cette fonction permet la conversion d’une variable d’entrée types du type réel en une variable de sortie du type entier 5. Eléments communs aux différents langages 5.5. Les Fonctions 2. Fonctions standards 2.2 Les fonctions numériques Fonction I/O type Description ABS ANY_NUM Valeur absolue SQRT ANY_REAL Racine carrée LN ANY_REAL Logarithme népérien LOG ANY_REAL Logarithme décimal EXP ANY_REAL Exponentiel SIN ANY_REAL Sinus (angle exprimé en radian) COS ANY_REAL Cosinus (angle exprimé en radian) TAN ANY_REAL Tangente (angle exprimé en radian) ASIN ANY_REAL Principal arc sinus (résultat en radian) ACOS ANY_REAL Principal arc cosinus (résultat en radian) ATAN ANY_REAL Principal arc tangente (résultat en radian) 5. Eléments communs aux différents langages 5.5. Les Fonctions 2. Fonctions standards 2.2 Les fonctions numériques Fonction Symbole I/O Type Description ADD + ANY Addition SUB - ANY Soustraction MUL * ANY_NUM Multiplication DIV / ANY_NUM Division MOD ANY_INT Reste de la division entière EXPT ** ANY_REALANY_NUM Puissance (IN1IN2) MOVE := ANY Affectation 2.3 Les fonctions de sélection et de limitation Fonction I/O type Description SEL BOOL – ANY Sélection binaire MAX ANY_NUM Retourne la valeur maximum MIN ANY_NUM Retourne la valeur minimum MUX ANY_INT – ANY Multiplexeur LIMIT ANY_NUM Retourne la valeur d'entrée seuillée par min et max 5. Eléments communs aux différents langages 5.5. Les Fonctions 2. Fonctions standards 2.4 Les fonctions logiques Fonction I/O type Description AND BOOL Opérateur logique ET OR BOOL Opérateur logique OU NOT BOOL Opérateur logique NON XOR BOOL Opérateur logique OU Exclusif SHL ANY_INT Décalage à gauche de N bits SHR ANY_INT Décalage à droite de N bits ROL ANY_INT Rotation à gauche de N bits ROR ANY_INT Rotation à droite de N bits 5. Eléments communs aux différents langages 5.5. Les Fonctions 2. Fonctions standards 2.5. Les fonctions de comparaison Fonction Symbole I/O type Description GT > ANY – BOOL Strictement supérieur GE >= ANY – BOOL Supérieur ou égal EQ = ANY – BOOL Egal LT < ANY – BOOL Strictement inférieur LE = PV Alors Q = TRUE END_VAR Sinon Q = FALSE Fin de Si Décompteur VAR_INPUT VAR_OUTPUT Si LD Alors CV = PV CD : BOOL; Q : BOOL; Sinon Si CD et CV > PVmin alors CV = CV - 1 LD : BOOL; CV : ANY_INT; Fin de Si PV : ANY_INT END_VAR Si CV PVmin alors CV = CV – 1 PV : ANY_INT Fin de Si END_VAR Fin de Si Si CV >= PV Alors QU = TRUE Sinon QU = FALSE Fin de Si Si CV = TempFourMax)) ST S1 (* S1 = Accu *) CAL Tempo(IN:=S1, PT:=T#5s) (* Exécution de l'instance Tempo *) LD Tempo.Q (* Accu = Tempo.Q *) ST Alarm (* Alarm = Accu *) 9. Langage IL (Instruction List) Codes mnémoniques de quelques instructions Le tableau suivant recense quelques codes utilises par certain fabricants et les instructions normalisées correspondantes : CEI 61131-3 Mitsubishi OMRON Siemens Opération Langage a contacts LD LD LD A Charger l’opérande dans un Commencer une ligne avec des registre de résultat. contacts ouverts. LDN LDI LD NOT AN Charger l’opérande inverse Commencer une ligne avec des dans un registre de résultat contacts fermes AND AND AND A ET booléen. Eléments en série avec des contacts ouverts. ANDN ANI AND NOT AN ET booléen avec un opérande Eléments en série avec des contacts inverse fermes OR OR OR O OU booléen. Eléments en parallèle avec des contacts ouverts. ORN ORI OR NOT ON OU booléen avec un opérande Eléments en parallèle avec des inverse. contacts fermes. ST OUT OUT = Stocker un registre de résultats Une sortie dans un opérande. 9. Langage IL (Instruction List) Exemple 1 1) Selon la norme CEI 61131-3 : LD A (* LD A est ainsi une instruction qui charge A dans le registre mémoire *) AND В (* effectue une opération booléenne ET entre A et B. *) ST Q (* place ou stock le résultat dans la sortie Q.*) 2) Programme et schéma a contacts correspondants saisies à l’aide des mnémoniques de : LD X400 A I0.1 AND X401 A I0.2 OUT Y430 = Q2.0 Mitsubishi Siemens Remarque : ❑ Pour les operateurs de la norme CEI 6113-1, l’ajout d’un N a la fin de leur mnémonique indique une valeur inversée. Exemple : LD A (* Charger A *) ANDN В (* ET NON B *) 9. Langage IL (Instruction List) Exemple 2 1) Selon la norme CEI 61131-3 : LDN A (* LD A est ainsi une instruction qui charge A dans le registre mémoire *) ORN В (* effectue une opération booléenne OU entre les opérandes A et B inversés *) ST Q (* place ou stock le résultat dans la sortie Q*) 2) Programme et schéma a contacts correspondants saisies à l’aide des mnémoniques de : Mitsubishi AN I0.1 ON I0.2 = Q2.0 LDI X400 (* charger un contacts normalement fermes X400 *) Siemens ORI X401 (* placer en parallèle contacts normalement fermes X401*) OUT Y430 (* place ou stock le résultat dans la sortie Y430*) 9. Langage IL (Instruction List) Exemple 3 1) Selon la norme CEI 61131-3 : LD A (* LD A est ainsi une instruction qui charge A dans le registre mémoire *) OR В (* effectue une opération booléenne OU entre A et B. *) ST Q (* place ou stock le résultat dans la sortie Q.*) 2) Programme et schéma a contacts correspondants saisies à l’aide des mnémoniques de : LD X400 A I0.1 OR X401 O I0.2 OUT Y430 = Q2.0 Mitsubishi Siemens 9. Langage IL (Instruction List) Exemple 4 1) Réalisation d’un ou exclusif par un programme et schéma a contacts correspondants saisies à l’aide des mnémoniques de Mitsubishi : LD X400 (* charger un contacts normalement ouvert X400 *) ANI X401 (* placer en série le contact normalement fermé X401*) LDI X400 (* charger un contacts normalement fermes X400*) AND X401 (* placer en série contacts normalement ouvert X401*) ORB (* indique a l’АР1 qu’il doit effectuer un OU entre le résultat des deux premières instructions et le résultat de la nouvelle ligne, qui contient les troisième et quatrième instructions. *) OUT Y430 Remarque : ✓ Lorsqu’un I est ajoute a une instruction Mitsubishi, il indique une opération inverse. Le N indiqué par la norme n’est pas rappliqués ✓ Le mnémonique ORB réalise un OU logique entre des branches/blocs 9. Langage IL (Instruction List) Exemple 4 2) Réalisation d’un ou exclusif par un programme et schéma a contacts correspondants saisies à l’aide des mnémoniques de Siemens : Étape Instruction 0 A( 1 A I0.0 2 AN I0.1 3 ) 4 O( Les parenthèses indiquent que certaines instructions forment un bloc. 5 AN I0.0 Elles jouent le même rôle que les parenthèses dans une équation 6 A I0.1 mathématique. Pour l’instruction A : La parenthèse ouverte à l’étape 0 est fermée a 7 ) l’étape 3. Cela signifie que l’instruction A de l’étape 0 est appliquée 8 = Q2.0 uniquement après l’exécution des instructions des étapes 1 et 2. 9. Langage IL (Instruction List) Exemple : ❑ Soit à commander une électrovanne EV du schéma TI suivant : ❑ Le programme en liste d’instruction équivalent au fonctionnement est le suivant : Etiquette Opérateur Opérande Commentaire (non obligatoire) (non obligatoire) Début : AND ( LD %I0.0 BP Marche NO OR %Q4.0 Electrovanne ) AND %I0.1 BP Arrêt NF ANDN %I0.2 Niveau haut NO ST %Q4.0 Affectation électrovanne Programmation du logiciel STEP7 de Siemens : Etiquette Opérateur Opérande Commentaire Schéma a contacts correspondants (non obligatoire) (non obligatoire) Début : A( A %I0.0 BP Marche NO O %Q4.0 Electrovanne ) A %I0.1 BP Arrêt NF AN %I0.2 Niveau haut NO = %Q4.0 Affectation électrovanne 10. Langage ST ❑Le langage ST pour Structured Text ou langage littéral structuré est composé d’expressions littérales constituées d’opérateurs et d’opérandes et d’énoncés. ❑ Ce langage est un langage de programmation structuré et proche d’un langage informatique comme le PASCAL. C’est un langage textuel de haut niveau. Il permet la programmation de tout type d’algorithme plus ou moins complexe C’est un langage performant et adapté aux systèmes d'automatisation ❑Les programmes sont écrits sous forme d’une suite d’instructions séparées par des points-virgules. Il s’agit d’instructions prédéfinies et de sous-routines qui permettent de modifier des variables, celles-ci étant des valeurs définies, des valeurs mémorisées de manière interne ou des entrées et des sorties. ❑Les expressions sont composées d’opérateurs et d’opérandes. ❑La structure général d'une instruction est la suivante : :=.... ; ▪ Chaque instruction se termine par le caractère « ; » 10. Langage ST 10.1. Les opérateurs ❑ Les opérateurs du langage ST sont représentés dans le tableau suivant : Opération Symbole Précédence Expression parenthésée (...) La plus élevée Liste des paramètres d'une fonction Function(...) Affectation := Opérateurs Addition + arithmétiques Soustraction - Multiplication * Division / Modulo : reste de division entière MOD Puissance ** Opérateurs de Comparaison ,= comparaison Egalité = Différence Opérateur ET booléen AND logique Complément (négation logique) - , NOT OU exclusif booléen XOR OU booléen OR La plus basse 10. Langage ST Exemples 1) Lampe est allumée ou éteinte par l‘interrupteur A. Lampe := InterrupteurA; 2) Lampe allumée par l’interrupteur A ou par I’interrupteur B. Lampe := InterrupteurA OR InterrupteurB; 3) La mise en marche se produit lorsque le détecteur de vapeur et la pompe sont actifs. Marche := Vapeur AND Pompe; 𝐴 𝐵 4) Calcul de l’expression : 𝑄 = + 3 3−𝐶 Q := A/3 + B/(3 - C); 10. Langage ST ❑ Le texte structure n’est pas sensible a la casse, les lettres majuscules ou minuscules peuvent donc être utilisées. ❑ les espaces ne sont pas obligatoires, mais elles permettent d’obtenir un code plus clair, tout comme l’indentation des lignes. ❑ Les identités des variables représentées directement commencent par le caractère % et sont suivies d’un code sur une ou deux lettres, qui indique si l’emplacement mémoire est associe a une entrée, une sortie ou à la mémoire interne, et s’il correspond à des bits, des octets ou des mots. Par exemple : %IX100 (*Bit mémoire de 1’entree 100*) %ID200 (*Mot mémoire de 1’entree 200*) %QX100 (*Bit mémoire de la sortie 100*) ▪ La première lettre est un : 1) I pour un emplacement mémoire d’entrée, 2) Q pour un emplacement mémoire d’une sortie 3) M pour un emplacement mémoire interne. ▪ La deuxième lettre est : 1) X pour un bit, 2) В pour un octet (huit bits), 3) W pour un mot (seize bits), 4) D pour un mot double (trente-deux bits) 5) L pour un mot long (soixante-quatre bits). ❑ L’operateur AT permet de fixer l’emplacement mémoire d’une variable, par exemple : Entrée1 AT %IX100; (* Entrée1 correspond au bit mémoire de l’entrée 100 *) 10. Langage ST 10.2. Instruction conditionnelle La combinaison IF... THEN... ELSE est utilisée pour exécuter des instructions sélectionnées lorsque certaines conditions se réalisent : Pseudo langage Structured Text Langage C Si (évaluation logique ) IF évaluation logique if (évaluation logique ) Alors THEN { Bloc action 1 Bloc action 1 ; Bloc action 1 ; } Sinon Si (évaluation logique) ELSIF évaluation logique else if (évaluation logique ) alors THEN { Bloc action 2 Bloc action 2 ; Bloc action 2 ; }....................................................................................................................................... Sinon ELSE else Bloc action 3 Bloc action 3 ; { Fin de Si END_IF ; Bloc action 3 ; } 10. Langage ST Exemple 1) si la variable de température du fluide est active, c’est-a-dire à 1, les actions qui viennent après cette ligne dans le programme sont exécutées : IF temp_fluide THEN Bloc action END_IF; 2) si la variable de température du fluide n’est pas à 1, les actions qui viennent après cette ligne dans le programme sont effectuées : IF NOT temp_fluide THEN Bloc action END_IF; 3) Les actions qui viennent après l’instruction IF dans le programme sont exécutées si la variable 1 de température du fluide est a 1 ou bien si la variable 2 de température du fluide à 1 : IF temp_fluidel OR temp_fluide2 THEN Bloc action END_IF; 10. Langage ST Exemple 4 : IF (Fin_de_coursel AND Piece_presente) THEN Portel := Ouvert; Porte2 := Ferme; ELSE Portel := Ferme; Porte2 := Ouvert; END_IF; 10.Langage ST 10.3 Instruction de choix ❑ L’instruction CASE est utilisée pour exécuter des instructions lorsqu'une valeur entière particulière est rencontrée, sinon d’autres instructions sont exécutées. Pseudo langage Structured Text Langage C Décider sur (expression ) CASE expression switch (expression ) Entre OF { Val_1 : Val_1 : case Val_1 : Bloc action Bloc action Bloc action ; break ;................................................................................................................................. Val_2, Val_3,... : Val_2, Val_3,... : case Val_2 : Bloc action Bloc action case Val_3 : case.... Bloc action ; return(n) ;.............................................................................................................................. Val_i à Val_j : Val_i..Val_j : Pas de correspondance en C Bloc action Bloc action.............................................................................................................................. default : ELSE default : Bloc action Bloc action Bloc action ; Fin de Décider END_CASE ; } 10. Langage ST Exemple 1) Exemple, pour un controle de temperature, nous pouvons avoir le code suivant: CASE (Temperature) OF 0... 40 : Interrupteur_four := Marche; 40... 100 : Interrupteur_four := Arret; ELSE Interrupteur_four := Arret; END_CASE; 2) Les ventilateurs d’un moteur doivent tourner a des vitesses différentes en fonction de la position d’un interrupteur : CASE Configuration_vitesse OF 1: vitesse := 5; 2: vitesse := 10; 3: vitesse := 15; ventilol := Marche; 4: vitesse := 20; ventilo2 := Marche; ELSE vitesse := 0; defaut_vitesse := TRUE; END_CASE 10. Langage ST 10.4 Instructions répétitives ❑ Ces instructions permettent de répéter une ou plusieurs instructions un certain nombre de fois, en fonction de l’état d’une autre variable. Pseudo langage Structured Text Langage C Tant que (évaluation WHILE évaluation logique while (évaluation logique) La boucle WHILE... DO permet logique) DO { d’exécuter une ou plusieurs Bloc action ; Bloc action ; instructions tant qu’une Bloc action END_WHILE ; } expression booléenne reste vraie Répéter Répéter REPEAT do La boucle REPEAT... UNTIL { permet d’exécuter une suite Bloc action Bloc action ; Bloc action ; d’instructions et de la répéter } tant qu'une expression booléenne UNTIL évaluation logique while (évaluation logique ) ; reste vraie Tant que (évaluation END_REPEAT ; logique ) Pour variable = valeur FOR variable := valeur initiale for(variable = valeur initiale; La boucle FOR... DO permet de initiale TO valeur final variable valeur final; répéter une suite d’instructions Jusqu'à valeur final BY incrément variable += incrément) en fonction de la valeur d’une Par incrément DO { variable d’itération entière Faire Bloc action ; Bloc action ; Bloc action END_FOR ; } Fin de Pour 10. Langage ST Exemples Exemple 1 : la sortie diminue de 1 chaque fois que l’entrée, qui va de 10 a 0, diminue de 1. FOR Entree := 10 TO 0 BY -1 DO Sortie := Entree; END_F0R; Exemple 2: tant que EntreeA et EntreeB sont active alors la SortieQ est incrémentée de 1. SortieQ := 0; WHILE EntreeA AND EntreeB DO SortieQ := SortieQ + 1; END_WHILE; Exemple 3: répéter l’incrémentation de SortieQ jusqu’à ce qu’à l’arrivé d’un arrêt ou que la sortie soit supérieur à 5. SortieQ := 0 REPEAT SortieQ := SortieQ + 1; UNTIL (Entreel = Arret) OR (SortieQ > 5) END_REPEAT; 10. Langage ST 10.5. Ecriture des programmes 1) Types des données : Les programmes doivent commencer par la définition les types qui représentent les données : ❑ Exemple : TYPE Moteur: (Arrete, EnFonction); END_TYPE; TYPE Vanne: (Ouverte, Fermee); END_TYPE; TYPE Pression: REAL; (*La pression est une valeur analogique*) END_TYPE; 2) Déclaration des variables, c’est-a-dire les signaux issus des capteurs et les signaux de sortie qui seront utilises dans le programme : VAR_IN (*Entrees*) Defaut_Pompe: BOOL; (*Le défaut de fonctionnement de la pompe*) (*est une variable booléenne. *) END_VAR; VAR_OUT (*Sorties*) Vitesse_Moteur: REAL; END_VAR; 3) Des valeurs initiales doivent être données aux variables : VAR Temp: REAL = 100; (*La valeur initiale est un nombre analogique 100*) END_VAR; 10. Langage ST 10.5. Ecriture des programmes 4) Ecriture des instructions. Exemple : Si le test des tensions 1, 2 et 3 montre que l’une d’elles est supérieure a 12, la sortie SURTENSION est fixée a TRUE et l’instruction RETURN est invoquée pour terminer l’exécution du bloc fonctionnel. Par ailleurs, lorsque SURTENSION est a TRUE, une certaine action sera réalisée. FUNCTION_BLOCK TEST_VOLTAGE VAR_INPUT VOLTSl, VOLTS2, VOLTS3 END_VAR VAR_OUTPUT SURTENSION: BOOL; END_VAR IF VOLTSl > 12 THEN SURTENSION := TRUE; RETURN; END_IF; IF VOLTS2 > 12 THEN SURTENSION := TRUE; RETURN; END_IF; IF VOLTS3 > 12 THEN SURTENSION := TRUE; END_IF; END_FUNCTION_BLOCK;