overview_fr.txt
1 :lang: fr 2 :toc: 3 4 = Vue générale du langage G-codes de LinuxCNC 5 6 [[cha:Vue-generale-G-code]] 7 8 :ini: {basebackend@docbook:'':ini} 9 :hal: {basebackend@docbook:'':hal} 10 :ngc: {basebackend@docbook:'':ngc} 11 // begin a listing of ini/hal/ngc files like so: 12 //[source,{ini}] 13 //[source,{hal}] 14 //[source,{ngc}] 15 16 == Brève description du G-code de LinuxCNC 17 18 Le G-code est le langage de programmation des machines numériques. Le G-code 19 utilisé par LinuxCNC est basé sur le langage RS274/NGC. Cette documentation le 20 décrit de manière exhaustive, c'est donc un gros morceau mais il contient 21 beaucoup de concepts qui seront assimilés par le lecteur dès la première lecture. 22 C'est notamment le cas de ce chapitre. Par la suite, l'utilisateur reviendra ici, 23 d'abord pour chaque détail de création de son G-code, puis plus tard, seulement 24 pour vérifier la syntaxe des codes les moins courants. Il aura alors perçu la 25 puissance de ce langage et de LinuxCNC qui le met à profit. 26 27 28 == Format des paramètres du G-code 29 30 Le langage G-code est basé sur des lignes de code. Chaque ligne 31 (également appelée un 'bloc') peut inclure des commandes pour faire 32 produire diverses actions à la machine. Plusieurs lignes de code 33 peuvent être regroupées dans un fichier pour créer un programme G-code. 34 35 Une ligne de code typique commence par un numéro de ligne optionnel 36 suivi par un ou plusieurs 'mots'. Un mot commence par une lettre suivie 37 d'un nombre (ou quelque chose qui permet d'évaluer un nombre). Un mot 38 peut, soit donner une commande, soit fournir un argument à une 39 commande. Par exemple, 'G1 X3' est une ligne de code valide avec deux 40 mots. 'G1' est une commande qui signifie 'déplaces toi en ligne 41 droite à la vitesse programmée' et 'X3' fournit la valeur d'argument 42 (la valeur de X doit être 3 à la fin du mouvement). La plupart des 43 commandes G-code commencent avec une lettre G ou M 44 (G pour Général et M pour Miscellaneous (auxiliaire)). 45 Les termes pour ces commandes sont 'G-codes' et 'M-codes.' 46 47 Le langage G-code(((G-code))) n'a pas d'indicateur de début et de 48 fin de programme. L'interpréteur cependant traite les fichiers. Un 49 programme simple peut être en un seul fichier, mais il peut aussi être 50 partagé sur plusieurs fichiers. Un fichier peut être délimité par le 51 signe pour-cent de la manière suivante. La première ligne non vide d'un 52 fichier peut contenir un signe '%' seul, éventuellement encadré 53 d'espaces blancs, ensuite, à la fin du fichier on doit trouver une 54 ligne similaire. Délimiter un fichier avec des % est facultatif si le 55 fichier comporte un 'M2' ou un 'M30' , mais est requis sinon. Une 56 erreur sera signalée si un fichier a une 57 ligne pour-cent au début, mais pas à la fin. Le contenu utile d'un 58 fichier délimité par pour-cent s'arrête après la seconde ligne pour-cent. 59 Tout le reste est ignoré. 60 61 Le langage G-code prévoit les deux commandes ('M2' ou 'M30' ) pour 62 finir un programme. Le programme peut se terminer avant la fin 63 du fichier. Les lignes placées après la fin d'un programme ne seront 64 pas exécutées. L'interpréteur ne les lit pas. 65 66 == Format d'une ligne 67 68 Une ligne de G-code typique est construite de la façon suivante, 69 dans l'ordre avec la restriction à un maximum de 256 caractères sur la même 70 ligne. 71 72 . Un caractère optionnel d'effacement de bloc, qui est la barre oblique '/'. 73 . Un numéro de ligne optionnel. 74 . Un nombre quelconque de mots, valeurs de paramètres et commentaires. 75 . Un caractère de fin de ligne (retour chariot ou saut de ligne ou les 76 deux). 77 78 Toute entrée non explicitement permise est illégale, elle provoquera 79 un message d'erreur de l'interpréteur. 80 81 Les espaces sont permis ainsi que les tabulations dans une ligne de 82 code dont ils ne changent pas la signification, excepté dans les 83 commentaires. Ceci peut donner d'étranges lignes, mais elles sont 84 autorisées. La ligne 'g0x +0. 12 34y 7' est équivalente à'g0 85 x+0.1234 y7', par exemple. 86 87 Les lignes vides sont permises, elles seront ignorées. 88 89 La casse des caractères est ignorée, excepté dans les commentaires. 90 Toutes les lettres en dehors des commentaires peuvent être, 91 indifféremment des majuscules ou des minuscules sans changer la 92 signification de la ligne. 93 94 [[sec:effacement-de-bloc]] 95 == Caractère d'effacement de bloc 96 (((Block Delete))) 97 98 Le caractère optionnel d'effacement de bloc qui est la barre oblique '/', 99 quand il est placé en premier sur une ligne, peut être utilisé par certaines 100 interfaces utilisateur pour sauter, si besoin, des lignes de code. Dans Axis, la 101 combinaison de touches 'Alt-m-/' est une bascule qui active ou désactive 102 l'effacement de bloc. Quand l'effacement de bloc est actif, toutes les lignes 103 commençant par '/' sont sautées. 104 105 Dans Axis il est également possible de basculer l'activation d'effacement de 106 bloc avec l'icône: 107 image:../gui/images/tool_blockdelete.gif[] 108 109 == Numéro de ligne 110 (((Numéro de ligne))) 111 112 Un numéro de ligne commence par la lettre N suivie d'un nombre entier 113 non signé. Les numéros de ligne peuvent se suivre, être répétés ou être dans 114 le désordre, bien qu'une pratique normale évite ce genre d'usage. Les numéros 115 de ligne peuvent être sautés, c'est une pratique normale. L'utilisation d'un 116 numéro de ligne n'est pas obligatoire, ni même recommandée, mais si ils sont 117 utilisés, il doivent être placés en début de ligne. 118 119 == Les mots 120 (((mots))) 121 122 Un mot est une lettre, autre que N, suivie d'un nombre réel. 123 124 Les mots peuvent commencer avec l'une ou l'autre des lettres indiquées 125 dans le tableau ci-dessous. Ce tableau inclus N pour être complet, même si, 126 comme défini précédemment, les numéros de lignes ne sont pas des mots. 127 Plusieurs lettres (I, J, K, L, P, R) peuvent avoir différentes significations 128 dans des contextes différents. Les lettres qui se réfèrent aux noms d'axes ne 129 sont pas valides sur une machine n'ayant pas les axes correspondants. 130 131 132 .Les mots et leur signification[[sec:Les-mots-et-leur-significations]] 133 134 [width="100%", options="header"] 135 |======================================== 136 |Lettre | Signification 137 |A | Axe A de la machine 138 |B | Axe B de la machine 139 |C | Axe C de la machine 140 |D | Valeur de la compensation de rayon d'outil 141 |F | Vitesse d'avance travail 142 |G | Fonction Générale (voir la table des codes modaux) 143 |H | Index d'offset de longueur d'outil 144 |I | Décalage en X pour les arcs et dans les cycles préprogrammés G87 145 |J | Décalage en Y pour les arcs et dans les cycles préprogrammés G87 146 .2+|K | Décalage en Z pour les arcs et dans les cycles préprogrammés G87 147 <| Distance de déplacement par tour de broche avec G33 148 |M | Fonction auxiliaire (voir la table des codes modaux) 149 |N | Numéro de ligne 150 .2+|P | Temporisation utilisée dans les cycles de perçage et avec G4. 151 <| Mot clé utilisé avec G10. 152 |Q | Incrément Delta en Z dans un cycle G73, G83 153 |R | Rayon d'arc ou plan de retrait dans un cycle préprogrammé 154 |S | Vitesse de rotation de la broche 155 |T | Numéro d'outil 156 |U | Axe U de la machine 157 |V | Axe V de la machine 158 |W | Axe W de la machine 159 |X | Axe X de la machine 160 |Y | Axe Y de la machine 161 |Z | Axe Z de la machine 162 |======================================== 163 164 [[sec:Nombres]] 165 == Les nombres 166 (((Les nombres))) 167 168 Les règles suivantes sont employées pour des nombres (explicites). 169 Dans ces règles un chiffre est un caractère simple entre 0 et 9. 170 171 * Un nombre commence par: 172 173 ** un signe plus ou un signe moins optionnel, 174 suivi de 175 ** zéro à plusieurs chiffres, peut être suivis par, 176 ** un point décimal, suivi de 177 ** zéro à plusieurs chiffres, il doit au moins y avoir un chiffre. 178 179 * Il existe deux types de nombres: 180 ** Les entiers, qui n'ont pas de point décimal. 181 ** Les décimaux, qui ont un point décimal. 182 * Les nombres peuvent avoir n'importe quel nombre de chiffres, sous 183 réserve de la limitation de longueur d'une ligne. Seulement environ 184 dix-sept chiffres significatifs seront retenus, c'est toutefois 185 suffisant pour toutes les applications connues. 186 * Un nombre non nul sans autre signe que le premier caractère est 187 considéré positif. 188 189 Les zéros non significatifs, ne sont pas nécessaires. 190 191 Si un nombre utilisé dans le langage G-code est proche d'une valeur 192 entière à moins de quatre décimales, il est considéré comme entier, par 193 exemple 0.9999. 194 195 196 [[sec:parametres]] 197 == Paramètres (Variables) 198 (((Paramètres))) 199 200 Le langage RS274/NGC supporte les 'paramètres', qui sont appelés 'variables' 201 dans d'autres langages de programmation. Il existe plusieurs types de paramètres 202 ayant différents usages et différentes formes. Le seul type de nombre supporté 203 par les paramètres est le flottant, il n'y a pas de string, pas de boolean ni 204 d'entier dans le G-code comme dans d'autres langages de programmation. Toutefois, 205 les expressions logiques peuvent être formulées avec 206 <<sec:Operateurs-Binaires,les opérateurs booléens>> ('AND', 'OR', 'XOR' et les 207 opérateurs de comparaison 208 'EQ', 'NE', 'GT', 'GE', 'LT', 'LE') ainsi que 'MOD', 'ROUND', 'FUP' et 'FIX' 209 <<sec:Fonctions, les fonctions>> qui supportent l'arithmétique entière. 210 211 Les paramètres différent par leur syntaxe, leur portée, leur comportement quand ils 212 ne sont pas encore initialisés, leur mode, leur persistance et l'usage pour lequel 213 ils sont prévus. 214 215 Syntaxes:: Il y a trois sortes d'apparences syntaxiques: 216 * 'numéroté' - #4711 217 * 'nommé local' - #<valeurlocale> 218 * 'nommé global' - #<_valeurglobale> 219 220 La portée:: La portée d'un paramètre est soit globale, ou locale à l'intérieur d'un 221 sous-programme. Les paramètres de sous-programme et les paramètres nommés ont une 222 portée locale. Les paramètres nommés globaux et les paramètres numérotés 223 commencent par un nombre, exemple: 31 a une portée globale. RS274/NGC utilise une 224 'portée lexicale', dans un sous-programme, seules sont locales les variables qui 225 y sont définies et toutes les variables globales y sont visibles. Les variables 226 locales à un appel de procédure, ne sont pas visibles dans la procédure appelée. 227 228 Le comportement des paramètres non encore initialisés:: 229 . Les paramètres globaux non initialisés et les paramètres de sous-programmes 230 inutilisés, retournent la valeur zéro quand ils sont utilisés dans une expression. 231 . Les paramètres nommés signalent une erreur quand ils sont utilisés dans une 232 expression. 233 234 Le mode:: La plupart des paramètres sont en lecture/écriture et peuvent être 235 assignés dans une instruction d'affectation. Cependant, pour beaucoup de 236 paramètres prédéfinis, cela n'a pas de sens, ils sont alors en lecture seule. Ils 237 peuvent apparaître dans les expressions, mais pas sur le côté gauche d'une 238 instruction d'affectation. 239 240 La persistance:: Quand LinuxCNC s'arrête, les paramètres volatiles perdent leurs 241 valeurs. Tous les paramètres sont volatiles, excepté les paramètres numérotés 242 dans l'étendue courante de persistance footnote:[L'étendue de persistance 243 courante des paramètres évolue en même temps qu'évolue le développement. Cette 244 étendue est actuellement de 5161 à 5390. Elle est définie par '_required_parameters array' 245 dans le fichier src/linuxcnc/rs274ngc/interp_array.cc .]. 246 Les paramètres persistants sont enregistrés dans un fichier '.var' et restaurés à 247 leurs valeurs précédentes quand LinuxCNC est relancé. Les paramètres numérotés 248 volatiles sont remis à zéro. 249 250 Utilisation prévue:: 251 . Paramètres utilisateur:: paramètres numérotés dans l'étendue 31 à 5000, 252 paramètres nommés globaux et locaux excepté les paramètres prédéfinis. Sont 253 disponibles pour une utilisation générale de stockage de valeurs flottantes, 254 comme des résultats intermédiaires, des drapeaux, etc. durant l'exécution d'un 255 programme. Ils sont en lecture/écriture (une valeur peut leur être attribuée). 256 257 . <<sec:Parametres-sous-programme, Paramètres de sous-programme>> - Ils sont 258 utilisés pour conserver les paramètres actuels passés à un sous-programme. 259 260 . <<sec:Parametres-Numerotes,paramètres numérotés>> - la plupart de ces 261 paramètres sont utilisés pour accéder aux offsets des systèmes de coordonnées. 262 . <<sec:Predefined-Named-Parameters, paramètres nommés prédéfinis>> - utilisés pour 263 déterminer l'état de l'interpréteur et de la machine, par exemple '#<_relative>' 264 retourne 1 si G91 est actif et 0 si G90 est activé. Ils sont en lecture seule. 265 266 [[sec:Parametres-Numerotes]] 267 == Paramètres numérotés 268 (((Paramètres numérotés))) 269 270 Un paramètre numéroté commence par le caractère '#' suivi par un 271 entier compris entre 1 et (actuellement) 5602. Le paramètre est 272 référencé par cet entier, sa valeur est la valeur stockée dans le 273 paramètre. 274 275 Une valeur est stockée dans un paramètre avec l'opérateur = par 276 exemple: 277 ---- 278 #3 = 15 (la valeur 15 est stockée dans le paramètre numéro 3) 279 ---- 280 281 Le caractère '\#' a une précédence supérieure à celle des autres 282 opérations, ainsi par exemple, '\#1+2' signifie la valeur trouvée en ajoutant 2 283 à la valeur contenue dans le paramètre 1 et non la valeur trouvée dans le 284 paramètre 3. Bien sûr, '\#[1+2]' signifie la valeur trouvée dans le paramètre 285 3. Le caractère '\#' peut être répété, par exemple '##2' signifie le paramètre 286 dont le numéro est égal à la valeur entière trouvée dans le paramètre 2. 287 288 31 à 5000:: 289 Paramètres des G-Code utilisateur. Ces paramètres sont globaux dans 290 le fichier G-code. 291 5061 à 5069:: 292 Résultat du palpage 'G38.2' pour X Y Z A B C U V W. Volatile. 293 5161 à 5169:: 294 Coordonnées d'un 'G28' pour X Y Z A B C U V W. Persistant. 295 5181 à 5189:: 296 Origine 'G30' pour X Y Z A B C U V W. Persistant. 297 5211 à 5219:: 298 Offset 'G52' et 'G92' pour X Y Z A B C U V W. Persistant. 299 5220:: 300 Système de coordonnées 1 à 9 pour G54 à G59.3. Persistant. 301 5221 à 5229:: 302 Système de coordonnées 1, G54 pour X Y Z A B C U V W R. Persistant. 303 5241 à 5249:: 304 Système de coordonnées 2, G55 pour X Y Z A B C U V W R. Persistant. 305 5261 à 5269:: 306 Système de coordonnées 3, G56 pour X Y Z A B C U V W R. Persistant. 307 5281 à 5289:: 308 Système de coordonnées 4, G57 pour X Y Z A B C U V W R. Persistant. 309 5301 à 5309:: 310 Système de coordonnées 5, G58 pour X Y Z A B C U V W R. Persistant. 311 5321 à 5329:: 312 Système de coordonnées 6, G59 pour X Y Z A B C U V W R. Persistant. 313 5341 à 5349:: 314 Système de coordonnées 7, G59.1 pour X Y Z A B C U V W R. Persistant. 315 5361 à 5369:: 316 Système de coordonnées 8, G59.2 pour X Y Z A B C U V W R. Persistant. 317 5381 à 5389:: 318 Système de coordonnées 9, G59.3 pour X Y Z A B C U V W R. Persistant. 319 5399:: 320 Résultat de M66 - Surveille ou attends une entrée. Volatile. 321 5400:: 322 Numéro de l'outil courant. Volatile. 323 5401 à 5409:: 324 Offset d'outil pour X Y Z A B C U V W. Volatile. 325 5410:: 326 Diamètre de l'outil courant. Volatile. 327 5411:: 328 Angle frontal de l'outil courant. Volatile. 329 5412:: 330 Angle arrière de l'outil courant. Volatile. 331 5413:: 332 Orientation de l'outil. Volatile. 333 5420 à 5428:: 334 Positions courantes incluant les offsets, dans l'unité courante 335 du programme pour X Y Z A B C U V W. 336 337 [[sec:Parametres-sous-programme]] 338 == Paramètres de sous-programme 339 (((Paramètres de sous-programme))) 340 341 * '1-30' - Paramètres d'appel d'arguments, locaux au sous-programme. Voir la 342 section des <<cha:O-codes, O-codes>>. 343 344 [[sec:Parametres-Nommes]] 345 == Paramètres nommés 346 (((Paramètres nommés))) 347 348 Les paramètres nommés fonctionnent comme les paramètres numérotés mais 349 sont plus faciles à lire. Les paramètres nommés sont convertis en 350 minuscules, les espaces et tabulations sont supprimés. Les paramètres 351 nommés doivent être encadrés des signes '<' et '>'. 352 353 '#<Un paramètre nommé>' est un paramètre nommé local. Par défaut, un 354 paramètre nommé est 355 local à l'étendue dans laquelle il est assigné. L'accès à un paramètre 356 local, en dehors de son sous-programme est impossible, de sorte que 357 deux sous-programmes puissent utiliser le même nom de paramètre sans 358 craindre qu'un des deux n'écrase la valeur de l'autre. 359 360 '#<_un paramètre global>' est un paramètre nommé global. Ils sont 361 accessibles depuis des 362 sous-programmes appelés et peuvent placer des valeurs dans tous les 363 sous-programmes accessibles à l'appelant. En ce qui concerne la portée, 364 ils agissent comme des paramètres numérotés. Ils ne sont pas 365 enregistrés dans des fichiers. 366 367 Exemples: 368 369 - Déclaration d'une variable nommée globale 370 ---- 371 #<_troisdents_dia> = 10.00 372 ---- 373 374 - Référence à la variable globale précédemment déclarée 375 ---- 376 #<_troisdents_rayon> = [#<_troisdents_dia>/2.0] 377 ---- 378 379 - Mélange de paramètres nommés et de valeurs littérales 380 ---- 381 o100 call [0.0] [0.0] [#<_interieur_decoupe>-#<_troisdents_dia>][#<_Zprofondeur>] [#<_vitesse>] 382 ---- 383 384 [[sec:Predefined-Named-Parameters]] 385 == Paramètres nommés prédéfinis 386 (((Paramètres nommés prédéfinis))) 387 388 Les paramètres globaux suivants sont disponibles en lecture seule, pour accéder 389 aux états internes de l'interpréteur et de la machine. Ils peuvent être utilisés 390 dans les expressions quelconques, par exemple pour contrôler le flux d'un 391 programme avec les instructions 'if-then-else'. 392 393 394 * '#<_vmajor>' - Version majeure de LinuxCNC. Si la version courante est 2.5.2, 395 2.5 est retourné. 396 397 * '#<_vminor>' - Version mineure du LinuxCNC. Si la version courante est 2.6.2, 398 0.2 est retourné. 399 400 * '#<_line>' - Numéro de séquence. Si un fichier G-code est en cours, le numéro 401 de la ligne courante est retourné. 402 403 * '#<_motion_mode>' - Retourne le mode mouvement courant de l'interpréteur: 404 405 [width="20%",options="header"] 406 |======================================== 407 |Mode mouvement | Valeur retournée 408 |G1| 10 409 |G2| 20 410 |G3| 30 411 |G33| 330 412 |G38.2| 382 413 |G38.3| 383 414 |G38.4| 384 415 |G38.5| 385 416 |G5.2| 52 417 |G73| 730 418 |G76| 760 419 |G80| 800 420 |G81| 810 421 |G82| 820 422 |G83| 830 423 |G84| 840 424 |G85| 850 425 |G86| 860 426 |G87| 870 427 |G88| 880 428 |G89| 890 429 |======================================== 430 * '#<_plane>' - Retourne une valeur désignant le plan courant: 431 [width="20%",options="header"] 432 |======================================== 433 |Plan | Valeur retournée 434 |G17| 170 435 |G18| 180 436 |G19| 190 437 |G17.1| 171 438 |G18.1| 181 439 |G19.1| 191 440 |======================================== 441 442 * '#<_ccomp>' - Statut de la compensation d'outil. Retourne une valeur: 443 [width="20%",options="header"] 444 |======================================== 445 |Mode | Valeur retournée 446 |G40 | 400 447 |G41 | 410 448 |G41.1| 411 449 |G41 | 410 450 |G42 | 420 451 |G42.1 | 421 452 |======================================== 453 454 * '#<_metric>' - Retourne 1 si G21 est 'on', sinon 0. 455 456 * '#<_imperial>' - Retourne 1 si G20 est 'on', sinon 0. 457 458 * '#<_absolute>' - Retourne 1 si G90 est 'on', sinon 0. 459 460 * '#<_incremental>' - Retourne 1 si G91 est 'on', sinon 0. 461 462 * '#<_inverse_time>' - Retourne 1 si le mode inverse du temps (G93) est 'on', 463 sinon 0. 464 465 * '#<_units_per_minute>' - Retourne 1 si le mode unités par minute (G94) est 'on', 466 sinon 0. 467 468 * '#<_units_per_rev>' - Retourne 1 si le mode Unités par tour (G95) est 'on', 469 sinon 0. 470 471 * '#<_coord_system>' - Retourne l'index du système de coordonnées courant (G54 à G59.3). 472 [width="20%",options="header"] 473 |======================================== 474 |Mode | Valeur retournée 475 |G54| 0 476 |G55| 1 477 |G56| 2 478 |G57| 3 479 |G58| 4 480 |G59| 5 481 |G59.1|6 482 |G59.2|7 483 |G59.3|8 484 |======================================== 485 486 * '#<_tool_offset>' - Retourne 1 si l'offset d'outil (G43) est 'on', sinon 0. 487 488 * '#<_retract_r_plane>' - Retourne 1 si G98 est actif, sinon 0. 489 490 * '#<_retract_old_z>' - Retourne 1 si G99 est 'on', sinon 0. 491 492 [[sec:Parametres-Systeme]] 493 == Paramètres système 494 (((Paramètres système))) 495 496 * `#<_spindle_rpm_mode>` - Retourne 1 si la broche est en mode tr/mn (G97), 497 sinon 0. 498 499 * `#<_spindle_css_mode>` - Retourne 1 si la broche est en mode vitesse de coupe 500 constante (G96), sinon 0. 501 502 * `#<_ijk_absolute_mode>` - Retourne 1 si le mode de déplacement en arc est 503 absolu (G90.1), sinon 0. 504 505 * `#<_lathe_diameter_mode>` - Retourne 1 pour un tour configuré en mode diamètre 506 (G7), sinon 0. 507 508 * `#<_lathe_radius_mode>` - Retourne 1 pour un tour configuré en mode rayon (G8) 509 , sinon 0. 510 511 * `#<_spindle_on>` - Retourne 1 si la broche tourne (M3 ou M4 en cours), sinon 0. 512 513 * `#<_spindle_cw>` - Retourne 1 si la broche est dans le sens horaire (M3) 514 sinon 0. 515 516 * `#<_mist>` - Retourne 1 si l'arrosage par gouttelettes est activé (M7). 517 518 * `#<_flood>` - Retourne 1 si l'arrosage fluide est activé (M8). 519 520 * `#<_speed_override>` - Retourne 1 si un correcteur de vitesse d'avance travail 521 est activé (M48 ou M50 P1), sinon 0. 522 523 * `#<_feed_override>` - Retourne 1 si un correcteur de vitesse broche est activé 524 (M48 ou M51 P1), sinon 0. 525 526 * `#<_adaptive_feed>` - Retourne 1 si un correcteur de vitesse adaptative est 527 activé (M52 ou M52 P1), sinon 0. 528 529 * `#<_feed_hold>` - Retourne 1 si le contrôle de coupure vitesse est activé 530 (M53 P1), sinon 0. 531 532 * `#<_feed>` - Retourne la valeur courante d'avance travail (F). 533 534 * `#<_rpm>` - Retourne la valeur courante de vitesse broche (S). 535 536 * `#<_x>` - Retourne la coordonnée machine courante en X. Identique à #5420. 537 538 * `#<_y>` - Retourne la coordonnée machine courante en Y. Identique à #5421. 539 540 * `#<_z>` - Retourne la coordonnée machine courante en Z. Identique à #5422. 541 542 * `#<_a>` - Retourne la coordonnée machine courante en A. Identique à #5423. 543 544 * `#<_b>` - Retourne la coordonnée machine courante en B. Identique à #5424. 545 546 * `#<_c>` - Retourne la coordonnée machine courante en C. Identique à #5425. 547 548 * `#<_u>` - Retourne la coordonnée machine courante en U. Identique à #5426. 549 550 * `#<_v>` - Retourne la coordonnée machine courante en V. Identique à #5427. 551 552 * `#<_w>` -Retourne la coordonnée machine courante en W. Identique à #5428. 553 554 * `#<_current_tool>` - Retourne le N° de l'outil courant monté dans la broche. 555 Identique à #5400. 556 557 * `#<_current_pocket>` - Retourne le N° de poche de l'outil courant. 558 559 * `#<_selected_tool>` - Retourne le N° de l'outil sélectionné par le mot T. 560 Par défaut -1. 561 562 * `#<_selected_pocket>` - Retourne le N° de poche sélectionné par le mot T. 563 Par défaut -1 (pas de poche sélectionnée). 564 565 * `#<_value>` - [[param:_value]] Retourne la valeur du dernier O-code `return` 566 ou `endsub`. Valeur 0 par défaut si pas d'expression après `return` ou `endsub`. 567 Initialisé à 0 au démarrage du programme. 568 569 * `#<_value_returned>` - 1.0 si le dernier O-code `return` ou `endsub` a 570 retourné une valeur, 0 autrement. Effacé par le prochain appel à un O-code. 571 572 * `#<_task>` - 1.0 si l'instance en cours d'exécution par l'interpréteur fait 573 partie d'une tâche de fraisage, 0.0 autrement. Il est parfois nécessaire de 574 traiter ce cas particulier pour conserver un chemin d'outil propre, par exemple 575 quand on teste le succès d'une mesure au palpeur (G38.x), en examinant #5070, 576 ce qui ratait toujours dans le chemin d'outil de l'interpréteur (ex: Axis). 577 578 * `#<_call_level>` - current nesting level of O-word procedures. Pour débogage. 579 580 * `#<_remap_level>` - current level of the remap stack. Each remap in a block adds one 581 to the remap level. Pour débogage. 582 583 584 [[sec:Expressions]] 585 == Expressions 586 (((Expressions))) 587 588 Une expression est un groupe de caractères commençant avec le crochet 589 gauche '[' et se terminant avec le crocher droit ']' . Entre les 590 crochets, on trouve des nombres, des valeurs de paramètre, 591 des opérations mathématiques et d'autres expressions. Une expression 592 est évaluée pour produire un nombre. Les expressions sur une ligne sont 593 évaluées quand la ligne est lue et avant que quoi que ce soit ne soit 594 éxécuté sur cette ligne. 595 Un exemple d'expression: '[1 + acos[0] - [#3 ** [4.0/2]]]'. 596 597 [[sec:Operateurs-Binaires]] 598 == Opérateurs binaires 599 (((Opérateurs binaires))) 600 601 Les opérateurs binaires ne se rencontrent que dans les expressions. Il 602 y a quatre opérateurs mathématiques de base: addition _+_, 603 soustraction _-_, multiplication _*_ et division _/_. Il y a 604 trois opérateurs logiques: le 'ou (OR)', le 'ou exclusif (XOR)' et 605 le 'et logique (AND)'. Le huitième opérateur est le 'modulo (MOD)'. Le neuvième 606 opérateur est l'élévation à la puissance _(**)_ qui élève le nombre 607 situé à sa gauche à la puissance du nombre situé à sa droite. 608 Les opérateurs de relation sont: égalité _(EQ)_, non égalité _(NE)_, strictement 609 supérieur _(GT)_, supérieur ou égal _(GE)_, 610 strictement inférieur _(LT)_ et inférieur ou égal _(LE)_. 611 612 Les opérations binaires sont divisées en plusieurs groupes selon leur 613 précédence. Si dans une opération se trouvent différents groupes de précédence, 614 par exemple dans l'expression '[2.0 / 3 * 1.5 - 5.5 / 11.0]', les opérations du 615 groupe supérieur seront effectuées avant celles 616 des groupes inférieurs. Si une expression contient plusieurs opérations 617 du même groupe (comme les premiers '/' et '*' dans l'exemple), 618 l'opération de gauche est effectuée en premier. 619 Notre exemple est équivalent à: 620 '[\[[2.0/3]*1.5]-[5.5/11.0]]', qui est équivalent à '[1.0-0.5]' , 621 le résultat est: '0.5' . 622 623 Les opérations logiques et le modulo sont exécutés sur des nombres 624 réels et non pas seulement sur des entiers. Le zéro est équivalent à un 625 état logique faux (FALSE), tout nombre différent de zéro est équivalent 626 à un état logique vrai (TRUE). 627 628 [[sec:Precedence-des-operateurs]] 629 .Précédence des opérateurs 630 (((Précédence des opérateurs))) 631 632 [width="90%", options="header"] 633 |======================================== 634 |Opérateurs | Précédence 635 |** | 'haute' 636 |* / MOD | 637 |+ - | 638 |EQ NE GT GE LT LE | 639 |AND OR XOR | 'basse' 640 |======================================== 641 642 [[sec:Fonctions]] 643 == Fonctions[[sec:Operations-unaires]] 644 (((Fonctions))) 645 (((Opérations unaires))) 646 647 648 Une fonction commence par son nom, ex: 'ATAN' suivi par une 649 expression divisée par une autre expression (par exemple 'ATAN[2]/[1+3]') ou 650 tout autre nom de fonction suivi par une expression (par exemple 'SIN[90]'). 651 Les fonctions disponibles sont visibles le tableau ci-dessous. Les arguments 652 pour les opérations unaires sur des angles ( 'COS', 'SIN' et 'TAN' ) sont en 653 degrés. Les valeurs retournées par les opérations sur les angles 654 ( 'ACOS', 'ASIN' et 'ATAN' ) sont également en degrés. 655 656 La fonction 'FIX' arrondi un nombre vers la gauche, (moins positif ou plus 657 négatif) par exemple, 'FIX[2.8]=2' et 'FIX[-2.8]=-3'. 658 La fonction 'FUP' à l'inverse, arrondi un nombre vers la droite (plus positif 659 ou moins négatif) par exemple, 'FUP[2.8]=3' et 'FUP[-2.8]=-2'. 660 661 La fonction 'EXISTS' vérifie l'existence d'un simple paramètre nommé. Il reçoit 662 le paramètre à vérifier en argument, il retourne 1 si celui-ci existe et 0 sinon. 663 C'est une erreur si un paramètre numéroté ou une expression est utilisé. 664 665 666 .Fonctions 667 668 [width="90%", options="header"] 669 |======================================== 670 |Nom de fonction | Fonction 671 |ATAN[Y]/[X] | Tangente quatre quadrants 672 |ABS[arg] | Valeur absolue 673 |ACOS[arg] | Arc cosinus 674 |ASIN[arg] | Arc sinus 675 |COS[arg] | Cosinus 676 |EXP[arg] | Exposant 677 |FIX[arg] | Arrondi à l'entier immédiatement inférieur 678 |FUP[arg] | Arrondi à l'entier immédiatement supérieur 679 |ROUND[arg] | Arrondi à l'entier le plus proche 680 |LN[arg] | Logarithme Néperien 681 |SIN[arg] | Sinus 682 |SQRT[arg] | Racine carrée 683 |TAN[arg] | Tangente 684 |EXISTS[arg] | Vérifie l'existence d'un paramètre nommé 685 |======================================== 686 687 == Répétitions d'items 688 689 Une ligne peut contenir autant de mots G que voulu, mais un seul du même 690 <<sec:Groupes-modaux, groupe modal>>. 691 692 Une ligne peut avoir de zéro à quatre mots M. Mais pas deux mots M du 693 même groupe modal. 694 695 Pour toutes les autres lettres légales, un seul mot commençant par 696 cette lettre peut se trouver sur la même ligne. 697 698 Si plusieurs valeurs de paramètre se répètent sur la même ligne, par 699 exemple: '#3=15 #3=6', seule la dernière valeur prendra effet. Il 700 est absurde, mais pas 701 illégal, de fixer le même paramètre deux fois sur la même ligne. 702 703 Si plus d'un commentaire apparaît sur la même ligne, seul le dernier 704 sera utilisé, chacun des autres sera lu et son format vérifié, mais il 705 sera ignoré. Placer plusieurs commentaires sur la même ligne est très 706 rare. 707 708 == Ordre des items 709 710 Les trois types d'item dont la commande peut varier sur une ligne 711 (comme indiqué au début de cette section) sont les mots, les paramètres 712 et les commentaires. Imaginez que ces trois types d'éléments sont 713 divisés en trois groupes selon leur type. 714 715 Dans le premier groupe les mots, peuvent être arrangés dans n'importe 716 quel ordre sans changer la signification de la ligne. 717 718 Dans le second groupe les valeurs de paramètre, quelque soit leur 719 arrangement, il n'y aura pas de changement dans la signification de la 720 ligne sauf si le même paramètre est présent plusieurs fois. Dans ce 721 cas, seule la valeur du dernier paramètre prendra effet. Par exemple, 722 quand la ligne '#3=15 #3=6' aura été interprétée, la valeur du 723 paramètre 3 vaudra 6. Si l'ordre 724 est inversé, '#3=6 #3=15' après interprétation, la valeur du 725 paramètre 3 vaudra 15. 726 727 Enfin dans le troisième groupe les commentaires, si plusieurs 728 commentaires sont présents sur une ligne, seul le dernier commentaire 729 sera utilisé. 730 731 Si chaque groupe est laissé, ou réordonné, dans l'ordre recommandé, la 732 signification de la ligne ne changera pas, alors les trois groupes 733 peuvent être entrecroisés n'importe comment sans changer la 734 signification de la ligne. Par exemple, la ligne 'g40 g1 #3=15 (foo) 735 #4=-7.0' à cinq items est signifiera exactement la même chose dans 736 les 120 737 ordres d'arrangement possibles des cinq items comme '#4=-7.0 g1 #3=15 738 g40 (foo)'. 739 740 == Commandes et modes machine 741 742 En G-code, de nombreuses commandes produisent, d'un mode à un 743 autre, quelque chose de différent au niveau de la machine, le mode 744 reste actif jusqu'à ce qu'une autre commande ne le révoque, 745 implicitement ou explicitement. Ces commandes sont appelées 'modales'. 746 Par exemple, si l'arrosage est mis en marche, il y reste jusqu'à ce 747 qu'il soit explicitement arrêté. Les G-codes pour les mouvements sont 748 également modaux. Si, par exemple, une commande G1 (déplacement 749 linéaire) se trouve sur une ligne, elle peut être utilisée sur la ligne 750 suivante avec seulement un mot d'axe, tant qu'une commande explicite 751 est donnée sur la ligne suivante en utilisant des axes ou un arrêt de 752 mouvement. 753 754 Les codes 'non modaux' n'ont d'effet que sur la ligne ou ils se 755 présentent. Par exemple, G4 (tempo) est non modale. 756 757 [[sec:Coordonnees-polaires]] 758 == Coordonnées polaires 759 (((coordonnées polaires))) 760 761 Des coordonnées polaires peuvent être utilisées pour spécifier 762 les coordonnées 'XY' d'un mouvement. 763 Le '@n' est la distance et le '^n' est l'angle. L'avantage est important, par 764 exemple: Pour faire très simplement un cercle de trous tangents: 765 766 - Passer un point situé au centre du cercle 767 - Régler la compensation de longueur d'outil 768 - Déplacer l'outil vers le premier trou 769 - Enfin, lancer le cycle de perçage. 770 771 Les coordonnées polaires sont toujours données à partir de la position 'X0, Y0'. 772 Pour décaler les coordonnées polaires machine utilisez le décalage pièce 773 ou sélectionnez un système de coordonnées. 774 775 En mode absolu, la distance et l'angle sont donnés à partir de la position 'X0, Y0' 776 et l'angle commence à '0' sur l'axe X positif et augmente dans la direction 777 trigonométrique (anti-horaire) autour de l'axe Z. Le code '+G1 @1 ^90+' est la 778 même que '+G1 Y1+'. 779 780 En mode relatif, la distance et l'angle sont également donnés à partir de la 781 position 'XY zéro', mais ils sont cumulatifs. 782 Ce fonctionnement en mode incrémental peut être déroutant au début. 783 784 Par exemple: si vous avez le programme suivant, vous vous attendez à obtenir 785 une trajectoire carré. 786 ---- 787 F100 G1 @.5 ^90 788 G91 @.5 ^90 789 @.5 ^90 790 @.5 ^90 791 @.5 ^90 792 G90 G0 X0 Y0 M2 793 ---- 794 795 Vous pouvez voir sur la figure suivante que la sortie n'est pas 796 celle à laquelle vous vous attendiez, parce-que avons ajouté 797 0.5 à la distance de la position XY zéro à chaque début de ligne. 798 799 .Spirale polaire[[fig:Spirale-polaire]] 800 801 image::images/polar01.png[alt="Spirale polaire"] 802 803 Le code suivant va produire notre modèle carré. 804 ---- 805 F100 G1 @.5 ^90 806 G91 ^90 807 ^90 808 ^90 809 ^90 810 G90 G0 X0 Y0 M2 811 ---- 812 813 Comme vous pouvez le voir, en ajoutant seulement l'angle de 90 degrés à 814 chaque ligne. La distance du point final est la même pour chaque ligne. 815 816 .Carré polaire[[fig:Carre-polaire]] 817 818 image::images/polar02.png[alt="Carré polaire"] 819 820 C'est une erreur si: 821 822 - Un mouvement incrémental est lancé à l'origine. 823 - Un mélange de mots polaires et de X ou Y est utilisé. 824 825 826 [[sec:Groupes-modaux]] 827 == Groupes modaux 828 (((Groupes modaux))) 829 830 Les commandes modales sont arrangées par lots appelés 'groupes 831 modaux', à tout moment, un seul membre d'un groupe modal peut être 832 actif. En général, un groupe modal contient des commandes pour 833 lesquelles il est logiquement impossible que deux membres soient actifs 834 simultanément, comme les unités en pouces et les unités en millimètres. 835 Un centre d'usinage peut être dans plusieurs modes simultanément, si 836 un seul mode pour chaque groupe est actif. Les groupes modaux sont 837 visibles dans le tableau <<tbl:G-codes-modaux, ci-dessous>>. 838 839 840 [[tbl:G-codes-modaux]] 841 .Groupes modaux des G-codes 842 (((G-codes modaux))) 843 844 [width="100%", cols="4,6", options="header"] 845 |========================================================== 846 |Signification du groupe modal | Mots G 847 |Codes non modaux ('Groupe 0')| G4, G10, G28, G30, G53, G52, G92, G92.1, G92.2, G92.3 848 .2+|Mouvements ('Groupe 1') | G0, G1, G2, G3, G33, G38.x, G73, G80, G81, 849 | G82, G83, G84, G85, G86, G87, G88, G89 850 |Choix du plan de travail ('Groupe 2')| G17, G18, G19, G17.1, G18.1, G19.1 851 |Mode déplacement ('Groupe 3') | G90, G91 852 |Mode déplacement en arc IJK ('Groupe 4') |G90.1, G91.1 853 |Mode de vitesses ('Groupe 5') | G93, G94, G95 854 |Unités machine ('Groupe 6') | G20, G21 855 |Compensation de rayon d'outil ('Groupe 7')| G40, G41, G42, G41.1, G42.1 856 |Compensation de longueur d'outil ('Groupe 8')| G43, G43.1, G49 857 |Plan de retrait cycle de perçage ('Groupe 10')| G98, G99 858 |Systèmes de coordonnées ('Groupe 12')| G54, G55, G56, G57, G58, G59, G59.1, G59.2, G59.3 859 |Mode contrôle de trajectoire ('Groupe 13') |G61, G61.1, G64 860 |Mode contrôle vitesse broche ('Groupe 14') | G96, G97 861 |Mode diamètre/rayon sur les tours ('Groupe 15') | G7, G8 862 |========================================================== 863 864 [[tbl:M-codes-modaux]] 865 .Groupes modaux des M-codes 866 (((M-codes modaux))) 867 868 [width="100%", cols="4,6", options="header"] 869 |========================================================== 870 |Signification du groupe modal | Mots M 871 |Types de fin de programme ('Groupe 4') | M0, M1, M2, M30, M60 872 |On/Off I/O ('Groupe 5') | M6 Tn 873 |Appel d'outil ('Groupe 6') | M6 Tn 874 |Commande de broche ('Groupe 7') | M3, M4, M5, M19 875 |Arrosages ('Groupe 8') | (M7, M8, peuvent être actifs simultanément), M9 876 |Boutons de correction de vitesse ('Groupe 9')| M48, M49, M50, M51 877 |Définis par l'utilisateur ('Groupe 10') | M100 à M199 878 |========================================================== 879 880 Pour plusieurs groupes modaux, quand la machine est prête à accepter 881 des commandes, un membre du groupe doit être en vigueur. Il y a des 882 paramètres par défaut pour ces groupes modaux. Lorsque la machine est 883 mise en marche ou ré-initialisées, les valeurs par défaut sont 884 automatiquement actives. 885 886 Groupe 1, le premier groupe du tableau, est un groupe de G-codes pour 887 les mouvements. À tout moment, un seul d'entre eux est actif. Il est 888 appelé le mode de mouvement courant. 889 890 C'est une erreur que de mettre un G-code du groupe 1 et un G-code du 891 groupe 0 sur la même ligne si les deux utilisent les mêmes axes. Si un 892 mot d'axe utilisant un G-code du groupe 1 est implicitement actif sur 893 la ligne (en ayant été activé sur une ancienne ligne) et qu'un G-code 894 du groupe 0 utilisant des mots d'axes apparaît sur la même ligne, 895 l'activité du G-code du groupe 1 est révoquée pour le reste de la 896 ligne. Les mots d'axes utilisant des G-codes du groupe 0 sont G10, G28, 897 G30, G52 et G92. 898 899 C'est une erreur d'inclure des mots sans rapport sur une ligne avec le 900 contrôle de flux 'O'. 901 902 [[sec:Commentaires]] 903 == Commentaires 904 (((Commentaires))) 905 906 Des commentaires peuvent être ajoutés aux lignes de G-code pour clarifier 907 l'intention du programmeur. Les commentaires peuvent être placés sur une ligne 908 en les encadrant par des parenthèses. Ils peuvent aussi occuper tout le 909 reste de la ligne à partir d'un point virgule. Le point virgule 910 n'est pas traité comme un début de commentaire si il se trouve entre deux 911 parenthèses. 912 913 Voici un exemple de programme commenté: 914 ---- 915 G0 (Rapide à démarrer.) X1 Y1 916 G0 X1 Y1 (Rapide à démarrer; mais n'oubliez pas l'arrosage.) 917 M2 ; Fin du programme. 918 ---- 919 920 Les commentaires peuvent se trouver entre des mots, mais pas entre des mots et 921 leur paramètre correspondant. Ainsi, cette ligne est correcte: 922 ---- 923 S100(vitesse broche)F200(vitesse d'avance) 924 ---- 925 926 mais celle-ci est incorrecte: 927 ---- 928 S(speed)100F(feed)200 929 ---- 930 931 Les commentaires sont seulement informatifs, ils n'ont aucune 932 influence sur la machine. 933 934 Il y a plusieurs commentaires 'actif' qui ressemblent à un commentaire mais qui 935 produit certaines actions, comme '(debug,...)' ou '(print,...)', expliqués plus 936 loin. Si plusieurs commentaires se trouvent sur la même ligne, seul le dernier 937 sera interprété selon les règles. Par conséquent, un commentaire normal suivant 938 un commentaire actif aura pour effet de désactiver le commentaire actif. Par 939 exemple, '(foo) (debug,#1)' affichera la valeur du paramètre '#1', mais 940 '(debug,#1) (foo)' ne l'affichera pas. 941 942 Un commentaire commençant par un point virgule est par définition le dernier 943 commentaire sur cette ligne et sera toujours interprété selon la syntaxe des 944 commentaires actifs. 945 946 [[sec:Messages]] 947 == Messages 948 (((Messages))) 949 950 * '(MSG,)' - Un commentaire contient un message si 'MSG' apparaît après la 951 parenthèse ouvrante et avant tout autre caractère. Les variantes de 952 'MSG' qui incluent un espace blanc et des minuscules sont permises. 953 Le reste du texte avant la parenthèse fermante est considéré comme 954 un message. Les messages sont affichés sur la visu de l'interface 955 utilisateur. 956 957 .Exemple de message 958 ---- 959 (MSG, Ceci est un message) 960 ---- 961 962 [[sec:Log-des-mesures]] 963 == Enregistrement des mesures 964 (((Enregistrement des mesures))) 965 966 * '(PROBEOPEN filename.txt)' - ouvrira le fichier 'filename.txt' et y 967 enregistrera les 9 coordonnées de XYZABCUVW pour 968 chacune des mesures réussie. 969 * '(PROBECLOSE)'. - fermera le fichier de log palpeur. 970 971 Voir la section <<sec:G38-x-Palpeur, sur la mesure au palpeur>> pour d'autres 972 informations sur le palpage avec G38. 973 974 [[sec:Log-general]] 975 == Log général 976 (((Log général))) 977 978 * '(LOGOPEN,filename.txt)' - Ouvre le fichier de log 'filename.txt'. 979 Si le fichier existe déjà, il sera tronqué. 980 981 * '(LOGAPPEND,filename.txt)' - Ouvre le fichier de log 'filename.txt'. 982 Si le fichier existe déjà, il sera ajoutées. 983 984 * '(LOGCLOSE)' - Si le fichier est ouvert, il sera fermé. 985 986 * '(LOG,message)' - Le 'message' placé derrière la virgule est écrit dans 987 le fichier de log si il est ouvert. Supporte l'extension 988 des paramètres comme décrit plus loin. 989 990 [[sec:Messages-debogage]] 991 == Messages de débogage 992 (((Messages de débogage))) 993 994 * '(DEBUG,commentaire)' sont traités de la même façon que ceux avec 995 '(msg,reste du commentaire)' avec l'ajout de 996 possibilités spéciales pour les paramètres, comme 997 décrit plus loin. 998 999 * '(PRINT,commentaire)' vont directement sur la sortie 'stderr' avec des 1000 possibilités spéciales pour les paramètres, comme 1001 décrit plus loin. 1002 1003 == Paramètres dans les commentaires 1004 1005 Dans les commentaires avec DEBUG, PRINT et LOG, les valeurs des 1006 paramètres dans le message sont étendues. 1007 1008 Par exemple: pour afficher le contenu d'une variable nommée globale sur la 1009 sortie stderr (la fenêtre de la console par défaut), ajouter une ligne au 1010 G-code comme: 1011 1012 .Exemple de paramètres en commentaire 1013 ---- 1014 (print,diamètre fraise 3 dents = #<_troisdents_dia>) 1015 (print,la valeur de la variable 123 est: #123) 1016 ---- 1017 1018 À l'intérieur de ces types de commentaires, les séquences comme '#123' 1019 sont remplacées par la valeur du paramètre 123. Les séquences comme 1020 '#<paramètre nommé>' sont remplacées par la valeur du paramètre nommé. 1021 Rappelez vous que 1022 les espaces dans les noms des paramètres nommés sont supprimés, 1023 '#<parametre nomme>' est équivalent à '#<parametrenomme>'. 1024 1025 == Exigences des fichiers 1026 1027 Un programme G-code doit contenir une ou plusieurs lignes de G-code puis se 1028 terminer par une ligne de<<sec:M2-M30, fin de programme>>. 1029 Tout G-code, placé après cette ligne de fin de programme, sera ignoré. 1030 1031 Si le programme n'utilise pas G-code de fin de programme, une paire de 1032 signes pourcent '%' peut être utilisées. Le premier signe '%' doit dans ce cas se 1033 trouver sur la première ligne du fichier, suivi par une ou plusieurs lignes de 1034 G-code, puis du second signe '%'. Tout G-code placé après le second signe '%' 1035 sera ignoré. 1036 1037 [NOTE] 1038 Les fichiers de G-code doivent être créés avec un éditeur de texte comme Gedit 1039 et non avec un traitement de texte comme Open Office. Les traitements de 1040 texte ajoutent de nombreux caractères de contrôle dans les fichiers, ce qui 1041 les rends inutilisables comme programmes G-code. 1042 1043 == Taille des fichiers 1044 1045 L'interpréteur et le gestionnaire de tâches ont été écrits, de sorte que la 1046 taille des fichiers n'est limité que par la capacité du disque dur. Les 1047 interfaces graphiques TkLinuxCNC et Axis affichent tous les deux le programme G-code 1048 à l'écran pour l'utilisateur, cependant, la RAM devient un facteur limitant. 1049 Dans Axis, parce-que l'aperçu du parcours d'outil est affiché par défaut, le 1050 rafraîchissement de l'écran devient une limite pratique à la taille des fichiers. 1051 Le tracé du parcours d'outil peut être désactivé dans Axis pour accélérer le 1052 chargement des fichiers conséquents. L'aperçu peut être désactivé en 1053 passant un <<sub:Commentaires-speciaux,commentaire spécial>>. 1054 1055 [[sec:Ordre-d-execution]] 1056 == Ordre d'exécution 1057 (((Ordre d'exécution))) 1058 1059 L'ordre d'exécution des éléments d'une ligne est défini, non pas par sa position 1060 dans la ligne mais par la liste suivante: 1061 1062 * Commandes O-code, optionnellement suivies par un commentaire mais aucun autre 1063 mot n'est permis sur la même ligne. 1064 * Commentaire (message inclus). 1065 * Positionnement du mode de vitesses (G93, G94). 1066 * Réglage de la vitesse travail (F). 1067 * Réglage de la vitesse de rotation de la broche (S). 1068 * Sélection de l'outil (T). 1069 * pin I/O de HAL (M62 à M68). 1070 * Appel d'outil (M6). 1071 * Marche/Arrêt broche (M3, M4, M5). 1072 * Enregistrer l'état (M70, M73), restaurer l'état (M72), invalider l'état (M71). 1073 * Marche/Arrêt arrosages (M7, M8, M9). 1074 * Activation/Inhibition des correcteurs de vitesse (M48, M49, M50, M51, M52, M53). 1075 * Commandes définies par l'opérateur (M100 à M199). 1076 * Temporisation (G4). 1077 * Choix du plan de travail (G17, G18, G19). 1078 * Choix des unités de longueur (G20, G21). 1079 * Activation/Désactivation de la compensation de rayon d'outil (G40, G41, G42) 1080 * Activation/Désactivation de la compensation de longueur d'outil (G43, G49) 1081 * Sélection du système de coordonnées (G54, G55, G56, G57, G58, G59, G59.1, G59.2, G59.3). 1082 * Réglage du mode de trajectoire (G61, G61.1, G64) 1083 * Réglage du mode de déplacement (G90, G91). 1084 * Réglage du mode de retrait (G98, G99). 1085 * Prise d'origine (G28, G30) ou établissement du système de 1086 coordonnées (G10) ou encore, réglage des décalages d'axes (G52, 1087 G92, G92.1, G92.2, G94). 1088 * Effectuer un mouvement (G0 à G3, G33, G80 à G89), tel que modifié 1089 (éventuellement) par G53. 1090 * Arrêt (M0, M1, M2, M30, M60). 1091 1092 == G-Code: Bonnes pratiques 1093 (((G-Code bonnes pratiques))) 1094 1095 === Utiliser un nombre de décimales approprié 1096 1097 Utiliser au plus 3 chiffres après la virgule pour l'usinage en 1098 millimètres et au plus 4 chiffres après la virgule pour l'usinage en 1099 pouces. En particulier, les contrôles de tolérance des arcs sont faits 1100 pour .001 et .0001 selon les unités actives. 1101 1102 === Utiliser les espaces de façon cohérente 1103 1104 Le G-code est plus lisible quand au moins un espace apparaît avant les 1105 mots. S'il est permis d'insérer des espaces blancs au milieu des 1106 chiffres, il faut éviter de le faire. 1107 1108 === Préférer le 'format centre' pour les arcs 1109 1110 Les arcs en format centre (qui utilisent 'I- J- K-' au lieu de 'R-' ) 1111 se comportent de façon plus précise que ceux en format rayon, 1112 particulièrement pour des angles proche de 180 et 360 degrés. 1113 1114 === Placer les codes modaux importants au début des programmes 1115 1116 Lorsque l'exécution correcte de votre programme dépend de paramètres 1117 modaux, n'oubliez pas de les mettre au début du programme. Des modes 1118 incorrects peuvent provenir d'un programme précédent ou depuis des 1119 entrées manuelles. 1120 1121 Une bonne mesure préventive consiste à placer la ligne suivante au 1122 début de tous les programmes: 1123 ---- 1124 G17 G21 G40 G49 G54 G80 G90 G94 1125 ---- 1126 1127 (plan XY, mode mm, annulation de la compensation de rayon, et de 1128 longueur, système de coordonnées numéro 1, arrêt des mouvements, 1129 déplacements absolus, mode vitesse/minute) 1130 1131 Peut-être que le code modal le plus important est le réglage des 1132 unités machine. Si les codes G20 ou G21, ne sont pas inclus, selon les 1133 machines l'échelle d'usinage sera différente. D'autres valeurs comme le 1134 plan de retrait des cycles de perçage peuvent être importantes. 1135 1136 === Ne pas mettre trop de choses sur une ligne 1137 1138 Ignorer le contenu de la section <<sec:Ordre-d-execution, ordre d'exécution>> et 1139 ne pas écrire de ligne de code qui laisse la moindre ambiguïté. 1140 1141 === Ne pas régler et utiliser un paramètre sur la même ligne 1142 1143 Ne pas 'utiliser' et 'définir' un paramètre sur la même ligne, même si 1144 la sémantique est bien définie. Mettre à jour une variable, à une 1145 nouvelle valeur, telle que '#1 = [#1 + #2]' est autorisé. 1146 1147 === Ne pas utiliser les numéros de ligne 1148 1149 Les numéros de ligne n'apportent rien. Quand des numéros de ligne sont 1150 rapportés dans les messages d'erreur, ces numéros font référence aux 1151 numéros de lignes à l'intérieur du programme, pas aux valeurs des mots N. 1152 1153 === Lorsque plusieurs systèmes de coordonnées sont déplacés 1154 1155 envisager le mode vitesse inverse du temps. 1156 1157 Parce que la signification d'un mot 'F' en mètres par minute varie selon 1158 les axes à déplacer et parce que la quantité de matière enlevée ne 1159 dépend pas que de la vitesse travail, il peut être plus simple 1160 d'utiliser G93, vitesse inverse du temps, pour atteindre l'enlèvement de 1161 matière souhaité. 1162 1163 == Axes rotatifs et linéaires 1164 1165 La signification du mot 'F-', exprimé en vitesse par minute, étant différente 1166 selon l'axe concerné par la commande de déplacement et parce-que la quantité 1167 de matière enlevée ne dépend pas seulement de la vitesse d'avance, il est 1168 facile d'utiliser le mode inverse du temps 'G93' pour atteindre la quantité de 1169 matériaux à enlever, souhaitée. 1170 1171 == Messages d'erreur courants 1172 1173 * 'G code hors d'étendue' - Un G-code supérieur à G99 a été utilisé. L'étendue 1174 des G-codes dans LinuxCNC est comprise entre 0 et 99. Toutefois, les valeurs 1175 entre 0 et 99 ne sont pas toutes celle d'un G-code valide. 1176 * 'Utilisation d'un G code inconnu' - Un G-code à été utilisé qui n'appartient 1177 pas aux langage G-code de LinuxCNC. 1178 * 'Mot i, j, k sans Gx l'utilisant' - Les mots i, j et k doivent être utilisés 1179 sur la même ligne que leur G-code. 1180 * 'Impossible d'employer des valeurs d'axe sans G code pour les utiliser' - Les 1181 valeurs d'axe ne peuvent pas être utilisées sur une ligne sans qu'un G-code ne 1182 se trouve sur la même ligne ou qu'un G-code modal soit actif. 1183 * 'Le fichier se termine sans signe pourcent ni fin de programme' - Tout fichier 1184 G-code doit se terminer par un M2, un M30 ou être encadré par le signe '%'. 1185 1186 // vim: set syntax=asciidoc: