一.前言
線切割能加工各種窄槽、小凹圓角,對硬度不敏感、特別適合淬火后加工,并且成本低、操作方便,故在加工行業(yè)中是一種不可缺少的工藝手段。近年來線切割機(jī)床也迅速發(fā)展,控制系統(tǒng)也逐漸與世界接軌,G代碼的控制系統(tǒng)逐漸成為主流,但在一些低端產(chǎn)品,尤其是老式機(jī)床中,3B格式的控制系統(tǒng)卻幾乎一統(tǒng)天下,我們廠是汽車模具專業(yè)生產(chǎn)廠,目前就有多臺老式快走絲線切割機(jī)床。雖然我廠也有先進(jìn)的慢走絲機(jī)床,但因快走絲機(jī)床加工成本低,對環(huán)境要求也低,所以一直是線切割工段的主力。
最初,我們編線切割程序是在autocad中用一個(gè)二次開發(fā)程序編制,后來單位上了UG,但UG常用的后置處理沒有3B代碼格式,我們就把UG的線條轉(zhuǎn)換到 Auto CAD中,常常因?yàn)閮煞N軟件銜接不好而反復(fù)調(diào)整,費(fèi)時(shí)費(fèi)力,我們斥巨資購買的UG軟件無法發(fā)揮其做線切割的強(qiáng)大功能。后來隨著對UG的深入了解,發(fā)現(xiàn)也能處理出3B格式來,下面就介紹一下,希望能對大家有所啟迪。
二.3B代碼的編程規(guī)則
1.3B代碼的格式為:B x B y B j G Z ,B為分割符號,x,y,j為數(shù)值,以微米為單位。j為計(jì)數(shù)長度,G 為計(jì)數(shù)方向,Z 為加工指令。
2.加工指令共有12種。
a.加工直線時(shí),以起點(diǎn)為坐標(biāo)原點(diǎn),終點(diǎn)在坐標(biāo)軸上時(shí),x、y值為零,計(jì)數(shù)長度j為線段長度,按X+,X-,Y+,Y-,四半軸計(jì)數(shù)方向與加工指令分別為,GX L1,GY L2,GX L3,GY L4。
b.加工直線時(shí),以起點(diǎn)為坐標(biāo)原點(diǎn),終點(diǎn)在各象限內(nèi)時(shí),x,y為終點(diǎn)相對起點(diǎn)坐標(biāo)值,可同比例放大或縮小,計(jì)數(shù)長度j為線段在計(jì)數(shù)方向的投影長度,按終點(diǎn)在1、2、3、4象限,加工指令分別為L1、L2、L3、L4。各象限以45度線分割后,終點(diǎn)貼近X軸,則計(jì)數(shù)方向?yàn)镚X,反之為GY。
c.加工圓弧時(shí),加工圓弧時(shí)x,y為起點(diǎn)相對于圓心的坐標(biāo)值,圓弧起點(diǎn)相對圓心在1、2、3、4象限時(shí),順時(shí)針圓弧分別為SR1、SR2、SR3、SR4,逆時(shí)針圓弧分別為NR1、NR2、NR3、NR4。各象限以45度線分割后,終點(diǎn)貼近X軸,則計(jì)數(shù)方向?yàn)镚Y,反之為GX。
例:
三.分析
UG 在后置處理為G代碼程序時(shí)有直線(G01)、順時(shí)針圓弧(G02)、逆時(shí)針圓弧(G03)幾種格式,如果能編寫一段代碼將直線及圓弧按3B格式分類計(jì)算,那么處理成3B格式就容易了。
為方便介紹,將每一步的終點(diǎn)坐標(biāo)為X、Y,起點(diǎn)也就是上一步終點(diǎn)為X0、Y0,圓心點(diǎn)Xc,Yc。
區(qū)域劃分:
1.直線運(yùn)動時(shí),終點(diǎn)相對于起點(diǎn)在X+半軸的條件為:X>X0,Y=Y0,計(jì)數(shù)長度為:|X-X0|,指令為:GX L1;
同理X負(fù)半軸: 條件XY正半軸: 條件X=X0,Y>Y0, 計(jì)數(shù)長度|Y-Y0|,GY L2;
Y負(fù)半軸: 條件X=X0,Y
2.直線運(yùn)動不在坐標(biāo)軸上時(shí),按如圖2所示劃分為8區(qū)域:
1/8區(qū):條件X>X0,Y>Y0,|X-X0|>=|Y-Y0|,計(jì)數(shù)長度|X-X0|,指令GX L1;
2/8區(qū):條件X>X0,Y>Y0,|X-X0|<|Y-Y0|,計(jì)數(shù)長度|Y-Y0|,指令 GY L1;
3/8區(qū):條件XY0,|X-X0|<|Y-Y0|,計(jì)數(shù)長度|Y-Y0|,指令 GY L2;
4/8區(qū):條件XY0,|X-X0|>=|Y-Y0|,計(jì)數(shù)長度|X-X0|,指令GX L2;
5/8區(qū):條件X=|Y-Y0|,計(jì)數(shù)長度|X-X0|,指令GX L3;
6/8區(qū):條件X7/8區(qū):條件X>X0,Y8/8區(qū):條件X>X0,Y=|Y-Y0|,計(jì)數(shù)長度|X-X0|,指令GX L4;
3.圓弧劃分較為麻煩:
按方向,分為順時(shí)針,逆時(shí)針;按起點(diǎn)象限分為1、2、3、4象限,按終點(diǎn)分圖2所示的8區(qū)域。下面僅以逆時(shí)針,起點(diǎn)在1象限的圓弧加以分析:
1/8區(qū):(優(yōu)弧)條件Y>Y0,計(jì)數(shù)長度|Y-Y0|,指令GY NR1;
(劣弧)條件Y<=Y0,計(jì)數(shù)長度4R-|Y-Y0|,指令GY NR1;
2/8區(qū):(優(yōu)弧)條件X(劣弧)條件X>=X0,計(jì)數(shù)長度4R-|X-X0|,指令GX NR1;
3/8區(qū):計(jì)數(shù)長度|X-X0|,指令GX NR1;
4/8區(qū):計(jì)數(shù)長度2R-|Y0-Yc|-|Y-Yc|,指令GY NR1;
5/8區(qū):計(jì)數(shù)長度2R-|Y0-Yc|+|Y-Yc|,指令GY NR1;
6/8區(qū):計(jì)數(shù)長度2R+|X0-Xc|-|X-Xc|,指令GX NR1;
7/8區(qū):計(jì)數(shù)長度4R-|X0-Xc|-|X-Xc|,指令GX NR1;
8/8區(qū):計(jì)數(shù)長度4R-|Y0-Yc|-|Y-Yc|,指令GY NR1;
起點(diǎn)在2、3、4象限的圓弧以及順時(shí)針圓弧同理。
四.實(shí)施
先看看UG后處理的構(gòu)成,UG后處理主要由兩個(gè)文件組成,*.DEF與*.TCL。前者主要定義了一些格式,后者主要定義了一些運(yùn)算,我們所要加的程序代碼就在后者中。
打開*.TCL,找到程序段proc MOM_linear_move { } { ……},直線運(yùn)動的運(yùn)算就在該段內(nèi)運(yùn)算,圓弧運(yùn)動在程序段proc MOM_circular_move { } { ……}中。UG后處理中定義了一些變量,mom_prev_pos為前一點(diǎn)坐標(biāo),即起點(diǎn)坐標(biāo),mom_pos為終點(diǎn)坐標(biāo),mom_pos_arc_center為圓弧運(yùn)動的圓心點(diǎn)坐標(biāo),mom_arc_radius為圓弧半徑值,mom_arc_direction為圓弧旋轉(zhuǎn)方向,等等,可從post builder 中查得。
由于UG在運(yùn)算時(shí)按允差計(jì)算,并進(jìn)行四舍五入,在判斷相等時(shí)不要用相等,而是判斷差值小于允差。
有了這些準(zhǔn)備,就可以動手編程序了。當(dāng)然也可以利用post builder做一個(gè)用戶自定義指令,但核心內(nèi)容不變,仍需自己編寫。限于篇幅,僅示例直線運(yùn)動的一部分。
global mom_l_code 自定義變量其值為:1,2,3,4
global mom_gxy 自定義變量其值為:X,Y
global mom_ba 自定義變量,第一個(gè)B 的值,即第二部分介紹的x值
global mom_bb 自定義變量,第二個(gè)B 的值,即y值
global mom_bc 自定義變量,計(jì)數(shù)長度,即j值
global mom_pos 終點(diǎn)變量
global mom_prev_pos 起點(diǎn)變量
set mom_ba abs($mom_pos(0)-$mom_prev_pos(0))
set mom_bb abs($mom_pos(1)-$mom_prev_pos(1))
if {abs($mom_pos(1)-$mom_prev_pos(1)) < 0.001} {
if {[EQ_is_gt $mom_pos(0) $mom_prev_pos(0)]} {
#X正半軸
set mom_ba 0
set mom_bb 0
set mom_bc $mom_pos(0)-$mom_prev_pos(0)
set mom_gxy X
set mom_l_code 1
} else {
# X負(fù)半軸
set mom_ba 0
set mom_bb 0
set mom_bc $mom_pos(0)-$mom_prev_pos(0)
set mom_gxy X
set mom_l_code 3
}
} elseif {abs($mom_pos(0)-$mom_prev_pos(0)) < 0.001} {
if {[EQ_is_gt $mom_pos(1) $mom_prev_pos(1)]} {
# Y正半軸
……
} else {
# Y 負(fù)半軸
……
}
} elseif {[EQ_is_gt $mom_pos(1) $mom_prev_pos(1)]} {
if {[EQ_is_gt $mom_pos(0) $mom_prev_pos(0)]} {
if{abs($mom_pos(0)-$mom_prev_pos(0))> abs($mom_pos(1)-$mom_prev_pos(1))} {
# 終點(diǎn)在第1/8區(qū)域
set mom_bc abs($mom_pos(0)-$mom_prev_pos(0))
set mom_gxy X
set mom_l_code 1
} else {
# 終點(diǎn)在第2/8區(qū)域
set mom_bc abs($mom_pos(1)-$mom_prev_pos(1))
set mom_gxy Y
set mom_l_code 1
}
} else {
if{abs($mom_pos(1)-$mom_prev_pos(1))>abs($mom_pos(0)-$mom_prev_pos(0))}{
# 終點(diǎn)在第3/8區(qū)域
……
# 終點(diǎn)在第8/8區(qū)域
} else {
set mom_bc abs($mom_pos(0)-$mom_prev_pos(0))
set mom_gxy X
set mom_l_code 4
}
}
}
其他部分略。
五.結(jié)束語
如圖2所示的圖形由ug后處理出的程序如下所示,我廠的線切割需手工輸入,為方便程序閱讀,加入了坐標(biāo)值,如果為自動傳輸,略加修改即可。
我做的后置處理程序經(jīng)過多次改進(jìn),現(xiàn)在已穩(wěn)定運(yùn)行一年多了,效果良好。同時(shí)希望本文能給讀者一定啟迪,達(dá)到拋磚引玉的目的。