# Programmation de machine à commande numérique

* Cette page est une ébauche. Avant de recréer une ressource du même type, essayez d'abord de compléter celle-ci ; si c'est impossible, remplacez son contenu par le vôtre. Si vous êtes l'auteur(e) de cette page et que vous souhaitez la continuer, retirez ce bandeau.

## Introduction

En 1952 John Parsons de la Parsons Works, sous-traitant de l’US Air Force 1, se voit attribuer la mission d’améliorer la chaîne de production des pales d’hélicoptère. Assisté par son ingénieur Frank Stulen, ils imaginent différents concepts dont l’un consiste à motoriser les axes des machines concernées. Avec un calculateur IBM pour commander le déplacement d’une table sur une glissière mue par une vis à billes couplée à un moteur électrique, Parsons Works inventa la première machine à commande numérique.
Peu de temps après la commercialisation de cette solution, le langage de programmation de ces machines se développe au début des années 1960 sous le nom de G-Code [1]. Il sera finalement normalisé en février 1980 et nommé ISO.
Le développement industriel des machines à commande numérique favorise l’essor de nombreux fabricants de machines. Compte tenu de la grande variété des configurations des machines-outils, peu de contrôleur à commande numérique respectent de manière stricte le standard de l’ISO. Des extensions et des variantes de commandes ont été implémentées indépendamment par divers fabricants et concepteurs de machines.
C’est pourquoi la majorité des fabricants de machines utilisent le langage ISO, mais sous une forme qui leur est propre.
Dans ce module de formation sur la programmation de commande numérique vous apprendrez à lire et écrire le langage ISO, afin de pouvoir commander une machine à commande numérique.

## Objectif du cours

* Lire et écrire le langage ISO
* Connaître les différences entre le langage ISO et d'autres langages
* Apprendre de programmation des commandes numériques
* Connaître les commandes de fraisages et de tournage de programmation et les structures associées
* Reconnaître et décoder un programme simple
* Écrire et modifier un programme

## Niveau requis

Notion des opérations d’obtention de pièces finit en tournage et fraisage https://fr.wikiversity.org/wiki/Usinage

## Les axes de programmation sur les machines à commandes numérique
### Centre d’usinage 3 axes

Afin de programmer correctement les déplacements des machines sur les programmes, il est important de connaitre quels sont les axes des machines et comment celles-ci se déplacent.
Pour les fraises traditionnelles, les trois axes principaux sont les suivants : X Y et Z.
Les plus commun sont les fraiseuses verticales. L’axe Z correspondant à la montée descente de la broche et le X et Y étant le déplacement de celle-ci sur la table.

### Tour 2 axes

Pour les tours deux axes traditionnels, le Z correspond à l’axe de rotation de la pièce et le X le déplacement au rayon.

