Décalage
d'origine sur centre d'usinage
Il
arrive souvent qu'on veut répéter une
opération d'usinage sur une pièce ou pour
un ensemble de pièce installée sur la
table de la CNC. Prenons l'exemple de la pièce
ci-dessous. Nous voulons programmer le perçage
des trous mais en utilisant des fonctions de décalage
d'origine pour faire la démonstration.

Nous
pourrions faire la même chose en utilisant des
sous-programmes, mais le travail en mode incrémental
pose parfois des problèmes dimensionnels, nous
en discuterons dans un autre article des avantages et
désavantages de la programmation en mode incrémental.
Les
"work offest" (G54-G59) pourraient être utilisés
mais souvent leurs nombres sont limités. Nous
pourrions alors utiliser un décalage "temporaire",
la commande G52. Voici comment ça fonctionne:
Avec
la commande G52 X2.0 Y2.0 , le zéro de la pièce
sera déplacé au centre du trou inférieur
gauche, idéal pour programmer l'usinage du trou.
La commande G52 X8.0 Y2.0 décale l'origine au
centre du trou inférieur droit.
Dans cet exemple, nous n'utilisons pas le décalage
en Z mais nous pourrions le faire au besoin (ex.: pour
valider un programme sur la machine).
Remarquez
que le décalage se fait toujours à partir
de l'origine actif et qu'il est important de ramener
le décalage à G52 X0 Y0 à la fin
d'un programme.
Voici
un exemple sur un contrôle Fanuc pour l'usinage
des trous en utilisant le décalage G52.
O1000
(numéro de sous programme)
N1 G00 X0 Y0 (déplacement au centre du trou)
N2 Z-0.25 (déplacement à la surface d'usinage)
N3 G02 Y0.5 R0.5 F5.0 (entré en arc dans le trou)
N4 Y-0.5 R1.0 (usiner coté droit du cercle)
N5 Y0.5 R1.0 (usiner coté gauche du cercle)
N6 Y0 R0.5 (retour en arc au centre du trou)
N7 G00 Z0.1 (sortir en rapide)
N8 M99 (fin du sous-programme)
et
voici le programme principal
O0001
(numéro de programme principal)
N005 G54 G90 S400 M03 (choisir système de coordonnées,
mode absolue, départ broche)
N010 G00 X2.0 Y2.0 (rapide par dessus trou inférieur
gauche)
N015 G43 H01 Z0.1 (appel de la compensation de longueur
d'outil)
N020 G52 X2.0 Y2.0 (décalage de l'origine pour
le trou inférieur gauche)
N025 M98 P1000 (usiner le trou)
N030 G52 X2.0 Y6.0 (décaler l'origine pour le
trou supérieur gauche)
N035 M98 P1000 (usiner trou supérieur gauche)
N040 G52 X8.0 Y6.0 (décaler pour le trou supérieur
droit)
N045 M98 P1000 (usiner trou supérieur droit)
N050 G52 X8.0 Y2.0 (décaler pour le trou inférieur
droit)
N055 M98 P1000 (usiner trou inférieur droit)
N060 G52 X0 Y0 (décaler l'origine au coin inférieur
gauche de la pièce)
N065 G91 G28 Z0 (retour de l'axe Z)
N070 M30 (fin de programme)
N'oubliez
pas de retourner votre décalage d'origine à
la position originale comme dans la ligne N060 ci-dessus.
Changements
d'outil avec commande macro!
Plusieurs
sections dans vos codes CNC sont répétitives.
Des commandes similaires doivent être répétées
à plusieurs endroits dans le programme et ce,
surtout lors des changements d'outils. Étant
donné que les sections sont similaires et non
identiques, l'utilisation de sous-programmes s'avèrent
inefficace. Si votre contrôleur possède
le langage macro B (ou tout autre langage paramétrable),
vous pouvez simplifiez les commandes de changements
d'outils.
Même
avec un logiciel de programmation FAO, vous devez considérer
les difficultés des opérateurs à
l'exécution de vos programmes. La technique ci-dessous
permet de simplifier la programmation, assurer un code
standard pour les changements d'outils, évite
les erreurs et facilite le travail des opérateurs
à repartir les programmes à un numéro
d'outil spécifique.
Premièrement,
considérons les commandes nécessaires
pour un changement d'outil sur un centre d'usinage.
(Les commandes peuvent différer d'une machine
à une autre)
N060
M09 (Arrêt du fluide)
N065
G91 G28 Z0 M19 (Retour de l'outil pour le changement,
orientation de la broche)
N070
T02 M06 (Appel de l'outil désiré
dans la broche)
N075
G90 G54 S500 M03 T03 (Mode absolu, décalage,
départ de broche, choix du prochain outil)
N080 G00 X 1.5 Y 2.0 (Rapide à
la première position X et Y)
N085 G43 H02 Z 0.1 (Compensation longueur
d'outil, rapide à la première position
en Z)
N090 M08 (Départ du fluide)
Remarquez
que cette structure demeure identique pour tous les
changements d'outils. Seulement les valeurs en italiques
changeront d'un outil à un autre. Si des opérateurs
écrivent ces codes manuellement, plusieurs erreurs
peuvent arrivés. Considérons maintenant
la commande macro B suivant:
N060
G65 P1000 T02 S500 X1.5 Y2.0 Z0.1 (Changement
d'outil)
Lors
de l'exécution de la macro (O1000), la machine
effectuera tous les mouvements présents dans
les lignes de codes de départ. Dans cet exemple,
T indique le numéro de l'outil
à mettre dans la broche, nous assumons dans notre
exemple que le prochain outil suit de façon séquentiel.
Si ceci n'est pas le cas, nous pourrions rajouter une
variable pour l'outil en attente ( P
= prochain). S identifie la vitesse
de la broche et X , Y
et Z les positions de départ.
Voici
le programme macro:
O1000
(Macro de changement d'outil)
IF
[#23 NE #0] GOTO 1 (Si W est inclu dans la
commande, ne pas faire l'addition)
#23
= #20 +1 (Établir le prochain numéro
d'outil en séquence)
N1
M09 (Arrêt du fluide)
G91
G28 Z0 M19 (Retour à la position de
changement d'outil, orientation de la broche)
T#20
M06 (Appel de l'outil désiré)
G90
G54 S#19 M03 T#23 (Mode absolu, décalage,
départ de broche, choix prochain outil)
G00
X#24 Y#25 (Rapide à la première
position X et Y)
G43
H#20 Z#26 (Compensation longueur d'outil, rapide
à la première position en Z)
M08
(Départ du fluide)
M99
(Fin de la macro)
Nous
avons remplacé les lignes de code par des variables
locales. De plus, si la macro n'appel pas le prochain
outil avec un W, nous effectuons le calcul automatiquement.
Même si cet exemple ne le montre pas, vous pourriez
ajouter les commandes G40 et G80
sur la ligne N1 pour s'assurer de l'annulation
des compensations et cycles de perçages.
Pour
redémarrer un programme à un changement
d'outil, l'opérateur n'a qu'à localiser
les lignes G65, tous les commandes nécessaires
seront alors exécutées par la macro.
Changement
de décalage (offset) avec la maintenance des
outils!
Pour
des entreprises avec des quantités à produire
élevées sur leurs tours CNC, la maintenance
des outils (rotation et changement des pastilles) doit
être répétée plusieurs fois
pendant la production de la pièce. Pendant la
durée de vie de la pastille, l'usure de l'outil
provoque des changements de dimensions sur la pièce
finie, ce qui nécessite des modifications aux
paramètres de décalages pour l'outil.
La
plupart des tours CNC utilisent un décalages
de géométrie pour associer une valeur
numérique à la géométrie,
et un décalage d'usure de la pastille pour compenser
pour la variation de l'usure pendant la production.
Tous les opérateurs s'entendent pour dire que
cette réalité est présente, mais
dans certains cas, on utilise la compensation d'usure
pour des erreurs de montage de l'outil.
Prenons
l'exemple d'un outil de finition en position numéro
deux. Lors du montage de l'outil, les valeurs de décalage
de géométrie sont entrées dans
le contrôleur. Si les dimensions sont exactes,
le décalage d'usure sera zéro.
Par
contre, pendant la coupe, d'autres facteurs (comme la
pression de coupe) influencent légèrement
l'outil de finition. Dans notre exemple, disons qu'après
la première pièce, le diamètre
tourné est plus grand de 0.0006". Les monteurs
(set-up man) utiliseront souvent la compensation d'usure
pour régler cette différence en entrant
une valeur de -0.0006" dans la compensation d'usure
numéro deux. Si la production débute avec
ces valeurs, une valeur de décalage d'usure aléatoire
sera entré pour chaque outil en début
de production.
L'outil
deux continu de produire des pièces. Après
50 pièces, l'opérateur mesure le diamètre
coupé et s'aperçoit qu'il a augmenté
de 0.0002", une variation due à l'usure de l'outil.
L'opérateur ajuste le décalage d'usure
de l'outil deux par cette variation (la valeur est maintenant
de -0.0008"). Cette réduction du décalage
d'usure devra probablement être répétée
plusieurs fois avant que la pointe de l'outil ne soit
plus coupante. Lors de l'indexation de la pastille,
l'opérateur devra se souvenir de la valeur initiale
(-0.0006" dans notre cas) avant de commencer la prochaine
pièce. Si plusieurs outils de finition sont utilisés,
il est difficile de se souvenir de toutes ces valeurs
initiales.
Quelle
était la cause de la variation initiale du diamètre?
Évidemment pas l'usure de l'outil! Dans notre
cas, c'était la pression de coupe, mais l'erreur
pourrait provenir d'un mauvais placement de l'outil
dans la tourelle. De toute façon, étant
donné que l'on utilise le décalage d'usure
pour corriger des erreurs de montage, l'opérateur
doit travailler avec des valeurs aléatoires dans
la table des décalages d'usure. Ces valeurs doivent
être mémoriser pour reprendre après
un changement ou rotation de la pastille.
En
réalité, les variations de la première
pièce sont dues à la mesure de la géométrie
(gérer par le décalage de géométrie)
que de l'usure de la pastille. En ajustant le décalage
de géométrie (geometry offset) de -0.0006,
le décalage d'usure (wear offset) serait de zéro
pour chaque outil. Le chiffre zéro est beaucoup
plus facile à se souvenir par l'opérateur
lors de la rotation ou du changement de la pastille.
Les
monteurs (set-up man) n'aiment pas modifier la valeur
du décalage de géométrie avec des
nombres si petits car c'est difficile de détecter
les erreurs d'entrée numérique. Si votre
contrôleur possède l'option de la programmation
paramétrique, vous avez accès aux décalages
par des variables internes. Vous pourriez utiliser les
décalages d'usure lors du montage et ensuite
transférer ces valeurs aux décalages de
géométrie pour ensuite remettre à
zéro les décalages d'usure. Ce programme
peut être exécuté une fois, après
les réglages de la première pièce
quand les outils sont neufs.
Voici
un exemple de programme paramétrique en format
macro B. Il prends pour acquis que la CNC possède
12 stations d'outils.
O5001
(Numéro de programme)
#101 = 1 (Compteur)
N1 IF [#101 GT 12] GOTO 99 (Test si
fini)
#[2400 + #101] = #[2400 + #101] + #[2000 + #101]
(Geo offset X = Geo offset X + Wear X)
#[2500 + #101] = #[2500 + #101] + #[2100 + #101]
(Geo offset Z = Geo offset Z + Wear Z)
#[2000 + #101] = 0 (Remettre décalage
d'usure (wear offset) X à zéro)
#[2100 + #101] = 0 (Remettre décalage
d'usure (wear offset) Z à zéro)
#101 = #101 + 1 (Incrémente
le compteur)
GOTO 1 (Retour au test)
N99 M99 (Fin de la macro)
Tenir
compte des variations en Z de l'épaisseur du
brut!
Pour
produire des programmes qui ne nécessite jamais
de modifications futures, vous devez éliminer
les choses qui peuvent varier entre chaque cycle de
production. Parfois certaines variables sont hors de
portée des opérateurs ou programmeurs
CNC. Prenez le cas ou vous devez produire une pièce
à partir d'un brut de fonderie et qu'il y a une
variation de surépaisseur pour l'usinage, et
ce, sur une base régulière.
Considérons,
par exemple, le surfaçage d'une pièce.
Si le brut provient de la fonderie, et que le matériel
a enlevé varie d'une fois à l'autre, le
nombre de passes requises pour surfacer la pièce
devra être modifié en fonction du surépaisseur
de matériel.
Malheureusement,
la situation nous fait courir après notre queue.
La prochaine fois que nous lancerons la production,
la surépaisseur de matériel ne sera pas
pareil et il faudra encore une fois modifier le programme.
En effet, chaque fois que la pièce sera remise
en production, il faudra possiblement changer le programme.
Il se peut que cette variation se produit dans un même
lot de production, alors le changement pourrait avoir
lieu encore plus souvent.
Si
le contrôle de cette surface est hors de votre
portée (le fournisseur ne peut maintenir une
surépaisseur constante), la prochaine chose à
considérer serait de modifier le programme pour
qu'il s'adapte à cette variation de surface avec
la programmation en macro B (ou un autre langage de
programmation paramétrique) pour que votre code
G s'adapte selon la situation.
Au
début de votre programme, vous pourriez ajouter
deux variables:
O0001
(Programme principal)
#120 = 0.25 (Surépaisseur sur
le brut de fonderie)
#121 = 0.1 (Profondeur de passe en
Z)
N005 T01 M06 (Début normal
du programme)
Nous
avons utilisé la variable #120 pour définir
l'épaisseur du matériel brut et la variable
#121 pour définir la profondeur de passe. Une
fois que l'outil est en position XY, donnons la commande
suivante pour exécuter l'usinage:
N040
G43 Z1.015 (Déplacement rapide en Z
à 1 pouce de la surface finale)
N045 G65 P9001 S#120 D#121 C2001.0
(Usiner surface)
Notre
technique nécessite un mouvement rapide à
exactement 1 pouce par dessus la surface finale, prenez
note que nous voulons laisser 0.015" pour la finition.
Sur
la ligne N045, nous appelons la macro O9001. La variable
S nous donne la surépaisseur en Z et la variable
D la profondeur de chaque passe. La variable C nous
donne le programme contenant les mouvements en XY requis
à chaque passe. Veuillez noter que le programme
(O2001 dans cet exemple) peut avoir n'importe que l
type de mouvement. Alors aucune limite sur le type d'application.
Voici
un exemple de mouvement en XY:
O2001
(Program containing XY motions)
N001
G01 X5.75 F4.0
N002
Y3.75
N003
X0.25
N004
Y-0.6
N005
M99 (End of program)
Maintenant,
voici la macro pour prendre des passes multiples:
O9001
(Numéro de programme)
#110
= #5001 (Obtenir position absolue en X)
#111
= #5002 (Obtenir position absolue en Y)
#112
= #5003 (Obtenir position absolue en Z)
#102
= FUP [#19/#7] (Calculer le nombre de passes)
#103
= #19/#102 (Recalculer les profondeurs de
passes)
#104
= 1 (Compteur de passes)
#105
= #112 – 1.0 + #19 - #103 (Calculer position
Z pour la passe en cours)
N9001
IF [#104 GT #102] GOTO 9005 (Si terminé,
sortir)
G00
Z#105 (Rapide à la position Z à
usiner)
G01
(Instaurer mode interpolation linéaire
en avance programmé)
G65
P#3 (Faire les mouvements XY pour cette passe)
G00
Z#112 (Rétraction au Z initial)
X#110
Y#111 (Mouvement au XY initial)
#104
= #104 + 1 (Incrémenter le compteur
de passes)
#105
= #105 - #103 (Calcul de la nouvelle surface
Z à usiner)
GOTO
9001 (Retour dans la boucle)
N9005
M99 (Fin de la macro)
Au
premier coup d'oeil, cette technique peut paraître
compliquée, mais il faut se rappeler que la technique
facilite les opérateurs et les gens réalisant
les montages lorsqu'il faut tenir compte de la variation
de l'épaisseur du brut. Maintenant ça
devient très facile à modifier. La personne
n'aura qu'à changer une ou deux lignes dans le
début du programme.
Aussi,
le programme O9001 est universel. Il est fonctionnel
pour tout travail avec des variations en Z. Vous pouvez
régler les paramètres machines pour éviter
d'effacer les programmes de la série 9000 par
mégarde.
Position
par rapport aux coordonnées machines
Presque toutes les machines CNC ont une position de
référence machine. Cette position, pour
un controleur Fanuc s'appelle la position de référence
machine. Les controleurs de type Fanuc utilisent un
G28 pour retourner la machine à cette position.
Par exemple, la commande G91 G28 X0 Y0 Z0 retournera
la machine à sa position de référence
machine.
Parfois, le fabricant de la machine utilisera des positions
pour le changement d'outil, le chargement de pallette
ou encore des mesureurs d'outils. Ces positions peuvent
être interpellées indépendamment
des positions de décalage de travail (work offset),
permettant de déplacer la machine à des
endroits prédéterminés sur la table.
Sur les controleurs Fanuc, la commande G53 permet un
déplacement par rapport à la position
de référence machine. La commande G53
se fait en vitesse rapide et toutes les coordonnées
sont en absolues de la référence machine.
Normalement, la position de référence
machine est située à l'extrémité
positive de chaque axe.
Prenons par exemple la position de chargement et déchargement
des pièces. Cette position, mesurée une
fois, par rapport à la référence
machine est de X-10.3762 et Y-14.3837.
Dans le programme, une commande G53 X-10.3762 Y-14.3837
enverra la machine à la position définie
en vitesse rapide, peut importe la position actuelle
de la machine. Étant donné que cette position
ne fait pas référence au décalage
de travail (work offset), ça fonctionne dans
tous les programmes.