Gestion des palettes

Au niveau du programme d’usinage de la pièce, il y a quelque modifications à apporter par rapport à un usinage standard (1 pièce chargée manuellement) : 

  • Le programme doit finir par M17 au lieu de M30

  • A la place d’écrire l’offset de manière standard (exemple G54) on écrit une variable (exemple G159=[V.P.OffsetFace1]) Pour rappel, les offsets machine vont de G54 à G59 et ensuite G159 = 7 et ainsi de suite. G54 correspond à G159 = 1. La machine a un maximum d’offsets à 97 (G159 =97)

  • On ajoute un ACS avec une variable sur l’axe C, qui permettra de faire une rotation de coordonnées (l’axe C n’étant plus physiquement disponible quand la machine travaille avec l’axe B à 90°). 

Exemple raccourci du programme principal 

(…)
#VAR (Initialisation des variables)
V.P.OffsetFace1 = 0
V.P.OffsetFace2 = 0
V.P.ACSFace1C = 0 
V.P.ACSFace2C = 0
#ENDVAR
P50 = 1 (Numéro de palette de départ)
P51 = 4 (Nombre de palettes à usiner)
$FOR P100 = P50,P50+P51-1,1 (Boucle : Premiere, Derniere, Increment)
$SWITCH P100
$CASE 1 (Palette 1) 
G801[1] (Chargement Palette Position 1)                                    
V.P.OffsetFace1 = 1 (G159 = 1)
V.P.OffsetFace2 = 2 (G159 = 2)
V.P.ACSFace1C = 0 (Correction Angle C Face1)
V.P.ACSFace2C = 0 (Correction Angle C Face2)
$BREAK
$CASE 2 (Palette 2)
G801[2] (Chargement Palette Position 2) 
V.P.OffsetFace1 = 4 (G159 = 4)
V.P.OffsetFace2 = 5 (G159 = 5)
V.P.ACSFace1C = 0 (Correction Angle C Face1)
V.P.ACSFace2C = 0 (Correction Angle C Face2)
$BREAK
$CASE 3 (Palette 3)
G801[3] (Chargement Palette Position 3) 
V.P.OffsetFace1 = 7 (G159 = 7)
V.P.OffsetFace2 = 8 (G159 = 8)
V.P.ACSFace1C = 0 (Correction Angle C Face1)
V.P.ACSFace2C = 0 (Correction Angle C Face2)
$BREAK
(...)
$DEFAULT 
#MSG SYN HMI["Numero de palette hors plage"]
M30
$ENDSWITCH
L  C:\NC\Programme_exemple.nc (Programme d'usinage)
L  C:\NC\Soufflage.nc (Programme de soufflage palette) 
$ENDFOR
G811 (Dechargement Palette)
(...)
M30

Codes G pour palettisation

  • G801[position de palette] : Ce code amène la palette depuis le magasin dans la cabine d’usinage, côté CNC.

Exemple: G801[0] : Ce code amène la 1ère palette non-usinée (1ère palette après une palette vide dans le magasin) depuis le magasin dans la cabine d’usinage, côté CNC. Et décharger la palette dans la CNC, si il y a un position vide dans le magasin.

Dans le cas où le magasin est plein, ce code va permettre d’amener la palette n°1

  • Si une palette est déjà côté CNC et qu’on en appelle une autre, le Scara va décharger la palette et amener la nouvelle en même temps.

Exemple : G801[2] S’il n’y a pas de palette côté CNC, la Scara va amener la palette numéro 2. S’il y a déjà une palette côté CNC, le Scara va la décharger et amener la palette numéro 2.

  • G811 va décharger la palette présente côté CNC et la ranger dans le magasin.

 Odoo • une photo avec une légende

Explications du programme

Au début du programme, on doit initialiser les variables. On y attribue une valeur égale à 0. Cela se passe dans le bloc entre #VAR et #ENDVAR. Il n’y a rien besoin de modifier dans cette partie.

Ensuite il y a 2 variables, P50 et P51, qui vont permettre de choisir le numéro de la palette de départ ainsi que le nombre de palettes qu’on veut usiner (Ceci va être amené à disparaître car ce sera intégré prochainement dans une page du HMI pour la sélection de palettes). Il est important de définir les posages par un numéro car des offsets y sont attribués. 

Exemple de boucle

  • si on veut usiner les 4 palettes du magasin, on met P50 = 1 (numéro de la palette de départ) et P51 = 4 (nombre de palettes à usiner).

  • Si par exemple on veut usiner seulement les 2 premières palettes du magasin on met P50 = 1 et P51 = 2.

  • Si on veut usiner seulement la palette numéro 3 on met P50 = 3 et P51 = 1

ATTENTION : Actuellement, on est obligé de remplir physiquement le magasin par 4 palettes. 

Ces 2 variables sont reprises dans la boucle $FOR P100 = “A”,”B”,”C”

Logique de la boucle :

A = première exécution

B = dernière exécution

C = incrément de la boucle 

Dans notre cas, si par exemple on voudrait usiner la palette numéro 1 et la palette numéro 3 du magasin, il faut modifier la boucle.


Exemple : P50 = 1

     P51 = 3


$FOR P100 = P50,P50+P51-1,2 

Dans ce cas on doit mettre 2 pour l’incrément afin de sauter de la palette numéro 1 à la palette numéro 3.

Ensuite, les #CASE renseignent les informations relatives à la palette sélectionnée. On va venir indiquer en premier lieu le code G801[] pour amener la palette, puis quels offsets y sont attribués et également dans le cas d’un sus-sous, un offset de rotation de coordonnées pour la face du dessus et un autre offset pour la face du dessous.

Actuellement on ne peut mettre physiquement seulement 4 palettes dans le magasin mais on peut très bien avoir plusieurs jeux de posages qu’on prépare pendant que la machine usine les pièces.

Les différentes variables pour les offsets permettent de pouvoir régler chaque posage séparément. On pourrait usiner tous les posages avec le même offset (par exemple G54) mais s’il y a des variations dans le positionnement de la pièce sur le posage on ne pourra pas le gérer.

Prenons le cas de l’usinage d’une platine horlogère effectuée avec un posage sus-sous.

$CASE 1 (Palette 1) 

G801[1] (Chargement Palette Position 1)                                    

V.P.OffsetFace1 = 1 (G159 = 1)

V.P.OffsetFace2 = 2 (G159 = 2)

V.P.ACSFace1C = 0 (Correction Angle C Face1)

V.P.ACSFace2C = 0 (Correction Angle C Face2)

$BREAK

  • Dans notre cas, on va usiner la partie SUS de la pièce avec l’offset G159 = 1 et la partie SOUS de la pièce avec l’offset G159 = 2.

  • On attribue l’offset G159 = 3 pour l’usinage de reprise.


Les offsets sur la machine se présenteraient comme suit (les valeurs sont indicatives) :

  • G159 = 1 : X-16 Y0 Z-60 B90 C90 (Face SUS)

  • G159 = 2 : X-16 Y0 Z-65 B90 C270 (Face SOUS)

  • G159 = 3 : X0 Y0 Z-72 B0 C0 (OP de reprise) 

Dans le programme d’usinage, au lieu de mettre G54 (G159 = 1), il utilise les variables renseignées dans les #CASE. Idem pour le décalage angulaire géré via un #ACS

  • Face SUS

G159=[V.P.OffsetFace1]

#ACS ON[0,0,0,0,0,V.P.ACSFace1C]

  • Face SOUS

G159=[V.P.OffsetFace2]

#ACS ON[0,0,0,0,0,V.P.ACSFace2C]


Pour info, un #ACS permet de faire un décalage de coordonnées. Dans le cas sus-sous, quand on a l’axe B à 90°, on a plus physiquement l’axe C pour tourner la pièce autour de l’axe Z.

Un ACS comporte 6 valeurs, correspondant aux 3 axes linéaires et aux trois axes rotatifs: #ACS (X,Y,Z,A,B,C) Dans notre cas, on jouera seulement sur l’axe C. Les autres axes peuvent être corrigés directement dans les offsets machine.


A noter que la valeur de "V.P.ACSFace1C" pourrait provenir d’une variable créée lors d’un palpage. Par exemple:

V.P.ACSFace1C  = V.P.PalpageFace1

Ce décalage est utile si on veut être exactement aligné avec les alésages de la barquette, par exemple.

De base, ces 2 valeurs pour les ACS sont à 0. C’est au contrôle de la pièce qu’on peut déterminer le décalage X,Y et angulaire entre le face SUS et la face SOUS.


Ensuite il y a une ligne $DEFAULT qui permet de gérer un cas qui n’aura pas été déjà gérer dans les #CASE. Si par exemple on appelle la palette numéro 5 alors qu’on a créé que 4 cas, on peut mettre un message sur le HMI pour signaler l’erreur

Par exemple: $ENDSWITCH indique la fin des cas qu’on a créé.

En arrivant à ce stade, on a géré tous les cas qu’on veut usiner. Il faut ensuite appeler le programme d’usinage de la pièce.

L  C:\NC\Programme_exemple.nc (Programme d'usinage)

Il faut écrire L puis le chemin du fichier. On peut mettre plusieurs programmes à la suite. On peut imaginer faire un petit programme de soufflage pour éliminer les copeaux près de l’embase de la palette, ceci afin d’avoir une surface propre avant d’amener la palette suivante.

ATTENTION  Ces programmes doivent impérativement finir par le code M17 au lieu du code M30, sinon la boucle ne continue pas et s’arrête au M30.


#ENDFOR indique la fin de la boucle.

Ensuite on ajoute encore G811 afin de décharger la dernière palette et la reposer dans le magasin à la fin de la boucle.

Puis M30 qui signale la fin du programme. On pourrait ajouter le code M100 qui va faire clignoter les leds de la machine, ceci afin d’avoir une information visuelle quand la machine a fini d’usiner toutes les palettes. Un Reset arrête le clignotement.


Si la machine est équipée du magasin de palpeur, il n’y a pas besoin de gérer chaque palette par un cas différent (#CASE). On lance un programme de palpage, avant usinage, qui vient écrire les décalages de la pièce dans les offsets de la machine. (C.F. voir e-learning sur le palpage !)


Pour les utilisateurs de Inventor HSM:

Au moment de post-traiter le code, il faut activer le mode Palettisation dans les options du post-processeur. Ca permet de sortir le code avec les différentes variables utilisées lors de la palettisation.


Vues
101 Total des vues
98 Vues Membres
391 Vues publiques
Actions
0 Aime
0 N'aime pas
0 Commentaires
Partager sur des réseaux sociaux
Partager le lien
Partager par email

S'il vous plaît S'identifier afin de partager ce webpage par email