### Les axes

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(*))(parfois référencé comme fonction 'diverse' (Miscellaneous en anglais)

## Positionnement des points pour la programmation

Pour générer les volumes indiqué sur les plans, l’opérateur doit ordonner à la machine les déplacements à effectuer pour réaliser ladite forme. C’est une base à maitriser avant de commencer la programmation.

## Langage de programmation

Dans ce cours, nous allons principalement aborder le langage ISO, qui est le langage le plus communément utilisé dans l’industrie. Nous le comparerons au langage NUM qui est une variante de l’ISO. Ce langage comporte quelques différences (notamment certaines commandes) mais sa structure reste le même.

## Le langage

Chaque début de ligne du programme doit comporter la lettre N avec le numéro de la ligne. Pour simplifier les modifications l'incrément des numéros de ligne se fait de dix en dix.
Exemple : N10 G0 G53 X0 Y0 Z0
N20 T1 D1 M6

### Les différentes commandes ISO/NUM

Initialisation d’un programme :
| Début de programme | %NOM DU PROGRAMME | %ONOM DU PROGRAMME lettre “O” |
| Retour aux origines mesure | G0 G52 X0 Y0 Z0 | G0 G53 X0 Y0 Z0 |
| Choix de l’origine programme | Calcul à partir des vecteurs PREF et DEC | G54 |
| Changement d’outils et validation des jauges | T1 D1 M6 (Appel outil 1 et correcteur 1) | G49 (annulation jauges précédentes) T1 M6 G43 H1 Z.. (Valeur de Z au-dessus de la pièce) D1 |
| Mise en route de lubrifiant | M8 | M8 |
| Au démarrage d’un programme, celui-ci doit avoir un nom. Ce nom permet de le référencer sur la machine et commence %O. On initialise ensuite les origines de mesures et on sélectionne l’origine programme utilisé pour servir de référence. On effectue ensuite un changement d’outil en indiquant le numéro, le diamètre et la gauge outil correspondante. |||
| Déplacement machine |||
| Déplacement en avance rapide | G0 | G0 |
| Déplacement en avance travail | G1 | G1 |
| Les déplacements hors de la matière s’effectuent en G0 et les déplacements dans la matière en G1. Cela permet de gérer les potentiomètres associés. |||
| Paramètres |||
| Mise en rotation de la broche | M3 (sens horaire, outil à droite de la pièce) M4 (sens trigo, outil à gauche de la pièce) | M3 (sens horaire, outil à droite de la pièce) M4 (sens trigo, outil à gauche de la pièce) |
| Arrêt de broche | M5 | M5 |
| Déclaration d’une vitesse de rotation en tournage | G97 S1000 (Rotation à 1000 tr/min) | G97 S1000 (Rotation à 1000 tr/min) |
| Limitation de la vitesse de broche (tournage) | G92 S2500 (Vitesse limitée à 2500tr/min) | G92 S2500 (Vitesse limitée à 2500tr/min) |
| Déclaration d’une vitesse de rotation en tournage | G96 S200 (Vitesse de coupe = 200 m/min, la machine adapte N en permanence à partir de N= 1000Vc) / (πD) | G96 S200 (Vitesse de coupe = 200 m/min, la machine adapte N en permanence à partir de N= 1000Vc) / (πD) |
| Déclaration de la vitesse d’avance en tournage | G95 F0.1 (f = 0.1 mm/tr) | G95 F0.1 (f = 0.1 mm/tr) |
| Déclaration des paramètres de coupe en fraisage | S1500 (N en tr/min) F200 (Vf en mm/min) | S1500 (N en tr/min) F200 (Vf en mm/min) |
| On définit ensuite les paramètres de coupes pour l’opération que l’on va effectuer. On définit l’avance, la vitesse de rotation de la broche (en tournage on détermine aussi la vitesse de rotation maximal) |||
| Commandes d’interpolation et de correction |||
| Interpolation circulaire où longueur d’arc <180° | G2 X… Y… R… (sens horaire) G3 X… Y… R… (sens trigo) | G2 X… Y… R… (sens horaire) G3 X… Y… R… (sens trigo) |
| Interpolation circulaire où longueur d’arc >180° | G2 (ou 3) X… Y… I… J… (I et J coordonnées du centre du cercle dans le repère programme) G1 X0 Y-10 (point de départ) G2 X10 Y0 I0 J0 (point d’arrivée) | G2 (ou 3) X… Y… I… J… (I et J coordonnées du centre du cercle dans le repère programme) G1 X0 Y-10 G2 X10 Y0 I0 J0 |
| Correction de rayon à gauche | G41 | G41 |
| Correction de rayon à droite | G42 | G42 |
| Annulation de la correction de rayon | G40 | G40 |
| Opérations sur les programmes |||
| Rappel des lignes avec retour à N+1 | G77 N10N120 (rappel des lignes de 10 à 120) | |
| Saut de lignes sans retour | G79 N120 (saut à ligne 120) | |
| Appel de sous-programme avec retour à N+1 | G77 H2050 (avec 2050 numéro du sous-programme) | M98 P2050 (avec 2050 numéro du sous-programme) Sous-programme clos par M99 |
| Fin et arrêt de programme |||
| Arrêt de lubrification | M9 | M9 |
| Arrêt de programme | M0 | M0 |
| Fin de programme | G0 X60 Z120 M2 | G0 G53 X0 Y0 Z0 M30 |

### Les différentes commandes tournage/fraisage en ISO

| Instruction | ISO fraisage | ISO tournage |
| Début de programme | %ONOM DU PROGRAMME lettre “O” | %ONOM DU PROGRAMME lettre “O” |
| Ajout d’un commentaire | #ajout d’un commentaire dans un programme d’usinage | #ajout d’un commentaire dans un programme d’usinage |
| Retour à l’origine machine | G0 G28 U0 G28 V0 (uniquement pour 4 axes, déplacement sur y) G28 W0 | M228 |
| Choix de l’origine programme | G54 | G54 |
| Déclaration du brut (utile pour simulation graphique préalable) | G1902 B70 (cote pièce sur X) D70 (cote pièce sur Y) H21 (cote pièce sur X) I20 (Position sur X, par rapport à l’origine, X0 et Y0) J20 (Position sur Y, par rapport à l’origine, X0 et Y0) K10 (Épaisseur sur Z) | G1900 D40(Diamètre) L80 (Longueur) K10(Surépaisseur sur Z) |
| Changement d’outils et validation des jauges | G49 (annulation des jauges précédentes) T1 M6 G43 H2 Z25 (prise en compte du correcteur de longueur 2 et déplacement à un point d’approche sur Z obligatoire) D2 (prise en compte du correcteur de rayon 1) | T0101 (chargement de l’outil 1 et prise en compte de ses correcteurs outils) |
| Déclaration d’une vitesse de rotation en tournage | / | G97 S1200 (Rotation à 1200 tr/min) |
| Limitation vitesse de broche | / | G50 S2000 (Vitesse de rotation maxi=2000 tr/min) |
| Déclaration d’une vitesse de rotation en tournage | / | G96 S300 (Vitesse de coupe = 300 m/min, la machine adapte N en permanence à partir de N= 1000Vc) / (πD) |
| Déclaration de la vitesse d’avance en tournage | / | G95 F0.2 (f = 0.2 mm/tr) G98 F200 (f = 200 mm/min, utilisé pour des opérations de fraisage sur un tour (exemple : gravage) |
| Déclaration des paramètres de coupe en fraisage | S1500 (N = 1500tr/min) F200 (Vf = 200 mm/min) | / |
| Interpolation circulaire avec longueur d’arc < 180° | G2 X… Y… R… (sens horaire) ou G3 X… Y… R… (sens trigonométrique) | G2 X… Y… R… (sens horaire) ou G3 X… Y… R… (sens trigonométrique) |
| Interpolation circulaire avec longueur d’arc > 180° | G2 X… Y… I… J… ou G3 X… Y… I… J… ou I et J la projection d’un vecteur partant du point de départ de l’interpolation et rejoignant le point de centre de l’interpolation (Vecteur AOpr dans le dessin ci-contre) G1 X0 Y-10 G2 X10 Y0 I0 J10 | G2 X… Y… I… J… ou G3 X… Y… I… J… ou I et J la projection d’un vecteur partant du point de départ de l’interpolation et rejoignant le point de centre de l’interpolation (Vecteur AOpr dans le dessin ci-contre) G1 X0 Y-10 G2 X10 Y0 I0 J10 |
| Arrêt programmé | M0 | M0 |
| Saut de lignes sans retour | GOTO30 (Saut à la ligne N30) | GOTO30 (Saut à la ligne N30) |
| Appel de sous-programme avec retour à N+1 | M98 P2050 (avec 2050 le numéro du sous-programme (%O2050)) Le sous-programme est clos par M99 | M98 P2050 (avec 2050 le numéro du sous-programme (%O2050)) Le sous-programme est clos par M99 |
| Fin de programme | M228 G91 G28 Z0 M30 OU G28 X0 Y0 | G0 G28 V0 (uniquement utiles si 4 axes) G28 U0 G28 W0 M30 |

### Les autres langages de programmation

Dans le monde de l’industrie, il existe d’autres langage de programmation tel que le Fanuc, Simpl, Mazatroll... Le plus communément utilisé reste le langage ISO et le NUM. La majorité des machines peuvent lire leur propre langage ainsi que l’ISO. Cette base de connaissance sur ce langage vous permettra de programmer sur n’importe quelle machine du marché.

### Exercices
#### Coordonnées de programmation

Identifier les points de programmation de cette pièce de tournage
photo
Position de départ X...Y...
* N
* N1
* N2
* N3
* N4
* N5
* N6

##### Correction

| N | G | X | Z |
| N1 | G0 | X50 | Z1 |
| N2 | G1 | X50 | Z-25 |
| N3 | G1 | X75 | Z-25 |
| N4 | G1 | X100 | Z-75 |
| N5 | G1 | Z100 | Z-100 |
| N6 | G1 | Z100.5 | Z-100 |

#### Question de cours

Quelle est la signification du code : M6T1 ?
Réponse : Changement d’outil pour l’outil en position 1
Quelle est la signification du code : S1500 F200 ?
Réponse : Définition de la vitesse de rotation à 1500 tr/min. Définition de la vitesse d’avance à 200 mm/min.
Quelle est la signification du code : M3 et M4 ?
Réponse : M3 (sens horaire → Fraisage et tournage) M4 (sens trigonométrique → Tournage)
Quelle est la signification du code : G41, G42, G40 ?
Réponse : G41 Correction d’outil à gauche
G42 Correction d’outil à droite
G40 Annulation de la correction d’outil
Quelle est la signification du code : M0 ?
Réponse : M0 Arrêt programmé

#### Programme de tournage ISO exercice niveau 1

Rédiger un programme simple de fraisage pour effectuer un perçage sur un tour avec le foret en position 101. Vous utiliserez une vitesse de rotation de 1000 tr/min (sens horaire) et une avance de 200 mm/min. La position du perçage devra être sur l’origine programme et sa profondeur de 20 mm.
N0 %ONOM DU PROGRAMME
N10 ...
N20 ...
N30 ...
N40 ...
N50 ...
N60 ...
N70 ...
N80 ...

##### Correction

N10 T0101 (FORET DIAM 18MM) ← Changement d’outil en position 0101
N20 G97 M03 S1000 ← Déclaration de la vitesse de rotation horaire
N30 G00 X0. Y0. Z2. ← Déplacement en avance rapide à la pos X0 Y0 Z2
N40 G01 Z-20 F0.2 ← Déplacement en avance travail à 200 mm/min
N50 G00 Z2. ← Déplacement en avance rapide à la pos Z2
N60 X150. Z250. ← Retour à une position sûre (position parking)
N70 M05 ← Arrêt de la broche
N80 M30 ← Fin de programme

#### Programme de tournage ISO exercice 2

L’usinage de cette pièce consiste à dresser et charioter en ébauche avec l’outil T01 et laisser 0.1 mm de surépaisseur. Faire ensuite la finition avec l’outil T03.
photo

##### Correction

N10 G0 X150 Z250 Approche rapide vers le point de changement d’outil
N20 G92 S2500 Limitation de la vitesse de rotation à Smax=2500 tr/min
(Ebauche)
N30 G96 F0.4 S160 Rotation de la broche à Vc=160 m/min avance de 0.4 mm/min
T0101 M4 Choix de l’outil n°1 avec le correcteur 1_ rotation sens horraire
N40 G0 X52 Z0.1 M8 Déplacement rapide _ activation de l’arrosage
N50 G1 X0 Dressage en ébauche de la face avant
N60 Z2 Sortie de l’outil en Z
N70 G0 X45,1 Interpolation linéaire en rapide vers le point de coordonné X45.1 Z2
N80 G1 Z-75 Chariotage en ébauche du diamètre X45.1
N90 X52 Sortie de l’outil en X
N100 G0 Z2 Interpolation linéaire en rapide vers le point d’abscisse Z=2
N110 X40.1 Interpolation linéaire en rapide vers le point d’ordonné X=40.1
N120 G1 Z-50 Chariotage en ébauche du diamètre X=40.1
N130 X51 Sortie de l’outil en X
N140 G0 X150 Z250 Interpolation linéaire en rapide vers le point de changement d’outil
(Finition)
N150 T303 Appel de l’outil 3 avec son correcteur
N200 G96 F0.15 S180 Changement de la vitesse de coupe et de l’avance
N210 G0 X52 Z0 Déplacement en rapide
N220 G1 X0 Dressage en finition de la face avant
N230 Z2 Sortie de l’outil en Z
N240 G0 X40 Interpolation linéaire en rapide vers le point d’ordonnée X45
N250 G1 Z-50
N260 X45 Chariotage simultané en finition du diamètre X=40 et X=45
N270 Z-75
N280 X52 Interpolation linéaire en rapide vers le point de changement d’outil
N290 G0 X150 Z50 M9 Désactivation de l’arrosage
N300 M30 Fin du programme

#### Exercice de fraisage

On souhaite usiner le contournage de cette pièce de fraisage. Dans un premier temps en programmation centre fraise puis avec une correction de rayon.
Ci-dessus les points nécessaires à la programmation sont présentés ci-dessus.
photo

##### Correction programmation centre fraise

%2002 (Nom du programme)
N10 G0 G52 X0 Y0 Z0 (Retour à l’origine mesure en vitesse rapide)
N20 M6 T1 D1 (Appel de l’outil n°1 et du correcteur 1 fraise de 5)
N30 X-10 Y-10 Z50 (Déplacement au point P1)
N40 M3 M41 S1591 M8 (Rotation broche + arrosage)
N50 Z44 (Déplacement au point P2)
N60 G1 Y0 F239 (Déplacement en vitesse travail au point P3)
N70 X60 (Déplacement en vitesse travail au point P4)
N80 Y-45 (Déplacement en vitesse travail au point P5)
N90 X0 (Déplacement en vitesse travail au point P6)
N100 Y10 (Déplacement en vitesse travail au point P7)
N110 G0 Z50 M5 M9 (Déplacement en vitesse rapide au point 8 + arrêt broche et arrêt arrosage) N120 G52 X0 Y0 Z0 (Retour à l’origine mesure en rapide)
N130 M2 (Fin de programme)

##### Correction programmation avec correction de rayon G41

%2002 (Nom du programme)
N10 G0 G52 X0 Y0 Z0 (Retour à l’origine mesure en vitesse rapide)
N20 M6 T1 D1 (Appel de l’outil n°1 et du correcteur 1 fraise 5)
N30 X-10 Y-10 Z50 (Déplacement au point P1)
N40 M3 M41 S1591 M8 (Rotation broche + arrosage)
N50 Z44 (Déplacement au point P2)
N60 G1 G41 Y-2.5 F239 (Déplacement en vitesse travail au point P3 avec correction de rayon)
N70 X57.5 (Déplacement en vitesse travail au point P4)
N80 Y-42.5 (Déplacement en vitesse travail au point P5)
N90 X2.5 (Déplacement en vitesse travail au point P6)
N100 Y10 (Déplacement en vitesse travail au point P7)
N110 G0 G40 Z50 M5 M9 (Déplacement en vitesse rapide au point 8 + arrêt broche et arrêt arrosage)
N120 G52 X0 Y0Z0 (Retour à l’origine mesure en rapide)
N130 M2 (Fin de programme)