La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Automatismes Séquentiels

Présentations similaires


Présentation au sujet: "Automatismes Séquentiels"— Transcription de la présentation:

1 Automatismes Séquentiels
3 Cours, 3 Travaux Dirigés et 3 séances de TP de 4h

2 Plan du cours Partie 1: Les systèmes automatisés de production
Partie 2: L’Automate Programmable Industriel Partie 3: Langages de programmation des automates Partie 4: Le GRAFCET: Outils de description des automatismes Partie 5: Les Modes de Marches et d’Arrêts

3 Plan du cours Partie 1: Les systèmes automatisés de production
Exemples vidéos introductifs Pourquoi automatise-t-on? Schéma de principe d’un automatisme Différents moyens d’implanter une partie commande Partie 2: L’Automate Programmable Industriel Partie 3: Langages de programmation des automates Partie 4: Le GRAFCET: Outils de description des automatismes Partie 5: Les Modes de Marches et d’Arrêts

4 Plan du cours Partie 1: Les systèmes automatisés de production
Partie 2: L’Automate Programmable Industriel Quid des API /PLC? Structure matérielle Structure logicielle Exemple de gammes de différents constructeurs Intégration des API dans les architectures types des systèmes automatisés Partie 3: Langages de programmation des automates Partie 4: Le GRAFCET: Outils de description des automatismes Partie 5: Les Modes de Marches et d’Arrêts

5 Plan du cours Partie 1: Les systèmes automatisés de production
Partie 2: L’Automate Programmable Industriel Partie 3: Langages de programmation des automates Position et périmètre de la norme IEC Principales conventions de la norme Les 5 langages: LD, IL, ST, FDB, SFC Partie 4: Le GRAFCET: Outils de description des automatismes Partie 5: Les Modes de Marches et d’Arrêts

6 Plan du cours Partie 1: Les systèmes automatisés de production
Partie 2: L’Automate Programmable Industriel Partie 3: Langages de programmation des automates Partie 4: Le GRAFCET: Outils de description des automatismes Objectifs et convention du Grafcet Structures classiques particulières Méthode de développement de Grafcet Implémentation d’une analyse Grafcet en langage de l’IEC (LD et IL) Partie 5: Les Modes de Marches et d’Arrêts

7 Plan du cours Partie 1: Les systèmes automatisés de production
Partie 2: L’Automate Programmable Industriel Partie 3: Langages de programmation des automates Partie 4: Le GRAFCET: Outils de description des automatismes Partie 5: Les Modes de Marches et d’Arrêts De la nécessité de considérer les différents modes de fonctionnement d’une installation automatisée. L’outils GEMMA Structure multi-grafcets de gestion des modes de marches et d’arrêt d’un installation.

8 Exemples vidéos de postes automatisés
Contexte et possibilités: Illustrations 1 Production: Fabrication de tube 1m11s 2 Fabrication de bretzel 54s 3 Assemblage meubles 27s 4 Assemblage semi automatisé 32s 5 Mouvement 1 axe, Mouvement 2axes 16s 6 Effort et précision 23s 7 Contrôle Qualité intégré 8 Marquage, traçabilité 24s 9 Rapidité et précision 1 35s 10 Rapidité et précision 2 10s Faire réagir après chacune des vidéos présentés Automatisation dans le secteur industriel: Manufacturier, Agroalimentaire, Chimique etc… Niveau d’automatisation: un poste de travail unique, un sous-ensemble de ligne, d’une ligne complète… Niveau d’automatisation et de ma Automatisation: Travail de Conception mécanique au sens large…Il y a une PARTIE conception de commande Succession d’opérations d’ajout de VA partielle. Pas une seule machine qui réalise toute les opérations Installation complexe => Architecture d’automatismes (Partie commande décentralisée et communicante). Rapidité: Importance du temps de réponse Maitrise des puissances mises en oeuvre

9 Pourquoi automatise-t-on?
Objectif de productivité Produire plus: plus vite et/ou plus longtemps. Objectif de réalisation Réalisation d’opérations irréalisables par l’homme: Rapidité d’exécution, Miniaturisation, Manutention cinématique complexe… Objectif de sécurisation Suppression de tâches dangereuses: Sciage, Dosage chimique… Suppression de manipulations fastidieuses: Ascenseur, Porte de garage Objectif de maîtrise de l’outils de production Intégration des chaînes logistiques Economie des ressources utilisées (GTC) Traçabilité de la production: Intégration dans un système d’informations global 1°) S’intègre dans une activité économique ou de service rendu. Dans la quasi-totalité des projets d’ampleurs dans la cadre d’une activité économique ou

10 Constituants d’un Système Automatisé de Production
Transformer l’énergie Moteur, Vérin… Acquérir des informations Capteur de Position… Agir sur la matière d’œuvre Ventouse, convoyeur… Traiter les données, Emettre des ordres Distribuer l’énergie Contacteur électrique, Distributeur pneumatique… Communiquer API, Commande câblée… IHM, Superviseur, Voyants Terminaux de dialogue

11 Analyse fonctionnelle
Modifier: les échanges de communication; Consigne/CR sont des échanges d’informations…

12 Du point de vue de la commande
Consignes de fonctionnement - Mise en fonctionnement Mise à l’arrêt Consigne de cadence Consigne de recette Compte-rendu de fonctionnement - Signalisation visuelle, sonore Signalisation via un module IHM Ecriture dans une base de données Partie Commande Informations sur l’état du process Informations binaires. Pièces en butée, Niveau atteint, Faisceau coupé, Évènement… Informations numériques. Niveau de température, dans trémie. Comptage. Ordres d’actions sur le process. Ordre booléen Ouverture/Fermeture vanne, Mise en marche moteur Ordre numérique Bloc de régulation PID intégré, consigne de vitesse Consigne pour modules déportés On peut considérer la partie commande comme un système E/S, implicitement bouclé. Selon la complexité de l’installation

