summaryrefslogtreecommitdiff
path: root/docs/src/hal/halui_fr.txt
blob: 883e904d295dd394524cd148b2f85a42b2da90ea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
:lang: fr
:toc:

= L'interface Halui

[[cha:Halui]] (((HAL User Interface)))

== Introduction[[sec:HaluiIntroduction]]

Halui est une interface utilisateur pour LinuxCNC s'appuyant sur HAL, elle
connecte les pins de HAL à des commandes NML. La plupart des
fonctionnalités (boutons, indicateurs etc.) utilisées par les
interfaces graphiques traditionnelles (mini, Axis, etc.), sont fournies
par des pins de HAL dans Halui.

La façon la plus facile pour utiliser halui est de modifier votre
dossier d'ini pour inclure
----
HALUI = halui
----

dans la section [HAL].

Une solution alternative pour l'invoquer (surtout si vous générez la
config avec stepconf) est d'inclure
----
loadusr halui -ini /path/to/inifile.ini
----

dans votre fichier custom.hal.

== Nomenclature des pins d'Halui[[sec:Halui-pin-reference]]

Abandon:: (abort)
 - halui.abort (bit, in) - pin de requête d'abandon (efface les erreurs)

Axes:: (axis)
 - halui.axis.n.pos-commanded (float, out) - Position de l'axe commandée, en coordonnées machine
 - halui.axis.n.pos-feedback (float, out) - Position de l'axe lue, en coordonnées machine
 - halui.axis.n.pos-relative (float, out) - Position de l'axe, en coordonnées relatives

Arrêt d'urgence:: (E-Stop)
 - halui.estop.activate (bit, in) - pin de requête d'arrêt d'urgence (E-Stop)
 - halui.estop.is-activated (bit, out) - indique si l'arrêt d'urgence est actif
 - halui.estop.reset (bit, in) - pin de requête de relâchement de l'arrêt d'urgence (E-Stop reset)

Correcteur de vitesse d'avance:: (Feed override)
 - halui.feed-override.count-enable (bit, in) - doit être vraie pour que 
_counts_ ou _direct-value_ soient opérationnels.
 - halui.feed-override.counts (s32, in) - _counts_ * scale = FO pourcent. Peut
être utilisé avec un codeur ou _direct-value_.
 - halui.feed-override.decrease (bit, in) - pin pour diminuer la correction (-=scale)
 - halui.feed-override.increase (bit, in) - pin pour augmenter la correction (+=scale)
 - halui.feed-override.direct-value (bit, in) - fausse lors de l'utilisation un
 codeur pour changer counts, vraie pour ajuster counts directement. La pin
_count-enable_ doit être vraie.
 - halui.feed-override.scale (float, in) - pin pour positionner l'échelle pour 
accroître ou décroître la correction de vitesse d'avance.
 - halui.feed-override.value (float, out) - Valeur de la correction courante de vitesse d'avance

Arrosage par gouttelettes:: (Mist) 
 - halui.mist.is-on (bit, out) - indique si l'arrosage par gouttelettes est actif
 - halui.mist.off (bit, in) - pin de requête d'arrêt de l'arrosage par gouttelettes
 - halui.mist.on (bit, in) - pin de requête de l'arrosage par gouttelettes

Arrosage fluide:: (Flood)
 - halui.flood.is-on (bit, out) - indique si l'arrosage fluide est actif
 - halui.flood.off (bit, in) - pin de requête d'arrêt d'arrosage fluide
 - halui.flood.on (bit, in) - pin de requête d'arrosage fluide

Prise d'origine machine de tous les axes:: (Homing)
 - halui.home-all (bit, in) - pin de requête de prise d'origine machine de tous les axes. 
   Cette pin sera présente seulement si HOME_SEQUENCE est fixée dans le fichier ini.

Jog:: (Manivelle)
<n> est un nombre compris entre 0 et 8, ou <selected>.
 - halui.jog-deadband (float, in)- bande morte pour le jogging analogique 
   (les petites vitesses de jog sont sans effet)
 - halui.jog.speed (float, in) - positionne la vitesse de jog
 - halui.jog.<n>.analog (float, in) - entrée analogique de vitesse de jog 
   (utilisé avec les joysticks ou autres matériels analogiques)
 - halui.jog.<n>.minus (bit, in) - jog en direction négative
 - halui.jog.<n>.plus (bit, in) - jog en direction positive
 - halui.jog.<selected>.minus (bit, in) - jog l'axe <selected> en 
   direction négative et à la vitesse de halui.jog.speed velocity
 - halui.jog.<selected>.plus (bit, in) - jog l'axe <selected> en 
   direction positive et à la vitesse de halui.jog.speed velocity

