Les logiciels de FAO ont rendu le code G moins visible dans les flux de travail quotidiens du CNC, mais cela ne signifie pas pour autant que le code G a perdu de son importance. Chaque trajectoire d’outil générée par un système de FAO devient finalement un fichier de code G, et c’est ce fichier que le contrôleur CNC exécute réellement, ligne par ligne, sans tenir compte du modèle CAD ni de la stratégie d’usinage qui le sous-tend. Lorsqu’un outil plonge trop profondément, qu’un temps de cycle s’avère plus long que prévu ou que l’état de surface ne correspond pas à la simulation, la réponse se trouve presque toujours dans le code G — et non dans la configuration FAO. Comprendre le code G dans l’usinage CNC, c’est comprendre ce que la machine fait réellement, plutôt que ce que vous aviez prévu qu’elle fasse.
Cet article aborde le G-code sous l'angle de la manière dont les contrôleurs CNC l'interprètent et l'exécutent dans des environnements d'usinage réels. L'objectif est pratique : syntaxe, structure, logique modale, erreurs courantes et exemple de code étape par étape illustrant précisément ce qui se passe au niveau de la machine. Que vous déboggiez un programme, que vous examiniez la configuration d'un fournisseur ou que vous cherchiez à comprendre pourquoi un temps de cycle indiqué semble erroné, ce document constitue le cadre de référence indispensable.
Qu'est-ce que le G-Code et comment permet-il de commander les machines CNC ?
La définition qui compte vraiment en production
Le G-code est le langage d’instructions de bas niveau que les contrôleurs des machines CNC exécutent directement. Chaque ligne spécifie des commandes de mouvement, des positions d’axes, des vitesses d’avance, des états de broche et des fonctions auxiliaires. Il n’est pas descriptif : il ne dit pas “ usiner cette poche ” ou “ finir cette surface ”. Il indique “ se déplacer vers cette coordonnée à cette vitesse d'avance dans ce mode ”. Le contrôleur suit ces instructions à la lettre, sans interpréter l'intention au-delà de ce qui est codé.
Cette distinction a une importance concrète. Le logiciel de FAO définit ce qui doit se passer en fonction de la géométrie et de la stratégie d'usinage. Le fichier G-code définit ce que le contrôleur va réellement exécuter. Ces deux éléments sont souvent proches, mais pas toujours identiques, et c'est dans cet écart que réside la plupart des problèmes d'usinage.
Comment les contrôleurs CNC lisent le G-Code
Les contrôleurs traitent le code G de manière séquentielle, bloc par bloc. Après avoir lu chaque ligne, le contrôleur met à jour son état interne — mode de mouvement actif, système de coordonnées, décalage de longueur d'outil, sélection du plan — puis exécute la commande. Les commandes modales restent actives jusqu’à ce qu’elles soient explicitement modifiées. C’est ce qui prend la plupart des gens au dépourvu : une commande définie 50 lignes plus haut peut encore contrôler le comportement de la machine à la ligne 200 si rien ne l’a annulée.
Les contrôleurs appliquent également des fonctions d'anticipation, des limites d'accélération et des algorithmes d'interpolation après avoir lu le code G — et non pas pendant la génération CAM. Deux machines exécutant un code G identique peuvent produire des profils de mouvement différents si les paramètres de leurs contrôleurs diffèrent. C'est pourquoi les résultats d'usinage ne sont pas entièrement déterminés au stade de la CAM.
La place du G-Code dans le flux de travail CNC
Le processus, de la conception à la découpe, suit un enchaînement clair :
Modèle CAD → Stratégie de trajectoire d'usinage CAM → Génération du code G → Contrôleur CNC → Mouvement servo → Enlèvement de matière
Le code G constitue le point de transition. Tout ce qui se passe en amont relève de la conception et de la planification. Tout ce qui se passe en aval relève de l'usinage proprement dit. Comprendre le code G, c'est comprendre ce qui se passe à cette frontière — là où les problèmes sont justement les plus difficiles à détecter et les plus coûteux à résoudre.
Comment est structuré un programme G-Code CNC ?
Blocs, lignes et ordre d'exécution
Un programme en G-code est constitué de blocs, c'est-à-dire de lignes individuelles que le contrôleur traite les unes après les autres, de haut en bas. Chaque bloc correspond à un cycle d'instruction. Le contrôleur n'a aucune connaissance des blocs suivants au-delà d'une anticipation limitée ; l'ordre des commandes détermine donc directement le comportement de la machine.
Un programme bien structuré suit l'enchaînement suivant :
- Démarrage du programme et initialisation des mesures de sécurité
- Déclaration des unités, du plan et du mode de coordonnées
- Sélection de l'outil et activation du décalage
- Mouvements d'usinage (ébauche, finition, perçage, etc.)
- Retrait et changement d'outil (en cas d'utilisation de plusieurs outils)
- Fin du programme et réinitialisation
Le fait de sauter ou de modifier l'ordre des étapes comporte des risques. Une opération d'usinage exécutée avant l'activation de la correction de longueur d'outil, par exemple, positionne l'outil en fonction d'une référence Z non corrigée — ce qui est le meilleur moyen de provoquer une collision, même lorsque la géométrie de la trajectoire d'outil est correcte.
Mots d'adresse : le rôle de chaque lettre
Chaque bloc est constitué de mots d'adresse : une lettre qui identifie la fonction, suivie d'un nombre qui définit la valeur.
- G — Commande de mouvement ou de mode (rapide, linéaire, circulaire, sélection de plan, etc.)
- M — Fonctions de la machine et fonctions auxiliaires (broche, liquide de refroidissement, changement d'outil, fin de programme)
- X, Y, Z — Positions cibles de l'Axe
- F — Vitesse d'avance (distance par minute ou par tour, selon le mode)
- S — Vitesse de rotation de la broche (tr/min)
- T — Numéro d'outil
Une même ligne peut contenir plusieurs mots d'adresse. Le contrôleur les interprète globalement pour déterminer le type de mouvement, la position et l'état de la machine. Sur certains contrôleurs, l'ordre des éléments au sein d'un bloc a également son importance : consultez toujours le manuel du contrôleur pour connaître l'ordre d'analyse des blocs.
Commandes modales et non modales
C'est ce concept qui est à l'origine du plus grand nombre d'erreurs dans la programmation CNC — et qui suscite le plus de confusion lors du débogage.
Commandes modales restent actifs sur plusieurs blocs jusqu'à ce qu'ils soient explicitement annulés ou remplacés. Les codes G01 (interpolation linéaire), G90 (positionnement absolu) et F (vitesse d'avance) sont tous modaux. Une fois définis, ils s'appliquent à tous les blocs suivants jusqu'à ce qu'ils soient modifiés.
Commandes non modales ne s'appliquent qu'au bloc dans lequel elles apparaissent. La commande G04 (pause) en est un exemple typique : elle provoque une pause d'un bloc, puis l'exécution se poursuit sans que la pause ne s'applique à nouveau.
Le danger des commandes modales : un mode défini au début du programme détermine le comportement de tout ce qui suit, y compris les blocs écrits bien plus tard. Une transition G00-G01 manquante là où on l'attend, ou une vitesse d'avance qui n'a pas été mise à jour entre deux opérations, peut entraîner un mouvement incorrect sans déclencher aucune alarme du contrôleur.
Analyse d'une ligne de code G type
G01 X50,0 Y20,0 Z-5,0 F300
- G01 — Interpolation linéaire (mode ; reste active jusqu’à ce qu’un autre mode de déplacement soit spécifié)
- X 50,0 Y 20,0 Z -5,0 — Position cible dans le système de coordonnées actuel
- F300 — Vitesse d'avance de 300 mm/min (valeur modale ; s'applique à tous les mouvements de coupe suivants)
Si le bloc suivant indique X80,0 Y20,0 En l'absence de code G, la machine se déplace de manière linéaire à une vitesse de 300 mm/min vers la nouvelle position — car les commandes G01 et F300 sont toujours actives. Ce comportement est correct s'il est voulu, mais pose problème s'il n'est pas prévu.
Les codes G les plus couramment utilisés dans l'usinage CNC
Commandes de déplacement : G00, G01, G02, G03
Ces quatre codes représentent la majeure partie des mouvements dans tout programme CNC.
G00 — Positionnement rapide Déplace l'outil vers une position à la vitesse de déplacement maximale de la machine. Le contrôleur ne respecte pas la vitesse d'avance programmée pendant le code G00. Utilisez-le exclusivement pour les déplacements sans enlèvement de matière : positions de dégagement, approches pour le changement d'outil et repositionnement au-dessus de la pièce. N'utilisez jamais le code G00 lorsque l'outil est en contact avec la matière ; les limites de vitesse d'avance ne s'appliquent pas et le résultat est imprévisible.
G01 — Interpolation linéaire Exécute un mouvement de coupe en ligne droite à la vitesse d'avance programmée. Il s'agit de la commande de coupe principale pour le fraisage, le tournage et tout enlèvement de matière contrôlé. Le choix de la vitesse d'avance doit tenir compte du diamètre de l'outil, du matériau et du revêtement — et non d'une valeur “ de sécurité ” générique. Pour l’aluminium 6061 avec une fraise en carbure de 10 mm, une vitesse d’avance de 400 à 600 mm/min à une vitesse de rotation de 8 000 à 12 000 tr/min est généralement appropriée. Pour l’acier inoxydable 316L avec le même outil, une vitesse d’avance de 100 à 180 mm/min à une vitesse de rotation de 3 000 à 5 000 tr/min est plus réaliste en raison du comportement d’écrouissage de la pièce.
G02 / G03 — Interpolation circulaire (sens horaire / antihoraire) Génère un mouvement en arc dans le plan actif. La commande G02 se déplace dans le sens des aiguilles d’une montre ; la commande G03, dans le sens inverse des aiguilles d’une montre. La géométrie de l’arc est définie par un point de départ, un point d’arrivée et soit un décalage du centre (I, J, K), soit une valeur de rayon (R). Une géométrie d’arc mal définie — lorsque les points de départ et d’arrivée ne correspondent pas au rayon spécifié — provoque des alarmes du contrôleur ou des surcoupes. Vérifiez toujours les définitions d’arc en simulation avant la découpe.
Sélection des plans et unités : G17–G19, G20, G21
G17, G18, G19 Sélectionnez le plan d'usinage actif : XY, XZ et YZ respectivement. La sélection du plan influe directement sur l'interprétation des arcs G02/G03. Un arc G02 programmé avec des coordonnées XY se comporte correctement en mode G17, mais génère un mouvement incorrect si le mode G18 ou G19 est actif depuis une opération précédente.
G20 / G21 Spécifiez les unités en pouces ou en unités métriques. Ce paramètre doit toujours être défini explicitement au démarrage du programme. Hériter des unités d’un programme précédent est l’un des moyens les moins évidents de provoquer un plantage de la machine : le contrôleur applique en effet le facteur de conversion des unités à toutes les positions, ce qui déplace l’outil vers des emplacements très éloignés des positions souhaitées.
Modes de positionnement : G90 vs G91
G90 — Positionnement absolu: Toutes les coordonnées sont référencées par rapport au point zéro de travail actif. Il s'agit du mode standard pour la plupart des opérations d'usinage CNC, car chaque position est univoque : X50,0 correspond toujours à 50 mm à partir du point zéro, quelle que soit la position antérieure de l'outil.
G91 — Positionnement incrémental: Les coordonnées font référence à la position actuelle de l'outil. Cette fonction est utile pour les motifs répétitifs (séries de trous, espacement des rainures) où définir chaque point à partir de zéro nécessiterait des calculs. Le risque réside dans l'erreur cumulative : une erreur d'arrondi lors d'un déplacement déplace toutes les positions incrémentielles suivantes. Utilisez le mode G91 de manière réfléchie et revenez toujours au mode G90 après la séquence incrémentielle.
Codes de sécurité et de référence
G04 (Temps d'arrêt): Interrompt le mouvement pendant une durée définie ou un nombre défini de tours de broche. Parmi les utilisations courantes, on peut citer le bris des copeaux lors du perçage profond et la stabilisation de la broche après un changement de vitesse avant d'entamer une passe de finition de précision.
G28 (Retour à la position de référence de la machine): Envoie les axes vers la position d'origine en passant par un point intermédiaire. Ce point intermédiaire est crucial : s'il n'est pas explicitement défini dans une position sûre, la commande G28 peut entraîner l'outil à travers la pièce ou le dispositif de fixation lors de son retour à la position d'origine.
G53 (Déplacement selon les coordonnées de la machine): Se déplace directement dans le système de coordonnées de la machine, sans passer par les décalages de travail. Plus prévisible que la commande G28 pour les déplacements de positionnement et les changements d'outils lorsqu'elle est utilisée correctement.
| Catégorie | Code G | Fonction | Utilisation typique |
|---|---|---|---|
| Motion | G00 | Déménagement rapide | Positionnement sans découpe |
| Motion | G01 | Coupe linéaire | Usinage contrôlé |
| Motion | G02 / G03 | Coupe circulaire | Arcs, poches, profils |
| Avion | G17–G19 | Choix de l'avion | Définition de la direction de l'arc |
| Unités | G20 / G21 | Pouces / Système métrique | Initialisation du programme |
| Positionnement | G90 / G91 | Absolu / Incrémental | Contrôle des coordonnées |
| Sécurité | G28 / G53 | Mouvements de référence | Changement d'outil, jeu |
Les codes M et leur fonctionnement en complément du code G
Ce que contrôlent les codes M
Alors que les codes G régissent les déplacements de l’outil dans l’espace, les codes M régissent les actions de la machine : mise en marche/arrêt de la broche, mise en marche/arrêt du liquide de refroidissement, changement d’outil et déroulement du programme. Dans les opérations d’usinage concrètes, les codes M définissent l’état de la machine que les mouvements d’usinage en code G supposent déjà en vigueur. Un mouvement de coupe (G01) exécuté sans que la broche soit active (M03) endommage l'outil et la pièce. Un changement d'outil (M06) effectué sans dégagement suffisant des axes risque de provoquer une collision.
Les codes M qui apparaissent dans presque tous les programmes
- M03 — Broche activée, rotation dans le sens des aiguilles d'une montre
- M04 — Broche activée, rotation antihoraire (utilisée pour des opérations spécifiques telles que le taraudage en sens inverse)
- M05 — Arrêt de la broche
- M06 — Changement d'outil (suspend l'exécution jusqu'à ce que le changement soit terminé)
- M08 — Liquide de refroidissement activé
- M09 — Refroidissement désactivé
- M30 — Fin du programme et réinitialisation pour recommencer
L'ordre d'exécution est important. La commande M03 doit précéder le premier mouvement de coupe. La commande M08 doit être activée avant que l'outil n'entre en contact avec la pièce, et non pendant. La commande M06 exige que la machine se trouve dans une position sûre — ce qui est généralement vérifié par un déplacement G28 ou G53 vers un emplacement défini pour le changement d'outil.
Code G et code M : complémentaires, mais non interchangeables
| Aspect | Code G | Code M |
|---|---|---|
| Fonction principale | Contrôle du mouvement et de la trajectoire de l'outil | État de la machine et fonctions auxiliaires |
| Actions courantes | Déplacements linéaires, arcs, positionnement | Broche, liquide de refroidissement, changement d'outil, fin de programme |
| Impact sur l'exécution | Géométrie et vitesse d'avance | Préparation à la découpe et sécurité des machines |
| Risque en cas d'erreur | Collision, erreur dimensionnelle | Dommages causés à l'outil, changement d'outil dangereux |
Vitesse d'avance, vitesse de broche et commandes d'outils : leur incidence sur la qualité des pièces
Vitesse d'avance (F) et état de surface
La vitesse d'avance détermine directement la charge de copeaux, c'est-à-dire l'épaisseur de matière enlevée par chaque arête de coupe à chaque tour. Si elle est trop élevée, l'outil est surchargé : cela entraîne des vibrations, des déchirures et un mauvais état de surface. Si elle est trop faible, l'outil frotte au lieu de couper, ce qui concentre la chaleur au niveau de l'arête de coupe et favorise la formation d'un dépôt sur l'arête, ce qui dégrade également l'état de surface.
La relation entre la vitesse d'avance et l'état de surface dépend du matériau. Pour l'aluminium 6061, une fraise en bout de 10 mm fonctionnant à S10 000 tr/min avec une vitesse d'avance de F500 mm/min produit une charge de copeaux d'environ 0,025 mm par dent (en supposant un outil à deux cannelures) — ce qui donne généralement un Ra compris entre 1,6 et 3,2 µm lors d’une passe de dégrossissage. Une réduction de la vitesse d’avance à F200 mm/min diminue la charge de copeaux mais augmente la chaleur et le frottement, ce qui détériore souvent l’état de surface au lieu de l’améliorer. Les passes de finition utilisent des profondeurs de coupe réduites, mais pas nécessairement des vitesses d'avance réduites, pour atteindre une rugosité Ra de 0,8 µm ou mieux.
Pour l'acier inoxydable 316L, les vitesses d'avance sont nettement plus faibles — généralement comprises entre 100 et 180 mm/min — car le matériau subit un écrouissage lors de l'usinage. Le dépassement des charges de copeaux recommandées entraîne une usure rapide de l'outil et des déchirures de surface. Une application régulière de liquide de refroidissement (par aspersion ou à travers l'outil) est essentielle pour évacuer la chaleur et empêcher l'accumulation d'écrouissage entre les passes.
Vitesse de rotation de la broche (S) et performances de coupe
La vitesse de rotation de la broche détermine la vitesse de coupe superficielle au niveau du diamètre extérieur de l'outil. La vitesse appropriée dépend du diamètre de l'outil, du matériau et du revêtement de l'outil. Une fraise en carbure de 10 mm revêtue de TiAlN coupant de l’aluminium 6061 fonctionne généralement à une vitesse de coupe superficielle de 200 à 400 m/min, ce qui correspond à environ 6 400 à 12 700 tr/min. Le même outil utilisé sur de l’acier inoxydable 316L fonctionne à une vitesse de coupe superficielle comprise entre 40 et 80 m/min — soit environ 1 270 à 2 550 tr/min — afin de limiter la génération de chaleur et l’usure de l’outil.
Une vitesse de broche trop élevée lors de l'usinage de l'inox génère une concentration de chaleur qui ramollit l'arête de coupe, ce qui réduit considérablement la durée de vie de l'outil. À l'inverse, une vitesse insuffisante lors de l'usinage de l'aluminium entraîne une coupe inefficace et une mauvaise évacuation des copeaux. Pour choisir la bonne vitesse de broche, il ne s'agit pas d'opter pour des valeurs prudentes, mais d'adapter la vitesse aux besoins réels de l'outil et du matériau.
Commandes d'outils et activation du décalage
La sélection d'outil (T) permet de préciser l'outil à charger. La compensation de longueur d'outil (G43 avec décalage H) applique la référence d'axe Z correcte pour cet outil spécifique. Si un décalage incorrect est activé — ou si la commande G43 est totalement omise —, la référence de l'axe Z est décalée de la différence entre le décalage programmé et la longueur réelle de l'outil. Cela entraîne une plongée trop profonde ou un retrait insuffisant pour dégager la pièce.
Avant tout changement d'outil, la machine doit se trouver dans une position sûre. La plupart des contrôleurs exigent un positionnement explicite à l'emplacement de changement d'outil avant l'exécution de la commande M06. Le non-respect de cette étape comporte un risque de collision entre l'outil et la pièce ou le dispositif de serrage pendant le changement.
Lire le G-Code étape par étape : un exemple complet de fraisage
Pour lire correctement un code G, il faut suivre l'état de la machine après chaque ligne — et pas seulement prendre connaissance des positions. Voici un programme complet de fraisage 2D accompagné de commentaires techniques expliquant ce que chaque section fait concrètement sur la machine.
%
O1001
G21 G90 G17
G00 X0 Y0
T1 M06
S8000 M03
G43 H01 Z50,0
G00 Z5,0
G01 Z-2,0 F200
G01 X50,0 Y0,0 F400
G01 X50,0 Y30,0
G01 X0,0 Y30,0
G01 X0,0 Y0,0
G00 Z50,0
M05
M30
%
G21 G90 G17 — Définit les unités métriques, le positionnement absolu et le plan XY. Ces trois états modaux déterminent l’interprétation des coordonnées pour l’ensemble du programme. Si l’un d’entre eux fait défaut, l’état du programme précédent est repris par défaut — ce qui constitue une source fréquente de comportements inattendus lors de l’exécution séquentielle des programmes.
G00 X0 Y0 — Déplacement rapide vers le point zéro dans les axes X et Y. Pas d'usinage. L'outil se déplace à pleine vitesse de rapid ; il n'y a pas de protection de la vitesse d'avance.
T1 M06 — Sélectionne l'outil 1 et effectue un changement d'outil. L'exécution est mise en pause jusqu'à ce que le changement soit terminé. La machine doit se trouver à la position de changement d'outil prévue avant cette ligne, sous peine de risque de collision.
S8000 M03 — Démarre la broche à 8 000 tr/min dans le sens des aiguilles d'une montre. Pour une fraise en bout de 10 mm dans de l'aluminium 6061, cela correspond à une vitesse de surface d'environ 251 m/min — ce qui se situe dans la plage de coupe efficace pour le carbure non revêtu ou revêtu de TiN.
G43 H01 Z50,0 — Active la compensation de longueur d'outil à l'aide du décalage H01 et se déplace à la position Z50 dans le repère de référence corrigé. Il s'agit de la ligne qui définit le point zéro Z correct pour l'usinage. L'absence de la commande G43 signifie que la position Z de l'outil est référencée sans que la longueur réelle de l'outil ne soit prise en compte.
G00 Z5,0 — Approche rapide jusqu'à 5 mm au-dessus de la surface de travail. Toujours pas de découpe : l'outil se positionne au-dessus de la pièce.
G01 Z-2,0 F200 — Plongée contrôlée à une profondeur de 2 mm à une vitesse d'avance de 200 mm/min. La réduction de la vitesse d'avance lors de la plongée limite la charge de coupe axiale. À une vitesse d'avance de F200 avec une fraise à queue à deux cannelures de 10 mm, la charge de copeaux par dent lors de la plongée est d’environ 0,0125 mm — une valeur prudente mais appropriée pour un mouvement d’entrée en Z.
G01 X50,0 Y0,0 F400 — Premier mouvement de coupe linéaire. La vitesse d’avance passe à F400 mm/min pour la passe de coupe latérale, ce qui génère une charge de copeaux d’environ 0,025 mm par dent à S8000 tr/min — valeur typique pour l’ébauche de l’aluminium.
Mouvements G01 suivants — Tracez les trois côtés restants du profil rectangulaire. Les commandes G01 et F400 restent actives (modales) — il n'est pas nécessaire de les redéfinir, sauf en cas de modification de l'avance.
G00 Z50,0 — Retrait rapide jusqu'à la hauteur Z de sécurité. La découpe est terminée ; la machine sort à pleine vitesse rapide.
M05 — Arrêt de la broche. Veillez à toujours arrêter la broche avant la fin du programme.
M30 — Fin du programme et réinitialisation. Le contrôleur revient au début du programme, prêt pour la partie suivante.
Erreurs courantes en lecture
Ignorer l'état modal : Les commandes G01 et F400 restent actives tant qu’elles ne sont pas explicitement modifiées. Un programmeur qui ajoute ultérieurement un nouveau déplacement et oublie que ces commandes sont toujours actives obtiendra un déplacement de coupe là où il avait prévu un déplacement rapide.
En supposant que l'ordre soit flexible : La mise en marche de la broche (M03) doit précéder le mouvement d'usinage. Le décalage d'outil (G43) doit être activé avant le positionnement sur l'axe Z. Il ne s'agit pas de simples recommandations, mais bien d'exigences indispensables à la sécurité de l'opération.
Lecture des coordonnées sans suivi de l'état : Une position telle que Z-2,0 n'a de sens que dans le contexte du système de coordonnées actif, du décalage de l'outil et du mode de positionnement. Lisez d'abord l'état, puis les coordonnées.
Erreurs courantes dans le G-Code et comment les diagnostiquer
La plupart des problèmes graves liés au modèle CNC ne proviennent pas d'un code complexe. Ils sont dus à de petites erreurs modales, à des décalages erronés ou à des incohérences d'unités qui se répercutent dans l'ensemble du programme.
Erreurs de mode
Une commande modale mal définie — ou qui n'a jamais été annulée après utilisation — affecte tous les blocs suivants jusqu'à ce qu'elle soit modifiée. Si le mode G91 (mode incrémental) reste actif après une sous-routine de palpage, tous les déplacements absolus prévus par la suite s’exécutent sous forme de décalages incrémentaux. L’outil se retrouve alors très loin de la position prévue, et le contrôleur ne génère aucune alarme car le déplacement était syntaxiquement valide.
Ces erreurs ne sont pas détectées en analysant chaque ligne individuellement. Elles nécessitent de suivre l'état de la machine tout au long de la séquence du programme — mentalement ou par simulation.
Erreurs de coordonnées et de décalage
Les erreurs de code G les plus risquées concernent les erreurs liées au système de coordonnées et aux décalages :
- Décalage de travail incorrect (par exemple, G54 sélectionné alors que le programme prévoit G55)
- Compensation de longueur d'outil incorrecte ou manquante (incohérence G43/H)
- Confusion entre les codes G90 et G91 lors du passage du mode absolu au mode incrémental
Chacune de ces instructions peut provoquer un plantage ou générer un élément invalide sans pour autant entraîner d'erreur de syntaxe. Le contrôleur fait exactement ce que le code lui demande — mais ce n'est tout simplement pas ce qui était prévu.
Approche diagnostique : validation par étapes
L'approche technique standard pour la validation du code G s'articule autour de niveaux de fiabilité croissante :
- Révision du code — vérifier les unités, les systèmes de coordonnées, les activations de décalage et les réinitialisations modales
- Simulation CAM ou du contrôleur — vérifier le mouvement de manière graphique avant toute exécution
- Essai à vide — exécuter avec la broche à l'arrêt et le décalage de l'axe Z augmenté de 50 à 100 mm
- Exécution bloc par bloc avec priorité sur l'avance — exécute le programme réel ligne par ligne à vitesse réduite
| Type d'erreur | Risque | La prévention |
|---|---|---|
| La commande modale n'a pas été réinitialisée | Mouvement de coupe imprévu | Réécrire explicitement les codes G essentiels à chaque opération |
| Système de coordonnées incorrect | Usinage à un emplacement incorrect | Toujours définir le décalage de travail au début du programme |
| Décalage de longueur d'outil manquant | Collision de l'outil ou surcoupe | Activer la commande G43 avec une valeur H vérifiée avant le déplacement en Z |
| Incompatibilité d'unités (G20/G21) | Positions pondérées ou crash | Déclarez explicitement les unités — ne vous fiez jamais aux valeurs par défaut |
| Déplacement rapide et dangereux | Collision | Utiliser des plans de dégagement et vérifier le comportement en marche à vide |
G-Code avancé : macros, sous-programmes et cycles prédéfinis
Variables macro et programmation paramétrique
La programmation par macros introduit des variables dans le code G, ce qui permet d'utiliser une logique paramétrique et conditionnelle que les programmes statiques ne peuvent pas offrir. Au lieu de coder en dur les profondeurs, les positions ou les vitesses d'avance, les ingénieurs définissent les valeurs une seule fois et y font référence tout au long du programme.
#100 = 20,0 (longueur de poche)
#101 = 5,0 (profondeur de coupe)
G01 X#100 Z-#101 F300
Cette approche s'avère particulièrement utile pour les familles de pièces — où le diamètre d'alésage, la profondeur de poche ou l'espacement des trous varient selon la configuration — ainsi que pour les cycles de mesure en machine qui adaptent les paramètres d'usinage en fonction des résultats de palpage. Le revers de la médaille est la complexité : les macros nécessitent une documentation et une validation minutieuses, et les erreurs dans la logique conditionnelle peuvent entraîner des mouvements inattendus.
Sous-programmes et éléments récurrents
Les sous-programmes (appelés avec la commande M98 et renvoyés avec la commande M99) permettent de définir une seule fois des séquences de mouvements répétitives et de les exécuter plusieurs fois. Un motif de perçage qui apparaît six fois sur une pièce ne nécessite pas six copies de la séquence de perçage : un seul sous-programme suffit pour toutes les occurrences.
M98 P2000 L6 (Appeler le sous-programme O2000 six fois)
Au-delà de la concision du code, les sous-programmes améliorent la cohérence : les six trous suivent exactement la même séquence de mouvements. Toute modification de la stratégie de perçage — vitesse d'avance, profondeur, incrément de perçage — nécessite de modifier un seul sous-programme, et non six blocs de code distincts.
Cycles prédéfinis : la productivité sans perte de contrôle
Les cycles prédéfinis regroupent des séquences d'usinage courantes (perçage, taraudage, alésage, alésage de précision) en une seule commande. Un cycle de perçage qui nécessiterait autrement des blocs distincts pour l'approche, la plongée, le temps d'arrêt et le retrait se résume ainsi à une seule ligne :
G81 X20,0 Y10,0 Z-15,0 R2,0 F200
Cela réduit le temps de programmation, raccourcit le code et garantit un comportement cohérent pour tous les trous du motif. Remarque importante : les cycles prédéfinis doivent être annulés à l'aide de la commande G80 une fois terminés, et leurs paramètres (mode de retrait, temps d'attente, incrément de perçage) doivent correspondre à la configuration du contrôleur. Le comportement des cycles prédéfinis varie selon les contrôleurs Fanuc, Haas et Siemens — vérifiez toujours ces informations dans le manuel de programmation spécifique à la machine.
Différences entre les contrôleurs CNC en matière de code G
Fanuc, Haas et bien d'autres encore
Les contrôleurs basés sur Fanuc constituent ce qui se rapproche le plus, dans le secteur, d'une référence standard en matière de code G. De nombreux constructeurs de machines-outils basent leurs systèmes de commande sur l’architecture Fanuc, ce qui rend le code compatible Fanuc raisonnablement portable d’une machine à l’autre. Les contrôleurs Haas sont en grande partie compatibles Fanuc, mais ils intègrent des extensions propriétaires, des états modaux par défaut différents et une syntaxe de macro spécifique à Haas qui peut modifier le comportement d’exécution des programmes partagés.
Les contrôleurs Siemens et Heidenhain utilisent la syntaxe du code G, mais fonctionnent de manière très différente dans la pratique. Heidenhain, en particulier, s'appuie sur la saisie conversationnelle pour de nombreuses opérations. Mazatrol (le système propriétaire de Mazak) est principalement conversationnel, le code G constituant une option secondaire. Les programmes écrits pour un type de contrôleur nécessitent souvent une régénération par post-processeur — et pas seulement une simple modification — avant de pouvoir être exécutés sur une autre plateforme.
Pourquoi le G-Code n'est pas universel
Différences spécifiques qui ont une incidence dans la pratique :
- Les jeux de codes G et M pris en charge varient : certains codes valides sur un contrôleur peuvent déclencher des alarmes sur un autre.
- Les paramètres du cycle de découpe (profondeur de découpe, type de rétraction, durée de maintien) varient d'un fabricant à l'autre
- La syntaxe des variables de macro et les commandes de logique conditionnelle dépendent du contrôleur
- Les algorithmes d'anticipation et les profils d'accélération influent sur la fluidité du mouvement, même lorsque le code G est identique.
C'est pourquoi les post-processeurs CAM sont spécifiques à chaque machine plutôt que génériques. Le post-processeur convertit les trajectoires d'outils CAM dans le dialecte de code G adapté au contrôleur cible — et non en un code G universel pouvant être exécuté par n'importe quelle machine.
Ce que les concepteurs et les équipes d'approvisionnement doivent savoir
Du point de vue des achats, le code G doit être considéré comme une donnée de production spécifique à la machine. Le partage d’un fichier de code G entre fournisseurs suppose que les machines et les contrôleurs soient identiques — une hypothèse qui ne se vérifie souvent pas. La meilleure pratique consiste à partager les données CAD et CAM plutôt que le code G final, et à vérifier le type de machine et la version du contrôleur avant le transfert des programmes. Lorsque le partage du code G est inévitable, il est essentiel de procéder à une simulation sur le contrôleur destinataire avant l’usinage.
Conclusion
Dans l'usinage CNC, le code G constitue le dernier maillon entre la conception et l'usinage proprement dit. Les systèmes de FAO planifient le parcours d'outil ; le fichier de code G correspond à ce que la machine exécute réellement. Comprendre la structure du code G, sa logique modale et sa séquence d'exécution permet aux ingénieurs d'avoir une visibilité directe sur ce qui se passe au niveau du bord de coupe — et de comprendre pourquoi des problèmes surviennent à certains moments.
Pour toute personne travaillant dans des environnements CNC — qu’il s’agisse d’écrire des programmes, de vérifier les paramétrages des fournisseurs ou de résoudre des problèmes d’usinage —, la maîtrise du code G permet un diagnostic plus rapide, une meilleure communication avec les opérateurs et moins de surprises en atelier. Il n’est pas nécessaire d’écrire du code G à partir de zéro dans un flux de travail piloté par une logiciel de FAO. En revanche, vous devez être capable de le lire, de comprendre ce que la machine va faire et de repérer les cas où un élément du code ne correspond pas au résultat escompté.
FAQ
Toutes les machines CNC utilisent-elles le même code G ?
Non. Le code G n'est pas entièrement normalisé dans l'ensemble du secteur. Les contrôleurs Fanuc, Haas, Siemens et Heidenhain utilisent tous la syntaxe du code G, mais avec des jeux de commandes, des définitions de cycles prédéfinis, une syntaxe de macros et des états modaux par défaut qui varient. Des programmes qui s'exécutent correctement sur un contrôleur peuvent déclencher des alarmes ou produire des mouvements différents sur un autre. C'est pourquoi les post-processeurs CAM sont spécifiques à chaque contrôleur.
Les machines CNC peuvent-elles fonctionner sans code G ?
Au niveau du contrôle, non. Même la programmation conversationnelle et les parcours d'outils générés par la CAM sont finalement convertis en code G (ou en instructions de bas niveau équivalentes) pour être exécutés. Le code G est le langage d'exécution natif de la machine — tout le reste n'est qu'une couche superposée à celui-ci.
La programmation manuelle en G-code est-elle encore nécessaire ?
La programmation manuelle complète est rarement nécessaire dans les environnements de production. Cependant, savoir lire et modifier le code G reste une compétence utile pour le débogage, l’optimisation des temps de cycle, les petites modifications apportées aux programmes existants, ainsi que pour communiquer avec les opérateurs de machines et les fournisseurs. La plupart des ingénieurs CNC n’écrivent pas de programmes à partir de zéro, mais ils travaillent régulièrement avec des fichiers de code G.
Comment puis-je tester en toute sécurité un nouveau programme G-code ?
Adoptez une approche de validation par étapes : vérifiez le code au niveau des unités, des systèmes de coordonnées et des déclarations de décalage ; lancez une simulation CAM ou du contrôleur ; effectuez un essai à vide avec la broche à l'arrêt et l'axe Z relevé de 50 à 100 mm au-dessus de la pièce ; puis exécutez un bloc unique avec une surcompensation d'avance réduite avant de lancer un cycle complet.
Quelle est la différence entre le code G et la programmation conversationnelle ?
Le code G est explicite et sous forme de texte : chaque action de la machine est directement codée. La programmation conversationnelle utilise des menus et des invites pour définir les opérations, que le contrôleur convertit en code G en interne. La programmation conversationnelle est plus rapide pour les pièces simples usinées sur la machine ; le code G offre davantage de transparence, de portabilité et de contrôle pour les programmes complexes comportant plusieurs opérations.