13 Différents moyens d’implanter une partie commande
Commande câblée Dès lors que l’on dispose des fonctions logiques élémentaires et d‘éléments de mémorisation, on est capable de réaliser la plupart des fonctions de commande. Réalisable en technologie électrique (Cf. Exemple), électronique, pneumatique Peu souple, pas d’intégrations d’éléments communiquant. Micro contrôleur Solutions demandant des temps de développement importants. Interfaçage vers des équipements industriels existants difficiles Intérêt dans le cadre d’application de série. Automate Programmable Industriel Equipements plus onéreux Programmation aisée Conception robuste Vaste gamme d’interfaces pour communiquer avec son environnement. Ajouter des solutions ponstuelles propriétaires (Chassis PXI, Compact cRIO) PC industriel onéreux (Prx en baisse?) et souvent surdimensionné ou PC embarquant des cartes qui sont des automates (Carte Astrium) Focalisation sur mise en œuvre API, standard industriel pour la réalisation d’une partie commande d’un système autonome de production

14 Architectures d’automatismes
Architecture centralisée Architecture centralisée Aspect historique, moins de déploiement d’équipements, Cout de câblage important (longueur de câbles) Panne ou modification du programme de commande => Arrêt des machines Architecture décentralisée Partie commande locale et communicante. On gagne en souplesse dans l’utilisation de la ligne automatisée et en pérennité. Dans cette configuration, le API peuvent encore être surdimensionné « La fonction de communication est devenue la clef de voute de la conceptions des architectures automatisées ». Pb= Solution souvent mono constructeur malgré l’existence de standard Architecture décentralisée

15 Commande décentralisée et répartie
Architecture décentralisée et repartie Pour des machines de grande dimension, on limite encore le câblage par l’utilisation d’E/S déporté avec ou sans « intelligence ». Dans le cas ou le bloc d‘ES déportés exécute du code, il s’agit en fait d’un automate de gamme inférieur. Un terminal d’exploitation local est un élément du bus de terrain et non pas du RLI On peut ici proposer le modèle de la pyramide CIM à 5 niveaux Bus capteurs/actionneurs; Réseau terrain; Réseau local industriel; Réseau d’usine; Réseau d’entreprise. Du l’information booléenne issue du capteur lambda au fichier informatique de gestion ERP intégrant tous les services de l’entreprise… Cf Cours sur les réseaux. Architecture décentralisée et répartie

16 Exemple d’architecture de commande
On a ici les 3 1er niveaux de la pyramide CIM Niveau 0: Bus de capteurs/actionneurs Niveau 1: Réseau de terrain (Un seul esclave Modbus à chaque fois…) Niveau 2: Réseau local Industriel (Ethernet Ici) Souligner l’importance du cours Supervision dans l’étude de ces architectures et des échanges entre systèmes communicants.

17 L’Automate Programmable Industriel
API : Automate Programmable Industriel PLC : Programmable Logic Controlleur Un API est un dispositif électronique de contrôle commande en temps réel des systèmes , programmable et robuste. Liste de principaux constructeurs: Allen Bradley (US); Siemens (GER); Schneider (FR); Rockwell Automation (US); FESTO (GER); WAGO (GER); GE Fanuc (US); Beckhoff (GER); Omron (JPN); ABB (SU); Mitsubishi (JPN); …

18 L’API: Structure Matérielle
Exemple de configuration standard d’un API modulaire 0°) l’UC est 1°) On a très souvent une coupleur de communication directement intégré à l’UC. 2°) La plupart des modules métiers sont intelligents, ils embarquent leurs propres processeurs. Exemple de configuration matérielle d’un API modulaire

19 2 Gammes d’API Schneider Siemens ZELIO TWIDO TSX Micro M340 Premium
Non exhaustives Schneider ZELIO TWIDO TSX Micro M340 Premium Quantum Petite machine Machine Industrielle Process Manufacturier Infrastructure complète Mémoire et performance processeur(s) (plus d’instructions et plus vite). Modularité croissante, Service de communication croissant. Possibilités logicielles croissantes Intégration de IEC, Outils de simulation, diagnostic,  supervision, Richesse des bibliothèques etc. Petite machine: convoyeur, compresseur, Volets roulants Machine industrielle: de manutention, d’emballage Process manufacturier: Machine plus complexe (mouvement, régulation) Infrastructure complète: Process critique chimique, pétrolier (redondance des moyens de commande commutation à chaud ) La haut de gamme permet d’intégrer des modules de communication, des passerelles entre réseaux de différents niveaux. Siemens LOGO S200 S300 C7 S400

20 L’API: Structure logicielle
3 notions importantes: Notion de Scrutation Cycle automate périodique ou cyclique Déterminisme assuré par un chien de garde Notions d’images mémoires des E/S Lecture et écriture synchrone de toutes les E/S, respectivement en début et en fin de scrutation. Le programme utilisateur ne travaille que sur des images mémoires. Notions de tâches Structure mono-tâche ou multi-tâche possible. 1°) De ces trois notions, les 2 premières sont assez universelles… 2°) Le découpage des programmes d’automatismes en ces 4 types de tâches l’est moins (Siemens OB: groupe d’organisation dont on gère indépendamment la priorité assez similaire au cas Schneider).

21 Principe du déroulement d’un cycle automate
Les instructions du programme sont exécutées les unes après les autres Lorsque toutes les instructions on été évaluées, le programme reprend à nouveau depuis le début, de toute façon. Cette relecture cyclique est ininterrompue, on parle de scrutation ou encore de cycle automate 1°) L’exécution du code s’effectue de manière séquentielle, dans l’ordre d’agencement des sections de codes et, pour chaque section, dans l’ordre d’écriture de chaque instruction. 2°) Des instructions de saut, des possibilités d’invalidations de sections de code permettent de structurer l’application, d’en accélérer l’exécution. 3°) Il faut Absolument proscrire toutes boucles WHILE ou saut de code vers l’amont du programme pour ne pas créer les conditions d’une scrutation indéfinie dans le temps.. Il faut préciser ici quelques ordres de grandeurs des durées d’exécution mises en jeu: La durée d’exécution d’une instruction de quelques nano à quelques microsecondes. (dépend de l’instruction et pour une instruction donnée, dépend du processeur…) Selon la complexité du programme, une scrutation ne durera pas plus de quelques millisecondes. La scrutation cyclique est le mode de scrutation par défaut des API Il faut bien souligner que, typiquement, les programmes informatiques ne fonctionnement pas selon ce principe de scrutation du code à exécuter.. Cette scrutation peut s’effectuer de manière cyclique ou périodique: Scrutation cyclique Scrutation périodique