Articulations:: (Joints) 
<n> est un nombre compris entre 0 et 8, ou <selected>.
 - halui.joint.<n>.has-fault (bit, out) - pin de status indiquant que l'articulation est en défaut
 - halui.joint.<n>.home (bit, in) - pin pour la prise d'origine d'une articulation spécifique 
 - halui.joint.<n>.is-homed (bit, out) - pin de status indiquant que l'articulation est référencée
 - halui.joint.<n>.is-selected (bit, out) - pin indiquant que l'articulation est <selected> - interne à halui
 - halui.joint.<n>.on-hard-max-limit (bit, out) - pin de status indiquant 
   que le joint est sur son fin de course de limite positive
 - halui.joint.<n>.on-hard-min-limit (bit, out) - pin de status indiquant 
   que le joint est sur son fin de course de limite négative
 - halui.joint.<n>.on-soft-max-limit (bit, out) - pin de status indiquant 
   que le joint est sur sa limite logicielle positive
 - halui.joint.<n>.on-soft-min-limit (bit, out) - pin de status indiquant 
   que le joint est sur sa limite logicielle négative
 - halui.joint.<n>.select (bit, in) - select joint (0..8) - interne à halui
 - halui.joint.<n>.unhome (bit, in) - unhomes this joint
 - halui.joint.selected (u32, out) - selected joint (0..8) - interne à halui
 - halui.joint.selected.has-fault (bit, out) - pin de status 
   indiquant que le joint <n> est en défaut
 - halui.joint.selected.home (bit, in) - pin pour la prise d'origine de l'articulation <selected> 
 - halui.joint.selected.is-homed (bit, out) - pin de status indiquant 
   que le joint <selected> est référencé
 - halui.joint.selected.on-hard-max-limit (bit, out) - pin de status 
   indiquant que le joint <selected> est sur son fin de course de limite positive
 - halui.joint.selected.on-hard-min-limit (bit, out) - pin de status 
   indiquant que le joint <selected> est sur son fin de course de limite négative
 - halui.joint.selected.on-soft-max-limit (bit, out) - pin de status 
   indiquant que le joint <selected> est sur sa limite logicielle positive
 - halui.joint.selected.on-soft-min-limit (bit, out) - pin de status 
   indiquant que le joint <selected> est sur sa limite logicielle négative
 - halui.joint.selected.unhome (bit, in) - pin for unhoming  l'articulation selected. 

Graissage centralisé:: (Lube)
 - halui.lube.is-on (bit, out) - indique si le graissage est actif
 - halui.lube.off (bit, in) - pin de requête d'arrêt du graissage
 - halui.lube.on (bit, in) - pin de requête de graissage

Machine:: (Marche / Arrêt)
 - halui.machine.is-on (bit, out) - indique que la machine est en marche
 - halui.machine.off (bit, in) - pin de requête d'arrêt machine
 - halui.machine.on (bit, in) - pin de requête de marche machine

Vitesse maximum::
La vitesse linéaire maximum peut être ajustée entre 0 et la valeur de
la variable MAX_VELOCITY dans la section [TRAJ] du fichier ini.
 - halui.max-velocity.count-enable (bit, in) - Doit être vraie pour que les 
_counts_ ou _direct-value_ soit opérationnels.
 - halui.max-velocity.counts (s32, in) - counts * scale = MV pourcent. Utilisable
avec un codeur ou _direct-value_.
 - halui.max-velocity.direct-value (bit, in) - faux quand un codeur est utilisé
pour modifier _counts_, vraie pour ajuster _counts_ directement. La pin
_count-enable_ doit être vraie.
 - halui.max-velocity.decrease (bit, in) - pin pour diminuer la vitesse max
 - halui.max-velocity.increase (bit, in) - pin pour augmenter la vitesse max
 - halui.max-velocity.scale (float, in) - Valeur appliquée sur le 
   nombre de fronts montants des pins increase ou decrease en 
   unités machine par seconde.
 - halui.max-velocity.value (float, out) - Valeur de la vitesse 
   linéaire maximum en unités machine par seconde.

Données manuelles:: [[sub:MDI]] (((MDI)))
Il arrive que l'utilisateur veuille ajouter des tâches plus complexes 
devant être effectuées par l'activation d'une pin de HAL. C'est 
possible en utilisant le schéma de commande en données manuelles (MDI) 
suivant: 
 - Une MDI_COMMAND est ajoutée dans la section [HALUI] du fichier ini, 
