Commandes de code G pour imprimante 3D 2018 – Didacticiel

Classé dans : Actualités | 0

G-code est le langage de programmation de votre imprimante 3D. Apprenez rapidement toutes les commandes G-Code à l'aide de notre didacticiel et de notre manuel de référence.

En utilisant le code G, un ordinateur indique à une imprimante quand, où, comment se déplacer et quelle quantité extruder tout au long du processus d'impression.

Si vous ne vous en êtes jamais encore occupé, c'est normal. Les segments tels que Cura et Simplify3D génèrent du code G «automatiquement» à partir de modèles CAO, de sorte que la plupart des utilisateurs ne voient ni ne programment jamais une seule ligne de code. Toutefois, si vous souhaitez développer une compréhension plus approfondie de l'impression 3D, il est essentiel de connaître ce langage de programmation.

Une connaissance des commandes G-code vous donnera des super pouvoirs d'impression 3D. Les personnes qui en sont capables sont capables de mieux dépanner leurs imprimantes, de contrôler tous les aspects du processus d’impression et d’identifier et de prévenir les défaillances d’impression bien avant leur apparition.

Si cela semble intéressant, cet article est pour vous. Notre objectif est de vous familiariser avec les bases. Après avoir lu ce post, vous pourrez:

Lire et comprendre les commandes de code G Écrivez-le et testez-le en ligne Utilisez la fonctionnalité de prévisualisation de Slicers pour résoudre les problèmes d'impression complexes

Commençons!

Que sont les commandes G-code?

G-code signifie «code géométrique». Sa fonction principale est de montrer à une tête de machine comment se déplacer géométriquement en 3 dimensions. Cependant, il peut également charger une machine de faire des choses non géométriques. Par exemple, les commandes de code G peuvent demander à une imprimante 3D d’extruder du matériau à une vitesse d’extrusion spécifiée ou de modifier la température de son lit.

En termes formels, il s’agit d’un langage de programmation à commande numérique. Pour ceux qui savent programmer, c'est un langage de programmation simple. Il est rudimentaire et n'a pas de constructions avancées telles que les variables, les conditions et les boucles.

Pour ceux qui ne connaissent pas les langages de programmation, vous pouvez considérer le code G comme une suite d'instructions séquentielles. Chaque ligne indique à l'imprimante d'effectuer une tâche spécifique. L'imprimante exécute la ligne une par une jusqu'à la fin.

Comment lire les commandes de code G

Alors, à quoi ressemble une ligne de code? Voici un exemple typique:

G1 X-Y 9.2-5.42 Z0.5 F3000.0 E0.0377

Cette ligne particulière indique à l'imprimante de se déplacer en ligne droite en direction des coordonnées de destination X = -9,2, Y = -5,42 et Z = 0,5 à une vitesse d'avance de 3000,0. Il demande également à l’imprimeur d’extruder le matériau à un taux de 0,0377 en cours de déplacement.

Comment avons-nous lu et interprété cela? C'est assez facile. Chaque ligne commence par une commande. Dans ce cas, la commande est G1.

G1 X-Y 9.2-5.42 Z0.5 F3000.0 E0.0377

Cela signifie «se déplacer en ligne droite de manière contrôlée». Vous pouvez rechercher la signification de chaque commande G-Code dans un tableau que nous avons fourni à la fin de l'article. Nous passerons également en revue les commandes les plus importantes du code G dans une section ultérieure.

Les extraits de code qui apparaissent après la commande sont appelés des arguments.

G1 X-Y 9.2-5.42 Z0.5 F3000.0 E0.0377

Chaque argument indique à l’imprimante comment exécuter la commande. Les arguments commencent par une lettre en anglais, puis spécifient une valeur. Par exemple, X-9.2 signifie une coordonnée X de destination de -9.2. F3000.0 signifie un taux d'alimentation (F) de 3000,0. E0.0377 signifie un taux d'extrusion (E) de 0,0377.

Essayez de lire la ligne de code suivante maintenant.

G1 X5 Y5 Z0 F3000.0 E0.02

Si vous l’interprétez comme signifiant «déplacez-vous vers X = 5, Y = 5 et Z = 0 en ligne droite avec une vitesse d’alimentation de 3000,0 tout en extrudant un matériau à une vitesse de 0,02», vous avez déjà appris à lire G- commandes de code!

Les commandes de code G qui commencent par la lettre G sont des commandes géométriques. Ils indiquent à la tête d’imprimante comment se déplacer, mais ce n’est clairement pas suffisant pour contrôler tous les aspects d’une imprimante 3D. Et si vous deviez demander à l'imprimante d'éteindre le moteur ou d'augmenter la température du lit? Pour ces tâches non géométriques, les implémentations G-code définissent également un autre ensemble de commandes commençant par la lettre M. Elles sont appelées à juste titre M Codes. Par exemple, la commande M140 définit la température du lit et la commande M190 indique à l'imprimante d'attendre que la température atteigne la cible.

Chaque lettre anglaise que vous rencontrez dans le code aura une signification spécifique. Par exemple, nous avons appris que G correspond à une commande géométrique, M à une commande non géométrique, X à la coordonnée X, Y à la coordonnée Y, F à la vitesse d'avance, etc. Pour votre référence, voici un tableau avec la signification de chaque lettre.

Code Information Commande Gnnn Standard GCode, telle que déplacer vers un point Mnnn Commande définie par RepRap, telle que activer un ventilateur Tnnn Sélectionner l'outil nnn. Dans RepRap, un outil est généralement associé à une buse, qui peut être alimentée par un ou plusieurs extrudeurs. Snnn Paramètre de commande, tel que le temps en secondes; les températures; tension à envoyer à un moteur Pnnn Paramètre de commande, tel que le temps en millisecondes; proportionnel (Kp) dans l’ajustement PID de la coordonnée AX Xnnn, généralement dans laquelle se déplacer. Cela peut être un nombre entier ou fractionnaire. Ynnn AY coordonne généralement le déplacement. Cela peut être un nombre entier ou fractionnaire. Znnn AZ coordonnées, généralement pour aller à. Cela peut être un nombre entier ou fractionnaire. U, V, W Coordonnées d'axe supplémentaires (RepRapFirmware) Paramètre Innn – décalage X lors du déplacement d'arc; Intégrale (Ki) dans le paramètre Jnnn de réglage PID – Décalage Y dans le déplacement d'arc Paramètre Dnnn – utilisé pour le diamètre; dérivé (Kd) dans le réglage PID Paramètre Hnnn – utilisé pour le numéro de l'élément chauffant dans le réglage PID Avance Fnnn en mm par minute. (Vitesse de déplacement de la tête d'impression) Rnnn Parameter – utilisé pour les températures Qnnn Parameter – non utilisé actuellement Ennn Longueur de l'extrudat. C'est exactement comme X, Y et Z, mais pour la longueur de filament à consommer. Nnnn Numéro de ligne. Utilisé pour demander une nouvelle transmission en cas d’erreurs de communication. * nnn Checksum. Utilisé pour vérifier les erreurs de communication.

(source: RepRapWiki)

Commandes G-code: un exemple simple

Maintenant que vous savez lire une ligne de code, examinons un exemple simple en action. La vidéo suivante montre les commandes de code G au travail dans une machine de découpe (pas une imprimante 3D). La machine à découper coupera un bord circulaire dans une dalle rectangulaire. Les commandes G-code indiquent au cutter comment se déplacer pour obtenir le résultat souhaité.

Ne vous inquiétez pas que la vidéo concerne une machine à couper. Les aspects géométriques des commandes de code G fonctionnent de la même manière pour toutes les machines ayant une tête de machine. Dans le cas de l'imprimante 3D, la buse est la tête. Pour la machine de découpe, la tête est le cutter. C'est la seule différence. Tous les autres aspects géométriques du code restent les mêmes.

Si vous comprenez les mouvements du cutter, vous saurez également comment déplacer une tête d'impression.

Les commandes les plus importantes du code G

Dans la dernière section, nous avons abordé la commande G1, qui signifie «déplacez la buse de manière contrôlée en ligne droite». Ce n'est qu'une des nombreuses commandes G-code. Dans cette section, nous aborderons d’autres commandes importantes fréquemment utilisées.

Commandes G-code

La commande G0 indique à la tête d'impression de se déplacer à la vitesse de déplacement maximale de la position actuelle aux coordonnées spécifiées par la commande. La tête se déplace de manière coordonnée de sorte que les deux axes achèvent le voyage simultanément. La buse n’extrudera aucun matériau lors de l’exécution de cette commande. Cette commande de code G est généralement utilisée pour amener la buse rapidement à certaines coordonnées souhaitées au début de l’impression ou pendant l’impression.

Exemple: G0 X7 Y18

Commandes G-code

La commande G1 indique à la tête d'impression de se déplacer à la vitesse spécifiée de la position actuelle à la coordonnée spécifiée par la commande G-code. La vitesse est spécifiée par le paramètre Avance F. La tête se déplace de manière coordonnée, de sorte que les deux axes achèvent le déplacement simultanément. L’imprimante peut extruder du matériau lors de l’exécution de cette commande de code G à une vitesse d’extrusion spécifiée par le paramètre de vitesse d’extrusion E. La plupart de l’impression 3D a lieu lors de l’exécution de cette commande. Si vous ouvrez le fichier G-code pour un processus d'impression 3D réel, vous verrez beaucoup de commandes G1.

Exemple: G1 X7 Y18 F500 E0.02

Commandes G-code

Ces commandes de code G définissent le plan dans lequel la buse doit se déplacer. En général, G17 est la valeur par défaut pour la plupart des machines et indique le plan XY. G18 désigne le plan ZX et G19 le plan YZ.

Commandes G-code

Ces commandes de code G définissent les unités. G20 désigne les pouces alors que G21 désigne les millimètres. Cela fait une grande différence parce que

G20 G0 X7 Y18

signifie "aller rapidement à X = 7 pouces et Y = 18 pouces" tandis que

G21 G0 X7 Y18

signifie “aller rapidement jusqu'à X = 7 mm et Y = 18 mm”.

Commandes G-code

Une commande G28 indique à la machine de revenir à sa position d'origine. Une position d'origine peut être définie par la commande G28.1 comme suit.

G28.1 X0 Y0 Z0

Commandes G-code

Le mode absolu indique à la machine d'interpréter les coordonnées en tant que coordonnées absolues. Cela signifie une commande de code G

G0 X10

enverra la tête de la machine à la coordonnée X = 10.

Commandes G-code

Le mode relatif est l'opposé du mode absolu. G91 indique à la machine d'interpréter les coordonnées comme des coordonnées relatives. Si la machine est actuellement à X = 10, alors les commandes suivantes du code G

G91 G0 X10

Dire à la machine de déplacer 10 unités dans la direction X à partir de sa position actuelle. A la fin de l'opération, la tête de la machine sera située à X = 20.

Commandes G-code

G2 indique à la machine de se déplacer dans le sens des aiguilles d'une montre à partir de son emplacement actuel. Le point final est spécifié par les coordonnées X et Y. Le centre de rotation est spécifié par le paramètre I, qui désigne le décalage en X de la position actuelle par rapport au centre de rotation. J indique le décalage en Y de la position actuelle par rapport au centre de rotation.

Exemple:

G21 G90 G17 G0 X6 Y18 G2 X18 Y6 I0 J-12

Commandes G-code

Tout comme la commande G2, la commande G3 crée un mouvement circulaire mais dans le sens inverse des aiguilles d'une montre.

Exemple:

G21 G90 G17 G0 X-5 Y25 G3 X-25 Y5 I0 J-20

Commandes G-code

Si vous regardez un fichier de code G du monde réel, vous constaterez qu’en plus des commandes et des arguments de code G, il contient également des éléments écrits en anglais simplifié. Voici un exemple:

G0 X-25 Y5; mouvement rapide vers X = -25 et Y = 5

Le texte anglais sera toujours précédé d'un point-virgule, comme vous pouvez le voir dans la ligne ci-dessus.

Les programmeurs ont souvent besoin d'écrire des explications en anglais simplifié pour que les autres programmeurs puissent comprendre la motivation d'une ligne ou d'une section de code. En fait, oubliez les autres programmeurs! Si vous examinez votre propre code après un an, il est probable que vous ayez oublié pourquoi vous codiez les choses d'une certaine manière et que vous auriez du mal à comprendre à nouveau.

Pour résoudre ce problème, vous pouvez inclure des commentaires de code. Les commentaires sont écrits après l'ajout d'un point-virgule. Vous pouvez écrire n'importe quoi après l'ajout d'un point-virgule, mais le plus souvent, il est utilisé pour expliquer la logique du code d'une manière conviviale. Tout ce qui apparaît après un point-virgule dans une ligne est ignoré par l'imprimante lors de l'exécution des commandes de code G et n'est destiné qu'aux yeux humains.

Voici un autre exemple de ligne comportant un commentaire de code.

G1 X-25 Y5; Je suis un commentaire de code!

Commandes G-code: La structure d'un programme à part entière

Nous sommes maintenant bien placés pour examiner le code utilisé pour l’impression d’un modèle 3D.

La plupart des programmes en code G contiennent trois sections importantes. La première section initialise l'imprimante pour le processus d'impression. La deuxième section demande à l’imprimeur d’imprimer le modèle. La troisième section rétablit la configuration par défaut de l’imprimante une fois l’impression terminée. Examinons ces sections une par une.

1. Phase d'initialisation

Certaines tâches doivent être effectuées avant qu'une impression puisse commencer. Par exemple, nous devons chauffer le lit d'impression, chauffer l'extrudeuse, purger la buse, amener la buse à la position de départ, etc. Ces tâches constituent la première partie de tout programme.

Voici les cinq premières lignes des commandes d'initialisation G-code d'une tâche d'impression 3D réelle. Vous devriez être en mesure de les lire et de les comprendre à ce stade, avec l'aide de la table de référence à la fin.

G90 M82 M106 S0 M140 S100 M190 S100

La première ligne définit les coordonnées en positionnement absolu. La deuxième ligne indique à l'extrudeuse d'interpréter le débit d'extrusion en tant que valeurs absolues. La troisième ligne met le ventilateur en marche, mais définit la vitesse sur 0, ce qui signifie essentiellement que le ventilateur est éteint. La quatrième ligne définit la température du lit à 100 degrés. La cinquième ligne indique à l'imprimante d'attendre que la température du lit atteigne la valeur souhaitée, dans ce cas 100.

Au cours de la phase d’initialisation, l’imprimante n’extrudera aucun matériau, sauf lorsqu’elle purge la buse. C’est un moyen facile de déterminer quand la phase d’initialisation s’arrête et que l’impression commence. Pendant l’impression proprement dite, l’imprimante extrudera le matériau à presque toutes les étapes.

2. Phase d'impression

Une imprimante 3D imprime un modèle couche par couche. Les trancheurs tels que Simplify3D ou Cura divisent généralement un modèle 3D en plusieurs couches horizontales qui s'empilent les unes sur les autres pour créer l'impression finale.

Par conséquent, la phase d'impression consiste en de nombreux mouvements dans le plan XY (impression d'un seul calque), puis en un mouvement dans la direction Z (passage au calque suivant) suivi de nombreux mouvements dans le plan X-Y (impression du calque suivant). .

Voici à quoi ressemblent les commandes G-code.

G1 X108.587 Y111.559 F525; mouvement contrôlé dans le plan XY G1 X108.553 Y111.504 F525; mouvement contrôlé dans le plan XY…… G1 Z0.345 F500; changer de couche G1 X108.551 Y111.489 F525; mouvement contrôlé dans le plan XY G1 X108.532 Y111.472 F525; mouvement contrôlé dans le plan XY

3. Réinitialiser l'imprimante

Enfin, lorsque l’impression est terminée, certaines lignes finales des commandes de code G placent l’imprimante dans un état raisonnable par défaut. Par exemple, la buse est ramenée à l'origine, le chauffage est désactivé (pour le lit comme pour l'extrudeuse) et les moteurs sont désactivés.

G28; ramener la buse à la maison M104 S0; éteindre les appareils de chauffage M140 S0; éteindre le lit M84; désactiver les moteurs

Commandes G-code: entrée et sortie

Jusqu'à présent, nous avons seulement parlé de l'ordinateur qui envoie des commandes de code G à l'imprimante. Il semble donc que la communication est à sens unique. Mais l'impression 3D implique en réalité une communication à double sens entre l'ordinateur et l'imprimante. Voici comment ça fonctionne.

Lorsque vous appuyez sur le bouton d'impression de votre ordinateur, le logiciel d'impression 3D commence à envoyer les commandes de code G à l'imprimante, une ligne à la fois. L’imprimante exécute la ligne et répond à l’ordinateur. Si la réponse n'indique aucune erreur, l'ordinateur envoie ensuite la prochaine ligne de code à exécuter.

La réponse de l'imprimante suit généralement le format suivant:

[] [] [] peut être ok, rs ou !!. Ok signifie qu'aucune erreur n'a été détectée. Cela invite l'ordinateur à envoyer la ligne de code suivante à l'imprimante. Rs signifie "renvoyer l'instruction". Ceci est généralement suivi du numéro de ligne à renvoyer. Deux points d'exclamation (!!) impliquent une erreur matérielle. Dans ce cas, l'appareil s'arrête immédiatement et le travail d'impression est abandonné.

En plus de ces 3 réponses, l’imprimante peut également communiquer à l’ordinateur des paramètres tels que la température, les coordonnées de la buse, etc.

La température est signalée en réponse à une commande M105 G-Code. Le format de la réponse est

T: valeur B: valeur,

où T indique la température de l'extrudeuse et B indique la température du lit. Si la machine ne dispose pas de capteur de température, -273 est renvoyé sous forme de valeur.

Les coordonnées sont rapportées en réponse aux commandes M114 et M117 à code G. Le format de réponse est

C: X: 9,2 Y: 125,4 Z: 3,7 E: 1902,5.

Ici, C signifie «les coordonnées suivent». Ceci est suivi des coordonnées X, Y, Z actuelles et d’autres informations.

Commandes G-code: Outils de visualisation

Maintenant que vous savez comment écrire du code G, c'est à vous d'écrire des commandes et de tester votre compréhension. Vous pouvez utiliser un outil de visualisation en ligne, où vous pouvez écrire des commandes de code G et voir la tête de la machine bouger en fonction de vos instructions. C'est très amusant! Nous vous recommandons d’essayer cet outil de visualisation en ligne pour tester vos compétences.

Les logiciels de découpage comme Simplify3D ou Cura sont également fournis avec une visionneuse G-code. Dans le visualiseur, vous pourrez visualiser le chemin de l'extrudeuse pour les tâches d'impression 3D réelles. Regardez cette vidéo à voir absolument pour une excellente démonstration du visualiseur de code G dans Simplify3D.

Commandes G-code: Prévention des échecs d'impression

La visionneuse de code G peut faire la différence entre une impression réussie et un échec pour des modèles 3D complexes. En général, chaque fois que vous souhaitez imprimer un modèle 3D complexe, il est conseillé d’exécuter le visualiseur et de procéder pas à pas à la simulation d’impression.

Nous devons faire cela parce que le code généré automatiquement n'est souvent pas idéal. Vous constaterez souvent que certaines zones problématiques ne sont pas suffisamment prises en charge, ce qui entraîne un échec de l'impression. Dans ce cas, vous devez modifier le code pour garantir une impression réussie. La plupart du temps, cela peut être fait en ajoutant des structures de support supplémentaires à l'aide de l'interface graphique. Voici une vidéo qui montre comment procéder pour un modèle compliqué de chiot en 3D.

Commandes G-code: Conclusion

En conclusion, nous avons appris comment une imprimante 3D imprime un modèle CAO en suivant un jeu d'instructions écrit en G-code. Nous avons appris à lire les commandes de code G et avons vu quelques exemples réalistes. Nous avons discuté des commandes G-Code les plus courantes et de différentes manières de les visualiser et de les tester. Enfin, nous avons introduit le visualiseur de code G, une fonctionnalité courante de Slicers, qui peut être utilisé pour empêcher les impressions ayant échoué.

Nous espérons que la compréhension des commandes de code G vous aidera à devenir un utilisateur plus averti et plus puissant de votre imprimante 3D. Si vous avez trouvé cet article utile, partagez-le avec d'autres passionnés d'impression 3D et passez le mot. Avez-vous des questions ou des remarques? Faites-nous savoir dans les commentaires ci-dessous!

Annexe 1: Notes de compatibilité

Chaque imprimante 3D est livrée avec un firmware. Il existe de nombreux microprogrammes, et les développeurs de ces microprogrammes ont tendance à implémenter différentes variantes de commandes G-code. Cela conduit à des problèmes de compatibilité majeurs. Les commandes de code G qui fonctionnent pour un ordinateur peuvent ne pas fonctionner pour un autre.

Ce problème est généralement résolu en connectant le Slicer, qui génère le code, à un pilote de post-traitement spécifique à la machine. Le post-processeur détecte le type de code entrant et le convertit en un type spécifique ^ compris par le microprogramme.

Par conséquent, les commandes de code G que vous voyez sur le segment ne correspondent pas nécessairement au code en cours d'exécution sur la machine en raison de ces détails d'implémentation subtils.

Annexe 2: Commandes G-code

Code
Description
Milling (M)
Turning (T)
Corollary info
G00
Rapid positioning
M
T
On 2- or 3-axis moves, G00 (unlike G01) traditionally does not necessarily move in a single straight line between start point and end point. It moves each axis at its max speed until its vector quantity is achieved. Shorter vector usually finishes first (given similar axis speeds). This matters because it may yield a dog-leg or hockey-stick motion, which the programmer needs to consider depending on what obstacles are nearby, to avoid a crash. Some machines offer interpolated rapids as a feature for ease of programming (safe to assume a straight line).
G01
Linear interpolation
M
T
The most common workhorse code for feeding during a cut. The program specs the start and end points, and the control automatically calculates (interpolates) the intermediate points to pass through that will yield a straight line (hence « linear »). The control then calculates the angular velocities at which to turn the axis leadscrews via their servomotors or stepper motors. The computer performs thousands of calculations per second, and the motors react quickly to each input. Thus the actual toolpath of the machining takes place with the given feedrate on a path that is accurately linear to within very small limits.
G02
Circular interpolation, clockwise
M
T
Very similar in concept to G01. Again, the control interpolates intermediate points and commands the servo- or stepper motors to rotate the amount needed for the leadscrew to translate the motion to the correct tool tip positioning. This process repeated thousands of times per minute generates the desired toolpath. In the case of G02, the interpolation generates a circle rather than a line. As with G01, the actual toolpath of the machining takes place with the given feedrate on a path that accurately matches the ideal (in G02’s case, a circle) to within very small limits. In fact, the interpolation is so precise (when all conditions are correct) that milling an interpolated circle can obviate operations such as drilling, and often even fine boring. Addresses for radius or arc center: G02 and G03 take either an R address (for the radius desired on the part) or IJK addresses (for the component vectors that define the vector from the arc start point to the arc center point). Cutter comp: On most controls you cannot start G41 or G42 in G02 or G03 modes. You must already have compensated in an earlier G01 block. Often a short linear lead-in movement will be programmed, merely to allow cutter compensation before the main event, the circle-cutting, begins. Full circles: When the arc start point and the arc end point are identical, a 360° arc, a full circle, will be cut. (Some older controls cannot support this because arcs cannot cross between quadrants of the cartesian system. Instead, four quarter-circle arcs are programmed back-to-back.)
G03
Circular interpolation, counterclockwise
M
T
Same corollary info as for G02.
G04
Dwell
M
T
Takes an address for dwell period (may be X, U, or P). The dwell period is specified by a control parameter, typically set to milliseconds. Some machines can accept either X1.0 (s) or P1000 (ms), which are equivalent. Choosing dwell duration: Often the dwell needs only to last one or two full spindle rotations. This is typically much less than one second. Be aware when choosing a duration value that a long dwell is a waste of cycle time. In some situations it won’t matter, but for high-volume repetitive production (over thousands of cycles), it is worth calculating that perhaps you only need 100 ms, and you can call it 200 to be safe, but 1000 is just a waste (too long).
G05 P10000
High-precision contour control (HPCC)
M

Uses a deep look-ahead buffer and simulation processing to provide better axis movement acceleration and deceleration during contour milling
G05.1 Q1.
AI Advanced Preview Control
M

Uses a deep look-ahead buffer and simulation processing to provide better axis movement acceleration and deceleration during contour milling
G06.1
Non-uniform rational B-spline (NURBS) Machining
M

Activates Non-Uniform Rational B Spline for complex curve and waveform machining (this code is confirmed in Mazatrol 640M ISO Programming)
G07
Imaginary axis designation
M

G09
Exact stop check, non-modal
M
T
The modal version is G61.
G10
Programmable data input
M
T
Modifies the value of work coordinate and tool offsets
G11
Data write cancel
M
T

G12
Full-circle interpolation, clockwise
M

Fixed cycle for ease of programming 360° circular interpolation with blend-radius lead-in and lead-out. Not standard on Fanuc controls.
G13
Full-circle interpolation, counterclockwise
M

Fixed cycle for ease of programming 360° circular interpolation with blend-radius lead-in and lead-out. Not standard on Fanuc controls.
G17
XY plane selection
M

G18
ZX plane selection
M
T
On most CNC lathes (built 1960s to 2000s), ZX is the only available plane, so no G17 to G19 codes are used. This is now changing as the era begins in which live tooling, multitask/multifunction, and mill-turn/turn-mill gradually become the « new normal ». But the simpler, traditional form factor will probably not disappear—it will just move over to make room for the newer configurations. See also V address.
G19
YZ plane selection
M

G20
Programming in inches
M
T
Somewhat uncommon except in USA and (to lesser extent) Canada and UK. However, in the global marketplace, competence with both G20 and G21 always stands some chance of being necessary at any time. The usual minimum increment in G20 is one ten-thousandth of an inch (0.0001″), which is a larger distance than the usual minimum increment in G21 (one thousandth of a millimeter, .001 mm, that is, one micrometre). This physical difference sometimes favors G21 programming.
G21
Programming in millimeters (mm)
M
T
Prevalent worldwide. However, in the global marketplace, competence with both G20 and G21 always stands some chance of being necessary at any time.
G28
Return to home position (machine zero, aka machine reference point)
M
T
Takes X Y Z addresses which define the intermediate point that the tool tip will pass through on its way home to machine zero. They are in terms of part zero (aka program zero), NOT machine zero.
G30
Return to secondary home position (machine zero, aka machine reference point)
M
T
Takes a P address specifying which machine zero point is desired, if the machine has several secondary points (P1 to P4). Takes X Y Z addresses which define the intermediate point that the tool tip will pass through on its way home to machine zero. They are in terms of part zero (aka program zero), NOT machine zero.
G31
Skip function (used for probes and tool length measurement systems)
M

G32
Single-point threading, longhand style (if not using a cycle, e.g., G76)

T
Similar to G01 linear interpolation, except with automatic spindle synchronization for single-point threading.
G33
Constant-pitch threading
M

G33
Single-point threading, longhand style (if not using a cycle, e.g., G76)

T
Some lathe controls assign this mode to G33 rather than G32.
G34
Variable-pitch threading
M

G40
Tool radius compensation off
M
T
Turn off cutter radius compensation (CRC). Cancels G41 or G42.
G41
Tool radius compensation left
M
T
Turn on cutter radius compensation (CRC), left, for climb milling.
Milling: Given righthand-helix cutter and M03 spindle direction, G41 corresponds to climb milling (down milling). Takes an address (D or H) that calls an offset register value for radius.
Turning: Often needs no D or H address on lathes, because whatever tool is active automatically calls its geometry offsets with it. (Each turret station is bound to its geometry offset register.)
G41 and G42 for milling has been partially automated and obviated (although not completely) since CAM programming has become more common. CAM systems allow the user to program as if with a zero-diameter cutter. The fundamental concept of cutter radius compensation is still in play (i.e., that the surface produced will be distance R away from the cutter center), but the programming mindset is different; the human does not choreograph the toolpath with conscious, painstaking attention to G41, G42, and G40, because the CAM software takes care of it. The software has various CRC mode selections, such as computer, control, wear, reverse wear, off, some of which do not use G41/G42 at all (good for roughing, or wide finish tolerances), and others which use it so that the wear offset can still be tweaked at the machine (better for tight finish tolerances).
G42
Tool radius compensation right
M
T
Turn on cutter radius compensation (CRC), right, for conventional milling. Similar corollary info as for G41. Given righthand-helix cutter and M03 spindle direction, G42 corresponds to conventional milling (up milling).
G43
Tool height offset compensation negative
M

Takes an address, usually H, to call the tool length offset register value. The value is negative because it will be added to the gauge line position. G43 is the commonly used version (vs G44).
G44
Tool height offset compensation positive
M

Takes an address, usually H, to call the tool length offset register value. The value is positive because it will be subtracted from the gauge line position. G44 is the seldom-used version (vs G43).
G45
Axis offset single increase
M

G46
Axis offset single decrease
M

G47
Axis offset double increase
M

G48
Axis offset double decrease
M

G49
Tool length offset compensation cancel
M

Cancels G43 or G44.
G50
Define the maximum spindle speed

T
Takes an S address integer which is interpreted as rpm. Without this feature, G96 mode (CSS) would rev the spindle to « wide open throttle » when closely approaching the axis of rotation.
G50
Scaling function cancel
M

G50
Position register (programming of vector from part zero to tool tip)

T
Position register is one of the original methods to relate the part (program) coordinate system to the tool position, which indirectly relates it to the machine coordinate system, the only position the control really « knows ». Not commonly programmed anymore because G54 to G59 (WCSs) are a better, newer method. Called via G50 for turning, G92 for milling. Those G addresses also have alternate meanings (which see). Position register can still be useful for datum shift programming. The « manual absolute » switch, which has very few useful applications in WCS contexts, was more useful in position register contexts, because it allowed the operator to move the tool to a certain distance from the part (for example, by touching off a 2.0000″ gage) and then declare to the control what the distance-to-go shall be (2.0000).
G52
Local coordinate system (LCS)
M

Temporarily shifts program zero to a new location. It is simply « an offset from an offset », that is, an additional offset added onto the WCS offset. This simplifies programming in some cases. The typical example is moving from part to part in a multipart setup. With G54 active, G52 X140.0 Y170.0 shifts program zero 140 mm over in X and 170 mm over in Y. When the part « over there » is done, G52 X0 Y0 returns program zero to normal G54 (by reducing G52 offset to nothing). The same result can also be achieved (1) using multiple WCS origins, G54/G55/G56/G57/G58/G59; (2) on newer controls, G54.1 P1/P2/P3/etc. (all the way up to P48); or (3) using G10 for programmable data input, in which the program can write new offset values to the offset registers. Which method to use depends on shop-specific application.
G53
Machine coordinate system
M
T
Takes absolute coordinates (X,Y,Z,A,B,C) with reference to machine zero rather than program zero. Can be helpful for tool changes. Nonmodal and absolute only. Subsequent blocks are interpreted as « back to G54 » even if it is not explicitly programmed.
G54 to G59
Work coordinate systems (WCSs)
M
T
Have largely replaced position register (G50 and G92). Each tuple of axis offsets relates program zero directly to machine zero. Standard is 6 tuples (G54 to G59), with optional extensibility to 48 more via G54.1 P1 to P48.
G54.1 P1 to P48
Extended work coordinate systems
M
T
Up to 48 more WCSs besides the 6 provided as standard by G54 to G59. Note floating-point extension of G-code data type (formerly all integers). Other examples have also evolved (e.g., G84.2). Modern controls have the hardware to handle it.
G61
Exact stop check, modal
M
T
Can be canceled with G64. The non-modal version is G09.
G62
Automatic corner override
M
T

G64
Default cutting mode (cancel exact stop check mode)
M
T
Cancels G61.
G68
Rotate coordinate system.
M

Rotates coordinate system in the current plane given with G17 G18 or G19. Center of rotation is given with two parameters, which vary with each vendors implementation. Rotate with angle given with argument R. This can be for instance be used to align coordinate system with misaligned part. It can also be used to repeat movement sequences around a center. Not all vendors support coordinate system rotation.
G69
Turn off coordinate system rotation.
M

Cancels G68.
G70
Fixed cycle, multiple repetitive cycle, for finishing (including contours)

T

G71
Fixed cycle, multiple repetitive cycle, for roughing (Z-axis emphasis)

T

G72
Fixed cycle, multiple repetitive cycle, for roughing (X-axis emphasis)

T

G73
Fixed cycle, multiple repetitive cycle, for roughing, with pattern repetition

T

G73
Peck drilling cycle for milling – high-speed (NO full retraction from pecks)
M

