You are on page 1of 63

Table des matires

I introduction..................................................................................................................................................1 II dfinitions....................................................................................................................................................2 III exemple simple ...........................................................................................................................................4 IV rgles d'volution.......................................................................................................................................5 V configurations courantes............................................................................................................................6 VI Cas gnriques..............................................................................................................................................8 1 priorit..............................................................................................................................................8 2 travail la chane...........................................................................................................................10 3 ressource (ou smaphore)...............................................................................................................11 Mise en Oeuvre du GRAFCET.......................................................................................................................13 Quelle technologie choisir pour mettre en oeuvre un Grafcet ?..................................................................15 Ralisation par cblage .....................................................................................................................................17 Cas sans problmes...............................................................................................................................17 Grafcet linaire........................................................................................................................17 Divergence simple en ET .........................................................................................................19 Divergence exclusive en OU...................................................................................................19 Convergence en ET ..................................................................................................................20 Convergence simple en OU.....................................................................................................20 Exercice rcapitulatif...............................................................................................................20 Cas o cette mthode est mauvaise .......................................................................................................21 Grafcet deux tapes...............................................................................................................21 mmorisation de la transition ...................................................................................................22 Bascules synchrones................................................................................................................23 utilisation d'un squenceur..............................................................................................................................24 utilisation d'un squenceur....................................................................................................................24 P.C. lectronique......................................................................................................................24 P.C. pneumatique.....................................................................................................................24 P.C. lectrique..........................................................................................................................25 Cration d'une carte micro programme...................................................................................................26 Utilisation d'un automate................................................................................................................................27 MISE EN OEUVRE DU GRAFCET SUR AUTOMATES ..........................................................................28 Les fonctions de base d'un automate..............................................................................................................29 L'AF (automate fictif)...........................................................................................................................29 Langage boolen du PB 100 ou April 15 .............................................................................................30 Adresses...................................................................................................................................30 Langage booleen......................................................................................................................30 la temporisation ........................................................................................................................31 Le langage contacts du TSX..............................................................................................................31 Les rseaux .............................................................................................................................32 Temporisation..........................................................................................................................32 i

Table des matires


le Micro 1 de IDECIZUMI (distribu par CHAUVIN ARNOUX) ....................................................32 micro contrleur ST62xx......................................................................................................................33 assembleur (PC)....................................................................................................................................33 En langage volu.................................................................................................................................34 Conclusion............................................................................................................................................34 Programmation d'un Grafcet dans le langage de base.................................................................................35 Mthode globale ....................................................................................................................................35 Principe....................................................................................................................................35 Exemple simple : Grafcet 1.....................................................................................................36 langage booleen APRIL PB :...............................................................................................36 Application en ST62xx............................................................................................................37 Exemple complexe : grafcet 2.................................................................................................38 Cas du langage Boolen ..........................................................................................................39 En langage volu (pascal)......................................................................................................39 Mthode locale......................................................................................................................................41 Principe....................................................................................................................................41 Exemple simple ........................................................................................................................41 mise en oeuvre sur PB 100...................................................................................................................42 Exemple complexe (Grafcet 3)................................................................................................42 cas du PB100........................................................................................................................................43 En assembleur PC (avec MASM ou TASM)........................................................................................44 application en C.......................................................................................................................44 Conclusions ..............................................................................................................................45 Programmation directe en Grafcet................................................................................................................46 PB APRIL 15........................................................................................................................................46 sur TSX.................................................................................................................................................47 L'automate MICRO1 .......................................................................................................................................48 1 Description gnrale.......................................................................................................................48 2 Connexions.....................................................................................................................................48 3 Adresses..........................................................................................................................................49 4 Structure du programme.................................................................................................................49 5 Langage..........................................................................................................................................49 5.1 LOD (load charger).....................................................................................................................49 5.2 OUT (sortir)....................................................................................................................................49 5.3 AND (et).........................................................................................................................................50 5.4 OR (ou)...........................................................................................................................................50 5.5 NOT (non) .......................................................................................................................................50 5.6 AND LOD / OR LOD...................................................................................................................50 5.7 SET (allumer) ..................................................................................................................................51 5.8 RST (reset teindre).....................................................................................................................51 5.9 TIM (timer temporisation)...........................................................................................................51 5.10 JMP (jump saut avant) et JEND (fin de saut)............................................................................52 5.11 MCS (Master Control Set) et MCR (Master Control Reset)........................................................52 5.12 SOT (Single OutpuT sortie impulsionnelle) ..............................................................................52 5.13 CNT (counter compteur)...........................................................................................................53 5.14 Comparateurs (associs aux compteurs CNT)..............................................................................53 5.15 SFR (ShiFt Register registre dcalage) ...................................................................................53 6 Entre d'un programme ...................................................................................................................54 7 Monitoring......................................................................................................................................55

ii

Table des matires


Description succincte du TSX.........................................................................................................................56 Description succincte du TSX..........................................................................................................................57 Les fonctions de base d'un automate .....................................................................................................57 Le langage contacts du TSX..............................................................................................................57 Temporisation ......................................................................................................................................58 Compteur / dcompteur .........................................................................................................................58 Conclusion ...........................................................................................................................................59 Programmation directe en Grafcet .......................................................................................................59 Dtails pratiques...................................................................................................................................60 Description des menus (utiles) sur la console T407.............................................................................61

iii

_____________________________________________________________________________________________________________

I introduction
Le Grafcet est un outil graphique de dfinition pour l'automatisme squentiel, en tout ou rien. Mais il est galement utilis dans beaucoup de cas combinatoires, dans le cas o il y a une squence respecter mais o l'tat des capteurs suffirait pour rsoudre le problme en combinatoire. Il utilise une reprsentation graphique. C'est un langage clair, strict mais sans ambigut, permettant par exemple au ralisateur de montrer au donneur d'ordre comment il a compris le cahier des charges. Langage universel, indpendant (dans un premier temps) de la ralisation pratique (peut se "cbler" par squenceurs, tre programm sur automate voire sur ordinateur). Ce document prcise le langage Grafcet. Vous n'y trouverez pas d'exemples simples (qui font pourtant partie de la majorit des applications relles), il y en a un tas l'universit de BREST. Voici d'autres liens importants sur le Grafcet : un serveur Qubecois extraordinaire : DSC le serveur "officiel" du Grafcet (AFCET, au LURPA Cachan) un autre cours, par Emmanuel Geveaux Remarque : le Grafcet est un langage d'origine franaise, et certains pays pensent que ce qu'ils n'ont pas invent ne peut pas tre de haut niveau. Regardez ce trs bon site expliquant comment on programme un automate sans Grafcet.

_____________________________________________________________________________________________________________

I introduction

_____________________________________________________________________________________________________________

II dfinitions
Un Grafcet est compos d'tapes, de transitions et de liaisons. Une LIAISON est un arc orient (ne peut tre parcouru que dans un sens). A une extrmit d'une liaison il y a UNE (et une seule) tape, l'autre UNE transition. On la reprsente par un trait plein rectiligne, vertical ou horizontal. Un verticale est parcourue de haut en bas, sinon il faut le prciser par une flche. Une horizontale est parcourue de gauche droite, sinon le prciser par une flche.

Une ETAPE correspond une phase durant laquelle on effectue une ACTION pendant une certaine DUREE (mme faible mais jamais nulle). L'action doit tre stable, c'est dire que l'on fait la mme chose pendant toute la dure de l'tape, mais la notion d'action est assez large, en particulier composition de plusieurs actions, ou l'oppos l'inaction (tape dite d'attente). On reprsente chaque tape par un carr, l'action est reprsente dans un rectangle gauche, l'entre se fait par le haut et la sortie par le bas. On numrote chaque tape par un entier positif, mais pas ncessairement croissant par pas de 1, il faut simplement que jamais deux tapes diffrentes n'aient le mme numro.

Si plusieurs liaisons arrivent sur une tape, pour plus de clart on les fait arriver sur une barre horizontale, de mme pour plusieurs liaisons partant de l'tape. Cette barre horizontale n'est pas une nouvelle entit du Grafcet, elle fait partie de l'tape, et ne reprsente qu'un "agrandissement" de la face suprieure (ou infrieure) de l'tape. On accepte de remplacer cette barre par un point si cela ne cre aucune ambigut.

Une tape est dite active lorsqu'elle correspond une phase "en fonctionnement", c'est dire qu'elle effectue l'action qui lui est associe. On reprsente quelquefois une tape active un intant donn en dessinant un point l'intrieur. Une TRANSITION est une condition de passage d'une tape une autre. Elle n'est que logique (dans son sens Vrai ou Faux), sans notion de dure. La condition est dfinie par une RECEPTIVITE qui est gnralement une expression boolenne (c..d avec des ET et des OU) de l'tat des CAPTEURS. On reprsente une transition par un petit trait horizontal sur une liaison verticale. On note droite la rceptivit, on peut noter gauche un numro de transition (entier positif, indpendant des numros d'tapes). Dans le cas de plusieurs liaisons arrivant sur une transition, on les fait converger sur une grande double barre
_____________________________________________________________________________________________________________

II dfinitions

II dfinitions _____________________________________________________________________________________________________________ horizontale, qi n'est qu'une reprsentation du dessus de la transition. De mme pour plusieurs liaisons partant sous une transition.

_____________________________________________________________________________________________________________

II dfinitions

_____________________________________________________________________________________________________________

III exemple simple


Supposons un chariot pouvant avancer (A) ou reculer (R) sur un rail limit par deux capteurs G et D, Un cahier des charges pourrait tre : Quand on appuie sur le bouton DEPART, on avance jusqu'en D, puis on revient. Ce C.d.C. est incomplet et imprcis. La ralisation du Grafcet permet de remarquer : Que faiton avant l'appui de DEPART, jusqu'o revienton, quelles sont les conditions initiales ? On rcrit le C.d.C. en 3 phases : Attendre jusqu' l'appui de DEPART, avancer jusqu'en D, reculer jusqu'en G, attendre nouveau DEPART et recommencer. On suppose le chariot initialement en G (sinon faire un cycle l'amenant en G).

_____________________________________________________________________________________________________________

III exemple simple

_____________________________________________________________________________________________________________

IV rgles d'volution
La modification de l'tat de l'automatisme est appele volution, et est rgie par 5 rgles : R1 : Les tapes INITIALES sont celles qui sont actives au dbut du fonctionnement. On les reprsente en doublant les cts des symboles. On appelle dbut du fonctionnement le moment o le systme n'a pas besoin de se souvenir de ce qui c'est pass auparavant (allumage du systme, bouton "reset",...). Les tapes initiales sont souvent des tapes d'attente pour ne pas effectuer une action dangereuse par exemple la fin d'une panne de secteur. R2 : Une TRANSITION est soit valide, soit non valide (et pas moiti valide). Elle est valide lorsque toutes les tapes immdiatement prcdentes sont actives (toutes celles relies directement la double barre suprieure de la transition). Elle ne peut tre FRANCHIE que lorsqu'elle est valide et que sa rceptivit est vraie. Elle est alors obligatoirement franchie. R3 : Le FRANCHISSEMENT d'une transition entrane l'activation de TOUTES les tapes immdiatement suivante et la dsactivation de TOUTES les tapes immdiatement prcdentes (TOUTES se limitant 1 s'il n'y a pas de double barre). R4 : Plusieurs transitions SIMULTANEMENT franchissables sont simultanment franchies (ou du moins toutes franchies dans un laps de temps ngligeable pour le fonctionnement). La dure limite dpend du "temps de rponse" ncessaire l'application (trs diffrent entre un systme de poursuite de missile et une ouverture de serre quand le soleil est suffisant). R5 : Si une tape doit tre la fois active et dsactive, elle RESTE active. Une temporisation ou un compteur actionns par cette tape ne seraient pas rinitialiss. Cette rgle est prvue pour lever toute ambigut dans certains cas particuliers qui pourraient arriver dans certains cas :

La partie COURS s'arrte ici. Toute autre rgle que vous auriez pu entendre autre part ne fait pas partie du Grafcet. Il faudra TOUJOURS que votre Grafcet vrifie ce qui a t dit ci dessus (sinon ce n'est pas du Grafcet). Je tiens prciser que le Grafcet devra tre mis en oeuvre (cbl ou programm) et donc une traduction de ce Grafcet en un schma ou une suite d'instructions sera ncessaire. Le rsultat de cette traduction, mme s'il ressemble quelquefois un Grafcet, ne peut pas imposer de nouvelles rgles au Grafcet (qui dirait par exemple que le cas propos aprs la rgle 5 est interdit en Grafcet)

_____________________________________________________________________________________________________________

IV rgles d'volution

_____________________________________________________________________________________________________________

V configurations courantes
divergence en OU : Convergence en OU :

si 1 active et si a seul, alors dsactivation de 1 et activation de 2, 3 inchang. si a et b puis 1 active alors dsactivation 1, activation 2 et 3 quel que soit leur tat prcdent. (rgle 4)

Si 1 active et a sans b, alors activation de 3 et dsactivation de 1, 2 reste inchang Si 1 et 2 et a et b alors 3 seule active

On appelle BARRE DE OU la barre symbolisant les entres / sorties multiples d'tapes. Divergence en ET : Convergence en ET :

si 1 active et si a, alors dsactivation de 1 et activation de 2 et 3.

Si 1 active seule et a alors aucun changement. Si 1 et 2 et a, alors activation de 3 et dsactivation de 1 et 2.

