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 : xi = AC i D i⋅x i Init 1 pour un état initial et xi = 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
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 ...