halshow_fr.txt
1 :lang: fr 2 :toc: 3 4 = Les fonctionnalités de Halshow 5 6 [[cha:halshow]] 7 8 == Le script Halshow 9 10 Le script halshow peut vous aider à retrouver votre chemin dans un HAL 11 en fonctionnement. Il s'agit d'un système très spécialisé qui doit se 12 connecter à un HAL en marche. Il ne peut pas fonctionner seul car il 13 repose sur la capacité de HAL de rapporter ce qu'il connaît de lui même 14 par la librairie d'interface de halcmd. Chaque fois que halshow 15 fonctionne avec une configuration de LinuxCNC différente, il sera différent. 16 17 Comme nous le verrons bientôt, cette capacité de HAL de se documenter 18 lui même est un des facteurs clés pour arriver à un système CNC 19 optimum. 20 21 On peut accéder à Halshow depuis Axis, pour cela, aller dans le menu 22 _Machine_ puis choisir _Afficher la configuration de HAL_. 23 24 === Zone de l'arborescence de Hal 25 26 La gauche de l'écran que montre la figure ci-dessous est 27 une arborescence, un peu comme vous pouvez le voir avec certains 28 navigateurs de fichiers. Sur la droite, une zone avec deux onglets: 29 MONTRER et WATCH. 30 31 [[cap:Fenetre-Halshow]] 32 .La fenêtre de Halshow 33 34 image::images/halshow-1_fr.png[alt="La fenêtre de Halshow"] 35 36 L'arborescence montre toutes les parties principales de HAL. En face 37 de chacune d'entre elles, se trouve un petit signe + ou - dans une 38 case. Cliquer sur le signe plus pour déployer cette partie de 39 l'arborescence et affichera son contenu. Si cette case affiche un signe 40 moins, cliquer dessus repliera cette section de l'arborescence. 41 42 Il est également possible de déployer et de replier l'arborescence 43 complète depuis le menu _Arborescence_. 44 45 [[cap:onglet-Montrer]] 46 .L'onglet Montrer 47 48 image::images/halshow-3.png[alt="L'onglet Montrer"] 49 50 === Zone de l'onglet MONTRER 51 52 En cliquant sur un nom dans l'arborescence plutôt que sur son signe 53 plus ou moins, par exemple le mot _Components_, HAL affichera tout ce 54 qu'il connait du contenu de celui-ci. La figure 55 <<cap:Fenetre-Halshow, halshow>> montre une liste comme celle que vous verrez si 56 vous cliquez sur _Components_ avec une carte servo standard m5i20 en 57 fonctionnement. L'affichage des informations est exactement le même que 58 celui des traditionnels outils d'analyse de HAL en mode texte. 59 L'avantage ici, c'est que nous y avons accès d'un clic de souris. Accès 60 qui peut être aussi large ou aussi focalisé que vous le voulez. 61 62 Si nous examinons de plus près l'affichage de l'arborescence, nous 63 pouvons voir que les six éléments principaux peuvent tous être déployés 64 d'au moins un niveau. Quand ces niveaux sont à leur tour déployés vous 65 obtenez une information de plus en plus focalisée en cliquant sur le 66 nom des éléments dans l'arborescence. Vous trouverez que certaines hal 67 pins et certains paramètres affichent plusieurs réponses. C'est dû à la 68 nature des routines de recherche dans halcmd lui même. Si vous cherchez 69 une pin, vous pouvez en trouver deux comme cela: 70 71 Component Pins: 72 Owner Type Dir Value Name 73 06 bit -W TRUE parport.0.pin-10-in 74 06 bit -W FALSE parport.0.pin-10-in-not 75 76 Le deuxième nom de pin contient le nom complémenté du premier. 77 78 Dans le bas de l'onglet Montrer, un champ de saisie permet de jouer 79 sur le fonctionnement de HAL. Les commandes que vous entrez ici et leur 80 effet sur HAL, ne sont pas enregistrés. Elles persisteront tant que LinuxCNC 81 tournera, mais disparaîtront dès son arrêt. 82 83 Le champ de saisie marqué _Tester une commande HAL:_ acceptera 84 n'importe quelle commande valide pour halcmd. Elles incluent: 85 86 - Loadrt, unloadrt (chargement / déchargement en temps réel du module) 87 - Loadusr, unloadusr (chargement / déchargement de l'espace utilisateur des composants) 88 - addf, delf (ajout / suppression d'une fonction de / vers un fil en temps réel) 89 - net (créer une connexion entre deux ou plusieurs articles) 90 - setp (jeu de paramètres (ou broches) à une valeur) 91 92 Ce petit éditeur entrera une commande à chaque fois que vous presserez 93 _Entrée_ ou que vous cliquerez sur le bouton _Exécuter_. Si une 94 commande y est mal formée, un dialogue d'erreur s'affichera. Si vous 95 n'êtes pas sûr de savoir comment formuler une commande, vous trouverez 96 la réponse dans la documentation de halcmd et des modules spécifiques 97 avec lesquels vous travaillez. 98 99 Nous allons utiliser cet éditeur pour ajouter un module différentiel à 100 HAL et le connecter à la position d'un axe pour voir le ratio de 101 changement de position, par exemple, l'accélération. Il faut d'abord 102 charger un module de HAL nommé blocks, l'ajouter au thread servo et le 103 connecter à la pin position d'un axe. Une fois cela fait, nous pourrons 104 retrouver la sortie du différenciateur dans halscope. Alors allons-y. 105 (oui j'ai vérifié). 106 107 Ndt: le message qui s'affiche au chargement de blocks ne l'empêche pas 108 de fonctionner. 109 ---- 110 loadrt blocks ddt=1 111 ---- 112 113 Maintenant, regardez dans components, vous devriez y voir blocks. 114 ---- 115 Loaded HAL Components: 116 ID Type Name 117 10 User halcmd29800 118 09 User halcmd29374 119 08 RT blocks 120 06 RT hal_parport 121 05 RT scope_rt 122 04 RT stepgen 123 03 RT motmod 124 02 User iocontrol 125 ---- 126 127 Effectivement, il est là. Dans notre cas l'id est 08. Ensuite nous 128 devons savoir quelles fonctions sont disponibles avec lui, nous 129 regardons dans Functions. 130 ---- 131 Exported Functions: 132 Owner CodeAddr Arg FP Users Name 133 08 E0B97630 E0DC7674 YES 0 ddt.0 134 03 E0DEF83C 00000000 YES 1 motion-command-handler 135 03 E0DF0BF3 00000000 YES 1 motion-controller 136 06 E0B541FE E0DC75B8 NO 1 parport.0.read 137 06 E0B54270 E0DC75B8 NO 1 parport.0.write 138 06 E0B54309 E0DC75B8 NO 0 parport.read-all 139 06 E0B5433A E0DC75B8 NO 0 parport.write-all 140 05 E0AD712D 00000000 NO 0 scope.sample 141 04 E0B618C1 E0DC7448 YES 1 stepgen.capture-position 142 04 E0B612F5 E0DC7448 NO 1 stepgen.make-pulses 143 04 E0B614AD E0DC7448 YES 1 stepgen.update-freq 144 ---- 145 146 Ici, nous cherchons owner #08 et voyons que blocks a exporté une 147 fonction nommée ddt.0. Nous devrions être en mesure d'ajouter ddt.0 au 148 thread servo et il fera ses calculs chaque fois que le thread sera mis 149 à jour. Encore une fois recherchons la commande addf et on voit qu'elle 150 utilise trois arguments comme cela: 151 152 addf <functname> <threadname> [<position>] 153 154 Nous connaissons déjà functname=ddt.0, pour trouver le nom du thread, 155 déployons l'arborescence des Threads. Nous y trouvons deux threads, 156 servo-thread et base-thread. La position de ddt.0 dans le thread n'est 157 pas critique. Passons la commande: 158 ---- 159 addf ddt.0 servo-thread 160 ---- 161 162 Comme c'est juste pour visualiser, nous laissons la position en blanc 163 pour obtenir la dernière position dans le thread. La figure 164 <<cap:Commande-addf, sur la commande addf>> affiche l'état de halshow après 165 que cette commande a été exécutée. 166 167 [[cap:Commande-addf]] 168 .Commande Addf 169 170 image::images/halshow-2_fr.png[alt="Commande Addf"] 171 172 Ensuite, nous devons connecter ce bloc à quelque chose. Mais comment 173 savoir quelles pins sont disponibles? La réponse se trouve dans 174 l'arbre, en regardant sous Pins. On y trouve ddt et on voit: 175 ---- 176 Component Pins: 177 Owner Type Dir Value Name 178 08 float R- 0.00000e+00 ddt.0.in 179 08 float -W 0.00000e+00 ddt.0.out 180 ---- 181 182 Cela semble assez facile à comprendre, mais à quel signal ou pin 183 voulons-nous nous connecter, ça pourrait être une pin d'axe, une pin de 184 stepgen, ou un signal. On vois cela en regardant dans axis.0. 185 ---- 186 Component Pins: 187 Owner Type Dir Value Name 188 03 float -W 0.00000e+00 axis.0.motor-pos-cmd ==> Xpos-cmd 189 ---- 190 191 Donc, il semble que Xpos-cmd devrait être un bon signal à utiliser. 192 Retour à l'éditeur et entrons la commande suivante: 193 ---- 194 linksp Xpos-cmd ddt.0.in 195 ---- 196 197 Maintenant si on regarde le signal Xpos-cmd dans l'arbre, on voit ce 198 qu'on a fait. 199 ---- 200 Signals: 201 Type Value Name 202 float 0.00000e+00 Xpos-cmd 203 <== axis.0.motor-pos-cmd 204 ==> ddt.0.in 205 ==> stepgen.0.position-cmd 206 ---- 207 208 Nous voyons que ce signal provient de axis.0.motor-pos-cmd et va, à la 209 fois, sur ddt.0.in et sur stepgen.0.position-cmd. En connectant notre 210 bloc au signal nous avons évité les complications avec le flux normal 211 de cette commande de mouvement. 212 213 La zone de l'onglet _Montrer_ utilise halcmd pour découvrir ce qui se 214 passe à l'intérieur de HAL pendant son fonctionnement. Il vous donne 215 une information complète de ce qu'il découvre. Il met aussi à jour dès 216 qu'une commande est envoyée depuis le petit éditeur pour modifier ce 217 HAL. Il arrive un temps ou vous voulez autre chose d'affiché, sans la 218 totalité des informations disponibles dans cette zone. C'est la grande 219 valeur de l'onglet _WATCH_ d'offrir cela graphiquement. 220 221 === Zone de l'onglet WATCH 222 223 En cliquant sur l'onglet Watch, une zone vide s'affichera. 224 footnote:[Le taux de rafraîchissement de la zone Watch est plus 225 lent que celui de Halmeter ou de Halscope. Si vous avez besoin d'une bonne résolution 226 dans le timming des signaux, ces outils sont plus efficaces.] 227 Vous pouvez ajouter des pins ou des signaux quand l'onglet Watch est 228 ouvert, en cliquant sur leurs noms. La figure <<cap:onglet-Montrer, 4>> 229 montre cette zone avec plusieurs signaux de type _bit_. Parmis ces 230 signaux, les enable-out pour les trois premiers axes et deux de la 231 branche iocontrol, les signaux _estop_. Notez que les axes ne sont pas 232 activés même si les signaux estop disent que LinuxCNC n'est pas en estop. Un 233 bref regard sur TkLinuxCNC en arrière plan, montre que l'état de LinuxCNC est 234 ESTOP RESET. L'activation des amplis ne deviendra pas vraie tant que la 235 machine ne sera pas mise en marche. 236 237 [[Onglet-watch]] 238 .L'onglet WATCH 239 (((L'onglet watch))) 240 241 image::images/halshow-4.png[alt="L'onglet WATCH"] 242 243 Les cercles de deux couleurs, simili Leds, sont toujours bruns foncé 244 quand un signal est faux. Elle sont jaunes quand le signal est vrai. 245 Quand une pin ou un signal est sélectionné mais n'est pas de type bit, 246 sa valeur numérique s'affiche. 247 248 Watch permet de visualiser rapidement le résultat de tests sur des 249 contacts ou de voir l'effet d'un changement que vous faites dans LinuxCNC en 250 utilisant l'interface graphique. Le taux de rafraîchissement de Watch 251 est un peu trop lent pour visualiser les impulsions de pas d'un moteur 252 mais vous pouvez l'utiliser si vous déplacez un axe très lentement ou 253 par très petits incréments de distance. Si vous avez déjà utilisé 254 IO_Show dans LinuxCNC, la page de Watch de halshow peut être réglée pour 255 afficher ce que fait le port parallèle. 256 257