22 Déterminisme temporel des API
Chaque tâche d’un programme d’automate dispose d’un chien de garde paramétrable vérifiant que sa durée de scrutation est limitée. Dès lors que ce temps de scrutation de la tâche maître est limité, on peut garantir une borne supérieure au temps de réponse à une entrée donnée Un API est une machine « temps réel  » il garantit une réponse avant une durée maximale donnée et courte… 1°) Dans le cas d’une durée de scrutation trop importante (i.e. supérieure à un seuil prédéfini, l’automate passe en Défaut On peut conclure: a) le seuil est mal dimensionné OU b) Le programme est mal conçu OU c)La configuration de l’API est insuffisante en pratique… revoir le point a) puis b) Le chien de garde est un bit interne qui lorsqu’il passe à 1 place l’API en défaut. 3°) Insister sur la définition du temps réel = temps déterministe et court. VU

23 Temps de réponse maximal d’un API
Temps de réponse: entre 1 à 2 temps de scrutation (borné par chien de garde)

24 Traitement mémoire des E/S: MIE
Sur la durée d’une scrutation, les états des entrées sont rendus stables par l’utilisation de la mémoire image des entrées (MIE) Le principe est le suivant: En début de scrutation, les états de chaque entrées des coupleurs d’entrées sont recopiés en mémoire MIE de l’UC. En cours d’exécution du code utilisateur, si une instruction requiert l’état d’une entrée, c’est l’image mémoire correspondante qui est lue La mémoire image des entrées est rafraichie en début de scrutation suivante 1°) Insister sur le décorrélation entre le cycle automate et le monde réel physique… les états des entrées changent « quand ils veulent ». Au cours d’une même scrutation, une entrée doit être vu VRAIE ou FAUSSE. 2°) Une entrée TOR qui change 2 fois d’état au cours d’une seule scrutation n’est pas pris en considération par le programme… VOIR Module métier de comptage rapide ou entrée de tâche rapide pour considérer ce type d’entrée. On a la une limitation intrinsèque des API standard. 3°) Ce fonctionnement permet de considérer des entrées de type événement:« Apparition de … » « Disparition de… » . les fronts montants et descendants. A faire trouver: Fmontantk+1= ( (MIE)k XOR (MIE)k+1 ) AND (MIE)k+1…

25 Traitement mémoire des E/S: MIS
Selon un mécanisme similaire: Chaque instruction du programme utilisateur affecte l’image mémoire de la sortie adressée. Cette image mémoire porte le même nom que la sortie physique. Chaque nouvelle instruction met la mémoire image à jour Après déroulement complet de la scrutation, les états de la MIS sont recopiées en bloc vers les coupleurs de sortie. 1°) Les instructions de type monostable ne sont opérantes que pour la scrutation en cours. Les instructions bistables (à affectation mémorisée) sont effectives pour toutes les scrutations suivantes jusqu’à ce qu’on donne l’instruction complémentaire. 2°) Quand, d’aventure, 2 instructions affectent une seule et même sortie au cours de la même scrutation, c’est la dernière écriture sur le MIS qui est effectivement prise ne compte. Pour éviter ce genre de complication (un ordre n’a pas été pris en compte au final…) On ne programme qu’une seule équation d’affectation par sortie?

26 Structure logicielle mono-tâche et multi-tâches 2/2
Une tâche représente un ensemble d’opération exécuté séquentiellement. Contrairement à l’informatique, une tâche réalise l’ensemble des opérations qui lui sont désignées puis s’arrête et ce, jusqu’à son prochain lancement Structure mono tâche: - Le traitement interne programme constructeur. - Une tâche maître standard. Ordonnancement correspondant

27 Structure logicielle mono-tâche et multi-tâches 1/2
Structure multi tâches: tâche par ordre de priorité croissante Le traitement interne programme constructeur. Une tâche maître standard. tâches rapides (Optionnelles, Toujours périodique (1-255ms), E/S propres, Chien de garde affecté) tâches évènements (Optionnelle, Sur occurrence d’un évènement prédéfini, E/S propres, Chien de garde affecté) A tout moment, une seule tâche exécutée. Les tâches ont leurs propres cycles de traitement (Lecture/Calcul/Ecriture) Les tâches communiquent entre-elles par des zones de mémoires allouées Tache rapide pour tâche de régulation Exemple Ordonnancement pour une tâche rapide à 200m

28 Norme CEI 61131-3 / NF EN 61131-3 Langages de programmation des PLC
Normalisation des 5 langages de programmation des API Développée par des constructeurs, utilisateurs industriels finaux, universitaires (1993 pour …-3) Valable pour automates présents et futurs. Intégration partielle conforme (Position dans la gamme) Pas d’obligation légale d’implantation de l’ensemble des aspects de la norme. CEI 61131 Informations générales Définitions générales et Caractéristiques fonctionnelles générales des PLC Spécifications et essais matériels Définitions de caractéristiques mécaniques, électriques et de conditions d’environnement Langages de programmation des PLC Harmonisation des langages de programmations des PLC, Modèle élémentaire de programme d’automatisation Aide utilisateur Informations pratiques d’aide à l’utilisateur depuis l’analyse du besoin et l’acquisition du PLC jusqu’à la maintenance Communications Communications entre les PLC de différents constructeurs et autres équipements En pratique: Peu ou pas de portabilité entre les différentes plateforme constructeur. Attention, une norme pour un constructeur, c’est bien… mais ce n’est pas obligatoire.

