簡(jiǎn)單來(lái)說,宏就是用公式來(lái)加工零件。比如說橢圓,如果沒有宏的話,我們要逐點(diǎn)算出曲線上的點(diǎn),然后慢慢來(lái)用直線逼近,如果是個(gè)光潔度要求很高的工件的話,那么需要計(jì)算很多的點(diǎn),可是應(yīng)用了宏后,我們把橢圓公式輸入到系統(tǒng)中然后我們給出Z坐標(biāo)并且每次加一個(gè)量,那么宏就會(huì)自動(dòng)算出X坐標(biāo)并且進(jìn)行切削, 實(shí)際上宏在程序中主要起到的是運(yùn)算作用。
1
關(guān)于宏程序
什么是宏程序
在編程時(shí),我們會(huì)把能完成某一功能的一系列指令像子程序那樣存入存儲(chǔ)器,用一個(gè)總指令來(lái)調(diào)用它們,使用時(shí)只需給出這個(gè)總指令就能執(zhí)行其功能所存入的這一系列指令稱作用戶宏程序本體,簡(jiǎn)稱宏程序。
這個(gè)總指令稱作用戶宏程序調(diào)用指令。在編程時(shí),編程員只要記住宏指令而不必記住宏程序。
什么場(chǎng)合會(huì)用到宏程序編程
1)手工編程加工公式曲線(計(jì)算簡(jiǎn)單,輸入快捷)
2)有規(guī)律的切削路徑(作為一個(gè)切削模塊)
3)程序間的控制(程序的調(diào)度)
4)刀具的管理(刀具的磨損)
5)自動(dòng)測(cè)量(機(jī)內(nèi)測(cè)頭)
宏程序與普通程序的區(qū)別
1)在宏程序本體中,能使用變量,可以給變量賦值,變量間可以運(yùn)算,程序可以跳轉(zhuǎn)。
2)普通程序中,只能指定常量,常量之間不能運(yùn)算,程序只能順序執(zhí)行,不能跳轉(zhuǎn),因此功能是固定的,不能變化。
3)宏功能是用戶提高數(shù)控機(jī)床性能的一種特殊功能,在相類似工件的加工中巧用宏程序?qū)⑵鸬绞掳牍Ρ兜男Ч?/span>
2
宏程序的變量與格式
宏程序的特點(diǎn)
宏程序可使用變量,可用變量執(zhí)行相應(yīng)操作;實(shí)際變量值可由宏程序指令賦給變量。
變量的三種類型
數(shù)控系統(tǒng)變量表示形式為“#”后跟1~4位數(shù)字,變量種類有三種:
(1)局部變量:#1~#33是在宏程序中局部使用的變量,它用于自變量轉(zhuǎn)移。
(2)公用變量:用戶可以自由使用,它對(duì)于由主程序調(diào)用的各子程序及各宏程序來(lái)說是可以公用的。#100~#149在關(guān)掉電源后,變量值全部被清除,而#500~#509在關(guān)掉電源后,變量值則可以保存。
(3)系統(tǒng)變量:由后跟4位數(shù)字來(lái)定義,它能獲取包含在機(jī)床處理器或NC內(nèi)存中的只讀或讀/寫信息,包括與機(jī)床處理器有關(guān)的交換參數(shù)、機(jī)床狀態(tài)獲取參數(shù)、加工參數(shù)等系統(tǒng)信息。
宏程序的簡(jiǎn)單調(diào)用格式
宏程序的簡(jiǎn)單調(diào)用是指在主程序中,宏程序可以被單個(gè)程序段單次調(diào)用。
調(diào)用指令格式:
G65 P(宏程序號(hào))L(重復(fù)次數(shù))(變量分配)。
其中:G65―宏程序調(diào)用指令;
P(宏程序號(hào))―被調(diào)用的宏程序代號(hào);
L(重復(fù)次數(shù))―宏程序重復(fù)運(yùn)行的次數(shù),重復(fù)次數(shù)為1時(shí),可省略不寫;
(變量分配)―為宏程序中使用的變量賦值。
宏程序與子程序相同的一點(diǎn)是,一個(gè)宏程序可被另一個(gè)宏程序調(diào)用,最多可調(diào)用4重。
宏程序的編寫格式
宏程序的編寫格式與子程序相同。其格式為:
0~(0001~8999為宏程序號(hào))
N10 指令
N~ M99
上述宏程序內(nèi)容中,除通常使用的編程指令外,還可使用變量、算術(shù)運(yùn)算指令及其它控制指令。變量值在宏程序調(diào)用指令中賦給。
3
FANUC系統(tǒng)宏程序應(yīng)用
(1)宏程序切槽
1)WHILE語(yǔ)句
G00 X52 Z2;
#2=-14;
是刀具z向的起刀點(diǎn)(因?yàn)榈秾挒?mm,所以起刀點(diǎn)定在Z-14的位置)
WHILE〔#2 GE -30〕DO2;
是z方向的約束條件,當(dāng)z等于-30時(shí),z向就不再移動(dòng)
G00 Z〔#2〕;
z方向的當(dāng)前位置
#2=#2-2;
z方向的移動(dòng)步距,每次移動(dòng)2mm
#1=52;
是x方向的起刀點(diǎn)
WHILE〔#1 GE 20〕DO1;
X方向的約束條件,當(dāng)直徑等于20時(shí)就不再切削
G01 X〔#1〕F0.2;
x方向的切深
G00 X〔#1+1〕;
x方向的相對(duì)退刀量
#1=#1-1;
x方向的步距(每次切1mm)
END1;
G00 X52;
END2;
完整程序:
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+1〕;
#1=#1-1;
G00 X52;
END2;
G00 X150 Z150;
M30;
2)IF語(yǔ)句
G00 X52 Z-2;
#1=-14;
是刀具的z向起刀點(diǎn)(刀寬為4mm)
N2 #1=#1-2;
是z方向的移動(dòng)步距
#2=52;
為x方向的起刀點(diǎn)
N1#2=#2-1;
是x方向的步距(每次切深1mm)
G01 X〔#2〕F0.2;
X方向的當(dāng)前位置
G00 X〔#2+1〕;
X方向的相對(duì)退刀量
IF 〔#2 GE 21〕GOTO1;
x方向的約束條件(當(dāng)x的數(shù)值切到20時(shí)就進(jìn)行下面程序,不再返回)
G00 X52;
X退刀到52的位置
G00 Z〔#1〕;
Z方向的當(dāng)前位置
IF 〔#1 GE -30〕GOTO2;
Z方向的約束條件,當(dāng)z等于-30時(shí),z向就不在移動(dòng)
完整程序:
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+1〕;
IF〔#2GE21〕GOTO1;
G00X52;
G00Z〔#1〕;
IF〔#1GE-30〕GOTO2;
G00X200;
Z200;
M5;
M30;
(2)橢圓編程
1)橢圓WHILE語(yǔ)句的標(biāo)準(zhǔn)格式:
#1=a;
a :為刀具的起刀點(diǎn)在相對(duì)橢圓的軸線Z的正方向a mm處
WHILE〔#1 GE b〕DO1;
b: 為橢圓加工的終點(diǎn)在相對(duì)橢圓的軸線Z的負(fù)方向b mm處(如果加工的是一個(gè)完整的半橢圓,那a、b是數(shù)值相同符號(hào)不同的兩個(gè)數(shù)值)
#2= c*SQRT〔1-#1*#1/d*d〕;
c: 橢圓的短半軸
d: 橢圓的長(zhǎng)半軸(根據(jù)橢圓公式求#2,長(zhǎng)半軸為d,短半軸為c,#2代表X的數(shù)值,#1為Z的數(shù)值,SQRT是開方的意思)
G01 X〔±2*#2+e〕Z〔#1±f〕;
e: 橢圓的X向軸線相對(duì)工件坐標(biāo)系的偏移量(直徑值)
f: 橢圓的Z向軸線相對(duì)工件坐標(biāo)系的偏移量
#1=#1-1;步距(每次移動(dòng)1mm)
END1;
注意事項(xiàng):當(dāng)車削凹橢圓時(shí)X后括號(hào)中的“±”取“﹣”;當(dāng)車削凸橢圓時(shí)X后括號(hào)中的“±”取“+”。
當(dāng)橢圓的X軸線向正向偏移則Z后括號(hào)中的“±”取“+”;當(dāng)橢圓的X向軸線向負(fù)向偏移則Z后括號(hào)中的“±”取“﹣”
2)橢圓IF語(yǔ)句的標(biāo)準(zhǔn)格式
#1=a;
a: 為刀具的起刀點(diǎn)在相對(duì)橢圓的軸線Z的正方向a mm處
N1#2=b*SQRT〔1-#1*#1/c*c〕;
b:橢圓的短半軸c:橢圓的長(zhǎng)半軸(根據(jù)橢圓公式X/c+ Y/b=1,SQRT是開方的意思)
G01X〔±2*#2+d〕Z〔#1±e〕F0.2; d:橢圓的X向軸線相對(duì)坐標(biāo)零點(diǎn)的偏移量(直徑值)e:橢圓的Z向軸線相對(duì)零面的偏移量
#1=#1-1;
步距(每次移動(dòng)1mm)
IF〔#1 GE -f〕GOTO1
f:橢圓加工的終止
注意事項(xiàng):當(dāng)車削凹橢圓時(shí)X后括號(hào)中的“±”取“﹣”;當(dāng)車削凸橢圓時(shí)X后括號(hào)中的“±”取“+”。當(dāng)橢圓的X軸線向正向偏移則Z后括號(hào)中的“±”取“+”;當(dāng)橢圓的X向軸線向負(fù)向偏移則Z后括號(hào)中的“±”取“﹣”。
WHILE語(yǔ)句
#1=20;
WHILE〔#1GE-20〕DO1;
#2=10*SQRT〔1-#1*#1/400〕;
G01X〔-2*#2+50〕Z〔#1-25〕;
#1=#1-1;
END1;
IF語(yǔ)句
#1=20;
N1#2=10*SQRT〔1-#1*#1/400〕;
G01X〔-2*#2+50〕Z〔#1-25〕F0.2;
#1=#1-1;
IF〔#1GE-20〕GOTO1;
完整程序
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+50〕Z〔#1-25〕F0.2;
#1=#1-1;
END1;
G00 X50;
N20 G00 G40 Z2;
G70 P10 Q20;
G00 X200;
Z200;
M5;
M30;
IF語(yǔ)句完整格式省略,(IF語(yǔ)句也一樣,只要加上循環(huán)就可以),在FANUC-0i系統(tǒng)中宏程序只能加在G73中。
(3)拋物線的加工
1)拋物線WHILE語(yǔ)句的標(biāo)準(zhǔn)格式:
#1=a;
a: 為刀具的起刀點(diǎn)在拋物線軸線Z的方向a mm處
WHILE〔#1 GE -b〕DO1;
b: 為橢圓z向的加工長(zhǎng)度
#2=SQRT〔-#1*5/3〕;
(根據(jù)拋物線公式Z=-3/5*X*X,求其中的X值,也就是#2,其中SQRT是開平方的意思)
G01 X〔±2*#2+c〕Z〔#1〕;
c: 為拋物線的X向軸線相對(duì)工件坐標(biāo)系的偏移量(直徑值),“±”
取“+”時(shí)為凸,取“-”時(shí)為凹
#1=#1-1; 步距(每次移動(dòng)1mm)
END1;
2)拋物線IF語(yǔ)句的標(biāo)準(zhǔn)格式
#1=a;
a: 為刀具的起刀點(diǎn)在拋物線軸線Z的方向a mm處
N1 #2=SQRT〔-#1*5/3〕;
(根據(jù)拋物線公式Z=-3/5*X*X,求其中的X值,也就是#2,其中SQRT是開平方的意思)
G01 X〔±2*#2+b〕Z〔#1〕;
b:為拋物線的X向軸線相對(duì)坐標(biāo)零點(diǎn)的偏移量(直徑值),“±”取“+”時(shí)為凸,取“-”時(shí)為凹
#1=#1-1;
(Z方向的步距,每次移動(dòng)1mm)
IF〔#1 GE -c〕GOTO1; c:為橢圓z向的加工長(zhǎng)度
拋物線IF語(yǔ)句的另一種形式
#1=a;
N1 #2=SQRT〔(+)#1*5/3〕;
“+”號(hào)可省略
G01 X〔2*#2+b〕Z〔-#1〕;
#1=#1+1;
IF〔#1 LE c〕GOTO1;
假設(shè)拋物線是向Z的正方向,再用Z〔-#1〕;把拋物線對(duì)稱到負(fù)方向
WHILE語(yǔ)句
#1=0;
WHILE〔#1 GE -15〕DO1;
#2=SQRT〔-#1*5/3〕;
G01 X〔2*#2+30〕Z〔#1〕;
#1=#1-1;
END1;
IF語(yǔ)句
#1=0;
N1 #2=SQRT〔-#1*5/3〕;
G01X〔2*#2+30〕Z〔#1〕;
#1=#1-1;
IF〔#1 GE -15〕GOTO1;
完整程序
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+30〕Z〔#1〕;
#1=#1-1;
END1;
G00 X42;
N20 G00 G40 Z2;
G70 P10 Q20;
G00 X200;
Z200;
M5;
M30;
(4)WHILE語(yǔ)句與IF語(yǔ)句的區(qū)別
1)兩種語(yǔ)句返的方向不同
WHILE語(yǔ)句向后返
例:WHILE〔#1 GE 20〕DO1;
G01 X〔#1〕F0.2;
假設(shè)機(jī)床執(zhí)行到此句時(shí)#1=20,它會(huì)繼續(xù)往下執(zhí)行,執(zhí)行到#1=#1-1后#1的值變?yōu)?9,不再滿足約束條件所以就不會(huì)返回去。(X方向切到20)
G00 X〔#1+1);
#1=#1-1;
END1;
2)IF語(yǔ)句向前返
例:N1 #2=#2-1;
G01X〔#2〕F0.2;假設(shè)機(jī)床執(zhí)行到此句時(shí)#2=20,它會(huì)繼續(xù)往下執(zhí)行,執(zhí)行到IF〔#2 GE 20〕GOTO1;仍然滿足條件,它會(huì)繼續(xù)返回到N1 #2=#2-1;而現(xiàn)在的X值就會(huì)變?yōu)?9,不再滿足約束條件,而后再執(zhí)行一
G01X〔#2〕F0.2;最后就執(zhí)行下面的程序(X方向已經(jīng)切到19)
G00X〔#2+1);
IF〔#2 GE 20〕GOTO1;
3)從上面的切槽程序可以看出,IF語(yǔ)句要比WHILE語(yǔ)句的字?jǐn)?shù)要少很多。
4)由于返回的方向不同,在加工中WHILE語(yǔ)句少讀一句,IF語(yǔ)句要多讀一句。
4
SIEMENS系統(tǒng)(車床)宏程序應(yīng)用
說明:宏程序是用變量編程,西門子系統(tǒng)的變量號(hào)用R表示。
例如用普通編程方法編寫的:G01X-10
用宏程序可表示為:
R1=-10
G01 X=R1
條件轉(zhuǎn)移:
IF GOTOB:向后跳轉(zhuǎn)
IF GOTOF:向前跳轉(zhuǎn)
用普通編程方法編寫的
GO1X100
用變量可表示為:
R1=0
AA:R1=R1+1
G01X=R1
IF R1<100 GOTOB AA
R1是自變量,初始值為0,R1=R1+1表示的是自變量的遞增數(shù)值為1,當(dāng)程序每次走過此行時(shí),R1的值增加1,R1<100是條件式,IF R1<100 GOTOB AA此行的意思是如果自變量R1<100則程序向后跳轉(zhuǎn)到標(biāo)記處:AA
如果R1大于或等于100,則程序往下走。
宏程序在G90和G91模態(tài)下都可以使用,不過它們含義不同,例如;
R1=0,G90R1=R1+1,G1X=R1,此程序走完第二遍X的值是2.
R1=0,G91R1=R1+1,G1X=R1,此程序走完第二遍X的值是3. 解釋:程序走完第一遍R1的值是1,走第二遍的時(shí)候R1的值是2,但是在G91模態(tài)下它是在前面的基礎(chǔ)上走的。
(1)切槽
T1
TC
T1D1
G0G40X100Z100
M03S1000
G0X54Z2
快速到達(dá)起刀點(diǎn)
Z-10
R1=3
定義刀片寬度為3mm
R2=-10-R1-0.2
起刀點(diǎn) 為-10,對(duì)刀時(shí)以刀片左邊;
對(duì)刀,所以應(yīng)減去刀片的寬度,0.2為精加工余量
G1Z=R2F0.1
刀具到達(dá)Z軸起刀點(diǎn)
AA:R2=R2-2.5
R3=50
槽X軸起到點(diǎn)
BB:R3=R3-2
定義每刀切削深度為2 mm
G1X=R3
X=R3+1
每切深2mm單邊退0.5mm排屑
IF R3>30+0.4 GOTOB BB
定義槽深10mm,如果R3>30mm程序向后跳轉(zhuǎn)到標(biāo)記處BB,0.4為精加工余量
G0X50
刀具到達(dá)X軸起刀點(diǎn)
G1Z=R2
IF R2>-30+0.2 GOTOB AA
定義槽寬為20mm,0.2是精加工余量
G0X50
G01Z-13
精加工
X30
Z-16
G0X50
Z-30
G01X30
Z-16
G0X50
退刀
G0X100
Z100
M05
M30
(2)橢圓
1)基本格式
R1=0
定義變量R1初始值為0
AA:R2=b×SQRT(1-R1×R1/a×a)
根據(jù)橢圓方程所得,a是橢圓的長(zhǎng)半軸,b是橢圓短半軸,SQRT是開平方符號(hào)。
G1X=±2×R2+X Z=R1-Z
設(shè)定橢圓的位置和形狀,+2為凸形,-2為凹形,X、Z分別是工件軸線和橢圓軸線的距離(直徑制)。
R1=R1-1
設(shè)定加工步距
IF R1>=n GOTOB AA
如過變量R1<n,則向后跳轉(zhuǎn)到標(biāo)記處AA,n為Z向終點(diǎn)坐標(biāo)。
2)編程舉例:
T1D1
G0G40X100Z100
M3S1000
G0X52Z2
Z-20
CYCLE95( )
G42S1500
OO:
R1=20
AA:R2=5×SQRT(1-R1×R1/400)
G1X=-2×R2+50 Z=R1-40
R1=R1-2
IF R1>=-20 GOTOB AA
PP:X42
G0G40X100Z100
M05
M09
M30
(3)拋物線
1)基本格式:
R1=0
設(shè)定變量R1的初始值為0
AA:R2=SQRT(-R1×n)
根據(jù)拋物線基本格式所得,式中SQRT為開平方符號(hào),n是系數(shù)
G01X=2×R2+n
Z=R1
加工路徑,+2是凸形,n是X軸起點(diǎn)數(shù)值
R1=R1-1
變量增量值為1mm
IF R1>-30 GOTOB AA
如果變量R1>-30,程序向后跳轉(zhuǎn)到標(biāo)記處:AA
2)編程舉例:
T1
Tc
T1D1
G0G40X100Z100
M03S1000
G0X52Z2
CYCLE95( )
G0G42
OO:
R1=0
AA:R2=SQRT(-R1×5/3)
G01X=2×R2+30 Z=R1
R1=R1-2
IF R1>-60 GOTOB AA
PP:X52
G0X100Z100
M05
M30