/ docs / src / hal / halshow_fr.txt
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