programmation de sous-routines Gcode qui résiste...

  • Auteur de la discussion vax
  • Date de début
vax
vax
Modérateur
5 Mar 2008
7 831
Guipavas (près de Brest)
  • Auteur de la discussion
  • #1
Bonsoir à tous,
Je découvre mon centre FADAL VMC 4020 4 axes (3+1) qui me rend bien service. Ce serait un truc américain (toujours existant) avec une base de Fanuc masqué, l'interface est assez ancienne (machine de 1991) avec tout en ligne de commande (écran en mode texte).
Après avoir mis au point un programme 12 minutes de cycle avec 14 outils, j'essaye de l'optimiser avec plusieurs posages pour faire plusieurs pièces sans intervention.
Je commence avec deux mandrins sur un montage pris dans un de mes étaux.

Il y a bien sûr la solution de doubler le code en alternant le G55 et les G56 (G54 est la position de mon premier étau sur la table), mais c'est vraiment pas ma tasse de thé vu que ce serait quand même de la programmation bien merdique.

Je me lance donc dans l'apprentissage de l'utilisation des sous-routines et j'en arrive à mon soucis.

Lorsque je lance mon programme, la machine réalise bien le premier appel de sous-routine dans le premier repère et me donne un message d'erreur en arrivant au M17 et le programme se fige à cet endroit.

Je vous laisse une version allégée du programme, le reste est strictement sur la même architecture (une sous-routine par outil appelé deux fois avec 2 changements de repères)...
Si vous avez une idée... Je vous en remercie d'avance.
Vax

%
N1 O805(CORPS)

(-------------)
(SOUS-ROUTINES)
(-------------)

N100 L0100(POINTAGE)
N101 T1M6
N102 G0G90S1500.2M3X73.435Y13.435
N103 G0G43H1Z5.M8
N110 G81G98X73.435Y13.435Z-1.2R+2.F200.
N120 X60.Y25.
N130 X39.775Y-14.695
N140 X85.Y0
N150 X77.983Y-17.366
N160 G80
N170 G0X39.Y0
N180 G81G98X39.Y0Z-2.5R+2.
N190 G80
N200 G0 Z20
N210 M17


N220 L0200 (PRE-PERGAGE X9.8 POUR M18X1.5)
N230 T2M6
N240 G0G90S1200.2M3
N250 G0X30.Y0
N260 G0G43H2Z5.M8

N270 G83G98X39.Y0Z-31.R+2.Q5.F150.
N280 G80
N290 M17

N300 M30


N3050 (INITIALISATION)
N3060 G21
N3070 G0G17G40G49G80G90

(POINTAGE)
N3130 G55
N3140 L0101
N3150 G56
N3160 L0101
N3170 M5
N3180 M1

(PRE-PERGAGE X9.8 POUR M18X1.5)
N3240 G55
N3250 L0201
N3260 G56
N3270 L0201
N3280 M5

(LIBERATION MACHINE)
N5000 G0G91G28Z0
N5010 G0G91G28Y0
N5020 G90
N5030 M6T1
N5040 M30
%
 
pinou29
pinou29
Compagnon
18 Mar 2009
2 877
Toulon ( Var )
Bonjour Vax.
Je n'ai pas du tout de réponse à t'apporter, juste apprécier la taille de ton jouet, la vache dis-donc, tu ne fais pas dans la demi-mesure.
De qui bien "bricoler", si je peux m'exprimer ainsi, de beaux usinages en perspective.
Bon week-end.
Bernard.
 
vax
vax
Modérateur
5 Mar 2008
7 831
Guipavas (près de Brest)
  • Auteur de la discussion
  • #3
Coucou Bernard,
et oui, voilà où ça mène de s'acheter un tour de 125Kg pour bricoler "un peu"...

Au plaisir de te revoir "sur mes terres" cette fois ci j'espère ! :wink:
 
vax
vax
Modérateur
5 Mar 2008
7 831
Guipavas (près de Brest)
  • Auteur de la discussion
  • #4
Bon, je vois que le sujet ne passionne pas les foules ! :wink:

Faute de trouver ce qui me casse les pieds, j'ai pris l'option de faire avec des sous-programmes.

C'est un peu moins convivial car chaque "routine" est dans un programme différent, donc à chaque petite modification pour amélioration il faut quitter le programme principal pour ouvrir le sous programme concerné puis re-ouvrir le programme principal. Alors qu'avec la solution initiale d'utiliser des sous-routines tout le programme est dans le même fichier...

