Apr 15, 2023 Lăsaţi un mesaj

Să vorbim despre programele CNC Macro

 

Mai simplu spus, o macrocomandă este să folosești formule pentru a procesa piesele. De exemplu, elipse, dacă nu există o macro, trebuie să calculăm punctele de pe curbă punct cu punct și apoi să o aproximăm încet cu o linie dreaptă. Dacă este o piesă de prelucrat cu cerințe ridicate de netezime, atunci trebuie să calculăm o mulțime de puncte, dar după aplicarea macro-ului, introducem formula elipsei în sistem și apoi dăm coordonatele Z și adăugăm o sumă de fiecare dată, apoi macro va calcula automat coordonatele X și va efectua tăierea. De fapt, funcția principală a macrocomenzii din program este calculul.

imagine

01

Despre programele macro

Ce este un program macro

Când programăm, vom stoca o serie de instrucțiuni care pot completa o anumită funcție în memorie ca o subrutină și le vom apela cu o instrucțiune generală. Când îl folosim, trebuie doar să dăm această instrucțiune generală pentru a executa funcția stocată. Această serie de instrucțiuni se numește corpul programului macro utilizator sau, pe scurt, programul macro.

Această comandă generală se numește comanda de apel macro utilizator. Când programează, programatorii trebuie să memoreze doar instrucțiunile macro, dar nu și programele macro.

Când va fi folosită programarea macro?

1) Curba formulei de procesare programată manual (calcul simplu, introducere rapidă)

2) Calea de tăiere obișnuită (ca modul de tăiere)

3) Control inter-program (programarea programului)

4) Gestionarea sculelor (uzura sculei)

5) Măsurare automată (sondă în mașină)

Diferența dintre programul macro și programul normal

1) În corpul programului macro, pot fi utilizate variabile, pot fi atribuite valori variabilelor, pot fi efectuate calcule între variabile și programele pot fi sărite.

2) În programele obișnuite, pot fi specificate numai constante, iar operațiile între constante nu pot fi efectuate. Programele pot fi executate doar secvențial și nu pot fi sărite, deci funcțiile sunt fixe și nu pot fi modificate.

3) Funcția macro este o funcție specială pentru ca utilizatorul să îmbunătățească performanța mașinii-unelte CNC, iar utilizarea abil a programului macro în prelucrarea pieselor similare va obține de două ori rezultatul cu jumătate din efort.

02

Variabile și formate ale programelor macro

Caracteristicile programelor macro

Programul macro poate folosi variabila, iar variabila poate fi folosită pentru a efectua operațiuni corespunzătoare; valoarea reală a variabilei poate fi atribuită variabilei prin instrucțiunea programului macro.

Trei tipuri de variabile

Forma de reprezentare a variabilei a sistemului CNC este „#” urmată de 1 până la 4 cifre și există trei tipuri de variabile:

(1) Variabile locale: #1~#33 sunt variabile utilizate local în programul macro, care sunt utilizate pentru transferul de variabile independente.


(2) Variabilă comună: utilizatorul o poate folosi liber și este comună fiecărei subrutine și fiecărui program macro numit de programul principal. #100~#149, după oprirea alimentării, toate valorile variabilelor vor fi șterse, în timp ce #500~#509, după oprirea alimentării, valorile variabilelor pot fi salvate.


(3) Variabilă de sistem: este definită de urmată de 4 cifre, poate obține informații numai citire sau citire/scriere conținute în procesorul mașinii-unelte sau în memoria NC, inclusiv parametrii de schimb aferenti procesorului mașinii-unelte, achiziția stării mașinii-unelte parametri, informații despre sistem, cum ar fi parametrii de procesare.

Format de apelare simplu al programului macro

Simplul apel al programului macro înseamnă că în programul principal, programul macro poate fi apelat printr-un singur bloc.

Format de invocare:

G65 P (număr program macro) L (număr de repetări) (atribuire variabilă).

Printre acestea: G65—comandă de apelare program macro;

P (numărul programului macro) - codul programului macro care urmează să fie apelat;

L (număr de repetări) - numărul de rulări repetate ale programului macro, când numărul de repetări este 1, acesta poate fi omis;

(Variable Assignment) - Atribuiți valori variabilelor utilizate în programul macro.