par exemple:
----
    [HALUI] 
    MDI_COMMAND = G0 X0
----
 - Quand halui démarre il va lire/détecter le champ MDI_COMMAND dans le
   fichier ini et exporter les pins de type (bit)
   halui.mdi-command-<nr>, <nr> est un nombre compris entre 00 et le
   nombre de MDI_COMMAND trouvées dans le fichier ini, avec un maximum de
   64 commandes.
 - Quand la pin halui.mdi-command-<nr> est activée, halui va essayer
   d'envoyer au MDI la commande définie dans le fichier ini. Ca ne
   fonctionnera pas dans tous les modes de fonctionnement où se trouve
   LinuxCNC, par exemple, tant qu'il est en AUTO halui ne peut pas envoyer de
   commande MDI. 

Sélection d'une articulation:: (Joint Selection)
 - halui.joint.select (u32, in) - sélectionne l'articulation (0..7) - internal halui
 - halui.joint.selected (u32, out) - articulation (0..7) sélectionnée - internal halui
 - halui.joint.x.select bit (bit, in) - pins pour sélectinner une articulation - internal halui
 - halui.joint.x.is-selected bit (bit, out) - pin de status indiquant une articulation sélectionné - internal halui

Mode de fonctionnement:: (Mode)
 - halui.mode.auto (bit, in) - pin de requête du mode auto
 - halui.mode.is_auto (bit, out)- indique si le mode auto est actif
 - halui.mode.is-joint (bit, out) - indique si le mode articulation par articulation est actif
 - halui.mode.is_manual (bit, out) - indique si le mode manuel est actif
 - halui.mode.is_mdi (bit, out) - indique si le mode données manuelles est actif
 - halui.mode.is-teleop (bit, out) - indique que le mode jog coordonné est actif
 - halui.mode.joint (bit, in) - pin de requête du mode jog articulation par articulation
 - halui.mode.manual (bit, in) - pin de requête du mode manuel
 - halui.mode.mdi (bit, in) - pin de requête du mode données manuelles
 - halui.mode.teleop (bit, in) - pin de requête du mode jog coordonné

Programme:: (Program)
 - halui.program.block-delete.is-on (bit, out) - status pin telling that block delete is on
 - halui.program.block-delete.off (bit, in) - pin for requesting that block delete is off
 - halui.program.block-delete.on (bit, in) - pin for requesting that block delete is on
 - halui.program.is-idle (bit, out) - pin de status indiquant qu'aucun programme n'est lancé
 - halui.program.is-paused (bit, out) - pin de status indiquant qu'un programme est en pause
 - halui.program.is-running (bit, out) - pin de status indiquant qu'un programme est lancé
 - halui.program.optional-stop.is-on (bit, out) - status pin telling that the optional stop is on
 - halui.program.optional-stop.off (bit, in) - pin requesting that the optional stop is off
 - halui.program.optional-stop.on (bit, in) - pin requesting that the optional stop is on
 - halui.program.pause (bit, in) - pin pour passer un programme en pause
 - halui.program.resume (bit, in) - pin pour lancer la reprise d'un programme
 - halui.program.run (bit, in) - pin de lancement d'un programme
 - halui.program.step (bit, in) - pin pour avancer d'une ligne de programme
 - halui.program.stop (bit, in) - pin pour stopper un programme

Correcteur de vitesse de broche:: (Spindle Override)
 - halui.spindle-override.count-enable (bit, in) - doit être vraie pour que
_counts_ ou _direct-value_ soient opérationnels.
 - halui.spindle-override.counts (s32, in) - comptage depuis un codeur,
   par exemple pour modifier la correction de vitesse de broche
 - halui.spindle-override.decrease (bit, in) - pin pour diminuer la
   correction de vitesse de broche (-=scale)
 - halui.spindle-override.direct-value (bit, in) - fausse en utilisant un codeur
pour modifier _counts_ directement. La pin _count-enable_ doit être vraie.
 - halui.spindle-override.increase (bit, in) - pin pour augmenter la
   correction de vitesse de broche (+=scale)
 - halui.spindle-override.scale (float, in) - pin pour positionner
   l'échelle des corrections de vitesse de broche possibles
 - halui.spindle-override.value (float, out) - Valeur courante de la
   correction de vitesse de broche

