TD1 Le langage FBD de la norme 1131-3

Transcription

TD1 Le langage FBD de la norme 1131-3
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
TD1 Le langage FBD de la norme 1131-3
I - Système automatisé
Généralités
Un système automatisé se décompose en deux parties dépendantes :
la partie opérative est le processus à automatiser
la partie commande est l'automatisme qui en fonction des entrées (information
externe venant de la partie opérative, consignes extérieures, etc.....) élabore en sortie des
ordres externes destinés à la partie opérative ou à des éléments extérieurs.
partie commande partie opérative
préactionneurs
U.C
traitement
machine
dialogues
capteurs
communication
autres parties
II)Le langage FBD (Function Block Diagram)
Le langage FBD (Function Block Diagram) est un langage graphique qui ressemble à la
schématique électronique. Il y a quand même quelques différences :
manual
auto_mode
alarm
NOMMODIF
&
b1
NOMMODIF:
result
>=1
valid
RETURN
>=1
NOMMODIF:
result
&
valid
cmd10
Saut conditionnel
cmd10
Retour conditionnel
Cela signifie que l'on peut donner un nom à un sous-graphe.
Il faut éviter cependant les boucles car il n'y a aucune information sur l'ordre d'exécution
dans le réseau dessiné.
ena
s1
s2
&
or
Boucle à éviter
run
ena
s1
s2
run
&
run
ena
ror
or
1ère option
s1
s2
or
ror
&
2ème option
Il faut donc garder à l'esprit qu'il s'agit d'un programme et non d'un schéma destiné à être
implanter matériellement comme en électronique.
1 / 20
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
III) Ecrire et utiliser son propre package pour implanter FBD en VHDL
Lors du TD2 de a2i11 (assemblage de fonctions) nous avons passé sous silence le fait que
pour faire la description structurelle présentée il fallait utiliser notre propre package
définissant ce qu'est un un et, un ou et un inverseur. Nous écrivons ci-dessous la version
complète du programme.
e0
e1
e2
i1
&
1
e0e1
e2bar
i3
>1
LIBRARY portes; --portes.vif en WARP. Utiliser
--library manager pour dire où est ce fichier
USE portes.mesportes.ALL;
S
i2
ENTITY Fct IS
PORT(e0,e1,e2 : IN BIT;
s : OUT BIT);
END Fct;
ARCHITECTURE truc OF Fct IS
SIGNAL e0e1,e2bar : BIT;
BEGIN
i1:et PORT MAP(e0,e1,e0e1);
i2:inverseur PORT MAP(e2,e2bar);
i3:ou PORT MAP(e0e1,e2bar,s);
END truc;
Voici en condensé comment on réalise un package :
PACKAGE mesportes IS
COMPONENT et
PORT(e0,e1 : IN BIT;
s : OUT BIT);
END COMPONENT;
COMPONENT ou
PORT(e0,e1 : IN BIT;
s : OUT BIT);
END COMPONENT;
COMPONENT inverseur
PORT(e : IN BIT;
s : OUT BIT);
END COMPONENT;
ENTITY et IS
PORT(e0,e1 : IN BIT;
s : OUT BIT);
END et;
ENTITY ou IS
PORT(e0,e1 : IN BIT;
s : OUT BIT);
END ou;
ENTITY inverseur IS
PORT(e : IN BIT;
s : OUT BIT);
END inverseur;
ARCHITECTURE aet OF et
IS
BEGIN
s<=e0 AND e1;
END aet;
ARCHITECTURE aou OF ou
IS
BEGIN
s<=e0 OR e1;
END aou;
ARCHITECTURE ainv OF
inverseur IS
BEGIN
s<= NOT e;
END ainv;
END mesportes;
Il n'y a aucun standard sur les packages du type ci-dessus. Chaque constructeur propose
son propre package pour programmer ses composants ce qui pose un problème de
portabilité. A noter quand même une initiative avec LPM (Library of Parameterized Modules)
(voir plus loin).
Quelques blocs fonctionnels standards (de la norme 1131-3)
2 / 20
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
R_TRIG
BOOL
CLK
BOOL
BOOL
INT
CU
R
PV
F_TRIG
Q
BOOL
BOOL
CTU
Q
CV
BOOL
INT
BOOL
IN
Q
TIME
PT
ET
Q
CTD
CD
Q
LD
CV
PV
BOOL
BOOL
INT
CV<=0 => Q=1
CV>PV => Q=1
***
CLK
BOOL
CTUD
BOOL BOOL
BOOL
INT
BOOL
BOOL
INT
CU
CD
R
LD
PV
BOOL
Q
INT
CV
*** = TP (impulsion)
BOOL *** = TON (enclenchement)
*** = TOF (déclenchement)
TIME
Dans l'esprit de la norme, les compteurs comptent ou décomptent toujours : PV
n'est pas un max mais un seuil qui quand il est dépassé passe la sortie à 1. Mais
l'envoi d'un front augmentera toujours CV pour CTU.
Temporisateur d'enclenchement (TON)
IN
Q
PT
ET
Citons d'autres blocs fonctionnels : bistable RS et SR,
sémaphore (claim:BOOL,release:Bool;Busy:BOOL).
Exercice
Implanter l'exemple ci-contre en
VHDL. Remarquez l'instanciation
des blocs fonctionnels.
On dispose d'une horloge 10 kHz.
RUN_FF
RS
e1
S
e2
R1
Q1
&
START_TMR
TON
t#30ms
3 / 20
IN
Q
PT
ET
Q1
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
TD2 Retour sur le graphe d'état – Langage LD de la
norme
I) Contacts et bobines
Le langage LD (Ladder Diagram) est plus connu chez nous comme langage à contacts.
Comment implanter une fonction booléenne : en série = ET en parallèle = OU. Bien
distinguer les interrupteurs qui sont des entrées et les bobines qui sont des sorties.
ena
run
s1
P
s2
/ = NOT N=Negative pulse, P=Positive Pulse, S=Set, R=Reset. Les trois premiers
modificateurs peuvent se trouver dans les interrupteurs et tous peuvent se trouver dans
les bobines.
NOMMODIF
RETURN
(voir TD 1) peuvent se trouver dans la partie bobine d'un programme LD. Cela signifie que
l'on peut donner un nom à un sous-graphe.
II) Graphe d'états
Un graphe d'état est une suite d'états et de transitions réceptives.
1°) États
1
2°) Transitions
1
1
Réceptivité
a+b.c
inactif
actif
initial
III) Équations de récurrence
On cherche pour chacun des états i les conditions d'activations ACi et les déactivations Di
puis on écrit :
xi = AC i D i⋅x i Init
1
pour un état initial et
xi = AC i D i⋅x i ⋅Init
e4
pour un état normal :
e1
e1
a4
2
e2
Exemple :
3
4 / 20
a1 a2
a3
a3
4
e3
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
AC1
AC2
AC3
AC4
=
=
=
=
x3.e4+x4.e3
x1.e1
x2.e2
x1./e1
D1
D2
D3
D4
=
=
=
=
e1+/e1=1
e2
e4
e3
Équations de récurrences
Équations de sorties
x1+ = x3.e4+x4.e3 + Init
x2+ = (x1.e1+x2./e2)./Init
x3+ = (x2.e2+x3./e4)./Init
x4+ = (x1./e1+x4./e3)./Init
a1 = x1
a2 = x1
a3 = x3 + x4
a4 = x2
Exercice 1
Implanter les équations de cet exemple en langage à contact.
IV) Un nouveau style de programmation VHDL
Le séquentiel simple (diagramme d'évolution) sans équations de
récurrence
ENTITY demo IS PORT(
clock : IN BIT;
q : INOUT BIT_VECTOR(0 TO 1));
END demo;
00
ARCHITECTURE mydemo OF demo IS
BEGIN
PROCESS(clock) BEGIN
IF clock'EVENT AND clock='1' THEN
CASE q IS --style case when
WHEN "00" => q <="01";
WHEN "01" => q <="10";
WHEN "10" => q <="11";
WHEN OTHERS => q <="00" ;
END CASE;
END IF;
END PROCESS;
END mydemo;
01
10
11
Nous avons déjà eu l'occasion de parler de ce problème en a2i11 (voir Tds 15) avec des
équations de récurrence. Présentons d'abord la technique avec et sans initialisation.
Key=0
Key=1
Key=1
Ring=0
Ring=0
Armed
Ringing
Arme d
Off
Rin g=1
Off
Off
Armed
Off
Ring =0
-- sans initialisation
BEGIN
PROCESS (clock) BEGIN
5 / 20
Armed
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
IF clock'EVENT AND clock='1' THEN
CASE etat IS
WHEN Off => IF key ='1' THEN etat <= Armed;
ELSE etat <= Off;
END IF;
....
END CASE;
END IF;
END PROCESS;
....
-- avec initialisation synchrone
BEGIN
PROCESS (clock) BEGIN
IF clock'EVENT AND clock='1' THEN
IF Init='1' THEN etat <=Off; --initialisation synchrone
ELSE
CASE etat IS
WHEN Off => IF key ='1' THEN etat <= Armed;
ELSE etat <= Off;
END IF;
....
END CASE;
END IF
END IF;
END PROCESS;
....
Exercice 2
1) Déclarer en FBD le programme ci-dessous.
2) Réaliser en VHDL le cahier des charges ci-dessous exprimé en langage à contact. On
dispose pour cela d'une horloge à 25 Mhz. Réaliser d'abord un component combinatoire.
ena
s2
s1
T#25ms
run
TOF
IN
Q
PT
ET
Temporisateur de déclenchement (TOF)
IN
Q
PT
ET
Exercice 3
6 / 20
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
1) Déclarer en FBD le programme ci-dessous.
2) Donner les équations de récurrence, en langage LD, de ces graphes d'états :
3) Ecrire le programme VHDL pour le premier graphe d'état en utilisant un case.
a1 a2
1
e1
a3
a4
2
e2
a3
e4
a3
3
e3
e3
a4
4
4
e2
a3
3
e1
e1
a4
2
a1 a2
1
5
e4
a4
e5
Exercice 4
Déclarer en FBD le programme ci-dessous.
Réaliser ce graphe d'état en VHDL en prenant soin de séparer le compteur et la partie
séquentielle. On utilisera donc un component pour la partie séquentielle et un autre pour le
compteur.
cnt=0
0
e1
1
e4
a1 e3
cnt=5
a2
2
4
cnt=cnt+1
e2
3
a3
cnt<5
7 / 20
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
TD3 Le langage SFC de la norme 1131-3
I) Le GRAFCET ( règles d'établissement)
I-1) Etapes
Une étape est représentée par un carré. Elle peut avoir deux états :
état actif (une marque à l'intérieur du carré)
état inactif
Règle 1 : La situation initiale d'un grafcet caractérise le comportement de la partie
commande vis à vis de la partie opérative et correspond aux étapes actives au début du
fonctionnement de la partie commande.
...
1
1
1
inactive active initiale
Remarques :
cas
général
convergence
en OU
1
divergence
en OU
.....
la situation initiale peut n'être obtenue qu'une seule fois à la mise sous
tension
– on peut utiliser plusieurs étapes initiales
–
GRAF1
GRAF2
1
1
a
a
2
10
b
2
e
3
b
11
3
c
c
4
4
d
=1
I-2) Transitions
Une transition est représentée par un trait horizontal. A chaque transition est associée une
réceptivité. Une transition est validée lorsque toutes les étapes immédiatement
précédentes reliées à cette transition sont actives.
8 / 20
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
jonction ET
simple
distribution ET
jonction ET
distribution ET
parallélisme structural
Règle 2 : l'évolution de la situation d'un grafcet correspondant au franchissement d'une
transition ne peut se faire :
que lorsque cette transition est validée
et que la réceptivité associée à cette transition est vraie .
Lorsque ces deux conditions sont réunies, la transition devient franchissable et elle est
obligatoirement franchie.
Règle 3 : Le franchissement d'une transition provoque :
la désactivation de toutes les étapes immédiatement précédentes reliées à cette
transition .
l'activation de toutes les étapes suivantes reliées à cette transition .
exemples :
7
3
8
9
(a+b).c
a .( b + c )
4
1 0
1 1
Règle 4 : plusieurs transitions simultanément franchissables sont simultanément franchies
exemple : montrer que ces deux représentations sont équivalentes
4
h .X 1 1
5
4
11
h .X 4
11
h
12
5
12
Règle 5 : si au cours du fonctionnement de l'automatisme une même étape doit être
9 / 20
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
simultanément activée et désactivée, elle reste active.
exemple :
1
a
.b
transition sur front 2
a
GRAF3
3
a
II) Equations de récurrences. Passage GRAFCET graphe d'états
La différence entre un GRAFCET et un graphe d'état est le nombre de jetons : un seul pour
le graphe d'état et un ou plusieurs pour le GRAFCET.
1
e1
2
Rappel des équations de récurrences
(ne sont pas utiles pour cette synthèse)
x1+ = x3.x5.e4+x1./e1+I
1
e1
e2./e3
4
x2+ = (x1.e1+x2./e2)./I
e3 x3+ = (x2e2+x5e4x3)./I
e2
x4+ = (x1e1+e3x4)./I
5
3
x5+ = (x4e3+x3e4x5)./I
e4
{3,4}
e3
{2,4}
e2.e3
{3,5}
III)Exercices
Exercice 1
On considère le grafcet suivant, compléter le chronogramme
10 / 20
e3./e2
e2
{2,5}
e4
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
a
b
1
c
a
2
X1
b
X2
3
X3
c
Quel est le nombre d'états possibles ?
Tracer un graphe des états.
Exercice 2
Construire un graphe d'état pour chacun des GRAFCETs ci-dessous. En déduire les
équations de récurrence correspondantes puis celles des GRAFCETs.
a1 a2
1
a1 a2
1
e1
e1
e1
e1
a4
2
4
a3
2
a4
4
a5
2
e4
a3
3
a4
4
e2
e2
e2
3
a1 a2
1
3
a3
a3
e4
e3
5
a4
e5
e3 e5
5
a4
e 3 ./ e 46
5
e4
a4
e4
Exercice 3 : On donne les deux grafcets ci-dessous :
11 / 20
a5
e5
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
1
1
a
a
2
2
b
b
3
b .c
10
d
e
4
11
f
10
c
d
4
3
11
e
g
12
f
Déclarer en FBD les programmes ci-dessus.
Tracer les graphe des états.
Quel est le nombre d'états possibles dans les deux cas ?
Que se passe-t-il si l'on remplace la transition /b.c par c ? Commenter.
Que se passe-t-il si l'on remplace la convergence en ET par une convergence en OU ?
12 / 20
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
TD4 ARS2 Transitions, Actions et temps
I) Transitions temporisées
Réceptivité vraie
Réceptivité dépendante du temps
1
3s/a/7s
2
a
La notation est de la forme Réceptivité fausse
«t1/variable/t2». Dans
l’exemple ci-contre, la
3s
réceptivité n'est vraie que 3 s
après que « a » passe de l’état 0
à l’état 1, elle ne redevient
fausse que 7 s après que « a »
passe de l’état 1 à l’état 0.
7s
Simplification usuelle
L’utilisation la plus courante est la temporisation de la variable d’étape avec un temps t2
égal à zéro :
Dans ce cas la durée d’activité de l’étape 1 est
de 5 s.
X1
1
5s/X1
X2
Remarque : Il est possible d’utiliser cette
notation lorsque l’étape temporisée n’est pas
l’étape amont de la transition. La norme propose
la notation :
5s
2
X1.t > t#5s
II) SFC (Sequentiel Function Chart) : généralités sur les actions
Norme CEI 848 (1988) complétée par 1131-3 (1993)
Ordre (action) détaillée :
• La section a contient une lettre symbole ou une combinaison de lettres symboles
décrivant comment le signal binaire de l'étape sera traité (N=Normal, P=Pulse, S= set R
= Reset).
• La section b contient une déclaration symbolique ou littérale décrivant l'ordre ou l'action.
• La section c indique le numéro de référence du signal de fin d'exécution correspondant
NOTES
1. La section b doit être au moins deux fois plus grande que les sections a et c.
2. Les sections a et c ne sont spécifiées que si nécessaire.
18
ORDRE "A"
c
c
25
c
20.X
Action mémorisée
c
Action "A"
R ORDRE "A"
k
Ordre non mémorisé
Ordre "A"
S ORDRE "A"
20
18.X
25.X
k
13 / 20
20.X S
25.X R
ACTION
"A"
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
Ordre non mémorisé mais retardé
18.X
D
18 T#5s ORDRE "A"
18.X 5s 0s Ordre
c
"A"
c
Ordre "A"
5 s
Ordre non mémorisé mais limité dans le temps
10
b
L
ORDRE "A"
T#5s
10.X
10.X
b
Ordre "A"
5s 0s
Ordre
& "A"
5 s
20
c
SD ORDRE "A"
T#5s
R ORDRE "A"
25
Ordre mémorisé et retardé
20.X
Ordre
20.X S
25.X R
25.X
Ordre "A"
5s 0s
"A"
5 s
k
Ordre retardé et memorisé
20
c
25
DS
ORDRE "A" 20.X
T#5s
20.X 5s 0s
25.X
25.X
R ORDRE "A"
Ordre "A"
c
SL ORDRE "A"
T#5s
R ORDRE "A"
25
k
"A"
S
R
5 s
k
20
Ordre
Ordre memorisé et limité dans le temps
20.X
20.X S
25.X
R
25.X
Ordre "A"
5 s
14 / 20
Ordre
5s 0s
&
"A"
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
Forme 1
Ordre conditionnel
C ORDRE "A"
si "d"
10
b
Forme 2
10
10.X
10.X
b
d
d
C ORDRE "A"
d
Ordre
& "A"
Ordre "A"
b
Ordre mémorisé conditionnel
Forme 1
10
b
SC ORDRE "A"
si "d"
Forme 2
10
10.X
10.X S
25.X
d
d
25.X R
Ordre "A"
SC ORDRE "A"
b
R ORDRE "A"
25
k
Exercice 1
Pour le chronogramme des variables d'entrées a et b indiquées, donner :
1°) le chronogramme de 2.X (X2) et 2.t>t#6s (t/2/6s)
2°) le chronogramme de 3.X (X3) et 3.t>t#6s (t/3/6s)
6s
a
1
3
a
2
b
a
4
b
Ordre
"A"
&
b
Exercice 2
Pour le chronogramme des variables d'entrées a, b et c indiquées, donner :
1°) les situations stables successives ;
2°) le chronogramme des sorties A et B.
L'action B s'écrivait autrefois (B si t/3/6s)
15 / 20
d
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
6s
a
b
1
a
2
C A si a
c
3
b
D
B
t#6s
4
c
Exercice 3 : Utilisation de temporisations.
a) On veut faire la sélection d'une
impulsion longue (> 3s) : l'action sur
un bouton poussoir (BP) doit être
maintenue pendant un temps
minimum de trois secondes pour
provoquer une action B.
X27
27
action B
4s/X27
28
4s/X27
4 s
action B
X28
b) Même exercice pour une impulsion
courte (< 1s).
Exercice 4
On désire gérer l'allumage d'une lampe par 4 interrupteurs. C'est un front sur l'un des
quatre interrupteurs qui allumera la lampe et c'est un front sur l'un des quatre
interrupteurs qui l'éteindra.
16 / 20
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
TD5 ARS2 Langage IL de la norme 1131-3
I) Langage IL
Le présent paragraphe définit la sémantique du langage IL (Liste d'instructions) dont la
syntaxe formelle est donnée dans l'annexe B.2. de la norme.
I.1 Instructions
Comme l'indique le Tableau 1, une liste d'instructions est composée d'une suite
d'instructions. Chaque instruction doit débuter sur une nouvelle ligne et doit contenir un
opérateur accompagné de modificateurs optionnels et, si cela est nécessaire pour
l'opération considérée, un ou plusieurs opérandes séparés par des virgules. Les opérandes
peuvent être choisis parmi les représentations des variables en tableau 3.
L'instruction peut être précédée d'une étiquette d'identification suivie de deux points (:). Si
un commentaire, il doit constituer le dernier élément d'une ligne. Des lignes vides peuvent
être insérées entre les instructions.
Tableau 1 - Exemples de champs d'instructions
Etiquette
START:
Opérateur
LD
ANDN
ST
Opérande
%IX1
%MX5
%QX2
Commentaire
(* BOUTON POUSSOIR *)
(* NON INHIBEE *)
(* MARCHE VENTILATEUR *)
I.2) Opérateurs, modificateurs et opérandes (p228 de la norme)
Les opérateurs standards ainsi que leurs modificateurs et opérandes autorisés doivent être
tels qu'énumérés dans le tableau 3.
Le modificateur "N" indique une négation booléenne de l'opérande.
Par exemple l'instruction ANDN %IX2 est interprétée de la manière suivante :
resultat := resultat AND NOT %IX2
Le modificateur parenthèse gauche "(" indique que l'évaluation de l'opérateur est différée
jusqu'à ce qu'un opérateur parenthèse droit ")" soit rencontré ; par exemple la séquence
d'instructions suivante:
AND( %IX1
OR %IX2
)
doit être interprétée de la manière suivante :
resultat := resultat AND (%IX1 OR %IX2)
Le modificateur "C" indique que l'instruction donnée ne doit être exécutée que si le résultat
faisant l'objet de l'évaluation en cours a la valeur booléenne 1 (ou la valeur booléenne 0 si
l'opérateur est combiné avec le modificateur "N").
Tableau 2 - Opérateurs de liste d'instructions (p 230 de la norme)
N°
1
2
Opérateur
LD
ST
3
S
R
Modificateur Opérande
Sémantique
N
Note 2
Rendre le résultat courant égal à l'opérande
N
Note 2
Mémoriser le résultat à l'emplacement de
l'opérande
Note 3
BOOL
Positionner l'opérande booléen à 1
Note 3
BOOL
Remettre l'opérande booléen à 0
17 / 20
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
AND
&
OR
XOR
ADD
SUB
MUL
DIV
GT
GE
EQ
NE
LE
LT
JMP
CAL
RET
N, (
N, (
N, (
N, (
(
(
(
(
(
(
(
(
(
(
C, N
C, N
C, N
BOOL
BOOL
BOOL
BOOL
Note 2
Note 2
Note 2
Note 2
Note 2
Note 2
Note 2
Note 2
Note 2
Note 2
LABEL
NAME
AND booléen
AND booléen
OR booléen
OR exclusif booléen
Addition
Soustraction
Multiplication
Division
Comparaison : >
Comparaison : >=
Comparaison : =
Comparaison : <>
Comparaison : <=
Comparaison : <
Saut vers l'étiquette
Appel d'un bloc fonctionnel (Note 4)
Retour d'une fonction appelée ou d'un bloc
fonctionnel
Evaluation d'une opération différée
21
)
NOTES
1 Se reporter au texte précédent pour toute explication relative aux modificateurs et à
l'évaluation des expressions.
2 Ces opérateurs doivent être soit surchargés soit saisis comme défini en 2.5.1.4. Le résultat
courant et l'opérande doivent être du même type
3 Ces opérations sont effectuées si et seulement si le résultat courant a la valeur booléenne
1
4 Le nom du bloc fonctionnel est suivi par une liste d'arguments entre parenthèses, tels que
définis en 3.2.3.
5 Lorsqu'une instruction JMP est contenue dans une construction ACTION...END_ACTION
l'opérande doit être une étiquette à l'intérieur de la même construction
I.3 Opérandes
Les opérandes sont :
Tableau 3
N°
1
2
3
4
5
6
7
8
9
Préfixe
I
Q
M
X
Aucun
B
W
D
L
Signification
Emplacement d'entrée
Emplacement de sortie
Emplacement de mémoire
Taille d'un seul bit
Taille d'un seul bit
Taille d'un octet (8bits)
Taille d'un mot (16 bits)
Taille d'un double mot (32 bits)
Taille d'un mot long (Quad) (64
bits)
NOTES
1 Sauf déclaration contraire, le type de donnée d'une variable
directement adressable, de la taille d'un "seul bit" doit être BOOL.
2 Les organismes nationaux de normalisation peuvent publier des
tables de traduction de ces préfixes.
II)Les blocs fonctionnels
II.1)Les fonctions standards
Citons pèle mêle les fonctions standards : ADD, SUB, MUL, DIV, SHL, SHR, SEL, MUX, MAX,
18 / 20
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
MIN, LIMIT (limiteur, écrêteur), GT, GE, EQ, LE, LT, NE, des fonctions de chaîne de
caractères.
II.2 Fonctions et blocs fonctionnels avec IL (p 230 de la norme)
Les blocs fonctionnels, tels que définis en II.2, peuvent être lancés sous condition ou
inconditionnellement à l'aide de l'opérateur CAL (Appel). Comme l'illustre le tableau 4, ce
lancement peut prendre trois formes.
Tableau 4 - Caractéristiques du lancement de bloc fonctionnel en langage IL (p 232)
N°
1
Description / exemple
CAL avec liste d'entrées
CAL C10 (CU := %IX10, PV:=15)
2
CAL avec entrées de charge/mémoire
LD 15
ST C10.PV
LD %IX10
ST C10.CU
CAL C10
3
Utilisation d'opérateurs d'entrée:
LD 15
PV C10
LD %IX10
CU C10
NOTE - Une déclaration telle que VAR C10 : CTU; END_VAR est supposée dans
les exemples ci-dessus
Les blocs fonctionnels doivent être déclarés : c'est la différence avec les fonctions.
Les fonctions sont appelées directement en langage IL (voir l'exemple ci-dessous)
Tableau 5 – Appel de fonctions
Etiquette
START:
Opérateur
LD
BCD_TO_INT
SUB
INT_TO_BCD
Opérande
Poids_brut
tare
Commentaire
(* Poids brut *)
(* Conversion par exemple*)
(* Soustraction de la tare *)
III)Programmation de GRAFCETs en langage IL
Un problème à se poser est comment programmer un GRAFCET à l'aide du langage IL.
Première méthode : on utilise les équations de récurrence.
19 / 20
S. Moutou et G.Millon : réalisé avec OpenOffice.org 1.1 pour l'IUT de Troyes
1
I1 . 0
2
I1 .1
3
I1 .2
(* initialisation *)
LD %S1
S %M0 (* M0 = étape 1 *)
R %M1 (* M1 = étape 2 *)
R %M2 (* M3 = étape 3 *)
(* sequentiel *)
LD %M0
AND %I1.0
S %M1
(* si le resultat courant est vrai *)
R %M0
(* si le resultat courant est vrai *)
LD %M1
AND %I1.1
S %M2
R %M1
....
Deuxième méthode : des éléments prédefinis existent :
• construction STEP ... END_STEP ou INITIAL_STEP ... END_STEP
• construction TRANSITION ... END_TRANSITION (TRANSITION FROM et TO)
• construction ACTION ...END_ACTION
Exemples :
Langage IL
Langage ST
STEP STEP7 : A(N);END_STEP (*action A
normale *)
TRANSITION FROM STEP7 TO STEP 8 :
LD %IX2.4
AND %IX2.3
END_TRANSITION
STEP STEP8 : B(S);END_STEP (* action
SET B*)
STEP STEP7 : END_STEP
TRANSITION FROM STEP7 TO STEP 8 :
:= %IX2.4 & %IX2.3;
END_TRANSITION
STEP STEP8 : END_STEP
STEP STEP7 : A(N);B(L,t#10s); END_STEP
TRANSITION FROM (STEP7,STEP8) TO STEP 9
:
LD %IX2.4
AND %IX2.3
END_TRANSITION
STEP STEP9 : B(S);A(N);END_STEP (*deux
actions*)
Exercice 1
Reprendre les GRAFCETs de l'exercice 2 du TD3 et les programmer en IL
Exercice 2
Décrire une architecture en VHDL capable d'exécuter un programme IL. Les instructions
pouvant être exécutées sont : LD, LDN, AND, ANDN,OR, ST, STN et fin de programme. Le
contenu de la mémoire programme sera pour « simplifier » réalisé avec un circuit
combinatoire. Les entrées seront au nombre de 4 ainsi que les sorties. Séparer la partie
chemin de données et le séquenceur.
20 / 20

Documents pareils

TD1 : VHDL, tables de vérité, diagramme d`évolution

TD1 : VHDL, tables de vérité, diagramme d`évolution BEGIN i1:et PORT MAP(e0=>e0,e1=>e1,s=>e0e1); i2:inverseur PORT MAP(e=>e2,s=>e2bar); i3:ou PORT MAP(e0=>e0e1,e1=>e2bar,s=>s); END truc; -- fin de l'architecture globale ENTITY et IS PORT(e0,e1 : IN ...

Plus en détail