============================================ = Petit manuel de progapi version beta 0.0 = ============================================ 1.Introduction ============== Progapi est un logiciel permettant d'editer et convertir un graphcet en fichier hex utilisable sur des automates programmables a base de microcontroleur PIC. Le graphcet peut etre graphique ou litteral. (Un graphcet litteral est une representation textuelle du graphique) Le logiciel a besoin d'un fichier de definition (.def) qui decrit entierement l'automate (code de l'interpreteur + nom des bits + emplacement memoire pour le graphcet ...) Chaque automate a son fichier et l'utilisateur doit l' indiquer au programme En gros, voici le synoptique du programme Editeur --> GRAPHCET GRAPHIQUE | Convertisseur V + fichier de def Editeur --> GRAPHCET LITTERAL | V Convertisseur FICHIER HEX Ce programme fonctionne sous Windows (95,98,NT,2000...), C'est un freeware (respectant l'esprit GNU: C'est a dire que si vous l'utiliser dans une application ou si vous le redistribuez alors vous devez fournir les sources) Le fichier hex peut ensuite etre programme avec votre programmateur habituel 2.Installation ============== Copier simplement l'executable progapi.exe ou vous voulez puis executer le. Copier egalement les fichiers de definition des automates A chaque sortie de l'application, un fichier config.txt contenant le nom des fichiers utilises durant la precedente est automatiquement cree dans le meme repertoire que l' application. La version du logiciel s'affiche dans la barre du titre. 3.Le menu ========= Le menu se compose de familles (ellipses a gauche) et de fonctions (ellipses a droite). Pour selectionner une fonction d'une famille, il faut cliquer sur la famille puis sur la fonction. Certaines fonctions affichent des ecrans d'edition et d'autres lancent des traitements Voici l'arborescence du menu Fich Famille: gestion des fichiers - LD G charger le graphcet graphique a partir d'un fichier - SV G sauver le graphcet graphique dans un fichier - LD L charger le graphcet litteral a partir d'un fichier - SV L sauver le graphcet litteral dans un fichier - CFG Indique les fichiers a utiliser - Exit Pour sortir de l'application GRA Famille: graphcet graphique - Gril Edition du graph du graphcet graphique - Etap Sorties a activer pour chaque etape - Tran Equations des transitions - Pre Equations de pre traitement - Post Equations de post traitement - Cst Valeur des constantes Lit - Edit Go Famille: graphcet litteral - G->L Conversion du graphcet graphique en litteral - L->H Conversion du graphcet litteral en fichier hex - G->H Conversion du graphcet graphique en fichier hex Help Famille: Aide - Manu Indique l'adresse du site web ou sera le manuel - Abt Nom du soft, etat, auteur ... 4.Utilisation ============= Famille FICH [Fich|CFG] A chaque ouverture, l'ecran [Fich,CFG] est affiche. L'utilisateur peut alors indiquer les fichiers suivant - Le fichier de definition de l'automate ex api1.def - Le fichier du graphcet graphique ex: essai.gra - Le fichier du graphcet litteral ex: essai.lit - Le fichier hexadecimal ex: essai.hex A la fin de l'application, les nom de ces fichiers seront sauves dans le fichier config.txt afin d'etre restitues lors du prochain lancement de l'application [Fich|LD G] L'utilisateur peut charger un fichier de graphcet graphique, qui mettra a jour les ecrans de la famille graphique. Le nom du fichier graphique est indique dans [Fich|CFG] [Fich|LD L] Idem en litteral [Fich|SV G] Les ecrans de la famille graphique seront sauvegarder dans le fichier graphique selectionne [Fich|SV L] Le listing du graphcet litteral sera sauvegarder dans le fichier litteral selectionne. [Fich|EXIT] Pour quitter l'application Famille GRA [Gra,Gril] Permet d'editer le graph du graphcet sur une grille de dimension 40*40. Utiliser les fleches pour vous deplacer la grille dont seulement une parie est visible a l'ecran. Pour placer un symbole, selectionner le (click qauche) dans la zone de selection puis poser le sur la grille (click droit) Certains symboles ont des numeros, pour modifier ces numeros cliquer droit sur le symbole, taper le nombre puis appuyer sur entree. Pour les transitions, ces numeros correspondent a l' equation portant le meme numero dans [Gra,Tran]. Pour les etapes ces numeros correspondent a ligne portant le meme numero dans [Gra,Etap] et qui indique les sorties a activer lorsque l'etape est active. Enfin les numeros des ancrages (Y) donnes des points de branchement aux symboles (V), ainsi un symbole V signifie que le graphcet continu a partir du symbole Y portant le meme numero. Bien entendu, il ne peut y avoir 2 fois le meme numero pour les transitions, etapes et ancrages. [Gra,Etap] Permet de lister les sorties a activer durant chaque etape. Pour vous deplacer dans la liste utiliser les touches de defilement. ex: etape1 ox1 ox2 activera ces 2 sorties lorsque l'etape 1 sera active [Gra,Tran] Permet d'editer les equations des transitions. ex: trans1 l ia0 an ia1 La transition pourra etre franchit si l'equation est verifie ici il faut que l'entree ia0 soit active et que ia1 soit inative. [Gra,Pre] Permet d'editer les equations des pretraitements. Ces equations seront executees avant d'executer le corp du graphcet, afin par exemple de simplifier les transition ex: pre1 l ia0 an ia1 = bi1 afecte la variable bi1 a 1 si ia1 inactive et ia1 active, ainsi dans la transition il sufira de faire l bi1 [Gra,Post] Permet d'editer les equations des posttraitements. Ces equations seront executees apres d'executer le corp du graphcet, afin par exemple de realiser des traitement particulier sur les sorties ex: etape1 bi1 ex: post1 l bi1 a bs2 = ox2 L'etape 1 active la variable bi1, bs2 est un bit clignotant donc lorsque l'etape 1 est active, la sortie ox2 clignote. afecte la variable bi1 a 1 si ia1 inactive et ia1 active, ainsi [Gra,Cst] Permet d'affecter des valeurs aux constantes, comme les valeurs des temporisation ex t2 100 La temporisation t2 durera 100 unites de temps (100*100ms=10s) Famille LIT [Lit,Edit] Permet d'editer le listing du graphcet litteral Famille GO [Go,G->L] Convertit le graphcet graphique en graphcet litteral Le listing du graphcet litteral est donc ecrase avec le resultat de la conversion. Ce resultat n'est pas stoque dans le fichier litteral, il faut donc faire [Fich|SV L] si vous souhaiter le sauver. Cette fonction n'indique aucune erreur. [Go,L->H] Convertit le graphcet litteral en fichier hex directement exploitable par les programmateur de PIC C'est cette fonction qui signale les erreurs (mauvais nom de variables, mauvaises equations ...) [Go,G->H] Convertit le graphcet graphique en fichier hex. Enchaine simplement directement [Go,G->L] et [Go,L->H] Famille Help [Help,Manu] Indique l'adresse du site web ou sera le manuel [Help,Abt] Nom du soft, etat, auteur ... 5.Les fichiers de definition ============================ Ces fichiers contiennet toutes l'entiere description des automates. Il est deconseille d'y toucher sauf pour changer le nom des variables (par ex mot1 pour le moteur 1 est plus parlant que ox2) Ces fichiers textes contienent - Une zone de description pour donner quelques notes a l'utilisateur - des informations (emplacement du graphcet, place, uc...) - Le nom des variables de la zone des bits (Avec mes automates, tout est bit, ex les entrees, sorties, cmd des temporisations ...) ex: ox2 correspond a une sortie PORTA2 sur l'api0. - Le nom des constantes ex: t1 qui contient la valeur de la temporisation t1 - Le code hex de l'interpreteur, car en fait les automates interpretent le listing du graphcet litteral, Le fichier hex de sortie est construit en ajoutant a l' interpreteur les instructions du graphcet litteral (y compris les constantes) - Une zone libre a la fin ou il est bon de mettre les sources de l'interpreteur ainsi grace a ces fichiers, il est possible de creer de nouveaux automates sans modifier le code du soft 6.Exemple d'utilisation ======================= Cet exemple utilise l'automate 0, Il faut donc mettre dans le champs automate de [File|CFG], api0.def Le but est d'allumer une lampe pendant 5s lorsque l'on appuie sur un bouton poussoir. La lampe est connecter via un relais sur la sortie du 0 du PORTA du PIC correspondant a ox0, et le bouton poussoir sur l'entree 3 du PORTB du PIC correspondant a ia3. Voir l'exemple fournit. Voici le listing litteral # Ceci est un commentaire @ PRETRAITEMENT @ TRAITEMENT * x0 # etape initiale 0 l ia3 > x1 # aller a l'etape 1 si bouton poussoir actif - x1 # etape 1 l tf0 > x0 # retourner a l'etape 0 lorsque la tempo se termine @ POSTRAITEMENT1 l x1 = ox0 # Lorsque l'etape est active alors activer la lampe l x1 = tc0 # et lancer la temporisation 0 @POSTRAITEMENT2 Il est egalement possible d'ecrire directement du graphcet litteral et de le traiter pour obtenir le fichier hex a telecharger dans le PIC. Si les noms des variables ne vous conviennent pas vous pouvez les modifiers dans le fichier de definition ou mieux en creer de nouvelles (au moins les variables d'origines et les votres seront disponibles). ex: z 67 ia3 z 67 bp ia3 et bp pour bouton poussooir sont disponibles Il est conseiller de ne pas mettre des nom trop long car vous n'aurez alors plus de place dans les equations. Il est egalement conseiller de creer moins de 100 variables. 7.Rappel des instructions de graphcet litteral ============================================== Les instructions sont composees de 2 parties: - L'ORDRE --et-- NO DU BIT - ex: l ia3 L'ordre indique l'operation a effectuer avec le bit dont le numero est passe en seconde position et le bit de test interne a l'automate. Les ordres sont les suivants: - l pour load qui signifie charger le bit de test avec l'etat du bit specifie - ln pour load not qui signifie charger le bit de test avec l'etat complementaire du bit specifie - a pour and qui signifie faire un et logique entre le bit de test et le bit specifie et mettre le resultat dans le bit de test. C'est a dire que le bit de test sera mis a 1 si les 2 bits sont a 1, sinon il est mis a 0 - an pour and not qui signifie faire un et logique entre le bit de test et complement du bit specifie et mettre le resultat dans le bit de test. C'est a dire que le bit de test sera mis a 1 si le bit de test est a 1 et celui specifie a 0 sinon il est mis a 0 - o pour or qui signifie faire un ou logique entre le bit de test et le bit specifie et mettre le resultat dans le bit de test. C'est a dire que le bit de test sera mis a 1 si un des 2 bits (ou les 2) sont a 1 sinon il est mis a 0 - on pour and not qui signifie faire un ou logique entre le bit de test et complement du bit specifie et mettre le resultat dans le bit de test. C'est a dire que le bit de test sera mis a 1 si le bit de test est a 1 et celui de valeur a 0 sinon il est mis a 0 - x pour xor qui signifie faire un ou exclusif entre le bit de test et le bit specifie et mettre le resultat dans le bit de test. C'est a dire que le bit de test sera mis a 1 si un seul des 2 bits est sont a 1 sinon il est mis a 0 - xn pour xor not qui signifie faire un ou exclusif entre le bit de test et complement du bit specifie et mettre le resultat dans le bit de test. C'est a dire que le bit de test sera mis a 1 si les 2 bits ont le meme etat sinon il est mis a 0 - = l'etat du bit de test est affecter au bit specifie - * etape initiale, le bit specifie est a 1 lorsque l'etape est active. Les etapes initiales sont activees au demarrage de l'aautomate - - etape normale, le bit specifie est a 1 lorsque l'etape est active. Les etapes normales sont desactivees au demarrage de l'aautomate - > Aller a la nouvelle etape indiquee par le bit specifie lorsque l'etape courante (la premiere avant le >) est active et lorsque le bit de test est a 1. L'ancienne etape est alors desactivee et la nouvelle activee Les bits sont regroupes dans une zone de l'automate appellee zone des bits Il y en a par exemple 256 pour les automates api0,0i,1,2. Chaque bit a un numero auquel est associe un nom definit dans les fichiers de definition afin de rendre l'utilisation plus facile. Chaque bit a une fonction particuliere comme: - des simples memorisation pour les bits internes ex api0 bi0-bi135 - des entrees ex api0 ia0-ia7 - des sorties ex api0 ox0-ox4 - des fonctions particuliere - clignotement ex api0 bs1-bs7 - demarrage (mis a 1 uniquement pour la ex api0 bs0 1ere interpretation) - lancement des temporisations ex api0 tc0-tc15 - fin des temporisations ex api0 tf0-tf15 8.Fichiers ========== - progapi.exe : L'executable - progapi.cpp : Les sources de l'executable - api0.def : definition de l'automate 0 - api0i.def : definition de l'automate 0i - api0m.def : definition de l'automate 0m - api1.def : definition de l'automate 1 - api2.def : definition de l'automate 2 - lampe.gra : le fichier graphique de l'example - lampe.lit : le fichier litteral de l'example - lampe.hex : le fichier hex de l'example - config.txt : le fichier de configuration cree en sortant de l'application et qui contient les nom des fichiers de l'exemple - mpasm.exe : assembleur qui permet d'assembler l'interpreteur si vous souhaiter en faire un maison. 9.Autres ======== Si vous voulez modifier l'interpreteur pour l'adapter a vos propres besoin alors: - extraire dans un fichier .asm la section ASM du fichier def. - modifier le fichier asm pour l'adapter a vos besoins. - assembler le fichier asm pour en faire un hex avec mpasm. Dans une fenetre dos, tapez mpasm nom_fich.asm puis attendre la generation de nom_fivhier.hex - Copier le fichier def de base dans un nouveau fichier def - Copier le fichier hex dans la partie HEX du fichier nouveau def - Copier le fichier asm dans la partie ASM du fichier nouveau def - Modifiez les parametres de la zone info. En general adr_start_graphcet, si le code prend plus de place et recouvre la zone a partir de cette adresse 10.Conclusion ============ Voila, vous savez maintenant tout sur progapi.exe, N'hesitez pas a m'informer des problemes ou si vous avez des questions Si vous n'avez pas de programmateur de PIC pour y telecharger le fichier hex, je vous conseille le soft icprog (gratuit) avec le programmateur JDM (facile a faire soit meme). Bonnes experimentations, Ulysse Delmas-Begue (udelmas@chez.com). 16 mai 2002