#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass book \language frenchb \inputencoding default \fontscheme default \graphics default \paperfontsize default \spacing single \papersize Default \paperpackage a4 \use_geometry 0 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \secnumdepth 3 \tocdepth 3 \paragraph_separation skip \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Section Halshow \layout Standard Le script halshow peut vous aider à retrouver votre chemin dans un HAL en fonctionnement. Il s'agit d'un système très spécialisé qui doit se connecter à un HAL en marche. Il ne peut pas fonctionner seul car il repose sur la capacité de HAL de rapporter ce qu'il connaît de lui même par la librairie d'interface de halcmd. Chaque fois que halshow fonctionne avec une configuration d'EMC différente, il sera différent. \layout Standard Comme nous le verrons bientôt, cette capacité de HAL de se documenter lui même est un des facteurs clés pour arriver à un système CNC optimum. \layout Standard On peut accéder à Halshow depuis Axis, pour cela, aller dans le menu \begin_inset Quotes eld \end_inset Machine \begin_inset Quotes erd \end_inset puis choisir \begin_inset Quotes eld \end_inset Afficher la configuration de HAL \begin_inset Quotes erd \end_inset . \layout Subsection Zone de l'arborescence de Hal \layout Standard La gauche de l'écran que montre la figure\SpecialChar ~ \begin_inset LatexCommand \ref{cap:-Fenêtre-Halshow} \end_inset est une arborescence, un peu comme vous pouvez le voir avec certains navigateur s de fichiers. Sur la droite, une zone avec deux onglets: MONTRER et WATCH. \layout Standard \begin_inset Float figure placement H wide false collapsed false \layout Caption \begin_inset LatexCommand \label{cap:-Fenêtre-Halshow} \end_inset Ecran de Halshow \layout Standard \begin_inset Graphics filename halshow-1.png width 100col% keepAspectRatio \end_inset \end_inset \layout Standard L'arborescence montre toutes les parties principales de HAL. En face de chacune d'entre elles, se trouve un petit signe + ou - dans une case. Cliquer sur le signe plus pour déployer cette partie de l'arborescence et affichera son contenu. Si cette case affiche un signe moins, cliquer dessus repliera cette section de l'arborescence. \layout Standard Il est également possible de déployer et de replier l'arborescence complète depuis le menu \begin_inset Quotes eld \end_inset Arborescence \begin_inset Quotes erd \end_inset . \layout Standard \begin_inset Float figure wide false collapsed false \layout Caption \begin_inset LatexCommand \label{cap:-L'onglet-Montrer} \end_inset L'onglet Montrer \layout Standard \align center \begin_inset Graphics filename halshow-3.png width 50col% \end_inset \end_inset \layout Subsection Zone de l'onglet MONTRER \layout Standard En cliquant sur un nom dans l'arborescence plutôt que sur son signe plus ou moins, par exemple le mot \begin_inset Quotes eld \end_inset Components \begin_inset Quotes erd \end_inset , HAL affichera tout ce qu'il connait du contenu de celui-ci. La figure\SpecialChar ~ \begin_inset LatexCommand \ref{cap:-Fenêtre-Halshow} \end_inset montre une liste comme celle que vous verrez si vous cliquez sur \begin_inset Quotes eld \end_inset Components \begin_inset Quotes erd \end_inset avec une carte servo standard m5i20 en fonctionnement. L'affichage des informations est exactement le même que celui des traditionnels outils d'analyse de HAL en mode texte. L'avantage ici, c'est que nous y avons accès d'un clic de souris. Accès qui peut être aussi large ou aussi focalisé que vous le voulez. \layout Standard Si nous examinons de plus près l'affichage de l'arborescence, nous pouvons voir que les six éléments principaux peuvent tous être déployés d'au moins un niveau. Quand ces niveaux sont à leur tour déployés vous obtenez une information de plus en plus focalisée en cliquant sur le nom des éléments dans l'arborescen ce. Vous trouverez que certaines hal pins et certains paramètres affichent plusieurs réponses. C'est dû à la nature des routines de recherche dans halcmd lui même. Si vous cherchez une pin, vous pouvez en trouver deux comme cela: \layout LyX-Code Component Pins: \newline Owner Type Dir Value Name \newline 06 bit -W TRUE parport.0.pin-10-in \newline 06 bit -W FALSE parport.0.pin-10-in-not \layout Standard Le deuxième nom de pin contient le nom complémenté du premier. \layout Standard Dans le bas de l'onglet Montrer, un champ de saisie permet de jouer sur le fonctionnement de HAL. Les commandes que vous entrez ici et leur effet sur HAL, ne sont pas enregistré s. Elles persisteront tant qu'EMC tournera, mais disparaîtront dès son arrêt. \layout Standard Le champ de saisie marqué \begin_inset Quotes eld \end_inset Tester une commande HAL: \begin_inset Quotes erd \end_inset acceptera n'importe quelle commande valide pour halcmd. Elles incluent: \layout Itemize loadrt, unloadrt \layout Itemize addf, delf \layout Itemize newsig, delsig \layout Itemize linkpp, linksp, linkps, unlinkp \layout Itemize setp, sets \layout Standard Ce petit éditeur entrera une commande à chaque fois que vous presserez ou que vous cliquerez sur le bouton \begin_inset Quotes eld \end_inset Exécuter \begin_inset Quotes erd \end_inset . Si une commande y est mal formée, un dialogue d'erreur s'affichera. Si vous n'êtes pas sûr de savoir comment formuler une commande, vous trouverez la réponse dans la documentation de halcmd et des modules spécifiques avec lesquels vous travaillez. \layout Standard Nous allons utiliser cet éditeur pour ajouter un module différentiel à HAL et le connecter à la position d'un axe pour voir le ratio de changement de position, par exemple, l'accélération. Il faut d'abord charger un module de HAL nommé blocks, l'ajouter au thread servo et le connectet à la pin position d'un axe. Une fois cela fait, nous pourrons retrouver la sortie du différentiateur dans halscope. Alors allons-y. (oui j'ai vérifié). \layout Standard \begin_inset Note collapsed true \layout Standard Ndt: le message qui s'affiche au chargement de blocks ne l'empêche pas de fonctionner. \end_inset \layout LyX-Code loadrt blocks ddt=1 \layout Standard Maintenant, regardez dans components, vous devriez y voir blocks. \layout LyX-Code Loaded HAL Components: \newline ID Type Name \newline 10 User halcmd29800 \newline 09 User halcmd29374 \newline 08 RT blocks \newline 06 RT hal_parport \newline 05 RT scope_rt \newline 04 RT stepgen \newline 03 RT motmod \newline 02 User iocontrol \layout Standard Effectivement, il est là. Dans notre cas l'id est 08. Ensuite nous devons savoir quelles fonctions sont disponibles avec lui, nous regardons dans Functions. \layout LyX-Code Exported Functions: \newline Owner CodeAddr Arg FP Users Name \newline 08 E0B97630 E0DC7674 YES 0 ddt.0 \newline 03 E0DEF83C 00000000 YES 1 motion-command-handler \newline 03 E0DF0BF3 00000000 YES 1 motion-controller \newline 06 E0B541FE E0DC75B8 NO 1 parport.0.read \newline 06 E0B54270 E0DC75B8 NO 1 parport.0.write \newline 06 E0B54309 E0DC75B8 NO 0 parport.read-all \newline 06 E0B5433A E0DC75B8 NO 0 parport.write-all \newline 05 E0AD712D 00000000 NO 0 scope.sample \newline 04 E0B618C1 E0DC7448 YES 1 stepgen.capture-position \newline 04 E0B612F5 E0DC7448 NO 1 stepgen.make-pulses \newline 04 E0B614AD E0DC7448 YES 1 stepgen.update-freq \layout Standard Ici, nous cherchons owner #08 et voyons que blocks a exporté une fonction nommée ddt.0. Nous devrions être en mesure d'ajouter ddt.0 au thread servo et il fera ses calculs chaque fois que le thread sera mis à jour. Encore une fois recherchons la commande addf et on voit qu'elle utilise trois arguments comme cela: \layout LyX-Code addf [] \layout Standard Nous connaissons déjà functname=ddt.0, pour trouver le nom du thread, déployons l'arborescence des Threads. Nous y trouvons deux threads, servo-thread et base-thread. La position de ddt.0 dans le thread n'est pas critique. Passons la commande: \layout LyX-Code addf ddt.0 servo-thread \layout Standard Comme c'est juste pour visualiser, nous laissons la position en blanc pour obtenir la dernière position dans le thread. La figure\SpecialChar ~ \begin_inset LatexCommand \ref{cap:-Commande-addf} \end_inset montre l'état de halshow après que cette commande a été exécutée. \layout Standard \begin_inset Float figure wide false collapsed false \layout Caption \begin_inset LatexCommand \label{cap:-Commande-addf} \end_inset Commande Addf \layout Standard \begin_inset Graphics filename halshow-2.png width 100col% \end_inset \end_inset \layout Standard Ensuite, nous devons connecter ce block à quelque chose. Mais comment savoir quelles pins sont disponibles? La réponse se trouve dans l'arbre, en regardant sous Pins. On y trouve ddt et on voit: \layout LyX-Code Component Pins: \newline Owner Type Dir Value Name \newline 08 float R- 0.00000e+00 ddt.0.in \newline 08 float -W 0.00000e+00 ddt.0.out \layout Standard Cela semble assez facile à comprendre, mais à quel signal ou pin voulons-nous nous connecter, ça pourrait être une pin d'axe, une pin de stepgen, ou un signal. On vois cela en regardant dans axis.0. \layout LyX-Code Component Pins: \newline Owner Type Dir Value Name \newline 03 float -W 0.00000e+00 axis.0.motor-pos-cmd ==> Xpos-cmd \layout Standard Donc, il semble que Xpos-cmd devrait être un bon signal à utiliser. Retour à l'éditeur et entrons la commande suivante: \layout LyX-Code linksp Xpos-cmd ddt.0.in \layout Standard Maintenant si on regarde le signal Xpos-cmd dans l'arbre, on voit ce qu'on a fait. \layout LyX-Code Signals: \newline Type Value Name \newline float 0.00000e+00 Xpos-cmd \newline <== axis.0.motor-pos-cmd \newline ==> ddt.0.in \newline ==> stepgen.0.position-cmd \layout Standard Nous voyons que ce signal provient de axis.0.motor-pos-cmd et va, à la fois, sur ddt.0.in et sur stepgen.0.position-cmd. En connectant notre block au signal nous avons évité les complications avec le flux normal de cette commande de mouvement. \layout Standard La zone de l'onglet \begin_inset Quotes eld \end_inset Montrer \begin_inset Quotes erd \end_inset utilise halcmd pour découvrir ce qui se passe à l'intérieur de HAL pendant son fonctionnement. Il vous donne une information complète de ce qu'il découvre. Il met aussi à jour dès qu'une commande est envoyée depuis le petit éditeur pour modifier ce HAL. Il arrive un temps ou vous voulez autre chose d'affiché, sans la totalité des informations disponibles dans cette zone. C'est la grande valeur de l'onglet WATCH d'offrir cela. \layout Subsection Zone de l'onglet WATCH \layout Standard En cliquant sur l'onglet WATCH une zone vide s'affichera. Vous pouvez ajouter des signaux et des pins dans cette zone et visualiser leurs valeurs. \begin_inset Foot collapsed false \layout Standard Le taux de rafraîchissement de la zone Watch est plus lent que celui de Halmeter ou de Halscope. Si vous avez besoin d'une bonne résolution dans le timming des signaux, ces outils sont plus efficaces. \end_inset Vous pouvez ajouter des pins ou des signaux quand l'onglet Watch est ouvert, en cliquant sur leurs noms. La figure \begin_inset LatexCommand \ref{cap:-L'onglet-Watch} \end_inset Montre cette zone avec plusieurs signaux de type \begin_inset Quotes eld \end_inset bit \begin_inset Quotes erd \end_inset . Parmis ces signaux, les enable-out pour les trois premiers axes et deux de la branche iocontrol, les signaux \begin_inset Quotes eld \end_inset estop \begin_inset Quotes erd \end_inset . Notez que les axes ne sont pas activés même si les signaux estop disent qu'EMC n'est pas en estop. Un bref regard sur themc en arrière plan, montre que l'état d'EMC est ESTOP RESET. L'activation des amplis ne deviendra pas vraie tant que la machine ne sera pas mise en marche. \layout Standard \begin_inset Float figure wide false collapsed false \layout Caption \begin_inset LatexCommand \label{cap:-L'onglet-Watch} \end_inset L'onglet Watch \layout Standard \begin_inset Graphics filename halshow-4.png width 100col% \end_inset \end_inset \layout Standard Les cercles de deux couleurs, simili leds, sont toujours bruns foncé quand un signal est faux. Elle sont jaunes quand le signal est vrai. Quand une pin ou un signal est sélectionné mais n'est pas de type bit, sa valeur numérique s'affiche. \layout Standard Watch permet de visualiser rapidement le résultat de tests sur des contacts ou de voir l'effet d'un changement que vous faites dans EMC en utilisant l'interface graphique. Le taux de rafraîchissement de Watch est un peu trop lent pour visualiser les impulsions de pas d'un moteur mais vous pouvez l'utiliser si vous déplacez un axe très lentement ou par très petits incréments de distance. Si vous avez déjà utilisé IO_Show dans EMC, la page de Watch de halshow peut être réglée pour afficher ce que fait le port parallèle. \the_end