/ docs / src / gcode / tool_compensation_fr.txt
tool_compensation_fr.txt
  1  :lang: fr
  2  :toc:
  3  
  4  = Les compensations d'outil
  5  
  6  [[cha:compensation-outil]]
  7  
  8  == Compensation de longueur d'outil
  9  
 10  === Toucher
 11  (((Toucher)))
 12  
 13  Dans la boîte de dialogue du bouton 'Toucher' de l'interface AXIS, il
 14  est possible de mettre à jour automatiquement la table d'outils.
 15  
 16  Séquence typique pour mise à jour de la table d'outils:
 17  
 18  * Après la prise d'origine, charger un outil 'Tn M6' dans lequel 'n' est le
 19     numéro de l'outil.
 20  * Déplacer l'outil pour établir le zéro pièce, en utilisant une cale
 21  d'épaisseur ou en faisant une petite passe puis une mesure.
 22  * Cliquer sur le bouton 'Toucher' de l'onglet 'Controle manuel' (ou presser la
 23  touche 'Fin' du clavier).
 24  * Sélectionner 'Table d'outils' dans la liste déroulante des systèmes de
 25  coordonnées.
 26  * Entrer l'épaisseur de la cale ou la cote mesurée.
 27  * Presser OK.
 28  
 29  La table d'outil sera alors modifiée avec la longueur correcte en Z de l'outil.
 30  La visu affichera la position en Z correcte et une commande G43 sera passée pour
 31  que la nouvelle longueur Z de l'outil soit effective. Le choix 'Table d'outils'
 32  n'apparaitra dans la liste déroulante du 'Toucher', que si l'outil à été chargé
 33  avec 'Tn M6'.
 34  
 35  .Toucher et table d'outils[[cap:Touch-Off-Tool]]
 36  
 37  image::images/ToolTable-TouchOff_fr.png[alt="Toucher et table d'outils"]
 38  
 39  === Utilisation de G10 L1/L10/L11
 40  
 41  Les commandes G10 L1/L10/L11 peuvent être utilisées pour ajuster les compensations
 42  dans la table d'outils:
 43    (Ce sera juste une brève présentation, se reporter au guide de références du
 44  G-code pour des explications plus détaillées)
 45  
 46  G10 L1  Pn  - (n est le N° d'outil) Fixe les offsets de l'outil. La position
 47  courante n'est pas significative. <<sec:G10-L1, Tous les détails ici>>. (((G10 L1)))
 48  
 49  G10 L10 Pn  - (n est le N° d'outil) Fixe l'offset à la position courante, met
 50  les valeurs dans un système de 1 à 8. <<sec:G10-L10, Tous les détails ici>>.(((G10 L10)))
 51  
 52  G10 L11 Pn  - (n est le N° d'outil) Fixe l'offset à la position courante, met
 53  les valeurs dans le système 9. <<sec:G10-L11, Tous les détails ici>>. (((G10 L11)))
 54  
 55  [[sec:Table-Outils]]
 56  == Table d'outils
 57  
 58  La 'table d'outils' est un fichier texte qui contient les informations de chaque
 59  outil. Ce fichier est placé dans le même répertoire que le fichier de
 60  configuration.
 61  Il est nommé 'tool.tbl'. Les outils peuvent être dans un changeur d'outils ou
 62  changés manuellement. Le fichier peut être édité avec un éditeur de texte ou
 63  être mis à jour avec la commande G10 L1. Voir la section spécifique au tour
 64  pour ce qui concerne les outils de tour, avec un exemple de table. Le nombre
 65  d'outils est limité à 56 dans une table d'outils même si la numérotation des
 66  outils et des poches peut aller jusqu'à 99999.
 67  
 68  === Format de la table d'outils[[sec:Tool-Table-Format]]
 69  (((Format de la table d'outils)))
 70  
 71  .Format de la table d'outils
 72  
 73  [width="100%", options="header"]
 74  |========================================
 75  |T#    |P#  |X  |Y  |Z  |A  |B  |C  |U  |V  |W  |Dia |FA |BA |Ori |Rem
 76  |; 15+^|(aucune donnée après le point-virgule)
 77  |T1    |P17 |X0 |Y0 |Z0 |A0 |B0 |C0 |U0 |V0 |W0 |D0  |I0 |J0 |Q0  |;rem
 78  |T2    |P5  |X0 |Y0 |Z0 |A0 |B0 |C0 |U0 |V0 |W0 |D0  |I0 |J0 |Q0  |;rem
 79  |T3    |P12 |X0 |Y0 |Z0 |A0 |B0 |C0 |U0 |V0 |W0 |D0  |I0 |J0 |Q0  |;rem
 80  |========================================
 81  
 82  En général, le format d'une ligne de table d'outils est le suivant:
 83  
 84   - ;  Un point-virgule comme premier caractère, aucune donnée
 85   - T  Numéro d'outil, 0-99999 (chaque numéro d'outil doit être unique)
 86   - P  Numéro de poche, 1-99999 (chaque numéro de poche doit être unique)
 87   - X..W  Offset d'outil sur les axes spécifiés - nombre à virgule flottante
 88   - D  diamètre d'outil - nombre à virgule flottante, valeur absolue
 89   - I  angle frontal (tour seulement) - nombre à virgule flottante
 90   - J  angle de dos (tour seulement) - nombre à virgule flottante
 91   - Q  orientation de l'outil (tour seulement) - entier de 0 à 9
 92   - ;  début de commentaire ou remarque - texte
 93  
 94  Le fichier commence par un point-virgule en première ligne, suivi par les
 95  caractéristiques de 56 outils au maximum.
 96  footnote:[Bien que les numéros d'outils puissent aller jusqu'à 99999, le nombre
 97  d'outils dans la table, en ce moment, est limité à un maximum de 56 outils pour
 98  des raisons techniques. Les développeurs de LinuxCNC envisagent la possibilité de
 99  faire sauter cette limitation. Si vous avez un très gros changeur d'outils,
100  merci d'être patient.]
101  
102  Les versions antérieures de LinuxCNC avaient deux différents formats de table
103  d'outils un pour les fraiseuses et un pour les tours, mais depuis la
104  version 2.4.x, un format unique est utilisé pour toutes les machines. Il suffi
105  d'ignorer les parties de la table d'outils qui ne se rapportent pas la machine
106  actuelle, ou que vous n'avez pas besoin d'utiliser.
107  
108  Chaque ligne du fichier de la table d'outils après le point-virgule ouvrant,
109  contient les données pour un seul outil. Une ligne peut contenir jusqu'à
110  16 entrées, mais peut aussi en contenir beaucoup moins.
111  
112  Les unités utilisées pour les longueurs, diamètres, etc. sont en unités machine.
113  
114  Vous voudrez probablement maintenir les entrées d'outils dans l'ordre croissant,
115  surtout si vous utilisez un changeur d'outils aléatoire. Bien que la table
116  d'outils permettent des numéros d'outils dans n'importe quel ordre.
117  
118  Chaque ligne peut avoir jusqu'à 16 valeurs. Les deux premières valeurs sont
119  requises.
120  La dernière valeur (un point-virgule suivi d'un commentaire) est optionnelle.
121  La lecture sera rendue plus facile si les valeurs sont disposées en colonnes,
122  comme indiqué dans le tableau, mais la seule exigence sur le format est qu'il y
123  ait au moins un espace ou une tabulation après chacune des valeurs sur une
124  ligne et un saut de ligne à la fin de chaque ligne.
125  
126  La signification des valeurs et le type de données qu'elles contiennent sont les
127  suivantes:
128  
129  .Numéro d'outil (requis)
130  La colonne 'T' contient un nombre entier non signé, qui représente
131  le code de l'outil. L'opérateur peut utiliser n'importe quel code pour
132  n'importe quel outil, tant que les codes sont des entiers non signés.
133  
134  .Numéro de poche (requis)
135  La colonne 'P' contient un nombre entier non signé, qui représente
136  le numéro de poche (numéro de slot) du changeur d'outils, poche dans laquelle
137  l'outil se trouve. Les entrées de cette colonne doivent être toutes différentes.
138  Le numéro de poche commence typiquement à 1 et va au maximum de poches
139  disponibles sur le changeur d'outils. Mais tous les changeurs d'outils ne
140  suivent pas ce modèle. Votre numéro de poche sera déterminé, par le numéro
141  que votre changeur d'outils utilisera pour se référer à ses poches. Tout cela
142  pour dire que les numéros de poche que vous utiliserez seront déterminés par
143  le schéma de numérotation de votre changeur d'outils. Les numéros de poche
144  doivent suivre la même logique que la machine.
145  
146  .Données d'offset des outils (optionnelles)
147  Les colonnes de données d'offset (XYZABCUVW) contiennent des nombres réels qui
148  représentent les offsets d'outil pour chacun des axes. Ce nombre sera utilisé
149  si, en usinage, les offsets de longueur d'outil sont utilisés et que l'outil
150  concerné est sélectionné. Ces nombres peuvent être positif, égaux à zéro ou
151  négatif, ils sont en fait, complètement optionnels. Bien qu'il vaudrait mieux
152  qu'il y ait au moins une valeur ici, sinon il n'y aurait aucun intérêt à se
153  servir d'une entrée complétement vide dans la table d'outils.
154  
155  Sur une fraiseuse classique, on trouvera probablement une entrée en Z
156  (offset de longueur d'outil). Sur un tour classique, on trouvera certainement
157  un entrée en X (offset d'outil en X) et une en Z (offset d'outil en Z). Sur 
158  une fraiseuse classique utilisant la compensation de rayon d'outil, on
159  trouvera une valeur en D pour l'offset de diamètre. Sur un tour classique
160  utilisant la compensation de diamètre de bec d'outil, une valeur sera entrée
161  en D (diamètre de bec).
162  
163  Un tour demande encore d'autres information additionnelles pour décrire la forme
164  et l'orientation de l'outil. Ainsi, sans tenir compte des angles ni des faces de
165  l'outil, qui sont de la compétence du tourneur, on trouvera une valeur en I
166  (angle avant) et en J (angle de dos) ainsi qu'une valeur en Q (orientation).
167  
168  Une description complète des outils de tour <<cha:Tour-Specifiques, ce trouve ici>>.
169  
170  La colonne 'Diamètre' contient un nombre réel. Ce nombre est utilisé seulement
171  si la compensation est activée lors de l'usage de cet outil. Si la trajectoire
172  programmée avec la compensation active, est un des bords de la matière à usiner,
173  cette valeur doit être un nombre réel positif, représentant le diamètre mesuré
174  de l'outil. Si la trajectoire programmée, toujours avec la compensation active,
175  est prévue pour un diamètre nominal d'outil, ce nombre doit être très petit
176  (négatif ou positif, mais proche de zéro), il représente seulement la différence
177  entre le diamètre nominal et le diamètre mesuré de l'outil. Si la compensation
178  n'est pas utilisée avec un outil, cette valeur est sans importance.
179  
180  La colonne des commentaires peut optionnellement être utilisée pour décrire
181  l'outil. Elle commence par un point-virgule, elle peut contenir n'importe quel
182  texte pour le seul bénéfice de l'opérateur.  
183  
184  [[sec:Outils-et-Compensations]]
185  = Fichier d'outils et compensations
186  
187  == Fichier d'outils
188  
189  Les longueurs et diamètres d'outils peuvent être lus 
190  <<sec:Table-Outils,dans une table d'outils>> ou provenir d'un
191  mot spécifié pour activer la compensation d'outil.
192  
193  == Compensation d'outil
194  
195  La compensation d'outil peut causer beaucoup de problèmes aux
196  meilleurs programmeurs. Mais elle peut aussi être une aide puissante quand
197  elle est utilisée pour aider l'opérateur à obtenir une
198  pièce à la cote. En réglant la longueur et le diamètre des outils dans
199  une table d'outils, les décalages peuvent être utilisés pendant un
200  cycle d'usinage qui tient compte des variations de taille de l'outil,
201  ou pour des déviations mineures des trajectoires programmées. Et ces
202  changements peuvent être faits sans que l'opérateur n'ait à changer
203  quoi que ce soit dans le programme.
204  
205  Tout au long de ce module, vous trouverez occasionnellement des
206  références à des fonctions canoniques, là où il est nécessaire pour le
207  lecteur de comprendre comment fonctionne une compensation d'outil dans
208  une situation spécifique. Ces références ont pour but de donner au
209  lecteur une idée de la séquences plutôt que d'exiger qu'il comprenne la
210  façon dont les fonctions canoniques elles-mêmes fonctionnent dans LinuxCNC.
211  
212  [[sec:Compensation-longueur-d-outil]]
213  == Compensation de longueur d'outil
214  
215  Les compensations de longueur d'outil sont données comme des nombres
216  positifs dans la table d'outils. Une compensation d'outil est
217  programmée en utilisant G43 Hn, où n est le numéro d'index de l'outil
218  souhaité dans la table d'outil. Il est prévu que toutes les entrées
219  dans la table d'outils soit positives. La valeur de H est vérifiée,
220  elle doit être un entier non négatif quand elle est lue. L'interpréteur
221  se comporte comme suit:
222  
223  1. Si G43 Hn est programmé, un appel à la fonction
224  USE_TOOL_LENGTH_OFFSET(longueur) est fait (où longueur est l'écart de
225  longueur, lu dans la table d'outils, de l'outil indexé n),
226  tool_length_offset est repositionné dans le modèle de réglages de la
227  machine et la valeur de current_z dans le modèle est ajustée. Noter que
228  n n'a pas besoin d'être le même que le numéro de slot de l'outil
229  actuellement dans la broche.
230  
231  2. Si G49 est programmé, USE_TOOL_LENGTH_OFFSET(0.0) est appelée,
232  tool_length_offset est remis à 0.0 dans le modèle de réglages de la
233  machine et la valeur courante de current_z dans le modèle est ajustée.
234  L'effet de la compensation de longueur d'outil est illustrée dans la
235  capture ci-dessous. Noter que la longueur de l'outil est soustraite de
236  Z pour que le point contrôlé programmé corresponde à la pointe de
237  l'outil. Il faut également noter que l'effet de la compensation de
238  longueur est immédiat quand on voit la position de Z comme une
239  coordonnée relative mais il est sans effet sur la position actuelle de
240  la machine jusqu'à ce qu'un mouvement en Z soit programmé.
241  
242  Programme de test de longueur d'outil.
243  
244  L'outil #1 fait un pouce de long.
245  ----
246  N01 G1 F15 X0 Y0 Z0 
247  N02 G43 H1 Z0 X1 
248  N03 G49 X0 Z0 
249  N04 G0 X2 
250  N05 G1 G43 H1 G4 P10 Z0 X3 
251  N06 G49 X2 Z0 
252  N07 G0 X0
253  ----
254  
255  image:images/length1.png[]
256  
257  Avec ce programme, dans la plupart des cas, la machine va appliquer le
258  décalage sous forme d'une rampe pendant le mouvement en xyz suivant le
259  mot G43.
260  
261  [[sec:Compensation-rayon-d-outil]]
262  == Compensation de rayon d'outil
263  
264  La compensation de rayon d'outil permet de suivre un parcours sans se
265  préoccuper du diamètre de l'outil. La seule restriction, c'est que les
266  'mouvements d'entrée' doivent être au moins aussi long que le rayon de
267  l'outil utilisé.
268  
269  Il y a deux parcours que l'outil peut prendre pour usiner un profil
270  quand la compensation de rayon est activée, un parcours à gauche du profil
271  et un à droite du profil. Pour les visualiser, il faut s'imaginer être
272  debout sur la pièce, marchant en suivant l'outil pendant que celui-ci
273  progresse dans la matière. G41 fait passer l'outil à gauche du profil et
274  G42 le fait passer à droite du profil.
275  
276  Le point final de chaque mouvement, dépends du mouvement suivant.
277  Si le mouvement suivant crée un angle extérieur, le mouvement se terminera
278  à l'extrémité de la ligne de coupe compensée. Si le mouvement suivant crée
279  un angle intérieur, l'outil s'arrêtera avant d'interférer avec la matière de
280  la pièce. La figure suivante montre comment le mouvement se termine à
281  différents endroits, dépendants du mouvement suivant.
282  
283  .Point final de la compensation[[cap:Compensation-End-Point]]
284  
285  image::images/comp-path_fr.png[alt="Point final de la compensation"]
286  
287  === Vue générale
288  
289  ==== Table d'outils
290  
291  La compensation de rayon d'outil utilise les données de la table d'outils
292  pour déterminer le décalage nécessaire. Les données peuvent être introduites
293  à la volée, avec G10 L1.
294  
295  ==== Programmation des mouvements d'entrée
296  
297  Tout mouvement suffisamment long pour arriver en position compensée, sera un
298  mouvement d'entrée valide. La longueur minimale équivaut au rayon de l'outil.
299  Ça peut être un mouvement en vitesse rapide au dessus de la pièce. Si
300  plusieurs mouvements en vitesse rapide sont prévus après un G41/G42, seul le
301  dernier placera l'outil en position compensée.
302  
303  Dans la figure suivante, on voit que le mouvement d'entrée est compensé
304  à droite du profil. Ce qui aura pour effet, lors du mouvement d'entrée, de
305  déplacer le centre de l'outil, d'un rayon d'outil à droite de X0. Dans ce cas,
306  le mouvement d'entrée laissera un petit plot de matière en raison du décalage
307  de compensation et de l'arrondi de l'outil.
308  
309  .Mouvement d'entrée[[cap:Entry-Move]]
310  
311  image::images/comp02.png[alt="Mouvement d'entrée"]
312  
313  ==== Mouvement en Z
314  
315  Un mouvement en Z est possible pendant que le contour est suivi dans le plan
316  XY. Des portions du contour peuvent être sautées en rétractant l'axe Z au
317  dessus du bloc et en amenant Z au dessus du prochain point de départ.
318  
319  ==== Mouvement en vitesse rapide
320  
321  Des mouvements en vitesse rapide peuvent être programmé avec les compensations
322  d'outil actives.
323  
324  ==== Bonne pratique
325  
326   - Débuter tout programme avec un G40 pour être sûr que la compensation est
327  désactivée.
328  
329  === Exemples de profils
330  
331  ==== Profil extérieur
332  
333  .Profil extérieur[[cap:Outside-Profile]]
334  
335  image::images/outside-comp_fr.png[alt="Profil extérieur"]
336  
337  ==== Profil intérieur
338  
339  .Profil intérieur[[cap:Inside-Profile]]
340  
341  image::images/inside-comp_fr.png[alt="Profil intérieur"]
342  
343  
344  == Deux exposés sur les compensations d'outil
345  
346  Ces deux exposés ont été écrits par des experts de la CNC, nous pensons
347  que leur lecture sera très utile. 
348  
349  By Jon Elson
350  
351  La compensation de rayon d'outil (également appelée compensation de
352  diamètre d'outil) à été ajoutée aux spécifications RS-274D à la demande
353  d'utilisateurs, car elle est extrêmement utile, mais son implémentation
354  a été assez mal pensée. L'objectif de cette fonctionnalité est de
355  permettre aux programmeurs de 'virtualiser' la trajectoire de l'outil,
356  de sorte que la machine puisse pendant toute l'exécution, déterminer le
357  bon décalage a apporter à la position de l'outil pour respecter les
358  cotes, en s'appuyant sur les diamètres d'outils existants. Si un outil
359  est réaffuté, son diamètre sera légèrement plus petit que celui
360  d'origine, il faudra également en tenir compte.
361  
362  Le problème est pour donner à la machine la trajectoire exacte où
363  l'outil doit usiner, sur le côté intérieur d'un parcours imaginaire, ou
364  sur le côté extérieur. Comme ces trajectoires ne sont pas
365  nécessairement fermées (même si elles peuvent l'être), il est quasiment
366  impossible à la machine de connaître de quel côté du profil elle doit
367  compenser l'outil. Il a été décidé qu'il n'y aurait que deux choix
368  possibles, outil à 'gauche' du profil à usiner et outil à 'droite' du
369  profil à usiner. Ce qui doit être interprété à gauche ou à droite du
370  profil à usiner en suivant l'outil le long du profil.
371  
372  === Compensation de rayon d'outil, détails
373  
374  By Tom Kramer and Fred Proctor
375  
376  Les possibilités de compensation de rayon d'outil de l'interpréteur,
377  autorise le programmeur à spécifier si l'outil doit passer à gauche ou
378  à droite du profil à usiner. Ce profil peut être un contour ouvert ou
379  fermé, dans le plan XY composé de segments en arcs de cercles et en
380  lignes droites. Le contour peut être le pourtour d'une pièce brute ou,
381  il peut être une trajectoire exacte suivie par un outil mesuré avec
382  précision. La figure ci-dessous, montre deux exemples de trajectoires
383  d'usinage d'une pièce triangulaire, utilisant la compensation de rayon
384  d'outil.
385  
386  Dans les deux exemples, le triangle gris représente le matériau
387  restant après usinage et la ligne extérieure représente le parcours
388  suivi par le centre de l'outil. Dans les deux cas le triangle gris est
389  conservé. Le parcours de gauche (avec les coins arrondis) est le
390  parcours généralement interprété. Dans la méthode de droite (celle
391  marquée Not this way), l'outil ne reste pas en contact avec les angles
392  vifs du triangle gris.
393  
394  .[[figure:7]]
395  image::images/radius_comp.png[]
396  
397  Des mouvements sur l'axe Z peuvent avoir lieu pendant que le contour
398  est suivi dans le plan XY. Des portions du contour peuvent être
399  franchies avec l'axe Z en retrait au dessus de la pièce pendant la
400  poursuite du parcours et jusqu'au point où l'usinage doit reprendre,
401  l'axe Z plongera de nouveau en position. Ces dégagements de zones non
402  usinées peuvent être faits en vitesse travail (G1), en rapide (G0), en
403  vitesse inverse du temps (G93) ou en avance en unités par minute (G94)
404  toutes peuvent être utilisées avec la compensation de rayon d'outil.
405  Sous G94, la vitesse sera appliquée à la pointe de l'outil coupant, non
406  au contour programmé.
407  
408  ==== Instructions de programmation
409  
410   - Pour activer la compensation de rayon d'outil, programmer soit, G41
411     (pour maintenir l'outil à gauche du profil à usiner) soit, G42 (pour
412     maintenir l'outil à droite du profil). Dans la figure figure:7 précédente,
413     par exemple, si G41 était programmé, l'outil devrait tourner en sens
414     horaire autour du triangle et dans le sens contraire si G42 était
415     programmé.
416   - Pour désactiver la compensation de rayon d'outil, programmer G40.
417   - Si un G40, G41, ou G42 est programmé dans la même ligne qu'un
418     mouvement d'axe, la compensation de rayon sera activée ou désactivée
419     avant que le mouvement ne soit fait. Pour que le mouvement s'effectue
420     en premier, il doit être programmé séparément et avant.
421  
422  ==== La valeur de D
423  
424  L'interpréteur actuel requiert une valeur D sur chaque ligne contenant
425  un mot G41 ou G42. Le nombre D doit être un entier positif. Il
426  représente le numéro de slot de l'outil, dont le rayon (la moitié du
427  diamètre d'outil indiqué dans la table d'outils) sera compensé. Il peut
428  aussi être égal à zéro, dans ce cas, la valeur du rayon sera aussi
429  égale à zéro. Toutes les poches de la table d'outils peuvent être
430  sélectionnés de cette façon. Le nombre D n'est pas nécessairement le
431  même que le numéro de poche de l'outil monté dans la broche.
432  
433  ==== Table d'outils
434  
435  La compensation de rayon d'outil utilise les données fournies par la
436  table d'outils de la machine. Pour chaque poche d'outil dans le
437  carrousel, la table d'outils contient le diamètre de l'outil rangé à
438  cet emplacement (ou la différence entre le diamètre nominal de l'outil
439  placé dans cette poche et son diamètre actuel). La table d'outils est
440  indexée par les numéros de poche. Reportez vous à la page des 'Fichiers
441  d'outils' pour savoir comment remplir ces fichiers.
442  
443  ==== Deux types de contour
444  
445  L'interpréteur contrôle la compensation pour deux types de contour:
446  
447   - 1) Le contour donné dans le code NC correspond au bord extérieur du
448     matériau après usinage. Nous l'appellerons
449     'contour sur le profil du matériau'.
450   - 2) Le contour donné dans le code NC correspond à la trajectoire suivie
451     par le centre d'un outil de rayon nominal. Nous l'appellerons
452     'contour sur le parcours d'outil'.
453  
454  L'interpréteur ne dispose d'aucun paramètre pour déterminer quel type
455  de contour est utilisé, mais la description des contours est différente
456  (pour la même géométrie de pièce) entre les deux types, les valeurs des
457  diamètres dans la table d'outils seront également différentes pour les
458  deux types.
459  
460  ==== Contour sur le profil du matériau 
461  
462  Lorsque le contour est sur le profil du matériau, c'est ce tracé qui
463  est décrit dans le programme NC. Pour un contour sur le profil du
464  matériau, la valeur du diamètre dans la table d'outils correspond au
465  diamètre réel de l'outil courant. Cette valeur dans la table doit être
466  positive. Le code NC pour ce type de contour reste toujours le même à
467  l'exception du diamètre de l'outil (actuel ou nominal).
468  
469  Exemple 1 :
470  
471  Voici un programme NC qui usine le matériau en suivant le profil d'un
472  des triangles de la figure précédente. Dans cet exemple, la
473  compensation de rayon est celle du rayon actuel de l'outil, soit 0.5”.
474  La valeur pour le diamètre dans la table d'outil est de 1.0”.
475  ----
476  N0010 G41 G1 X2 Y2 (active la compensation et fait le mouvement d'entrée)
477  N0020 Y-1 (suit la face droite du triangle)
478  N0030 X-2 (suit la base du triangle)
479  N0040 X2 Y2 (suit l'hypoténuse du triangle)
480  N0050 G40 (désactive la compensation)
481  ----
482  
483  Avec ce programme, l'outil suit cette trajectoire: un mouvement
484  d'entrée, puis la trajectoire montrée dans la partie gauche de la
485  figure, avec un déplacement de l'outil en sens horaire autour du
486  triangle. Noter que les coordonnées du triangle de matériau
487  apparaissent dans le code NC. Noter aussi que la trajectoire inclus
488  trois arcs qui ne sont pas explicitement programmés, ils sont générés
489  automatiquement.
490  
491  ==== Contour sur le parcours d'outil
492  
493  Lorsque le contour est sur le parcours d'outil, la trajectoire décrite
494  dans le programme correspond au parcours que devra suivre le centre de
495  l'outil. Le bord de l'outil, à un rayon de là, (excepté durant les
496  mouvements d'entrée) suivra la géométrie de la pièce. La trajectoire
497  peut être créée manuellement ou par un post-processeur, selon la pièce
498  qui doit être réalisée. Pour l'interpréteur, le parcours d'outil doit
499  être tel que le bord de l'outil reste en contact avec la géométrie de
500  la pièce, comme montré à gauche de la figure 7. Si une trajectoire du
501  genre de celle montrée sur la droite de la figure 7 est utilisée, dans
502  laquelle l'outil ne reste pas en permanence au contact avec la
503  géométrie de la pièce, l'interpréteur ne pourra pas compenser
504  correctement si un outil en dessous de son diamètre nominal est
505  utilisé.
506  
507  Pour un contour sur le parcours d'outil, la valeur pour le diamètre de
508  l'outil dans la table d'outils devra être un petit nombre positif si
509  l'outil sélectionné est légèrement sur-dimensionné. La valeur du
510  diamètre sera un petit nombre négatif si l'outil est légèrement
511  sous-dimensionné. Si un diamètre d'outil est négatif, l'interpréteur
512  compense de l'autre côté du contour programmé et utilise la valeur
513  absolue donnée au diamètre. Si l'outil courant est à son diamètre
514  nominal, la valeur dans la table d'outil doit être à zéro.
515  
516  Exemple de contour sur le parcours d'outil
517  
518  Supposons que le diamètre de l'outil courant monté dans la broche est
519  de 0.97 et le diamètre utilisé en générant le parcours d'outil a été de
520  1.0 . Alors la valeur de diamètre dans la table d'outils pour cet outil
521  est de -0.03. Voici un programme G-code qui va usiner l'extérieur d'un
522  triangle de la figure 7.
523  ----
524  N0010 G1 X1 Y4.5 (mouvement d'alignement)
525  N0020 G41 G1 Y3.5 (active la compensation et premier mouvement d'entrée)
526  N0030 G3 X2 Y2.5 I1 (deuxième mouvement d'entrée)
527  N0040 G2 X2.5 Y2 J-0.5 (usinage le long de l'arc en haut du parcours d'outil)
528  N0050 G1 Y-1 (usinage le long du côté droit du parcours d'outil)
529  N0060 G2 X2 Y-1.5 I-0.5 (usinage de l'arc en bas à droite)
530  N0070 G1 X-2 (usinage de la base du parcours d'outil)
531  N0080 G2 X-2.3 Y-0.6 J0.5 (usinage de l'arc en bas à gauche)
532  N0090 G1 X1.7 Y2.4 (usinage de l'hypoténuse)
533  N0100 G2 X2 Y2.5 I0.3 J-0.4 (usinage de l'arc en haut à droite)
534  N0110 G40 (désactive la compensation)
535  ----
536  
537  Avec ce programme, l'outil suit cette trajectoire: un mouvement
538  d'alignement, deux mouvements d'entrée, puis il suit une trajectoire
539  légèrement intérieure au parcours d'outil montré sur la figure 7 en
540  tournant en sens horaire autour de la pièce. Cette compensation est à
541  droite de la trajectoire programmée, même si c'est G41 qui est
542  programmé, en raison de la valeur négative du diamètre.
543  
544  ==== Erreurs de programmation et limitations
545  
546  Les messages en rapport avec la compensation de rayon d'outil,
547  délivrés par l'interpréteur sont les suivants:
548  
549  - Impossible de changer les décalages d'axes avec la compensation de rayon d'outil
550  - Impossible de changer d'unité avec la compensation de rayon d'outil
551  - Impossible d'activer la compensation de rayon d'outil en dehors du plan XY
552  - Action impossible, la compensation de rayon d'outil est déjà active
553  - Impossible d'utiliser G28 ou G30 avec la compensation de rayon d'outil
554  - Impossible d'utiliser G53 avec la compensation de rayon d'outil
555  - Impossible d'utiliser le plan XZ avec la compensation de rayon d'outil
556  - Impossible d'utiliser le plan YZ avec la compensation de rayon d'outil
557  - Coin concave avec la compensation de rayon d'outil
558  - Interférence de l'outil avec une partie finie de la pièce avec la
559     compensation de rayon d'outil footnote:[Le terme anglais 'gouging'
560     indique une interférence entre l'outil et une partie finie de la pièce ou
561     la paroi d'une cavité. Par extension, le terme est parfois repris pour une
562     interférence entre le porte-outil ou la broche et la pièce.]
563  - Mot D sur une ligne sans mot de commande G41 ni G42
564  - Index de rayon d'outil trop grand
565  - Le rayon de l'outil n'est pas inférieur au rayon de l'arc avec la
566     compensation de rayon
567  - Deux G-codes du même groupe modal sont utilisés.
568  
569  Pour certains de ces messages, des explications sont données plus loin.
570  
571  Changer d'outil alors que la compensation de rayon d'outil est active
572  n'est pas considéré comme une erreur, mais il est peu probable que cela
573  soit fait intentionnellement. Le rayon d'outil utilisé lors de
574  l'établissement de la compensation continuera à être utilisé jusqu'à la
575  désactivation de la compensation, même si un nouvel outil est
576  effectivement utilisé.
577  
578  Quand la compensation de rayon d'outil est active, il est physiquement
579  possible de faire un cercle, dont le rayon est la moitié du diamètre de
580  l'outil donné dans la table d'outils, il sera tangent avec l'outil en
581  tout point de son contour.
582  
583  image:images/radius_comp_error.png[]
584  
585  En particulier, l'interpréteur traite les coins concaves et les arcs
586  concaves plus petits que l'outil, comme des erreurs, le cercle ne peut
587  pas être maintenu tangent avec le contour dans ces situations. Cette
588  détection de défaut, ne limite pas les formes qui peuvent être usinées,
589  mais elle requiert que le programmeur précise la forme exacte à usiner
590  (ou le parcours d'outil qui doit être suivi) et non une approximation.
591  A cet égard, l'interpréteur utilisé par LinuxCNC diffère des interpréteurs
592  utilisés dans beaucoup d'autres contrôleurs, qui passent ces erreurs
593  sous silence et laissent l'outil interférer avec la partie finie de la
594  pièce (gouging) ou arrondissent des angles qui devraient être vifs. Il
595  n'est pas nécessaire, de déplacer l'outil entre la désactivation de la
596  compensation et sa réactivation, mais le premier mouvement suivant la
597  réactivation sera considéré comme premier mouvement, comme déjà décrit
598  plus tôt.
599  
600  Il n'est pas possible de passer d'un index de rayon d'outil à un autre
601  alors que la compensation est active. Il est également impossible de
602  basculer la compensation d'un côté à l'autre avec la compensation
603  active. Si le prochain point de destination XY est déjà dans le
604  périmètre d'action de l'outil quand la compensation est activée, le
605  message indiquant une interférence outil/surface finie, s'affichera
606  quand la ligne du programme qui donne cette destination sera atteinte.
607  Dans ce cas, l'outil a déjà usiné dans le matériau, là où il n'aurait
608  pas dû...
609  
610  Si le numéro de slot programmé par le mot D est supérieur au nombre
611  d'emplacements disponibles dans le carrousel, un message d'erreur sera
612  affiché. Dans l'implémentation actuelle, le nombre d'emplacements
613  maximum est de 68.
614  
615  Le message d'erreur 'Deux G-codes du même groupe modal sont utilisés'
616  est un message générique utilisé pour plusieurs jeux de G-codes. Il
617  s'applique à la compensation de rayon d'outil, il signifie que plus
618  d'un code G40, G41 ou G42 apparaît sur la même ligne de programme NC,
619  ce qui n'est pas permis.
620  
621  === Premier mouvement
622  
623  L'algorithme utilisé lors du premier déplacement, quand c'est une
624  ligne droite, consiste à tracer une droite, depuis le point d'arrivée,
625  tangente à un cercle dont le centre est le point actuel, et le rayon,
626  celui de l'outil. Le point de destination de la pointe de l'outil se
627  trouve alors au centre d'un cercle de même rayon, tangent à la ligne
628  droite tracée précédemment. C'est montré sur la figure 9. Si le point
629  programmé est situé à l'intérieur de la première section d'outil (le
630  cercle de gauche), une erreur sera signalée.
631  
632  image:images/radius_comp_straight.png[]
633  
634  image:images/radius_comp_arc.png[]
635  
636  Si le premier mouvement après que la compensation de rayon d'outil a
637  été activée est un arc, l'arc qui sera généré est dérivé d'un arc
638  auxiliaire, qui a son centre identique à celui du point central
639  programmé, passe par le point final de l'arc programmé et, est tangent
640  à l'outil à son emplacement courant. Si l'arc auxiliaire ne peut pas
641  être construit, une erreur sera signalée. L'arc généré déplacera
642  l'outil pour qu'il reste tangent à l'arc auxiliaire pendant tout le
643  mouvement. C'est ce que montre sur la figure 10.
644  
645  Indépendamment du fait que le premier déplacement est une droite ou un
646  arc, l'axe Z peut aussi se déplacer en même temps. Il se déplacera
647  linéairement, comme c'est le cas quand la compensation de rayon n'est
648  pas utilisée. Les mouvements des axes rotatifs (A, B et C) sont
649  autorisés avec la compensation de rayon d'outil, mais leur utilisation
650  serait vraiment très inhabituelle.
651  
652  Après les mouvements d'entrée en compensation de rayon d'outil,
653  l'interpréteur maintiendra l'outil tangent au contour programmé et du
654  côté approprié. Si un angle aigu se trouve dans le parcours, un arc est
655  inséré pour tourner autour de l'angle. Le rayon de cet arc sera de la
656  moitié du diamètre de l'outil donné dans la table d'outils.
657  
658  Quand la compensation de rayon est désactivée, aucun mouvement de
659  sortie particulier n'est fait. Le mouvement suivant sera ce qu'il
660  aurait été si la compensation n'avait jamais été activée et que le
661  mouvement précédent ait placé l'outil à sa position actuelle.
662  
663  ==== Programmation des mouvements d'entrée
664  
665  En général, un mouvement d'alignement et deux mouvements d'entrée sont
666  demandés pour commencer la compensation correctement. Cependant, si le
667  contour programmé comporte des pointes et des angles aigus, un seul
668  mouvement d'entrée (plus, éventuellement, un mouvement de pré-entrée)
669  est demandé. La méthode générale, qui fonctionne dans toutes les
670  situations, est décrite en premier. Elle suppose que le programmeur
671  connait déjà le contour et son but est d'ajouter le mouvement d'entrée.
672  
673  ==== Méthode générale
674  
675  La méthode générale de programmation comprend un mouvement
676  d'alignement et deux mouvements d'entrée. Les mouvements d'entrée
677  expliqués ci-dessus, seront repris comme exemple. Voici le code
678  correspondant:
679  ----
680  N0010 G1 X1 Y4.5 (mouvement d'alignement vers le point C) 
681  N0020 G41 G1 Y3.5 (active la compensation et fait le premier mouvement
682  d'entrée vers le point B) 
683  N0030 G3 X2 Y2.5 I1 (fait le second mouvement d'entrée vers le point A)
684  ----
685  
686  Voir la figure 11. La figure montre les deux mouvements d'entrée mais
687  pas le mouvement d'alignement.
688  
689  En premier, choisir un point A sur le contour où il convient
690  d'attacher un arc d'entrée. Spécifier un arc à l'extérieur du contour
691  qui commence au point B et s'achève au point A, tangent au contour (et
692  aller dans la même direction que celle prévue pour tourner autour du
693  contour). Le rayon doit être supérieur à la moitié du diamètre donné
694  dans la table d'outils. Ensuite, tirer une ligne tangente à l'arc, du
695  point B au point C, placé de telle sorte que la ligne BC fasse plus
696  d'un rayon de long.
697  
698  Après que la construction soit terminée, le code est écrit dans
699  l'ordre inverse de celui de la construction. La compensation de rayon
700  d'outil est activée après le mouvement d'alignement et avant le premier
701  mouvement d'entrée. Dans le code précédent, la ligne N0010 fait le
702  mouvement d'alignement, la ligne N0020 active la compensation et fait
703  le premier mouvement d'entrée et la ligne N0030 fait le second
704  mouvement d'entrée.
705  
706  image:images/radius_comp_entry.png[]
707  
708  Dans cet exemple, l'arc AB et la ligne BC sont très larges, ce n'est
709  pas nécessaire. Pour un contour sur parcours d'outil, le rayon de l'arc
710  AB demande juste à être légèrement plus grand que la variation maximale
711  du rayon de l'outil par rapport à son rayon nominal. Également, pour un
712  contour sur parcours d'outil, le côté choisi pour la compensation doit
713  être celui utilisé si l'outil est sur-dimensionné. Comme mentionné
714  précédemment, si l'outil est sous-dimensionné, l'interpréteur basculera
715  de l'autre côté.
716  
717  ==== Méthode simple
718  
719  Si le contour est sur le profil du matériau et qu'il comprends des
720  angles aigus quelque part sur le contour, une méthode simple pour faire
721  l'entrée est possible. Voir la figure 12.
722  
723  Premièrement, choisir un angle aigu, par exemple D. Ensuite, décider
724  comment on va tourner autour du matériau depuis le point D. Dans notre
725  exemple nous maintiendrons l'outil à gauche du profil et nous
726  avancerons vers F. Prolonger la ligne FD (si le segment suivant du
727  contour est un arc, prolonger la tangente à l'arc FD depuis D) pour
728  diviser la surface extérieure au contour proche de D en deux parties.
729  S'assurer que le centre de l'outil est actuellement dans la partie du
730  même côté de la ligne prolongée que le matériau. Sinon, déplacer
731  l'outil dans cette partie. Par exemple, le point E représente la
732  position courante du centre de l'outil. Comme il est du même côté de la
733  ligne FD prolongée que le triangle gris du matériau, aucun mouvement
734  supplémentaire n'est nécessaire. Maintenant écrire la ligne de code NC
735  qui active la compensation et faire le mouvement vers le point D
736  ----
737  N0010 G41 G1 X2 Y2 (active la compensation et fait le mouvement d'entrée)
738  ----
739  
740  Cette méthode fonctionnera également avec un angle aigu sur un contour
741  sur parcours d'outil, si l'outil est sur-dimensionné, mais elle échouera
742  si il est sous-dimensionné.
743  
744  image:images/radius_comp_entry_simple.png[]
745  
746  ==== Autres points où est exécutée la compensation de rayon d'outil
747  
748  Le jeu complet de fonctions canoniques comprend des fonctions qui
749  activent et désactivent la compensation de rayon d'outil, de sorte
750  qu'elle puisse être activée quand le contrôleur exécute une de ces
751  fonctions. Dans l'interpréteur cependant, ces commandes ne sont pas
752  utilisées. La compensation est assurée par l'interpréteur et reflétée
753  dans les sorties des commandes, c'est l'interpréteur qui continuera à
754  diriger les mouvements du centre de l'outil. Cela simplifie le travail
755  du contrôleur de mouvement tout en rendant le travail de l'interpréteur
756  un peu plus difficile.
757  
758  ==== Algorithmes pour compensation de rayon d'outil
759  
760  L'interpréteur permet que les mouvements d'entrée et de sortie soient
761  des arcs. Le comportement pour les mouvements intermédiaires est le
762  même, excepté que certaines situations sont traitées comme des erreurs
763  par l'interpréteur alors qu'elles ne le sont pas sur d'autres
764  contrôleurs de machine.
765  
766  Données relatives à la compensation de rayon d'outil:
767  
768  L'interpréteur conserve trois données pour la compensation de rayon
769  d'outil: Le réglage lui même (gauche, droite ou arrêt), program_x et
770  program_y. Les deux dernières représentent les positions en X et en Y
771  données dans le code NC quand la compensation est active. Quand elle
772  est désactivée, les deux entrées sont fixées à de très petites valeurs
773  (10 e-20 ) dont la valeur symbolique (dans un #define) est 'unknown'.
774  L'interpréteur utilise, les items current_x et current_y qui 
775  représentent, le centre de la pointe de l'outil (dans le système de 
776  coordonnées courant), à tout moment. 
777  
778  === Exemples de Jon Elson
779  
780  Toutes les informations spécifiques au système se réfèrent au
781  programme LinuxCNC du NIST, mais doit aussi s'appliquer aux plus modernes
782  contrôleurs CNC. Ma méthode de vérification de ces programmes est
783  d'abord de sélectionner l'outil zéro, de sorte que les commandes de
784  compensation soient ignorées. Ensuite, je colle une feuille de papier
785  sur une plaque tenue de niveau dans l'étau, une sorte de platine.
786  J'installe une recharge de stylo à ressort dans la broche. C'est une
787  recharge standard de stylo à bille en métal avec un ressort, dans un
788  corps de 12mm de diamètre. Elle à un ressort pour la faire rentrer dans
789  le corps du stylo, et un 'collet' à l'arrière qui permet à la pointe de
790  se rétracter malgré le ressort, mais qui la laisse centrée à quelques
791  dixièmes près. Je charge le programme avec l'outil zéro sélectionné, et
792  il trace une ligne à l'extérieur de la pièce. (voir la figure suivante)
793  Alors, je sélectionne un outil avec le diamètre de l'outil que
794  j'envisage d'utiliser et je lance le programme une nouvelle fois.
795  (Noter que la coordonnée Z dans le programme ne doit pas être changée
796  pour éviter de plonger le stylo au travers du plateau ;-) Maintenant,
797  je dois voir si la compensation G41 ou G42 que je spécifie passe sur le
798  côté voulu de la pièce. Sinon, je modifie avec la compensation du côté
799  opposé, et j'édite la compensation opposée dans le programme, puis
800  j'essaye à nouveau. Maintenant, avec l'outil sur le côté correct de la
801  pièce, je peut vérifier si quelque part sur le parcours l'outil est
802  'trop gros' pour usiner les surfaces concaves. Ma vieille Allen-Bradley
803  7320 était très indulgente sur ce point, mais LinuxCNC ne tolère rien. Si
804  vous avez la moindre concavité où deux lignes se rencontrent à moins de
805  180 degrés avec un outil de taille définies, LinuxCNC va s'arrêter là, avec
806  un message d'erreur. Même si le gougeage est de .001mm de profondeur.
807  Alors, je fais toujours l'approche sur le mouvement d'entrée et le
808  mouvement de sortie juste sur un coin de la pièce, en fournissant un
809  angle de plus de 180 degrés, afin que LinuxCNC ne râle pas. Cela exige une
810  grande attention lors de l'ajustement des points de départ et de
811  sortie, qui ne sont pas compensés par le rayon d'outil, mais ils
812  doivent être choisis avec un rayon approximatif bien réfléchi.
813  
814  Les commandes sont:
815  
816  - G40 Annuler la compensation de rayon d'outil
817  - G41 Activer la compensation, outil à gauche du profil
818  - G42 Activer la compensation, outil à droite du profil
819  
820  Voici un petit fichier qui usine le côté d'une pièce avec de multiples
821  arcs convexes et concaves et plusieurs lignes droites. La plupart de
822  ces commandes ont été tracées depuis Bobcad/CAM, mais les lignes N15 et
823  N110 ont été ajoutées par moi et certaines coordonnées dans ce contour
824  ont été bricolées un peu par moi.
825  ----
826  N10 G01 G40 X-1.3531 Y3.4
827  N15 F10 G17 G41 D4 X-0.7 Y3.1875 (ligne d'entrée)
828  N20 X0. Y3.1875
829  N40 X0.5667 F10
830  N50 G03 X0.8225 Y3.3307 R0.3
831  N60 G02 X2.9728 Y4.3563 R2.1875
832  N70 G01 X7.212 Y3.7986
833  N80 G02 X8.1985 Y3.2849 R1.625
834  N90 G03 X8.4197 Y3.1875 R0.3
835  N100 G01 X9.
836  N110 G40 X10.1972 Y3.432 (ligne de sortie)
837  N220 M02
838  ----
839  
840  La ligne 15 contient G41 D4, qui signifie que le diamètre de l'outil
841  est celui de l'outil #4 dans la table d'outils, il sera utilisé pour
842  décaler la broche de 1/2 diamètre, qui est, bien sûr, le rayon d'outil.
843  Noter que la ligne avec la commande G41 contient le point final du
844  mouvement dans lequel la compensation de rayon est interpolée. Cela
845  signifie qu'au début de ce mouvement, il n'y a aucun effet de
846  compensation et à la fin, l'outil est décalé de 100% du rayon de
847  l'outil sélectionné. Immédiatement après le G41 il y a D4, signifiant
848  que le décalage sera le rayon de l'outil N°4 dans la table d'outils.
849  Noter que les DIAMÈTRES d'outil sont entrés dans la table d'outils. (le
850  diamètre de l'outil de Jon est de 0.4890)
851  
852  Mais, noter qu'à la ligne 110, où il y a la commande G40,
853  l'interpolation de la compensation d'outil est en dehors de ce
854  mouvement. La manière d'obtenir ce réglage, les mouvements des lignes
855  15 et 110 sont presque exactement parallèles à l'axe X et la différence
856  dans les coordonnées Y est à la ligne où l'outil est appelé, en dehors
857  de la compensation d'outil.
858  
859  image:images/partdraw1.png[]
860  
861  Certaines autres choses sont à noter, le programme commence avec G40,
862  pour désactiver les compensations éventuellement actives. Cela évite un
863  tas d'ennuis quand le programme s'arrête à cause d'une erreur de
864  concavité, mais laisse la compensation désactivée. Noter aussi, en
865  ligne 15, G17 est utilisé pour spécifier le plan de travail XY pour les
866  interpolations circulaires. J'ai utilisé le format rayon pour les
867  spécifications des arcs plutôt que la forme I, J. LinuxCNC est très
868  pointilleux au sujet des rayons qu'il calcule à partir du format des
869  coordonnées I, J et il doit trouver le début et la fin du mouvement
870  avec 10^-11 unités internes, de sorte qu'il y a beaucoup de problèmes
871  avec des arcs arbitraires. Normalement, si vous avez un arc de 90
872  degrés, centré sur (1.0,1.0) avec un rayon de 1", tout ira bien, mais
873  si le rayon ne peut pas être exprimé exactement et avec juste le nombre
874  de chiffres significatifs, ou si l'arc à un nombre étrange de degrés,
875  alors les problèmes commencent avec LinuxCNC. Le mot R supprime tous ce
876  désordre et il est beaucoup plus facile de travailler avec lui, de
877  toute façon. Si l'arc est de plus de 180 degrés, R doit être négatif.
878  
879