Je fais cette recherche bien sûr pour apprendre ma machine le plus possible et particulièrement dans ce cas ou ce sont des pièces qui seront réalisées en séries régulières sur l'année, donc chaque petite amélioration sera un vrai gain en temps de production.
 
osiver
osiver
Compagnon
7 Sept 2013
12 023
Je ne connais pas cette machine en particulier mais un peu le Gcode et je m'étonne du M30 en N300.
Par ailleurs quel est le message d'erreur ?
 
vax
vax
Modérateur
5 Mar 2008
7 831
Guipavas (près de Brest)
  • Auteur de la discussion
  • #6
Bonjour, merci pour ta réponse,
La doc spécifie bien qu'il faut placer un M30 après la dernière sous routine.

Pour le message d'erreur, il est assez peu parlant (une traduction canadienne certainement), genre (je n'ai plus la formulation exacte qui est assez drôle) "embrouille dans le code en N210".
 
osiver
osiver
Compagnon
7 Sept 2013
12 023
Ah OK !
Je posais la question parce que le M30 correspond normalement à la fin du programme et retour à la première ligne. Sur ma F3-CNC par exemple lorsqu'on le rencontre en cours de chargement, tout le reste derrière est ignoré. Je m'en sers pour placer des commentaires sans occuper la mémoire limitée de la machine.
Pour avoir un message d"erreur plus explicite, peut-être pouvez-vous mettre la machine en Anglais et voir ce que ça raconte ?
 
vax
vax
Modérateur
5 Mar 2008
7 831
Guipavas (près de Brest)
  • Auteur de la discussion
  • #8
Oui, je suis habitué moi aussi à cette utilisation du M30 sur la commande NUM1060 de mon tour SOMAB, mais là visiblement c'est définit comme ça dans la doc...

Le langage de la machine est défini dans une mémoire, je n'ai pas le choix de basculer en anglais...
Par contre, j'ai la doc en anglais aussi, faut que j'aille y faire un tour, car la doc en français est aussi dans un style assez déroutant, soit très très mal traduit soit en canadien...
 
S
siger1
Ouvrier
14 Déc 2008
339
Dives 60310 picardie
bonjour
c'est quoi la fonction m17
j'ai travaillé sur une fanuc 6M
j'avais trouvé une alternative , pour travailler sur 2 postes distants de 500mm , avec un seul programme
si tu trouve pas je te proposerais ma solution
a+
siger1
 
S
siger1
Ouvrier
14 Déc 2008
339
Dives 60310 picardie
bonjour
ps sur fanuc
c'est M99
est ce que j'ai bien compris ! tu as fait un programme pour pour usiner sur ton premier mandrin ( fonctionne t'il ) tu voudrais aller usiner sur ton deuxieme mandrin , avec le même progamme, c'est cela!!
dans ton programme principal, quelle est la fonction qui t'envois en sous programme, j'ai du mal a comprendre !!
sur ton pupitre il a t'il une fonction saut de bloc, ( actif ou non actif) sur fanuc c'est ( / )
cette fonction permet de sauter les lignes que l'on ne veut pas lire
suivant ta reponse et si j'ai bien compris, c'est ça le probleme!!!
a+ siger1
 
osiver
osiver
Compagnon
7 Sept 2013
12 023
quelle est la fonction qui t'envois en sous programme, j'ai du mal a comprendre !!
(POINTAGE)
N3130 G55 Changement d'origine pour première pièce (étau)
N3140 L0101 Appel au S/P de pointage (L0100)
N3150 G56 Changement d'origine seconde pièce
N3160 L0101 Appel au S/P de pointage
N3170 M5 Arrêt broche ??
N3180 M1 ???

(PRE-PERGAGE X9.8 POUR M18X1.5)
N3240 G55 Changement d'origine pour première pièce (étau)
N3250 L0201 Appel au S/P de perçage (L0200)
N3260 G56 Changement d'origine seconde pièce
N3270 L0201 Appel au S/P de perçage (L0200)
N3280 M5 Arrêt broche ??
:wink:
 
Dernière édition:
MegaHertz
MegaHertz
Compagnon
31 Août 2017
1 055
Bonjour,

De l'élégance de la programmation G-CODE : Bof et rebof.

Si tu as moins de 100kE de chiffre d'affaire, Fusion 360 est gratuit.
Si tu fais plus de 100kE, tu n'es pas à 400E près à l'année.

