Travaux pratiques Logique séquentielle - Licence 2 • Mise en œuvre de Grafcet s
Travaux pratiques Logique séquentielle - Licence 2 • Mise en œuvre de Grafcet sur API • Effectués à l’AIP (ISTV 2) Environnement technique • API : contrôleur Wago • Programmation sous CoDeSys – CoDeSys est un environnement de développement pour des automates programmables industriels (API) selon le standard CEI 61131-3 pour le développement d’applications dans l’automation industrielle. – Le nom CoDeSys est un acronyme et signifie Controller Development System. Le système de programmation est libre de droits et peut être installé et utilisé légalement sur tout ordinateur. – Tous les langages spécifiés de la CEI 61131-3 (Commission électrotechnique internationale) sont inclus dans CoDeSys : • IL (liste d’instructions), une sorte de langage assembleur • ST (Texte structuré, inspiré par PASCAL) pour la programmation structurée • LD (Langage ladder), en français aussi „schéma à contacts" • FBD (Function Block Diagram), en français „boîtes fonctionnelles“. • SFC (Sequential Function Chart), proche du langage Grafcet • Partie opérative : logiciel de simulation ITS PLC de la société Real Games – http://www.realgames.pt/ – Logiciel gratuit dans sa version démo préparation de TP • Download : ITS PLC PROFESSIONAL EDITION - Full version • Utilisable en manuel • Connexion CoDeSys sur PC ITS PLC sur PC TP = 1 PC ITS PLC Tri de caisses Objectif: assurer le tri de caisses de tailles différentes Mode Manuel : pilotage des actionneurs • Changement du point de vue • Simulation réaliste intégrant les erreurs de programmation CoDeSys Configuration de la cible : choix du type d’API sur lequel les programmes seront téléchargés pour être exécutés Mettre les références de l’API Onglet ressource Configuration de la cible : paramétrage de la communication entre l’API et le PC de développement Accès par menu « en ligne » Mettre l’adresse IP de l’API Configuration de la cible : description des cartes d’E/S de l’API permet le calcul des adresses physiques des E/S Ajouter les cartes en entrant leurs références, et ce dans le même ordre que leur implantation physique Onglet ressource Exemple d’une configuration : 2 cartes d’entrées 8xTOR suivies de deux cartes de sorties 8xTOR %IX0.5 : nom de la 6ème entrée TOR, utilisable directement dans les programmes, de type booléen Définition de variables globales accessibles par tous les programmes Définition de noms logiques pour les E/S et liaison aux adresses physiques permet la modification de la configuration de l’API sans changer les programmes (ex: c4 représente l’entrée %IX0.4) Possibilité de définir des variables de type différents (BOOL, BYTE, WORD, …) Programmation de la cible : description des différents programmes selon différents langages Nom du module. Le programme principal, celui qui appelle les autres programmes, doit porter obligatoirement le nom PLC_PRG Onglet Module Type de langage: - SFC: proche du Grafcet - LD: ladder (schéma de contacts) - ST: langage évolué Programmation de la cible : exemple d’un PLC_PRG en ST. Ce dernier est exécuté cycliquement après l’acquisition des entrées et avant la mise à jour des sorties. Programmes existant, G7 ou autre •Appels des différentes G7 (SFC) •Appel d’un traitement postérieur aux G7 (POST) permettant de déterminer les sorties actives (LADDER) Programmation de la cible : exemple d’un SFC Passage de paramètres Variables locales si nécessaire Description de la structure du Grafcet Insertion étapes, transitions, renvois, divergences, convergences Commentaire sur l’étape ≠ action Nom de l’étape: Modifiable, Référençable dans d’autres G7 (nomduG7.nométape) ^^ : association d’un programme à l’étape exécution du programme quand l’étape est active Réceptivité. 2 possibilités : • ^^ : accès à la réceptivité en LADDER • remplacement du texte par équation logique Renvoi vers étape « Init » Programmation de la cible : exemple d’une réceptivité en LADDER (Transition 0 du Grafcet G2_CONV_BANDE) Contacts NO et NF (normalement ouvert et normalement fermé), branche //, blocs fonctionnels, bobines simples ou SET/RESET Variable Globale booléenne Capteur NF Capteur NO Etape step2 du Grafcet G3_Plateau Exemple d’un POST en LADDER Calcul des sorties à activer en fonction des étapes actives et/ou d’autres conditions Ex: la sortie est activée pour deux étapes différentes 1 seule bobine par sortie ! Ex: La sortie n’est pas activée si l’AU est enclenché Exécution des programmes sur la cible 1- Compilation des programmes 2- Connexion à l’API et transfert des programmes 3- Exécution: - les étapes actives deviennent bleu Comptes rendus. En cas d’erreur, ^^ pour aller directement sur le problème • Blocs Fonctionnels : • R_TRIG : front montant • F_TRIG : front descendant • Nécessité de déclarer le block fonctionnel : • Soit en global et utilisable par tous les programmes, soit en local • Exemple: Trig_FM_c1 : R_TRIG; Trig_FD_c1 : F_TRIG; • Nécessité d’exécuter le bloc fonctionnel : • Intégration de tous les calculs dans un programme spécifique, exécuté avant tous les autres (Pré-Traitement) • Juste avant son utilisation, mais utilisation unique • Exemple en langage ST : • c1 et FM_c1 sont deux variables booléennes • On veut que FM_c1 contienne le front montant de c1 : Trig_FM_c1(CLK:= c1); FM_c1 := Trig_FM_c1.Q; • Utilisation d’un FBD utilisable dans un schéma à contact Détection des fronts montants ou descendants Trig_FM_c1 CLK Q c1 FM_c1 • Possibilité à partir d’un programme, de figer l’évolution d’un SFC, ou de le ré- initialiser • Permet par exemple, après un Arrêt d’urgence, de réinitialiser un SFC • Utilisation de drapeau = similaire à une variable booléenne, mais le nom est fixé et lié à un SFC • Nécessité de déclarer ces drapeaux. Exemple : PROGRAM G3_PLATEAU VAR fd8 : F_TRIG; fd7 : F_TRIG; END_VAR VAR_INPUT SFCinit : BOOL; SFCPause : BOOL; END_VAR Initialisation/ reset/ figeage de grafcet • Dans autre programme (ici en ST) : IF Reset THEN (*reset grafcet*) G3_PLATEAU.SFCInit:= TRUE; ELSE G3_PLATEAU.SFCInit:= FALSE; END_IF IF Au THEN (* Arrêt d’Urgence *) G3_PLATEAU.SFCPause:=TRUE; ELSE G3_PLATEAU.SFCPause:=FALSE; END_IF •X.SFCInit : Si cette variable booléenne est à la valeur TRUE, alors le SFC X est réinitialisé sur l'étape Init. Aussi longtemps que la variable a la valeur TRUE, l'étape Init reste active mais ne sera pas exécutée. Le traitement du module ne reprend normalement qu'à partir du moment où la valeur FALSE est affectée à X.SFCInit. •X.SFCReset : Idem SFCInit, mais l'étape Init s'exécute après l'initialisation elle- même. Ceci peut être mis à profit pour affecter à nouveau la valeur FALSE au SFCReset durant l'étape. •X.SFCPause : Aussi longtemps que cette variable booléenne est à la valeur TRUE, l'exécution du SFC X est suspendue. uploads/S4/ tp 1 .pdf
Documents similaires
-
25
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Dec 07, 2021
- Catégorie Law / Droit
- Langue French
- Taille du fichier 2.0924MB