Vous êtes sur la page 1sur 27

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

Type de langage:
- SFC: proche du Grafcet
- LD: ladder (schéma de contacts)
- ST: langage évolué

Onglet Module
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.

•Appels des différentes G7


(SFC)
•Appel d’un traitement
postérieur aux G7 (POST)
permettant de déterminer les
sorties actives (LADDER)

Programmes existant, G7 ou autre


Programmation de la cible : exemple d’un SFC

Insertion étapes,
transitions, renvois,
divergences,
convergences

Passage de
paramètres
Variables locales si
nécessaire

Description de la
structure du Grafcet
Nom de l’étape:
Modifiable, Commentaire sur l’étape ≠
Référençable dans action
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

Etape step2 du
Grafcet
G3_Plateau

Capteur NF

Variable Globale
Capteur NO
booléenne
Exemple d’un POST en LADDER  Calcul des sorties à activer
en fonction des étapes actives et/ou d’autres conditions

1 seule bobine par sortie !

Ex: La sortie n’est pas activée si


l’AU est enclenché

Ex: la sortie est activée pour


deux étapes différentes
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
Détection des fronts montants ou descendants
• 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
Trig_FM_c1

c1 FM_c1
CLK Q
Initialisation/ reset/ figeage de grafcet
• 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
• 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.