29 Périmètre de la CEI 61131-3 - Les « POU »: Program Organization Unit
Unité logique de de programmation Fonctions Blocs fonctionnels Programmes Eléments communs à tous les langages Typage des données Variables 5 langages LD IL FDB ST SFC - Les « POU »: Program Organization Unit

30 Les unités logiques de programmation
Ce sont des modules logiciels qui peuvent être de 3 types: Les programmes Les blocs fonctionnels Les fonctions Objectif poursuivit: Créer des encapsulations de structure de données et d’algorithme associé indépendant de l’application. Création de bibliothèques d’outils dédiés

31 Fonctions et blocs fonctionnels standards
Toutes les applications de programmation d’API intègrent nativement des fonctions et blocs fonctionnels prédéfinis: Fonctions prédéfinies numériques: ABS, SQRT, EXP… arithmétiques: ADD, MUL, SUB… Booléenne: AND, OR, XOR…. sur tableau de bits: RHL, SHL, ROL… comparaison: EQ, LT, LE…. sur chaînes de caractères: CONCAT, INSERT, DELETE… Conversion de type: x_TO_y, BCD,… Blocs fonctionnels prédéfinis TON Temporisateur à l’enclenchement TOFF Temporisateur au déclenchement TP Monostable CTU compteur CTUD Compteur / Décompteur R_TRIG Front montant F_TRIG Front descendant File FIFO/LIFO Registre First In-First Out … La norme prévoit de pouvoir créer ses propres fonctions et blocs fonctionnels

32 Ces modules logiciels sont hiérarchisés
Les appels réciproques sont hiérarchisés Programme Fonction fonctionnel Bloc Bloc fonctionnel Types d’appel possible entre module logiciel selon IEC

33 Structure commune des modules logiciels IEC
Les codages de ces modules logiciels ont des structures identiques: Exemple du bloc fonctionnel « bascule SR » recrée en ST:

34 La fonction: Unité logique de programmation
Une fonction est un module logiciel Une seule variable de sortie Plusieurs variables d’entrées possibles Pas de mémoire interne Exemple n°1: Une fonction qui prend un mot en argument et retourne l’octet de poids faible ou celui de poids fort. Ecrite en IL Pour un même jeux d’entrées, une fonction retournera toujours le même valeur en sortie. Il existe de nombreuses fonctions prédéfines, standard : arithmétique, de comparaison etc…. Exemple n°2: Une fonction qui réalise D=(A+B)*C Ecrite en FDB Tous langages de la norme peut servir à définir une fonction

35 Le bloc fonctionnel (FB)
Un bloc fonctionnel est un module logiciel : Plusieurs variables de sortie possibles (ou aucune) des mémoires internes Eventuellement une entrée de validation et une sortie « pas d’erreur » La bascule RS est un bloc préexistant en standard sous PL7PRO, sous Codesys Attention, on ne dit pas ici comment créer un BF Tous langages de la norme peut servir à définir un bloc fonctionnel

36 Instanciation d’un bloc fonctionnel
Les blocs fonctionnels, dès lors qu’ils sont crées, s’instancient On instancie un BF dans un programme, ou dans un autre BF. Une instance possède un identificateur unique et peut-être déclarée comme locale ou globale. En reprenant l’exemple: %Passage_droit.Q peut être utilisé en fonction de la déclaration de l’instance « Passage droit » du bloc fonctionnel bascule SR On appelle une fonction, on instancie un bloc fonctionnel. L’instanciation peut s’effectuer dans un programme ou bien encore dans un autre bloc fonctionnel (Encapsulation du code) Comme pour les fonctions, un bloc fonctionnel peut s’écrire dans tous les langages de la norme (SFC Compris? SFC spécifique est mis à part) Attention, un bloc fonctionnel a des états internes; 2 appels successifs peuvent ne pas donner le même résultat ☢ Toutes les valeurs sont conservées d’une exécution de bloc fonctionnel jusqu’à l’autre

37 Le programme: Unité logique de programmation
Il y a toujours un programme principal effectuant les affectations des E/S, des variables globales… Pour chaque programme, on peut définir un mode de scrutation indépendamment des autres. Il n’y a pas d’instance de programmes (sur un même API) - Terminologie de la norme: Ressource= Moyen d’exécution= API ici.

38 Les blocs déclaratifs des variables
Pour chaque blocs déclaratifs des modules logiciels, il est nécessaire de définir: La portée de chacune des variables utilisées dans le bloc. Le type de chacune de ces variables.

39 Éléments commun des langages
Chaque variable doit être parfaitement Typée Identifiée ou localisée De portée déterminée (locale, globale, entrée, sortie, E/S..) Une variable ne peut-être typée que selon l’une des 3 catégories suivantes: - un type standard Un type prédéfini par le développeur une instance de bloc fonctionnel

40 Types de données standards selon le CEI 61131-3
Type de données Description Bits Gamme BOOL booléen 1 [0, 1] BYTE Chaîne de 8bits 8 [0,…,16#FF] WORD 16 [0,…,16#FFFF] DWORD 32 [0,…,16#FFFF FFFF] LWORD Chaîne de 64bits 64 [0,…,16#FFFF FFFF FFFF FFFF] SINT Entier signé court [-128, 127] INT Entier signé [-32768,…,+32767] DINT Entier double signé [-2(31),…,2(31)-1] LINT Entier long signé [-2(63),…,2(63)-1] USINT Entier court non signé [0, 255] UINT Entier non signé [0,…,65535] UDINT Entier double non signé [-0,…,2(32)-1] ULINT Entier long non signé [-0,…,2(64)-1] REAL Nombre réel STRING Chaîne de car. ASCII .. 255 caractères maxi DATE Date D# TOD Heure Tod#00:00:00 TIME Durée T#0s Indiquer que bien souvent les fonctions admettent des variables d’un type donné, qu’on ne peut effectuer des opérations sur des données de type différents. Passer par des fonctions de conversion de type. Principaux types de données prédéfinis par l’IEC61131

41 Type de données prédéfinis
1°) Type Enuméré TYPE Couleur : (rouge, verte, bleue); END_TYPE; TYPE RefType : (REF,DIFF):=REF; END_TYPE; 2°) Type Tableau TYPE Mesure : ARRAY[1..10] OF INT; END_TYPE; 3°) Type Structure TYPE Acquisition STRUCT Valide:BOOL:=FALSE; Reference:RefType; ACQ:Mesure; END_STRUCT END_TYPE Le Tableau est une structure indexée, c’est tous son intérêt. Il est inutile de crée des tableau de bits…BYTE,WORD,DWORD et LWORD

42 Identification et étendues des variables
Une variable peut être identifiée de manière symbolique ou bien localisée Pour une variable localisée, la désignation est normalisée: %(Préfixe d’emplacement)(Préfixe de taille)(Indices de positions <Equipement.>slot.voies) Préfixe d’emplacement Signification I Emplacement d’entrée Q Emplacement de sortie M Emplacement de mémoire K Emplacement de mémoire constante Préfixe de taille Signification (Rien) Taille d’un seul bit X B Taille d’un octet W Taille d’un mot de 16 bits D Taille d’un mot de 32 bits Pour une variable identifiée de manière de manière implicite La « localisation » s’entend physiquement ou logiquement en mémoire. Pour déclarer des variables localisées dans les blocs déclaratifs des modules logiciels, il faut utiliser le mot clef AT VAR a:BOOL; AT %IW0.1:INT; END-VAR Exemple: %I1.2; %IW0.1; %MB10; %KD10;

43 Les 5 langages de programmation de la norme
IL ST LD FDB SFC Instruction list Structured Text Ladder diagram Function block diagram Sequential function chart Listes d’instructions Texte structuré Langage à contacts Langage à blocs fonctionnels Langage inspiré du GRAFCET

44 Langage IL Principe: Exemple: D=A*B+C D=A*(B+C) LD A (*Accu=A*)
Langage textuel, de bas niveau, proche du langage assembleur. Un programme IL se présente comme une liste de ligne d’instructions évaluées séquentiellement Principe: Label Opérateur (<modificateur>) Opérande Commentaire L1: ADD 10 (* Accu:=Accu+10*) Le label est optionnel, il ne sert qu’au éventuel saut de programme. L’opérateur code l’opération a effectuer entre l’accumulateur et l’opérande. Le résultat de cette opération est placé dans l’accumulateur Le modificateur « ( » permet de créer un second accumulateur quand nécessaire. Cet accumulateur est évalué et détruit par l’opérateur « ) », parenthèse fermante. Exemple: D=A*B+C D=A*(B+C) LD A (*Accu=A*) MUL B (*Accu=Accu*B*) ADD C (*Accu=Accu+C*) ST D (*D=Accu=A*B+C*) LD A (*Accu=A*) MUL( B (*Accu1=B*) ADD C (*Accu1=Accu1+C*) ) (*Accu=Accu+Accu1*) ST D (*D=Accu*)

45 Langage IL: Principaux opérateurs
Opérateurs d’affectation Opérateur Description LD Accu=Opérande (Op) ST Op=Accu S Si Accu Alors Set Op R Si Accu Alors Reset Op LDN Accu=NOT Op STN Op= NOT Accu Opérateurs logiques Opérateur Description AND Accu=Accu AND Op OR Accu=Accu OR Op XOR Accu=Accu XOR Op NOT Accu= NOT Accu ANDN Accu=Accu AND NOT Op ORN, XORN…. Opérateurs arithmétiques Opérateur Description ADD Accu=Accu + Op MUL Accu=Accu * Op MOD Accu=Reste Accu/Op SUB Accu= Accu-Op DIV Accu=Accu /Op Opérateurs de comparaison Opérateur Description GT Accu=(Accu>Op) LT Accu=(Accu<Op) EQ Accu=(Accu=Op) GE Accu=(Accu>=Op) LE Accu=(Accu=<Op) NE Accu=(Accu<>Op) + fonctions de conversion de type, sur chaînes de bits, sur chaînes de caractères…

46 Langage IL: Branchement et Appel
Opérateurs de branchements Opérateur Description JMPC Saut au Label si (Accu=TRUE) JMP Saut inconditionnel au Label JMPCN Saut au Label si (Accu=FALSE) RETC RETURN si (Accu<>0) RET RETURN RETCN RETURN si (Accu=0) Appel d’un bloc fonctionnel ST NomInstance.Entrée1 etc…. CAL NomInstance(<Entrée1>:=<Valeur>,….) LD NomInstance.Sortie ST Resultat Appel d’une fonction: Ex fonction utilisateur LIMIT(Min,Val,Max) LD Min LIMIT Val,Max ST Resultat

47 Résultat=a1+(a2*(a3-a4)*a5)+a6
Langage IL: Exercices 1°) Ecrire le programme IL qui code l’équation combinatoire suivante: Résultat=a1+(a2*(a3-a4)*a5)+a6 2°) Ecrire le programme IL qui code les instructions FDB suivantes Solution Exercice 1 LD a1 ADD( a2 MUL( a3 SUB a4 ) MUL a5 ADD a6 ST Résultat Solution Exercice2 LD auto_mode AND start_cmd ST MemoireCommande.S LD stop_cmd ST MemoireCommande.R CAL MemoireCommande LD Memoirecommande.Q ST Command Solution Exercice3 Function_BLOCK AFFECTE VAR_INPUT Selecteur:uint; END_VAR VAR_IN_OUT Bs0:BOOL;BS1:BOOL;Bs2:BOOL; LD selecteur JMPC test1 LD TRUE ST bs0 RET Test1: LD selecteur SUB 1 JMPC test2 LD TUE ST bs1 Test2: SUB 1 RETCN ST bs2 END_FUNCTION_BLOCK Pour appeler 3°) Ecrire un bloc fonctionnel AFFECTE qui a pour argument un entier non signé « Selecteur » et qui si Selecteur=i i∈{0,1,2} positionne un bit de sortie bsi à TRUE i∈{0,1,2} sans modifier les autres bits Ecrire une séquence d’instruction IL qui appelle ce bloc et lit un des 3 bits de sortie