Retracts only as far as a clearance increment (system parameter). For when chipbreaking is the main concern, but chip clogging of flutes is not. Compare G83.
G74
Peck drilling cycle for turning

T

G74
Tapping cycle for milling, lefthand thread, M04 spindle direction
M

See notes at G84.
G75
Peck grooving cycle for turning

T

G76
Fine boring cycle for milling
M

Includes OSS and shift (oriented spindle stop and shift tool off centerline for retraction)
G76
Threading cycle for turning, multiple repetitive cycle

T

G80
Cancel canned cycle
M
T
Milling: Cancels all cycles such as G73, G81, G83, etc. Z-axis returns either to Z-initial level or R level, as programmed (G98 or G99, respectively).
Turning: Usually not needed on lathes, because a new group-1 G address (G00 to G03) cancels whatever cycle was active.
G81
Simple drilling cycle
M

No dwell built in
G82
Drilling cycle with dwell
M

Dwells at hole bottom (Z-depth) for the number of milliseconds specified by the P address. Good for when hole bottom finish matters. Good for spot drilling because the divot will be certain to clean up evenly. Consider the « choosing dwell duration » note at G04.
G83
Peck drilling cycle (full retraction from pecks)
M

Returns to R-level after each peck. Good for clearing flutes of chips. Compare G73.
G84
Tapping cycle, righthand thread, M03 spindle direction
M

G74 and G84 are the righthand and lefthand « pair » for old-school tapping with a non-rigid toolholder (« tapping head » style). Compare the rigid tapping « pair », G84.2 and G84.3.
G84.2
Tapping cycle, righthand thread, M03 spindle direction, rigid toolholder
M

See notes at G84. Rigid tapping synchronizes speed and feed according to the desired thread helix. That is, it synchronizes degrees of spindle rotation with microns of axial travel. Therefore, it can use a rigid toolholder to hold the tap. This feature is not available on old machines or newer low-end machines, which must use « tapping head » motion (G74/G84).
G84.3
Tapping cycle, lefthand thread, M04 spindle direction, rigid toolholder
M

See notes at G84 and G84.2.
G85
boring cycle, feed in/feed out
M

– Good cycle for a reamer.
– In some cases good for single-point boring tool, although in other cases the lack of depth of cut on the way back out is bad for surface finish, in which case, G76 (OSS/shift) can be used instead.
– If need dwell at hole bottom, see G89.
G86
boring cycle, feed in/spindle stop/rapid out
M

Boring tool will leave a slight score mark on the way back out. Appropriate cycle for some applications; for others, G76 (OSS/shift) can be used instead.
G87
boring cycle, backboring
M

For backboring. Returns to initial level only (G98); this cycle cannot use G99 because its R level is on the far side of the part, away from the spindle headstock.
G88
boring cycle, feed in/spindle stop/manual operation
M

G89
boring cycle, feed in/dwell/feed out
M

G89 is like G85 but with dwell added at bottom of hole.
G90
Absolute programming
M
T (B)
Positioning defined with reference to part zero.
Milling: Always as above.
Turning: Sometimes as above (Fanuc group type B and similarly designed), but on most lathes (Fanuc group type A and similarly designed), G90/G91 are not used for absolute/incremental modes. Instead, U and W are the incremental addresses and X and Z are the absolute addresses. On these lathes, G90 is instead a fixed cycle address for roughing.
G90
Fixed cycle, simple cycle, for roughing (Z-axis emphasis)

T (A)
When not serving for absolute programming (above)
G91
Incremental programming
M
T (B)
Positioning defined with reference to previous position.
Milling: Always as above.
Turning: Sometimes as above (Fanuc group type B and similarly designed), but on most lathes (Fanuc group type A and similarly designed), G90/G91 are not used for absolute/incremental modes. Instead, U and W are the incremental addresses and X and Z are the absolute addresses. On these lathes, G90 is a fixed cycle address for roughing.
G92
Position register (programming of vector from part zero to tool tip)
M
T (B)
Same corollary info as at G50 position register.
Milling: Always as above.
Turning: Sometimes as above (Fanuc group type B and similarly designed), but on most lathes (Fanuc group type A and similarly designed), position register is G50.
G92
Threading cycle, simple cycle

T (A)

G94
Feedrate per minute
M
T (B)
On group type A lathes, feedrate per minute is G98.
G94
Fixed cycle, simple cycle, for roughing (X-axis emphasis)

T (A)
When not serving for feedrate per minute (above)
G95
Feedrate per revolution
M
T (B)
On group type A lathes, feedrate per revolution is G99.
G96
Constant surface speed (CSS)

T
Varies spindle speed automatically to achieve a constant surface speed. See speeds and feeds. Takes an S address integer, which is interpreted as sfm in G20 mode or as m/min in G21 mode.
G97
Constant spindle speed
M
T
Takes an S address integer, which is interpreted as rev/min (rpm). The default speed mode per system parameter if no mode is programmed.
G98
Return to initial Z level in canned cycle
M

G98
Feedrate per minute (group type A)

T (A)
Feedrate per minute is G94 on group type B.
G99
Return to R level in canned cycle
M

G99
Feedrate per revolution (group type A)

T (A)
Feedrate per revolution is G95 on group type B.

(source: Wikipedia)

Annexe 3: Commandes M-Code