Je sais que quand on connaît le G-Code on en est fier et on ne veut pas déléguer mais le fait est que :
1/ Le G-Code ne permet pas les cycles modernes d'usinage trochyoidale.
2/ La CFAO c'est bien pratique pour avoir une vue d'ensemble et se concentrer sur les paramètres d'usinage.
3/ Côté archivage c'est tout de même plus sympa d'avoir la forme 3D AVEC les trajectoires.
4/ Tu casses ta fraise de 10 et il te reste une fraise de 8 : Tu refais le prog avec en un tour de main.
5/ Tu peux facilement te faire de belles fiches de poste qui permettent facilement de fabriquer à nouveau une pièce 6 mois après.

Je sais que ça fait mal au :ban: de laisser un GCode kilométrique mais je t'assure que la CFAO fera mieux que toi.
 
Dernière édition:
vax
vax
Modérateur
5 Mar 2008
7 831
Guipavas (près de Brest)
  • Auteur de la discussion
  • #14
Bonjour à tous,

j'essaye de répondre dans l'ordre.

LO (en deux lettres pas L zéro) c'est l'entête d'une nouvelle sous-routine (de 00 à 89 les deux chiffres suivants sont TOUJOURS à 00 pour une déclaration).

M17 fin d'une sous routine
M99 fin des sous routines

est ce que j'ai bien compris ! tu as fait un programme pour pour usiner sur ton premier mandrin ( fonctionne t'il ) tu voudrais aller usiner sur ton deuxieme mandrin , avec le même progamme, c'est cela!!
Oui, j'ai un programme complet qui fonctionne pour une pièces.
Je veux donc séparer ce programme en plusieurs sous routines (une par outil) pour mutualiste au maximum les temps perdu à changer d'outil et faire des G0 inutiles.

dans ton programme principal, quelle est la fonction qui t'envois en sous programme, j'ai du mal a comprendre !!
L'appel à une sous routine se fait par L101 pour la première sous routine par exemple L N°de la routine à exécuter et nombre de fois qu'on va l'exécuter. sous routine N°1 exécutée une fois -> L101

sur ton pupitre il a t'il une fonction saut de bloc, ( actif ou non actif)
Il faut que je regarde, j'ai bien un interrupteur mais c'est pour les arrêts optionnels M1...

De l'élégance de la programmation G-CODE : Bof et rebof.
Sur les machines modernes je peux partager ton avis, mais je parle d'une machine de 1991 qui possède à peine 100Ko de mémoire...
Accessoirement, je suis du genre à déléguer à un ordinateur une fois que je sais faire à la main. ET PAS AVANT... :wink:

J'utilise déjà (j'essaye au moins) Fusion360 et partage ton avis sur ce logiciel.
 
MegaHertz
MegaHertz
Compagnon
31 Août 2017
1 055
Bonjour,

Essaies voir M98 L0100 ou M98 L0200

Sur la petite Proxon, je devais mettre une vraie instruction sur la ligne du label sinon il me jetait, et hors de question d'y mettre un commentaire.
 
osiver
osiver
Compagnon
7 Sept 2013
12 023
Chez moi aussi il faut une vraie instruction : G25 L8002 pour appel de S/P 80 exécuté 2 fois
 
S
siger1
Ouvrier
14 Déc 2008
339
Dives 60310 picardie
rebonjour
je commence a comprendre , tu n'as pas de changeur d'outil, je pensais que tu voulais faire deux pieces pour gagner du temps, et changer la premiere piece , pendant l'usinage de la deuxieme, c'est ce que je faisais
a+siger1
 
vax
vax
Modérateur
5 Mar 2008
7 831
Guipavas (près de Brest)
  • Auteur de la discussion
  • #18
Essaies voir M98 L0100 ou M98 L0200
Sur ma machine M98 Pxxxx c'est pour faire un appel à un sous-programme (un autre programme placé ailleurs dans la mémoire), pas pour une sous-routine (un bloc dans le fichier principal.

Chez moi aussi il faut une vraie instruction : G25 L8002 pour appel de S/P 80 exécuté 2 fois
C'est la forme un peu classique, mais là le programme exécute bien une fois le premier appel à la sous-routine, c'est au M17 de fin qu'il y a visiblement un souci...

rebonjour
je commence a comprendre , tu n'as pas de changeur d'outil, je pensais que tu voulais faire deux pieces pour gagner du temps, et changer la premiere piece , pendant l'usinage de la deuxieme, c'est ce que je faisais
a+siger1
Non non, tu avais bien compris. J'ai un changeur 21 outils (type parasol) mais qui est très lent. Il fait une pose entre chaque poste d'outil. J'ai beau avoir placé mes outils de manière "chronologique" je trouve ça long. D'où l'idée de faire plusieurs pièces à la fois, chaque outils fait tout ce qu'il a à faire sur toutes les pièces avant qu'un nouvel outils ne soit appelé.
Pour l'instant, j'ai deux mandrins sur un support, mais si j'arrive à faire fonctionner ce système, je compte réaliser un posage qui pourrait recevoir 9 ou 12 pièces.

