{"id":10317,"date":"2026-03-12T10:55:08","date_gmt":"2026-03-12T02:55:08","guid":{"rendered":"https:\/\/www.cncmachiningshops.com\/?p=10317"},"modified":"2026-07-19T17:21:55","modified_gmt":"2026-07-19T09:21:55","slug":"g-code-and-m-code","status":"publish","type":"post","link":"https:\/\/www.cncmachiningshops.com\/fr\/g-code-and-m-code\/","title":{"rendered":"Codes G et codes M dans la programmation CNC : types de commandes, structure du programme et exemples pratiques"},"content":{"rendered":"<div data-page-id=\"AT0qdjHDyok1tCxcuPGceqlZn7e\" data-lark-html-role=\"root\" data-docx-has-block-data=\"true\">\n<p>Chaque mouvement effectu\u00e9 par une machine CNC \u2014 chaque vitesse d'avance, chaque d\u00e9marrage de broche, chaque changement d'outil \u2014 est pilot\u00e9 par le code G et le code M. Ces deux types de commandes constituent la couche d'instructions entre un parcours d'outil g\u00e9n\u00e9r\u00e9 par la FAO et l'enl\u00e8vement de mati\u00e8re proprement dit. Le code G contr\u00f4le la g\u00e9om\u00e9trie et le mouvement ; le code M contr\u00f4le l'\u00e9tat de la machine qui rend ce mouvement s\u00fbr et efficace. C'est la compr\u00e9hension de leur interaction qui distingue les programmeurs capables d'\u00e9crire un code de production fiable de ceux qui se contentent d'ex\u00e9cuter ce que g\u00e9n\u00e8re la FAO.<\/p>\n<p>Cet article aborde les codes G et M sous un angle pratique d'ing\u00e9nierie : ce que chacun contr\u00f4le, le fonctionnement de la structure du programme et de la logique d'\u00e9tat modal, les codes courants dans un contexte r\u00e9el d'usinage, les diff\u00e9rences entre les contr\u00f4leurs qui affectent la portabilit\u00e9, ainsi que les erreurs de programmation \u00e0 l'origine de la plupart des pannes et des rebuts. L'objectif n'est pas de fournir une liste de r\u00e9f\u00e9rence des commandes, mais de permettre de comprendre la logique d'ex\u00e9cution qui rend les programmes CNC pr\u00e9visibles et reproductibles.<\/p>\n<hr \/>\n<h2>Que sont les codes G et M ? La diff\u00e9rence fondamentale<\/h2>\n<p>La distinction fondamentale est simple. <strong>Le code G contr\u00f4le le d\u00e9placement de l'outil et la g\u00e9om\u00e9trie<\/strong>. <strong>Le code M contr\u00f4le l'\u00e9tat de la machine et les fonctions auxiliaires<\/strong>. Les deux sont indispensables. L'un ne peut fonctionner sans l'autre.<\/p>\n<table>\n<thead>\n<tr>\n<th>Aspect<\/th>\n<th>Code G<\/th>\n<th>Code M<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Fonction principale<\/td>\n<td>Mouvement et g\u00e9om\u00e9trie de l'outil<\/td>\n<td>Fonctionnement et \u00e9tat de la machine<\/td>\n<\/tr>\n<tr>\n<td>Commandes<\/td>\n<td>Axes, interpolation, avances, syst\u00e8mes de coordonn\u00e9es<\/td>\n<td>Broche, liquide de refroidissement, changements d'outils, d\u00e9roulement du programme<\/td>\n<\/tr>\n<tr>\n<td>Cons\u00e9quences<\/td>\n<td>Pr\u00e9cision, \u00e9tat de surface, temps de cycle<\/td>\n<td>S\u00e9curit\u00e9, fiabilit\u00e9, conditions de coupe<\/td>\n<\/tr>\n<tr>\n<td>Exemples<\/td>\n<td>G00, G01, G02, G17, G54<\/td>\n<td>M03, M05, M06, M08, M30<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Code G : g\u00e9om\u00e9trie et logique de mouvement<\/h3>\n<p>Les codes G r\u00e9pondent \u00e0 la question suivante : <em>Comment l'outil doit-il se d\u00e9placer pour cr\u00e9er cette g\u00e9om\u00e9trie ?<\/em> Ils d\u00e9finissent le mode de positionnement, le type d'interpolation, le comportement d'avance et le syst\u00e8me de coordonn\u00e9es actif. La qualit\u00e9 de finition de surface, la pr\u00e9cision dimensionnelle et la r\u00e9partition de la charge sur l'outil d\u00e9pendent toutes directement de la mani\u00e8re dont les codes G sont structur\u00e9s et encha\u00een\u00e9s.<\/p>\n<p>Consid\u00e9rez le code G comme le \u00ab cerveau g\u00e9om\u00e9trique \u00bb du programme. Il sait o\u00f9 l'outil doit aller et comment il doit s'y rendre.<\/p>\n<h3>Code M : Commande des machines et des automates programmables<\/h3>\n<p>Les codes M r\u00e9pondent \u00e0 une autre question : <em>Comment la machine doit-elle se comporter pendant l'ex\u00e9cution de ce mouvement ?<\/em> Ils g\u00e8rent le d\u00e9marrage et le sens de rotation de la broche, l'activation du liquide de refroidissement, les changements d'outils et le contr\u00f4le du d\u00e9roulement du programme. Toutes ces fonctions sont g\u00e9r\u00e9es par l'automate programmable (PLC) de la machine \u2014 une couche de commande distincte du contr\u00f4leur de mouvement.<\/p>\n<p>Voici une fa\u00e7on utile d'envisager les choses : le code G d\u00e9finit le parcours ; le code M pr\u00e9pare et maintient les conditions n\u00e9cessaires \u00e0 l'usinage le long de ce parcours. Un parcours d'outil correctement d\u00e9fini \u00e9chouera imm\u00e9diatement si la broche ne tourne pas, si le mauvais outil est charg\u00e9 ou si le liquide de refroidissement n'est pas activ\u00e9. Ces conditions rel\u00e8vent enti\u00e8rement du code M.<\/p>\n<hr \/>\n<h2>Structure du programme CNC : blocs, \u00e9tats modaux et logique d'ex\u00e9cution<\/h2>\n<p>L'un des concepts les plus importants de la programmation CNC \u2014 et celui qui est \u00e0 l'origine des comportements les plus inattendus \u2014 consiste \u00e0 comprendre que le contr\u00f4leur ex\u00e9cute les programmes en tant que <strong>machine \u00e0 \u00e9tats<\/strong>, et non pas comme une simple liste s\u00e9quentielle d'instructions.<\/p>\n<h3>Blocs et ordre d'ex\u00e9cution<\/h3>\n<p>Un programme CNC comprend <strong>blocs<\/strong> \u2014 g\u00e9n\u00e9ralement une ligne d\u2019instruction par bloc. Le contr\u00f4leur lit chaque bloc de gauche \u00e0 droite et l\u2019ex\u00e9cute dans son int\u00e9gralit\u00e9. Il est essentiel de noter que le contr\u00f4leur n\u2019interpr\u00e8te pas l\u2019intention. Il ne per\u00e7oit que le bloc actuel, combin\u00e9 aux \u00e9tats modaux d\u00e9finis par les blocs pr\u00e9c\u00e9dents.<\/p>\n<p>Cela signifie que deux commandes de mouvement d'apparence identique peuvent se comporter de mani\u00e8re totalement diff\u00e9rente selon ce qui a \u00e9t\u00e9 d\u00e9fini pr\u00e9c\u00e9demment dans le programme. Une erreur \u00e0 ce niveau est \u00e0 l'origine de la plupart des comportements inattendus du mode CNC.<\/p>\n<h3>Codes modaux et non modaux<\/h3>\n<p>Cette distinction est essentielle pour comprendre le comportement du programme :<\/p>\n<p><strong>Codes modaux<\/strong> restent actifs jusqu'\u00e0 ce qu'ils soient explicitement modifi\u00e9s. Une fois d\u00e9finis, ils sont conserv\u00e9s dans tous les blocs suivants jusqu'\u00e0 ce qu'ils soient remplac\u00e9s. Exemples :<\/p>\n<ul>\n<li>Mode de d\u00e9placement (G00, G01, G02) \u2014 reste actif jusqu\u2019\u00e0 ce qu\u2019un autre mode de d\u00e9placement soit activ\u00e9<\/li>\n<li>Mode de positionnement (G90\/G91) \u2014 le mode absolu ou incr\u00e9mental reste d\u00e9fini jusqu\u2019\u00e0 ce qu\u2019il soit modifi\u00e9<\/li>\n<li>S\u00e9lection du plan (G17\/G18\/G19) \u2014 le plan de coupe actif est conserv\u00e9<\/li>\n<\/ul>\n<p><strong>Codes non modaux<\/strong> sont ex\u00e9cut\u00e9es une seule fois dans le bloc o\u00f9 elles apparaissent, puis n'ont plus aucun effet. Les commandes sp\u00e9cifiques d'annulation de cycle pr\u00e9d\u00e9fini et de pause en sont des exemples typiques.<\/p>\n<table>\n<thead>\n<tr>\n<th>Comportement<\/th>\n<th>Codes modaux<\/th>\n<th>Codes non modaux<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Persistance de l'\u00e9tat<\/td>\n<td>Valable jusqu'\u00e0 modification<\/td>\n<td>Ex\u00e9cuter une seule fois<\/td>\n<\/tr>\n<tr>\n<td>Risque en cas d'incompr\u00e9hension<\/td>\n<td>Mouvements involontaires dans les blocs suivants<\/td>\n<td>Effet g\u00e9n\u00e9ralement localis\u00e9<\/td>\n<\/tr>\n<tr>\n<td>Exemples courants<\/td>\n<td>G00, G01, G90, G91, G17<\/td>\n<td>Actions ponctuelles, annulations de cycles sp\u00e9cifiques<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Cons\u00e9quence pratique : un mode G01 rest\u00e9 actif depuis une op\u00e9ration pr\u00e9c\u00e9dente entra\u00eenera l'ex\u00e9cution du prochain d\u00e9placement de positionnement rapide comme un d\u00e9placement de coupe \u00e0 vitesse d'avance. C'est un risque de collision imminent \u2014 et cela peut \u00eatre enti\u00e8rement \u00e9vit\u00e9 en comprenant bien le fonctionnement des modes.<\/p>\n<h3>Phases de la logique du programme<\/h3>\n<p>Tout programme CNC fiable suit trois phases logiques :<\/p>\n<p><strong>Initialisation :<\/strong> D\u00e9finissez explicitement l'\u00e9tat de la machine. D\u00e9finissez les unit\u00e9s (G20\/G21), le plan (G17), le mode de positionnement (G90), le d\u00e9calage de la pi\u00e8ce (G54 ou \u00e9quivalent) et le mode d'avance. Ne vous fiez jamais aux valeurs par d\u00e9faut du contr\u00f4leur, car elles varient d'une machine \u00e0 l'autre.<\/p>\n<p><strong>Usinage :<\/strong> Le code G est principalement utilis\u00e9 pour le d\u00e9placement et la g\u00e9om\u00e9trie. Les codes M g\u00e8rent les conditions de coupe en arri\u00e8re-plan : la broche continue de tourner, le liquide de refroidissement reste activ\u00e9 et l'outil reste engag\u00e9.<\/p>\n<p><strong>Arr\u00eat :<\/strong> Retour \u00e0 un \u00e9tat s\u00fbr et connu. L'outil se r\u00e9tracte, la broche et le liquide de refroidissement s'arr\u00eatent, le programme se termine et se r\u00e9initialise pour le cycle suivant.<\/p>\n<hr \/>\n<h2>Principaux types de code G : mouvements, positionnement et cycles fixes<\/h2>\n<p>Plut\u00f4t que de r\u00e9pertorier tous les codes G, la compr\u00e9hension de ces trois cat\u00e9gories fonctionnelles permet de mieux cerner quand et pourquoi chaque type est utilis\u00e9 dans les op\u00e9rations d'usinage concr\u00e8tes.<\/p>\n<h3>Codes G de d\u00e9placement et d'interpolation<\/h3>\n<p>Ces codes d\u00e9finissent la mani\u00e8re dont l'outil de coupe se d\u00e9place d'un point \u00e0 l'autre. Ils ont une incidence directe sur l'\u00e9tat de surface, la dur\u00e9e du cycle et la charge de l'outil.<\/p>\n<p><strong>G00 \u2013 Positionnement rapide<\/strong> D\u00e9place l'outil \u00e0 la vitesse maximale de la machine. Utilis\u00e9 exclusivement pour les d\u00e9placements sans usinage : approche, retrait, positionnement pour changement d'outil et d\u00e9placements de d\u00e9gagement. La commande G00 privil\u00e9gie la vitesse au d\u00e9triment de la pr\u00e9cision de la trajectoire \u2014 la trajectoire r\u00e9elle entre deux points n'est pas une ligne droite sur la plupart des machines. Le d\u00e9gagement par rapport au dispositif de fixation et \u00e0 la pi\u00e8ce doit \u00eatre v\u00e9rifi\u00e9, et non suppos\u00e9.<\/p>\n<p><strong>G01 \u2013 Interpolation lin\u00e9aire<\/strong> D\u00e9place l'outil en ligne droite \u00e0 une vitesse d'avance programm\u00e9e. Il s'agit du mouvement de coupe principal pour la plupart des op\u00e9rations de fraisage et de tournage. La vitesse d'avance est sp\u00e9cifi\u00e9e par F \u2014 et cette valeur F reste active en mode jusqu'\u00e0 ce qu'elle soit modifi\u00e9e.<\/p>\n<p><strong>G02 \/ G03 \u2013 Interpolation circulaire<\/strong> La commande G02 g\u00e9n\u00e8re des arcs dans le sens horaire ; la commande G03 g\u00e9n\u00e8re des arcs dans le sens antihoraire. Utilis\u00e9es pour les poches circulaires, les rayons d'angle, les cong\u00e9s et le contournage. Le point central ou le rayon (R) doit \u00eatre sp\u00e9cifi\u00e9. Sur la plupart des contr\u00f4leurs, la direction de l'arc est relative au plan actif (G17\/G18\/G19) \u2014 un d\u00e9tail important lors de la programmation d'arcs en dehors du plan XY.<\/p>\n<p><strong>La distinction essentielle :<\/strong> La commande G00 sert au positionnement entre les passes d'usinage. Les commandes G01\/G02\/G03 servent \u00e0 l'enl\u00e8vement de mati\u00e8re. L'utilisation de la commande G00 \u00e0 la place de la commande G01 \u2014 ou le fait de laisser la commande G01 active alors qu'un positionnement rapide est n\u00e9cessaire \u2014 est l'une des causes les plus courantes de collisions et de sur-usinage.<\/p>\n<h3>Syst\u00e8me de coordonn\u00e9es et codes G de positionnement<\/h3>\n<p>Ces codes d\u00e9finissent <em>o\u00f9<\/em> c'est le mouvement qui compte, et non la fa\u00e7on dont l'outil se d\u00e9place.<\/p>\n<p><strong>Syst\u00e8mes de coordonn\u00e9es de travail (G54\u2013G59)<\/strong> Chaque d\u00e9calage d\u00e9finit une relation entre le point z\u00e9ro machine et le point z\u00e9ro pi\u00e8ce. Plusieurs montages ou configurations peuvent \u00eatre actifs dans un m\u00eame programme en appelant diff\u00e9rents d\u00e9calages de travail. Dans la pratique de l'usinage, la commande G54 est la valeur par d\u00e9faut pour un montage unique ; les commandes G55 \u00e0 G59 sont utilis\u00e9es pour les palettes \u00e0 montages multiples ou les montages de type \u00ab tombstone \u00bb.<\/p>\n<p><strong>G90 \u2013 Positionnement absolu<\/strong> Toutes les coordonn\u00e9es sont r\u00e9f\u00e9renc\u00e9es par rapport au point z\u00e9ro de travail actif. Un d\u00e9placement vers X50 correspond toujours \u00e0 la position X50 par rapport au point z\u00e9ro de la pi\u00e8ce, quelle que soit la position actuelle de l'outil. Il s'agit du mode standard pour la plupart des programmes de production : il est pr\u00e9visible et facile \u00e0 v\u00e9rifier.<\/p>\n<p><strong>G91 \u2013 Positionnement incr\u00e9mental<\/strong> Chaque coordonn\u00e9e se d\u00e9place par rapport \u00e0 la position actuelle de l'outil. La commande G91 est tr\u00e8s utile pour les motifs r\u00e9p\u00e9titifs et les \u00e9l\u00e9ments sym\u00e9triques, mais elle peut s'av\u00e9rer dangereuse si elle reste activ\u00e9e par inadvertance. Une commande incr\u00e9mentale G01 Z-1,0 signifie \u201c descendre de 1 mm \u00e0 partir de la position actuelle \u201d, et non \u00e0 partir du point z\u00e9ro de la pi\u00e8ce. Cela constitue une source importante d'erreurs de profondeur et de collisions.<\/p>\n<h3>Cycles en conserve<\/h3>\n<p>Les cycles pr\u00e9d\u00e9finis permettent de regrouper en une seule ligne de commande les s\u00e9quences r\u00e9p\u00e9titives de per\u00e7age, d'al\u00e9sage et de taraudage. Au lieu de programmer s\u00e9par\u00e9ment l'approche, l'avance, le temps d'arr\u00eat, le retrait et la distance de s\u00e9curit\u00e9 pour chaque trou, un cycle pr\u00e9d\u00e9fini g\u00e8re automatiquement l'ensemble de la s\u00e9quence.<\/p>\n<p>Parmi les exemples courants, on peut citer les codes G81 (per\u00e7age), G83 (per\u00e7age par \u00e0-coups pour trous profonds), G84 (taraudage) et G76 (al\u00e9sage de pr\u00e9cision). Les param\u00e8tres comprennent g\u00e9n\u00e9ralement la profondeur du trou, le plan de retrait, la vitesse d'avance et les options sp\u00e9cifiques au cycle.<\/p>\n<p>Deux aspects techniques sont \u00e0 prendre en compte ici. Premi\u00e8rement, les cycles pr\u00e9d\u00e9finis sont <strong>modal<\/strong> \u2014 ils restent actifs jusqu\u2019\u00e0 ce qu\u2019ils soient explicitement annul\u00e9s (g\u00e9n\u00e9ralement avec la commande G80). Si l\u2019on oublie d\u2019annuler un cycle de per\u00e7age avant un d\u00e9placement de repositionnement, la machine risque de percer \u00e0 chaque position interm\u00e9diaire. Deuxi\u00e8mement, le comportement de r\u00e9traction varie d\u2019un contr\u00f4leur \u00e0 l\u2019autre : v\u00e9rifiez la logique de r\u00e9traction en per\u00e7age par \u00e0-coups avant d\u2019ex\u00e9cuter des cycles de per\u00e7age profond sur des machines que vous ne connaissez pas bien.<\/p>\n<hr \/>\n<h2>Codes M courants : ce qu'ils contr\u00f4lent et pourquoi le moment choisi est important<\/h2>\n<p>Les codes M sont souvent consid\u00e9r\u00e9s comme des \u00e9l\u00e9ments secondaires : de simples commandes permettant de d\u00e9marrer la broche et d'activer le liquide de refroidissement. Or, dans la pratique, le timing et l'encha\u00eenement des codes M sont tout aussi cruciaux que la g\u00e9om\u00e9trie de la trajectoire d'outil. Une erreur \u00e0 ce niveau peut entra\u00eener la perte d'outils, de pi\u00e8ces et parfois m\u00eame de machines.<\/p>\n<h3>Commande de broche<\/h3>\n<p><strong>M03 \u2013 Broche activ\u00e9e (sens horaire)<\/strong> Sens de coupe standard pour les outils \u00e0 droite. Doit \u00eatre activ\u00e9 avant l'ex\u00e9cution de tout code G de coupe. Indiquez une valeur S (vitesse de broche) dans le m\u00eame bloc ou dans le bloc pr\u00e9c\u00e9dent.<\/p>\n<p><strong>M04 \u2013 Mise en marche de la broche (sens antihoraire)<\/strong> Utilis\u00e9 pour les outils \u00e0 coupe \u00e0 gauche, certaines op\u00e9rations d'al\u00e9sage et le fraisage de filets dans des configurations sp\u00e9cifiques. L'utilisation de la commande M04 avec une fraise standard \u00e0 coupe \u00e0 droite endommage imm\u00e9diatement \u00e0 la fois l'outil et la pi\u00e8ce.<\/p>\n<p><strong>M05 \u2013 Arr\u00eat de la broche<\/strong> Obligatoire avant les changements d'outil, les op\u00e9rations de palpage et les pauses de programme. Sur la plupart des machines, la commande M06 (changement d'outil) arr\u00eate automatiquement la broche ; toutefois, il est recommand\u00e9 de programmer explicitement la commande M05 avant la commande M06, car cette pratique est plus s\u00fbre et plus compatible.<\/p>\n<h3>Contr\u00f4le du liquide de refroidissement<\/h3>\n<p><strong>M08 \u2013 Refroidissement activ\u00e9<\/strong> Active l'arrosage par inondation. Sur les machines proposant plusieurs options d'arrosage, certains codes M permettent de choisir entre l'arrosage par inondation, par brumisation et par la broche \u2014 consultez la liste des codes M de la machine.<\/p>\n<p><strong>M09 \u2013 Refroidissement d\u00e9sactiv\u00e9<\/strong> D\u00e9sactivez-le avant les changements d'outils et \u00e0 la fin du programme. Laisser le liquide de refroidissement activ\u00e9 pendant un changement d'outil entra\u00eene des probl\u00e8mes d'entretien et pr\u00e9sente des risques potentiels pour la s\u00e9curit\u00e9 au niveau de la position de changement d'outil.<\/p>\n<p>Le moment d'activation du liquide de refroidissement est plus important que ne le reconnaissent la plupart des programmeurs. Lors de l'usinage du titane (Ti-6Al-4V), le liquide de refroidissement doit \u00eatre activ\u00e9 avant que l'ar\u00eate de coupe n'entre en contact avec la pi\u00e8ce ; l'activer apr\u00e8s le contact est trop tardif pour assurer une protection thermique. Dans l'aluminium 6061, un refroidissement par brume ou par inondation emp\u00eache la formation de d\u00e9p\u00f4ts sur l'ar\u00eate de coupe et pr\u00e9serve l'\u00e9tat de surface. L'instruction M08 fait partie <em>avant<\/em> la premi\u00e8re passe G01, pas apr\u00e8s.<\/p>\n<h3>Changement d'outil et d\u00e9roulement du programme<\/h3>\n<p><strong>M06 \u2013 Changement d'outil<\/strong> Ex\u00e9cute le changement d'outil automatique vers l'outil sp\u00e9cifi\u00e9 par un code T. Pour garantir la s\u00e9curit\u00e9 de l'op\u00e9ration, l'outil doit \u00eatre r\u00e9tract\u00e9 en position de changement d'outil et la broche doit \u00eatre \u00e0 l'arr\u00eat. S\u00e9quence standard : G00 jusqu'\u00e0 la distance de s\u00e9curit\u00e9 Z \u2192 M05 \u2192 T___ \u2192 M06.<\/p>\n<p><strong>M00 \u2013 Arr\u00eat du programme (inconditionnel)<\/strong> Interrompt l'ex\u00e9cution. La machine s'arr\u00eate et attend une intervention de l'op\u00e9rateur. Utilis\u00e9 pour les contr\u00f4les en cours de fabrication, les op\u00e9rations manuelles ou les r\u00e9glages des gabarits en cours de cycle.<\/p>\n<p><strong>M01 \u2013 Arr\u00eat facultatif<\/strong> S'arr\u00eate uniquement si le commutateur d'arr\u00eat optionnel est activ\u00e9 au niveau du contr\u00f4leur. Utile pour les points de contr\u00f4le qui peuvent \u00eatre contourn\u00e9s en production, mais qui sont activ\u00e9s lors de la mise en place ou des essais sur les premiers articles.<\/p>\n<p><strong>M30 \u2013 Fin du programme et r\u00e9initialisation<\/strong> Met fin au programme et effectue un retour en d\u00e9but de bande. C'est la mani\u00e8re correcte de terminer un programme de production CNC. La commande M02 met fin au programme sans retour en d\u00e9but de bande \u2014 \u00e0 \u00e9viter dans le code de production.<\/p>\n<table>\n<thead>\n<tr>\n<th>Groupe de fonctions<\/th>\n<th>Codes M<\/th>\n<th>Poste d'ing\u00e9nieur<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Broche<\/td>\n<td>M03 \/ M04 \/ M05<\/td>\n<td>Activer et arr\u00eater la d\u00e9coupe ; contr\u00f4ler la direction<\/td>\n<\/tr>\n<tr>\n<td>Liquide de refroidissement<\/td>\n<td>M08 \/ M09<\/td>\n<td>Contr\u00f4le thermique, \u00e9vacuation des copeaux, finition de surface<\/td>\n<\/tr>\n<tr>\n<td>Gestion des outils<\/td>\n<td>M06<\/td>\n<td>S\u00e9quence de changement d'outils<\/td>\n<\/tr>\n<tr>\n<td>D\u00e9roulement du programme<\/td>\n<td>M00 \/ M01 \/ M30<\/td>\n<td>Arr\u00eats de s\u00e9curit\u00e9, inspection, r\u00e9initialisation du cycle<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h2>Comment les codes G et M fonctionnent ensemble : un exemple pratique de fraisage<\/h2>\n<p>La coordination entre les codes G et M appara\u00eet clairement lorsque l'on suit la logique d'ex\u00e9cution d'une op\u00e9ration d'usinage concr\u00e8te. Voici \u00e0 quoi ressemble, du point de vue de la gestion des \u00e9tats, une passe de fraisage frontal simple sur une pi\u00e8ce en aluminium 6061 :<\/p>\n<h3>Phase 1 : Pr\u00e9paration de la machine (les codes M d\u00e9finissent les conditions d'usinage)<\/h3>\n<pre><code>G21 G90 G17 G54 ; D\u00e9finition du syst\u00e8me m\u00e9trique, mode absolu, plan XY, d\u00e9calage de la pi\u00e8ce\nT01 M06 ; Chargement de la fraise frontale (s\u00e9quence de changement d'outil)\nS3000 M03 ; Mise en marche de la broche dans le sens horaire \u00e0 3 000 tr\/min\r\nM08 ; Activation du refroidissement par inondation\nG00 Z50,0 ; D\u00e9placement rapide vers la distance de s\u00e9curit\u00e9 en Z\nG00 X-10,0 Y0 ; D\u00e9placement rapide vers la position d'approche\r\n<\/code><\/pre>\n<p>Avant toute op\u00e9ration d'usinage, l'\u00e9tat de la machine est enti\u00e8rement d\u00e9fini : outil correct, broche tournant dans le bon sens et \u00e0 la bonne vitesse, liquide de refroidissement activ\u00e9, outil positionn\u00e9 en toute s\u00e9curit\u00e9 au-dessus de la pi\u00e8ce.<\/p>\n<h3>Phase 2 : Mouvement de d\u00e9coupe (les codes G contr\u00f4lent la trajectoire)<\/h3>\n<pre><code>G00 Z2,0 ; Approche rapide \u00e0 la hauteur d'approche Z\nG01 Z-0,5 F200 ; Plong\u00e9e \u00e0 la profondeur de coupe avec avance contr\u00f4l\u00e9e\nG01 X110,0 F600 ; Passe de fraisage frontal sur toute la largeur de la pi\u00e8ce\r\n<\/code><\/pre>\n<p>Les commandes G01 r\u00e9gissent l'enl\u00e8vement effectif de mati\u00e8re. Les codes M relatifs \u00e0 la broche et au liquide de refroidissement de la phase 1 restent actifs en mode \u2014 il n'est donc pas n\u00e9cessaire de les rappeler \u00e0 chaque coupe, mais ils doivent avoir \u00e9t\u00e9 d\u00e9finis avant le d\u00e9but de la phase 2.<\/p>\n<h3>Phase 3 : Arr\u00eat s\u00e9curis\u00e9 (restauration de la machine \u00e0 un \u00e9tat connu)<\/h3>\n<pre><code>G01 Z2,0 F600 ; Retrait \u00e0 la vitesse d'avance (pas en avance rapide \u2014 contr\u00f4l\u00e9e)\r\nG00 Z50,0 ; D\u00e9placement rapide jusqu'\u00e0 la distance de s\u00e9curit\u00e9 maximale en Z\nM09 ; Arr\u00eat du liquide de refroidissement\nM05 ; Arr\u00eat de la broche\nG00 X0 Y0 ; Retour \u00e0 la position de r\u00e9f\u00e9rence\nM30 ; Fin du programme et r\u00e9initialisation\r\n<\/code><\/pre>\n<p>Chaque \u00e9l\u00e9ment de la s\u00e9quence de sortie a une fonction pr\u00e9cise. Le retrait \u00e0 la vitesse d'avance avant de passer en avance rapide permet d'\u00e9viter les marques de plong\u00e9e si l'outil est encore en contact l\u00e9ger avec la pi\u00e8ce. La coupure du liquide de refroidissement avant l'arr\u00eat de la broche emp\u00eache le liquide d'\u00eatre projet\u00e9 pendant la d\u00e9c\u00e9l\u00e9ration. La commande G00 vers la position d'origine permet de pr\u00e9parer le cycle suivant de mani\u00e8re fiable.<\/p>\n<p>Cette logique en trois \u00e9tapes \u2014 pr\u00e9paration, ex\u00e9cution, restauration \u2014 constitue le mod\u00e8le mental qui permet d'\u00e9viter la plupart des erreurs de programmation CNC.<\/p>\n<hr \/>\n<h2>Diff\u00e9rences entre les contr\u00f4leurs : pourquoi les codes G et M ne sont pas vraiment universels<\/h2>\n<p>La norme ISO 6983 \/ RS274 fournit une base syntaxique commune, mais les fabricants de contr\u00f4leurs \u00e9tendent et modifient consid\u00e9rablement ce comportement. Un programme qui fonctionne parfaitement sur une machine peut d\u00e9clencher des alarmes ou provoquer des mouvements inattendus sur une autre, m\u00eame avec un mat\u00e9riel identique.<\/p>\n<h3>Domaines courants de variation<\/h3>\n<p><strong>Contr\u00f4leurs bas\u00e9s sur Fanuc :<\/strong> Les contr\u00f4leurs industriels les plus r\u00e9pandus. Fanuc d\u00e9finit un noyau commun \u00e9tendu, mais les options propos\u00e9es par les constructeurs de machines permettent d'ajouter ou de modifier certains comportements. La syntaxe des macros B, les codes M de sondage et les param\u00e8tres des cycles pr\u00e9d\u00e9finis varient souvent d'une machine \u00e0 l'autre, m\u00eame au sein de la gamme Fanuc.<\/p>\n<p><strong>Contr\u00f4leurs Haas :<\/strong> Bien que largement compatible avec Fanuc pour les codes G de mouvement de base, Haas utilise des codes M simplifi\u00e9s ou propri\u00e9taires pour de nombreuses fonctions. Les programmes \u00e9crits sur des machines Haas n\u00e9cessitent souvent des ajustements des codes M lorsqu'ils sont transf\u00e9r\u00e9s vers des machines Fanuc.<\/p>\n<p><strong>LinuxCNC :<\/strong> Open source et hautement configurable. Prend en charge la syntaxe RS274 standard, mais les comportements avanc\u00e9s sont d\u00e9finis par l'utilisateur. Tr\u00e8s performant pour les machines personnalis\u00e9es ; n\u00e9cessite une documentation de configuration d\u00e9taill\u00e9e afin de garantir un comportement coh\u00e9rent.<\/p>\n<table>\n<thead>\n<tr>\n<th>Zone<\/th>\n<th>Variation typique<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Changement d'outil (M06)<\/td>\n<td>Positionnement, contr\u00f4les de s\u00e9curit\u00e9, comportement vis-\u00e0-vis du contr\u00f4le a\u00e9rien<\/td>\n<\/tr>\n<tr>\n<td>Cycles pr\u00e9d\u00e9finis<\/td>\n<td>Param\u00e8tres, modes de r\u00e9traction, comportement de picorage<\/td>\n<\/tr>\n<tr>\n<td>Codes M du liquide de refroidissement<\/td>\n<td>Plusieurs types de liquide de refroidissement, attributions de codes sp\u00e9cifiques<\/td>\n<\/tr>\n<tr>\n<td>Variables macro<\/td>\n<td>Syntaxe, disponibilit\u00e9, num\u00e9rotation des variables<\/td>\n<\/tr>\n<tr>\n<td>\u00c9tats par d\u00e9faut des fen\u00eatres modales<\/td>\n<td>S\u00e9lection du plan, mode d'avance, unit\u00e9s \u00e0 la mise sous tension<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Bonnes pratiques en mati\u00e8re de portabilit\u00e9<\/h3>\n<p>L'approche la plus fiable en mati\u00e8re de compatibilit\u00e9 entre manettes :<\/p>\n<ul>\n<li><strong>Ne vous fiez jamais aux valeurs par d\u00e9faut.<\/strong> D\u00e9finissez explicitement les unit\u00e9s, le plan, le mode de positionnement et le d\u00e9calage de travail au d\u00e9marrage du programme.<\/li>\n<li><strong>\u00c9vitez les raccourcis sp\u00e9cifiques \u00e0 certaines manettes<\/strong> dans les programmes destin\u00e9s \u00e0 plusieurs machines.<\/li>\n<li><strong>Commentaires sur les codes M non standard<\/strong> quant \u00e0 leur fonction : sans documentation, les futurs programmeurs ne sauront pas \u00e0 quoi sert la commande M88 sur votre machine en particulier.<\/li>\n<li><strong>Valider sur chaque contr\u00f4leur<\/strong> avant la premi\u00e8re s\u00e9rie de production, m\u00eame si le programme \u201c devrait fonctionner \u201d.\u201d<\/li>\n<\/ul>\n<hr \/>\n<h2>Erreurs courantes li\u00e9es aux codes G et M : diagnostic et pr\u00e9vention<\/h2>\n<p>La plupart des d\u00e9faillances du mod\u00e8le CNC sont dues \u00e0 des erreurs de gestion des \u00e9tats, et non \u00e0 des erreurs de syntaxe. Le contr\u00f4leur a ex\u00e9cut\u00e9 exactement ce qu\u2019on lui a demand\u00e9 ; le probl\u00e8me est que le programmeur n\u2019a pas pleinement pris en compte les \u00e9tats modaux actifs.<\/p>\n<table>\n<thead>\n<tr>\n<th>Erreur<\/th>\n<th>Cause premi\u00e8re<\/th>\n<th>La pr\u00e9vention<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Report modal<\/td>\n<td>G90\/G91, G00\/G01 ou s\u00e9lection du plan rest\u00e9e active depuis le bloc pr\u00e9c\u00e9dent<\/td>\n<td>R\u00e9initialiser explicitement les \u00e9tats modaux critiques au d\u00e9marrage du programme et avant les op\u00e9rations critiques<\/td>\n<\/tr>\n<tr>\n<td>Syst\u00e8me de coordonn\u00e9es incorrect<\/td>\n<td>Le programme part du principe que le d\u00e9calage de travail ou le syst\u00e8me d'unit\u00e9s diff\u00e8re de la configuration de la machine.<\/td>\n<td>D\u00e9finissez explicitement les codes G54 \u00e0 G59, G90\/G91 et G20\/G21 \u2014 ne partez jamais d'une hypoth\u00e8se<\/td>\n<\/tr>\n<tr>\n<td>Mouvement rapide et inattendu<\/td>\n<td>G01 reste actif lorsque le positionnement rapide est pr\u00e9vu, ou inversement<\/td>\n<td>R\u00e9\u00e9crire le code G de d\u00e9placement \u00e0 chaque bloc o\u00f9 l'intention de d\u00e9placement change<\/td>\n<\/tr>\n<tr>\n<td>Synchronisation de la broche et du liquide de refroidissement<\/td>\n<td>Codes M plac\u00e9s apr\u00e8s le d\u00e9but du mouvement de d\u00e9coupe<\/td>\n<td>Consid\u00e9rer M08 et M03 comme des conditions pr\u00e9alables : elles doivent \u00eatre actives avant la premi\u00e8re commande G01<\/td>\n<\/tr>\n<tr>\n<td>Changement d'outil dangereux<\/td>\n<td>Appel de M06 sans arr\u00eat de la broche ni position de retrait de s\u00e9curit\u00e9<\/td>\n<td>Appliquer la s\u00e9quence standard de changement d'outil : retrait \u2192 M05 \u2192 T___ \u2192 M06<\/td>\n<\/tr>\n<tr>\n<td>Comportement irr\u00e9gulier du cycle<\/td>\n<td>Cycle modal pr\u00e9d\u00e9fini (G83, G84) non annul\u00e9 avant le repositionnement<\/td>\n<td>Annulez explicitement les cycles pr\u00e9d\u00e9finis \u00e0 l'aide de la commande G80 ; ne partez pas du principe qu'ils s'annulent automatiquement.<\/td>\n<\/tr>\n<tr>\n<td>Le programme \u00e9choue lors de sa deuxi\u00e8me ex\u00e9cution<\/td>\n<td>Les \u00e9tats des fen\u00eatres modales masqu\u00e9es persistent apr\u00e8s la fin du programme<\/td>\n<td>Utiliser M30 avec la s\u00e9quence d'arr\u00eat complet ; initialiser tous les \u00e9tats au d\u00e9marrage du programme<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Un exemple concret : le mode incr\u00e9mental reste actif<\/h3>\n<p>Incident courant en atelier : un programmeur utilise le cycle G91 (incr\u00e9mental) pour un sch\u00e9ma de per\u00e7age en cercle de boulonnage. Le cycle pr\u00e9d\u00e9fini s'ex\u00e9cute correctement. Ensuite, la commande G80 annule le cycle, mais le mode G91 n'est jamais r\u00e9initialis\u00e9 en G90. L'op\u00e9ration suivante \u2014 une passe de fraisage de poche \u2014 utilise des coordonn\u00e9es incr\u00e9mentales. Au lieu de se d\u00e9placer vers X50 Y30 (en absolu), la machine se d\u00e9place de 50 mm et 30 mm \u00e0 partir de sa position actuelle.<\/p>\n<p>Cons\u00e9quence : passe de fraisage mal positionn\u00e9e, pi\u00e8ce mise au rebut, risque de collision.<\/p>\n<p>Correction : ajouter <code>G90<\/code> \u00e0 la ligne qui suit imm\u00e9diatement <code>G80<\/code> lors du retour du mode incr\u00e9mental. Un caract\u00e8re. Enregistre une pi\u00e8ce.<\/p>\n<hr \/>\n<h2>Meilleures pratiques pour une programmation CNC fiable<\/h2>\n<p>Les programmes fiables pr\u00e9sentent des caract\u00e9ristiques structurelles communes, quels que soient la machine ou le contr\u00f4leur utilis\u00e9s. Ces pratiques permettent de r\u00e9duire les erreurs, de simplifier le d\u00e9pannage et de faciliter la maintenance des programmes par une personne autre que leur auteur d'origine.<\/p>\n<h3>Bloc d'initialisation \u2014 Toujours<\/h3>\n<p>Commencez chaque programme par une initialisation compl\u00e8te de l'\u00e9tat :<\/p>\n<pre><code>G21 G90 G17 G54 G94 G40 G49    ; Syst\u00e8me m\u00e9trique, absolu, plan XY, WCS 1, \n ; avance par minute, d\u00e9sactiver la compensation d'outil, d\u00e9sactiver la longueur d'outil\r\n<\/code><\/pre>\n<p>Ce bloc unique \u00e9limine la plupart des probl\u00e8mes li\u00e9s au report d'\u00e9tat modal. Son \u00e9criture ne prend que cinq secondes et permet d'\u00e9conomiser des heures de d\u00e9pannage.<\/p>\n<h3>Changements d'\u00e9tat explicites aux limites logiques<\/h3>\n<p>Avant toute nouvelle op\u00e9ration \u2014 en particulier lors d'un passage du per\u00e7age au fraisage, d'un changement de dispositif de serrage ou apr\u00e8s une intervention manuelle \u2014, r\u00e9initialisez les \u00e9tats modaux critiques. Ne partez pas du principe que l'op\u00e9ration pr\u00e9c\u00e9dente a laiss\u00e9 la machine dans le bon \u00e9tat.<\/p>\n<h3>R\u00e8gles de s\u00e9quencement du code M<\/h3>\n<p>Respectez syst\u00e9matiquement cet ordre :<\/p>\n<ol>\n<li>Reculer jusqu'\u00e0 la distance de s\u00e9curit\u00e9 Z<\/li>\n<li>Arr\u00eat de la broche (M05) si un changement d'outil est n\u00e9cessaire<\/li>\n<li>Changement d'outil (M06) avec le code T<\/li>\n<li>D\u00e9marrage de la broche \u00e0 la nouvelle vitesse (M03 S___) et activation du liquide de refroidissement (M08)<\/li>\n<li>Position par rapport au point d'approche<\/li>\n<li>Commencer le mouvement de coupe<\/li>\n<\/ol>\n<p>Inverser les \u00e9tapes 4 et 5 \u2014 c'est-\u00e0-dire se positionner avant que la broche et le liquide de refroidissement ne soient activ\u00e9s \u2014 est techniquement possible sur la plupart des commandes num\u00e9riques, mais constitue une mauvaise pratique. La broche a besoin de temps pour atteindre sa vitesse de rotation ; le liquide de refroidissement doit atteindre la zone de coupe avant que l'outil n'entre en contact avec la pi\u00e8ce.<\/p>\n<h3>Commenter l'intention, pas seulement la syntaxe<\/h3>\n<p>Mauvais commentaire : <code>; G01 X50 F300 (d\u00e9placement lin\u00e9aire)<\/code> Bon commentaire : <code>; Passe de finition sur la face de r\u00e9f\u00e9rence - profondeur 0,1 mm, laisser 0 de mati\u00e8re<\/code><\/p>\n<p>Les commentaires doivent expliquer <em>pourquoi<\/em> indiquer s'il existe une s\u00e9quence de code et quelles hypoth\u00e8ses elle repose, sans simplement r\u00e9p\u00e9ter ce que le code dit d\u00e9j\u00e0.<\/p>\n<h3>Valider par simulation avant l'ex\u00e9cution<\/h3>\n<p>M\u00eame les programmeurs exp\u00e9riment\u00e9s proc\u00e8dent \u00e0 une simulation avant l'usinage. Les simulateurs CAM modernes permettent de d\u00e9tecter les erreurs de trajectoire d'outil, les collisions de porte-outils et les interf\u00e9rences lors des d\u00e9placements rapides qui semblent correctes dans le code mais provoquent des pannes sur la machine. Des essais \u00e0 vide \u00e0 une avance de 10%, accompagn\u00e9s d'une v\u00e9rification visuelle de chaque phase d'op\u00e9ration, permettent de rep\u00e9rer les probl\u00e8mes restants que la simulation ne d\u00e9tecte pas.<\/p>\n<hr \/>\n<h2>Conclusion<\/h2>\n<p>Les codes G et M ne constituent pas deux listes distinctes de commandes CNC : il s\u2019agit de deux couches coordonn\u00e9es d\u2019un m\u00eame syst\u00e8me de commande de machine. Le code G d\u00e9finit o\u00f9 et comment l\u2019outil se d\u00e9place ; le code M garantit que la machine se trouve dans l\u2019\u00e9tat appropri\u00e9 pour ex\u00e9cuter ce mouvement de mani\u00e8re s\u00fbre et efficace. Comprendre comment ils interagissent, comment l\u2019\u00e9tat modal persiste d\u2019un bloc de programme \u00e0 l\u2019autre, et comment les diff\u00e9rences entre les contr\u00f4leurs affectent le comportement : c\u2019est ce qui fait la diff\u00e9rence entre un code qui fonctionne de mani\u00e8re fiable en production et un code qui ne fonctionne qu\u2019une seule fois, sur une seule machine, dans des conditions id\u00e9ales.<\/p>\n<p>La fiabilit\u00e9 de la programmation CNC repose sur une gestion rigoureuse des \u00e9tats : initialisation explicite, phases d'ex\u00e9cution pr\u00e9visibles et synchronisation minutieuse du code M. Les programmeurs qui appr\u00e9hendent le code G et le code M comme un syst\u00e8me logique coordonn\u00e9 \u2014 plut\u00f4t que comme des commandes isol\u00e9es \u00e0 m\u00e9moriser \u2014 \u00e9crivent des programmes portables, s\u00fbrs et faciles \u00e0 maintenir, quelle que soit la machine ou l'\u00e9quipe de travail.<\/p>\n<hr \/>\n<h2>FAQ<\/h2>\n<p><strong>Le code G est-il le m\u00eame pour les fraiseuses et les tours ?<\/strong><\/p>\n<p>Pas tout \u00e0 fait. Les codes de mouvement de base (G01, G02) apparaissent dans les deux cas, mais le contexte diff\u00e8re consid\u00e9rablement. Le fraisage utilise la s\u00e9lection de plan (G17\/G18\/G19) et des coordonn\u00e9es multiaxiales. Les centres de tournage utilisent le contr\u00f4le du diam\u00e8tre\/rayon (G7\/G8 sur certains contr\u00f4leurs), des mouvements synchronis\u00e9s avec la broche pour le filetage (G32, G92) et des cycles fixes sp\u00e9cifiques au tour (G71, G72). La syntaxe sous-jacente est commune ; la logique d\u2019application est toutefois suffisamment diff\u00e9rente pour que l\u2019exp\u00e9rience en fraisage ne soit pas automatiquement transposable \u00e0 la programmation du tournage.<\/p>\n<p><strong>Les codes M sont-ils universels sur toutes les machines CNC ?<\/strong><\/p>\n<p>Non \u2014 et partir du principe qu'ils le sont comporte des risques. Les codes de base tels que M03 (rotation de la broche dans le sens horaire), M05 (arr\u00eat de la broche) et M30 (fin de programme) sont g\u00e9n\u00e9ralement coh\u00e9rents. En revanche, les fonctions li\u00e9es au contr\u00f4le du liquide de refroidissement, au palpage, au serrage, aux changements de palettes et \u00e0 l\u2019automatisation varient consid\u00e9rablement selon le contr\u00f4leur, le constructeur de la machine et la configuration. V\u00e9rifiez toujours l\u2019affectation des codes M sur chaque machine avant de vous y fier.<\/p>\n<p><strong>Pourquoi un m\u00eame code G se comporte-t-il diff\u00e9remment selon les contr\u00f4leurs ?<\/strong><\/p>\n<p>La norme ISO 6983 d\u00e9finit la syntaxe, et non le comportement. Les contr\u00f4leurs \u00e9tendent cette norme en y ajoutant leurs propres valeurs par d\u00e9faut, options et interpr\u00e9tations. Les param\u00e8tres de cycle pr\u00e9d\u00e9finis, les d\u00e9finitions d\u2019arc, les \u00e9tats modaux par d\u00e9faut \u00e0 la mise sous tension et le positionnement lors du changement d\u2019outil peuvent tous varier. \u00c9crire un code explicite et prudent \u2014 en d\u00e9finissant tous les \u00e9tats modaux plut\u00f4t que de se fier aux valeurs par d\u00e9faut \u2014 est le seul moyen fiable de g\u00e9rer les diff\u00e9rences entre les contr\u00f4leurs.<\/p>\n<p><strong>Un logiciel de FAO peut-il remplacer la ma\u00eetrise du code G\/M manuel ?<\/strong><\/p>\n<p>Les logiciels de FAO g\u00e9n\u00e8rent efficacement des parcours d'outils corrects, mais ils ne dispensent pas de la n\u00e9cessit\u00e9 de comprendre le code. Les ing\u00e9nieurs et les op\u00e9rateurs de machines doivent toujours ma\u00eetriser les codes G et M pour v\u00e9rifier la logique du programme, corriger les comportements inattendus, optimiser la dur\u00e9e des cycles et communiquer clairement avec les fournisseurs et les op\u00e9rateurs. La FAO remplace la saisie manuelle, mais elle ne remplace pas le jugement technique.<\/p>\n<p><strong>Quelles sont les erreurs les plus dangereuses dans les codes G et M ?<\/strong><\/p>\n<p>Les erreurs li\u00e9es \u00e0 l'\u00e9tat de la machine sont \u00e0 l'origine des incidents les plus graves. Les erreurs pr\u00e9sentant le plus grand risque sont les suivantes : d\u00e9placements rapides G00 effectu\u00e9s trop pr\u00e8s de la pi\u00e8ce ; le mode incr\u00e9mental G91 laiss\u00e9 actif par inadvertance ; l\u2019omission de la commande M03 de d\u00e9marrage de la broche avant le mouvement de coupe ; l\u2019appel de la commande M06 de changement d\u2019outil sans retrait de s\u00e9curit\u00e9 ; et les cycles fixes (G83, G84) non annul\u00e9s avant le repositionnement. Aucune de ces erreurs ne g\u00e9n\u00e8re d\u2019erreur de syntaxe : le contr\u00f4leur les ex\u00e9cute sans signaler de probl\u00e8me. Les dommages sont d\u2019ordre m\u00e9canique.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Chaque mouvement effectu\u00e9 par une machine CNC \u2014 chaque vitesse d'avance, chaque d\u00e9marrage de broche, chaque changement d'outil \u2014 est pilot\u00e9 par le code G et le code M. Ces deux types de commandes constituent la couche d'instructions entre le parcours d'outil g\u00e9n\u00e9r\u00e9 par le logiciel de FAO et l'enl\u00e8vement effectif de mati\u00e8re.<\/p>","protected":false},"author":1,"featured_media":12266,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[105],"tags":[],"class_list":["post-10317","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cnc-machining-guide"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.5 (Yoast SEO v28.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>G Code vs M Code: CNC Programming Commands Guide<\/title>\n<meta name=\"description\" content=\"Learn the differences between G code and M code in CNC programming, including command types, program structure, and practical examples used in CNC machining operations.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.cncmachiningshops.com\/fr\/g-code-and-m-code\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical Examples\" \/>\n<meta property=\"og:description\" content=\"Learn the differences between G code and M code in CNC programming, including command types, program structure, and practical examples used in CNC machining operations.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.cncmachiningshops.com\/fr\/g-code-and-m-code\/\" \/>\n<meta property=\"og:site_name\" content=\"CNC Machining Shops\" \/>\n<meta property=\"article:published_time\" content=\"2026-03-12T02:55:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-19T09:21:55+00:00\" \/>\n<meta name=\"author\" content=\"cncmachiningshops\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"cncmachiningshops\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/\"},\"author\":{\"name\":\"cncmachiningshops\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#\\\/schema\\\/person\\\/2593a2e2de68be71300e10f486236551\"},\"headline\":\"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical Examples\",\"datePublished\":\"2026-03-12T02:55:08+00:00\",\"dateModified\":\"2026-07-19T09:21:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/\"},\"wordCount\":3349,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg\",\"articleSection\":[\"CNC Machining Guide\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/\",\"url\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/\",\"name\":\"G Code vs M Code: CNC Programming Commands Guide\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg\",\"datePublished\":\"2026-03-12T02:55:08+00:00\",\"dateModified\":\"2026-07-19T09:21:55+00:00\",\"description\":\"Learn the differences between G code and M code in CNC programming, including command types, program structure, and practical examples used in CNC machining operations.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg\",\"contentUrl\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2026\\\/03\\\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg\",\"width\":800,\"height\":600,\"caption\":\"G Code and M Code in CNC Programming 800x600\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/g-code-and-m-code\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical Examples\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#website\",\"url\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/\",\"name\":\"CNC Machining Shops\",\"description\":\"10+ Years CNC Machining Service Supplier\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#organization\"},\"alternateName\":\"CMS\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#organization\",\"name\":\"CNC Machining Shops\",\"alternateName\":\"CMS\",\"url\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/CMS_Logo_1000x1000.png\",\"contentUrl\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/wp-content\\\/uploads\\\/2025\\\/11\\\/CMS_Logo_1000x1000.png\",\"width\":800,\"height\":800,\"caption\":\"CNC Machining Shops\"},\"image\":{\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"description\":\"Shenzhen CMS Technology Co., Ltd. is located in Shenzhen, Guangdong, China. It was established in 2012 with a factory area of \u200b\u200b3,000 square meters. It is a company specializing in CNC machining and precision parts manufacturing. We have passed ISO9001, IATF16949, ISO13485 certification and are your trusted partner.\",\"email\":\"info@cncmachiningshops.com\",\"telephone\":\"+8617196430663\",\"legalName\":\"Shenzhen CMS Technology Co., Ltd.\",\"foundingDate\":\"2012-07-22\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"11\",\"maxValue\":\"50\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.cncmachiningshops.com\\\/#\\\/schema\\\/person\\\/2593a2e2de68be71300e10f486236551\",\"name\":\"cncmachiningshops\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g\",\"caption\":\"cncmachiningshops\"},\"sameAs\":[\"https:\\\/\\\/cncmachiningshops.com\"]}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Code G vs code M : guide des commandes de programmation CNC","description":"D\u00e9couvrez les diff\u00e9rences entre le code G et le code M dans la programmation CNC, notamment les types de commandes, la structure des programmes et des exemples concrets utilis\u00e9s dans les op\u00e9rations d'usinage CNC.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.cncmachiningshops.com\/fr\/g-code-and-m-code\/","og_locale":"fr_FR","og_type":"article","og_title":"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical Examples","og_description":"Learn the differences between G code and M code in CNC programming, including command types, program structure, and practical examples used in CNC machining operations.","og_url":"https:\/\/www.cncmachiningshops.com\/fr\/g-code-and-m-code\/","og_site_name":"CNC Machining Shops","article_published_time":"2026-03-12T02:55:08+00:00","article_modified_time":"2026-07-19T09:21:55+00:00","author":"cncmachiningshops","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"cncmachiningshops","Dur\u00e9e de lecture estim\u00e9e":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#article","isPartOf":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/"},"author":{"name":"cncmachiningshops","@id":"https:\/\/www.cncmachiningshops.com\/#\/schema\/person\/2593a2e2de68be71300e10f486236551"},"headline":"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical Examples","datePublished":"2026-03-12T02:55:08+00:00","dateModified":"2026-07-19T09:21:55+00:00","mainEntityOfPage":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/"},"wordCount":3349,"commentCount":0,"publisher":{"@id":"https:\/\/www.cncmachiningshops.com\/#organization"},"image":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2026\/03\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg","articleSection":["CNC Machining Guide"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/","url":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/","name":"Code G vs code M : guide des commandes de programmation CNC","isPartOf":{"@id":"https:\/\/www.cncmachiningshops.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#primaryimage"},"image":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2026\/03\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg","datePublished":"2026-03-12T02:55:08+00:00","dateModified":"2026-07-19T09:21:55+00:00","description":"D\u00e9couvrez les diff\u00e9rences entre le code G et le code M dans la programmation CNC, notamment les types de commandes, la structure des programmes et des exemples concrets utilis\u00e9s dans les op\u00e9rations d'usinage CNC.","breadcrumb":{"@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#primaryimage","url":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2026\/03\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg","contentUrl":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2026\/03\/G-Code-and-M-Code-in-CNC-Programming-800x600-1.jpg","width":800,"height":600,"caption":"G Code and M Code in CNC Programming 800x600"},{"@type":"BreadcrumbList","@id":"https:\/\/www.cncmachiningshops.com\/g-code-and-m-code\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.cncmachiningshops.com\/"},{"@type":"ListItem","position":2,"name":"G Code and M Code in CNC Programming: Command Types, Program Structure, and Practical Examples"}]},{"@type":"WebSite","@id":"https:\/\/www.cncmachiningshops.com\/#website","url":"https:\/\/www.cncmachiningshops.com\/","name":"Ateliers d'usinage CNC","description":"Fournisseur de services d'usinage CNC depuis plus de 10 ans","publisher":{"@id":"https:\/\/www.cncmachiningshops.com\/#organization"},"alternateName":"CMS","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.cncmachiningshops.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/www.cncmachiningshops.com\/#organization","name":"Ateliers d'usinage CNC","alternateName":"CMS","url":"https:\/\/www.cncmachiningshops.com\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.cncmachiningshops.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2025\/11\/CMS_Logo_1000x1000.png","contentUrl":"https:\/\/www.cncmachiningshops.com\/wp-content\/uploads\/2025\/11\/CMS_Logo_1000x1000.png","width":800,"height":800,"caption":"CNC Machining Shops"},"image":{"@id":"https:\/\/www.cncmachiningshops.com\/#\/schema\/logo\/image\/"},"description":"La soci\u00e9t\u00e9 Shenzhen CMS Technology Co., Ltd. est implant\u00e9e \u00e0 Shenzhen, dans la province du Guangdong, en Chine. Fond\u00e9e en 2012, elle dispose d'une usine d'une superficie de 3 000 m\u00e8tres carr\u00e9s. Il s'agit d'une entreprise sp\u00e9cialis\u00e9e dans l'usinage CNC et la fabrication de pi\u00e8ces de pr\u00e9cision. Nous sommes certifi\u00e9s ISO 9001, IATF 16949 et ISO 13485, et sommes votre partenaire de confiance.","email":"info@cncmachiningshops.com","telephone":"+8617196430663","legalName":"Shenzhen CMS Technology Co., Ltd.","foundingDate":"2012-07-22","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"11","maxValue":"50"}},{"@type":"Person","@id":"https:\/\/www.cncmachiningshops.com\/#\/schema\/person\/2593a2e2de68be71300e10f486236551","name":"ateliers d&#039;usinage cnc","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/36a63d96ed08f8805561107422de4e83bbf8d1669dbc9655acab534bc3e1ed17?s=96&d=mm&r=g","caption":"cncmachiningshops"},"sameAs":["https:\/\/cncmachiningshops.com"]}]}},"_links":{"self":[{"href":"https:\/\/www.cncmachiningshops.com\/fr\/wp-json\/wp\/v2\/posts\/10317","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cncmachiningshops.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cncmachiningshops.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/fr\/wp-json\/wp\/v2\/comments?post=10317"}],"version-history":[{"count":0,"href":"https:\/\/www.cncmachiningshops.com\/fr\/wp-json\/wp\/v2\/posts\/10317\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/fr\/wp-json\/wp\/v2\/media\/12266"}],"wp:attachment":[{"href":"https:\/\/www.cncmachiningshops.com\/fr\/wp-json\/wp\/v2\/media?parent=10317"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/fr\/wp-json\/wp\/v2\/categories?post=10317"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cncmachiningshops.com\/fr\/wp-json\/wp\/v2\/tags?post=10317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}