/ docs / src / gcode / overview_fr.txt
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: