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