Maîtriser la programmation CNC : langage, structure et codes G/M
OBJECTIFS
À la fin de cette unité, vous serez capable de :
- Identifier les instructions du programme.
- Comprendre le format de programme.
- Décrire les codes d'adresse par lettre (Letter Address Commands).
- Décrire les définitions des codes de caractères spéciaux.
- Comprendre les codes G et M.
Les programmes CNC listent les instructions dans l'ordre d'exécution. Ils se lisent comme un livre : gauche à droite, haut en bas. Chaque phrase = une ligne séparée = un Bloc. Les blocs suivent une séquence spécifique favorisant sécurité, prévisibilité, lisibilité → importante d'adhérer à une structure standard.
Ordre des blocs :
- Début programme
- Charger outil
- Broche ON
- Réfrigérant ON
- Rapide au-dessus de la pièce
- Opération d'usinage
- Réfrigérant OFF
- Broche OFF
- Position sûre
- Fin programme
Ce ci-dessus = programme le plus simple (1 outil, 1 opération). Programmes multi-outils répètent étapes 2-9 pour chaque outil.
Tableaux 3 et 4 (section Codes G & M) montrent les codes G et M les plus courants à mémoriser si possible.
Comme tout langage, le G-code a des règles. Exemple : certains codes sont modaux (restent actifs jusqu'à annulation/changement). Certains ont des sens différents selon contexte. Ces règles sont couvertes ici, mais pas besoin d'apprendre toutes les nuances : le Post-Processeur CAO/FAO formate et écrit correctement le programme CNC.
FORMAT DE PROGRAMME
Le programme du Tableau 1 usine un contour carré et perce un trou.
| Bloc | Description | But |
|---|---|---|
| % O1234 (T1 0.25 END MILL) G17 G20 G40 G49 G80 G90 |
Début programme. Numéro programme (Nom). Description outil pour opérateur. Bloc sécurité pour mode sûr. |
Début Programme |
| T1 M6 S9200 M3 |
Charger Outil #1. Vitesse broche 9200 tr/min, sens horaire. |
Changement Outil |
| G54 M8 G00 X-0.025 Y-0.275 G43 Z1. H1 Z0.1 G01 Z-0.1 F18. |
Utiliser Décalage Dispositif #1. Réfrigérant ON. Rapide au-dessus pièce. Rapide plan sécurité, TLO #1. Rapide plan avance. Linéaire à profondeur coupe à 18 IPM. |
Positionnement |
| G41 Y0.1 D1 F36. Y2.025 X2.025 Y-0.025 X-0.025 G40 X-0.4 G00 Z1. |
CDC Gauche, entrée ligne, Décalage Dia #1, 36 IPM. Déplacement linéaire. Déplacement linéaire. Déplacement linéaire. Déplacement linéaire. CDC OFF avec sortie. Rapide plan sécurité. |
Usinage Contour |
| M5 M9 (T2 0.25 DRILL) T2 M6 S3820 M3 |
Broche OFF. Réfrigérant OFF. Description outil opérateur. Charger Outil #2. Vitesse 3820 tr/min, horaire. |
Changement Outil |
| M8 X1. Y1. G43 Z1. H2 Z0.25 |
Réfrigérant ON. Rapide au-dessus trou. Rapide plan sécurité, TLO #2. Rapide plan avance. |
Positionnement |
| G98 G81 Z-0.325 R0.1 F12. G80 Z1. |
Cycle perçage (canned), Prof Z-.325, F12. Annuler cycle perçage. Rapide plan sécurité. |
Perçage Trou |
| M5 M9 G91 G28 Z0 G91 G28 X0 Y0 G90 M30 % |
Broche OFF. Réfrigérant OFF. Retour Home machine en Z. Retour Home machine en XY. Reset mode positionnement absolu (sécurité). Reset programme au début. Fin Programme. |
Fin Programme |
CODES D'ADRESSE PAR LETTRE (LETTER ADDRESS COMMANDS)
Le bloc de commande contrôle la machine via des commandes d'adresse par lettre. Certaines sont réutilisées, leur sens change selon le G-code du même bloc.
Codes soit modaux (restent actifs jusqu'à annulation/changement), soit non-modaux (actifs seulement dans le bloc courant). Beaucoup d'adresses sont logiques (T=outil, S=broche, F=avance, etc.).
Tableau 2 : Codes d'adresse par lettre les plus courants.
| Variable | Description | Définitions |
|---|---|---|
| A | Position absolue/incrémentale axe A (axe rotatif autour de X) | A,B,C – Mouvement rotatif 4ème/5ème axe. Rotation autour de X, Y, Z respectivement. Angle en degrés, 3 décimales. G01 A45.325 B90. |
| B | Position absolue/incrémentale axe B (rotatif autour de Y) | Idem A |
| C | Position absolue/incrémentale axe C (rotatif autour de Z) | Idem B |
| D | Définit décalage diamètre/rayal pour compensation rayon outil (CDC) | Compense usure/déflexion diamètre outil. D + entier = n° outil (T5→D5). Pas de décimale. Toujours avec G41/G42 et mouvement XY (jamais arc). Contrôle lit registre et décale trajectoire gauche (G41) ou droite (G42) de la valeur du registre. G01 G41 X2. D1 |
| E | Avance de précision pour filetage tours | – |
| F | Définit vitesse d'avance (Feed rate) | Vitesse avance usinage lignes, arcs, cycles perçage. Avance en pouces/min (mode G94) ou temps inverse (G93). Jusqu'à 3 décimales (cycles taraudage), point décimal requis. G01 X2. Y0. F30. |
| G | Adresse codes préparatoires | G commande dit au contrôle type mouvement voulu (rapide, linéaire, circulaire, cycle fixe) ou quelle valeur décalage utiliser. G02 X2. Y2. I.50 J0. |
| H | Définit décalage longueur outil (TLO); axe incrémental correspondant à C (ex: tour-fraiseuse) | Appelle registre TLO sur contrôle. Contrôle combine TLO + Fixture Offset Z pour savoir où est l'outil par rapport datum pièce. Toujours avec entier (H1, H2), G43, coordonnée Z. G43 H1 Z2. |
| I | Définit taille arc en X pour G02/G03. Paramètre dans certains cycles fixes. | Pour arcs (G2/G3) : distance incrémentale X du point départ arc au centre arc. Certains cycles perçage utilisent I paramètre optionnel. G02 X.5 Y2.500 I0. J0.250 |
| J | Définit taille arc en Y pour G02/G03. Paramètre dans certains cycles fixes. | Pour arcs : distance incrémentale Y départ arc → centre arc. Cycles perçage : J paramètre optionnel. G02 X.5 Y2.500 I0. J0.250 |
| K | Définit taille arc en Z pour G02/G03. Paramètre cycles fixes, = adresse L. | Pour arc : distance incrémentale Z départ → centre. Plan G17 : distance Z incrémentale pour hélicoïdaux. Cycles perçage : J optionnel. G18 G03 X.3 Z2.500 I0. K0.250 |
| L | Compteur boucles cycles fixes; Spécification registre à éditer via G10 | Compteur boucles : nombre répétitions cycle fixe à chaque position. Défaut 1. Parfois K utilisé au lieu de L. Positionnement incrémental (G91) : série trous équidistants programmable comme boucle. G10 : spécification registre à éditer (décalages pièce, rayon outil, longueur outil, etc.). |
| M | Fonction divers (Miscellaneous) | Toujours avec entier déterminant sens. Un seul M-code par bloc. Définitions étendues plus loin. M08 |
| N | Numéro ligne (bloc) dans programme; N° paramètre système à changer via G10 | Numéros blocs facilitent lecture. Rarement requis pour programmes CAO/FAO sans sous-programmes. Prennent mémoire contrôle → la plupart programmes 3D n'en utilisent pas. Entiers ≤5 caractères, sans décimale. Ne peuvent apparaître avant % et généralement pas avant bloc commentaire seul. N100 T02 M06 |
| O | Nom de programme | Programmes stockés sur contrôle par leur numéro. Entier précédé de O, sans décimales. O1234 (Exercice 1) |
| P | Adresse paramètre pour divers G et M codes | Temporisation (dwell) en secondes. Avec G4 sauf dans certains cycles perçage. G4 P.1 |
| Q | Incrément picorage (peck) dans cycles canned | Distance avance incrémentale par passe en cycle picorage. G83 X2.000 Y2.000 Z-.625 F20. R.2 Q.2 P9. |
| R | Définit rayon arc ou hauteur rétraction cycles canned | Arcs définissables par rayon R ou vecteurs IJK. IJK plus fiables → recommandés. R aussi utilisé par cycles perçage comme plan retour Z. G83 Z-.625 F20. R.2 Q.2 P9. |
| S | Définit vitesse, broche ou vitesse coupe selon mode | Vitesse broche en tr/min (RPM). Entier sans décimale, toujours avec M03 (horaire) ou M04 (anti-horaire). S2500 M03 |
| T | Sélection outil | Sélectionne outil. Entier toujours avec M6 (changement outil). T01 M06 |
| U | Axe incrémental correspondant à X (généralement tours groupe A). Aussi temps d'attente sur certaines machines. | Sur ces commandes, X et U remplacent G90/G91. Sur ces tours, G90 = adresse cycle fixe ébauche. |
| V | Axe incrémental correspondant à Y | Jusqu'aux années 2000, V peu utilisé (tours avec U,W sans axe Y). Encore souvent le cas, mais outillage tournant et tour-fraiseuse rendent V moins rare. |
| W | Axe incrémental correspondant à Z (généralement tours groupe A) | Z et W remplacent G90/G91. G90 = adresse cycle fixe ébauche. |
| X | Position absolue/incrémentale axe X | Données coordonnées X. 4 décimales max, zéros finaux non utilisés. Coordonnées modales → pas besoin répéter si inchangées. G01 X2.250 F20. |
| Y | Position absolue/incrémentale axe Y | Données coordonnées Y. G01 Y2.250 F20. |
| Z | Position absolue/incrémentale axe Z | Données coordonnées Z. |
DÉFINITIONS DES CODES CARACTÈRES SPÉCIAUX
- % – Début ou Fin de programme : Tous programmes commencent et finissent par % sur une ligne seule. Code « tape rewind » (héritage bandes papier).
- () – Commentaires : Commentaires opérateur en MAJUSCULES entre parenthèses. Max 40 caractères, tout en capitales. (T02: 5/8 END MILL)
- / – Suppression bloc (Block Delete) : Codes après ce caractère ignorés si commutateur Block Delete sur ON. / M00
- ; – Fin de bloc : Non visible dans éditeur texte (retour chariot), mais apparaît fin de chaque bloc sur affichage commande. N8 Z0.750 ;
CODES G & M
Codes G et M constituent la majeure partie du programme CNC. Définition de chaque classe et sens des codes importants :
Codes G (Préparatoires)
Préparent la machine pour un type de mouvement.
| Code | Description |
|---|---|
| G00 | Mouvement rapide. Positionnement pour déplacements sans usinage. |
| G01 | Mouvement linéaire à vitesse d'avance spécifiée. |
| G02 | Arc horaire (clockwise). |
| G03 | Arc anti-horaire (counterclockwise). |
| G04 | Temporisation (Dwell). |
| G28 | Retour position Home machine. |
| G40 | Compensation diamètre outil (CDC) OFF. |
| G41 | CDC Gauche (Left). |
| G42 | CDC Droite (Right). |
| G43 | Compensation longueur outil (TLO). |
| G54 | Décalage Dispositif #1. |
| G55 | Décalage Dispositif #2. |
| G56 | Décalage Dispositif #3. |
| G57 | Décalage Dispositif #4. |
| G58 | Décalage Dispositif #5. |
| G59 | Décalage Dispositif #6. |
| G80 | Annuler cycle perçage. |
| G81 | Cycle perçage simple. |
| G82 | Cycle perçage simple avec pause. |
| G83 | Cycle perçage par picorage (peck). |
| G84 | Cycle taraudage. |
| G90 | Mode programmation coordonnées absolues. |
| G91 | Mode programmation coordonnées incrémentales. |
| G98 | Retour cycle perçage au point Initial (R). |
| G99 | Retour cycle perçage au plan Référence (dernière hauteur Z). |
Codes M (Divers / Miscellaneous)
Contrôlent options auxiliaires : réfrigérant, sens broche. Un seul M-code par bloc.
| Code | Description |
|---|---|
| M00 | Arrêt programme. Appuyer Cycle Start pour continuer. |
| M01 | Arrêt optionnel. |
| M02 | Fin de programme. |
| M03 | Broche ON Horaire. |
| M04 | Broche ON Anti-horaire. |
| M05 | Broche STOP. |
| M06 | Changement outil. |
| M08 | Réfrigérant ON. |
| M09 | Réfrigérant OFF. |
| M30 | Fin programme + appuyer Cycle Start pour relancer. |
Définitions G-code sélectionnées (Étendues)
G00 – Mouvement Rapide (Rapid Move)
Commande déplacement maxi vitesse vers point spécifié. Toujours avec position coordonnée, modal. Contrairement à G01, G00 ne coordonne pas axes pour ligne droite : chaque axe va à sa vitesse maxi jusqu'à satisfaction. Résultat = mouvement comme Figure 1.
G00 X0. Y0.

Figure 1. Mouvement G00
Attention : Vitesse rapide certaines machines > 10 m/s. Mauvaise coordonnée/décalage = crash plus vite que l'opérateur n'appuie sur arrêt d'urgence. Utiliser l'override avance rapide sur machine lors premier run.
Mouvement Linéaire = Mouvement Ligne Droite
G-code = mouvement. Mouvement le plus courant = ligne droite (linéaire). Mouvement modal : on dit au contrôle type mouvement voulu par G-code, il mémorise jusqu'à changement par autre G-code.
- G00 : Positionnement rapide ; vitesse maxi machine. Déplace outil dans air vers prochaine position coupe.
- G01 : Mouvement coupe plus lent ; vitesse coupe. Avance réglée par « F ».
F-word = « F » pour « Feedrate » (avance).
S-word = « S » pour « Spindle Speed » (vitesse broche), unité tr/min.
Spécifier mouvement linéaire avec X, Y, Z
G00 ou G01 seul ne cause aucun mouvement – ils disent juste au contrôle quel type attendre quand on lui donne destination. Pour mouvement réel, spécifier destination via X, Y, Z. Pour aller au zéro pièce :
G00 X0 Y0 Z0 (ou G01 si plus lent : G01 X0 Y0 Z0 F40.)
Mouvement interpolé = quand on spécifie plusieurs coordonnées sur une ligne = plusieurs axes bougent simultanément. Contrôle les déplace à vitesse relative exacte pour que l'outil suive ligne droite vers destination à l'avance programmée.
Si même destination mais coordonnées sur plusieurs lignes = chaque ligne = mouvement séparé :
G00 X0 Y0 (Déplace X0 Y0 en un mouvement, Z constant)
Z0 (Déplace Z0 en un mouvement, X et Y constants)
G00 et G01 modaux → on les spécifie seulement pour changer de mode.
Axe Z
Mouvements interpolés soulèvent point pour Z. Souvent mieux de déplacer axe profondeur de coupe seul, pas en mouvement coordonné avec X,Y. Risque collision quand outil approche pièce/bridage. D'abord X,Y puis Z = plus facile juger collision imminente. Moins de risque heurter objet saillant (serre-joint) si outil reste haut jusqu'au-dessus zone coupe.
G02 et G03 : Mouvement Circulaire = Mode Initié
- G02 : mode arcs horaires.
- G03 : mode arcs anti-horaires.
Une fois mode G02/G03 établi, arcs définis en G-code par leurs 2 extrémités et centre (équidistant des extrémités). Extrémités faciles : point de contrôle courant (position au début bloc) = 1ère extrémité. L'autre par coordonnées XYZ. Centre identifié meist par I, J, K = décalages incrémentaux du point départ arc au centre.
EXEMPLE ARC HORAIRE

Figure 2. Centre d'arc avec IJK
Arc commence X0 Y2, finit X2 Y0. Centre = X0 Y0. G-code :
G02 (mode arc horaire)
X2 Y0 I0 J-2.0
Centre par Rayon « R »
Centre en spécifiant juste rayon du cercle. Rayon = 2 → G-code :
G02 X2 Y0 R2
G17/G18/G19 – Désignation Plan
Arcs doivent exister sur plan désigné par G17 (XY), G18 (XZ), G19 (YZ). G17 = défaut machine.

Figure 3. Désignation Plan
G40/G41/G42 – Compensation Diamètre Outil (CDC)
CDC = clé usinage CNC précision. Permet compenser usure/déflexion outil en commandant machine dévier gauche (G41) ou droite (G42) du chemin programmé. G40 annule compensation. Montant décalage entré dans registre D du contrôle CNC. Registre usure = tableau auquel contrôle se réfère à chaque mouvement.
Tableau 5 : Registre Décalage Diamètre
| Décalage Diamètre Outil | Valeur |
|---|---|
| D1 | 0.0125 |
| D2 | 0.0000 |
| D3 | 0.0000 |
| D4 | 0.0000 |
| D5 | 0.0000 |
| D6 | 0.0000 |
Valeur dans registre D calculée par opérateur : surveille dimensions finies, compare au plan, entre différence dans registre pour tenir pièce dans specs. Si pas d'écart, registre = 0.
G01 G41 D1 X1.0 Y.25 F40.
G43 – Compensation Longueur Outil
G43 active compensation longueur outil. Toujours avec H-code et mouvement Z : H = registre TLO à lire, Z = hauteur à atteindre par rapport datum pièce.
TLO = tableau sur contrôle :
Tableau 6 : Décalages Pièce (Work Offsets)
| Registre Longueur Outil | Z |
|---|---|
| H1 | 10.236 |
| H2 | 4.7510 |
| H3 | 6.9652 |
| H4 | 7.6841 |
| H5 | 12.4483 |
| H6 | 8.2250 |
TLO combiné avec décalage dispositif actif → machine sait où est pointe outil par rapport datum pièce.
G43 H1 Z1.
G54 – Décalage Pièce (Work Offset)
Décalages pièce = registres données dans contrôle CNC gardant distance Home machine X,Y,Z → datum pièce. Tableau sur contrôle :
Tableau 7 : Décalage Pièce (Work Offset)
| Décalage Pièce | X | Y | Z |
|---|---|---|---|
| G54 | 14.2567 | 6.6597 | 0.0000 |
| G55 | 0.0000 | 0.0000 | 0.0000 |
| G56 | 0.0000 | 0.0000 | 0.0000 |
| G57 | 0.0000 | 0.0000 | 0.0000 |
| G58 | 0.0000 | 0.0000 | 0.0000 |
| G59 | 0.0000 | 0.0000 | 0.0000 |
Astuce : G54 généralement utilisé pour 1ère mise en place. Décalages additionnels pour usiner autres faces pièce.
X,Y = distance Home machine → datum pièce XY. Z = distance point référence outil (ex: sommet bloc 1-2-3) → datum Z pièce.
G54 X0. Y0.
TEST DE L'UNITÉ
- Décrire les instructions de liste programme CNC.
- Tous programmes CNC commencent et finissent par quoi ?
- Décrire codes d'adresse par lettre.
- Lister 3 codes caractères spéciaux.
- Décrire codes G et M.
- Décrire G00 G90 G54 X0 Y0.
- Décrire G00 G90 G43 H1 Z1.
- Différence entre G00 et G01 ?
- Différence entre G02 et G03 ?
- Décrire mots F et S.
Technologie industrielle
- Fondamentaux de la programmation microprocesseur
- Comprendre la structure d'un programme C : Guide pour débutants
- Comprendre la structure d'un programme C# : composants de base et exemple
- Maîtriser la précision du fraisage CNC : étapes éprouvées pour pièces de précision
- Services premium d'usinage CNC et d'outillage à Portland, Oregon
- Unité 5 : Opération CNC – Maîtriser la mise en service et le contrôle Haas Mill
- Améliorer la Précision & Exactitude des Machines-Outils CNC : Guide Complet
- Comprendre les rectifieuses d'outils et de fraises CNC : fonctions, utilisations et avantages
- Prérégleur d'outils CNC et mesure : guide essentiel pour précision et efficacité