48 Langage ST Langage textuel, de haut niveau, proche de langage informatique type PASCAL. Le langage ST est adapté à la programmation de fonctions algorithmiques complexes, aux manipulations sur tableaux, difficile à traduire en langage graphique. Exemple: (*Recherche du premier élément non nul dans un tableau de 32 mots, détermination de sa valeur (%MW10), de son rang (%MW11). Cette recherche s ’effectue si %M0 est à 1, %M1 est mis à 1 si un élément non nul existe, sinon il est mis à 0*) IF %M0 THEN FOR %MW99:=0 TO 31 DO IF TAB[%MW99]<>0 THEN %MW10:=TAB[%MW99]; %MW11:=%MW99; %M1:=TRUE; EXIT; ELSE %M1:=FALSE; END_IF; END_FOR; END_IF

49 Langage ST: Sélecteurs de branches
IF-THEN-ELSIF-ELSE-END_IF CASE-OF-ELSE-END_CASE Syntaxe IF <Expression Booléenne> THEN <énoncé> <énoncé>; ELSIF <Expression Booléenne> THEN ELSE END_IF CASE <Expression Entière> THEN <valeur>:<énoncé>; <valeur>, <valeur>:<énoncé>; END_CASE Enoncés ELSE et ELSEIF optionnels On peut avoir plusieurs valeurs différentes donnant lieu au même traitement. L’énoncé ELSE est optionnel. Exemple IF manual AND not(alarm) THEN Level:=manual_level; bx126:=bit12 OR bit16; ELSE_IF over_mode THEN level;:=(level*100)/scale; END_IF; IF overflow THEN alarm_level:=TRUE; END_IF; CASE error_code THEN 255 : err_msg:=‘Division par zéro’; fatal_eror:=TRUE; : err_msg:=‘Dépassement’; 2,3 : err_msg:=‘Erreur de signe’; err_msg:=‘Erreur Inconnue’; END_CASE;

50 Langage ST: Opérateurs d’itérations
WHILE-DO-END_WHILE REPEAT-UNTIL-END_REPEAT FOR-TO-BY-DO-END_FOR Syntaxe WHILE <Expression Booléenne> DO <énoncé> <énoncé>; END_WHILE; REPEAT UNTIL <Expression Booléenne> END_REPEAT; FOR<index>:=<mini> TO <maxi> BY <pass> DO END_DO; BY est optionnel, par défaut, l’incrément est de 1. String:=‘’ (*vide*); Nbchar:=0; IF ComlsReady() THEN String:=string+ComGetChar(); Nbchar:=nbchar+1; UNTIL ((nbchar>=16)OR NOT(ComlsReady())) Length:=mlen(message); Found:=FALSE; FOR index:=1 TO length DO Code:=ascii(message,index); IF code:=searched_chard THEN Found:=TRUE; EXIT; END_IF; END_FOR; Attention, ST OK TB pour traiter des tableaux et structure indicée Mais très dangereux , trop facile de faire des erreurs de raisonnement.. Instructions: EXIT : Quitte la boucle d’itérations (FOR, WHILE ou REPEAT). RETURN : Quitte la fonction ou le bloc fonctionnel dans laquelle elle est placée.

51 Langage ST: Appel de fonctions et de blocs fonctionnels
Appel de fonction élémentaire: <resultat>:=NomFonction(<argument1,argument2,…); Appel de bloc fonctionnel: On appelle une instance du bloc souhaité. On invoque les paramètres de sortie correspondants NomInstanceBlocFonctionnel(<argument1,argument2,…); <resultat1>:=NomInstanceBlocFonctionnel.<retour1>; <resultat2>:=NomInstanceBlocFonctionnel.<retour2>; Exemple: Si trigb1 est une instance de « R_TRIG », BF de détection de front montant. trigb1(b1); IF trigb1.Q THEN nb_fronts:=nb_fronts+1; END_IF;

52 Langage LD Langage graphique, proche du langage à contact des électriciens. Ce langage est toujours disponible, quelque soit la gamme API. - Réseau de contact lu de gauche à droite et de haut en bas. Flux de programmation possible par saut vers label. Le calcul ne ramène que des valeurs de vérité booléenne Entre la zone de calcul et la zone d’affectation ne transite que des valeurs booléennes

53 Langage LD L’association en série (ET) et en parallèle (OU) de contacts de différentes natures réalise la logique booléenne souhaitée Relais direct output:=input Contact direct passant si %I1.2 Relais inversé output:=NOT(input) Contact inversé passant si NOT(%I1.2) Relais forçage SET: IF Input THEN Output:=TRUE END_IF Contact passant sur Front de %I1.2 Relais forçage RESET: IF Input THEN Output:=FALSE END_IF Toutes fonctions/bloc fonctionnels ramenant une valeur logique peut être utilisé dans la zone de calcul ( Fonction de comparaison, Temporisation…) Toutes fonctions peut être invoquées par la possibilité d’adjoindre une entrée EN (et une sortie ENO correspondante) [ même pour des blocs qui n’ont pas été crée nativement avec cette entrée] Dès lors que cette entrée est à 1, résultat d’un réseau LD, le bloc est exécuté

54 LD: Schéma de base à connaître.
Reconstruction d’un front en LD Si l’interface de programmation de l’API ne permet pas d’obtenir directement l’information « front »), on reconstruit l’information en utilisant un bit additionnel (ici b), selon le schéma ci-contre: Mémoire à déclenchement prioritaire M0=/OFF·(ON+M0) Dire l’intérêt de connaître ces 3 equations Comment reconstruire un front descendant? - donner les schémas des mémoires câblées. Pourquoi préférer utiliser les mémoires câblées que les mémoires SET/RESET. Mémoire à enclenchement prioritaire M0=ON+(/OFF·M0)

