Chaque mouvement effectué par une machine CNC — chaque vitesse d'avance, chaque démarrage de broche, chaque changement d'outil — est piloté par le code G et le code M. Ces deux types de commandes constituent la couche d'instructions entre un parcours d'outil généré par la FAO et l'enlèvement de matière proprement dit. Le code G contrôle la géométrie et le mouvement ; le code M contrôle l'état de la machine qui rend ce mouvement sûr et efficace. C'est la compréhension de leur interaction qui distingue les programmeurs capables d'écrire un code de production fiable de ceux qui se contentent d'exécuter ce que génère la FAO.
Cet article aborde les codes G et M sous un angle pratique d'ingénierie : ce que chacun contrôle, le fonctionnement de la structure du programme et de la logique d'état modal, les codes courants dans un contexte réel d'usinage, les différences entre les contrôleurs qui affectent la portabilité, ainsi que les erreurs de programmation à l'origine de la plupart des pannes et des rebuts. L'objectif n'est pas de fournir une liste de référence des commandes, mais de permettre de comprendre la logique d'exécution qui rend les programmes CNC prévisibles et reproductibles.
Que sont les codes G et M ? La différence fondamentale
La distinction fondamentale est simple. Le code G contrôle le déplacement de l'outil et la géométrie. Le code M contrôle l'état de la machine et les fonctions auxiliaires. Les deux sont indispensables. L'un ne peut fonctionner sans l'autre.
| Aspect | Code G | Code M |
|---|---|---|
| Fonction principale | Mouvement et géométrie de l'outil | Fonctionnement et état de la machine |
| Commandes | Axes, interpolation, avances, systèmes de coordonnées | Broche, liquide de refroidissement, changements d'outils, déroulement du programme |
| Conséquences | Précision, état de surface, temps de cycle | Sécurité, fiabilité, conditions de coupe |
| Exemples | G00, G01, G02, G17, G54 | M03, M05, M06, M08, M30 |
Code G : géométrie et logique de mouvement
Les codes G répondent à la question suivante : Comment l'outil doit-il se déplacer pour créer cette géométrie ? Ils définissent le mode de positionnement, le type d'interpolation, le comportement d'avance et le système de coordonnées actif. La qualité de finition de surface, la précision dimensionnelle et la répartition de la charge sur l'outil dépendent toutes directement de la manière dont les codes G sont structurés et enchaînés.
Considérez le code G comme le « cerveau géométrique » du programme. Il sait où l'outil doit aller et comment il doit s'y rendre.
Code M : Commande des machines et des automates programmables
Les codes M répondent à une autre question : Comment la machine doit-elle se comporter pendant l'exécution de ce mouvement ? Ils gèrent le démarrage et le sens de rotation de la broche, l'activation du liquide de refroidissement, les changements d'outils et le contrôle du déroulement du programme. Toutes ces fonctions sont gérées par l'automate programmable (PLC) de la machine — une couche de commande distincte du contrôleur de mouvement.
Voici une façon utile d'envisager les choses : le code G définit le parcours ; le code M prépare et maintient les conditions nécessaires à l'usinage le long de ce parcours. Un parcours d'outil correctement défini échouera immédiatement si la broche ne tourne pas, si le mauvais outil est chargé ou si le liquide de refroidissement n'est pas activé. Ces conditions relèvent entièrement du code M.
Structure du programme CNC : blocs, états modaux et logique d'exécution
L'un des concepts les plus importants de la programmation CNC — et celui qui est à l'origine des comportements les plus inattendus — consiste à comprendre que le contrôleur exécute les programmes en tant que machine à états, et non pas comme une simple liste séquentielle d'instructions.
Blocs et ordre d'exécution
Un programme CNC comprend blocs — généralement une ligne d’instruction par bloc. Le contrôleur lit chaque bloc de gauche à droite et l’exécute dans son intégralité. Il est essentiel de noter que le contrôleur n’interprète pas l’intention. Il ne perçoit que le bloc actuel, combiné aux états modaux définis par les blocs précédents.
Cela signifie que deux commandes de mouvement d'apparence identique peuvent se comporter de manière totalement différente selon ce qui a été défini précédemment dans le programme. Une erreur à ce niveau est à l'origine de la plupart des comportements inattendus du mode CNC.
Codes modaux et non modaux
Cette distinction est essentielle pour comprendre le comportement du programme :
Codes modaux restent actifs jusqu'à ce qu'ils soient explicitement modifiés. Une fois définis, ils sont conservés dans tous les blocs suivants jusqu'à ce qu'ils soient remplacés. Exemples :
- Mode de déplacement (G00, G01, G02) — reste actif jusqu’à ce qu’un autre mode de déplacement soit activé
- Mode de positionnement (G90/G91) — le mode absolu ou incrémental reste défini jusqu’à ce qu’il soit modifié
- Sélection du plan (G17/G18/G19) — le plan de coupe actif est conservé
Codes non modaux sont exécutées une seule fois dans le bloc où elles apparaissent, puis n'ont plus aucun effet. Les commandes spécifiques d'annulation de cycle prédéfini et de pause en sont des exemples typiques.
| Comportement | Codes modaux | Codes non modaux |
|---|---|---|
| Persistance de l'état | Valable jusqu'à modification | Exécuter une seule fois |
| Risque en cas d'incompréhension | Mouvements involontaires dans les blocs suivants | Effet généralement localisé |
| Exemples courants | G00, G01, G90, G91, G17 | Actions ponctuelles, annulations de cycles spécifiques |
Conséquence pratique : un mode G01 resté actif depuis une opération précédente entraînera l'exécution du prochain déplacement de positionnement rapide comme un déplacement de coupe à vitesse d'avance. C'est un risque de collision imminent — et cela peut être entièrement évité en comprenant bien le fonctionnement des modes.
Phases de la logique du programme
Tout programme CNC fiable suit trois phases logiques :
Initialisation : Définissez explicitement l'état de la machine. Définissez les unités (G20/G21), le plan (G17), le mode de positionnement (G90), le décalage de la pièce (G54 ou équivalent) et le mode d'avance. Ne vous fiez jamais aux valeurs par défaut du contrôleur, car elles varient d'une machine à l'autre.
Usinage : Le code G est principalement utilisé pour le déplacement et la géométrie. Les codes M gèrent les conditions de coupe en arrière-plan : la broche continue de tourner, le liquide de refroidissement reste activé et l'outil reste engagé.
Arrêt : Retour à un état sûr et connu. L'outil se rétracte, la broche et le liquide de refroidissement s'arrêtent, le programme se termine et se réinitialise pour le cycle suivant.
Principaux types de code G : mouvements, positionnement et cycles fixes
Plutôt que de répertorier tous les codes G, la compréhension de ces trois catégories fonctionnelles permet de mieux cerner quand et pourquoi chaque type est utilisé dans les opérations d'usinage concrètes.
Codes G de déplacement et d'interpolation
Ces codes définissent la manière dont l'outil de coupe se déplace d'un point à l'autre. Ils ont une incidence directe sur l'état de surface, la durée du cycle et la charge de l'outil.
G00 – Positionnement rapide Déplace l'outil à la vitesse maximale de la machine. Utilisé exclusivement pour les déplacements sans usinage : approche, retrait, positionnement pour changement d'outil et déplacements de dégagement. La commande G00 privilégie la vitesse au détriment de la précision de la trajectoire — la trajectoire réelle entre deux points n'est pas une ligne droite sur la plupart des machines. Le dégagement par rapport au dispositif de fixation et à la pièce doit être vérifié, et non supposé.
G01 – Interpolation linéaire Déplace l'outil en ligne droite à une vitesse d'avance programmée. Il s'agit du mouvement de coupe principal pour la plupart des opérations de fraisage et de tournage. La vitesse d'avance est spécifiée par F — et cette valeur F reste active en mode jusqu'à ce qu'elle soit modifiée.
G02 / G03 – Interpolation circulaire La commande G02 génère des arcs dans le sens horaire ; la commande G03 génère des arcs dans le sens antihoraire. Utilisées pour les poches circulaires, les rayons d'angle, les congés et le contournage. Le point central ou le rayon (R) doit être spécifié. Sur la plupart des contrôleurs, la direction de l'arc est relative au plan actif (G17/G18/G19) — un détail important lors de la programmation d'arcs en dehors du plan XY.
La distinction essentielle : La commande G00 sert au positionnement entre les passes d'usinage. Les commandes G01/G02/G03 servent à l'enlèvement de matière. L'utilisation de la commande G00 à la place de la commande G01 — ou le fait de laisser la commande G01 active alors qu'un positionnement rapide est nécessaire — est l'une des causes les plus courantes de collisions et de sur-usinage.
Système de coordonnées et codes G de positionnement
Ces codes définissent où c'est le mouvement qui compte, et non la façon dont l'outil se déplace.
Systèmes de coordonnées de travail (G54–G59) Chaque décalage définit une relation entre le point zéro machine et le point zéro pièce. Plusieurs montages ou configurations peuvent être actifs dans un même programme en appelant différents décalages de travail. Dans la pratique de l'usinage, la commande G54 est la valeur par défaut pour un montage unique ; les commandes G55 à G59 sont utilisées pour les palettes à montages multiples ou les montages de type « tombstone ».
G90 – Positionnement absolu Toutes les coordonnées sont référencées par rapport au point zéro de travail actif. Un déplacement vers X50 correspond toujours à la position X50 par rapport au point zéro de la pièce, 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évisible et facile à vérifier.
G91 – Positionnement incrémental Chaque coordonnée se déplace par rapport à la position actuelle de l'outil. La commande G91 est très utile pour les motifs répétitifs et les éléments symétriques, mais elle peut s'avérer dangereuse si elle reste activée par inadvertance. Une commande incrémentale G01 Z-1,0 signifie “ descendre de 1 mm à partir de la position actuelle ”, et non à partir du point zéro de la pièce. Cela constitue une source importante d'erreurs de profondeur et de collisions.
Cycles en conserve
Les cycles prédéfinis permettent de regrouper en une seule ligne de commande les séquences répétitives de perçage, d'alésage et de taraudage. Au lieu de programmer séparément l'approche, l'avance, le temps d'arrêt, le retrait et la distance de sécurité pour chaque trou, un cycle prédéfini gère automatiquement l'ensemble de la séquence.
Parmi les exemples courants, on peut citer les codes G81 (perçage), G83 (perçage par à-coups pour trous profonds), G84 (taraudage) et G76 (alésage de précision). Les paramètres comprennent généralement la profondeur du trou, le plan de retrait, la vitesse d'avance et les options spécifiques au cycle.
Deux aspects techniques sont à prendre en compte ici. Premièrement, les cycles prédéfinis sont modal — ils restent actifs jusqu’à ce qu’ils soient explicitement annulés (généralement avec la commande G80). Si l’on oublie d’annuler un cycle de perçage avant un déplacement de repositionnement, la machine risque de percer à chaque position intermédiaire. Deuxièmement, le comportement de rétraction varie d’un contrôleur à l’autre : vérifiez la logique de rétraction en perçage par à-coups avant d’exécuter des cycles de perçage profond sur des machines que vous ne connaissez pas bien.
Codes M courants : ce qu'ils contrôlent et pourquoi le moment choisi est important
Les codes M sont souvent considérés comme des éléments secondaires : de simples commandes permettant de démarrer la broche et d'activer le liquide de refroidissement. Or, dans la pratique, le timing et l'enchaînement des codes M sont tout aussi cruciaux que la géométrie de la trajectoire d'outil. Une erreur à ce niveau peut entraîner la perte d'outils, de pièces et parfois même de machines.
Commande de broche
M03 – Broche activée (sens horaire) Sens de coupe standard pour les outils à droite. Doit être activé avant l'exécution de tout code G de coupe. Indiquez une valeur S (vitesse de broche) dans le même bloc ou dans le bloc précédent.
M04 – Mise en marche de la broche (sens antihoraire) Utilisé pour les outils à coupe à gauche, certaines opérations d'alésage et le fraisage de filets dans des configurations spécifiques. L'utilisation de la commande M04 avec une fraise standard à coupe à droite endommage immédiatement à la fois l'outil et la pièce.
M05 – Arrêt de la broche Obligatoire avant les changements d'outil, les opérations de palpage et les pauses de programme. Sur la plupart des machines, la commande M06 (changement d'outil) arrête automatiquement la broche ; toutefois, il est recommandé de programmer explicitement la commande M05 avant la commande M06, car cette pratique est plus sûre et plus compatible.
Contrôle du liquide de refroidissement
M08 – Refroidissement activé 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 — consultez la liste des codes M de la machine.
M09 – Refroidissement désactivé Désactivez-le avant les changements d'outils et à la fin du programme. Laisser le liquide de refroidissement activé pendant un changement d'outil entraîne des problèmes d'entretien et présente des risques potentiels pour la sécurité au niveau de la position de changement d'outil.
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 être activé avant que l'arête de coupe n'entre en contact avec la pièce ; l'activer après le contact est trop tardif pour assurer une protection thermique. Dans l'aluminium 6061, un refroidissement par brume ou par inondation empêche la formation de dépôts sur l'arête de coupe et préserve l'état de surface. L'instruction M08 fait partie avant la première passe G01, pas après.
Changement d'outil et déroulement du programme
M06 – Changement d'outil Exécute le changement d'outil automatique vers l'outil spécifié par un code T. Pour garantir la sécurité de l'opération, l'outil doit être rétracté en position de changement d'outil et la broche doit être à l'arrêt. Séquence standard : G00 jusqu'à la distance de sécurité Z → M05 → T___ → M06.
M00 – Arrêt du programme (inconditionnel) Interrompt l'exécution. La machine s'arrête et attend une intervention de l'opérateur. Utilisé pour les contrôles en cours de fabrication, les opérations manuelles ou les réglages des gabarits en cours de cycle.
M01 – Arrêt facultatif S'arrête uniquement si le commutateur d'arrêt optionnel est activé au niveau du contrôleur. Utile pour les points de contrôle qui peuvent être contournés en production, mais qui sont activés lors de la mise en place ou des essais sur les premiers articles.
M30 – Fin du programme et réinitialisation Met fin au programme et effectue un retour en début de bande. C'est la manière correcte de terminer un programme de production CNC. La commande M02 met fin au programme sans retour en début de bande — à éviter dans le code de production.
| Groupe de fonctions | Codes M | Poste d'ingénieur |
|---|---|---|
| Broche | M03 / M04 / M05 | Activer et arrêter la découpe ; contrôler la direction |
| Liquide de refroidissement | M08 / M09 | Contrôle thermique, évacuation des copeaux, finition de surface |
| Gestion des outils | M06 | Séquence de changement d'outils |
| Déroulement du programme | M00 / M01 / M30 | Arrêts de sécurité, inspection, réinitialisation du cycle |
Comment les codes G et M fonctionnent ensemble : un exemple pratique de fraisage
La coordination entre les codes G et M apparaît clairement lorsque l'on suit la logique d'exécution d'une opération d'usinage concrète. Voici à quoi ressemble, du point de vue de la gestion des états, une passe de fraisage frontal simple sur une pièce en aluminium 6061 :
Phase 1 : Préparation de la machine (les codes M définissent les conditions d'usinage)
G21 G90 G17 G54 ; Définition du système métrique, mode absolu, plan XY, décalage de la pièce
T01 M06 ; Chargement de la fraise frontale (séquence de changement d'outil)
S3000 M03 ; Mise en marche de la broche dans le sens horaire à 3 000 tr/min
M08 ; Activation du refroidissement par inondation
G00 Z50,0 ; Déplacement rapide vers la distance de sécurité en Z
G00 X-10,0 Y0 ; Déplacement rapide vers la position d'approche
Avant toute opération d'usinage, l'état de la machine est entièrement défini : outil correct, broche tournant dans le bon sens et à la bonne vitesse, liquide de refroidissement activé, outil positionné en toute sécurité au-dessus de la pièce.
Phase 2 : Mouvement de découpe (les codes G contrôlent la trajectoire)
G00 Z2,0 ; Approche rapide à la hauteur d'approche Z
G01 Z-0,5 F200 ; Plongée à la profondeur de coupe avec avance contrôlée
G01 X110,0 F600 ; Passe de fraisage frontal sur toute la largeur de la pièce
Les commandes G01 régissent l'enlèvement effectif de matière. Les codes M relatifs à la broche et au liquide de refroidissement de la phase 1 restent actifs en mode — il n'est donc pas nécessaire de les rappeler à chaque coupe, mais ils doivent avoir été définis avant le début de la phase 2.
Phase 3 : Arrêt sécurisé (restauration de la machine à un état connu)
G01 Z2,0 F600 ; Retrait à la vitesse d'avance (pas en avance rapide — contrôlée)
G00 Z50,0 ; Déplacement rapide jusqu'à la distance de sécurité maximale en Z
M09 ; Arrêt du liquide de refroidissement
M05 ; Arrêt de la broche
G00 X0 Y0 ; Retour à la position de référence
M30 ; Fin du programme et réinitialisation
Chaque élément de la séquence de sortie a une fonction précise. Le retrait à la vitesse d'avance avant de passer en avance rapide permet d'éviter les marques de plongée si l'outil est encore en contact léger avec la pièce. La coupure du liquide de refroidissement avant l'arrêt de la broche empêche le liquide d'être projeté pendant la décélération. La commande G00 vers la position d'origine permet de préparer le cycle suivant de manière fiable.
Cette logique en trois étapes — préparation, exécution, restauration — constitue le modèle mental qui permet d'éviter la plupart des erreurs de programmation CNC.
Différences entre les contrôleurs : pourquoi les codes G et M ne sont pas vraiment universels
La norme ISO 6983 / RS274 fournit une base syntaxique commune, mais les fabricants de contrôleurs étendent et modifient considérablement ce comportement. Un programme qui fonctionne parfaitement sur une machine peut déclencher des alarmes ou provoquer des mouvements inattendus sur une autre, même avec un matériel identique.
Domaines courants de variation
Contrôleurs basés sur Fanuc : Les contrôleurs industriels les plus répandus. Fanuc définit un noyau commun étendu, mais les options proposées 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ètres des cycles prédéfinis varient souvent d'une machine à l'autre, même au sein de la gamme Fanuc.
Contrôleurs Haas : Bien que largement compatible avec Fanuc pour les codes G de mouvement de base, Haas utilise des codes M simplifiés ou propriétaires pour de nombreuses fonctions. Les programmes écrits sur des machines Haas nécessitent souvent des ajustements des codes M lorsqu'ils sont transférés vers des machines Fanuc.
LinuxCNC : Open source et hautement configurable. Prend en charge la syntaxe RS274 standard, mais les comportements avancés sont définis par l'utilisateur. Très performant pour les machines personnalisées ; nécessite une documentation de configuration détaillée afin de garantir un comportement cohérent.
| Zone | Variation typique |
|---|---|
| Changement d'outil (M06) | Positionnement, contrôles de sécurité, comportement vis-à-vis du contrôle aérien |
| Cycles prédéfinis | Paramètres, modes de rétraction, comportement de picorage |
| Codes M du liquide de refroidissement | Plusieurs types de liquide de refroidissement, attributions de codes spécifiques |
| Variables macro | Syntaxe, disponibilité, numérotation des variables |
| États par défaut des fenêtres modales | Sélection du plan, mode d'avance, unités à la mise sous tension |
Bonnes pratiques en matière de portabilité
L'approche la plus fiable en matière de compatibilité entre manettes :
- Ne vous fiez jamais aux valeurs par défaut. Définissez explicitement les unités, le plan, le mode de positionnement et le décalage de travail au démarrage du programme.
- Évitez les raccourcis spécifiques à certaines manettes dans les programmes destinés à plusieurs machines.
- Commentaires sur les codes M non standard quant à leur fonction : sans documentation, les futurs programmeurs ne sauront pas à quoi sert la commande M88 sur votre machine en particulier.
- Valider sur chaque contrôleur avant la première série de production, même si le programme “ devrait fonctionner ”.”
Erreurs courantes liées aux codes G et M : diagnostic et prévention
La plupart des défaillances du modèle CNC sont dues à des erreurs de gestion des états, et non à des erreurs de syntaxe. Le contrôleur a exécuté exactement ce qu’on lui a demandé ; le problème est que le programmeur n’a pas pleinement pris en compte les états modaux actifs.
| Erreur | Cause première | La prévention |
|---|---|---|
| Report modal | G90/G91, G00/G01 ou sélection du plan restée active depuis le bloc précédent | Réinitialiser explicitement les états modaux critiques au démarrage du programme et avant les opérations critiques |
| Système de coordonnées incorrect | Le programme part du principe que le décalage de travail ou le système d'unités diffère de la configuration de la machine. | Définissez explicitement les codes G54 à G59, G90/G91 et G20/G21 — ne partez jamais d'une hypothèse |
| Mouvement rapide et inattendu | G01 reste actif lorsque le positionnement rapide est prévu, ou inversement | Réécrire le code G de déplacement à chaque bloc où l'intention de déplacement change |
| Synchronisation de la broche et du liquide de refroidissement | Codes M placés après le début du mouvement de découpe | Considérer M08 et M03 comme des conditions préalables : elles doivent être actives avant la première commande G01 |
| Changement d'outil dangereux | Appel de M06 sans arrêt de la broche ni position de retrait de sécurité | Appliquer la séquence standard de changement d'outil : retrait → M05 → T___ → M06 |
| Comportement irrégulier du cycle | Cycle modal prédéfini (G83, G84) non annulé avant le repositionnement | Annulez explicitement les cycles prédéfinis à l'aide de la commande G80 ; ne partez pas du principe qu'ils s'annulent automatiquement. |
| Le programme échoue lors de sa deuxième exécution | Les états des fenêtres modales masquées persistent après la fin du programme | Utiliser M30 avec la séquence d'arrêt complet ; initialiser tous les états au démarrage du programme |
Un exemple concret : le mode incrémental reste actif
Incident courant en atelier : un programmeur utilise le cycle G91 (incrémental) pour un schéma de perçage en cercle de boulonnage. Le cycle prédéfini s'exécute correctement. Ensuite, la commande G80 annule le cycle, mais le mode G91 n'est jamais réinitialisé en G90. L'opération suivante — une passe de fraisage de poche — utilise des coordonnées incrémentales. Au lieu de se déplacer vers X50 Y30 (en absolu), la machine se déplace de 50 mm et 30 mm à partir de sa position actuelle.
Conséquence : passe de fraisage mal positionnée, pièce mise au rebut, risque de collision.
Correction : ajouter G90 à la ligne qui suit immédiatement G80 lors du retour du mode incrémental. Un caractère. Enregistre une pièce.
Meilleures pratiques pour une programmation CNC fiable
Les programmes fiables présentent des caractéristiques structurelles communes, quels que soient la machine ou le contrôleur utilisés. Ces pratiques permettent de réduire les erreurs, de simplifier le dépannage et de faciliter la maintenance des programmes par une personne autre que leur auteur d'origine.
Bloc d'initialisation — Toujours
Commencez chaque programme par une initialisation complète de l'état :
G21 G90 G17 G54 G94 G40 G49 ; Système métrique, absolu, plan XY, WCS 1,
; avance par minute, désactiver la compensation d'outil, désactiver la longueur d'outil
Ce bloc unique élimine la plupart des problèmes liés au report d'état modal. Son écriture ne prend que cinq secondes et permet d'économiser des heures de dépannage.
Changements d'état explicites aux limites logiques
Avant toute nouvelle opération — en particulier lors d'un passage du perçage au fraisage, d'un changement de dispositif de serrage ou après une intervention manuelle —, réinitialisez les états modaux critiques. Ne partez pas du principe que l'opération précédente a laissé la machine dans le bon état.
Règles de séquencement du code M
Respectez systématiquement cet ordre :
- Reculer jusqu'à la distance de sécurité Z
- Arrêt de la broche (M05) si un changement d'outil est nécessaire
- Changement d'outil (M06) avec le code T
- Démarrage de la broche à la nouvelle vitesse (M03 S___) et activation du liquide de refroidissement (M08)
- Position par rapport au point d'approche
- Commencer le mouvement de coupe
Inverser les étapes 4 et 5 — c'est-à-dire se positionner avant que la broche et le liquide de refroidissement ne soient activés — est techniquement possible sur la plupart des commandes numériques, 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èce.
Commenter l'intention, pas seulement la syntaxe
Mauvais commentaire : ; G01 X50 F300 (déplacement linéaire) Bon commentaire : ; Passe de finition sur la face de référence - profondeur 0,1 mm, laisser 0 de matière
Les commentaires doivent expliquer pourquoi indiquer s'il existe une séquence de code et quelles hypothèses elle repose, sans simplement répéter ce que le code dit déjà.
Valider par simulation avant l'exécution
Même les programmeurs expérimentés procèdent à une simulation avant l'usinage. Les simulateurs CAM modernes permettent de détecter les erreurs de trajectoire d'outil, les collisions de porte-outils et les interférences lors des déplacements rapides qui semblent correctes dans le code mais provoquent des pannes sur la machine. Des essais à vide à une avance de 10%, accompagnés d'une vérification visuelle de chaque phase d'opération, permettent de repérer les problèmes restants que la simulation ne détecte pas.
Conclusion
Les codes G et M ne constituent pas deux listes distinctes de commandes CNC : il s’agit de deux couches coordonnées d’un même système de commande de machine. Le code G définit où et comment l’outil se déplace ; le code M garantit que la machine se trouve dans l’état approprié pour exécuter ce mouvement de manière sûre et efficace. Comprendre comment ils interagissent, comment l’état modal persiste d’un bloc de programme à l’autre, et comment les différences entre les contrôleurs affectent le comportement : c’est ce qui fait la différence entre un code qui fonctionne de manière fiable en production et un code qui ne fonctionne qu’une seule fois, sur une seule machine, dans des conditions idéales.
La fiabilité de la programmation CNC repose sur une gestion rigoureuse des états : initialisation explicite, phases d'exécution prévisibles et synchronisation minutieuse du code M. Les programmeurs qui appréhendent le code G et le code M comme un système logique coordonné — plutôt que comme des commandes isolées à mémoriser — écrivent des programmes portables, sûrs et faciles à maintenir, quelle que soit la machine ou l'équipe de travail.
FAQ
Le code G est-il le même pour les fraiseuses et les tours ?
Pas tout à fait. Les codes de mouvement de base (G01, G02) apparaissent dans les deux cas, mais le contexte diffère considérablement. Le fraisage utilise la sélection de plan (G17/G18/G19) et des coordonnées multiaxiales. Les centres de tournage utilisent le contrôle du diamètre/rayon (G7/G8 sur certains contrôleurs), des mouvements synchronisés avec la broche pour le filetage (G32, G92) et des cycles fixes spécifiques au tour (G71, G72). La syntaxe sous-jacente est commune ; la logique d’application est toutefois suffisamment différente pour que l’expérience en fraisage ne soit pas automatiquement transposable à la programmation du tournage.
Les codes M sont-ils universels sur toutes les machines CNC ?
Non — 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êt de la broche) et M30 (fin de programme) sont généralement cohérents. En revanche, les fonctions liées au contrôle du liquide de refroidissement, au palpage, au serrage, aux changements de palettes et à l’automatisation varient considérablement selon le contrôleur, le constructeur de la machine et la configuration. Vérifiez toujours l’affectation des codes M sur chaque machine avant de vous y fier.
Pourquoi un même code G se comporte-t-il différemment selon les contrôleurs ?
La norme ISO 6983 définit la syntaxe, et non le comportement. Les contrôleurs étendent cette norme en y ajoutant leurs propres valeurs par défaut, options et interprétations. Les paramètres de cycle prédéfinis, les définitions d’arc, les états modaux par défaut à la mise sous tension et le positionnement lors du changement d’outil peuvent tous varier. Écrire un code explicite et prudent — en définissant tous les états modaux plutôt que de se fier aux valeurs par défaut — est le seul moyen fiable de gérer les différences entre les contrôleurs.
Un logiciel de FAO peut-il remplacer la maîtrise du code G/M manuel ?
Les logiciels de FAO génèrent efficacement des parcours d'outils corrects, mais ils ne dispensent pas de la nécessité de comprendre le code. Les ingénieurs et les opérateurs de machines doivent toujours maîtriser les codes G et M pour vérifier la logique du programme, corriger les comportements inattendus, optimiser la durée des cycles et communiquer clairement avec les fournisseurs et les opérateurs. La FAO remplace la saisie manuelle, mais elle ne remplace pas le jugement technique.
Quelles sont les erreurs les plus dangereuses dans les codes G et M ?
Les erreurs liées à l'état de la machine sont à l'origine des incidents les plus graves. Les erreurs présentant le plus grand risque sont les suivantes : déplacements rapides G00 effectués trop près de la pièce ; le mode incrémental G91 laissé actif par inadvertance ; l’omission de la commande M03 de démarrage de la broche avant le mouvement de coupe ; l’appel de la commande M06 de changement d’outil sans retrait de sécurité ; et les cycles fixes (G83, G84) non annulés avant le repositionnement. Aucune de ces erreurs ne génère d’erreur de syntaxe : le contrôleur les exécute sans signaler de problème. Les dommages sont d’ordre mécanique.





