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.
À 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 février 1980 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.
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 :
Permet aussi de contrôler des entités externes à la machine proprement dite (magasin auxiliaire, refroidisseur, compteur ETC, embarreur)
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.
(*) 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.
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[1], 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", qui permettent 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 Mori Seiki's CAPS.
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 plane working) 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) |
G75 | Cycle de gorge |
G76 / G76.7 | Cycle de filetage |
G83 | Cycle 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 |
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
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.
Les codes de la famille G52, G53, G54, G55...sont utilisés pour :
Certains codes G de la famille G60 G70 peuvent être utilisés par les fabricants de DNC pour :
Les codes G90 G91définissent la programmation absolue ou incrémentale des cotes.
Des cycles préprogrammés sont également accessibles sur la plupart des machines : G 81, 82, 83... pour les cycles de perçage, taraudage, etc. avec l'annulation par G 80. D'autres cycles peuvent être présents selon le type de machine (tour "cycle d'ébauche G71,G72,G73...", fraiseuse, aléseuse, fil...).
Les origines mesures appartiennent à l'espace articulaire (espace de la structure cinématique de la machine en robotique). L'espace travail, ou de la tâche est celui où se trouvent les autres éléments de la cellule élémentaire de production. La dimension vectorielle est 3. Il y a donc un endomorphisme d'espaces vectoriels entre l'espace articulaire de la machine et l'espace travail. Il est donc totalement inutile de représenter le zéro mesure comme un point concourant de tous les axes dans l'espace travail. C'est un sophisme.
(POM ou OM) + PREF = OPP OPP + DECALAGE = OP
En synthèse, les définitions des différentes origines sont issues d'un modèle de structure articulaire de machine constitué de liaisons prismatiques cartésiennes. Le modèle géométrique permettant de lier l'espace travail à l'espace articulaire est l'identité, amalgamant les origines mesures de la structure articulaire avec l'origine des solides dans l'espace travail.
« Comprendre le fonctionnement d’une machine à commande numérique. - Application à la MOCN - Un modèle pour quoi faire ? »(Archive.org • Wikiwix • Archive.is • Google • Que faire ?), sur cfc-technic.fr,
Correction de la machine permettant de tenir compte des différentes longueurs et diamètres d'outil.
De plus, la correction d'outils en cours d'usinage appelée "correction dynamique" permet de compenser l'usure de l'outil.
Le sens de rotation positif des axes A, B, C sont comptés en s'imaginant qu'une vis pas à droite, tournant dans le sens des aiguilles d'une montre avance en direction +X, +Y, +Z en se considérant à la place de l'outil. Si c'est un axe déplaçant la pièce au lieu de l'outil, on inverse le sens des axes, le positif devient négatif.
Ceci est un programme typique qui montre l'usage du G-Code pour tourner une pièce de 1 pouce de diamètre et 1 pouce de long. On part de l'hypothèse que la barre de matière est déjà dans la machine et qu'elle dépasse légèrement en longueur et en diamètre. (Attention : Ceci est un programme typique, il pourrait ne pas fonctionner sur une machine réelle ! Soyez particulièrement attentifs au point 5 ci-dessous.)
N01 M216 | Mise en route du contrôleur de charge | |
N015 G20 T00 G99 | Programmation en pouces, annulation des décalages outils, avance en pouces/révolution. | |
N02 G00 X20 Z20 | Déplacement rapide en dehors de la pièce, pour donner le point de départ de l'outil | |
N03 G50 S2000 | Définit la vitesse de rotation maximum de la broche | |
N04 T03 | Choisit l'outil #3 dans le carrousel | |
N05 G96 S854 M42 M03 M08 | Découpe à vitesse variable, 854 pieds/min, grande vitesse de broche, démarrage de la broche en rotation horaire, démarrage de la lubrification | |
N06 G00 X1.1 Z1.1 T0303 | Déplacement rapide vers un point situé à 0,1 pouce du bout de la barre et à 0,05 pouce du bord, en utilisant les valeurs de réglage de l'outil #3 | |
N07 M01 | Arrêt optionnel | |
N08 G01 Z1.0 F.05 | Avance horizontalement, en avance de travail, jusqu'à ce que l'outil soit à 1 pouce de la référence | |
N09 X0.0 | Descend jusqu'à ce que l'outil soit au centre - en face du bout de la barre | |
N10 G00 Z1.1 | Avance rapide à 0,1 pouce du bout de la barre | |
N11 X1.0 | Avance rapide jusqu'à la position correspondant au diamètre extérieur fini | |
N12 G01 Z0.0 | Avance horizontalement, en avance de travail, en coupant la barre à 1 pouce de diamètre jusqu'à la référence | |
N13 G00 X1.1 | Avance rapide en s'écartant de 0,05 pouce de la surface de la pièce | |
N14 X20 Z20 | S'éloigne de la pièce, toujours en avance rapide | |
N15 M05 M09 | Arrête la broche et coupe l'arrosage | |
N16 M215 | Coupe le contrôleur de charge | |
N17 M30 | Fin du programme |
En principe on ne met pas des numéros qui se suivent pour les lignes. Cela permet d'en intercaler de nouvelles si nécessaire. Plutôt que de faire : N1, N2, N3, etc. On inscrit N10, N20, N30, etc. Comme ça, si l'on doit rajouter des lignes de modification, on peut le faire. N50, N60 peut ainsi devenir N50, N52, N54, N60...
Quelques remarques :
Ligne 1, numéro de programme
Ligne 2: Rappel des codes modaux permettant de reprendre facilement en cas d'arrêt en milieu de cycle: G0 (rapide), G90 (coordonnées absolu), G40 (annulation de correction de rayon), G80 (Annulation de cycles de perçages), G49 (Annulation de la correction de longueur)
Ligne 3: Retour à l'origine en Z pour éviter les déplacements non désirés en cas de reprise du programme après un arrêt dans la pièce
Ligne 4, appel en broche de l'outil no 1 (qui est en réalité un appel du sous-programme pilotant le changeur d'outil (M6) avec le paramètre T1
Ligne 5, - donné en absolu (G90), -travail suivant plan X,Y(G17), -Annulation des cycles perçage-taraudage (G80), annulation tout correcteur en mémoire dans la machine(G40),
-origine pièce Offset (G54), -déplacement rapide (G0) à un point (X0 Y-5)
Ligne 6, mise en rotation de l'outil à 2 500 tr/min (S2500) et mise en fonction de l'arrosage (M8) (M13 replace les codes M3, sélectionne le sens de rotation, et M8, marche arrosage)
Ligne 7, déplacement rapide a Z-4 (profondeur de coupe) en prenant en compte la longueur d'outil (G43) du correcteur n°1 (H1)
Ligne 8 à 11, déplacements en vitesse de travail (G1), G1 est une fonction modale et est donc valable pour tous les points suivants.
Ligne 12, déplacement rapide (G0) a un point (Z200)
Ligne 13, arrêt de l'arrosage (M9)
Ligne 14, arrêt de la broche (M5)
Ligne 15 à 16, Retour au origine machine (G28), Distance avec relatif (G91), -déplacement rapide (G0) avec le système de coordonnées de la machine (G53) à Z0 Y0 (outil en haut, table au plus près de l'opérateur)
Ligne 17, M30 fin de programme (M30 inclus M5 et M9 ceux-ci ne sont donc pas obligatoires ils sont placés en ligne 10 et 11 pour laisser quelques secondes d'égouttage au système d'arrosage, avant les manipulations de l'opérateur.)
Notez que le programme ne prévoit rien pour le cheminement de l'outil. Si la machine est une fraiseuse et utilise une fraise de rayon 6 mm, la pièce sera en pratique 12 mm plus petite que définie (6 mm par côté). Une commande G-code doit être utilisé pour corriger le cheminement de l'outil.
Un exemple simple : une barre d'une longueur de 40 mm et d'un diamètre de 20 mm. Le code de base pourrait se lire comme suit :
% O1234 G50 S2500 (VITESSE DE ROTATION LIMITÉE À 2500 TOURS PAR MINUTE) G97 M03 S1000 T0606 (OUTIL D'ÉBAUCHE DE TOURNAGE) G00 X22. Z0. G96 S150 G01 (RPT.N50)N40
X-1. F0.15 G00 Z1. X18. G01 Z-35. F0.2 X22. G00 Z1. X16. G01 Z-25. X22. G00 Z300. X150. M01
T0101 (FORET DIAM 18MM) G97 M03 S1000 G00 X0. Z5. G01 Z-25. F0.1 G00 Z5. X150. Z300. M05 M30
Il est de bon aloi d'abuser des commentaires entre parenthèses (), afin d'indiquer les opérations, les outils utilisés, afin que n'importe quel utilisateur puisse comprendre le code. Sur certaines DNC le point-virgule ";" est le symbole de début de commentaire et le reste de la ligne est alors ignoré par la DNC
... GO G90 G54 X-10 Y-5 M13 S2500 G0 G43 H1 Z-4 G1 G41 D21 F150 X0 ; correction d'outil à gauche (G41) en utilisant le rayon d'outil no 21, 6 mm (fraise de diamètre 12 mm) Y20 X40 Y0 X-5 ...
La Programmation Géométrique de Profil (P.G.P.) du fabricant de DNC NUM permet d'utiliser directement les cotes du dessin de définition pour écrire le programme.
Principe :
Éléments géométriques :
Le langage PROGET 2' du constructeur SELCA utilise 5 codes G, pouvant être assimilés à 5 instruments du dessinateur industriel.