Același lucru între un program macro și o subrutină este că un program macro poate fi apelat de un alt program macro, de până la 4 ori.

Format de scriere a programelor macro

Formatul de scriere al unui program macro este același cu cel al unei subrutine. Formatul său este:

0-(0001-8999 este numărul programului macro)

Comanda N10

N-M99

În conținutul macroprogramului de mai sus, pe lângă instrucțiunile de programare utilizate în mod obișnuit, pot fi utilizate și variabile, instrucțiuni de operare aritmetică și alte instrucțiuni de control. Valoarea variabilei este atribuită în instrucțiunea de apelare a programului macro.

03

Aplicația programului macro de sistem FANUC

(1) Macro program grooving

imagine

1) Declarația WHILE

G00 X52 Z2;

#2=-14;

Este punctul de pornire al sculei în direcția z (deoarece lățimea sculei este de 4 mm, punctul de pornire este setat la Z-14)

WHILE [#2 GE -30] DO2;

Este o constrângere în direcția z. Când z este egal cu -30, direcția z nu se va mai mișca

G00 Z〔#2〕;

Poziția curentă în direcția z

#2=#2-2;

Pasul de mișcare în direcția z, mișcându-se cu 2 mm de fiecare dată

#1=52;

este punctul de pornire al cuțitului în direcția x

WHILE [#1 GE 20] DO1;

Constrângeri în direcția X, când diametrul este egal cu 20, nu se va mai tăia

G01 X〔#1〕F0.2;

Adâncimea de tăiere în direcția x

G00 X〔#1 plus 1〕;

Cantitatea relativă de retragere în direcția x

#1=#1-1;

Distanța de pas în direcția x (tăiați 1 mm de fiecare dată)

END1;

G00 X52;

END2;

Program complet:

O1234;

G40 G97 G99;

T0101;

S1000 M3;

G00 X52 Z2;

#2=-14;

WHILE〔#2GE-30〕DO2; END1;

G00 Z〔#2〕;

#2=#2-2;

#1=52

WHILE〔#1GE20〕DO1;

G01X〔#1〕F0.2;

G00X〔#1 plus 1〕;

#1=#1-1;

G00 X52;

END2;

G00 X150 Z150;

M30;

2) instrucțiunea IF

G00 X52 Z-2;

#1=-14;

Este punctul de pornire în direcția z al instrumentului (lățimea instrumentului este de 4 mm)

N2 #1=#1-2;

este pasul de mișcare în direcția z

#2=52;

este punctul de pornire al sculei în direcția x

N1#2=#2-1;

este distanța pasului în direcția x (adâncimea de tăiere 1 mm de fiecare dată)

G01 X〔#2〕F0.2;

Poziția curentă în direcția X

G00 X〔#2 plus 1〕;

Cantitatea de retragere relativă în direcția X

IF [#2 GE 21] GOTO1;

Constrângeri în direcția x (când valoarea lui x este redusă la 20, se va efectua următoarea procedură și nu se va face nicio întoarcere)

G00 X52;

X se retrage în poziția 52

G00 Z〔#1〕;

Poziția curentă în direcția Z

DACĂ [#1 GE -30] GOTO2;

Constrângeri în direcția Z, când z este egal cu -30, direcția z nu se va mișca

Program complet:

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;

G00 X〔#2 plus 1〕;

DACĂ〔#2GE21〕GOTO1;

G00X52;

G00Z〔#1〕;

DACĂ[#1GE-30]GOTO2;

G00X200;

Z200;

M5;

M30;

(2) Programare elipsă

1) Formatul standard al instrucțiunii elipse WHILE:

#1=a;

a: Punctul de pornire al sculei este pe direcția pozitivă a mm față de axa Z a elipsei

WHILE [#1 GE b] DO1;

b: Punctul final al procesării elipsei este în direcția negativă b mm față de axa Z a elipsei (dacă este procesată o semielipsă completă, atunci a și b sunt două valori cu aceeași valoare și semne diferite)

#2= c*SQRT[1-#1*#1/d*d];

c: semiaxa mică a elipsei

d: semiaxa majoră a elipsei (calculați #2 conform formulei elipsei, semiaxa majoră este d, semiaxa minoră este c, #2 reprezintă valoarea lui X, #1 este valoarea lui Z , iar SQRT înseamnă rădăcină pătrată)

G01 X〔±2*#2 plus e〕Z〔#1±f〕;

e: Decalajul (valoarea diametrului) a axei X a elipsei în raport cu sistemul de coordonate al piesei de prelucrat

f: Deplasarea axei Z a elipsei în raport cu sistemul de coordonate al piesei de prelucrat

#1=#1-1; distanță de pas (se mișcă cu 1 mm de fiecare dată)

END1;

Notă: La întoarcerea unei elipse concave, „±” din paranteză după X este luată ca „-”; la întoarcerea unei elipse convexe, „±” din paranteză după X este considerat „plus”.

Când axa X a elipsei se deplasează în direcția pozitivă, „±” din paranteze după Z ia „plus”; când axa X a elipsei se deplasează în direcția negativă, „±” din paranteze după Z ia „-”

2) Formatul standard al instrucțiunii eliptice IF

#1=a;

a: Punctul de pornire al sculei este pe direcția pozitivă a mm față de axa Z a elipsei

N1#2=b*SQRT〔1-#1*#1/c*c〕;

b: axa semi-scurtă a elipsei c: semi-axa majoră a elipsei (conform formulei elipsei X/c plus Y/b=1, SQRT înseamnă rădăcină pătrată)

G01X〔±2*#2 plus d〕Z〔#1±e〕F0.2; d: decalajul (valoarea diametrului) a axei X a elipsei în raport cu punctul zero coordonat e: axa Z a elipsei în raport cu planul zero Offset

#1=#1-1;

Distanța pasului (se mișcă cu 1 mm de fiecare dată)

DACĂ [#1 GE -f] GOTO1

f: Terminarea procesării elipsei

 

Notă: La întoarcerea unei elipse concave, „±” din paranteză după X este luată ca „-”; la întoarcerea unei elipse convexe, „±” din paranteză după X este considerat „plus”. Când axa X a elipsei deviază în direcția pozitivă, „±” din paranteze după Z ia „plus”; când axa X a elipsei deviază în direcția negativă, „±” din paranteze după Z ia „-”.

imagine

Declarația WHILE

#1=20;

WHILE〔#1GE-20〕DO1;

#2=10*SQRT〔1-#1*#1/400〕;

G01X〔-2*#2 plus 50〕Z〔#1-25〕;

#1=#1-1;

END1;

Declarația IF

#1=20;

N1#2=10*SQRT〔1-#1*#1/400〕;

G01X〔-2*#2 plus 50〕Z〔#{1-25〕F0.2;

#1=#1-1;

DACĂ[#1GE-20]GOTO1;

program complet

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〕;

G01X〔-2*#2 plus 50〕Z〔#{1-25〕F0.2;

#1=#1-1;

END1;

G00 X50;

N20 G00 G40 Z2;

G70 P10 Q20;

G00 X200;

Z200;

M5;

M30;

Formatul complet al instrucțiunii IF este omis (același lucru este valabil și pentru instrucțiunea IF, atâta timp cât ciclul este adăugat). În sistemul FANUC-0i, programul macro poate fi adăugat numai în G73.

(3) Prelucrarea parabolei

1) Formatul standard al instrucțiunii parabolice WHILE:

#1=a;

a: Punctul de pornire al sculei este un mm în direcția axei parabolice Z

WHILE [#1 GE -b] DO1;

b: este lungimea de procesare a elipsei în direcția z

#2=SQRT〔-#1*5/3〕;

(Conform formulei parabolice Z=-3/5*X*X, găsiți valoarea lui X, care este #2, unde SQRT înseamnă rădăcina pătrată)

G01 X〔±2*#2 plus c〕Z〔#1〕;

c: este decalajul (valoarea diametrului) a axei X a parabolei în raport cu sistemul de coordonate al piesei de prelucrat, "±"

Când luați „plus”, este convex, iar când luați „-”, este concav

#1=#1-1; Distanța pasului (se mișcă cu 1 mm de fiecare dată)

END1;

2) Formatul standard al instrucțiunii IF parabolice

#1=a;

a: Punctul de pornire al sculei este un mm în direcția axei parabolice Z

N1 #2=SQRT〔-#1*5/3〕;

(Conform formulei parabolice Z=-3/5*X*X, găsiți valoarea lui X, care este #2, unde SQRT înseamnă rădăcina pătrată)

G01 X〔±2*#2 plus b〕Z〔#1〕;

b: Este decalajul (valoarea diametrului) a axei direcției X a parabolei în raport cu punctul zero al coordonatei. Când „±” ia „plus”, este convex, iar când „-” este luat, este concav

#1=#1-1;

(distanța pasului în direcția Z, fiecare mișcare este de 1 mm)

IF〔#1 GE -c〕GOTO1; c: lungimea de procesare a elipsei în direcția z

IF parabolic

altă formă de propoziție

#1=a;

N1 #2=SQRT〔( plus )#1*5/3〕;

Semnul „plus” poate fi omis

G01 X〔2*#2 plus b〕Z〔-#1〕;

#1=#1 plus 1;

IF [#1 LE c] GOTO1;

Presupunând că parabola este în direcția pozitivă a lui Z, atunci folosiți Z〔-#1〕; pentru a face parabola simetrică față de direcția negativă

imagine

Declarația WHILE

#1=0;

WHILE [#1 GE -15] DO1;

#2=SQRT〔-#1*5/3〕;

G01 X〔2*#2 plus 30〕Z〔#1〕;

#1=#1-1;

END1;

Declarația IF

#1=0;

N1 #2=SQRT〔-#1*5/3〕;

G01X〔2*#2 plus 30〕Z〔#1〕;

#1=#1-1;

DACĂ [#1 GE -15] GOTO1;

program complet

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 plus 30〕Z〔#1〕;

#1=#1-1;

END1;

G00 X42;

N20 G00 G40 Z2;

G70 P10 Q20;

G00 X200;

Z200;

M5;

M30;

(4) Diferența dintre instrucțiunea WHILE și instrucțiunea IF

1) Direcțiile celor două afirmații sunt diferite

Instrucțiunea WHILE revine înapoi

Exemplu: WHILE〔#1 GE 20〕DO1;

G01 X〔#1〕F0.2;

Presupunând că atunci când mașina unealtă execută această propoziție, #1=20, va continua să se execute. După executarea #1=#1-1, valoarea lui #1 devine 19, care nu mai îndeplinește condițiile de constrângere, deci nu va reveni. (Tăiați la 20 în direcția X)

G00 X〔#1 plus 1);

#1=#1-1;

END1;

2) Declarația IF revine înainte

Exemplu: N1 #2=#2-1;

G01X〔#2〕F0.2; Presupunând că #2=20 atunci când mașina unealtă execută această propoziție, aceasta va continua să se execute până când IF〔#2 GE 20〕GOTO1; dacă condiția este încă îndeplinită, va continua să revină la N1# 2=#2-1; iar valoarea curentă X va deveni 19, care nu mai îndeplinește condițiile de constrângere, iar apoi executați altul

G01X〔#2〕F0.2; În cele din urmă, executați următorul program (direcția X a fost tăiată la 19)

G00X〔#2 plus 1);

IF [#2 GE 20] GOTO1;

3) După cum se poate vedea din programul de grooving de mai sus, numărul de cuvinte din instrucțiunea IF este mult mai mic decât cel al instrucțiunii WHILE.

4) Datorită diferitelor direcții de returnare, citiți o propoziție mai puțin pentru instrucțiunea WHILE și încă o propoziție pentru instrucțiunea IF în timpul procesării.

04

Sistemul SIEMENS (strung) aplicație de macro-program

Notă: Programul macro este programat cu variabile, iar numărul variabil al sistemului Siemens este reprezentat de R.

De exemplu, scris în metoda de programare comună: G01X-10

Programul macro poate fi exprimat astfel:

R1=-10

G01 X=R1

Transfer condiționat:

IF GOTOB: sari inapoi

IF GOTOF: sari inainte

scris în programare comună

GO1X100

Variabilele pot fi exprimate astfel:

R1=0

AA: R1=R1 plus 1

G01X=R1

IF R1<100 GOTOB AA

R1 este o variabilă independentă, valoarea inițială este 0, R1=R1 plus 1 înseamnă că valoarea incrementală a variabilei independente este 1, când programul trece de fiecare dată prin această linie, valoarea lui R1 crește cu 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

Dacă R1 este mai mare sau egal cu 100, programul scade.

Programele macro pot fi folosite atât în ​​modurile G90, cât și în G91, dar semnificațiile lor sunt diferite, de exemplu;

R1=0, G90R1=R1 plus 1, G1X=R1, valoarea lui X după a doua trecere a acestui program este 2.

R1=0, G91R1=R1 plus 1, G1X=R1, valoarea lui X după a doua trecere a programului este 3. Explicație: valoarea lui R1 este 1 după prima trecere a programului, iar valoarea lui R1 este a doua trecere Este 2, dar în modul G91 se bazează pe cea anterioară.

(1) Canelare

imagine

T1

TC

T1D1

G0G40X100Z100

M03S1000

G0X54Z2

Ajunge rapid la punctul de plecare

Z-10

R1=3

Definiți lățimea lamei ca 3 mm

R2=-10-R1-0.2

Punctul de pornire al instrumentului este -10, iar partea stângă a lamei este utilizată la setarea instrumentului;

Setarea sculei, astfel încât lățimea lamei ar trebui să fie scăzută, 0.2 este permisiunea de finisare

G1Z=R2F0.1

Instrumentul ajunge la punctul de pornire al axei Z

AA:R2=R2-2.5

R3=50

Axa X a canelurii atinge punctul

BB: R3=R3-2

Definiți adâncimea de tăiere a fiecărui cuțit ca 2 mm

G1X=R3

X=R3 plus 1

0Înlăturarea așchiilor de 0,5 mm pe o parte la fiecare 2 mm adâncime de tăiere

IF R3>30 plus 0,4 GOTOB BB

Define the groove depth as 10mm, if R3>30mm, programul sare înapoi la marcajul BB și 0,4 este permisiunea de finisare

G0X50

Instrumentul ajunge la punctul de pornire al axei X

G1Z=R2

IF R2>{{0}} plus 0,2 GOTOB AA

Definiți lățimea canelurii ca 20mm, iar 0,2 este toleranța de finisare

G0X50

G01Z-13

finisare

X30

Z-16

G0X50

Z-30

G01X30

Z-16

G0X50

Retrage

G0X100

Z100

M05

M30

(2) Elipsa

1) Format de bază

R1=0

Definiți variabila R1 cu o valoare inițială de 0

AA:R2=b×SQRT(1-R1×R1/a×a)

Conform ecuației elipsei, a este semi-axa majoră a elipsei, b este semi-axa minoră a elipsei și SQRT este simbolul rădăcinii pătrate.

G1X=±2×R2 plus XZ=R1-Z

Setați poziția și forma elipsei, plus 2 este convex, -2 este concav, X, Z sunt distanțele dintre axa piesei de prelucrat și axa elipsei (sistem de diametre).

R1=R1-1

Setați etapa de procesare

IF R1>=n ​​GOTOB AA

Dacă variabila R1

2) Exemplu de programare:

imagine

T1D1

G0G40X100Z100

M3S1000

G0X52Z2

Z-20

CYCLE95 ( )

G42S1500

OO:

R1=20

AA:R2=5×SQRT(1-R1×R1/400)

G1X=-2×R2 plus 50 Z=R1-40

R1=R1-2

IF R1>=-20 GOTOB AA

PP:X42

G0G40X100Z100

M05

M09

M30

(3) Parabola

1) Format de bază:

R1=0

Setați valoarea inițială a variabilei R1 la 0

AA: R2=SQRT(-R1×n)

Obținut conform formatului de bază al parabolei, unde SQRT este simbolul rădăcinii pătrate, iar n este coeficientul

G01X=2×R2 plus n

Z=R1

Calea de procesare, plus 2 este convexă, n este valoarea punctului de pornire al axei X

R1=R1-1

Valoarea variabilă a incrementului este de 1 mm

IF R1>-30 GOTOB AA

If the variable R1>-30, programul sare înapoi la marcajul: AA

2) Exemplu de programare:

imagine

T1

Tc

T1D1

G0G40X100Z100

M03S1000

G0X52Z2

CYCLE95 ( )

G0G42

OO:

R1=0

AA:R2=SQRT(-R1×5/3)

G01X=2×R2 plus 30 Z=R1

R1=R1-2

IF R1>-60 GOTOB AA

PP: X52

G0X100Z100

M05

M30

Trimite anchetă

whatsapp

skype

E-mail

Anchetă