In poche parole, una macro consiste nell'utilizzare formule per elaborare le parti. Ad esempio, ellisse, se non c'è una macro, dobbiamo calcolare i punti sulla curva punto per punto, quindi approssimarla lentamente con una linea retta. Se si tratta di un pezzo con elevati requisiti di levigatezza, allora dobbiamo calcolare molti punti, ma dopo aver applicato la macro, inseriamo la formula dell'ellisse nel sistema e poi diamo la coordinata Z e aggiungiamo una quantità ogni volta, quindi il macro calcolerà automaticamente la coordinata X ed eseguirà il taglio. Infatti, la funzione principale della macro nel programma è il calcolo.
immagine
01
Informazioni sui programmi macro
Che cos'è un programma macro
Durante la programmazione, memorizzeremo una serie di istruzioni che possono completare una determinata funzione nella memoria come una subroutine e le chiameremo con un'istruzione generale. Quando lo si utilizza, è sufficiente fornire questa istruzione generale per eseguire la funzione memorizzata. Questa serie di istruzioni è chiamata corpo del programma macro utente o programma macro in breve.
Questo comando generale è chiamato comando di chiamata macro utente. Durante la programmazione, i programmatori devono solo memorizzare le istruzioni macro ma non i programmi macro.
Quando verrà utilizzata la programmazione macro?
1) Curva della formula di elaborazione programmata manualmente (calcolo semplice, immissione rapida)
2) Percorso di taglio regolare (come modulo di taglio)
3) Controllo tra programmi (programmazione dei programmi)
4) Gestione degli utensili (usura degli utensili)
5) Misurazione automatica (sonda in macchina)
La differenza tra programma macro e programma normale
1) Nel corpo del programma macro è possibile utilizzare variabili, assegnare valori a variabili, eseguire calcoli tra variabili e saltare programmi.
2) Nei programmi ordinari è possibile specificare solo costanti e non è possibile eseguire operazioni tra costanti. I programmi possono essere eseguiti solo in sequenza e non possono essere saltati, quindi le funzioni sono fisse e non possono essere modificate.
3) La funzione macro è una funzione speciale per l'utente per migliorare le prestazioni della macchina utensile CNC e l'uso abile del programma macro nell'elaborazione di pezzi simili raggiungerà il doppio del risultato con metà dello sforzo.
02
Variabili e formati di programmi macro
Caratteristiche dei programmi macro
Il programma macro può utilizzare la variabile e la variabile può essere utilizzata per eseguire le operazioni corrispondenti; il valore effettivo della variabile può essere assegnato alla variabile mediante l'istruzione del programma macro.
Tre tipi di variabili
La forma di rappresentazione delle variabili del sistema CNC è "#" seguito da 1 a 4 cifre e ci sono tre tipi di variabili:
(1) Variabili locali: #1~#33 sono variabili utilizzate localmente nel programma macro, utilizzate per il trasferimento di variabili indipendenti.
(2) Variabile comune: l'utente può usarla liberamente, ed è comune ad ogni sottoprogramma e ad ogni programma macro richiamato dal programma principale. #100~#149, dopo aver spento l'alimentazione, tutti i valori delle variabili verranno cancellati, mentre #500~#509, dopo aver spento l'alimentazione, i valori delle variabili possono essere salvati.
(3) Variabile di sistema: è definita da seguita da 4 cifre, può ottenere informazioni di sola lettura o lettura/scrittura contenute nel processore della macchina utensile o nella memoria del CN, inclusi i parametri di scambio relativi al processore della macchina utensile, l'acquisizione dello stato della macchina parametri, Informazioni di sistema come i parametri di elaborazione.
Formato di chiamata semplice del programma macro
Il semplice richiamo del programma macro fa sì che nel programma principale il programma macro possa essere richiamato da un singolo blocco.
Formato di chiamata:
G65 P (numero programma macro) L (numero di ripetizioni) (assegnazione variabile).
Tra questi: G65—comando di chiamata programma macro;
P (numero programma macro) - il codice del programma macro da richiamare;
L (numero di ripetizioni) - il numero di esecuzioni ripetute del programma macro, quando il numero di ripetizioni è 1, può essere omesso;
(Assegnazione variabile) - Assegna valori alle variabili utilizzate nel programma macro.
La stessa cosa tra un programma macro e una subroutine è che un programma macro può essere richiamato da un altro programma macro, fino a 4 volte.
Formato di scrittura del programma macro
Il formato di scrittura di un programma macro è lo stesso di un sottoprogramma. Il suo formato è:
0-(0001-8999 è il numero del programma macro)
Comando N10
N-M99
Nel contenuto del suddetto programma macro, oltre alle istruzioni di programmazione comunemente utilizzate, è possibile utilizzare anche variabili, istruzioni di operazioni aritmetiche e altre istruzioni di controllo. Il valore della variabile viene assegnato nell'istruzione di chiamata del programma macro.
03
Applicazione del programma macro di sistema FANUC
(1) Scanalatura programma macro
immagine
1) Istruzione WHILE
G00 X52 Z2;
#2=-14;
È il punto iniziale dell'utensile nella direzione z (poiché la larghezza dell'utensile è 4 mm, il punto iniziale è impostato su Z-14)
WHILE [#2 GE -30] DO2;
È un vincolo nella direzione z. Quando z è uguale a -30, la direzione z non si sposterà più
G00 Z〔#2〕;
La posizione corrente nella direzione z
#2=#2-2;
Il passo in movimento nella direzione z, spostandosi ogni volta di 2 mm
#1=52;
è il punto di partenza del coltello nella direzione x
MENTRE [#1 GE 20] DO1;
Vincoli nella direzione X, quando il diametro è uguale a 20, non taglierà più
G01 X〔#1〕F0.2;
Profondità di taglio in direzione x
SOL00 X〔#1 più 1〕;
Quantità di retrazione relativa nella direzione x
#1=#1-1;
Distanza del passo in direzione x (tagliare 1 mm ogni volta)
FINE1;
G00 X52;
FINE2;
Programma completo:
O1234;
G40 G97 G99;
T0101;
S1000 M3;
G00 X52 Z2;
#2=-14;
WHILE〔#2GE-30〕DO2; FINE1;
G00 Z〔#2〕;
#2=#2-2;
#1=52
WHILE〔#1GE20〕DO1;
G01X〔#1〕F0.2;
SOL00X〔#1 più 1〕;
#1=#1-1;
G00 X52;
FINE2;
G00 X150 Z150;
M30;
2) Dichiarazione IF
G00 X52 Z-2;
#1=-14;
È il punto di partenza della direzione z dell'utensile (la larghezza dell'utensile è 4 mm)
N2 #1=#1-2;
è il passo del movimento nella direzione z
#2=52;
è il punto iniziale dell'utensile nella direzione x
N1#2=#2-1;
è la distanza del passo nella direzione x (profondità di taglio 1 mm ogni volta)
G01 X〔#2〕F0.2;
Posizione attuale in direzione X
SOL00 X〔#2 più 1〕;
Quantità di retrazione relativa in direzione X
IF [#2 GE 21] GOTO1;
Vincoli nella direzione x (quando il valore di x viene ridotto a 20, verrà eseguita la seguente procedura e non verrà effettuato alcun ritorno)
G00 X52;
X rientra in posizione 52
G00 Z〔#1〕;
Posizione attuale in direzione Z
IF [#1 GE -30] GOTO2;
Vincoli nella direzione Z, quando z è uguale a -30, la direzione z non si sposterà
Programma completo:
O1234;
G40G97G99;
T0101;
S1000M3;
G00 X52 Z-2;
#1=-14;
N2 #1=#1-2;
#2=52;
N1#2=#2-1;
G01 X〔#2〕F0.2;
SOL00 X〔#2 più 1〕;
IF〔#2GE21〕GOTO1;
G00X52;
G00Z〔#1〕;
IF[#1GE-30]GOTO2;
G00X200;
Z200;
M5;
M30;
(2) Programmazione dell'ellisse
1) Il formato standard dell'istruzione WHILE dell'ellisse:
#1=a;
a: Il punto iniziale dell'utensile è nella direzione positiva a mm rispetto all'asse Z dell'ellisse
WHILE [#1 GE b] DO1;
b: Il punto finale dell'elaborazione dell'ellisse è nella direzione negativa b mm rispetto all'asse Z dell'ellisse (se viene elaborata una semiellisse completa, allora a e b sono due valori con lo stesso valore e segno diverso)
#2= c*SQRT[1-#1*#1/d*d];
c: il semiasse minore dell'ellisse
d: semiasse maggiore dell'ellisse (calcola #2 secondo la formula dell'ellisse, il semiasse maggiore è d, il semiasse minore è c, #2 rappresenta il valore di X, #1 è il valore di Z , e SQRT significa radice quadrata)
G01 X〔±2*#2 più e〕Z〔#1±f〕;
e: l'offset (valore del diametro) dell'asse X dell'ellisse rispetto al sistema di coordinate del pezzo
f: l'offset dell'asse Z dell'ellisse rispetto al sistema di coordinate del pezzo
#1=#1-1; distanza del passo (spostandosi di 1 mm ogni volta)
FINE1;
Nota: quando si ruota un'ellisse concava, il "±" tra parentesi dopo X viene considerato come "-"; quando si ruota un'ellisse convessa, il "±" tra parentesi dopo X viene considerato come "più".
Quando l'asse X dell'ellisse si sposta nella direzione positiva, il "±" tra parentesi dopo Z assume "più"; quando l'asse X dell'ellisse si sposta nella direzione negativa, il "±" tra parentesi dopo Z assume "-"
2) Il formato standard dell'istruzione IF ellittica
#1=a;
a: Il punto iniziale dell'utensile è nella direzione positiva a mm rispetto all'asse Z dell'ellisse
N1#2=b*SQRT〔1-#1*#1/c*c〕;
b: semiasse corto dell'ellisse c: semiasse maggiore dell'ellisse (secondo la formula dell'ellisse X/c più Y/b=1, SQRT significa radice quadrata)
SOL01X〔±2*#2 più re〕Z〔#1±e〕FA0.2; d: l'offset (valore del diametro) dell'asse X dell'ellisse rispetto al punto zero delle coordinate e: l'asse Z dell'ellisse rispetto al piano zero Offset
#1=#1-1;
Distanza del passo (spostandosi di 1 mm ogni volta)
IF [#1 GE -f] GOTO1
f: termine dell'elaborazione dell'ellisse
Nota: quando si ruota un'ellisse concava, il "±" tra parentesi dopo X viene considerato come "-"; quando si ruota un'ellisse convessa, il "±" tra parentesi dopo X viene considerato come "più". Quando l'asse X dell'ellisse devia nella direzione positiva, il "±" tra parentesi dopo Z assume "più"; quando l'asse X dell'ellisse devia nella direzione negativa, il "±" tra parentesi dopo Z assume "-".
immagine
Istruzione WHILE
#1=20;
WHILE〔#1GE-20〕DO1;
#2=10*SQRT〔1-#1*#1/400〕;
G01X〔-2*#2 più 50〕Z〔#1-25〕;
#1=#1-1;
FINE1;
SE dichiarazione
#1=20;
N1#2=10*SQRT〔1-#1*#1/400〕;
SOL01X〔-2*#2 più 50〕Z〔#1-25〕F0.2;
#1=#1-1;
IF[#1GE-20]GOTO1;
programma completo
O1234;
G40G97G99;
T0101;
S1000 M3;
G00 X50 Z2;
G73 U5 R5;
G73 P10 Q20 U0.5 F0.2;
N10 G0 G42 Z-5;
#1=20;
WHILE〔#1GE-20〕DO1;
#2=10*SQRT〔1-#1*#1/400〕;
SOL01X〔-2*#2 più 50〕Z〔#1-25〕F0.2;
#1=#1-1;
FINE1;
G00 X50;
N20 G00 G40 Z2;
G70 P10 Q20;
G00 X200;
Z200;
M5;
M30;
Il formato completo dell'istruzione IF viene omesso (lo stesso vale per l'istruzione IF, purché venga aggiunto il ciclo). Nel sistema FANUC-0i, il programma macro può essere aggiunto solo in G73.
(3) Elaborazione della parabola
1) Il formato standard dell'istruzione parabolica WHILE:
#1=a;
a: Il punto iniziale dell'utensile è un mm nella direzione dell'asse parabolico Z
WHILE [#1 GE -b] DO1;
b: è la lunghezza di elaborazione dell'ellisse nella direzione z
#2=SQRT〔-#1*5/3〕;
(Secondo la formula parabolica Z=-3/5*X*X, trova il valore di X, che è #2, dove SQRT indica la radice quadrata)
G01 X〔±2*#2 più c〕Z〔#1〕;
c: è l'offset (valore del diametro) dell'asse X della parabola rispetto al sistema di coordinate del pezzo, "±"
Quando prendi " più ", è convesso, e quando prendi "-", è concavo
#1=#1-1; Distanza del passo (spostandosi di 1 mm ogni volta)
FINE1;
2) Il formato standard dell'istruzione IF parabolica
#1=a;
a: Il punto iniziale dell'utensile è un mm nella direzione dell'asse parabolico Z
N1 #2=SQRT〔-#1*5/3〕;
(Secondo la formula parabolica Z=-3/5*X*X, trova il valore di X, che è #2, dove SQRT indica la radice quadrata)
G01 X〔±2*#2 più b〕Z〔#1〕;
b: è l'offset (valore del diametro) dell'asse in direzione X della parabola rispetto al punto zero delle coordinate. Quando "±" prende "più", è convesso, e quando "-" è preso, è concavo
#1=#1-1;
(distanza del passo in direzione Z, ogni movimento è di 1 mm)
IF〔#1 GE -c〕GOTO1; c: la lunghezza di elaborazione dell'ellisse in direzione z
SE parabolico
altra forma di frase
#1=a;
N1 #2=SQRT〔( più )#1*5/3〕;
Il segno "più" può essere omesso
G01 X〔2*#2 più b〕Z〔-#1〕;
#1=#1 più 1;
IF [#1 LE c] GOTO1;
Supponendo che la parabola sia nella direzione positiva di Z, allora usa Z〔-#1〕; per rendere la parabola simmetrica alla direzione negativa
immagine
Istruzione WHILE
#1=0;
WHILE [#1 GE -15] DO1;
#2=SQRT〔-#1*5/3〕;
G01 X〔2*#2 più 30〕Z〔#1〕;
#1=#1-1;
FINE1;
SE dichiarazione
#1=0;
N1 #2=SQRT〔-#1*5/3〕;
G01X〔2*#2 più 30〕Z〔#1〕;
#1=#1-1;
IF [#1 GE -15] GOTO1;
programma completo
O1234;
G40 G97 G99;
T0101;
S1000 M3;
G00 X42 Z1;
G73 U5 R5;
G73 P10 Q20 U0.5 F0.2;
N10 G00 G42 Z0;
#1=0;
WHILE [#1 GE -15] DO1;
#2=SQRT〔-#1*5/3〕;
G01 X〔2*#2 più 30〕Z〔#1〕;
#1=#1-1;
FINE1;
G00 X42;
N20 G00 G40 Z2;
G70 P10 Q20;
G00 X200;
Z200;
M5;
M30;
(4) La differenza tra l'istruzione WHILE e l'istruzione IF
1) Le direzioni delle due affermazioni sono diverse
L'istruzione WHILE ritorna all'indietro
Esempio: WHILE〔#1 GE 20〕DO1;
G01 X〔#1〕F0.2;
Supponendo che quando la macchina utensile esegue questa frase, #1=20, continuerà ad essere eseguita. Dopo l'esecuzione di #1=#1-1, il valore di #1 diventa 19, che non soddisfa più le condizioni del vincolo, quindi non verrà restituito. (Taglio a 20 nella direzione X)
SOL00 X〔#1 più 1);
#1=#1-1;
FINE1;
2) L'istruzione IF ritorna in avanti
Esempio: N1 #2=#2-1;
SOL01X〔#2〕FA0.2; Supponendo che #2=20 quando la macchina utensile esegue questa frase, continuerà ad essere eseguita fino a quando IF〔#2 GE 20〕GOTO1; se la condizione è ancora soddisfatta, continuerà a tornare a N1# 2=#2-1; e il valore X corrente diventerà 19, che non soddisfa più le condizioni del vincolo, quindi eseguirne un altro
SOL01X〔#2〕FA0.2; Infine, esegui il seguente programma (la direzione X è stata tagliata a 19)
SOL00X〔#2 più 1);
IF [#2 GE 20] GOTO1;
3) Come si può vedere dal precedente programma di scanalatura, il numero di parole nell'istruzione IF è molto inferiore a quello dell'istruzione WHILE.
4) A causa delle diverse direzioni di ritorno, leggere una frase in meno per l'istruzione WHILE e un'altra frase per l'istruzione IF durante l'elaborazione.
04
Applicazione del programma macro del sistema SIEMENS (tornio).
Nota: il programma macro è programmato con variabili e il numero della variabile del sistema Siemens è rappresentato da R.
Ad esempio, scritto nel metodo di programmazione comune: G01X-10
Il programma macro può essere espresso come:
R1=-10
G01 X=R1
Trasferimento condizionato:
SE GOTOB: salta all'indietro
SE GOTOF: salta in avanti
scritti in programmazione comune
GO1X100
Le variabili possono essere espresse come:
R1=0
AA: R1=R1 più 1
G01X=R1
SE R1<100 GOTOB AA
R1 è una variabile indipendente, il valore iniziale è 0, R1=R1 più 1 significa che il valore incrementale della variabile indipendente è 1, quando il programma percorre ogni volta questa riga, il valore di R1 aumenta di 1, R1<100 is a conditional expression, IF R1<100 GOTOB AA This line means that if the argument R1<100, the program jumps backward to the mark: AA
Se R1 è maggiore o uguale a 100, il programma va in down.
I programmi macro possono essere utilizzati in entrambe le modalità G90 e G91, ma i loro significati sono diversi, ad esempio;
R1=0, G90R1=R1 più 1, G1X=R1, il valore di X dopo il secondo passaggio di questo programma è 2.
R1=0, G91R1=R1 più 1, G1X=R1, il valore di X dopo il secondo passaggio del programma è 3. Spiegazione: il valore di R1 è 1 dopo il primo passaggio del programma e il valore di R1 è il secondo passaggio È 2, ma in modalità G91 si basa sul precedente.
(1) Scanalatura
immagine
T1
TC
T1D1
G0G40X100Z100
M03S1000
G0X54Z2
Raggiungi rapidamente il punto di partenza
Z-10
R1=3
Definire la larghezza della lama come 3 mm
R2=-10-R1-0.2
Il punto di partenza dello strumento è -10 e il lato sinistro della lama viene utilizzato durante l'impostazione dello strumento;
Impostazione dell'utensile, quindi la larghezza della lama deve essere sottratta, 0.2 è il margine di finitura
G1Z=R2F0.1
L'utensile raggiunge il punto iniziale dell'asse Z
AA:R2=R2-2.5
R3=50
L'asse X della scanalatura raggiunge il punto
BB: R3=R3-2
Definire la profondità di taglio di ciascun coltello come 2 mm
G1X=R3
X=R3 più 1
0Asportazione del truciolo di 0,5 mm su un lato ogni 2 mm di profondità di taglio
IF R3>30 più 0,4 GOTOB BB
Define the groove depth as 10mm, if R3>30mm, il programma salta all'indietro fino alla tacca BB e 0,4 è il margine di finitura
G0X50
L'utensile raggiunge il punto iniziale dell'asse X
G1Z=R2
IF R2>{{0}} più 0,2 GOTOB AA
Definisci la larghezza della scanalatura come 20mm e 0,2 è il margine di finitura
G0X50
G01Z-13
finitura
X30
Z-16
G0X50
Z-30
G01X30
Z-16
G0X50
Ritirare
G0X100
Z100
M05
M30
(2) Ellisse
1) Formato base
R1=0
Definisci la variabile R1 con un valore iniziale di 0
AA:R2=b×SQRT(1-R1×R1/a×a)
Secondo l'equazione dell'ellisse, a è il semiasse maggiore dell'ellisse, b è il semiasse minore dell'ellisse e SQRT è il simbolo della radice quadrata.
G1X=±2×R2 più XZ=R1-Z
Imposta la posizione e la forma dell'ellisse, più 2 è convesso, -2 è concavo, X, Z sono le distanze tra l'asse del pezzo e l'asse dell'ellisse (sistema diametri).
R1=R1-1
Impostare la fase di elaborazione
IF R1>=n GOTOB AA
Se la variabile R1
2) Esempio di programmazione:
immagine
T1D1
G0G40X100Z100
M3S1000
G0X52Z2
Z-20
CICLO95 ( )
G42S1500
OO:
R1=20
AA:R2=5×SQRT(1-R1×R1/400)
G1X=-2×R2 più 50 Z=R1-40
R1=R1-2
IF R1>=-20 GOTOB AA
PE:X42
G0G40X100Z100
M05
M09
M30
(3) Parabola
1) Formato base:
R1=0
Imposta il valore iniziale della variabile R1 su 0
AA: R2=SQRT(-R1×n)
Ottenuto secondo il formato base della parabola, dove SQRT è il simbolo della radice quadrata e n è il coefficiente
G01X=2×R2 più n
Z=R1
Percorso di elaborazione, più 2 è convesso, n è il valore del punto iniziale dell'asse X
R1=R1-1
Il valore di incremento variabile è 1 mm
IF R1>-30 GOTOB AA
If the variable R1>-30, il programma salta indietro al segno: AA
2) Esempio di programmazione:
immagine
T1
tc
T1D1
G0G40X100Z100
M03S1000
G0X52Z2
CICLO95 ( )
G0G42
OO:
R1=0
AA:R2=SQRT(-R1×5/3)
G01X=2×R2 più 30 Z=R1
R1=R1-2
IF R1>-60 GOTOB AA
PE: X52
G0X100Z100
M05
M30




