Schneider PL7
Schneider PL7
Schneider PL7
PL7 Pro
Ces langages peuvent être mixés au sein d’une même application. Une section de programme
peut être écrite en langage à contacts, une autre en littéral...
Les objets du langage sont symbolisables à l'aide de l'éditeur de variables ou en ligne dans les
éditeurs de programme.
1
1.1.3 Langage littéral structuré
Le langage littéral structuré (ST) est un langage de type "informatique" permettant l'écriture
structurée de traitements logiques et numériques.
2
1.2 Structure logicielle PL7
Le logiciel PL7 propose deux types de structure :
ü Monotâche : c’est la structure simplifiée proposée par défaut, où une seule
tâche maître composée d’un programme, constitué de plusieurs sections et de sous-
programmes, est exécutée.
ü Multitâche : cette structure, mieux adaptée pour des applications temps réel
performantes, se compose d’une tâche maître, d’une tâche rapide et de traitements
événementiels prioritaires.
Les tâches maître et rapide d'un programme PL7 se composent de plusieurs parties appelées
sections et de sous-programmes. Chacune de ces sections peut être programmée dans le langage
approprié au traitement à réaliser.
3
1.3 Modules fonctionnels
Le logiciel PL7 Pro permet de structurer une application pour automate Premium en modules
fonctionnels.
Un module fonctionnel est un regroupement d'éléments de programme destinés à réaliser une
fonction d’automatisme.
Indépendamment de la structure multitâches des automates, vous pouvez définir une structure
arborescente multiniveaux de l’application d’automatisme.
A chaque niveau, vous pouvez rattacher des sections de programme écrites en langage à
contacts, littéral, liste d’instructions ou Grafcet, ainsi que des tables d’animation et des écrans
d’exploitation.
4
2.2 Définition des principaux objets mots
Le tableau suivant décrit les principaux objets mots.
5
2.3 Adressage des objets bits
L’adressage des bits internes, système et étapes suit les règles suivantes :
Exemples :
%M25 = bit interne numéro 25
%S20 = bit système numéro 20
%X6 = bit étape numéro 6
Exemples :
%MW10:X4 = bit numéro 4 du mot interne %MW10
%QW5.1:X10 = bit numéro 10 du mot de sortie %QW5.1
Note : L'extraction de bits de mots peut aussi s'effectuer sur mots indexés.
6
Le tableau ci-dessous présente quelques exemples d’adressage d’objets.
7
Le tableau ci-dessous décrit les différents éléments constituant l’adressage.
Exemples
Le tableau ci-dessous présente quelques exemples d’adressage d’objets.
L’adressage des mots internes, constants et système suit les règles suivantes :
8
Le tableau ci-dessous décrit les différents éléments constituant l’adressage.
Exemples :
%MW15 = mot interne simple longueur numéro 15
%MF20 = mot interne flottant numéro 20
%KD26 = double mot constant numéro 26
%SW30 = mot système numéro 30
Adressage : %NW{i.j}k
9
ü le mot double longueur %MDi et les mots simple longueur %MWi et %MWi+1
(le mot %MWi renfermant les poids faibles et le mot %MWi+1 les poids forts du mot %MDi),
ü le mot simple longueur %MWi et les octets %MBj et %MBj+1 (avec j=2 x i),
ü le flottant %MFk et les mots simple longueur %MWk et %MWk+1.
Exemples
%MD0 correspond à %MW0 et %MW1 (voir illustration ci-dessus).
%MW3 correspond à %MB7 et %MB6 (voir illustration ci-dessus).
%KD543 correspond à %KW543 et %KW544.
%MF10 correspond à %MW10 et %MW11.
10
Note : le nombre total de temporisateurs %TMi + %Ti est limité à 255 pour un Premium.
Ce tableau définit les objets bits qui peuvent être mis sous forme de tableau de bits.
Note : Les longueurs maximum des tableaux dépendent des types d’objet
ü Pour les bits d’entrées/sorties TOR : la taille maximum dépend de la
modularité (nombre d’entrées/sorties du module).
ü Pour les bits internes ou Grafcet : la taille maximum dépend de la taille définie
en configuration.
11
Ce tableau définit les objets mots qui peuvent être mis sous forme de tableau de mots.
Note : Les longueurs maximum des tableaux dépendent des types d’objet.
ü Pour les mots internes, constantes ou Grafcet : la taille maximum dépend de
la taille définie en configuration.
ü Pour les mots système : seul les mots %SW50 à 53 peuvent être adressés
sous forme de tableau.
Ce tableau définit les objets qui peuvent être mis sous forme de chaîne de caractères.
12
ü un mot interne %MWi
ü un mot constant %KWi
ü une valeur immédiate
Ce type d’adressage permet de parcourir successivement une suite d’objets de même nature
(mots internes, mots constants...), : à l’adresse de l’objet est ajoutée le contenu de l’index.
Exemple :
MW108[%MW2] : mot d’adresse directe 108 + contenu du mot %MW2.
Si le mot %MW2 a pour contenu la valeur 12, écrire %MW108[%MW2] équivaut
donc à écrire %MW120.
Note : Les valeurs maximum des index dépendent des types d’objets indexés.
ü Pour les bits d’entrées/sorties TOR : 0<i+index<m (m étant le nombre
maximum d’entrées/sorties du module) .
ü Pour tous les autres objets (exceptés objet double longueur ou flottant) :
0<i+index<Nmax , Nmax = taille maximum dépend de la taille définie en configuration.
Pour les mots double longueur ou flottant : 0<i+index<Nmax-1.
Exemple : %MD6[%MW100]
Si %MW100=10, le mot adressé sera 6 + 2 x 10 -->%MD26.
13
En cas de débordement d’index, le système provoque la mise à l’état 1 du bit système %S20 et
l'affectation de l'objet s'effectue avec une valeur d'index égale à 0.
Ces bits sont à 1 lorsque l'étape ou la macro-étape est active, à 0 lorsqu'elle est inactive.
Ces mots incrémentés toutes les 100 ms et prend une valeur entre 0 et 9999.
2.12 Symbolisation
Les symboles permettent d’adresser les objets langage PL 7, par des noms ou mnémoniques
personnalisés.
14
Un certain nombre de mots sont réservés par le langage et ne sont pas utilisables
comme symboles, voir (Voir Manuel de référence, Tome 3).
Exemples :
ü si le mot %MW0 a pour symbole "Température", le tableau de mots %MW0:12
est symbolisé par Température:12,
ü le mot %MW10 a pour symbole Four_1, le mot indexé %MW0[%MW10] est
symbolisé par Température[Four_1].
Les objets bits extraits de mots, bits ou mots de blocs fonction sont symbolisables mais s'ils ne
sont pas symbolisés, ils peuvent hériter du symbole de l'objet de base .
Exemples :
ü si le mot %MW0 a pour symbole Etat_pompe et si le bit extrait de mot
%MW0:X1 n'est pas symbolisé, il hérite du symbole du mot, %MW0:X1 a pour symbole :
Etat_pompe:X1,
ü si le bloc fonction %TM0 a pour symbole Tempo_four1 et si la sortie
%TM0.D n'est pas symbolisée, elle hérite du symbole du bloc, %TM0.D a pour symbole:
Tempo_four.D.
Nom_DFB.Nom_paramètre
3 Mémoire utilisateur
3.1 Structure mémoire des automates Premium
L'espace mémoire des automates Premium ne comporte qu'un seul ensemble. La mémoire bits est
intégrée à la mémoire mots (dans la zone des données), elle est limitée à 4096 bits.
15
ü les données : données dynamiques de l'application et données système (le
système réserve une zone mémoire RAM de 5 Kmots minimum)
ü le programme : descripteurs et code exécutable des tâches,
ü les constantes : mots constants, valeurs initiales et configuration des
entrées/sorties.
Le codage des objets bits PL7 permet le test de front montant ou descendant sur :
ü les bits d’entrées/sorties,
ü les bits internes.
3.2.1 Fonctionnement
Chaque objet bit contenu dans la mémoire bits est mémorisé à l’aide de 3 bits affec-tés
de la façon suivante :
16
Lors de la mise à jour de la mémoire bits, le système assure :
Exemple :
Ainsi dans l'exemple ci-après, si vous forcez à 1 le bit %M0 dans une table d'animation, le front
reste permanent.
Pour que le front ne soit détecté qu'une seule fois, il faut utiliser un bit interne intermédiaire. Dans
ce cas l'historique de %M1 est mis à jour, donc le front n'est présent qu'une seule fois.
17
4 Structure logiciel
4.1 Présentation de la tâche maître
La tâche maître représente le programme principal, elle est obligatoire quel que soit la structure
adoptée monotâche ou multitâche.
Le programme de la tâche maître (MAST) est constitué de plusieurs modules de programmes
appelés sections (Voir Description des sections et des sous- programmes, p. 86), et de sous-
programmes.
L'exécution de la tâche maître peut être choisie (en configuration) cyclique (Voir Exécution
cyclique, p. 95) ou périodique (Voir Exécution périodique, p. 97).
Les sections sont exécutées dans leur ordre de programmation dans la fenêtre du navigateur (vue
structurelle).
Les sections sont liées à une tâche, une même section ne peut pas appartenir simultanément à
plusieurs tâches.
Les appels aux sous-programmes s’effectuent dans les sections ou depuis un autre sous-
programme (8 niveaux d’imbrications maximum).
18
Les sous-programmes sont aussi liés à une tâche, un même sous-programme ne peut pas être
appelé depuis plusieurs tâches
Exemple
Le dessin suivant donne l’exemple de structure d’une tâche en sections et sous-programmes.
Note : sur démarrage à froid les conditions d'exécution sont à 0, toutes les sections auxquelles
sont associées une condition sont inhibées.
19
4.2.5 Caractéristiques d’un sous-programme
Le tableau suivant décrit les caractéristiques d’un sous-programme SRi.
20
1.2 Structure d’un réseau de contacts
Un réseau s’inscrit entre deux barres de potentiel. Le sens de circulation du courant s'établit de la
barre de potentiel gauche vers la barre de potentiel droite.
Le dessin ci-après décrit la structure d’un réseau de contacts.
1.3.1 Règles
Un repère d’étiquette ne peut être affecté qu’à un seul réseau au sein d’une même entité de
programme.
Il est nécessaire d’étiqueter un réseau afin de permettre un branchement après un saut de
programme (voir illustration ci-dessus).
L’ordre des repères des étiquettes est quelconque, (c’est l’ordre de saisie des réseaux qui est pris
en compte par le système lors de la scrutation).
21
1.4 Commentaire d’un réseau de contacts
Le commentaire facilite l’interprétation du réseau auquel il est affecté, mais n’est pas obligatoire.
Syntaxe Le commentaire est intégré au réseau et comprend 222 caractères alphanumériques au
maximum, encadrés de part et d'autre par les caractères (* et *).
1.4.1 Règles
Les commentaires s’affichent dans la zone réservée dans la partie supérieure du réseau de
contacts.
En cas de suppression d’un réseau, le commentaire qui lui est associé est également supprimé.
Les commentaires sont mémorisés dans l’automate et sont accessibles à tout moment par
l’utilisateur. A ce titre, ils consomment de la mémoire programme
Les éléments graphiques des contacts se programment en zone test et occupent une cellule (1
ligne de hauteur et 1 colonne de largeur).
22
1.5.2 Bobines
Les éléments graphiques des bobines se programment en zone action et occupent une cellule (1
ligne de hauteur et une colonne de largeur).
23
1.6 Règles de programmation d’un réseau de contacts
La programmation d'un réseau de contacts s'effectue à l'aide des éléments graphiques, en
respectant les règles de programmation ci-après.
Les variables internes de blocs et les sorties graphiques sont des objets exploitables à distance
depuis une autre partie du programme.
Les entrées non câblées des blocs fonction standard sont mises à 0.
Comme pour les éléments graphiques du type contacts, il est possible de réaliser des
combinaisons de blocs fonction.
24
1.7.2 Exemple d’un réseau de contacts
L’illustration suivante présente un exemple d’un réseau de contacts contenant 2 blocs fonction.
25
1.9.3 Règle d’exécution de réseaux connexes
Le premier réseau connexe évalué est celui dont le coin gauche est situé le plus en haut à gauche.
Un réseau connexe est évalué dans le sens de l'équation : évaluation du réseau de haut en bas,
ligne par ligne, et dans chaque ligne de gauche à droite.
Dans le cas où une liaison verticale de convergence est rencontrée, le sous réseau qui lui est
associé est évalué (selon la même logique) avant de continuer l'évaluation du réseau qui l'englobe.
26
1.9.8 Exemple 2 :fonctionnement
Le tableau suivant décrit l'exécution des éléments graphiques dans le réseau illustré ci-dessus.
27
2.3 Etiquette d’une phrase en langage liste d’instructions
L’étiquette permet de repérer une phrase dans une entité de programme (programme principal,
sous-programme, ...). Elle est optionnelle.
Cette étiquette a la syntaxe suivante : %Li avec i compris entre 0 et 999. Elle se positionne en
début d’une phrase.
Le programme suivant illustre l’utilisation d’une étiquette.
2.3.1 Règles
Une même étiquette ne peut être affectée qu’à une seule phrase au sein d’une même entité de
programme.
Il est nécessaire d’étiqueter une phrase afin de permettre un branchement après un saut de
programme.
L’ordre des repères des étiquettes est quelconque, c’est l’ordre de saisie des phrases qui est prise
en compte par le système lors de la scrutation.
2.4.1 Règles
Les commentaires s’affichent uniquement à partir de la première ligne de la phrase.
En cas de suppression d’une phrase, le commentaire qui lui est associé est également supprimé.
Les commentaires sont mémorisés dans l’automate et sont accessibles à tout moment par
l’utilisateur. A ce titre, ils consomment de la mémoire programme.
28
ü de test
ü d’action
ü sur bloc fonction
ü numériques
29
2.5.3 Instruction sur bloc fonction
Le tableau suivant décrit les instructions de test du langage liste d’instructions..
30
2.6.2 Exemple : OR(
Le programme suivant illustre l’utilisation de la parenthèse.
Exemple :
Les programmes suivants illustrent l’utilisation de l’imbrication des parenthèses.
31
2.7 Description des instructions MPS, MRD et MPP
Les 3 types d’instruction permettent de traiter les aiguillages vers les bobines.
Ces instructions utilisent une mémoire intermédiaire appelée pile pouvant stocker jusqu'à 3
informations booléennes...
Note : Ces instructions ne peuvent pas être utilisées au sein d'une expression entre parenthèses
2.7.1 Rôle
Le tableau suivant décrit le rôle de chacune des instructions
2.7.2 Exemple 1
Cet exemple illustre l’utilisation des instructions MPS, MRD, et MPP.
2.7.3 Exemple 2
Cet exemple illustre le fonctionnement des instructions MPS, MRD, et MPP.
32
2.8.1 Principe de programmation directe
Les instructions pilotent les entrées des blocs (ex: CU). Les sorties sont accessibles sous forme de
bit (ex: %C8.D).
Exemple :
Cet exemple illustre la programmation directe d’un bloc fonction compteur.
Exemple :
Cet exemple illustre la programmation structurée d’un bloc fonction compteur.
2.9.1 Exemple 1
Le programme ci-après décrit l’exécution complète d’une phrase.
2.9.2 Exemple 2
Les parenthèses permettent de modifier l'ordre de prise en compte des résultats booléens :
33
AND %I1.2 résultat = ET du résultat booléen précédent et de l'état du bit %M10
)
ST %Q2.0 %Q2.0 prend l'état du résultat booléen précédent
2.9.3 Exemple 3
Le séquencement des instructions peut être modifié par les instructions de saut JMP d’appel à
sous-programme.
34
3.2.1 Exemple de phrase
L’illustration suivante présente une phrase en langage structurée PL7.
Note : Chacun de ces éléments est optionnel, c'est-à-dire qu’il est possible d’avoir une phrase vide,
une phrase constituée uniquement de commentaires ou uniquement d'une étiquette..
3.3.1 Règles
Une même étiquette ne peut être affectée qu’à une seule phrase au sein d’une même entité de
programme.
Il est nécessaire d’étiqueter une phrase afin de permettre un branchement après un saut de
programme.
L’ordre des repères des étiquettes est quelconque, c’est l’ordre de saisie des phrases qui est prise
en compte par le système lors de la scrutation.
35
3.4.1 Règles :
ü Tous les caractères sont autorisés dans un commentaire.
ü Le nombre de caractères est limité à 256 par commentaire.
ü Les commentaires imbriqués sont interdits.
ü Un commentaire peut tenir sur plusieurs lignes.
Les commentaires sont mémorisés dans l’automate et sont accessibles à tout moment par
l’utilisateur. A ce titre, ils consomment de la mémoire programme.
36
3.6.3 Instructions logiques sur mots et doubles mots
Les instructions suivantes s’appliquent sur des objets mots et doubles mots.
37
3.7.2 Instructions sur tableaux de flottants
Les instructions suivantes s’appliquent sur des tableaux de flottants.
38
3.8 Instructions de conversions numériques
3.8.1 Instructions de conversions numériques
Les instructions réalisent des conversions de bits, mots, double mots et flottants.
39
3.9.4 Instructions de temporisation
Ces instructions sont des fonctions de temporisation destinées à être utilisés pour la
programmation du code des DFB..
Exemple :
40
Exemple :
Exemple :
Note : L’instruction EXIT permet d’arrêter l’exécution de la boucle et de continuer sur l’instruction
suivant le END_WHILE.
41
Exemple :
Note : L’instruction EXIT permet d’arrêter l’exécution de la boucle et de continuer sur l’instruction
suivant le END_REPEAT..Langage littéral structuré
Exemple :
42
3.13.1 Règle de programmation
ü Lorsque l'indice est strictement supérieur à la valeur finale, l'exécution se
poursuit sur l'instruction suivant le END_FOR.
ü L'incrémentation de l'indice est effectuée automatiquement et n'est donc pas à
votre charge.
ü L'action représente une liste d'instructions.
ü La valeur initiale et la valeur finale sont forcément des expressions
numériques de type mot.
ü L'indice est forcément un objet de type mot accessible en écriture.
ü Plusieurs structures de contrôle FOR peuvent être imbriquées.
Note : L’instruction EXIT permet d’arrêter l’exécution de la boucle et de continuer sur l’instruction
suivant le END_FOR.
3.14.2 Exemple
Dans cet exemple, l’instruction EXIT permet d’arrêter la boucle REPEAT mais en aucun cas la
boucle WHILE.
43
Note : Lorsqu'il y a conflit entre deux opérateurs de même niveau de priorité, c'est le premier
opérateur qui l'emporte (l'évaluation se fait de la gauche vers la droite).
3.15.2 Exemple 1
Dans l’exemple ci-après, le NOT est appliqué sur le %MW3 puis le résultat est multiplié par 25. La
somme de %MW10 et %MW12 est ensuite calculée, puis le ET logique entre le résultat de la
multiplication et de l'addition.
3.15.3 Exemple 2
Dans cet exemple, la multiplication de %MW34 par 2 est d’abord effectuée, puis le résultat est
utilisé pour effectuer le modulo.
%MW34 * 2 REM 6
3.15.5 Exemple 1
Dans cet exemple, l'addition est d'abord effectuée puis la multiplication :
(%MW10+%MW11)*%MW12
3.15.6 Exemple 2
Cet exemple montre que les parenthèses peuvent être utilisées afin d'éviter toute mauvaise
interprétation du programme.
44
Mais vous pouvez penser que l’opération est la suivante :
Pour une affectation de la forme <opérande gauche> := <opérande droite>, c'est l'opérande de
gauche qui impose le type attendu pour effectuer l'opération, ce qui signifie que l'opérande de droite
doit être convertie si nécessaire suivant le tableau :
Note : Toute opération entre deux valeurs immédiates est effectuée en double longueur.
4 Grafcet
4.1 Présentation du Grafcet
4.1.1 Présentation du Grafcet
Le langage Grafcet est conforme au langage "Diagramme fonctionnel en séquence" (SFC) de la
norme IEC 1131-3.
Le Grafcet permet de représenter graphiquement et de façon structurée le fonctionnement d’un
automatisme séquentiel.
Cette description graphique du comportement séquentiel de l’automatisme et des différentes
situations qui en découlent, s’effectue à l’aide de symboles graphiques simples.
45
4.1.2 Description des symboles graphiques du Grafcet
Le tableau suivant décrit les éléments graphiques de base du Grafcet.
46
Note : Le nombre maxi d'étapes (étapes du graphe principal + étapes de macro-étapes) dans la
section Grafcet ne doit pas dépasser 1024 sur TSX 57.
47
4.1.3.2 Bits associés aux étapes
Les bits associés aux étapes %Xi, aux macro-étapes %XMi, et aux étapes de macro-étapes %Xj.I ,
%Xj.IN et Xj.OUT ont les propriétés suivantes :
ü Ils sont à 1 lorsque les étapes sont actives.
ü Ils peuvent être testés dans toutes les tâches, mais ne peuvent être écrits que
dans le traitement préliminaire de la tâche maître (prépositionnement des graphes). Ces tests
et actions sont programmés soit en langage à contacts, soit en langage liste d'instructions,
soit en langage littéral.
ü Ils sont indexables.
4.1.4.1 Caractéristiques
Elles dépendent du processeur à programmer, elles sont récapitulées dans le tableau ci-dessous.
Le nombre de transitions synchrones (ou nombre de convergences en ET) ne doit pas dépasser
64, le nombre total de transitions étant toujours de 1024.
48
4.2 Règle de construction du Grafcet
4.2.1 Représentation du Grafcet
Le graphe principal et chacune des macro-étapes se programment sur 8 pages (page 0 à 7).
Une page Grafcet est constituée de 14 lignes et 11 colonnes qui définissent 154 cellules.
Dans chaque cellule, il est possible de saisir un élément graphique.
Le dessins ci-dessous illustre le découpage d’une page Grafcet.
Le dessin ci-dessous présente une divergence OU de une étape vers 9 étapes et une convergence
OU.
49
ü Le nombre de transitions en amont d’une fin d’aiguillage (convergence en OU)
ou en aval d'un aiguillage (divergence en OU) ne doit pas dépasser 11.
ü Un aiguillage peut se tracer vers la gauche ou vers la droite.
ü Un aiguillage doit généralement se terminer par une fin d'aiguillage.
ü Pour éviter de franchir simultanément plusieurs transitions, les réceptivités
associées doivent être exclusives.
4.2.4.1 Exemple
L’illustration suivante montre des exemples de renvois.
50
4.2.4.2 Renvois utilisés dans les divergences et convergences OU
Le tableau suivant donne les règles d’utilisation des renvois dans le cas de divergence ou
convergence OU.
51
4.2.5 Utilisation des liaisons orientées
Les liaisons orientées relient une étape à une transition ou une transition à une étape.
Elles peuvent être verticales ou horizontales.
Le schéma suivant présente un exemple d’utilisation d’une liaison orientée.
4.2.5.1 Règles
Les liaisons orientées peuvent :
ü se croiser (1), elles sont alors de natures différentes,
ü se rencontrer (2), elles sont alors de même nature.
Le croisement d'une liaison avec une activation ou une désactivation simultanée d'étapes est
impossible.
52
4.2.6.1 Règles
ü Dans une page Grafcet, il est possible de saisir un commentaire dans
n’importe quelle cellule.
ü Un commentaire occupe deux cellules contigües sur deux lignes maximum. Si
la zone d'affichage est trop petite, le commentaire est tronqué à l'affichage mais lors de
l'impression de la documentation, le commentaire est présenté dans son intégralité.
ü Le commentaire saisi dans une page Grafcet est stocké dans les informations
graphiques embarquées dans l'automate. A ce titre, ils consomment de la mémoire
programme.
53
4.3.1.3 Règles d’utilisation
ü Toutes les actions sont considérées comme des actions mémorisées, d’où :
une action asservie à la durée de l’étape Xn doit être remise à zéro à la désactivation de
l’étape Xn ou à l’activation de l’étape Xn+1. Une action à effet maintenu sur plusieurs étapes
est positionnée à un à l’activation de l’étape Xn et remise à zéro à la désactivation de l’étape
Xn+m.
ü Toutes les actions peuvent être asservies à des conditions logiques, donc être
conditionnelles.
ü Les actions asservies à des sécurités indirectes doivent être programmées
dans le traitement postérieur (Voir Description du traitement postérieur, p. 211) (traitement
exécuté à chaque scrutation )
Exemple :
Dès la désactivation de l’étape 51, les actions continues associées ne sont plus
scrutées.
4.3.2.1 Exemple 1
Dans cet exemple, cette action fait appel à un sous-programme
4.3.2.2 Exemple 2
Dans cet exemple, cette action incrémente le mot %MW10 et remet à 0 les mots %MW0 et
%MW25.
54
4.3.3 Programmation des actions continues
Ces actions sont exécutées tant que l’étape à laquelle elles sont associées est active.
Elles peuvent être :
ü Actions conditionnelles : l’action est exécutée si une condition est remplie,
ü Actions temporisées : c’est un cas particulier, le temps intervenant comme
condition logique. Cet asservissement peut être réalisé simplement en testant le temps
d'activité associé à l'étape.
Illustration de l’exemple.
4.3.4.1 Règles
55
ü A chaque transition est associée une réceptivité qui peut être programmée
soit en langage à contacts, soit en langage liste d'instructions, soit en langage littéral.
ü Une réceptivité n’est scrutée que si la transition à laquelle elle est associée
est valide.
ü Une réceptivité correspond à un réseau de contacts ou à une liste
d'instructions ou à une expression littérale, comprenant une série de tests sur bits et/ou sur
mot.
ü Une réceptivité non programmée est une réceptivité toujours fausse.
n = Numéro de la page
i = Numéro d'étape amont
j = Numéro d'étape aval
Note : Lors d'une activation simultanée ou d'une désactivation simultanée d'étapes, le repère
indiqué est celui de l'étape dans la colonne située le plus à gauche.
Exemple : ! X3.T>=150
Cette réceptivité programmée en langage littéral structuré permet de rester dans l'étape 3 pendant
15 secondes.
4.3.5.2 Exemple
Cet exemple illustre la programmation d’une réceptivité en langage à contacts.
56
4.3.6 Programmation des réceptivités en langage liste d’instructions
4.3.6.2 Exemple
Cet exemple illustre la programmation d’une réceptivité en langage liste d’instructions.
! LD %I2.1
AND [%MW10<20]
4.3.7.2 Exemple
Cet exemple illustre la programmation d’une réceptivité en langage littéral structuré.
4.4 Macro-étapes
4.4.1 Présentation des macro-étapes
Une macro-étape est une représentation condensée, unique, d’un ensemble d’étapes et de
transitions.
Une macro-étape s’insère dans un graphe comme une étape et en respecte les règle d’évolution.
4.4.1.1 Macro-représentation
Un Grafcet de premier niveau décrivant l'enchainement des séquences permet de mieux expliciter
la structuration de la partie commande.
Chaque séquence est associée à une symbolisation particulière de l' étape : la macro-étape.
Cette notion de "macro-représentation" permet de hiérarchiser l'analyse. Chaque niveau peut être
complété, modifié sans remettre en cause les autres niveaux.
Les macro-étapes sont disponibles pour les automates TSX57.
57
La figure suivante montre un Grafcet constitué de 3 macroétapes.
Lorsque la macro-étape est active, l’évolution de la macro-étape respecte les règles générales
d’évolution d’un Grafcet).
Exemple :
La macro-étape M1 est activée quand l’étape 1 est active et que sa réceptivité aval est vraie.
Elle est désactivée quand son étape de sortie est active et que la réceptivité M1>2 est vraie.
L’étape 2 est alors activée.
58
Le langage Grafcet PL7 autorise la programmation de 64 macro-étapes M0 à M63.
L’expansion d’une macro-étape, constituée d'une ou plusieurs séquences, est programmable au
plus sur 8 pages et comprend au maximum 250 étapes plus l’étape IN et l’étape OUT.
Une macro-étape peut contenir une ou plusieurs macro-étapes. Cette hiérarchie est possible
jusqu’à concurrence de 64 niveaux.
L’analyse d’une application peut être structurée de façon à fournir une approche globale puis
détaillée des différentes opérations à réaliser.
59
4.5.1.2 Rôle des traitements
Le tableau suivant décrit le rôle de chacun des traitements et le langage avec lequel ils peuvent
être programmés.
Note : Les macro-étapes sont exécutées dans leur ordre de scrutation dans le traitement
séquentiel.
C’est donc uniquement dans le traitement préliminaire qu’il faut agir sur les bits associés aux
étapes (mise à 0 ou à 1 des bits étapes %Xi ou %Xi.j par les instructions SET et RESET).
60
Suite à une coupure secteur sans changement d'application, le système effectue une reprise à
chaud, il repart dans l'état qui précédait la coupure secteur.
Si vous désirez un traitement particulier vis-à-vis de l'application en cas de reprise à chaud, vous
avez la possibilité de tester %S1 dans le traitement préliminaire, et d’appeler le programme
correspondant.
Note : Dans le cas de la remise à zéro d'une étape, les actions à la désactivation de celle-ci ne
sont pas exécutées.
4.5.3.2 Exemple
Dans cet exemple la mise à 1 du bit %M20 provoque le prépositionnement des étapes %X12 à 1,
des étapes %X10 et %X11 à 0.
61
4.5.5 Remise à zéro du Grafcet
La remise à 0 du Grafcet s’effectue par le bit système %S22.
Normalement à l’état 0, la mise à l’état 1 de %S22 provoque la désactivation des étapes actives de
l’ensemble du traitement séquentiel.
Note : La fonction RESET_XIT permet de réintialiser par programme les temps d’activation de
toutes les étapes du traitement séquentiel (Voir Manuel de référence, Tome 2)).
Pour redémarrer le traitement séquentiel dans une situation donnée, vous devez prévoir selon
l’application une procédure d’initialisation ou de prépositionnement du Grafcet.
Note : La fonction RESET_XIT permet de réintialiser par programme les temps d’activation des
étapes de macro-étape (Voir Manuel de référence, Tome 2).
62
4.5.7.1 Remise à zéro des macro-étapes
Le tableau suivant donne les différentes possibilités de mise à 1 et à 0 du bit système %S24.
Exemple :
4.5.8.1 Phase 1
Le tableau suivant décrit les opérations réalisées lors de la première phase.
63
4.5.8.2 Phase 2
La phase 2 correspond à l’évolution de la situation du Grafcet en fonction des transitions franchies:
4.5.8.3 Phase3
Les actions associées aux étapes actives sont exécutées dans l'ordre suivant :
Diagnostic :
En cas de défaut bloquant, les mots système %SW125 à %SW127 permettent de déterminer la nature du
défaut.
64
Ce traitement est le dernier exécuté avant l'activation des sorties et permet de programmer la
logique de sortie.
D'une manière générale, il est recommandé de programmer les actions agissant directement sur le
process dans le traitement postérieur.
Exemple :
Exemple :
65
5.1.1 Exemples d’utilisation
L’utilisation d’un bloc fonction DFB dans une application permet de :
ü simplifier la conception et la saisie du programme,
ü accroître la lisibilité du programme,
ü faciliter sa mise au point (toutes les variables manipulées par le bloc fonction
DFB sont identifiées sur son interface),
ü diminuer le volume de code généré (le code correspondant au DFB n'étant
chargé qu'une fois, quel que soit le nombre d'appels au DFB dans le programme).
66
sorties,
entrées/sorties,
ü de variables :
variables publiques,
variables privées,
ü du code en langage littéral structuré ou en langage à contacts,
ü d’un commentaire,
ü d’une fiche descriptive.
Pour chaque paramètre ou variable utilisé, le concepteur du bloc fonction Type DFB définit :
ü un nom de 8 caractères maximum (sont autorisés les lettres non accentuées,
les chiffres, le caractère "_"; le premier caractère doit être une lettre; les mots clefs et les
symboles sont interdits),
ü un type d'objet (voir tableau ci-après),
ü un commentaire optionnel de 80 caractères maximum,
ü une valeur initiale (excepté pour les paramètres Entrées/Sorties).
67
Note :
ü Cas des tableaux : la longueur du tableau doit être obligatoirement
mentionnée pour les paramètres sorties et les variables publiques et privées, par contre il
n'est pas nécessaire de les définir pour les paramètres entrées et les paramètres
entrées/sorties.
ü Les valeurs initiales peuvent être définies pour les entrées (si elles ne sont
pas de type tableau), pour les sorties et pour les variables publiques et privées.
Légende :
(1) Nombre d'entrées + Nombre d'entrées/sorties inférieur ou égal à15
(2) Nombre de sorties + Nombre d'entrées/sorties inférieur ou égal à 15
Note :
ü Tout bloc DFB doit avoir au moins une entrée booléenne.
ü La modification de l'interface d'un DFB (variables publiques ou paramètres)
est possible uniquement s'il n 'est pas instancié et utilisé dans l'application..Blocs fonction DFB
68
5.5 Définition des variables DFB
5.5.1 Description des variables
Le tableau ci-après décrit le rôle de chaque type de variables.
Note : La modification de l'interface d'un DFB (variables publiques ou paramètres) est possible
uniquement s'il n 'est pas instancié et utilisé dans l'application..Blocs
Nom_DFB.Nom_paramètre
Où Nom_DFB est le nom donné à l'instance du DFB utilisé (32 caractères maximum) et
Nom_paramètre est le nom donné au paramètre de sorties ou à la variable publique (8 caractères
maximum).
Exemple :
Controle.Ecart pour la sortie Ecart de l'instance DFB nommée Controle.
Ces valeurs sauvegardées sont ré-appliquées par une mise à 1 du bit système %S95 ou sur une
réinitialisation de l'automate.
L’inhibition de la fonction «Save/Restore» globale pour tous les blocs fonction DF-Best
possible (boîte de dialogue Propriétés du type DFB).
69
ü l'appel aux blocs fonction standards,
ü l'appel aux autres blocs fonction DFB,
ü branchement à une étiquette JUMP,
ü l'appel à sous-programme,
ü l'instruction HALT,
ü les instructions utilisant des variables de modules d'entrées/sorties (ex:
READ_STS, SMOVE...).
Le code exploite les paramètres et les variables du DFB définies par l'utilisateur.
Le code du bloc fonction DFB ne peut utiliser ni les objets d'entrées/sorties (%I,%Q...), ni les objets
globaux de l'application (%MW,%KW...) excepté les bits et mots système %S et %SW.
Chaque instance DFB est repérée par un nom de 32 caractères maximum défini par
l'utilisateur.
Les caractères permis sont identiques à ceux autorisés pour les symboles, c’est à dire sont
autorisés :
70
ü les lettres non accentuées,
ü les chiffres,
ü le caractère "_".
Le premier caractère doit être une lettre; les mots clefs et les symboles sont interdits.
5.7.1 Règles
Il est possible de créer autant d'instances que nécessaire (limité uniquement par la taille mémoire
automate) à partir d'un même type de DFB.
Les valeurs initiales des variables publiques définies pour les blocs fonction Type DFB peuvent
être modifiées pour chaque instance.
Exemple : le paramètre d'entrée "Validation" peut être défini en tant que BOOL
et peut être associé à un bit interne %Mi qui est de type EBOOL, par contre dans le code interne
du type DFB le paramètre d'entrée aura bien la propriété d'un type BOOL, il ne sait pas gérer les
fronts.
71
5.9 Utilisation d’un DFB dans un programme en langage à
contacts
Il y a deux possibilités pour appeler un bloc fonction DFB :
ü un appel textuel dans un bloc opération, la syntaxe et les contraintes sur les
paramètres sont identiques à celles du langage littéral.
ü un appel graphique, voir exemple ci-après.
Les blocs fonctionnels DFB graphiques ont des entrées /sorties qui sont affectés directement par
des objets ou des expressions, ces objets ou expressions occupe une cellule du réseau graphique.
2 blocs fonctionnels DFB connectés en série doivent être séparés d'au moins 2 colonnes
5.9.1 Exemple
L’illustration suivante présente un exemple simple de programmation d’un DFB.
Note :
ü Un bloc fonction DFB doit avoir au moins une entrée booléenne câblée.
ü Les entrées, sorties ou entrées/sorties numériques du bloc ne sont pas
câblées.
ü A ces broches sont associés des objets mentionnés sur la cellule face à la
broche.
72
5.10.1 Syntaxe en littéral
L’instruction en langage littéral a la syntaxe suivante :
Nom_DFB (E1,...,En,ES1,...,ESn,S1,...,Sn);
Exemple :
Cpt_boulons(%I2.0,%MD10,%I2.1,%Q1.0);
Exemple :
[Cpt_boulons(%I2.0,%MD10,%I2.1,%Q1.0)]
73
Le tableau ci-après décrit les caractéristiques du Type DFB à programmer.
Lorsque le nombre de pièces programmé (dans les mots %MD10, %MD12, et %MD14) est atteint,
la sortie du compteur pilote l'arrêt du système d'approvisionnement de pièces correspondant.
74
75