Code Description Fraisage (M) Tournage (T) Info corollaire M00 Arrêt obligatoire M T Non facultatif – la machine s'arrête toujours lorsque M00 est exécuté dans le programme. M01 Arrêt optionnel M T La machine ne s'arrête en M01 que si l'opérateur a appuyé sur le bouton d'arrêt optionnel. M02 Fin du programme M T Fin du programme; l'exécution peut revenir ou non au début du programme (selon le contrôle); peut ou non réinitialiser les valeurs du registre. M02 était le code de fin de programme d'origine, à présent considéré comme obsolète, mais toujours pris en charge pour la compatibilité ascendante. [7] De nombreux contrôles modernes considèrent M02 comme équivalent à M30 [7]. Voir M30 pour plus d'informations sur l'état du contrôle lors de l'exécution de M02 ou M30. M03 Broche en marche (rotation dans le sens des aiguilles d'une montre) M T La vitesse de la broche est déterminée par l'adresse S, en tours par minute (mode G97; réglage par défaut) ou en pieds par minute en surface ou en mètres par minute (mode G96 sous G20 ou G21). La règle de la main droite peut être utilisée pour déterminer quelle direction est dans le sens horaire et quelle direction est dans le sens anti-horaire. Les vis hélicoïdales droites se déplaçant dans le sens de serrage (et les cannelures hélicoïdales droites tournant dans le sens de la coupe) sont définies comme se déplaçant dans le sens M03 et sont étiquetées «dans le sens des aiguilles d'une montre» par convention. La direction M03 est toujours M03 quels que soient le point de vue local et la distinction locale CW / CCW. M04 Broche activée (rotation dans le sens inverse des aiguilles d'une montre) M T Voir le commentaire ci-dessus à l'étape M03. M05 Butée de broche M T M06 Changement automatique d'outil (ATC) M T (parfois) De nombreux tours n'utilisent pas M06 car l'adresse T indexe elle-même la tourelle. La programmation sur une machine-outil particulière nécessite de savoir quelle méthode cette machine utilise. Pour comprendre comment l’adresse T fonctionne et comment elle interagit (ou non) avec M06, il faut étudier les différentes méthodes, telles que la programmation de tourelle de tour, la sélection d’outils fixes ATC, la sélection d’outils de mémoire aléatoire ATC, le concept de «prochain outil en attente». et des outils vides. M07 Liquide de refroidissement activé (brouillard) MT M08 Liquide de refroidissement activé (par inondation) MT M09 Liquide de refroidissement désactivé MT M10 Pince-palette sur M Pour centres d'usinage avec changeurs de palettes M11 Pince pour palette sans fraisage M (flood) M Ce code M effectue le travail à la fois de M03 et de M08. Il n’est pas rare que des modèles de machine spécifiques aient de telles commandes combinées, ce qui permet d’écrire des programmes plus courts et plus rapidement. M19 Orientation de la broche M T L'orientation de la broche est plus souvent appelée dans les cycles (automatiquement) ou lors de la configuration (manuellement), mais elle est également disponible sous contrôle de programme via M19. L'abréviation OSS (butée de broche orientée) peut être vue en référence à une butée orientée au sein de cycles. Miroir M21, axe X M M21 Contre-face avant T M22 Miroir, axe Y M M22 Contre-face arrière T M23 Miroir OFF M M23 Extraction progressive du filetage ON T M24 Extraction progressive du filetage OFF T M30 Fin du programme, avec retour au programme top MT Today M30 est considéré comme le code de fin de programme standard et renvoie l’exécution au début du programme. Aujourd'hui, la plupart des contrôles prennent également en charge le code de fin de programme d'origine, M02, généralement en le traitant comme équivalent à M30. Informations complémentaires: Comparez M02 à M30. Tout d'abord, M02 a été créé, à l'époque où la bande perforée devait être suffisamment courte pour être fusionnée en une boucle continue (c'est pourquoi, sur les anciens contrôles, M02 ne déclenchait pas le rembobinage de la bande) [7]. L'autre code de fin de programme, M30, a été ajouté ultérieurement pour prendre en charge les bandes perforées plus longues, qui étaient enroulées sur une bobine et qui devaient donc être rembobinées avant qu'un autre cycle puisse commencer. [7] Sur de nombreuses commandes plus récentes, la manière dont les codes sont exécutés n’existe plus: les deux agissent comme M30. M41 Sélection de vitesse – vitesse 1 T M42 Sélection de vitesse – vitesse 2 T M43 Sélection de vitesse – vitesse 3 T M44 Sélection de vitesse – vitesse 4 T M48 Remplacement de l'avance autorisé M T M49 Remplacement de l'avance NON autorisé M T Empêcher MFO. Cette règle est également généralement appelée (automatiquement) dans les cycles de taraudage ou les cycles de filetage à un point, où l'alimentation est corrélée avec précision à la vitesse. Idem avec neutralisation de la vitesse de rotation (SSO) et bouton de maintien de l'alimentation. Certains contrôles sont capables de fournir un SSO et un MFO pendant l’enfilage. M52 Décharger le dernier outil de la broche M T Egalement vider la broche. M60 Changement automatique de palette (APC) M Pour les centres d'usinage équipés de changeurs de palette. M98 Appel de sous-programme M T Prend une adresse P pour spécifier le sous-programme à appeler, par exemple, "M98 P8979" appelle le sous-programme O8979. M99 Fin du sous-programme M T Généralement placé à la fin du sous-programme, il renvoie le contrôle d'exécution au programme principal. Par défaut, le contrôle revient au bloc suivant l'appel M98 dans le programme principal. Le retour à un numéro de bloc différent peut être spécifié par une adresse P. M99 peut également être utilisé dans le programme principal avec le saut de bloc pour une boucle sans fin du programme principal lors du travail de barres sur des tours (jusqu'à ce que l'opérateur bascule le saut de bloc).

(Source: Wikipedia)

Les commandes du code G de l’imprimante 3D post 2018 â