La programmation de commande numérique (CN) permet de définir des séquences d'instructions permettant de piloter des machines-outil à commande numérique. Cette programmation est actuellement fortement automatisée à partir de plans réalisés en CAO.

Dans le cas d'une commande numérique physique, c'est le directeur de commande numérique (DCN) qui interprète les instructions contenues dans les séquences, reçoit les informations des capteurs et agit sur les actionneurs.

On trouve aussi des pilotes de commande numériques qui sont des programmes (logiciels) informatiques s'exécutant sur un PC, avec éventuellement une délégation partielle des calculs vers une carte spécialisée.

Langage À l'origine, le langage de programmation était le G-code, développé par l'EIA au début des années 1960, et finalement normalisé par l'ISO en sous la référence RS274D/ (ISO 6983).

Compte tenu de l'absence de développements ultérieurs et de la grande variété des configurations de machines-outils, peu de contrôleurs à commande numérique respectent de manière stricte ce standard. Des extensions et variantes ont été ajoutées indépendamment par divers fabricants et concepteurs de programmes, ce qui fait que les opérateurs doivent connaître les différents dialectes et particularités des machines qu'ils utilisent. Les programmes informatiques utilisent des pilotes adaptés à chaque machine et à sa configuration, les pilotes étant personnalisables par les utilisateurs.

Pendant longtemps, les programmes étaient directement écrits par les opérateurs des machines CNC. Depuis le développement des ordinateurs personnels, des programmes de FAO (fabrication assistée par ordinateur, ou en anglais CAM, Computer Aided Manufacturing) ont été développés afin d'écrire les séquences de code ISO automatiquement à partir de fichiers de dessin et des paramètres des outils finaux. Les interventions directement dans le code sont devenues marginales.

Pour vérifier le bon fonctionnement des séquences d'usinage, il existe des programmes de simulation d'usinage permettant une visualisation de la pièce telle qu'elle sera conçue lors de l'usinage.

La séquence de fabrication complète est donc :

CAO (conception assistée par ordinateur) → FAO (développement des séquences) → Simulation de coupe → Exécution de la fabrication.

À côté de l'ISO, de nouveaux codes sont apparus, différents selon le Directeur de Commande Numérique. Ils intègrent de plus en plus de l'ISO, des langages propres aux constructeurs (symbolique, C, etc.) ainsi que des interfaces de programmation interactives destinées à simplifier la programmation.

Pour quelle utilisation Développé à l'origine pour des machines-outils agissant par enlèvement de matière, le code ISO est désormais utilisé dans un domaine très vaste de la fabrication, avec des adaptations : usinage par enlèvement de matière : tournage, fraisage, perçage, gravure, défonçage ; découpe avec : couteau, laser, jet d'eau, plasma, flamme ou oxydation ; poinçonnage ; impression 3D : par dépôt de matière (« fabrication additive »), durcissement d'une résine.

Les codes Fonctions préparatoires (G), fonctions d'appel de mode d'interpolation (G 0), cycle machine Coordonnées de points (X, Y, Z, A, B, C, I, J, K) Vitesses, avances… (S, F) Fonctions auxiliaires (M) qui permettent d'enclencher la lubrification, de changer d'outil, ou de déclencher des accessoires.

