![]() |
![]() |
|
|
||
![]() |
![]() |
![]() |
![]() |
|||||||||
Les macros clients
L'appel de sous-programmes est très utile lorsque l'on doit répéter un usinage particulier. Ce sous-programme peut être appelé plusieurs fois (dans le cadre d'un coutour à executer en plusieurs passes en profondeur : on l'écrira en absolu) ou à plusieurs endroits de la pièce (dans le cas d'un alésage en contournage : on l'écrira en relatif). L'inconvenient de ce principe, c'est que les dimentions de la forme sont définies "en dur". C'est à dire que, dans le cas de l'alésage, on à inscrit le diamètre en milimètres. Donc ce sous-programme ne sera utilisable que pour un seul diamètre. Pour palier à ce problème, FANUC a mis à notre disposition les macros client. Qu'est ce que les macros client ? Les macros client sont, en fait, des sous-programmes qui accèptent des arguments à l'appel (appelés adresse). Ces sous-programmes pourront éffectuer des opérations arithmétiques et logiques avec les variables reçues lors de l'appel. Ils facilitent la création de programmes spéciaux pour un travail particulier. Comme un petit dessin vaut mieux qu'un long discourt, voici un petit exemple pratique : Soit à réaliser les alésages en contournage du plan ci-dessous (dans de la tôle de 1 millimètre dépaisseur pour le cas qui nous interesse) ![]()
Alors, ces quelques lignes demandent quand même quelques explications ![]() Je ne parlerais pas du programme "normal", je pense qu'il n'y a pas de soucis là-dessus. La fonction préparatoire G65 est un appel de sous-programme qui accepte des arguments. L'adresse P est obligatoire et correspond au numéro du sous-programme à appeler. Les autres adresses (X, Y, Z, D, ...) sont des lettres autorisées et affectées à des numéros de variables. Lors de l'appel, toutes les variables sont mises à zéro, sauf celles présentes en argument. Voilà le tableau des adresses de type I tel que donné dans le manuel de programmation : ![]() Les adresses X, Y, Z et D sont reçues par la macro client comme variables #24, #25, #26 et #7. Dans la macro client, on peut utiliser ces variables de la façon qu'il nous convient. Je suggérerais simplement d'utiliser, si possible, les adresses correspondantes à l'utilisation que l'on veut en faire : par exemple X pour une position en X ... Dans la macro client, j'utilise une variable #1 qui reçoit le résultat d'une opération arithmétique simple : le résultat de la division de la variable #7 par 2. La variable #7 est, en fait, l'argument D lors de l'appel. Comme je passe en argument le diamètre à usiner, je dois calculer le rayon pour pouvoir l'utiliser dans la macro. Il est évident que, si je veux utiliser #1 pour recevoir un résultat, il ne faut pas avoir à utiliser l'adresse A comme argument dans l'appel. Lors de l'appel, si on omet les adresses X et Y, la macro fonctionne et le diamètre sera réalisé avec les coordonnées 0,0 comme centre. Si l'adresse Z est omise, la macro fonctionne toujours mais l'alésage sera réalisé à Z0. Par contre, si l'adresse D est omise, une erreur sera produite car on ne peut pas réaliser un cercle de rayon 0. Pour palier à ce problème, on utilise les opérations logiques pour tester les valeurs des arguments important. Test sur le diamétre : IF[#7EQ0]GOTO1000 Il faut lire : SI la variable #7 est égale à 0 alors aller à la ligne N1000. Et il faudra modifier la macro de cette façon : O0002(SOUS PROG.) IF[#7EQ0]GOTO1000 G0 X#24 Y#25 #1=#7/2(RAYON PLUTOT QUE DIAMETRE) G1 Z#26 F200 G41 G91 X#1 G3 I-#1 G1 G40 X-#1 G0 G90 Z2. N1000 M99 Exemple de macro client :Perçage de trous sur un diamètre.
Cette macro est utilisable telle quelle. Il est possible d'y apporter des améliorations, notamment sur les omissions en prévenant l'utilisateur sur l'erreur commise. Il est aussi possible d'intégrer un paramètre pour forcer un angle entre les trous (six trous tous les dix degrés)... |
||||||||||
![]() |
![]() |