= Vue d'ensemble du langage [[cha:Vue-d-ensemble-du-langage]] Le langage RS274/NGC est basé sur des lignes de code. Chaque ligne (également appelée un “block”) peut inclure des commandes pour faire produire diverses actions au centre d'usinage. Plusieurs lignes de code peuvent être regroupées dans un fichier pour créer un programme. Une ligne de code typique commence par un numéro de ligne optionnel suivi par un ou plusieurs “mots”. Un mot commence par une lettre suivie d'un nombre (ou quelque chose qui permet d'évaluer un nombre). Un mot peut, soit donner une commande, soit fournir un argument à une commande. Par exemple, “`G1 X3`” est une ligne de code valide avec deux mots. “`G1`” est une commande qui signifie “déplaces toi en ligne droite à la vitesse programmée” et “`X3`” fournit la valeur d'argument (la valeur de X doit être 3 à la fin du mouvement). La plupart des commandes RS274/NGC commencent avec G ou M (G pour Général et M pour Miscellaneous (auxiliaire)). Les termes pour ces commandes sont “G codes” et “M codes.” Le langage RS274/NGC(((RS274NGC))) n'a pas d'indicateur de début et de fin de programme. L'interpréteur cependant traite les fichiers. Un programme simple peut être en un seul fichier, mais il peut aussi être partagé sur plusieurs fichiers. Un fichier peut être délimité par le signe pourcent de la manière suivante. La première ligne non vide d'un fichier peut contenir un signe “%” seul, éventuellement encadré d'espaces blancs, ensuite, à la fin du fichier on doit trouver une ligne similaire. Délimiter un fichier avec des % est facultatif si le fichier comporte un `M2` ou un `M30` , mais est requis sinon. Une erreur sera signalée si un fichier a une ligne pourcent au début, mais pas à la fin. Le contenu utile d'un fichier délimité par pourcent s'arrête après la seconde ligne pourcent. Tout le reste est ignoré. Le langage RS274/NGC prévoit les deux commandes (`M2` ou `M30` ) pour finir un programme. Le programme peut se terminer avant la fin du fichier. Les lignes placées après la fin d'un programme ne seront pas exécutées. L'interpréteur ne les lit même pas. == Format d'une ligne Une ligne de code permise par la norme RS274/NGC est construite de la façon suivante, dans l'ordre avec la restriction à un maximum de 256 caractères sur la même ligne. . Un block optionnel contenant le caractère d'effacement de ligne, barre de fraction “/”. . Un numéro de ligne optionnel. . N'importe quel nombre de mots, valeurs de paramètres et commentaires. . Un caractère de fin de ligne (retour chariot ou saut de ligne ou les deux). Toute entrée non explicitement permise est illégale, elle provoquera un message d'erreur de l'interpréteur. Les espaces sont permis ainsi que les tabulations dans une ligne de code dont ils ne changent pas la signification, excepté dans les commentaires. Ceci peut donner d'étranges lignes, mais elles sont autorisées. La ligne “`g0x +0. 12 34y 7`” est équivalente à“`g0 x+0.1234 y7`”, par exemple. Les lignes vides sont permises, elles seront ignorées. La casse des caractères est ignorée, excepté dans les commentaires. Toutes les lettres en dehors des commentaires peuvent être, indifféremment des majuscules ou des minuscules sans changer la signification de la ligne. == Numéro de ligne Un numéro de ligne commence par la lettre N suivie d'un nombre entier non signé compris entre 0 et 99999 écrit avec moins de six caractères (par exemple: 000009 est interdit). Les numéros de ligne peuvent se suivre ou être dans le désordre, bien qu'une pratique normale évite ce genre d'usage. Les numéros de ligne peuvent être sautés, c'est une pratique normale. L'utilisation d'un numéro de ligne n'est pas obligatoire, mais si il est utilisé, il doit être à sa place. == Les mots Un mot est une lettre, autre que N, suivie d'un nombre réel. Les mots peuvent commencer avec l'une ou l'autre des lettres indiquées dans le tableau <>. Le tableau inclus N pour être complet, même si, comme défini précédemment, les numéros de lignes ne sont pas des mots. Plusieurs lettres (I, J, K, L, P, R) peuvent avoir différentes significations dans des contextes différents. Les lettres qui se réfèrent aux noms d'axes ne sont pas valides sur une machine n'ayant pas les axes correspondants. .Les mots et leur signification[[cap:Les-mots-et-leur-significations]] [width="90%", options="header"] |======================================== |Lettre | Signification |A | Axe A de la machine |B | Axe B de la machine |C | Axe C de la machine |D | Valeur de la compensation de rayon d'outil |F | Vitesse d'avance travail |G | Fonction Générale (voir la table 5) |H | Index d'offset de longueur d'outil |I | Décalage en X pour les arcs et dans les cycles préprogrammés G87 |J | Décalage en Y pour les arcs et dans les cycles préprogrammés G87 |K | Décalage en Z pour les arcs et dans les cycles préprogrammés G87 | | Distance de déplacement par tour de broche avec G33 |M | Fonction auxiliaire (voir la table 7) |N | Numéro de ligne |P | Temporisation utilisée dans les cycles préprogrammés et avec G4. | | Mot clé utilisé avec G10. |Q | Incrément Delta en Z dans un cycle préprogrammé G73, G83 |R | Rayon d'arc ou plan de retrait dans un cycle préprogrammé |S | Vitesse de rotation de la broche |T | Numéro d'outil |U | Axe U de la machine |V | Axe V de la machine |W | Axe W de la machine |X | Axe X de la machine |Y | Axe Y de la machine |Z | Axe Z de la machine |======================================== === Nombres [[sub:Nombres]] Les règles suivantes sont employées pour des nombres (explicites). Dans ces règles un chiffre est un caractère simple entre 0 et 9. - Un nombre commence par: (1) un signe plus ou un signe moins optionnel, suivi par (2) de zéro à plusieurs chiffres, peut être suivis par, (3) un point décimal, suivi par (4) de zéro à plusieurs chiffres, il doit au moins y avoir un chiffre. - Il existe deux types de nombres: les entiers et les décimaux. Un entier n'a pas de point décimal; un décimal en a un. - Les nombres peuvent avoir n'importe quel nombre de chiffres, sous réserve de la limitation de longueur d'une ligne. Seulement environ dix-sept chiffres significatifs seront retenus, c'est toutefois suffisant pour toutes les applications connues. - Un nombre non nul sans autre signe que le premier caractère est considéré positif. Les zéros non significatifs, ne sont pas nécessaires. Si un nombre utilisé dans le langage RS274/NGC est proche d'une valeur entière à moins de quatre décimales, il est considéré comme entier, par exemple 0.9999. === Paramètres numérotés [[sub:Parametres-numerotes]] Un paramètre numéroté commence par le caractère `#` suivi par un entier compris entre 1 et 5399. Le paramètre est référencé par cet entier, sa valeur est la valeur stockée dans le paramètre. Une valeur est stockée dans un paramètre avec l'opérateur = par exemple «`#3 = 15`» signifie que la valeur 15 est stockée dans le paramètre numéro 3. Le caractère `#` a une précédence supérieure à celle des autres opérations, ainsi par exemple, «`#1+2`» signifie la valeur trouvée en ajoutant 2 à la valeur contenue dans le paramètre 1 et non la valeur trouvée dans le paramètre 3. Bien sûr, `#[1+2]` signifie la valeur trouvée dans le paramètre 3. Le caractère `#` peut être répété, par exemple `##2` signifie le paramètre dont le numéro est égal à la valeur entière trouvée dans le paramètre 2. === Paramètres nommés [[sub:Parametres-nommes]] Les paramètres nommés fonctionnent comme les paramètres numérotés mais sont plus faciles à lire. Les paramètres nommés sont convertis en minuscules, les espaces et tabulations sont supprimés. Les paramètres nommés doivent être encadrés des signes `<` et `>`. `#` est un paramètre nommé local. Par défaut, un paramètre nommé est local à l'étendue dans laquelle il est assigné. L'accès à un paramètre local, en dehors de son sous-programme est impossible, de sorte que deux sous-programmes puissent utiliser le même nom de paramètre sans craindre qu'un des deux n'écrase la valeur de l'autre. `#<_un paramètre global>` est un paramètre nommé global. Ils sont accessibles depuis des sous-programmes appelés et peuvent placer des valeurs dans tous les sous-programmes accessibles à l'appelant. En ce qui concerne la portée, ils agissent comme des paramètres numérotés. Ils ne sont pas enregistrés dans des fichiers. Exemples: - Déclaration d'une variable nommée globale `#<_troisdents_dia> = 10.00` - Référence à la variable globale précédemment déclarée `#<_troisdents_rayon> = [#<_troisdents_dia>/2.0]` - Mélange de paramètres nommés et de valeurs littérales ` o100 call [0.0] [0.0] [#<_interieur_decoupe>-#<_troisdents_dia>] [#<_Zprofondeur>] [#<_vitesse>]` Notes: Les paramètres globaux _a, _b, _c, ... _z sont réservés pour une utilisation spéciale. Dans le futur, ils pourront fournir l'accès aux derniers Aword, Bword, Cword, ... Zword etc. === System Parameters [[sec:System-Parameters]] Two global read only named parameters are available to check which version is running from G Code. #<_vmajor>:: Major package version. If current version was 2.6.2 would return 2.6. #<_vminor>:: Minor package version. If current version was 2.6.2 would return 0.2. === Expressions [[sub:Expressions]] Une expression est un groupe de caractères commençant avec le crochet gauche `[` et se terminant avec le crocher droit `]` . Entre les crochets, on trouve des nombres, des valeurs de paramètre, des opérations mathématiques et d'autres expressions. Une expression est évaluée pour produire un nombre. Les expressions sur une ligne sont évaluées quand la ligne est lue et avant que quoi que ce soit ne soit éxécuté sur cette ligne. Un exemple d'expression: `[1 + acos[0] - [#3 ** [4.0/2]]]`. === Opérateurs binaires [[sub:Operateurs-binaires]] Les opérateurs binaires ne se rencontrent que dans les expressions. Il y a quatre opérateurs mathématiques de base: addition (`+`), soustraction (`-`), multiplication (`*`) et division (`/`). Il y a trois opérateurs logiques: ou (`OR`), ou exclusif (`XOR`) et logique (`AND`). Le huitième opérateur est le modulo (`MOD`). Le neuvième opérateur est l'élévation à la puissance (`**` ) qui éléve le nombre situé à sa gauche à la puissance du nombre situé à sa droite. Les opérateurs de relation sont: égalité (`EQ`), non égalité (`NE`), strictement supérieur (`GT`), supérieur ou égal (`GE`), strictement inférieur (`LT`) et inférieur ou égal (`LE`). Les opérations binaires sont divisées en plusieurs groupes selon leur précédence. (voir la table <>) Si dans une opération se trouvent différents groupes de précédence (par exemple dans l'expression `[2.0 / 3 * 1.5 - 5.5 / 11.0]` ), les opérations du groupe supérieur seront effectuées avant celles des groupes inférieurs. Si une expression contient plusieurs opérations du même groupe (comme les premiers `/` et `*` dans l'exemple), l'opération de gauche est effectuée en premier. Notre exemple est équivalent à: `[[[2.0 / 3] * 1.5] - [5.5 / 11.0]]` , qui est équivalent à `[1.0 - 0.5]` , le résultat est: `0.5` . Les opérations logiques et le modulo sont exécutés sur des nombres réels et non pas seulement sur des entiers. Le zéro est équivalent à un état logique faux (FALSE), tout nombre différent de zéro est équivalent à un état logique vrai (TRUE). . Précédence des opérateurs[[cap:Precedence-des-operateurs]](((Precedence des operateurs))) [width="90%", options="header"] |======================================== |Opérateurs | Précédence |** | 'haute' |* / MOD | |+ - | |EQ NE GT GE LT LE | |AND OR XOR | 'basse' |======================================== === Fonctions [[sub:Operations-unaires]] Une fonction commence par son nom, ex: “`ATAN` ” suivi par une expression divisée par une autre expression (par exemple “`ATAN[2]/[1+3]`”) ou tout autre nom de fonction suivi par une expression (par exemple “`SIN[90]` ”). Les fonctions disponibles sont visibles dans le tableau <>. Les arguments pour les opérations unaires sur des angles (`COS`, `SIN` et `TAN` ) sont en degrés. Les valeurs retournées par les opérations sur les angles (`ACOS`, `ASIN` et `ATAN`) sont également en degrés. L'opérateur `FIX` arrondi vers la gauche (moins positif ou plus négatif), par exemple: `FIX[2.8] =2` et `FIX[-2.8] = -3` . L'opérateur `FUP` arrondi vers la droite (plus positif ou moins négatif), par exemple: `FUP[2.8] = 3` et `FUP[-2.8] = -2` . .Fonctions[[cap:Fonctions]] [width="90%", options="header"] |======================================== |Nom de fonction | Fonction |ATAN[Y]/[X] | Tangente quatre quadrants |ABS[arg] | Valeur absolue |ACOS[arg] | Arc cosinus |ASIN[arg] | Arc sinus |COS[arg] | Cosinus |EXP[arg] | Exposant |FIX[arg] | Arrondi à l'entier immédiatement inférieur |FUP[arg] | Arrondi à l'entier immédiatement supérieur |ROUND[arg] | Arrondi à l'entier le plus proche |LN[arg] | Logarithme Néperien |SIN[arg] | Sinus |SQRT[arg] | Racine carrée |TAN[arg] | Tangente |======================================== The `FIX` function rounds towards the left (less positive or more negative) on a number line, so that `FIX[2.8] =2` and `FIX[-2.8] = -3`, for example. The `FUP` operation rounds towards the right (more positive or less negative) on a number line; `FUP[2.8] = 3` and `FUP[-2.8] = -2`, for example. The EXISTS function checks for the existence of a single named parameter. It takes only one named parameter and returns 1 if it exists and 0 if it does not exist. It is an error if you use a numbered parameter or an expression. == Répétitions d'items Une ligne peut contenir autant de mots G que voulu, mais seulement deux mots G du même groupe modal peuvent apparaître sur la même ligne. (voir la section <>) Une ligne peut avoir de zéro à quatre mots M. Mais pas deux mots M du même groupe modal. Pour toutes les autres lettres légales, un seul mot commençant par cette lettre peut se trouver sur la même ligne. Si plusieurs valeurs de paramètre se répétent sur la même ligne, par exemple: “`#3=15 #3=6` ”, seule la dernière valeur prendra effet. Il est absurde, mais pas illégal, de fixer le même paramètre deux fois sur la même ligne. Si plus d'un commentaire apparaît sur la même ligne, seul le dernier sera utilisé, chacun des autres sera lu et son format vérifié, mais il sera ignoré. Placer plusieurs commentaires sur la même ligne est très rare. == Ordre des items Les trois types d'item dont la commande peut varier sur une ligne (comme indiqué au début de cette section) sont les mots, les paramètres et les commentaires. Imaginez que ces trois types d'éléments sont divisés en trois groupes selon leur type. Dans le premier groupe les mots, peuvent être arrangés dans n'importe quel ordre sans changer la signification de la ligne. Dans le second groupe les valeurs de paramètre, quelque soit leur arrangement, il n'y aura pas de changement dans la signification de la ligne sauf si le même paramètre est présent plusieurs fois. Dans ce cas, seule la valeur du dernier paramètre prendra effet. Par exemple, quand la ligne “`#3=15 #3=6` ” aura été interprétée, la valeur du paramètre 3 vaudra 6. Si l'ordre est inversé, “`#3=6 #3=15`” après interprétation, la valeur du paramètre 3 vaudra 15. Enfin dans le troisième groupe les commentaires, si plusieurs commentaires sont présents sur une ligne, seul le dernier commentaire sera utilisé. Si chaque groupe est laissé, ou réordonné, dans l'ordre recommandé, la signification de la ligne ne changera pas, alors les trois groupes peuvent être entrecroisés n'importe comment sans changer la signification de la ligne. Par exemple, la ligne “`g40 g1 #3=15 (foo) #4=-7.0` ” à cinq items est signifiera exactement la même chose dans les 120 ordres d'arrangement possibles des cinq items comme “`#4=-7.0 g1 #3=15 g40 (foo)`”. == Commandes et modes machine En RS274/NGC, de nombreuses commandes produisent, d'un mode à un autre, quelque chose de différent au niveau de la machine, le mode reste actif jusqu'à ce qu'une autre commande ne le révoque, implicitement ou explicitement. Ces commandes sont appelées “modales”. Par exemple, si l'arrosage est mis en marche, il y reste jusqu'à ce qu'il soit explicitement arrêté. Les G-codes pour les mouvements sont également modaux. Si, par exemple, une commande G1 (déplacement linéaire) se trouve sur une ligne, elle peut être utilisée sur la ligne suivante avec seulement un mot d'axe, tant qu'une commande explicite est donnée sur la ligne suivante en utilisant des axes ou un arrêt de mouvement. Les codes “non modaux” n'ont d'effet que sur la ligne ou ils se présentent. Par exemple, G4 (tempo) est non modale. == Groupes modaux [[sec:Groupes-modaux]] Les commandes modales sont arrangées par lots appelés “groupes modaux”, à tout moment, un seul membre d'un groupe modal peut être actif. En général, un groupe modal contient des commandes pour lesquelles il est logiquement impossible que deux membres soient actifs simultanément, comme les unités en pouces et les unités en millimètres. Un centre d'usinage peut être dans plusieurs modes simultanément, si seulement un mode pour chaque groupe est actif. Les groupes modaux sont visibles dans le tableau <>. .Groupes modaux[[cap:Groupes-modaux]] [width="90%", options="header"] |================================================ ||Signification du groupe modal | Mots des membres ||Mouvements (“Groupe 1”) .2+^.^ | G0 G1 G2 G3 G33 G38.x G73 G80 G81 || | G82 G83 G84 G85 G86 G87 G88 G89 ||Choix du plan de travail | G17 G18 G19 ||Mode diamètre/rayon sur les tours | G7, G8 ||Mode de déplacements | G90, G91 ||Mode de vitesses | G93, G94 ||Unités machine | G20, G21 ||Correcteurs de rayon d'outil | G40, G41, G42, G41.1, G42.1 ||Correcteurs de longueur d'outil | G43, G43.1, G49 ||Options plan de retrait | G98, G99 ||Systèmes de coordonnées .2+^.^ | G54, G55, G56, G57, G58, || | G59, G59.1, G59.2, G59.3 ||Types d'arrêt de programme | M0, M1, M2, M30, M60 ||Appel d'outil | M6 ||Types de rotation de la broche | M3, M4, M5 ||Arrosages .2+^.^ | M7, M8, M9. Cas spéciaux: M7, M8 || | peuvent être actifs simultanément ||Boutons de correction de vitesse | M48, M49, M50, M51 ||Contrôle de flux | O- ||Codes non modaux (“Groupe 0”) .3+^.^ | G4, G10, G28, G28.1, G30, G30.1, G53 || | G92, G92.1, G92.2, G92.3 || | M100 à M199 |================================================ Pour plusieurs groupes modaux, quand la machine est prête à accepter des commandes, un membre du groupe doit être en vigueur. Il y a des paramètres par défaut pour ces groupes modaux. Lorsque la machine est mise en marche ou ré-initialisées, les valeurs par défaut sont automatiquement actives. Groupe 1, le premier groupe du tableau, est un groupe de G-codes pour les mouvements. À tout moment, un seul d'entre eux est actif. Il est appelé le mode de mouvement courant. C'est une erreur que de mettre un G-code du groupe 1 et un G-code du groupe 0 sur la même ligne si les deux utilisent les mêmes axes. Si un mot d'axe utilisant un G-code du groupe 1 est implicitement actif sur la ligne (en ayant été activé sur une ancienne ligne) et qu'un G-code du groupe 0 utilisant des mots d'axes apparaît sur la même ligne, l'activité du G-code du groupe 1 est révoquée pour le reste de la ligne. Les mots d'axes utilisant des G-codes du groupe 0 sont G10, G28, G30 et G92. C'est une erreur d'inclure des mots sans rapport sur une ligne avec le contrôle de flux `O`. == Commentaires Les commentaires peuvent être ajoutés aux lignes de code G pour aider à nettoyer le l'intention du programmeur. Les commentaires peuvent être intégrés dans une ligne à l'aide entre parenthèses () ou pour le reste d'une ligne en utilisant un point-virgule. L' point-virgule n'est pas considéré comme le début d'un commentaire lorsque joint en parenthèses. G0 (Rapide à démarrer.) X1 Y1 G0 X1 Y1 (Rapide à démarrer; mais n'oubliez pas le liquide de refroidissement.) M2 ; Fin du programme. == File Size The interpreter and task are carefully written so that the only limit on part program size is disk capacity. The TkEMC and Axis interface both load the program text to display it to the user, though, so RAM becomes a limiting factor. In Axis, because the preview plot is drawn by default, the redraw time also becomes a practical limit on program size. The preview can be turned off in Axis to speed up loading large part programs. In Axis sections of the preview can be turned off using special comments. = Ordre d'exécution [[sec:Ordre-d-execution]] L'ordre d'exécution des éléments d'une ligne est essentiel à la sécurité et l'efficacité d'une machine. Les éléments sont exécutés dans l'ordre indiqué ci-dessous, si ils se trouvent sur la même ligne. . Commentaire (message inclu) . Positionnement du mode de vitesses (G93, G94). . Réglage de la vitesse travail (F). . Réglage de la vitesse de rotation de la broche (S). . Sélection de l'outil (T). . Appel d'outil (M6). . Marche/Arrêt broche (M3, M4, M5). . Marche/Arrêt arrosages (M7, M8, M9). . Activation/Inhibition correcteurs de vitesse (M48, M49). . Temporisation (G4). . Choix du plan de travail (G17, G18, G19). . Choix de l'unité de longueur (G20, G21). . Activation/Désactivation de la compensation de rayon d'outil (G40, G41, G42) . Activation/Désactivation de la compensation de longueur d'outil (G43, G49) . Sélection du système de coordonnées (G54, G55, G56, G57, G58, G59, G59.1, G59.2, G59.3). . Réglage du mode de trajectoire (G61, G61.1, G64) . Réglage du mode de déplacement (G90, G91). . Réglage du type de retrait (G98, G99). . Prise d'origine machine (G28, G30) ou établissement du système de coordonnées (G10) ou encore, réglage des décalages d'axes (G92, G92.1, G92.2, G94). . Effectuer les mouvements (G0 à G3, G33, G80 à G89), tels que modifiés (éventuellement) par G53. . Arrêt (M0, M1, M2, M30, M60). = G-Code: Bonnes pratiques == Utiliser un nombre de décimales approprié Utilisez au plus 3 chiffres après la virgule pour l'usinage en millimètres et au plus 4 chiffres après la virgule pour l'usinage en pouces. En particulier, les contrôles de tolérance des arcs sont faits pour .001 et .0001 selon les unités actives. == Utiliser les espaces de façon cohérente Le G-code est plus lisible quand au moins un espace apparaît avant les mots. S'il est permis d' insérer des espaces blancs au milieu des chiffres, il faut éviter de le faire. == Préférer le “format centre” pour les arcs Les arcs en format centre (qui utilisent `I- J- K-` au lieu de `R-` ) se comportent de façon plus précise que ceux en format rayon, particulièrement pour des angles proche de 180 et 360 degrés. == Placer les codes modaux importants au début des programmes Lorsque l'exécution correcte de votre programme dépend de paramètres modaux, n'oubliez pas de les mettre au début du programme. Des modes incorrects peuvent provenir d'un programme précédent ou depuis des entrées manuelles. Une bonne mesure préventive consiste à placer la ligne suivante au début de tous les programmes: G17 G21 G40 G49 G54 G80 G90 G94 (plan XY, mode mm, annulation de la compensation de rayon, et de longueur, sytème de coordonnées numéro 1, arrêt des mouvements, déplacements absolus, mode vitesse/minute) Peut-être que le code modal le plus important est le réglage des unités machine. Si les codes G20 ou G21, ne sont pas inclus, selon les machines l'échelle d'usinage sera différente. D'autres valeurs comme le plan de retrait des cycles préprogrammés peuvent être importantes. == Ne pas mettre trop de choses sur une ligne Ignorer le contenu de la section <> et ne pas écrire de ligne de code qui laisse la moindre ambiguïté. == Ne pas régler et utiliser un paramètre sur la même ligne Ne pas utiliser et de définir un paramètre sur la même ligne, même si le la sémantique est bien définie. Mise à jour une variable à une nouvelle valeur, tels que `#1 = [#1 + #2]` est ok. == Ne pas utiliser les numéros de ligne Les numéros de ligne n'apportent rien. Quand des numéros de ligne sont rapportés dans les messages d'erreur, ces numéros font référence aux numéros de lignes à l'intérieur du programme, pas aux valeurs des mots N. == Lorsque plusieurs systèmes de coordonnées sont déplacés, envisager le mode vitesse inverse du temps Parce que la signification d'un mot F en mètres par minute varie selon les axes à déplacer et parce que la quantité de matière enlevée ne dépend pas que de la vitesse travail, il peut être plus simple d'utiliser G93, vitesse inverse du temps pour atteindre l'enlévement de matière souhaîté. = Fichier d'outils et compensations Voir section <>