Macro per l'interpolazione elicoidale/circolare interna con attacco dolce

Sezione Fanuc
Rispondi
Avatar utente
Thomas___
Newbie
Newbie
Messaggi: 17
Iscritto il: martedì 25 maggio 2021, 15:26
Località: Senigallia

Macro per l'interpolazione elicoidale/circolare interna con attacco dolce

Messaggio da Thomas___ » martedì 28 febbraio 2023, 22:52

Ciao a tutti, sta sera vorrei condividere delle macro da me create, come da titolo si tratta di macro per l'interpolazione elicoidale/circolare interna con attacco dolce, siccome le nozione di base le ho imparate grazie a questo forum vorrei dare anch'io il mio contributo, spero possano tornare utili a qualcuno.


(MACRO IE INTERNA CON ATTACCO DOLCE CON Z ESATTA)
TEST: SU FANUC Oi-F/Oi-F plus

| ESEMPIO DI RICHIAMO : G65P3 X Y R Z Q D I V
| X (CENTRO FORO IN X)
| Y (CENTRO FORO IN Y)
| R (POSIZIONAMENTO IN RAPIDO)
| Z (QUOTA FINALE IN Z)
| Q (INCREMENTO IN Z)
| D (DIAMETRO CERCHIO)
| I (PULIZIA PIANO 1=SI ALTRO=NO)
| V (VERSO 2=ORARIO 3=ANTIORARIO)


%
O0003
(PRELEVO DIAMETRO UT DA TABELLA UTENSILI)
#1=[[#[12000+#4107]+#[13000+#4107]]*2]
(SALVO Z DI POSIZIONAMENTO)
#2=#5003
(VERIFICO ASSEGNAZIONE ARGOMENTI)
IF[#18EQ#0]GOTO1001(R)
IF[#24EQ#0]GOTO1002(X)
IF[#25EQ#0]GOTO1003(Y)
IF[#26EQ#0]GOTO1004(Z)
IF[#7EQ#0]GOTO1005(D)
IF[#17EQ#0]GOTO1006(Q)
IF[#22EQ#0]GOTO1007(V)
IF[#4EQ#0]GOTO1008(I)
(PONGO GLI ARGOMENTI Q D V I POSITIVI)
#7=ABS[#7](D)
#17=ABS[#17](Q)
#22=ABS[#22](V)
#4=ABS[#4](I)
(CONDIZIONI NECESSARIE PER UNA CORRETTA ESECUZIONE)
IF[#1EQ0]GOTO1009
IF[#7LT#1]GOTO1010
IF[#18LE#26]GOTO1011
IF[#18GT#2]GOTO1012
IF[[#22NE2]AND[#22NE3]]GOTO1013
IF[#17EQ0]GOTO1014
IF[#17GTABS[#18-#26]]GOTO1015

(POSIZIONAMENTO)
G0G90X#24Y#25
G0Z#18
(ATTACCO TANGENZIALE)
G1G[44-#22]X[#24-[#1/2]]
G[#22]X[#24+[#7/2]]Y#25R[[#1+#7]/4]
#18=#18-#17
(INTERPOLAZIONE ELICOIDALE)
WHILE[#18GE#26]DO1
G[#22]I-[#7/2]Z#18
#18=#18-#17
END1
(ULTERIORE PASSATA SE NECESSARIA)
IF[[#18+#17]LE#26]GOTO1
G[#22]I-[#7/2]Z#26
(PULIZIA DEL PIANO SE RICHIESTA)
N1IF[#4NE1]GOTO2
G[#22]I-[#7/2]Z#26
(DISIMPEGNO)
N2F[#4109*2]G[#22]X[#24-#1/2]Y#25R[[#1+#7]/4]
G0G40Z#2F[#4109/2]
GOTO99

N1001 #3000=1 (R NON ASSEGNATO)
N1002 #3000=2 (X NON ASSEGNATO)
N1003 #3000=3 (Y NON ASSEGNATO)
N1004 #3000=4 (Z NON ASSEGNATO)
N1005 #3000=5 (D NON ASSEGNATO)
N1006 #3000=6 (Q NON ASSEGNATO)
N1007 #3000=7 (V NON ASSEGNATO)
N1008 #3000=8 (I NON ASSEGNATO)
N1009 #3000=9 (D UTENSILE = 0)
N1010 #3000=10(DIAMETRO CERCHIO < D UTENSILE)
N1011 #3000=11(R MINORE DI Z)
N1012 #3000=12(R MAGGIORE DI Z ATTUALE)
N1013 #3000=13(V PUO ESSERE 2 O 3)
N1014 #3000=14(Q = 0)
N1015 #3000=15(Q TROPPO GRANDE)
N99
M99
%

| SE VOLETE VISUALIZZARE LE MACRO TRAMITE CIMCO :
M6T14
#5003=10
G0X10Y10Z10
G65P3X10Y10R2Z-10Q3D100I1V3

-SOSTITUITE NELLA MACRO #1=[[#[12000+#4107].... con #1=n
-NON USARE ARGOMENTI UGUALI A 0, IL CIMCO CONSIDERA #0=0


(MACRO IE INTERNA CON ATTACCO DOLCE CON Z UGUALE O MINORE A QUELLA ASSEGNATA)(PER FILETTATURA)
TEST: NON ESEGUITO

| ESEMPIO DI RICHIAMO : G65P4 X Y R Z Q D V
| X (CENTRO FORO IN X)
| Y (CENTRO FORO IN Y)
| R (POSIZIONAMENTO IN RAPIDO)
| Z (QUOTA FINALE IN Z)
| Q (PASSO FILETTATURA)
| D (DIAMETRO CERCHIO)
| V (VERSO 2=ORARIO 3=ANTIORARIO)


%
O0004
(PRELEVO DIAMETRO UT DA TABELLA UTENSILI)
#1=[[#[12000+#4107]+#[13000+#4107]]*2]
(SALVO Z DI POSIZIONAMENTO)
#2=#5003
(VERIFICO ASSEGNAZIONE ARGOMENTI)
IF[#18EQ#0]GOTO1001(R)
IF[#24EQ#0]GOTO1002(X)
IF[#25EQ#0]GOTO1003(Y)
IF[#26EQ#0]GOTO1004(Z)
IF[#7EQ#0]GOTO1005(D)
IF[#17EQ#0]GOTO1006(Q)
IF[#22EQ#0]GOTO1007(V)
(PONGO GLI ARGOMENTI Q D V POSITIVI)
#7=ABS[#7](D)
#17=ABS[#17](Q)
#22=ABS[#22](V)
(CONDIZIONI NECESSARIE PER UNA CORRETTA ESECUZIONE)
IF[#1EQ0]GOTO1009
IF[#7LT#1]GOTO1010
IF[#18LE#26]GOTO1011
IF[#18GT#2]GOTO1012
IF[[#22NE2]AND[#22NE3]]GOTO1013
IF[#17EQ0]GOTO1014
IF[#17GTABS[#18-#26]]GOTO1015

(POSIZIONAMENTO)
G0G90X#24Y#25
G0Z#18
(ATTACCO TANGENZIALE)
G1G[44-#22]X[#24-[#1/2]]
G[#22]X[#24+[#7/2]]Y#25R[[#1+#7]/4]
#18=#18-#17
(INTERPOLAZIONE ELICOIDALE)
WHILE[#18GE#26]DO1
G[#22]I-[#7/2]Z#18
#18=#18-#17
END1
(DISIMPEGNO)
N2F[#4109*2]G[#22]X[#24-#1/2]Y#25R[[#1+#7]/4]
G0G40Z#2F[#4109/2]
GOTO99

N1001 #3000=1 (R NON ASSEGNATO)
N1002 #3000=2 (X NON ASSEGNATO)
N1003 #3000=3 (Y NON ASSEGNATO)
N1004 #3000=4 (Z NON ASSEGNATO)
N1005 #3000=5 (D NON ASSEGNATO)
N1006 #3000=6 (Q NON ASSEGNATO)
N1007 #3000=7 (V NON ASSEGNATO)
N1009 #3000=9 (D UTENSILE = 0)
N1010 #3000=10(DIAMETRO CERCHIO < D UTENSILE)
N1011 #3000=11(R MINORE DI Z)
N1012 #3000=12(R MAGGIORE DI Z ATTUALE)
N1013 #3000=13(V PUO ESSERE 2 O 3)
N1014 #3000=14(Q = 0)
N1015 #3000=15(Q TROPPO GRANDE)
N99
M99
%

| SE VOLETE VISUALIZZARE LE MACRO TRAMITE CIMCO :
M6T14
#5003=10
G0X10Y10Z10
G65P4X10Y10R2Z-10Q3D100I1V3

-SOSTITUITE NELLA MACRO #1=[[#[12000+#4107].... con #1=n
-NON USARE ARGOMENTI UGUALI A 0, IL CIMCO CONSIDERA #0=0


(MACRO INTERPOLAZIONE CIRCOLARE CON ATTACCO DOLCE)
TEST: NON ESEGUITO

| ESEMPIO DI RICHIAMO : G65P5 X Y R Z D V
| X (CENTRO FORO IN X)
| Y (CENTRO FORO IN Y)
| R (POSIZIONAMENTO IN RAPIDO)
| Z (QUOTA FINALE IN Z)
| D (DIAMETRO CERCHIO)
| V (VERSO 2=ORARIO 3=ANTIORARIO)


%
O0005
(PRELEVO DIAMETRO UT DA TABELLA UTENSILI)
#1=[[#[12000+#4107]+#[13000+#4107]]*2]
(SALVO Z DI POSIZIONAMENTO)
#2=#5003
(VERIFICO ASSEGNAZIONE ARGOMENTI)
IF[#18EQ#0]GOTO1001(R)
IF[#24EQ#0]GOTO1002(X)
IF[#25EQ#0]GOTO1003(Y)
IF[#26EQ#0]GOTO1004(Z)
IF[#7EQ#0]GOTO1005(D)
IF[#22EQ#0]GOTO1007(V)
(PONGO GLI ARGOMENTI D V POSITIVI)
#7=ABS[#7](D)
#22=ABS[#22](V)
(CONDIZIONI NECESSARIE PER UNA CORRETTA ESECUZIONE)
IF[#1EQ0]GOTO1009
IF[#7LT#1]GOTO1010
IF[#18LE#26]GOTO1011
IF[#18GT#2]GOTO1012
IF[[#22NE2]AND[#22NE3]]GOTO1013

(POSIZIONAMENTO)
G0G90X#24Y#25
G0Z#18
G1Z#26
(ATTACCO TANGENZIALE)
G1G[44-#22]X[#24-[#1/2]]
G[#22]X[#24+[#7/2]]Y#25R[[#1+#7]/4]
#18=#18-#17
(INTERPOLAZIONE CIRCOLARE)
G[#22]I-[#7/2]
(DISIMPEGNO)
N2F[#4109*2]G[#22]X[#24-#1/2]Y#25R[[#1+#7]/4]
G0G40Z#2F[#4109/2]
GOTO99

N1001 #3000=1 (R NON ASSEGNATO)
N1002 #3000=2 (X NON ASSEGNATO)
N1003 #3000=3 (Y NON ASSEGNATO)
N1004 #3000=4 (Z NON ASSEGNATO)
N1005 #3000=5 (D NON ASSEGNATO)
N1007 #3000=7 (V NON ASSEGNATO)
N1009 #3000=9 (D UTENSILE = 0)
N1010 #3000=10(DIAMETRO CERCHIO < D UTENSILE)
N1011 #3000=11(R MINORE DI Z)
N1012 #3000=12(R MAGGIORE DI Z ATTUALE)
N1013 #3000=13(V PUO ESSERE 2 O 3)
N99
M99
%

| SE VOLETE VISUALIZZARE LE MACRO TRAMITE CIMCO :
M6T14
#5003=10
G0X10Y10Z10
G65P5X10Y10R2Z-10D100V3

-SOSTITUITE NELLA MACRO #1=[[#[12000+#4107].... con #1=n
-NON USARE ARGOMENTI UGUALI A 0, IL CIMCO CONSIDERA #0=0

torn24
God
God
Messaggi: 5326
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: Macro per l'interpolazione elicoidale/circolare interna con attacco dolce

Messaggio da torn24 » mercoledì 1 marzo 2023, 6:16

Ciao! Non so se funziona bene la macro, ma visto che hai usato tutti i concetti del linguaggio Macro B Fanuc, penso hai imparato abbastanza bene a fare macro "poi la pratica", ti faccio i complimenti :D .

Devo dire che io non ho mai pensato di farmi una macro per filettatura, se necessario metto un WHILE per ripetere, insomma uso la filosofia, scrivo una macro se sarebbe troppo lungo pensare e scrivere il programma, se si può fare in minuti non faccio una macro :D
CIAO A TUTTI !

Avatar utente
Thomas___
Newbie
Newbie
Messaggi: 17
Iscritto il: martedì 25 maggio 2021, 15:26
Località: Senigallia

Re: Macro per l'interpolazione elicoidale/circolare interna con attacco dolce

Messaggio da Thomas___ » giovedì 2 marzo 2023, 19:14

Ciao Torn, innanzitutto grazie per i complimenti che fanno sempre piacere, posso comprendere e condividere la tua filosofia, tuttavia nel mio caso dovendo fare programmi dove poi dovranno mettere mano anche altri magari anche meno "esperti" penso che più una cosa sia guidata/facile meglio è, inoltre io ormai programmo quasi solo da cam, che per carità è veloce ed efficiente ma se il programma ha bisogno di piccole modifiche una macro rimane comunque di gran lunga più veloce e semplice, quindi perché non insegnare al cam ad usare le macro per le operazione più generiche?

Rispondi

Torna a “Fanuc”