X position absolue Y position absolue Z position absolue A position (rotation autour de l'axe X) B position (rotation autour de l'axe Y) C position (rotation autour de l'axe Z) U position relative ou axe secondaire V position relative ou axe secondaire W position relative ou axe secondaire M code fonction « machine » ou « modale » (un autre type d'action ou de code machine Les codes M contrôlent l'ensemble de la machine, permettant son démarrage, son arrêt, la mise en route de l'arrosage, etc. alors que les autres codes concernent le cheminement de l'outil.) (parfois référencé comme fonction « diverse » (Miscellaneous en anglais)) Permet aussi de contrôler des entités externes à la machine proprement dite (magasin auxiliaire, refroidisseur, compteur ETC, embarreur) D ou H association d'un correcteur de jauge outil F vitesse de déplacement, ou expression d'un temps de pause (G04) en seconde S vitesse de rotation C s'il est intégré dans un bloc de cycle fixe ébauche ou finition, C désigne un chanfrein N numéro de ligne Le numéro de bloc n'est pas obligatoire (l'ordre numérique des numérotations de blocs « N » n'est pas non plus obligatoire) à chaque ligne avec les commandes ISO, il désigne juste un endroit du programme où l'on peut ordonner un saut d'opération ou un départ d'opération, le plus souvent avant un changement d'outil, ou au départ d'une boucle. V permet de contrôler une vitesse de rotation dans une machine avec diverses configurations R Rayon d'arc ou option passée à un sous programme P Temps de pause ou option passée à un sous programme ou appel de sous programme (Précédé de M98, ou G65 par ex dans un appel de Macro_programme intégrant des calculs) T Sélection d'outil I Centre X des données d'un arc J Centre Y des données d'un arc K Centre Z des données d'un arc D diamètre de coupe ou décalage pour l'épaisseur d'outil H décalage pour la hauteur de l'outil

Les fonctions M (de M00 à M09) sont communes à tous les types de CNC, les différents constructeurs de machines CNC proposent leurs propres fonctions M (à partir de M10 jusqu'à M89... ensuite au-dessus de M100).

Des machines différentes peuvent utiliser le même code pour effectuer des fonctions différentes : même les machines qui utilisent le même contrôleur CNC.

Une version standardisée du G-code connue sous la dénomination BCL est utilisée, mais sur très peu de machines.

Le G-code est interprété par les traceurs photographiques Gerber, les contrôleurs de machine-outil et certains de leurs opérateurs.

Les fichiers G-code sont produits par des programmes de CFAO tels que GO2cam., ESPRIT, SmartCAM, Gibbscam, SolidCAM, Featurecam, Artcam, Edgecam (S4X), Surfcam, OneCNC, Router-CIM, Alphacam, TopSolid'Cam, e-NC, GPSoftware, Mastercam, EFICN (EFICAD), PowerMill (Delcam), etc. Ces applications utilisent en général des convertisseurs appelés post-processeurs pour optimiser le code en vue de son utilisation sur une machine particulière. Les post-processeurs sont généralement modifiables par l'utilisateur afin d'optimiser leur usage.

Le G-code est aussi produit par certains programmes de CAO spécialisés dans la conception de circuit imprimé. De tels programmes doivent être adaptés pour chaque type de machine outil.

Quelques machines CNC utilisent des programmes « interactifs » permettant de programmer avec des agents en cachant partiellement ou totalement le G-code. Quelques exemples populaires sont Mazak Mazatrol, Hurco Ultimax et le langage interactif CAPS de Mori Seiki.

+ Common G Codes (avec certaines extensions non standardisées) G00 Déplacement rapide G01 Interpolation linéaire G02 Interpolation circulaire (sens horaire, anti-trigo) G03 Interpolation circulaire (sens anti-horaire, trigo) G04 Arrêt programme et ouverture carter (pour nettoyer) (temporisation - suivi de l'argument F ou X en secondes) G10/G11 Écriture de données / Effacement de données (suivi de l'argument L suivant le type de données à écrire) G17 Sélection du plan X-Y G18 Sélection du plan X-Z G19 Sélection du plan Y-Z G20 Programmation en pouces G21 Programmation en mm G28 Retour à la position d'origine G31 Saute la fonction (mode Interrupt utilisé pour les capteurs et les mesures pièces et de longueur d'outil) G33 Filetage à pas constant G34 Filetage à pas variable G40 Pas de compensation de rayon d'outil G41 Compensation de rayon d'outil à gauche G42 Compensation de rayon d'outil à droite G54 à G59 Activation du décalage d'origine pièce (Offset) G68 / G68.1 Activation du mode « Plan incliné » (Tilted working plane) pour les centres d'usinage 5 axes G70 Cycle de finition G71 / G71.7 Cycle d'ébauche suivant l'axe Z (appel de profil balisé entre les arguments P et Q) G75Cycle de gorge G76 / G76.7 Cycle de filetageG83Cycle de perçage débourrage G69 Annulation du mode Tilted plane working (Plan incliné) G84 Cycle de taraudage rigide G90 Déplacements en coordonnées absolues G91 Déplacements en coordonnées relatives G94/G95 Déplacement en pouces par minute/pouce par tour G96 ; G97 Vitesse de coupe constante (vitesse de surface constante) ; Vitesse de rotation constante ou annulation de G96

Codes spéciaux Spécifique à certains constructeurs

Suivant le paramétrage du système et la résolution décimale, il est nécessaire (ou pas) de programmer les valeurs avec le dot (point)

Par exemple : G00 X40. (la machine se déplacera à la position X 40mm)

G00 X40. (le point derrière la valeur entière est nécessaire)

G43 : Prise en compte de la longueur (fraisage)

M98 : appel de sous programmes

#: (hashtag) déclaration / écriture / lecture / calcul de variables personnalisées

#1 à #33 = variables locales (#1 à #26 correspondent aux lettres de l'alphabet pour les arguments de cycles de macros personnalisées si la machine est équipée de l'option « CUSTOM MACRO »)

#100 à #199 = variables utilisateurs (effacement remise à zéro sur RESET)

#500 à #999 = variables système (mémorisées après RESET ou coupure CNC)

Spécifique NUM EB : rayon à l'intersection de deux lignes G77 : appel de blocs G79 : saut de bloc

Codes CNC ISO de base Les 0 ne sont pas obligatoires (DEVANT un autre chiffre : M02 peut s’écrire M2. Par contre M30 reste M30 sinon ça deviendrait M3....) M00, M01 : arrêt du programme, arrêt optionnel ou avec condition M02 : arrêt du programme M03, M04, M05 : broche sens horaire, sens antihoraire, arrêt de broche M06 : changement d'outil M07, M08, M09 : mise en route arrosage, arrêt arrosage M21 : activation pression broche ; M21 à M27 : palier pression selon outils M30 : fin du programme, réinitialisation, rembobinage M99 : fin du sous-programme G96, G97 : vitesse de coupe constante, vitesse de rotation constante G92 / G50 : vitesse de broche maximum G95, G94 : déplacement mm/tr, déplacement mm/min G00, G01 : mouvement rapide, interpolation linéaire (coupe suivant une ligne droite) F : vitesse de déplacement S : vitesse de broche Coordonnées d'axes X, Y, Z, A, B, C

Fonctions préparatoires G La fonction dinterpolation linéaire rapide G0 (interpolation linéaire en mode rapide). La fonction dinterpolation linéaire (à la vitesse programmée) G1 (interpolation linéaire en mode de travail). La fonction dinterpolation circulaire G2 (interpolation circulaire sens horaire) et G3 (interpolation circulaire sens trigonométrique). La fonction de temporisation (programmable avec F,X ou P) G4. La fonction darrêt précis en fin de bloc G9.

Il est aussi possible sur certains pupitres de programmation d'utiliser ces deux codes (G2 G3) pour créer une interpolation circulaire, des fonctions d'interpolation à base de courbe NURBS G6.2.

Sur les fraiseuses équipées de tête birotative les codes G17,G18,G19 définissent l'axe des cycles de perçage, taraudage... et le plan dans lequel seront réalisées les interpolations circulaires et activé le correcteur de rayon d'outil. G17 : Axe d'outil Z, interpolations G2,G3 et correction rayon dans le plan X Y. G18 : Axe d'outil Y, interpolations G2,G3 et correction rayon dans le plan Z X. G19 : Axe d'outil X, interpolations G2,G3 et correction rayon dans le plan Y Z.

Les codes de la famille G52, G53, G54, G55...sont utilisés pour : Programmer un décalage d'origine ; Définir que les déplacements sont relatifs à l'origine machine ; Choisir le numéro de l'origine pièce.

Certains codes G de la famille G60 G70 peuvent être utilisés par les fabricants de DNC pour : Le choix de la programmation cartésienne ou polaire ; L'activation d'un facteur d'échelle ; La mise en action d'une fonction miroir ; La programmation en mesure métrique ou en pouce.