Donc après avoir résolu ce petit problème je vais me poser sur une gestion paramètrée des changements de systèmes de coordonnées.
Un truc ou je done le système de coordonnée de départ G55 par exemple et le nombre de posages. Et ensuite le système viendra appeler les sous routines les unes après les autres en se répétant autant de fois que nécessaire.

Merci à tous de l'intérêt que vous portez à mon petit casse tête...
Vax
 
S
siger1
Ouvrier
14 Déc 2008
339
Dives 60310 picardie
re
c'est ton dernier sous programme, apres il doit lire le M30
plutot que de lire m17 retour au programme , tu lui dit de relire la ligne de ton programme principal ( L... )
je faisais ça sur fanuc, au lieu de mettre M99 a la fin du sous progamme, j ''ecrivais P010 M99 j'allais lire la premiere ligne du programme principal, et c'etait reparti
c'est tordu mais ça marcher impec
j'espere que tu va t'en sortir
a+siger1
 
osiver
osiver
Compagnon
7 Sept 2013
12 023
plutot que de lire m17 retour au programme , tu lui dit de relire la ligne de ton programme principal ( L... )
C'est gonflé ! C'est le genre de truc à planter la machine par débordement de pile ... si elle l'accepte :???:
 
MegaHertz
MegaHertz
Compagnon
31 Août 2017
1 055
Non non, tu avais bien compris. J'ai un changeur 21 outils (type parasol) mais qui est très lent. Il fait une pose entre chaque poste d'outil. J'ai beau avoir placé mes outils de manière "chronologique" je trouve ça long. D'où l'idée de faire plusieurs pièces à la fois, chaque outils fait tout ce qu'il a à faire sur toutes les pièces avant qu'un nouvel outils ne soit appelé.
Pour l'instant, j'ai deux mandrins sur un support, mais si j'arrive à faire fonctionner ce système, je compte réaliser un posage qui pourrait recevoir 9 ou 12 pièces.
Bonjour,

En CFAO c'est faisable avec les Setup et Templates.

Ton premier Setup ce sont les 9 ou 12 bruts (ou un seul brut ?)

Là dessus tu définis la 1e étape sur une seule pièce
Puis tu appliques utilises ça comme template que tu appliques sur les 8 ou 11 autres.

Si tu modifies l'original, les 8 ou 11 autres suivent.

Pour le 2e outil, tu crées un 2e setup.

Si le prog dépasse la capacité mémoire de la machine tu coupes le fichier texte à un Setup ou même entre deux pièces, voir entre deux usinages.
Dans Fusion, le Setup et chaque opé est repérée par des commentaires dans le G-CODE.

En gros, quand tu trouves un commentaire dans le GCode c'est que tu peux couper le fichier :)
 
vax
vax
Modérateur
5 Mar 2008
7 831
Guipavas (près de Brest)
  • Auteur de la discussion
  • #22
Merci beaucoup, mais comme déjà dit plus haut, ce n'est pas ma question.
Le but n'est pas de savoir comment faire autrement mais de comment faire tout court.

Cette machine est assez courante aux USA, je vais poser la question sur Practical dès que j'aurai le temps de rédiger proprement la chose (mon anglais est suffisant pour baragouiner en face à face quand je voyage, mais mérite un peu d'attention lorsque je veux écrire !)
 
jon
jon
Compagnon
13 Avr 2014
1 756
Lorient
Les balises du style O- while ne marchent pas ? (linux CNC)

Sinon il y a ça aussi:

"La répétition repeat, exécutera les blocs contenus entre repeat et endrepeat le nombre de fois spécifié entre crochets. L’exemple suivant montre comment usiner une séries de 5 formes diagonales commençant à la position courante.

Exemple avec repeat
(Usine 5 formes diagonales)
G91 (Mode incrémental)
O103 repeat [5]
(insérer le code d'usinage ici)
G0 X1 Y1 (Mouvement en diagonale vers la position suivante)
O103 endrepeat
G90 (Mode absolu)
"

John.
 
vax
vax
Modérateur
5 Mar 2008
7 831
Guipavas (près de Brest)
  • Auteur de la discussion
  • #24
Les fonctions spécifiques sont vraiment différentes de celles de LinuxCNC...
Cela aurait été trop facile :wink:
 
Haut