55 Langage FDB Langage graphique concis
Une instruction FDB est décrite comme un réseau de fonctions plus élémentaires, reliées par des fils orientés , correspondant à des flux de donnés typées Les types des données sortantes des blocs doivent correspondre rigoureusement au type des données d’entrée des blocs avals.

56 Langage FDB: Fonction de base
l’entrée EN « Enable » L’entrée EN est utilisée pour autoriser l’exécution de la fonction La sortie ENO « Enable Out» Est mise à UN quand la fonction a été correctement réalisée Désignation Nom de la fonction Addition ADD Soustraction SUB Division DIV Multiplication MUL Transfert MOVE Strictement supérieur GT Strictement inférieur LT Egalité EQ Inégalité NE OU Logique OR ET Logique AND NON NOT Etc.… etc.… …. Les types des données sortantes des blocs doivent correspondre rigoureusement au type des données d’entrée des blocs avals.

57 Langage FDB: Exercice Ligne de conditionnement:
Une ligne de conditionnement doit travailler sur 2 types de pièces différentes. Pour chaque pièce, le nombre de pièces par sacs et le nombre de sac par carton varie. Le système doit permettre de visualiser à tout moment le nombre de pièces en cours de conditionnement « Valeurs courante pièces » et de donner l’information « carton plein ». On souhaite écrire un bloc fonctionnel type « Compteurs pièces », ont été crées 2 instances portant les noms « Compteur pièces1 » et « Compteur pièces 2 » Ecrire le bloc fonctionnel « Compteur de pièces » en langage FDB Les types des données sortantes des blocs doivent correspondre rigoureusement au type des données d’entrée des blocs avals.

58 Langage SFC Langage graphique de programmation directement inspiré du langage GRAFCET. SFC est particulièrement adapté à la programmation des séquences. Les principes et conventions sont identiques aux principes et conventions du grafcet à quelques exceptions près Un bloc SFC doit avoir une en-tête déclarative. Les actions sont caractérisées N (continue),D(retardée),L(limitée dans le temps), R ,S(mémorisée),P(impulsionnelle) Les actions peuvent correspondre à l’appel d’autres modules fonctionnels Les forçages ne sont pas si explicite.

59 Le GRAFCET: outils de description des automatismes séquentiels
GRAFCET: GRaphe Fonctionnel de Commande Etapes-Transitions C’est un langage normalisé (NE FR – 08/2002) de description du fonctionnement de systèmes séquentiels Attention: LE Grafcet ne comprend aucune descriptions, ni de spécifications de niveau technologique. En particulier, ce n’est pas un langage de programmation. Le SFC est la déclinaison du GRAFCET comme langage de programmation des API; Certains automates, anciens ou récents d’entrées de gamme, n’intègre pas de SFC => Savoir retranscrire une analyse Grafcet en un langage courant LD ou IL. ☢ Le GRAFCET n’est pas un langage de programmation. On parle d’analyse GRAFCET d’une système séquentiel

60 Le GRAFCET: Eléments de base
L’état du GRAFCET peut se résumer au vecteur X dont les composantes sont les variables d’étapes binaires Xi, représentant l’état de l’étape i.

61 Grafcet: Exercice de base
2 bacs sont utilisés de façon similaire. Le bac 1 est vide lorsque le niveau est au dessous de b1. Il est plein lorsque le niveau est au dessus de h1. A l’état initial, les 2 bacs sont vides. Au moment où on appuie sur un bouton poussoir m, les 2 bacs se remplissent grâce à l’ouverture des vannes V1 et V2. Dès qu’un bac est plein, on arrête son remplissage et on commence à utiliser son contenu. Lorsque le bac est vide, on ferme la vanne W correspondante. Le remplissage ne pourra recommencer que lorsque les 2 bacs seront vides. Ce remplissage sera déclenché par appui sur le bouton poussoir m. Proposer un grafcet qui corresponde au fonctionnement souhaité.

62 Le GRAFCET: 5 Règles d’évolution
Règle n°1 Situation initiale du GRAFCET Les étapes initiales sont activées dès que la PC est opérationnelle Règle n°2 Transition Franchissable Une transition est validée dès lors que toutes ses étapes immédiatement précédentes sont actives. Une transition est franchissable et franchie dès lors que: Elle est validée ET La réceptivité associée est VRAIE Règle n°3 Franchissement d’une transition Le franchissement d’une transition entraine simultanément: la désactivation de toutes les étapes immédiatement précédentes l’activation de toutes les étapes immédiatement suivantes

63 Le GRAFCET: 5 Règles d’évolution
Règle n°4 Franchissements simultanés Plusieurs transitions simultanément franchissables sont simultanément franchies Règle n°5 Activation et désactivation simultanées Si, au cours du fonctionnement, une même étape doit être désactivée et activée simultanément, elle reste active.

64 Les réceptivités Condition logique affectée à toute transition et calculée à partir: d’une entrée booléenne (issue des MIE/MIS par exemple) d’un évènement (↑e ) ou (↓b) : changement d’état d’un booléen une condition logique toujours vraie: 1 de l’évaluation de toute fonction ramenant un booléen [Cpt>6]; [Value=10];… d’une état d’un GRAFCET Xi , bit d’étape n°i. d’une temporisation Une variable temporisation S s’écrit de manière générale [t1,E , t2] ou: E une variable d’entrée booléenne. t1 retard à l’enclenchement de E t2 retard au déclenchement de E : Toutes les actions continues sur X66 sont maintenue pendant 5s

65 Action conditionnelle
Les actions 1/3 Il existe 4 types d’action que l’on peut associer à une étape GRAFCET: Les actions continues Les actions conditionnelles (dont temporisées) Les actions mémorisées. Les actions impulsionnelles Action continue KA1=X21 Action conditionnelle KA1=X21./Depassement

66 Les actions 2/3 Action conditionnée par une temporisation = Action temporisée Action limitée Action retardée Action mémorisée Action impulsionnelle De durée théorique nulle, ces actions peuvent être effectuées à l’activation, à la désactivation d’une étape ou sur l’occurrence d’un évènement.