Broche:: (Spindle)
 - halui.spindle.brake-is-on (bit, out) - indique si le frein est actif
 - halui.spindle.brake-off (bit, in) - pin de désactivation du frein de broche
 - halui.spindle.brake-on (bit, in) - pin d'activation du frein de broche
 - halui.spindle.decrease (bit, in) - Diminue la vitesse de broche
 - halui.spindle.forward (bit, in) - Marche broche en sens horaire
 - halui.spindle.increase (bit, in) - Augmente la vitesse de broche
 - halui.spindle.is-on (bit, out) - indique la broche est en marche (les deux sens)
 - halui.spindle.reverse (bit, in) - Marche broche en sens anti-horaire
 - halui.spindle.runs-backward (bit, out) - indique la broche est en marche et en sens inverse
 - halui.spindle.runs-forward (bit, out) - indique la broche est en marche et en marche avant
 - halui.spindle.start (bit, in) - Marche de la broche
 - halui.spindle.stop (bit, in) - Arrêt de la broche

Outil:: (Tool)
 - halui.tool.length-offset (float, out) - indique la correction de longueur d'outil appliquée
 - halui.tool.number (u32, out) - indique l'outil courant sélectionné

[[sec:Exemple-Commande-Distante]]
== Exemples de programme avec Halui

Pour que ces exemples fonctionnent, il faut ajouter la ligne
suivante dans la section [HAL] du fichier ini.
----
HALUI = halui
----

=== Démarrage à distance

Pour connecter un bouton de démarrage à distance à LinuxCNC il faut utiliser
la pin _halui.program.run_ et la pin _halui.mode.auto_. 

Il faut s'assurer qu'il est possible de démarrer en utilisant la 
pin _halui.mode.is-auto_. On peut faire cela avec un composant de HAL _and2_. 
La figure suivante montre comment faire. 

Quand le bouton de commande à distance est pressé, il est connecté à 
_halui.mode.auto_ et à l'entrée _and2.0.in0_. Si le le mode auto est activé,
la pin _halui.mode.is-auto_ sera TRUE. 

Si les deux entrées du composant _and2.0_ sont TRUE, la sortie _and2.0.out_ 
sera TRUE également et le programme sera démarré. 

.Exemple de commande distante
image::images/remote-start.png[]

Les commandes de Hal pour accomplir ces actions sont les suivantes: 
----
net program-start-btn halui.mode.auto and2.0.in0 <= <la pin d'entrée> 
net program-run-ok and2.0.in1 <= halui.mode.is-auto 
net remote-program-run halui.program.run <= and2.0.out 
----

Noter que sur la première ligne il y a deux pins en lecture, ce qui pourrait aussi
se séparer en deux lignes comme ceci:
----
net program-start-btn halui.mode.auto <= <la pin d'entrée> 
net program-start-btn and2.0.in0 
----

=== Pause et Reprise

Cet exemple a été developpé pour permettre à LinuxCNC de déplacer un
axe rotatif selon un signal provenant d'une machine extérieure. La
coordination entre les deux systèmes est assurée par deux composants de Halui: 

 - halui.program.is-paused
 - halui.program.resume

Dans le fichier _custom.hal_, ajoutez les deux lignes suivantes
qui seront connectées à vos entrées/sorties pour mettre le
programme en pause ou pour le reprendre quand l'autre système veut
qu'LinuxCNC soit relancé.
----
net ispaused halui.program.is paused => "la pin de sortie" 
net resume halui.program.resume <= "la pin d'entrée" 
----

Les pins d'entrée et de sortie, correspondent à celles qui sont
câblées vers l'autre contrôleur. Elles peuvent être des broches du
port parallèle ou toutes autres broches auquelles nous avons accès.

Le fonctionnement est le suivant, quand un M0 est rencontré dans le
programme G-code, _halui.program.is-paused_ devient TRUE. Ce
qui rend la broche de sortie également TRUE de sorte que
l'autre contrôleur sait que LinuxCNC est arrêté.

Pour reprendre l'exécution du G-code, l'autre contrôleur devra rendre
l'entrée TRUE. Ce qui relancera LinuxCNC jusqu'au prochain M0.

Difficultés de timing

 - Le signal de reprise ne doit pas être plus long que le temps
   nécessaire pour exécuter le G-code.

 - Le signal _Is Paused_ ne doit plus être actif quand le signal
   suivant de reprise arrive.

Ces problèmes de timming pourraient être évités, en utilisant
ClassicLadder pour activer le signal _is paused_ avec une tempo
et le désactiver en fin de tempo. La reprise pourrait également
être fournie par un signal monostable très court.