On appelle couramment BARRE DE ET la double barre, mais attention ce n'est pas une entit part mais une partie d'une transition. Dtaillons galement le saut avant (si a alors ...) et les boucles (rpter ... jusqu' c). Ce sont les deux seules possibilits avec des OU: il ne peut y avoir de divergence en ou aprs une transition

Passons maintenant quelques problmes plus complexes (tirs de "Comprendre et matriser le Grafcet, Blanchard, ed. Capadues"): 1 soient 4 tapes 1 4 et deux transitions de rceptivit t1 et t2. Construire la portion de Grafcet ralisant : Quand 1 ET 2 actifs alors si t1 passer en 3 (et dsactiver 1 et 2), si t2 passer en 4 (et dsactiver 1 et 2),
_____________________________________________________________________________________________________________

V configurations courantes

V configurations courantes _____________________________________________________________________________________________________________ sinon rester en 1 et 2 La solution cidessous est accompagne d'une reprsentation de type "rseau de Petri" pour bien montrer o doivent se placer les convergences et divergences ( quoi doit tre relie 1?, quoi doit tre relie t1? ...). En fait on trouve la solution facilement en analysant les cas d'volution (quand franchit t'on t1 ?). Il faut souligner que l'ajout d'une tape intermdiaire n'est pas une bonne solution car tout passage d'une tape dure un laps de temps (donc discontinuit sur les sorties = ala technologique)..

2 Problme du mme ordre : Quand (tape 1 et t1) OU (tape 2 et t2) alors passer en 3 ET 4:

3 si {tape 1 et [tape 2 ou (tapes 3 et 4)]} et transition t alors activer l'tape 5 (et dsactiver les autres).

_____________________________________________________________________________________________________________

V configurations courantes

_____________________________________________________________________________________________________________

VI Cas gnriques
1 priorit 2 travail la chane 3 ressource (ou smaphore)

Nous traitons ici des exemples gnriques, c'est dire que les problmes voqus ici se posent assez souvent, et la mthode utilise pour les rsoudre pourra tre rutilise.

1 priorit
Soit un chariot se dplaant sur deux rails (action D vers la droite, G vers la gauche). Il comporte une pince pouvant prendre une pice (PP, fin quand fpp) s'il se trouve sur le tapis A (capteur y) et qu'une pice est prsente (capteur a) (idem en z si b). Puis il retourne en x, pose la pice (action DP, fin quand fdp) sur le plateaux suppos en position haute (fv+). Celuici descend (V, jusqu' fv), un second vrin pousse la pice (P+, fin quand fp+), puis le pousseur recule en fp, le plateau remonte en fv+ Le tapis de sortie C est suppos toujours en mouvement. Les tapis A et B sont commands par des systmes non traits ici.

Effectuer d'abord un Grafcet linaire comprenant une seule voie d'arrive A. Puis l'amliorer en prvoyant les retours des actionneurs en temps masqu (attention toutefois de ne pas endommager le pousseur). Puis prvoir deux tapis d'alimentation A et B (en cas de pices en a ET b, prendre celle en a). Puis prvoir une priorit tournante (en cas de conflit, prendre la voie qui n'a pas t servie la fois prcdente) attention, si plusieurs pices arrivent sur la mme voie et aucune sur l'autre, ne pas bloquer le systme. Puis modifier la rgle de priorit en donnant en cas de conflit la priorit celui qui n'en a pas profit lors du dernier conflit.

_____________________________________________________________________________________________________________

VI Cas gnriques

VI Cas gnriques _____________________________________________________________________________________________________________

Pour grer la priorit tournante, remplacer la rceptivit de la deuxime transition (note *) par :

qui signifie : arriv en y avec une pice en a et soit pas de pice en b, soit priorit. sinon on continue et quoi qu'il arrive on s'arrte en z (le chariot n'a pas de parachute), en rajoutant un second Grafcet dfinissant quelle voie est prioritaire :

priorit voie A, retour V masqu

Chaque fois qu'une condition squentielle (dpendant de ce qui s'est pass auparavant) intervient dans une rceptivit, il vaut mieux ne pas compliquer le Grafcet, mais "calculer" cette condition par un petit Grafcet annexe. Amliorations : a) permettre au chariot de rechercher une pice ds qu'il a pos la prcdente : sparer le problme en deux : chariot et partie basse.Prvoir deux Grafcet diffrents, pouvant voluer simultanment, mais synchroniss pour le dpose de la pice (par des Xi ou une ressource) b) faire attendre le chariot en y plutt qu'en x (pour amliorer le temps de rponse). Pour la partie basse, l'attente se fait plateau en haut, mais ce ne peut pas tre l'tat initial (il risque de descendre pendant la nuit). Prendre cel en compte :

_____________________________________________________________________________________________________________

VI Cas gnriques

VI Cas gnriques _____________________________________________________________________________________________________________

Les deux tapes initiales ne testent que leurs conditions initiales respectives (partie haute ou partie basse).

2 travail la chane
Soit une chane de remplissage de bidons d'huile. Un tapis roulant se dplaant par saccades (cadenc par un systme suppos externe notre Grafcet, s'arrtant chaque nouvel appui de la came sur le capteur av) est aliment manuellement (de temps en temps il manque des bidons). Trois postes sont prvus : remplissage (R), bouchage (B) et enfoncement (E).

Un seul capteur dtecte la prsence d'un bidon en dbut de chane : pp. On dsire faire les 3 oprations simultanment, sauf s'il n'y a pas de bidon sous le poste. S'il vous semble obligatoire de rajouter des capteurs, vous n'avez RIEN compris au Grafcet puisqu'il vous faut un systme combinatoire (il vaut mieux alors cbler en combinatoire chaque poste : avance tapis ET prsence bidon => effectuer l'action). On suppose que le tapis est vide lors de l'initialisation.

_____________________________________________________________________________________________________________

2 travail la chane

10

VI Cas gnriques _____________________________________________________________________________________________________________

L'tape 1 est constamment active. La dernire transition est appele "transition puits", mais il tait possible de la relier l'tape 1. En fonctionnement normal, toutes les tapes du Grafcet sont actives. Du point de vue commande, chaque opration comportera plusieurs tapes (R = descendre l'entonnoir, ouvrir le robinet,...) dont une seule sera active la fois). Chaque activation reprsente un bidon dans le circuit.

Cette mthode utilise au mieux le squencement du Grafcet, on peut maintenant rajouter des capteurs, mais qui n'auront pour fonction que de vrifier le bon fonctionnement du systme. Dans tous les cas similaires, on utilisera cette dmarche : faire le Grafcet pour une pice seule, puis le modifier pour grer l'ensemble des pices, en vrifiant bien que jamais une mme tape ne corresponde 2 pices, on dcompose donc le systme en tronons et on ne laisse entrer dans un tronon que s'il est libre. Exemples : atelier flexible (on suit la pice pour chaque opration jusqu'au produit fini), montage (monter 2 pices ensemble correspond une convergence en ET : de 2 tapes actives on arrive 1), chariots filoguids (si un tronon est occup, essayer de le contourner par une voie libre)...

3 ressource (ou smaphore)

Au fond du puits de mine ndeg. i, un mineur remplit un chariot Xi. Quand il est plein (le chariot), il (le mineur) appuie sur un bouton di. Immdiatement, le chariot se dplace dans la direction Bi jusqu'au poste de dchargement, compos d'un tapis roulant en mouvement continu, et d'un vrin V qui retourne la benne. Si le poste de dchargement est libre, le chariot avance jusqu'au capteur c, est dcharg puis s'en retourne en ai. Si le poste est occup, il attend son tour en bi. Le poste de dchargement, commun plusieurs voies, n'est utilisable que par une voie la fois. On l'appelle une "ressource physique". Traiter le cas de 2 voies (pas ncessairement de la mme longueur).

_____________________________________________________________________________________________________________

3 ressource (ou smaphore)

11

VI Cas gnriques _____________________________________________________________________________________________________________

Supposer que la ressource est occupe en utilisant le capteur c est IDIOT : et s'il est entre bi et c ? Et si le temps de freinage l'a arrt juste ct de c ? Il faut utiliser les facilits squentielles du Grafcet autant que possible (ne tester un capteur que quand c'est ncessaire). Un capteur ne doit servir que comme condition de passage d'une tape une autre, mais pas pour vrifier un tat du systme qui dcoule du squencement effectu (par exemple, une transition vrifie la prsence d'une pice, aucune action ne dplace la pice puis on revrifie la prsence : Ce n'est cens que si l'on prvoit dans le Grafcet ce qu'il faut faire si la pice a disparu). Ici, on utilise donc une tape (la ressource), qui est active quand la ressource physique est disponible. Ds utilisation, on la dsactive, pour la ractiver quand on libre la ressource physique. On pouvait galement rsoudre le problme par des Grafcets spars (un pour chaque chariot, un pour le dchargement) synchroniss par des Xi. La seule diffrence est que n'ayant plus de divergence sous l'tape 3, on risque d'oublier de traiter le cas d'arrive simultane en b1 et b2, cas arrivant assez rarement pour que l'on ne dtecte pas le problme en phase d'essais, mais se produira de temps en temps en fonctionnement rel sans que l'on puisse reproduire le problme lorsqu'un spcialiste sera prsent (seule solution : graphe des tats accessibles).

_____________________________________________________________________________________________________________

3 ressource (ou smaphore)

12

_____________________________________________________________________________________________________________

Mise en Oeuvre du GRAFCET


Copyright : utilisation de ces documents libre pour tout usage personnel. Utilisation autorise pour tout usage public non commercial, condition de citer son auteur (Patrick TRAU, IPST, Universit Louis Pasteur Strasbourg, email : freeware var nom = "Patrick.Trau"; var srv = "ipstulp.ustrasbg.fr"; document.write("" + nom +" () " + srv + "") //> ) et de me signaler tout usage intensif. Utilisation commerciale interdite sans accord crit de ma part.

Quelle technologie choisir pour mettre en oeuvre un Grafcet ? Ralisation par cblage Cas sans problmes Grafcet linaire Divergence simple en ET Divergence exclusive en OU Convergence en ET Convergence simple en OU Exercice rcapitulatif Cas o cette mthode est mauvaise Grafcet deux tapes mmorisation de la transition Bascules synchrones utilisation d'un squenceur P.C. lectronique P.C. pneumatique P.C. lectrique Cration d'une carte micro programme Utilisation d'un automate

Mise en oeuvre du GRAFCET


Patrick TRAU,ULP IPST,Aot 97
Un des nombreux avantages du Grafcet est sa facilit de mise en oeuvre. Non seulement la ralisation pratique de l'automatisme est facile et rapide, mais de plus on peut s'arranger pour que la ralisation pratique soit dispose de faon similaire au Grafcet, ce qui permet une maintenance facilite (le mot est faible) par rapport aux autres mthodes. Ce document est compos de deux tomes : celuici prsente les gnralits, et dtaille la solution par cblage. Le second tome traite des solutions par programmation, en particulier les Automates Programmables Industriels (API), et peut tre l avant d'aborder le cblage. Prrequis : la lecture de ce document ncessite une connaissance de base en automatisme combinatoire et squentiel (cours disponible ici), et bien sr du Grafcet.

_____________________________________________________________________________________________________________

Mise en Oeuvre du GRAFCET

13

_____________________________________________________________________________________________________________

Quelle technologie choisir pour mettre en oeuvre un Grafcet ?


Tout est possible. Le choix ne dpend que de critres conomiques, le Grafcet n'imposant aucune solution. Nous allons traiter les cas les plus courants : En cas de ralisation unitaire, comportant de nombreuses entres / sorties, ncessitant des modifications de temps en temps (par exemple partie de ligne de production automatique), on choisira un automate programmable (API), programm directement en Grafcet l'aide d'un console de programmation (actuellement on utilise un PC, ce qui permet de saisir et simuler l'automatisme au calme, avant le test in situ). Cette solution semble assez chre dans l'absolu, mais reste conomique relativement au prix des parties opratives mises en oeuvre. C'est de plus la solution qui minimise le prix des modifications (tant que la partie oprative n'a pas tre fortement modifie). En cas de ralisation en petite srie, de matriels qui devront tre personnaliss pour chaque client (par exemple machine emballer), on choisira comme prcdemment un automate, programmable en Grafcet l'aide d'une console (ou mme par une connexion rseau). Ceci permet une production de matriels uniformes (ou en tous cas moins variables), la personnalisation se fera uniquement sur la console. On pourra vendre le produit avec l'automate seul (sans la console, qui vaut en gnral trs cher), assorti d'un service aprsvente pour les modifications ou volutions. En cas de ralisation unitaire d'un petit automatisme (par exemple un transfert de pices l'aide d'un tapis et quelques vrins), on choisira un automate d'entre de gamme, programmable uniquement dans un langage simple (ET, OU , mmoires...) La programmation sera aise (voir mon document sur la programmation d'un Grafcet) mais la modification sera souvent plus simple en rcrivant compltement le nouveau programme. Si l'on produit en srie un systme automatique, avec un fonctionnement prdfini et fig mais pas trop compliqu (machine laver par exemple), la solution la plus conomique est le cblage : une carte lectronique avec une bascule par tape, les seuls lments coteux sont les interfaces (donc le prix dpendra surtout du nombre d'entres sorties). Si un fabriquant de machines laver me lit, qu'il m'explique pourquoi ils continuent utiliser des programmateurs mcaniques qui sont plus chers et plus fragiles. Pour un systme avec un fonctionnement complexe, o la rapidit est ncessaire, ou bien s'il ncessite galement un peu de calcul numrique, on choisira une carte avec un microcontrleur (ou microprocesseur si les besoins sont plus importants), assorti d'une interface comme dans le cas prcdent. La programmation est aise (voir mon document sur la programmation d'un Grafcet), une fois que l'on connat bien le matriel. Le cot du matriel est drisoire (quelques dizaines de francs pour un microcontrleur ST62 avec un peu de RAM, de ROM, une vingtaine d'entres sorties ToR et un port analogique), par contre le matriel de dveloppement revient trs cher, son acquisition n'est envisageable que si l'on prvoit de crer un certain nombre de systmes (sinon on se rabattra sur le cblage ou l'API, ou la soustraitance). Dans les cas o le systme est incompatible avec l'lectronique (champs magntiques, parasites, ambiance humide...), on peut utiliser une partie commande dans la mme nergie que celle de la partie oprative : pneumatique ou lectrique. Dans ce cas une seule solution est possible, le cblage. On utilisera la mme mthode que pour le cblage lectronique, il suffit de savoir raliser les fonctions combinatoires (ET, OU...) et un bistable quivalent une bascule (distributeur bistable, relais autoaliment...). Un squenceur est une telle bascule prvue pour reprsenter une tape, avec un brochage facilitant le chanage d'tapes. Ce n'est presque jamais la solution la plus conomique.

_____________________________________________________________________________________________________________

Quelle technologie choisir pour mettre en oeuvre un Grafcet ?

14

_____________________________________________________________________________________________________________

Ralisation par cblage


Cas sans problmes Grafcet linaire Divergence simple en ET Divergence exclusive en OU Convergence en ET Convergence simple en OU Exercice rcapitulatif Cas o cette mthode est mauvaise Grafcet deux tapes mmorisation de la transition Bascules synchrones

Ralisation par cblage


Le but de ce chapitre est de vous montrer comment mettre en oeuvre un Grafcet l'aide de composants d'lectronique ToR (portes et bascules). Vous pouvez, si vous ne l'avez pas encore fait, consulter mon document traitant de ces composants et des bases thoriques ncessaires leur utilisation (algbre de Boole,...).

Cas sans problmes


Nous allons d'abord voir les cas simples, par une mthode qui ne vrifie pas intgralement toutes les rgles du Grafcet. Si j'en parle, c'est parce que les cas ncessitant plus de prcautions sont rares et faciles identifier.

Grafcet linaire
Il suffit d'utiliser une bascule RS par tape. Une tape est allume si l'tape prcdente est active et que la rceptivit d'entre est vraie. Dans le cas d'un Grafcet linaire, on dsactivera une tape quand la suivante est active. Ceci simplifie le cblage, mais ne respecte pas toutes les rgles du Grafcet (en fait cette mthode fonctionne dans une trs grande majorit de cas, nous traiterons les cas litigieux plus loin dans ce document). Soit le Grafcet :

On peut grer de diffrentes manires l'tape initiale. Dans la plupart des cas, le plus simple est d'utiliser des bascules se mettant 0 la mise sous tension, et d'initialiser l'automatisme l'aide d'un bouton que je noterai ici "init", qui peut galement servir rinitialiser le Grafcet en cours de fonctionnement sans teindre le systme.

Notons, pour l'tape numro i, son entre Set par Si, son entre Reset par Ri, sa sortie Qi. Etudions l'tape 2. Elle s'allume si l'tape 1 est active et d est vrai (S2=Q1.d). Tout le temps quelle est active, la sortie X est
_____________________________________________________________________________________________________________

Ralisation par cblage

15

Ralisation par cblage _____________________________________________________________________________________________________________ allume (X=Q2). Elle s'teint normalement quand la rceptivit de sortie est vraie, mais (comme prcis plus haut) nous allons attendre pour teindre l'tape 2 que l'tape 3 soit active (donc R2=Q3), et donc tre sr que l'tape 3 a eu le temps de prendre en compte l'information. Elle peut galement tre teinte par init, puisqu'elle n'est pas initiale.

Il suffit de rpter cela pour chaque tape et relier le tout. Le schma de cblage du systme complet sera donc (j'ai gard la mme disposition que le Grafcet, mais retourn de 90 degrs, les lectroniciens prfrent les entres gauche et les sorties droite) :

L'tude de chaque tape est simple, la principale difficult est le routage (c'est dire relier le tout), surtout si l'on veut faire un circuit imprim (o les croisements de pistes sont impossibles). D'autant plus que chaque composant doit tre aliment, mais je n'ai pas reprsent ici les alimentations. Mais il existe dsormais de bons logiciels de routage. On peut dj conclure que si la mise en oeuvre d'un Grafcet par cblage n'est pas trs complique, la modification est pour le moins difficile. En gnral, on prfrera refaire un nouveau cblage si l'on dsire modifier le Grafcet. De mme, le cblage a intrt tre compltement test ds sa ralisation, la recherche d'erreurs aprs coup tant bien plus difficile.

Exercice : cbler ce Grafcet de 5 tapes grant une amene de pices :

_____________________________________________________________________________________________________________

Ralisation par cblage

16

Ralisation par cblage _____________________________________________________________________________________________________________ Cahier des Charges : l'appui de d (dpart), on actionne un vrin monostable par l'action SV, jusqu' ce que la pice soit positionne sur le tapis. Puis on attend 10 secondes (retour du vrin), puis on enclenche le moteur du tapis roulant (MT) jusqu' ce que la pice arrive sur le capteur a. Comme la pice prcdente tait peuttre en a au dbut du cycle, il faut attendre un front montant de a, que je gre en attendant que a soit d'abord relch puis nouveau appuy. La temporisation sera ralise par un composant rglable (en fait un circuit RC avec une rsistance variable), qui donne 1 sa sortie si son entre est 1 pendant au moins le temps requis.

Divergence simple en ET
Quand la transition est franchissable, il suffit d'allumer deux tapes au lieu d'une. Le seul problme est la dsactivation de l'tape prcdente : il faut tre sr que les deux tapes suivantes ont eu le temps de prendre en compte l'information d'activation avant de dsactiver la prcdente (si l'on dsactive ds qu'une des deux est active, la seconde ne s'activera plus).

je ne traite ici ni l'amont, ni l'aval, ni les actions, uniquement les liaisons entre 5 et ses suivantes. Ce cblage simple ne rpond pas aux rgles du Grafcet si 5 peut tre ractiv avant que 6 et 7 n'aient t dsactives. Il en est de mme si l'tape 7 par exemple peut tre active d'une autre manire (convergence en OU). Ces cas sont cependant trs rares dans la pratique.

Divergence exclusive en OU
Il n'y a aucun problme particulier.

_____________________________________________________________________________________________________________

Divergence simple en ET

17

Ralisation par cblage _____________________________________________________________________________________________________________

Comme au dessus, je ne traite ici que les liaisons entre 5 et ses suivantes.

Si la divergence n'est pas exclusive (les deux rceptivits peuvent tre vraies en mme temps), c'est un peu plus compliqu, le mieux est de traiter les trois cas (l'une seule, l'autre seule, les deux).

Convergence en ET
Je ne fais pas le schma, il est vident : il faut que les (deux en gnral) tapes prcdentes soient actives, et la rceptivit vraie, pour activer l'tape suivante, celle ci dsactivant les tapes prcdentes.

Convergence simple en OU

Vu le temps que je mets pour faire un schma (le seul outil dont je dispose est paintbrush, et comme je suis en vacances je ne dispose que d'un portable cran monochrome, nom parfaitement choisi puisqu'il n'est mme pas noir et blanc mais gris et gris), je me contente de l'expliquer (a vous fera un bon exercice). On allume 8 si (6 et a) ou (7 et b). On teint 6 et 7 tant que l'on a 8. Evidement ceci ne fonctionne que si l'on ne peut pas avoir simultanment 6 et 7 actives, mais j'ai bien dit (dans le titre cidessus) que je ne traite que le cas simple, qui de plus se trouve tre aussi le plus courant.

Exercice rcapitulatif
Cblez ce Grafcet (il ne pose pas de problme particulier). Ce Grafcet regroupe les diffrents cas de divergence convergence. ..... >>
_____________________________________________________________________________________________________________

Convergence en ET

18

Ralisation par cblage _____________________________________________________________________________________________________________

Cas o cette mthode est mauvaise


Grafcet deux tapes
Soit le Grafcet suivant, et sa ralisation d'aprs la mthode prcdente :

Quand 10 est actif (Q10) et bpauto vrai, en mme temps on essaie d'allumer 11 par S11 et de l'teindre par R11. Mme en prenant une bascule priorit dclenchement, l'tat de 11 sera celui du dernier signal sur ses broches, ce qui risque d'tre alatoire. Ici, la solution est simple : une seule bascule suffit. Mais cet exemple montre bien le problme de ces
_____________________________________________________________________________________________________________

Cas o cette mthode est mauvaise

19

Ralisation par cblage _____________________________________________________________________________________________________________

cblages : une tape dsactive la prcdente tant qu'elle mme est active, au lieu de ne le faire qu'au moment du franchissement de la transition.

Le problme vient de la dsactivation. Tous les composants ne peuvent pas avoir tous exactement un mme temps de rponse. Donc puisqu'on active une tape quand la prcdente est active et la rceptivit est vraie, si simultanment on dsactivait la prcdente il est possible que la suivante n'ai pas eu le temps de s'activer avant que le signal ne disparaisse. La solution choisie est sure, mais l'information de dsactivation est envoye bien plus longtemps que ncessaire. Pour tre sr du rsultat il faudrait mmoriser (dans une bascule) l'tat de chaque transition. En ralisation lectronique ce n'est pas le prix qui poserait problme mais la complication du circuit (dj assez complexe sans cela). En ralisation pneumatique ou lectrique s'ajouterait le prix des composants.

mmorisation de la transition
Donc une solution respectant mieux les rgles du Grafcet consisterait utiliser une bascule pour chaque transition. Elle est allume quand l'tape prcdente et la transition sont vraies, sa sortie active l'tape suivante et dsactive la prcdente. Quand doit on teindre la bascule reprsentant la transition ? Le problme reste donc entier. Une bonne solution est de le faire quand le franchissement a t effectu, c'est dire quand la suivante est active et que la prcdente ne l'est pas. Attention, ce cas peut arriver sans que l'on soit pass par cette transition (convergence en OU par exemple), mais dans ce cas on teint une transition qui l'tait dj, ce qui n'est pas grave. Faisons donc le schma de passage entre une tape 5 et une tape 6, relies par une transition de rceptivit a :

Cette mthode permet de rgler le cas o l'tape 5 risque d'tre ractive avant la dsactivation de 6.

On peut remarquer que l'on aurait obtenu peu prs le mme schma en modifiant le Grafcet pour qu'il soit compatible avec la premire mthode, c'est dire empcher qu'il y ait deux tapes successives actives en mme temps : il suffit d'intercaler une tape comme reprsent cicontre. C'est une mthode qui permet d'avoir un Grafcet plus proche du cblage, donc un cblage plus clair.

Exercice : Cbler le Grafcet de la chane de remplissage de bidons propos dans mon document prsentant le Grafcet . Attention, en fonctionnement normal (tous bidons prsents), toutes les tapes du Grafcet sont actives !

_____________________________________________________________________________________________________________

mmorisation de la transition

20

Ralisation par cblage _____________________________________________________________________________________________________________

Bascules synchrones
La mthode prcdente peut encore dans certains cas ne pas respecter la rgle de simultanit. Pour cela, une seule solution : synchroniser le fonctionnement des composants. Pour cela, il suffit de prendre la premire mthode, mais d'utiliser des bascules MS (ou JK, voir mon document sur les bascules pour un peu plus de dtails). Une bascule MS prend en compte les commandes Set et Reset qu'on lui applique non pas immdiatement, mais au prochain front montant de son entre de synchronisation (horloge). La dsactivation d'une tape se fait plus simplement : par la mme information que celle qui active la suivante (les deux seront prises en compte en mme temps : au prochain front de l'horloge. Il suffit de choisir une horloge suffisamment rapide pour ne pas ralentir l'automatisme (en gnral ce point ne pose pas de problme en P.C. lectronique), mais plus lente que le temps de raction du composant le plus lent. Faisons donc le schma de passage entre l'tape 5 (d'action X) et l'tape 6, relies par une transition de rceptivit a :

On peut immdiatement voir que le schma rsultant est grandement simplifi (je n'ai pas reprsent l'horloge qui doit tre relie chaque bascule, comme l'alimentation, plus la gestion de l'initialisation). On peut remarquer qu'une bascule MS est en fait compose de deux bascules RS, et que cette mthode revient peu prs au mme que les autres modifications que j'ai proposes (en plus sr et plus clair). La principale diffrence est que l'on fixe la dure de l'information de dsactivation par un signal d'horloge.

Patrick TRAU,ULP IPST,Aot 97

_____________________________________________________________________________________________________________

Bascules synchrones

21

_____________________________________________________________________________________________________________

utilisation d'un squenceur


P.C. lectronique P.C. pneumatique P.C. lectrique

utilisation d'un squenceur


P.C. lectronique
Supposons disposer du composant suivant, que j'appellerai un squenceur :

il est aliment par + et , ce qui permet d'alimenter les composants l'intrieur, mais aussi de transmettre cette alimentation (pour le squenceur suivant). Le squenceur reprsente une tape et sa transition de sortie. L'tape est active par A (envoy par l'tape prcdente), et est dsactive par D (envoy par l'tape suivante). Tant que l'tape est active, sa sortie Q est allume, ainsi que DP qui servira dsactiver la prcdente. Quand R est vrai (correspond la rceptivit), le squenceur envoie le signal AS (activation tape suivante), et ce jusqu' ce qu'il soit teint par D.

Donc ce squenceur correspond exactement la mthode prsente plus haut, dans les cas simples. Son seul avantage est de clarifier le cblage : en cas partie linaire de Grafcet, les squenceurs n'auront qu' tre mis cte cte (on dit empils), sans ncessiter de liaisons supplmentaires. Attention, ceci ne simplifie que les parties linaires, pour les divergences, convergences et cas particuliers il faudra utiliser les cblages dcrits prcdemment, avec un rsultat tout aussi confus. Attention ! Ce squenceur n'est srement pas disponible dans le commerce, et pour cause : je viens de l'inventer. Exercice : cblez le Grafcet de 5 tapes grant une amene de pices propos dans le chapitre Grafcet linaire en utilisant ce squenceur.

P.C. pneumatique
Le cblage en pneumatique est exactement similaire au cas lectronique (ce qui voulaient s'en passer devront nanmoins lire tout ce qui se trouve au dessus). On utilise des portes ET et OU, les bascules RS tant remplaces par des distributeurs bistables ( commande pneumatique videment). Les diffrences sont : temps de rponse au minimum 1000 fois plus important, bruit important, maintenance prventive lourde (vrification tuyaux, connections...),
_____________________________________________________________________________________________________________

utilisation d'un squenceur

22

utilisation d'un squenceur _____________________________________________________________________________________________________________

prix des composants 10 100 fois suprieur, compatible avec des ambiances difficiles (humidit, parasites...) Je suis ouvert (un peu), ceux qui connaissent d'autres points (plus positifs) rajouter ici, qu'ils m'envoient un freeware var linktext = "mail."; var nom = "Patrick.Trau"; var srv = "ipstulp.ustrasbg.fr"; document.write("" + linktext + "") //> Vu le prix d'un cblage, on cherche toujours minimiser le nombre de composants, et en gnral on cherchera limiter le nombre d'tapes. Par exemple, on reprsentera par une seule tape une phase o l'on fait plusieurs actions successives, mais o les capteurs disponibles permettent de rendre ce "sous problme" combinatoire. Ce n'est qu'avec une grande exprience que l'on arrivera optimiser le cot (mais qui restera en gnral bien suprieur une solution lectronique). En pneumatique, il existe des squenceurs (au fonctionnement exactement similaire celui prsent en solution lectronique) qui sont trs utiles : ils simplifient grandement le cblage et rduisent de beaucoup le nombre de connexions effectuer (par contre, ils sont chers).

P.C. lectrique
On peut galement directement cbler une Partie Commande en lectrique (220 V par exemple). La bascule est ralise l'aide d'un relais autoaliment. Il a mme exist des squenceurs (RH je crois). Il est aujourd'hui hors de question de s'en servir (mme dans l'ducation nationale on les a jets, ce qui prouve bien que c'est totalement dpass).

_____________________________________________________________________________________________________________

P.C. lectrique

23

_____________________________________________________________________________________________________________

Cration d'une carte micro programme


Cette solution est trs conomique pour des systmes nombreux mais modulables. Elle consiste en une carte comportant un microprocesseur (ou microcontrleur), et une interface de puissance pour toutes les entres sorties. La programmation d'un Grafcet est assez simple raliser (tous les dtails sont dans mon document sur la programmation d'un Grafcet) (Tome 2). Par contre cette programmation ncessite un matriel important (la ralisation aussi) qui est celui d'un dpartement d'lectronique numrique plutt que celui habituellement disponible au sein d'un service automatisme.

Utilisation d'un automate


Un API (automate programmable industriel) est un matriel programmable pouvant tre plac directement dans un environnement de production industrielle (sans aller jusqu' accepter des jets de solvants). Ils possdent un premier tage d'interfaage (entres sorties en 24 V par exemple, mme quelquefois 220 V si l'on n'utilise qu'une faible intensit), un second tage spcifique chaque actionneur devra tre install (mais disponible dans le commerce pour les cas habituels) : distributeurs , thyristors, relais... Les prix s'talent de quelques kF quelques centaines de kF. En entre de gamme, on trouve des automates avec quelques entres sorties ToR (Tout ou Rien), et un langage permettant de simuler les composants de base (ET, OU, NON, bascule, tempo, compteur). A un niveau de prix suprieur, on trouvera des systmes avec un environnement de programmation de haut niveau (PC par exemple), simplifiant grandement la programmation et les tests (en particulier la possibilit de programmer directement l'automate en Grafcet). En haut de gamme on a des API modulaires : on les compose sur mesure, en ajoutant suivant les besoins des cartes d'E/S, des cartes numriques, des conversions numrique analogique, des asservissements (DSP par exemple)... Except en entre de gamme, les API permettent dsormais des dialogues en rseaux d'automates, ce qui permet d'utiliser un superviseur qui ne fait que commander d'autres automates dans lesquels on a dcentralis les tches (l'usage des rseau est grandement facilit par l'utilisation d'automates compatibles entre eux, en gnral de la mme marque). On utilisera un API pour des automatismes unitaires, le cblage n'tant intressant que pour une fabrication en srie de produits automatiss. Vous trouverez des dtails sur la programmation des API dans mon document sur la programmation d'un Grafcet (Tome 2).

_____________________________________________________________________________________________________________

Cration d'une carte micro programme

24

_____________________________________________________________________________________________________________

MISE EN OEUVRE DU GRAFCET SUR AUTOMATES


et autres systmes programmables Ce document est le deuxime tome traitant de la mise en oeuvre du Grafcet. La lecture du premier tome, traitant des gnralits mais surtout du cblage, n'est pas ncessaire pour la comprhension de celuici. Nous allons tudier dans ce document diffrents cas rels, de l'automate (appareil programmable permettant de grer des automatismes en tout ou rien) d'entre de gamme (Micro1, PB/April 15) en passant par le langage contacts des TSX, jusqu'aux microcontrleurs (ST62xx) et ordinateurs (exemples en assembleur PC, en Pascal et en C). Les mthodes prsentes ici s'adapteront tout matriel programmable, c'est pour le prouver que l'on verra autant de langages.

Les fonctions de base d'un automate Programmation d'un Grafcet dans le langage de base Programmation directe en Grafcet quelques liens : la programmation des automates quand on est rfractaire au Grafcet (de l'autre ct de l'Atlantique)

_____________________________________________________________________________________________________________

MISE EN OEUVRE DU GRAFCET SUR AUTOMATES

25

_____________________________________________________________________________________________________________

Les fonctions de base d'un automate


L'AF (automate fictif) Langage boolen du PB 100 ou April 15 Adresses Langage booleen la temporisation Le langage contacts du TSX Les rseaux Temporisation le Micro 1 de IDECIZUMI (distribu par CHAUVIN ARNOUX) micro contrleur ST62xx assembleur (PC) En langage volu Conclusion

Ces fonctions sont disponibles sur tous les automates, des plus simples aux plus volus. Je vais dfinir un langage fictif (qui me servira pour la suite, dans la dfinition des mthodes). Ce chapitre continuera par une prsentation succinte des instructions des diffrents matriels et langages utiliss dans la suite du document pour appliquer les mthodes prsentes.

L'AF (automate fictif)


Je vais dfinir un automate ficitif (que j'apellerai par la suite AF), ainsi que son langage. Je fais ceci car les langages des automates sont trs diffrents, pas trs clairs, mais ils reviennent tous au mme. Un automate traite des variables boolennes (ne pouvant valoir que 0 ou 1). On distingue les entres (en lecture seule), les sorties (en criture mais gnralement on peut les relire, au cas o on aurait oubli ce qu'on a allum en sortie), et les variables internes (pour stocker les calculs intermdiaires) en lecture et criture. Pour l'AF, je noterai les entres Ei, les sorties Si, les variables internes Vi ou un nom en clair. On dispose au moins des fonctions combinatoires ET, OU et NON, souvent plus (ou exclusif par exemple). Pour l'AF je supposerai pouvoir crire une opration sous la forme : Rsultat <= calcul, avec rsultat pouvant tre un sortie ou une variable interne, calcul une quation utilisant des entres ou variables internes, les oprateurs ET, OU, / (complment) et parenthses. Exemple : S3 <= (E1 ET /V3) OU V2 . On peut remarquer que dans la plupart des automates un tel calcul devrait se dcomposer en plusieurs lignes de programme. Pour grer le squentiel, on dispose de la bascule. Je la noterai : SI condition, rsultat <= 1 ou 0. J'accepterai une condition complexe (comportant des oprateurs combinatoires), mais souvent dans la ralit il faudra passer par un calcul mmoris dans une variable interne. Exemple : SI (E1 ET E2) ALORS S3 <= 1 . La temporisation se notera : SI condition ALORS rsultat <= 1 APRES n secondes. La temporisation est rinitialise ds que la condition repasse 0. Celleci doit donc rester valide tout le temps du comptage. Ce fonctionnement est admis sur tout les automates, mais souvent d'autres options sont possibles (dclenchement sur un front montant par exemple). Certains automates autorisent des sauts (GOTO). Je les noterai SAUT. La destination du saut (en gnral un numro de ligne) sera donn en AF par un label : un nom suivi du signe ":". Les automates qui n'acceptent pas les sauts bouclent continuellement sur l'ensemble du programme, mais certaines parties peuvent tre invalides suivant l'tat de certaines variables, ce qui revient donc au mme. Certains permettent galement un saut conditionnel : SI condition SAUT. Exemple :
_____________________________________________________________________________________________________________

Les fonctions de base d'un automate

26

Les fonctions de base d'un automate _____________________________________________________________________________________________________________


hors boucle label : dans boucle SI E1 SAUT label

Voyons quelques exemples d'automates rels :

Langage boolen du PB 100 ou April 15


Adresses
Le PB100 fonctionne en hexadcimal. On peut possder par exemple 24 entres appeles 000 017 et 24 sorties appeles 018 02F. Ces entressorties peuvent tre modifies par groupe de 8 par adjonction de cartes (64 ES maxi). Il possde 512 variables internes binaires (pouvant donc valoir soit 0 soit 1) appeles A00 BFF. Les programmes doivent tre crits partir des lignes 0C30, et peuvent aller jusqu' 0FFF (sauf ajout de modules mmoire). Le PB 15 par contre, possde les entres 000 017, les sorties 020 02F et les variables internes sont limites de A00 A3F. Tout le reste fonctionne de manire analogue.

Langage booleen
Le langage est trs simple : on peut simuler les fonctions ET, OU et les bascules bistables : On dsire allumer la sortie 020 si (l'entre 000 est 1 ET 001 est 0) ou 002 est 1 ou 003 est 0. que je noterai en AF : S020<= (E000 ET /E001) OU E002 ou E003. Le programme correspondant sera :
0C30 0C31 0C32 0C33 0C34 0C35 0C36 0C37 SI 000 SI/ 001 ET A00 SI A00 SI 002 SI/ 003 OU 020 SAUT C30

La fonction ET possde ici 2 entres : 000 et /001. Le rsultat (0 ou 1) est mis dans la variable interne A00. La fonction OU possde ici 3 entres : A00, 002, /003. Le rsultat est mis sur la sortie 020. Attention : un programme est une suite d'instructions, qui sont excutes l'une aprs l'autre. Si une entre change aprs le passage sur l'instruction qui la prend en compte et que l'on ne repasse plus sur les instructions, la sortie n'est pas modifie. C'est la raison de la dernire ligne du programme : repasser sans arrt sur l'ensemble du programme. Par rapport un cblage, on a donc deux dsavantages : temps de rponse (un changement des entres sera pris en compte au maximum aprs le temps d'un passage sur l'ensemble du programme, c'est ce qu'on appele le temps de scrutation, qui sera ici infrieur la milliseconde) et non simultanit (on n'effectue qu'un instruction la fois). Mais ces temps tant en gnral trs infrieurs aux temps de raction des capteurs et actionneurs (inertie d'un moteur par exemple), ceci n'est que rarement gnant. L'avantage est que c'est programmable, donc facilement modifiable. Les fonctions ET et OU acceptent autant d'entres que l'on dsire. Si on n'en utilise qu'une, on a une simple recopie de valeur (ex: SI A00 OU A01). Le SAUT peut tre prcd de plusieurs SI ou SI/. si la conjonction (ET) des conditions est vraie, alors le saut est fait, sinon on continue sur la ligne suivante. Sur PB 15, seuls les sauts vers l'avant (SAUT Axx avec
_____________________________________________________________________________________________________________

Langage boolen du PB 100 ou April 15

27

Les fonctions de base d'un automate _____________________________________________________________________________________________________________ xx=nb de lignes ne pas faire +1) sont possibles, seule la dernire ligne du programme peut contenir un saut en arrire (sans SI). Les fonctions MU (mise un) et MZ (mise zro) permettent de traiter les bistables. Il peuvent eux aussi tre prcds par un ou plusieurs SI : SI A00 SI B0C MU AF3 (2) SI A00 SI B0C ET AF3

(1)

si A00=1 et B0C=1 alors (1) et (2) mettent AF3 1. Sinon, (2) met AF3 0, mais (1) ne le fait pas (AF3 garde la mme valeur qu'avant, 0 ou 1). Une autre fonction utile est le DE :
DE A00 MZ BFF

donnera le mme rsultat que MZ A00 MZ A01 MZ A02 ... MZ BFE MZ BFF

la temporisation
Il faut avant tout donner la condition qui dclenchera la tempo, par un ou plusieurs SI. Puis TP et le nom de la variable qui sera mise 1 au bout de la tempo. Puis donner la base de temps (sur PB15 09FF, 09FE, 09FD pour 1 sec, 1/10, 1/100; sur PB100 BT F, BT E pour 1 sec, 1/10). Puis donner l'adresse o l'on stocke la dure, et l'adresse rserve au compteur. Ces adresses sont n'importe quelle ligne de programme (mais sur laquelle on ne devra pas passer) sur PB100, et entre 0800 et 0817 sur PB15). SI 000 TP 020 09FF 0800 0801 SAUT C30 0800 0801 0005 0000 si appui sur le capteur 000 allumer la sortie 020 aprs un certain dlai le dlai sera donn en Secondes adresse dure adresse rserve compteur

Exemple: 0C30

la dure sera de 5 secondes

En appuyant le contact, la sortie sera allume 5 secondes aprs. Elle restera allume jusqu' ce qu'on lche l'entre. le compteur sera alors automatiquement remis zero. Si on appuie moins de 5 secondes, rien ne se passe. Cetteinstruction n'arrte pas le programme, il faut constamment passer sur les lignes d'instruction pour que la sortie soit bien affecte en bout de tempo.

Le langage contacts du TSX


On peut trouver une documentation plus complte sur cet automate dans mon document "description du TSX" Sur un TSX, les sorties peuvent tre appeles O0,0 O0,F, les entres I1,0 I1,F (si le rack de 16 sorties est positionn en position 0, les 16 entres en 1). Les variables internes sont notes en dcimal de B0 B255.
_____________________________________________________________________________________________________________

la temporisation

28

Les fonctions de base d'un automate _____________________________________________________________________________________________________________

Les rseaux
Les schmas sont effectus l'un aprs l'autre, de haut en bas (et non suivant leur label). Chaque rseau est scrut par colonne de gauche droite. ex:

Dans ce cas l'entre B12 est l'ancienne valeur de la bobine (variable interne) B12. Si l'on veut utiliser le rsultat de ce rseau, il faut utiliser B12 dans le rseau suivant. On note un capteur par le signe | |, un contact inverse par |/|. Une bobine est note < > , une bobine inverse < / > (commande par un niveau 0). Un bistable est allum par < S > , teint par < R > . Un saut un autre rseau est not < J >. On a intrt de n'utiliser que des sauts avants (vers la fin du programme). L'automate fixe automatiquement les entres au dbut de cycle et n'affecte les sorties qu'en fin de cycle (les variables internes sont videment immdiatement modifies).

Temporisation

On reprsente la tempo par le signe : E correspond l'armement de la tempo, C au contrle. D passe 1 en fin de tempo, R est 1 tant que la tempo est en cours. En appuyant la touche ZM, on peut donner : TB: la base de temps, PRESET: la dure.

le Micro 1 de IDECIZUMI (distribu par CHAUVIN ARNOUX)


On peut trouver une documentation plus complte sur cet automate dans mon document "description du Micro 1" Cet automate est produit d'entre de gamme : prix : environ 3000F, compact (environ 1 dm3), avec 6 sorties (numrotes 200 205) comportant chacune un relais (maxi 2A sous 220V), 8 entres (24V) (numrotes 0 7). Les variables internes vont de . Les oprations sont font via une pile (un peu comme une calculatrice HP) : Pour effectuer S203 <= (E00 ET /E01) OU (/E02 ET E03) on crit : charger 0 sur le sommet de la pile LOD 0 AND NOT opration ET entre le sommet de la pile et l'argument donn, le rsultat remplace le prcdent 1 sommet de la pile LOD NOT empiler (au dessus du rsultat prcdent) une nouvelle valeur
_____________________________________________________________________________________________________________

Les rseaux

29

Les fonctions de base d'un automate _____________________________________________________________________________________________________________ 2 AND 3 OR LOD OUT 203 END

faire le calcul (le rsultat remplace le sommet de la pile) OU entre le sommet de la pile et le prcdent, le rsultat remplace le prcdent et la pile a baiss d'un tage Copie du sommet de la pile sur la sortie (sans changement dans la pile !!!) fin du programme, saut automatique en premire ligne

La bascule : si sommet de la pile (dernier calcul ou LOD) vaut 1, SET rsultat ou RST rsultat allumera ou teindra le rsultat, sinon il restera inchang le saut : si sommet de la pile (dernier calcul ou LOD) vaut 1, JMP sautera au prochain JEND (saut avant uniquement, pas d'imbrications)

micro contrleur ST62xx


L'assembleur sera utilis soit sur un ordinateur (plutt PC) mais surtout si l'on a choisi d'utiliser un microcontrleur. Ceuxci sont des composants comportant un microprocesseur, de la RAM et PROM, des ports d'E/S, et souvent un CAN. Ces composants sont la solution idale en cas de production en srie de produits automatiques (mme pour une petite srie) : ils coutent peine plus de 10 F pice (si on en achte beaucoup, videment). Un bon exemple est le ST62 : Il possde trois ports d'E/S 8 bits, un compteur/timer 16 bits et un CNA 8 bits. L'EPROM est de 2 ou 4 Ko, la RAM utilisable est cependant limite 64 octets (256 adressables dont les 3/4 utiliss par le systme). Le minimum savoir sur son langage est simple : chargement d'un registre : LD A,adresse ou LDI A,valeur (on dispose aussi d'autres registres et d'autres adressages) comparaison avec une valeur : CPI A,valeur masquage : ANDI A,valeur ET, complment : AND A,adresse , COM A Mais surtout des instructions avec accs direct un bit donn , ce qui facilite la programmation et vite les problmes de masquages et dcalages : saut si un bit d'une mmoire est 1 : JRS num_bit,adresse,destination_du_saut (JRR saut si bit=0) mise 1 d'un bit d'une mmoire : SET num_bit,adresse mise 0 d'un bit d'une mmoire : RST num_bit,adresse Il possde bien videment toutes les possibilits habituelles des microprocesseurs : interruptions (5 vecteurs, reset compris), sous programmes (mais petite pile : 4 ou 6 imbrications maxi)...

assembleur (PC)
L'assembleur ne sera que rarement utile : personellement je conseillerai plutt C. Nanmoins ce n'est pas une possibilit ngliger, notament dans les cas ncessitant un traitement temps rel. On trouvera un descriptif plus complet dans le document "mmento 8088"
_____________________________________________________________________________________________________________

micro contrleur ST62xx

30

Les fonctions de base d'un automate _____________________________________________________________________________________________________________ On se limitera aux instructions suivantes : LABEL: donne un nom une ligne de programme MOV reg,val met la valeur VAL dans le registre REG (ici DX ou AL) OUT DX,reg envoie sur le port de sortie dont l'adresse est dans DX la valeur contenue dans le registre REG (ici AL) IN reg,DX met dans le registre REG (ici AL) la valeur disponible sur le port d'entre dont l'adresse est dans DX TEST reg,val masque le contenu de REG par VAL (fonction ET) sans changer REG. Le(s) bit(s) de REG correspondant un 1 de VAL seront inchangs, les autres sont mis 0 JZ label saute l'adresse LABEL si le rsultat du test prcdent tait 0 (le bit non masqu valait 0) JNZ label saute LABEL si le rsultat du test prcdent tait non nul. JMP label saute LABEL (sans condition) Je pense que ces petites explications suffiront pour comprendre les programme que je donnerai plus bas

En langage volu
Vous pouvez consulter si ncssaire mon livre sur le Language C ou mon document sur le Pascal. Tous les langages conviennent : ils savent tous faire ET, OU et NON, mettre une mmoire 1 ou 0 sous condition (IF). Le Pascal permet un programme plus clair que tous les autres condition d'utiliser la notion d'ensembles (estce que l'tape X appartient l'ensemble des tapes actives ?). Dans les autres langages il faudra faire des boucles et des masquages, pour cela le C sera certainement le plus pratique (ainsi que pour grer directement une carte d'entres sorties). Rappel : les sauts sont possibles dans tous les langages classiques, contrairement ce que certains enseignants essayent de faire croire.

Conclusion
Ces fonctions de base sont prsentes dans tous les automates (mme si elles sont mises en oeuvre par des langages trs diffrents, y compris graphiques), sauf les sauts qui peuvent tre plus limits (au minimum bouclage automatique sur l'ensemble du programme, mais sans sauts dans le programme). Nous utiliserons ces seules fonctions pour voir comment programmer un grafcet, mais le principe reste valable quel que soit l'automate. Souvent, d'autres possibilits existent, en particulier temporisations, comptage, comparaisons,... Voir les documentations correspondantes si ncessaire.

_____________________________________________________________________________________________________________

En langage volu

31

_____________________________________________________________________________________________________________

Programmation d'un Grafcet dans le langage de base


Mthode globale Principe Exemple simple : Grafcet 1 langage booleen APRIL PB : Application en ST62xx Exemple complexe : grafcet 2 Cas du langage Boolen En langage volu (pascal) Mthode locale Principe Exemple simple mise en oeuvre sur PB 100 Exemple complexe (Grafcet 3) cas du PB100 En assembleur PC (avec MASM ou TASM) application en C Conclusions

Mthode globale
Cette mthode marche sur tout automate, pour tout Grafcet. Nous l'appliquerons au cas particulier de l'AF mais le principe est rigoureusement le mme sur n'importe quel langage d'automate (y compris les langages graphiques comme le langage contacts du TSX), ainsi qu'en langage machine ou mme langage volu tel Pascal ou C

Principe
On utilise une variable binaire pour reprsenter l'tat d'activation de chaque tape, et une variable pour le franchissement de chaque transition. De plus on fige les entres pour une dure du cycle. Il est capital de bien prciser, sur une feuille de papier, quoi correspond chaque entre, sortie et variable interne.
initialisation (mise 1 tape(s) initiale(s), 0 les autres, mise 0 des sorties,...) +> lecture des entres (et copie dans des variables internes) | calcul des conditions d'volution (quelles transitions seront franchies) | dsactivation des tapes dsactiver | activation des tapes | combinatoire (si ncessaire: tempos, comptage, actions conditionnelles...) | affectation des sorties (en fonction des tapes actives) ++ (saut aprs l'initialisation)

Remarque sur la phase de lecture des entres : celleci est inutile sur la plupart des automates simples (ils bloquent les entres le temps d'un cyle, ce qui les empche des programmes du genre : boucler tant que capteur lach). C'est la seule solution pour respecter l'algbre de Boole : a.(b+c) doit tre quivalent a.b + a.c mme si a change au milieu de calcul. L'ordre des phases est capital pour respecter les rgles du Grafcet (surtout 4 et 5), il ne peut tre modifi que dans les cas simples (en particulier quand on n'a pas besoin des rgles 4 et 5).

_____________________________________________________________________________________________________________

Programmation d'un Grafcet dans le langage de base

32

Programmation d'un Grafcet dans le langage de base _____________________________________________________________________________________________________________

Exemple simple : Grafcet 1


Appliquons la mthode au Grafcet le plus simple possible, dans le seul but de bien la comprendre. Que l'on soit bien d'accord, ce problme peut se rsoudre bien plus simplement ( l'aide d'un interrupteur par exemple). choix des adresses et variables internes : entres : m : entre E00, variable interne V00 a : entre E01, variable interne V01 sortie L : S20 tapes : 1=V21, 2=V22 transitions : 1=V11, 2=V12

Programme en AF :
Dbut : V21<=1 V22<=0 Boucle : V00<=E00 V01<=E01

initalisation : tape 1 active tape 2 non active lecture des entres : copie de l'tat du capteur m dans V00 copie de l'tat du capteur a dans B01 conditions d'volution : transition 1 passante si tape 1 active et capteur m transition 2 passante si tape 2 active et capteur a dsactivation :si transition 1 passante, dsactiver l'tape 1 si transition 2 passante, dsactiver l'tape 2 activation : si transition 1 passante, activer l'tape 2 si transition 2 passante, activer l'tape 1 (teindre sinon)

V11<=V00 ET V21 V12<=V01 ET V22

SI V11 ALORS V21<=0 Si V12 ALORS V22<=0 SI V11 ALORS V22<=1 SI V12 ALORS V21<=1 S20<=V22 SAUT Boucle

affectation des sorties : allumer L si tape 2 active boucler (mais ne pas rinitialiser)

Quelques remarques : cette mthode marche quel que soit le nombre d'tapes actives simultanment. Le fait de bloquer les capteurs pour un cycle allonge le temps de raction mais donne un rsultat conforme au grafcet (si par exemple le capteur change entre le passage sur la dsactivation et l'activation). La dsactivation de TOUTES les tapes doit prcder l'activation : essayez 2 tapes qui se suivent, toutes les 2 actives, suivies de la mme rceptivit (front montant sur un capteur par exemple). Le programme obtenu est long et lent, mais conu rapidement (pas ou peu de rflexion).

langage booleen APRIL PB :


Mettons en oeuvre cette mthode, pour ce Grafcet, en language boolen : Choix des variables : entres : m : 000, mmoris dans B00; a: 001, mmoris dans B01. Sortie L : 020, tapes : A01 et A02, transitions : A11 et A12. La phase de mmorisation des entres (dans B00 et B01) n'est ncessaire que sur PB100, inutile sur PB15 qui bloque les entres le temps d'un cycle.
0C30 MU 0C31 MZ 0C32 SI 0C33 ET A01 A02 000 B00 initalisation : tape 1 active tape 2 non active lecture des entres : copie de l'tat du capteur m dans B00

_____________________________________________________________________________________________________________

Exemple simple : Grafcet 1

33

Programmation d'un Grafcet dans le langage de base _____________________________________________________________________________________________________________


0C34 SI 0C35 ET 0C36 0C37 0C38 0C39 0C3A 0C3B 0C3D 0C3E 0C3F 0C40 0C41 0C42 0C43 0C44 SI SI ET SI SI ET SI MZ SI MZ SI MU SI MU 001 B01 A01 B00 A11 A02 B01 A12 A11 A01 A12 A02 A11 A02 A12 A01 A02 020

copie de l'tat du capteur a dans B01 conditions d'volution : transition 1 passante si tape 1 active et capteur m

transition 2 passante si tape 2 active et capteur a

dsactivation : si transition 1 passante, dsactiver l'tape 1 si transition 2 passante, dsactiver l'tape 2 activation : si transition 1 passante, activer l'tape 2 si transition 2 passante, activer l'tape 1 affectation des sorties : allumer L si tape 2 active (teindre sinon) boucler (mais ne pas rinitialiser)

0C45 SI 0C46 OU

0C47 SAUT C32

Application en ST62xx
Toujours pour ce mme cas, supposons : entres : port A (bit 0 = m, bit 1 = a, bits 2 7 inutiliss) sorties : port B (uniquement bit 0 pour notre seule sortie) variables internes : capt : mmorisation des entres, etap pour les tapes (bits 0 et 1 uniquement), trans pour les transitions (bits 0 et 1 uniquement).
;dfinition des adresses PortA .def 0C0h ;registre de donnes du port A PortB .def 0C1h ;registre de donnes du port B DirA .def 0C4h ;registre de direction du port A DirB .def 0C1h ;registre de direction du port B capt .def 0A0h ;pour figer les entres (adresse choisie parmi les 64 disponibles) etap .def 0A1h ;tapes actives trans .def 0A2h ;transitions (franchissables ou non) ;dfinition des constantes BitM .equ 00h ;entre m branche sur le bit 0 BitA .equ 01h ;entre a branche sur le bit 1 ;initialisation LDI DirA,00h ;tout en entre LDI DirB,01h ;seul bit 0 en sortie, les autres inutiliss ici LDI PortB,00h ;teindre les sorties LDI etap,01h ;tape 1 active boucle : ;scrutation des entres LD A,PortA LD capt,A ;conditions d'volution LDI trans,00h JRR 0,etap,trans2 ;saut plus loin si tape inactive JRR BitM,capt,trans2 ;saut plus loin si capteur teind SET 0,trans ;allume la transition (bit 0) trans2: JRR 1,etap,desact1 JRR BitA,capt,desact1
_____________________________________________________________________________________________________________

Application en ST62xx

34

Programmation d'un Grafcet dans le langage de base _____________________________________________________________________________________________________________


SET 1,trans ; allume bit 1 ;dsactivations desact1: JRR 0,trans,desact2 ;ne rien faire si transition non franchissable RST 0,etap desact2: JRR 1,trans,act1 ;ne rien faire si non franchissable RST 1,etap ;activations act1: JRR 0,trans,act2 ;ne rien faire si transition non franchissable SET 0,etap act2: JRR 1,trans,sorties ;ne rien faire si non franchissable SET 1,etap ;affectation des sorties sorties: LDI A,00h JRR 1,etap,FinSorties ;ne pas allumer la sortie si tape non active LDI A,01h; FinSorties: LD PortB,A ;bouclage JP boucle .END

Exemple complexe : grafcet 2

Ce grafcet a surtout un intrt didactique : tous les ET et OU pour un minimum d'tapes. Choix des variables (i entre 1 et 4) : tape i : ETi, transition i : TRi , entre Ei mmorise dans Vi Programme correspondant en AF :
initialisation : ET1<=1 ET2<=ET3<=ET4<=0 entrees: V1<=E1 V2<=E2 V3<=E3 evolution: TR1<=ET1 ET V1
_____________________________________________________________________________________________________________

Exemple complexe : grafcet 2

35

Programmation d'un Grafcet dans le langage de base _____________________________________________________________________________________________________________


TR2<=ET2 ET ET3 ET V2 ET V3 TR3<=ET3 ET V2 ET /V3 TR4<=ET4 ET /V2 desactivation: SI (TR1) ALORS ET1<=0 SI (TR2) ALORS (ET2<=0 , ET3<=0) SI (TR3) ALORS ET3<=0 SI (TR4) ALORS ET4<=0 activation: SI (TR1) ALORS (ET2<=1 , ET3<=1) SI (TR2) ALORS ET1<=1 SI (TR3) ALORS ET4<=1 SI (TR4) ALORS ET3<=1 sorties: S1<=ET2 S2<=ET3 S3<=ET3 bouclage: SAUT entrees

Cas du langage Boolen


Les numros de lignes n'ont t mis que pour les premires (pour savoir o l'on doit boucler), Les suivants sont faciles calculer. Les colonnes sont imaginer une en dessous de l'autre. Choix des variables : tape i : A0i, transition i : A1i, entre Ei : 00i (et mmorisation dans B0i), sortie Si : 02i
0C30 MU 0C32 DE 0C33 MZ 0C34 SI ET SI ET SI ET A01 A02 A04 001 B01 002 B02 003 B03 SI SI ET SI SI SI SI ET SI SI SI/ ET SI SI/ ET A01 B01 A11 A02 A03 B03 B02 A12 A03 B02 B03 A13 A04 B02 A14 SI MZ SI MZ SI MZ SI MZ SI MZ A11 A01 A12 A03 A12 A02 A13 A03 A14 A04 SI MU SI MU SI MU SI MU SI MU A11 A02 A11 A03 A12 A01 A13 A04 A14 A03 SI OU SI OU SI OU A02 021 A03 022 A04 023

SAUT C34

( lire colonne aprs colonne)

En langage volu (pascal)


Le pascal est le seul langage qui permette de grer les entressorties sans avoir besoin de masquages. En effet, grce aux ensembles (SET OF), voir si un capteur est allum se rduit demander si le capteur appartient l'ensemble des entres allumes.

{ Ce programme correspond au GRAFCET 2 du poly "mise en oeuvre du grafcet sur automate" } PROGRAM grafcet_2 (input,output); CONST adresse_port=$330; TYPE liste_capteurs=(e1,e2,e3); ensemble_capteurs=SET OF liste_capteurs; liste_actions=(sortie1,sortie2,sortie3); ensemble_actions=SET OF liste_actions;
_____________________________________________________________________________________________________________

Cas du langage Boolen

36

Programmation d'un Grafcet dans le langage de base _____________________________________________________________________________________________________________


VAR {pour le programme principal} etape:array [1..4] of boolean; transition:array [1..4] of boolean; capteurs:ensemble_capteurs; sorties:ensemble_actions; i:integer; PROCEDURE lire_capteurs(VAR etat_actuel_capteurs:ensemble_capteurs); {cette procdure lit les capteurs et rend un ensemble contenant les capteurs 1. Cette procdure dpend du type de machine } VAR {locale} etat:record case integer of 1: (compatible_port:byte); 2: (compatible_ensemble:ensemble_capteurs) end; BEGIN etat.compatible_port:=port[adresse_port]; etat_actuel_capteurs:=etat.compatible_ensemble END; PROCEDURE affecte_sorties(etat_sorties:ensemble_actions); {affecte les sorties} VAR etat:record case integer of 1: (compatible_port:byte); 2: (compatible_ensemble:ensemble_actions) end; BEGIN etat.compatible_ensemble:=etat_sorties; port[adresse_port]:=etat.compatible_port END; BEGIN {programme principal} {initialisation} sorties:=[]; {ensemble vide} affecte_sorties(sorties); etape[1]:=true; for i:=2 to 4 do etape[i]:=false; REPEAT {lecture des entres} lire_capteurs(capteurs); { write('capteurs : '); if e1 in capteurs then write('E1); if e2 in capteurs then write('E2 '); if e3 in capteurs then write('E3 '); writeln; } {conditions d'volution} transition[1]:=etape[1] and (e1 in capteurs); transition[2]:=etape[2] and etape[3] and ([e2,e3]*capteurs=[]); {intersection vide} transition[3]:=etape[3] and (e2 in capteurs) and not (e3 in capteurs); transition[4]:=etape[4] and not (c2 in capteurs); {dsativation} if transition[1] then etape[1]:=false; if transition[2] then begin etape[2]:=false; etape[3]:=false end; if transition[3] then etape[3]:=false; if transition[4] then etape[4]:=false; {activation}
_____________________________________________________________________________________________________________

Cas du langage Boolen

37

Programmation d'un Grafcet dans le langage de base _____________________________________________________________________________________________________________


if transition[1] then begin etape[2]:=true; etape[3]:=true end; if transition[2] then etape[1]:=true; if transition[3] then etape[4]:=true; if transition[4] then etape[3]:=true; {affectation sorties} { write('tapes : '); for i:=1 to 4 do if etape[i] then write(i,' '); writeln; } sorties:=[]; if etape[2] then sorties:=sorties+[sortie1]; if etape[3] then sorties:=sorties+[sortie2]; if etape[4] then sorties:=sorties+[sortie3]; affecte_sorties(sorties); UNTIL false; {boucler jusqu' extinction} END.

Mthode locale
Cette mthode est beaucoup plus rapide ( l'excution), prend beaucoup moins de place, mais ne fonctionne que pour un grafcet une seule tape active la fois. De plus l'automate doit pouvoir faire des sauts en avant et en arrire (ce n'est pas le cas des automates d'entre et moyenne gamme comme le Micro 1, APRIL 15, TSX 17 47...).

Principe
Supposons tre dans l'tape I, les sorties tant dj affectes. On attend alors (en fonction des capteurs) que l'on doive quitter l'tape. Puis on choisit quelle doit tre la suivante (au cas o l'on avait un OU divergent), on modifie les sorties si ncessaire et on saute l'tape suivante (qui sera traite exactement de la mme manire).

Exemple simple
On reprend le grafcet (1), avec la mme affectation des entres et des sorties. Il ne faut plus figer les entres, il n'est plus ncessaire de reprsenter les tapes par des variables puisque seule une tape est active, et elle correspond l'endroit o l'on se trouve dans le programme.
initialisation: S20<=0; etape1: SI (/E1) SAUT etape1 ;attendre capteur m S20<=1 ;mise jour des sorties etape2: SI (/E2) SAUT etape2 S20<=0 SAUT etape1

Evidement, le programme est plus simple (mais c'est uniquement le cas dans les cas simples). Le programme est le plus rapide qui puisse exister : un instant donn on ne teste que les capteurs ncessaires, sans aucun autre calcul. Lors d'un volution on ne modifie que les sorties ncessaires. Le temps de rponse est donc minimal avec cette mthode. Son seul problme est qu'elle ne fonctionne qu'avec des Grafcets une tape active la fois (sans ET, tous les OU doivent tre exclusifs) (mais voir plus bas pour rsoudre ce problme)

_____________________________________________________________________________________________________________

Mthode locale

38

Programmation d'un Grafcet dans le langage de base _____________________________________________________________________________________________________________

mise en oeuvre sur PB 100


Le PB 100 accepte les sauts gnraliss, contrairement au PB15 Je ne numrote plus les lignes, mais je leur donne un nom pour que ce soit plus clair (mais il faudrait videment mettre ces numros avant d'entrer le programme dans l'automate). Choix des variables : entres : m : 000, a: 001. Sortie L : 020,
MZ 020 SI/ 000 SAUT et1 MU 020 SI/ 001 SAUT et2 MZ 020 SAUT et1

et1

et2

tape 1 : attendre capteur m (rester dans ces 2 lignes tant que m=0 passage tape 1 2 : allumer L puis aller tape 2 tape 2 : attendre capteur a passage 2 1 : teindre L puis aller tape 1

Exemple complexe (Grafcet 3)


Le grafcet (2) ne convient pas pour cette mthode, il faut d'abord le transformer en un grafcet une seule tape active la fois. On fait donc la table des tats accessibles puis le graphe des tats accessibles :. transition tapes actives aprs num d'tat E1 E2.E3 E2./E1 /E2 23 1 24 23 (1) (2) (3)

tapes actives avant 1 23 24

on obtient donc le grafcet (3) suivant (il est rare que le graphe des tats accessibles soit plus simple que l'initial) :

Les OU divergents DOIVENT tre exclusifs (sinon vous avez oubli un cas dans la table). Si vous dsirez essayer de crer un graphe des tats accessibles, je vous conseille d'essayer celui l :

_____________________________________________________________________________________________________________

mise en oeuvre sur PB 100

39

Programmation d'un Grafcet dans le langage de base _____________________________________________________________________________________________________________

(c'est le Grafcet du remplissage de bidons, dans mon cours sur le Grafcet Vous devez arriver un Graphe 8 tapes (tout le monde sait faire un Grafcet 8 tapes !). Je ne donne pas la rponse ici, ce serait trop facile (n'empche que j'ai mme russi un jour le faire sans intersection) Programe en AF :
initialisation : S1<=S2<=S3<=0 etape1: SI (/E1) SAUT etape1 S2<=S1<=1 etape2: SI (/E2) SAUT etape2 ;seul E2 ncessaire pour sortir de l'tape 2 S2<=0 ;dans les 2 cas teindre S2 SI (/E3) SAUT passage2a3 ;je traite ce cas plus loin S1<=0 ;dernire sortie mettre jour SAUT etape1 passage2a3: S3<=1 ;mise jour sorties etape3: SI (E2) SAUT etape3 S3<=0 ;mise jour sorties, inutile de modifier S1 ici S2<=1 SAUT etape2

Pour la mise jour des sorties, on sait toujours d'o l'on vient et o l'on va, on ne modifie donc que celles qui doivent l'tre.

cas du PB100
Choix des variables : entre Ei : 00i, sortie Si : 02i
DE 021 MZ 023 et1 SI/ 001 SAUT et1 p12 MU 022 MU 021 et2 SI/ 002 SAUT et2 MZ 022 SI/ 003 SAUT p23 p21 MZ 021 SAUT et1 p23 MU 023
_____________________________________________________________________________________________________________

cas du PB100

40

Programmation d'un Grafcet dans le langage de base _____________________________________________________________________________________________________________


SI 002 SAUT et3 p32 MZ 023 MU 022 SAUT et2 et3

En assembleur PC (avec MASM ou TASM)


; programme en assembleur PC (sous DOS) pour le GRAFCET 3 ; pour faire un .COM code segment assume cs:code,ds:code,es:code org 100H ; dclarations de constantes adresse_port_e EQU 300H ;c'est l'adresse de mon port d'entres adresse_port_s EQU 301H ;c'est l'adresse de mon port de sorties c0 EQU 00000001B ;capteur E1 et sortie S1 c1 EQU 00000010B ;E2,S2 c2 EQU 00000100B ;E3,S3 ; programme ; je devrais s_et1: mov mov out mov et1:

commencer par dfinir la direction des ports, si ma carte le permettait dx,adresse_port_s al,0 dx,al ;sorties toutes 0 dx,adresse_port_e ;je laisse cette adresse par dfaut dans DX

in al,dx test al,c0 jz et1 mov mov out mov dx,adresse_port_s al,00000011B dx,al ;modif sorties dx,adresse_port_e

s_et2:

et2:

in al,dx test al,c1 jz et2 test al,c2 jnz s_et1 mov mov out mov dx,adresse_port_s al,00000101B dx,al dx,adresse_port_e

s_et3:

et3:

in al,dx test al,c2 jnz et3 jmp s_et2 fin: mov ax,4C00h int 21h ; fin du programme code ends end s_et1

application en C
#define port_e 0x300 #define port_s 0x301 #define e1 0x01 //sur quel bit aije branch l'entre ?
_____________________________________________________________________________________________________________

En assembleur PC (avec MASM ou TASM)

41

Programmation d'un Grafcet dans le langage de base _____________________________________________________________________________________________________________


#define #define #define #define #define e2 e3 s1 s2 s3 0x02 0x04 //le suivant serait 8 puis 0x10.... 0x01 //idem sorties 0x02 0x04

int lecture(void) {return(inport(port_e)); } void ecriture(int i) {outport(port_s, i); } void main(void) { int capteurs; etape1: ecriture(0); do capteurs=lecture(); while (!(capteurs&e1)); etape2: ecriture(s1|s2); do capteurs=lecture(); while (!(capteurs&e2); if (capteurs&e3) goto etape1; etape3: ecriture(s3|s1); co capteurs=lecture() while (capteurs&e2); goto etape2; }

Remarque sur le masquage : capteurs & e2 fait un ET bit bit entre les deux variables. Pour qu'un bit du rsultat soit 1, il faut que les bits du mme niveau des DEUX variables soient 1. Or e2 contient un seul bit 1, celui correspondant l'entre E2. Si le rsultat vaut 0 (Faux), c'est que E2 tait 0, sinon (diffrent de 0 mais pas ncessairement 1), c'est qu'il tait allum En C (comme toujours) le code est compact, facile crire mais ncessite une conaissance plus pousse du fonctionnement de l'ordinateur (ici binaire et masquages).

Conclusions
Cette seconde mthode donne un programme est bien plus court dans ce cas, mais en gnral le graphe des tats accessibles est bien plus complexe que le grafcet initial. On se dbrouille en gnral dans ces cas complexes, de manire minimiser la taille et le temps, en faisant un compromis entre les deux mthodes. Il n'empche que faire par un programme la table des tats accessibles est relativement ais, et donc on peut en dduire immdiatement le programme rsultant (toujours automatiquement) puisque la mthode est trs simple (et correspond directement la table)

_____________________________________________________________________________________________________________

Conclusions

42

_____________________________________________________________________________________________________________

Programmation directe en Grafcet


PB APRIL 15 sur TSX

Certains automates sont prvus pour tre programms plus facilement partir d'un Grafcet. C'est le cas du TSX ( l'aide d'une cartouche ROM) et du PB 15, mais pas du Micro1 par exemple. Mais ces implantations ne sont pas bien pratiques, c'est pourquoi on utilisera gnralement (si on en a les moyens) une gnration automatique du programme l'aide d'un logiciel spcifique (en gnral sur PC).

PB APRIL 15
Chaque tape doit tre reprsente par une variable interne. On doit utiliser les premires (donc partir de A00). Les variables internes suivantes peuvent tre utilises pour d'autres utilisations, par exemple pour un calcul de receptivit (on utilise en gnral les variables en dcroissant partir de A3F). La premire ligne du programme doit comporter l'instruction PRED, qui initialise le Grafcet. Puis on dfinit toutes les transitions : quelles est l'tape(s) prcdente (antrieure), quelle est la variable contenant la receptivit puis quelle est l'tape(s) postrieure. Puis on affecte les sorties, et on boucle (sans bien sur repasser sur PRED qui rinitialiserait). Exemple du grafcet 2 : Choix des variables : tape i : A0i, entre Ei : 00i , sortie Si : 02i
0C30 PRED 0C31 EANT A01 RCEP 001 EPOS A02 EPOS A03 EANT A03 SI 002 SI/ 003 ET A3F RCEP A3F EPOS A04 EANT A04 RCEP /002 EPOS A03 EANT A02 EANT A03 SI 003 SI 002 ET A3E EPOS A01 SI OU SI OU SI OU A02 021 A03 022 A04 023 2 tapes antrieures tape antrieure 1 rceptivit 2 tapes postrieures : 2 et 3

calcul receptivit mis dans une variable interne

affectation des sorties

SAUT C31

boucler apres PRED

_____________________________________________________________________________________________________________

Programmation directe en Grafcet

43

Programmation directe en Grafcet _____________________________________________________________________________________________________________ Le langage vrifie toutes les rgles du grafcet, et entre autre accepte plusieurs tapes actives simultanment, ou plusieurs grafcets simultans (n'oubliez pas dans ce cas de numroter diffrement les tapes). Par contre il ncessite une transcription du Grafcet, et n'est pas trop pratique pour le dboguage (quelles tapes sont actives un instant donn ?) Dernier point lucider, PRED : Cet ordre remet les variables internes (et lesregistres de tempos et compteurs) dans le dernier tat sauv. Les variables internes sont mmorises dans des mots 16 bits aux adresses 0C00 0C03. 0C00 contient A00 en bit de poids fort, jusqu' A0F en bit de poids faible. Dans notre cas, mettre A01 1 et tout les autres 0 revient donc mettre 4000 (hexa) dans 0C00 et 0000 dans 0C01 0C03. On mmorise alors cet tat en appuyant sur la touche MEM puis en validant par VAL/+.

sur TSX
Il faut tout d'abord dessiner le grafcet. Analysons le cas du grafcet 1 :

Les traits verticaux vont de haut en bas uniquement. Par contre on peut remplacer un trait par 2 flches, en prcisant l'tape d'o l'on vient et o l'on va. C'est ce que l'on utilise pour une remonte. (ici pour aller de l'tape 2 l'tape1). Cette notation ne respecte pas les rgles du Grafcet (une laison est entre une tape et une transition) et peut ncessiter de rajouter une tape au niveau d'une convergence ou divergence.

Une fois le grafcet entr, on dfinit les transitions et les actions correspondant aux tapes. Pour ceci, placer le curseur sur une transition dfinir, appuyer la touche ZM (zoom). Un rseau contacts apparat, avec une bobine reprsentant la transition. Il faut alors reprsenter le schma qui, en fonction des capteurs, "allumera" la receptivit. On valide le rseau par ENT (touche ENTER). Pour les actions, il faut pointer une tape, appuyer ZM, donner le schma qui allumera les bobines de sortie. On entre un rseau complet, on peut donc faire du combinatoire sur les sorties (test arrt d'urgence) ou dclencher une tempo. Mais les sorties ne peuvent tre actives que par une bobine <S>, ce qui force dsactiver la sortie par une bobine <R> l'tape suivante. Une autre possibilit (que je conseille fortement) est de grer les actions grce au "traitement postrieur", voir document complet sur le TSX Soient : Capteurs m=I1,0, a=I1,1 Sortie L=O0,0. Les rseaux entrer sont donc:
transition 1 | I1,0 | |||< # >| | | tape 1 | O 0,0 | |< R >| | | transition 2 | I1,1 | |||< # >| | | tape 2 | O 0,0 | |< S >| | |

_____________________________________________________________________________________________________________

sur TSX

44

_____________________________________________________________________________________________________________

L'automate MICRO1
1 Description gnrale 2 Connexions 3 Adresses 4 Structure du programme 5 Langage 5.1 LOD (load charger) 5.2 OUT (sortir) 5.3 AND (et) 5.4 OR (ou) 5.5 NOT (non) 5.6 AND LOD / OR LOD 5.7 SET (allumer) 5.8 RST (reset teindre) 5.9 TIM (timer temporisation) 5.10 JMP (jump saut avant) et JEND (fin de saut) 5.11 MCS (Master Control Set) et MCR (Master Control Reset) 5.12 SOT (Single OutpuT sortie impulsionnelle) 5.13 CNT (counter compteur) 5.14 Comparateurs (associs aux compteurs CNT) 5.15 SFR (ShiFt Register registre dcalage) 6 Entre d'un programme 7 Monitoring

L'automate MICRO 1 P.Trau 24/3/97

1 Description gnrale
L'automate programmable IDEC MICRO1 (distribu par Chauvin Arnoux) est un automate de faible prix (4000F) permettant de traiter des petits problmes d'automatisme faible cot (mme prix que 10 relais et 3 tempos, chez le mme fabriquant). Il se compose d'une unit centrale (UC) comportant le contrleur, la mmoire (EEPROM : ne s'efface pas quand elle n'est pas alimente), 8 entres (extensible 16 voire 64), 6 sorties (extensible 12) relais acceptant du 220V 2A par commun, c'est dire 2A totales pour les 3 premires sorties, 2A pour chacune des 3 autres. Le programme est mis au point sur la console de programmation, puis est transfr dans l'UC, qui ne ncessite plus la prsence de la console pour fonctionner.

2 Connexions
Entres : La borne +COM dlivre du 24V, permettant d'alimenter 8 capteurs (interrupteurs), numrots 0 7. Sorties : La premire borne COM permet d'amener l'nergie de sortie pour les bornes 200, 201 et 202. Les bornes 203, 204 et 205 possdent chacune sa propre alimentation (borne de gauche). Les diffrentes alimentations ne sont pas ncessairement identiques (par exemple, une en 220V~, une en 5V, une en 24V). Console : elle est branche sur la prise situe droite de l'UC (sous une petite trappe). Elle peut tre clipse sur l'UC (glisser vers le haut pour dclipser). Si la console est absente, l'UC, son allumage, met toutes les variables internes et sorties 0 puis dmarre automatiquement le dernier programme entr ( condition d'avoir t la console en mode RUN).
_____________________________________________________________________________________________________________

L'automate MICRO1

45

L'automate MICRO1 _____________________________________________________________________________________________________________

3 Adresses
Entres : 0 7 Sorties : 200 205 Mmoires internes : 400 597, sauf les nombres se terminant par 8 ou 9 (400 407, 410 417,...) Mmoires usage spcifique : 600 717 (ex 714 vaut 1 durant 1/2s toutes les secondes, 715 toutes les 0,1s, 713 mis 1 teint toutes les sorties...) Compteurs : 0 46 (45 et 46 spcifiques) Temporisations : 0 79 Sorties impulsionnelles : 0 95 Lignes de programme : 0 599

4 Structure du programme
L'automate excute les lignes du programme de manire squentielle (l'une aprs l'autre, en commenant par la ligne numro 0. Le programme se termine par l'instruction END. Aucune ligne de ce programme, avant le END, ne peut tre vide. Au passage sur une ligne de programme, les variables internes sont immdiatement mises jour, mais les sorties ne sont rellement modifies que sur le passage de l'instruction END. Comme en informatique, chaque instruction dcrit une action effectuer l'instant de son excution uniquement. Ceci implique, pour les cas d'automatismes habituels, o l'tat des sorties doit continuellement tre recalcul en fonction des entres, de toujours boucler sur l'ensemble du programme. C'est ce que fait l'instruction END, qui, aprs la mise jour effective des sorties, lit l'tat des entres puis remonte au dbut du programme (ligne 0). Les entres seront figes le temps d'un cycle du programme (jusqu'au END), ce qui permet d'valuer des expressions logiques complexes sans qu'une entre ne change d'tat en cours de calcul.

5 Langage
Le MICRO1 fonctionne en notation polonaise, avec une pile (LIFO) de 8 registres (en cas d'introduction de plus de 8 valeurs dans la pile, les plus anciennes sont perdues). Les paragraphes 5.1 5.6 prsentent les fonctions combinatoires de base. Elles permettent de traiter simplement tout problme combinatoire. Les fonctions de base du squentiel (bascules et timer) sont traites de 5.7 5.9, puis sont traites des fonctions plus puissantes ou plutt informatiques (mais aussi plus complexes).

5.1 LOD (load charger)


Syntaxe : LOD numro d'entre, de mmoire interne ou de sortie Fonction : charge la valeur de son argument au sommet de la pile Exemple : LOD 0 met au sommet de la pile l'tat de l'entre 0

5.2 OUT (sortir)


Syntaxe : OUT numro de sortie ou de mmoire interne Fonction : met la valeur du sommet de la pile dans son argument. La pile reste inchange LOD 0 OUT 400 Exemple : OUT 200
_____________________________________________________________________________________________________________

3 Adresses

46

L'automate MICRO1 _____________________________________________________________________________________________________________ Ceci met l'tat de l'entre 0 dans la mmoire 400 et sur la sortie 200

5.3 AND (et)


Syntaxe : AND numro de sortie ou de mmoire interne Fonction : effectue un ET logique (vrai si les deux entres sont vraies, faux sinon) entre le sommet de la pile et son argument. Le sommet de la pile est remplac par le rsultat de l'opration. LOD 0 AND 1 Exemple : OUT 200 la sortie 200 s'allume quand l'entre 0 et l'entre 1 sont allumes, s'teint sinon

5.4 OR (ou)
Idem AND, mais effectue un OU logique

5.5 NOT (non)


Syntaxe : Oprateur NOT argument Fonction : complmente (1 si 0, 0 si 1) l'argument d'un oprateur LOD, AND ou OR Exemple : LOD NOT 0 AND NOT 1 OUT 200 La sortie 200 s'allume quand ni l'entre 0 ni l'entre 1 ne sont allumes

5.6 AND LOD / OR LOD


Syntaxe : AND LOD (resp. OR LOD) Fonction : effectue un ET logique (resp. OU) entre le sommet de la pile et son suivant. Les deux arguments sont supprims du sommet de la pile et remplacs par le rsultat (la hauteur de la pile baisse donc d'un lment). Exemple : LOD 1 AND 2 LOD 3 AND 4 OR LOD OUT 200 pile : [1] pile : [1.2] pile : [1.2] [3] pile : [1.2] [3.4] pile : [(1.2)+(3.4)] pile inchange (hauteur 1) (hauteur 1) (hauteur 2) (hauteur 2) (hauteur 1)

_____________________________________________________________________________________________________________

5.3 AND (et)

44

L'automate MICRO1 _____________________________________________________________________________________________________________ effectue (criture type "algorithmique") : 200<=(1.2)+(3.4) Remarque : appuyer sur la touche SHF (shift=majuscule) avant LOD pour ne pas entrer un 1 (qui est sur la mme touche).

5.7 SET (allumer)


Syntaxe : SET numro de mmoire interne, de sortie ou de registre dcalage Fonction : Si le sommet de la pile vaut 1, met 1 son argument. Sinon laisse son argument dans son tat prcdent, qu'il ait t 1 ou 0. Le sommet de la pile reste inchang.

5.8 RST (reset teindre)


Syntaxe : RST numro mmoire ou sortie ou registre dcalage Fonction : met son argument 0 si le sommet de la pile vaut 1, le laisse inchang sinon. Exemple : LOD 1 (entre "marche") SET 200 LOD 2 (entre "arrt") RST 200 Si l'entre 1 est valide, allume la sortie 200 jusqu' la validation de l'entre 2. Si 1 et 2 sont 0, 200 reste dans son tat prcdent (mmorisation). Si 1 et 2 sont simultanment 1, 200 est tout d'abord mis (de manire interne) 1 puis 0. Au END du programme, la sortie sera effectivement modifie d'aprs le dernier tat de 200 donc teinte. C'est une bascule priorit dclenchement. On obtient une priorit enclenchement en changeant l'ordre des instructions.

5.9 TIM (timer temporisation)


Syntaxe : TIM numro de timer (0 79) dure (en 1/10me de seconde, entre 0 et 9999) Fonction : compter du passage 1 de son entre (sommet de la pile), met sa sortie 1 lorsque la dure est coule. Lorsque l'entre est mise 0, le timer est rinitialis (compteur de temps remis 0 et sortie 0). L'entre doit donc rester 1 tout le temps du comptage et ensuite suffisamment pour que l'on ait pu lire la sortie. La sortie peut soit tre rcupre au sommet de la pile (ordre OUT par exemple dans l'instruction suivant la dure) soit, n'importe o dans le programme, par lecture de la mmoire interne TIM numro (LOD TIM numro, AND TIM numro ou OR TIM numro) LOD NOT 200 TIM 0 20 SET 200 LOD 200 Exemple : TIM 1 30 RST 200

fait clignoter la sortie 200 (allum 3s, teint 2s)


_____________________________________________________________________________________________________________

5.7 SET (allumer)

48

L'automate MICRO1 _____________________________________________________________________________________________________________ Remarque : un timer n'arrte pas le programme (une autre partie de l'automatisme peut fonctionner pendant ce temps) mais met 1 sa sortie, au bout du temps prdfini, condition d'avoir maintenu son entre 1 et de repasser chaque cycle sur l'instruction TIM.

5.10 JMP (jump saut avant) et JEND (fin de saut)


Syntaxe : JMP instructions JEND Fonction : si le sommet de la pile vaut 1 au JMP, le programme passe directement au JEND sans effectuer les instructions intermdiaires. Sinon JMP et JEND sont ignors. Il est impossible d'imbriquer des sauts. Remarque : On obtient la fonction JEND en appuyant deux fois la touche JMP

5.11 MCS (Master Control Set) et MCR (Master Control Reset)


Syntaxe : MCS instructions MCR Fonction : Si le sommet de la pile vaut 1 l'arrive au MCS, celuici est ignor (le MCR galement). Par contre si le sommet de la pile vaut 0, toutes les entres des instructions suivantes (jusqu'au MCR) seront considr comme valant 0. Donc un OUT sortira un 0 quel que soit l'tat du sommet de la pile, un SET ne changera rien (ne met 1 que si son entre est 1), un TIMer sera rinitialis, les compteurs et registres dcalage seront figs. Plusieurs MCS peuvent se terminer par un MCR unique. LOD 0 l'entre 0 contrle une grosse partie du programme

Exemple :

MCS instructions LOD 1 l'entre 1 contrle une plus petite partie du programme MCS instructions MCR terminaison des 2 MCS

5.12 SOT (Single OutpuT sortie impulsionnelle)


Syntaxe : SOT numro de sot (0 95) Fonction : Si son entre (sommet de la pile) valait 0 au cycle de programme prcdent, et vaut 1 dsormais, sa sortie (mise au sommet de la pile) vaudra 1 durant un cycle. Cette fonction ne doit pas tre utilise pour une sortie car le temps d'un cycle est infrieur au temps de raction des relais de sortie, mais pour des variables internes Exemple : voir CNT

_____________________________________________________________________________________________________________

5.10 JMP (jump saut avant) et JEND (fin de saut)

49

L'automate MICRO1 _____________________________________________________________________________________________________________

5.13 CNT (counter compteur)


Syntaxe : CNT numro compteur (0 44) valeur finale atteindre (0 9999) Fonction : la fonction possde deux arguments : empiler en premier son entre Reset puis son entre Pulse. A chaque front montant (passage de 0 1) du sommet de la pile (Pulse), ajoute 1 au compteur. Quand la valeur finale est atteinte, met sa sortie 1 (sommet de la pile, et variable CNT numro utilisable dans LOD CNT numro, AND CNT numro ou OR CNT numro). La sortie reste 1 jusqu'au passage 1 de la premire entre (Reset), qui remet galement le compteur 0, et autorise le comptage ds qu'elle passe 0. LOD 2 SOT 0 cration d'un front montant sur l'entre 2,rsultat sur la pile AND 200 entre "Reset" : si sortie allume et front montant sur 2 LOD 2 entre "Pulse" CNT 0 5 OUT 200 la sortie 200 est allume aprs 5 fronts montants sur l'entre 2, s'teint au 6me Remarque : Le compteur 45 possde une troisime entre : dcomptage. Ceci permet de grer une quantit de pices, en comptant l'entre et dcomptant la sortie Le compteur 46 possde une troisime entre : Up qui, s'il vaut 1 considre l'entre Pulse (deuxime) comme impulsion de comptage, s'il vaut 0 comme dcomptage. Ces deux compteurs/dcompteurs ncessitent galement une valeur, mais qui est sera mise dans le compteur lors du Reset, la sortie sera mise 1 en arrivant la valeur 0. En dcomptant aprs 0, on passe 9999.

Exemple :

5.14 Comparateurs (associs aux compteurs CNT)


Syntaxe A: FUN 100+numro de compteur (donc 100 146) valeur de comparaison Syntaxe B: FUN 200+numro de compteur (donc 200 246) valeur de comparaison Fonction : ne possde aucune entre. Quand le compteur vaut la valeur (A) ou le compteur est suprieur ou gal la valeur (B), la sortie (sommet de la pile) vaut 1, sinon la sortie vaut 0. En stockant la sortie dans une mmoire interne (OUT), l'utilisation du LOD NOT permet de traiter les autres cas (diffrent, infrieur,...)

5.15 SFR (ShiFt Register registre dcalage)


Syntaxe : SFR numro du premier bit utilis (0 127) nombre de bits utiliss (1 128) Fonction : possde 3 entres, empiles avant l'instruction SFR : Reset, Pulse puis Data (au sommet de la pile). Reset met tous les bits utiliss 0. A chaque front montant de Pulse, la valeur disponible en Data est entre dans le premier bit utilis, l'ancienne valeur du premier est dcale dans le second,..., la valeur du dernier est mise au sommet de la pile. On peut lire l'tat de chaque bit du registre dcalage par LOD SFR numro, AND SFR numro ou OR SFR numro. On peut crer plusieurs registres dcalage indpendants parmi les 128 bits disponibles. On peut forcer l'tat d'un bit par SET SFR numro ou RST SFR numro (mais
_____________________________________________________________________________________________________________

5.13 CNT (counter compteur)

50

L'automate MICRO1 _____________________________________________________________________________________________________________

OUT SFR n'est pas possible). LOD NOT 400 TIM 0 20 OUT 400 LOD NOT 597 LOD 400 LOD SFR 12 SFR 10 3 LOD SFR 10 OUT 200 LOD SFR 11 OUT 201 LOD SFR 12 OUT 202 LOD NOT 597 SET SFR 10 SET 597

Exemple :

Timer : 400 vaut 1 un cycle toutes les 2 secondes Reset, uniquement lors du premier cycle Pulse : un dcalage toutes les 2 s Data : on entre en premier bit l'tat du dernier Notre registre commence en position 10 avec 3 bits (jusqu'au 12)

affecter une sortie chaque bit utilis du registre comme toutes les mmoires internes, 597 vaut 0 au premier cycle au premier cycle, mettre le 1er bit 1 mettre 597 1 dfinitivement, pour ne plus rinitialiser

Ceci cre un chenillard (sur 3 bits) qui boucle jusqu' extinction de l'UC Remarque : SFR peut tre utilis pour grer un Grafcet linaire, ou mme plus complexe. SFR NOT (mmes entres, mme sortie) effectue un dcalage en sens inverse. Il peut s'utiliser (et c'est l sa principale utilit) sur les mmes bits qu'un SFR, permettant d'avancer et reculer.

6 Entre d'un programme


Brancher l'automate, y relier (si ncessaire) la console de programmation. Effacer le programme en mmoire de la console DELT END ENTR. Toutes les lignes du programme contiennent END, on peut le vrifier par les flches haut et bas. Se placer (si ce n'est pas le cas) en ligne 0 (par flche haut ou trois fois CLR). Entrer les lignes du programme, valides par ENTR. En cas d'erreur : avant validation par ENTR : CLR. slectionner une ligne valide modifier (par flches), taper la nouvelle ligne, valider par ENTR. pour insrer une ligne, se placer sur la ligne N, entrer la nouvelle instruction puis INST, l'ancienne est dcale en N+1. pour supprimer une ou N ligne(s), se placer sur la premire effacer, appuyer DELT puis le nombre de lignes effacer puis ENTR. les lignes suivantes sont remontes. pour accder rapidement une ligne, ADRS puis numro de ligne puis READ. Ou bien taper une instruction (ligne complte, avec son argument) puis READ : recherche la prochaine ligne contenant cette instruction.
_____________________________________________________________________________________________________________

6 Entre d'un programme

51

L'automate MICRO1 _____________________________________________________________________________________________________________

Transfrer le programme de la console l'UC : mettre l'UC en mode STOP (interrupteur sur la console, voyant RUN de l'UC teint). appuyer TRS ENTR puis confirmer par ENTR. Attendre l'affichage de END mettre l'UC en mode RUN. On peut dsormais dbrancher la console, l'UC continue fonctionner. Si l'UC est teinte en mode RUN, son rallumage le programme dbutera automatiquement (au bout de quelques secondes), avec toutes les mmoires mises 0. La console, contrairement l'UC, perd le contenu de sa mmoire lorsqu'elle est dbranche. On peut recharger un programme dans la console depuis une UC par TRS READ puis confirmation par ENTR. TRS VERI permet de vrifier la similitude du programme de la console avec celui de l'UC.

7 Monitoring
En plus de la visualisation sur l'UC de l'tat des entres et des sorties, on peut visualiser, en mode RUN, l'tat de l'UC par les fonctions MON : MON numro mmoire READ : affiche l'tat des 8 mmoires partir du numro donn. MON 0 pour les entres, MON 200 pour les sorties, MON 400 pour les mmoires internes 400 407, les flches haut et bas permettent de visualiser les mmoires suivantes. Une mmoire 1 est visualise par un rectangle plein, 0 par un vide. MON TIM numro permet de visualiser le contenu d'un timer, MON CNT numro pour un compteur, MON SFR numro pour les registres dcalage. CLR quitte le mode Monitoring. Les changements d'tat de moins de 0,1s ne sont pas visualiss. Remarque : MON TIM 47 affiche le temps d'un cycle du programme en mmoire (en ms). On peut modifier la valeur limite d'un compteur ou timer par TRS CNT (ou TIM) numro READ. La valeur est affiche. Entrez la nouvelle valeur puis ENTR. Cette valeur est perdue l'extinction de l'UC (plus d'un jour). TRS SET numro mmoire ENTR met un une mmoire (RST, SET SFR, RST SFR sont galement possibles). FUN 93 READ 1 ENTR : affiche une ligne de programme, et l'tat de sa sortie (ex LOD entre 1 ou LOD NOT entre 0 affichent un rectangle plein). On peut se dplacer dans le programme par les flches ou par ADRS. On quitte ce monitoring par 0 puis ENTR.

_____________________________________________________________________________________________________________

7 Monitoring

52

_____________________________________________________________________________________________________________

Description succincte du TSX


Les fonctions de base d'un automate Le langage contacts du TSX Temporisation Compteur / dcompteur Conclusion Programmation directe en Grafcet Dtails pratiques Description des menus (utiles) sur la console T407

_____________________________________________________________________________________________________________

Description succincte du TSX

53

_____________________________________________________________________________________________________________

Description succincte du TSX


P.TRAU, 24/3/97.

Les fonctions de base d'un automate


Un automate programmable permet de remplacer une ralisation cble comportant des composants combinatoires (portes) et squentiels (bascules, squenceurs,...) par un programme. Un programme est une suite d'instructions, qui sont excutes l'une aprs l'autre. Si une entre change alors qu'on ne se trouve pas sur l'instruction qui la traite et que l'on ne repasse plus sur ces instructions, la sortie n'est pas modifie. C'est la raison de la ncessit de bouclage permanent sur l'ensemble du programme. Par rapport un cblage, on a donc deux dsavantages : temps de rponse (un changement des entres sera pris en compte au maximum aprs le temps d'un passage sur l'ensemble du programme, c'est ce qu'on appelle le temps de scrutation, qui sera souvent de l'ordre de la milliseconde) et non simultanit (on n'effectue qu'un instruction la fois). Mais ces temps tant en gnral trs infrieurs aux temps de raction des capteurs et actionneurs (inertie d'un moteur par exemple), ceci n'est que rarement gnant. L'avantage est que c'est programmable, donc facilement modifiable. Tout automate programmable possde : des entres, des sorties, des mmoires internes : toutes sont binaires (0 ou 1), on peut les lire (c.a.d connatre leur tat) (mme les sorties), mais on ne peut crire (modifier l'tat) que sur les sorties et les mmoires internes. Les mmoires internes servent pour stocker des rsultats temporaires, et s'en resservir plus tard. des fonctions combinatoires : ET, OU, NON (mais aussi quelquefois XOR, NAND,...) des fonctions squentielles : bascules RS (ou du moins Set et Reset des bascules), temporisations, compteurs/dcompteurs mais aussi quelquefois registres dcalage, etc... des fonctions algorithmiques : sauts (vers l'avant mais aussi quelquefois saut gnraliss), boucles, instructions conditionnelles... de plus il permet de crer, essayer, modifier, sauver un programme, quelquefois par l'intermdiaire d'une console sparable et utilisable pour plusieurs automates. Dsormais cette fonctionnalit est galement possible sur PC, permettant une plus grande souplesse, une assistance automatique, des simulations graphiques,... mais pour un prix suprieur. Ce qui diffrencie les automates, c'est la capacit (entres, sorties, mmoires internes, taille de programme, nombre de compteurs, nombre de temporisations), la vitesse mais surtout son adaptabilit (possibilit d'augmenter les capacits, de prendre en compte de l'analogique et numrique, de converser via un rseau...)

Le langage contacts du TSX


C'est le langage de base des TSX. Il est ncessaire de le connatre mme pour utiliser le langage PL72 (proche du Grafcet). Sur le TSX, les sorties sont appeles Oi,0 Oi,23 (i=numro de carte d'entre), les entres Ii,0 Ii,24. Les variables internes sont notes en dcimal de B0 B255 (B pour Bit interne ou Bobine). La programmation se fait l'aide de programmes graphiques : les rseaux. Ce sont des schmas qui sont excuts l'un aprs l'autre, de haut en bas (et non suivant leur label). Chaque rseau est scrut par colonne de gauche droite. exemple :

_____________________________________________________________________________________________________________

Description succincte du TSX

54

Description succincte du TSX _____________________________________________________________________________________________________________

Dans ce cas l'entre B12 est l'ancienne valeur du bit interne (bobine) B12. Si l'on veut utiliser le rsultat B12 de ce rseau, il faut utiliser B12 dans le rseau suivant. On note un capteur par le signe Un bit interne est note Une bascule bistable est allume par , un contact complment (vrai si 0) par , un bit interne inverse , teinte par .

(commande par un niveau 0). .

Un saut un autre rseau est not . Un saut est effectu immdiatement lors de son valuation (les bobines en sortie dans le mme rseau mais sur les lignes suivantes ne seront donc pas values en cas de saut). On a intrt de n'utiliser que des sauts avants (vers la fin du programme). L'excution du dernier rseau sera automatiquement suivie de l'excution du premier (sauf si sauts). L'automate fixe automatiquement les entres au dbut de cycle et n'affecte les sorties qu'en fin de cycle (les variables internes sont videment immdiatement modifies). Il est ncessaire de refaire un cycle (c'est dire passer du dernier rseau au premier) frquemment (tous les 150 ms maximum).

Temporisation
On reprsente la tempo par le signe : Il existe sur les TSX 17 32 tempos (T0 T31). E correspond l'armement de la tempo, C au contrle. D passe 1 en fin de tempo, R est 1 tant que la tempo est en cours. En appuyant la touche ZM, on peut donner : TB: la base de temps (1mn, 1s, 100ms, 10ms), PRESET: la dure (0 9999). E doit tre 1 tout le temps du comptage, son passage 0 met D 0 et rinitialise le compteur. C (que l'on peut brancher sur E) valide le comptage (si C=0;, le compteur est bloqu mais pas remis 0) On dispose galement de 8 tempos monostables M0 M7, avec une seule entre S, une seule sortie R valant 1 durant le temps prslectionn, partir du front montant de S, indpendamment du moment de passage 0 de S. Un nouveau front montant de S en cours de comptage relance le compteur 0.

Compteur / dcompteur
Il existe sur les TSX 17 32 compteurs (C0 C31). R (reset) met le compteur et les sorties 0. P (preset) met le compteur la valeur finale et la sortie D (done) 1 (sauf si R=1). U (up) incrmente le compteur, D (down) le dcrmente. La sortie F (full) vaut 1 lors du passage du compteur (par U) de 9999 0, E (empty) lors du passage (par D) de 0 9999. Si U=D=1, le compteur est inchang.

La valeur de prselection (Ci,P, entre 0 et 9999) se dfinit en "zoomant" sur le compteur. Les autres fonctions disponibles (comparateurs, oprations arithmtiques et logiques, piles, registres
_____________________________________________________________________________________________________________

Temporisation

55

Description succincte du TSX _____________________________________________________________________________________________________________ dcalage, transcodage binaire, BCD, ASCII...) sont dtailles dans le chapitre 5 du document "Terminal TSX T407 Modes opratoires PL72", au chapitre 2 de "Langage PL72 Synthse" ainsi qu'au chapitre B4 du manuel de rfrence du PL72.

Conclusion
Ces fonctions de base (tempo, compteur) sont prsentes dans tous les automates (mme si elles sont mises en oeuvre par des langages trs diffrents), sauf les sauts qui peuvent tre plus limits (au minimum bouclage automatique sur l'ensemble du programme, mais sans sauts dans le programme). Mais le principe reste valable quel que soit l'automate. Souvent, d'autres possibilits existent, en particulier temporisations, comptage, comparaisons,...

Programmation directe en Grafcet


Certains automates sont prvus pour tre programms plus facilement partir d'un Grafcet. C'est le cas du TSX ( l'aide d'une cartouche ROM) mais pas du MICRO1. Il faut tout d'abord dessiner le Grafcet. Analysons le cas du Grafcet suivant : choix des adresses et variables internes entres : m : entre I1,0 a : entre I2,0 sortie L : O0,0

programme : On vient de l'tape 2 Les liaisons verticales vont de haut en bas uniquement. Par contre on peut remplacer une liaison par 2 flches, en prcisant l'tape d'o l'on vient et celle o l'on va. C'est ce que l'on utilise pour une remonte. On va l'tape 1

Une fois le grafcet entr, on dfinit les transitions et les actions correspondant aux tapes. Pour ceci, placer le curseur sur une transition dfinir, appuyer la touche ZM (zoom). Un rseau contacts apparat, avec un bit interne reprsentant la transition. Il faut alors reprsenter le schma qui, en fonction des capteurs, "allumera" la rceptivit. On valide le rseau par ENT (touche ENTER). Pour les actions, on peut (mais je ne le conseille pas) pointer une tape, appuyer ZM, donner le schma qui allumera les bobines de sortie. Sur nos TSX, les sorties ne peuvent tre actives que par un bit interne <S>, ce qui force dsactiver la sortie par un bit interne <R> l'tape suivante. Soient : Capteurs m=I1,0, a=I2,0 Sortie L=O0,0. Les rseaux entrer sont donc: transition 2

transition 1

_____________________________________________________________________________________________________________

Conclusion

56

Description succincte du TSX _____________________________________________________________________________________________________________ tape 1 tape 2

Une bien meilleure solution est de regrouper toutes les actions dans le "traitement postrieur". Attention, du fait que le TSX fige les entressorties le temps d'un cycle, il ne faut mettre en place qu'une seule "quation" par sortie (sinon seule la dernire sera prise en compte). On n'oubliera donc pas de regrouper (en parallle) les Xi allumant une sortie.

Une tempo (en secondes) est automatiquement lie chaque tape, et permet de tester la dure depuis l'activation de l'tape par un oprateur de type [ < ] (comparaison) par la variable interne Xi,V (i numro d'tape)

exemple de transition comportant une tempo :

Dtails pratiques
Ce chapitre prcise l'utilisation des claviers et les branchements effectuer. Allumez l'automate puis la console (touche ON). Mettez l'automate en mode STOP (sur la platine portant l'automate). Quand le menu principal est affich, choisissez PRG (program) en appuyant la flche qui se trouve sous cette option. Vous pouvez alors soit examiner le programme en mmoire, soit visualiser la suite des options du menu par la flche sous le /. On choisit alors l'option CLM (clear memory), qui nous demande en quel langage on veut travailler (SEQ pour grafcet, LAD pour contacts). Puis aprs quelques secondes, on peut revenir au programme principal par la touche QUIT (qui remonte brutalement) ou 2 fois CLR (qui remonte avant la dernire commande effectue). Pour entrer le programme, choisir PRG puis SEQ ou LAD. On valide un rseau ou tout le programme par la touche ENT. Pour faire tourner le programme, revenez au menu principal (QUIT), choisissez DBG (debug) puis R/S (run/stop), ou mettez en RUN par le contacteur RUN/STOP de la platine.. Quand le programme tourne, on peut revenir sous PRG pour le voir, mais pas le modifier. Les capteurs et les bobines sont alors reprsentes en pointills si 1, en trait plein si 0. Les modifications se font en revisualisant le programme sous PRG, choisir le bon rseau ou partie de Grafcet et choisir l'option MOD. En gnral, une modification ncessite d'effacer le capteur ou trait existant (touche SH + DEL) et remettre le nouveau, dans d'autres cas (traits horizontaux par exemple), on efface une entit en lui superposant une entit identique. Un cycle de programme en langage Grafcet peut tre prcd par un programme en langage contacts (ladder) appel traitement prliminaire, et suivi d'un taitement postrieur. La scrutation des entres se faisant avant le traitement prliminaire, on peut y traiter des conditions sur les entres prliminaires ou effectuer une
_____________________________________________________________________________________________________________

Dtails pratiques

57

Description succincte du TSX _____________________________________________________________________________________________________________ partie d'un calcul au cas o un rseau ne suffirait pas pour une rceptivit. Le traitement postrieur se fait avant l'affectation des sorties, et peut donc modifier des sorties avant leur affectation dfinitive. Ces traitements peuvent utiliser l'tat du Grafcet (par l'intermdiaire des bits Xi). On peut galement les utiliser pour implanter le GEMMA (modes de marche et d'arrt) sans modifier le Grafcet. A la mise en route de l'automate, tous les bits internes (sauf indication contraire) sont mis 0, sauf les tapes initiales.

Description des menus (utiles) sur la console T407


Menu principal [TSX 1720] ADJ (adjust) permet de visualiser ou modifier toute variable. DBG (debug) : mise au point : permet de visualiser le programme et voir l'tat des capteurs, sorties, tapes actives... (trait plein dans le programme si actif, interrompu si 0) et mettre des points d'arrt dans le programme. PRG : crer ou modifier le programme. TRF (transfert) pour mmorisation sur EEPROM et impression sur imprimante (RS232). Menu PRG (dans tous les cas) CLM (clear memory) efface le programme actuel, permet de dfinir si le nouveau programme sera en langage contacts (LAD) ou Grafcet (SEQ). CNF (config) configuration de l'automate, de la liaison RS232 pour l'imprimante (LINE), des bobines sauvegarder mme en cas de coupure de courant (SAV)... NAME permet de donner un nom au programme. LK vrifie si le programme en mmoire ne comporte pas d'erreur. FREE retasse le programme ( faire aprs de nombreuses modifications). Menu PRG en mode ladder (LAD) TOP aller au premier rseau BOT (bottom) aller aprs le dernier rseau (on passe ensuite au dernier par la flche vers le haut ) LAB : donner un numro de rseau (label) puis [ENT] pour le visualiser INS insre un nouveau rseau (vide) devant le rseau actuel. DEL (delete) supprime le rseau actuel. SCH (search) permet de rechercher tous les rseaux comportant une bobine ou contact donn. [ZM] (zoom) visualise l'adresse d'un contact ou bobine (exemple I1,2), on peut se dplacer dans le rseau par les flches. [CLR] (clear) retour au niveau suprieur (ZM>LAD>PRG>principal) [Quit] retour direct au menu principal. en mode ZOOM (sous PRG en mode LADDER) LAB donner au rseau actuel un numro de label (0 999) " " donner un commentaire au rseau actuel (15 caractres maxi, sera affich au dessus du rseau). MOD permet de modifier l'lment point (l'effacer par [DEL] par exemple), on valide le rseau modifi par [ENT]. Menu PRG en mode GRAFCET On dispose de 8 pages (0 7) de 14 lignes de 8 colonnes. On peut au maximum prendre en compte 96 tapes, les divergences et convergences sont limites 4 voies. L'cran ne montre qu'une petite partie de la page, mais le numro de page (P), de ligne (L) et de colonne (C) sont toujours affichs. On se dplace par les flches, ou en tapant P, L, C ou X (tape) suivi du numro dsir. Les fonctions sont approximativement les mmes qu'en mode ladder, hormis : DLP : effacement d'une page complte [ZM] face une transition, la dfinit (si rseau vide, rceptivit toujours fausse) [ZM] face une tape, dfinit son action (tape d'attente si rseau vide) MOVE : dplace l'lment actuel (par les flches) puis valider par [ENT] Menu DBG
_____________________________________________________________________________________________________________

Description des menus (utiles) sur la console T407

58

Description succincte du TSX _____________________________________________________________________________________________________________ R/S passe de RUN STOP et inversement (on peut aussi utiliser le contacteur sur la platine). PRG : visualiser le programme et l'tat des variables (trait plein=1, pointill=0), insertion de points d'arrt. CY/ : excution cycle par cycle STP : liste des tapes actives /L point d'arrt sur un label, /o sur une tape. S/L et S/o : blocage sur un label ou une tape.

_____________________________________________________________________________________________________________

Description des menus (utiles) sur la console T407

59

You might also like