67 Les actions sur étapes instables 3/3
On parle d’évolution fugace quand plusieurs transitions successives sont franchies sans évènement sur les réceptivités correspondantes Supposons les étapes 1 et 11 actives et b=1, lorsque la variable a passe de 0 à 1, les étapes 3 et 13 sont alors directement activées. Les étapes 2 et 12 sont ici instables. L’action continue sur X2 instable n’est pas réalisée, de toute façon. L’action mémorisée sur X12 instable est effectuée, dès lors qu’elle est programmée comme action à l’activation ou à la désactivation de l’étape 12. On programme les actions mémorisées comme des actions à l’activation ou à la désactivation des étapes instables.

68 Le GRAFCET: Structures de base 1/4
L’écriture de GRAFCET décrivant des automatismes séquentiels fait apparaître des structures classiques et récurrentes, à connaître: Séquence linéaire ou séquence obligée Sélection de séquences Séquences parallèles Saut de séquence Reprise de séquence Séquences alternées Séquences exclusives La description complète d’une application d’automatisme résulte alors en la résolution d’un problème d’organisation et de synchronisation de telles structures.

69 Le GRAFCET: Structures de base 2/4
Séquence linéaire. Cette structure permet de traduire les séquences obligées. Sélection de séquences Structure OU ☢ Si a=b=1 lors de l’évènement activation de l’étape 21, Les étapes 22 et 23 seront activés immédiatement … Et l’on a réalisé le ET de séquences parallèles Solution: rendre exclusive les réceptivités a et b Branche de l’étape 22 prioritaire sans blocage Pas de branche prioritaire blocage si a=b=1

70 Le GRAFCET: Structures particulières 3/4
Séquences parallèles Structure ET : parallélisme structurel de séquences ☢ Toujours resynchroniser le retour de 2 séquences parallèles: C’est le rôle des étapes 25 et 26 ici. La dernière de ces 2 étapes a être activée aura une activité fugace. Saut de séquence Reprise de séquence

71 Le GRAFCET: Structures particulières 4/4
Séquences alternées Cas classique d’une ressource commune à laquelle 2 moyens doivent avoir accès consécutivement : Séquence 1, puis séquence 2, puis séquence 1… Séquences exclusives Cas classique d’une ressource commune à laquelle 2 moyens doivent avoir accès de manière concurrente Ce sont les réceptivités r1et r2 qui gèrent l’attribution de la ressource. On peut envisager une attribution de priorité séquentielle….

72 Le GRAFCET: Organisation et synchronisation 1/2
En pratique, la description d’un automatisme complexe à l’aide du langage GRAFCET donne toujours lieu à la donnée de plusieurs grafcets partiels, interdépendants et hiérarchisés. Appel et synchronisation Interdépendance: Appel respectif Synchronisation Forçage Cet structure d’appel + Attente d’un CR pour évoluer = Notion de tâches et c’est l’idée de macro étapes mentionnées dans la norme. La séquence correspondante au GR7 appelé peut-être à partir d’une autre étape: Gr7 de tâche.

73 Le GRAFCET: Organisation et synchronisation 1/3
Synchronisation unilatérale Synchronisation bilatérale Attention, activité fugace potentielle des étapes 1 et 4 (une des 2 à coup sur) dans le cas de la synchronisation bilatérale

74 Le GRAFCET: Organisation et synchronisation 2/2
Forçage d’un grafcet Notation : Gi{x} Grafcet n°i forcé dans la situation x Attention: Les instructions de forçage rompt l’aspect séquentiel de la commande. Il ne faut l’utiliser que pour traduire des fonctionnements particuliers (type sécurité, obstacle etc..) Difficulté pratique d’implantation effective d’ordre de forçage partiel La hiérarchisation est induite par ces appels et ces ordres de forçage qui sont issus des GR7 hiérarchiquement supérieur. ☢ Les ordres de forçage rompent « brutalement » les séquences. Ils sont à utiliser avec parcimonie pour résoudre des « situations anormales » dans le déroulement du processus (typiquement le traitement de problème de sécurité, d’apparition d’obstacle etc…) - Difficulté pratique d’implantation de ces ordres dans les API (forçage ciblé)

75 Grafcet: Exercice Un étudiant, peu inspiré, a proposé l’analyse grafcet ci-contre. Retrouver les erreurs.. 1°) Pas d’étape initiale 2°) Etape 22 fugace, pas d’action continue sur Etape22 3°) La transition 24->25 ne sera jamais franchie 4°) Erreur de Syntaxe: Convergence en ET Fausse 5°) 2 fronts décorrélés ne peuvent survenir en même temps. Transition 32->21 jamais franchie 6°) Réceptivité X29 jamais franchie (Synchronisation avec un état futur…) 7°) Erreur de Syntaxe: Divergence en ET puis Convergence en OU

76 Implantation d’une analyse grafcet dans un API
Dès lors que l’on ne peut utiliser le langage SFC, Il s’agit de coder, dans le langage choisi, et dans l’ordre: Les évolutions de tous les grafcets Les équations de sortie associées à chacune des actions

77 Implantation d’une analyse grafcet dans un automate
Principe de transcription d’une analyse grafcet en équation booléenne. A chaque étape on affecte un bit mémoire Ce bit doit être mis à 1 quand la transition amont est franchie (ON) Ce bit doit être mis à 0 quand le transition avale est franchie (OFF) Mémoire à enclenchement prioritaire ( R5 d’évolution). M21= ON + NOT(OFF).M21 Pour programmer les « ON/OFF », on associe à chaque transition un bit qui est mis à 1 dès lors que la transition est franchissable (Toutes étapes amont actives et réceptivité associée vraie) Il est nécessaire d’initialiser toutes les étapes initiales (Si aucun bit mémoire d’étape n’est à 1 Alors Mettre à 1 les bits mémoires des étapes initiales)

78 Exercice Ecrire l’ensemble des équations booléennes permettant d’implanter cette analyse grafcet dans un API ne se programmant pas en SFC.


Télécharger ppt "Automatismes Séquentiels"

Présentations similaires


Annonces Google