我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

您的位置:網站首頁 > UG教程下載

UG 3B格式線切割后置處理的開發

時間:2010-11-15 09:53:59 來源:

一.前言

線切割能加工各種窄槽、小凹圓角,對硬度不敏感、特別適合淬火后加工,并且成本低、操作方便,故在加工行業中是一種不可缺少的工藝手段。近年來線切割機床也迅速發展,控制系統也逐漸與世界接軌,G代碼的控制系統逐漸成為主流,但在一些低端產品,尤其是老式機床中,3B格式的控制系統卻幾乎一統天下,我們廠是汽車模具專業生產廠,目前就有多臺老式快走絲線切割機床。雖然我廠也有先進的慢走絲機床,但因快走絲機床加工成本低,對環境要求也低,所以一直是線切割工段的主力。

最初,我們編線切割程序是在autocad中用一個二次開發程序編制,后來單位上了UG,但UG常用的后置處理沒有3B代碼格式,我們就把UG的線條轉換到 Auto CAD中,常常因為兩種軟件銜接不好而反復調整,費時費力,我們斥巨資購買的UG軟件無法發揮其做線切割的強大功能。后來隨著對UG的深入了解,發現也能處理出3B格式來,下面就介紹一下,希望能對大家有所啟迪。

二.3B代碼的編程規則

1.3B代碼的格式為:B x B y B j G Z ,B為分割符號,x,y,j為數值,以微米為單位。j為計數長度,G 為計數方向,Z 為加工指令。

2.加工指令共有12種。

a.加工直線時,以起點為坐標原點,終點在坐標軸上時,x、y值為零,計數長度j為線段長度,按X+,X-,Y+,Y-,四半軸計數方向與加工指令分別為,GX L1,GY L2,GX L3,GY L4。

b.加工直線時,以起點為坐標原點,終點在各象限內時,x,y為終點相對起點坐標值,可同比例放大或縮小,計數長度j為線段在計數方向的投影長度,按終點在1、2、3、4象限,加工指令分別為L1、L2、L3、L4。各象限以45度線分割后,終點貼近X軸,則計數方向為GX,反之為GY。

c.加工圓弧時,加工圓弧時x,y為起點相對于圓心的坐標值,圓弧起點相對圓心在1、2、3、4象限時,順時針圓弧分別為SR1、SR2、SR3、SR4,逆時針圓弧分別為NR1、NR2、NR3、NR4。各象限以45度線分割后,終點貼近X軸,則計數方向為GY,反之為GX。

例:


三.分析

UG 在后置處理為G代碼程序時有直線(G01)、順時針圓弧(G02)、逆時針圓弧(G03)幾種格式,如果能編寫一段代碼將直線及圓弧按3B格式分類計算,那么處理成3B格式就容易了。

為方便介紹,將每一步的終點坐標為X、Y,起點也就是上一步終點為X0、Y0,圓心點Xc,Yc。


區域劃分:

1.直線運動時,終點相對于起點在X+半軸的條件為:X>X0,Y=Y0,計數長度為:|X-X0|,指令為:GX L1;
同理X負半軸: 條件XY正半軸: 條件X=X0,Y>Y0, 計數長度|Y-Y0|,GY L2;
Y負半軸: 條件X=X0,Y
2.直線運動不在坐標軸上時,按如圖2所示劃分為8區域:
1/8區:條件X>X0,Y>Y0,|X-X0|>=|Y-Y0|,計數長度|X-X0|,指令GX L1;
2/8區:條件X>X0,Y>Y0,|X-X0|<|Y-Y0|,計數長度|Y-Y0|,指令 GY L1;
3/8區:條件XY0,|X-X0|<|Y-Y0|,計數長度|Y-Y0|,指令 GY L2;
4/8區:條件XY0,|X-X0|>=|Y-Y0|,計數長度|X-X0|,指令GX L2;
5/8區:條件X=|Y-Y0|,計數長度|X-X0|,指令GX L3;
6/8區:條件X7/8區:條件X>X0,Y8/8區:條件X>X0,Y=|Y-Y0|,計數長度|X-X0|,指令GX L4;

3.圓弧劃分較為麻煩:

按方向,分為順時針,逆時針;按起點象限分為1、2、3、4象限,按終點分圖2所示的8區域。下面僅以逆時針,起點在1象限的圓弧加以分析:

1/8區:(優弧)條件Y>Y0,計數長度|Y-Y0|,指令GY NR1;
(劣弧)條件Y<=Y0,計數長度4R-|Y-Y0|,指令GY NR1;

2/8區:(優弧)條件X(劣弧)條件X>=X0,計數長度4R-|X-X0|,指令GX NR1;
3/8區:計數長度|X-X0|,指令GX NR1;
4/8區:計數長度2R-|Y0-Yc|-|Y-Yc|,指令GY NR1;
5/8區:計數長度2R-|Y0-Yc|+|Y-Yc|,指令GY NR1;
6/8區:計數長度2R+|X0-Xc|-|X-Xc|,指令GX NR1;
7/8區:計數長度4R-|X0-Xc|-|X-Xc|,指令GX NR1;
8/8區:計數長度4R-|Y0-Yc|-|Y-Yc|,指令GY NR1;
起點在2、3、4象限的圓弧以及順時針圓弧同理。

四.實施

先看看UG后處理的構成,UG后處理主要由兩個文件組成,*.DEF與*.TCL。前者主要定義了一些格式,后者主要定義了一些運算,我們所要加的程序代碼就在后者中。

打開*.TCL,找到程序段proc MOM_linear_move { } { ……},直線運動的運算就在該段內運算,圓弧運動在程序段proc MOM_circular_move { } { ……}中。UG后處理中定義了一些變量,mom_prev_pos為前一點坐標,即起點坐標,mom_pos為終點坐標,mom_pos_arc_center為圓弧運動的圓心點坐標,mom_arc_radius為圓弧半徑值,mom_arc_direction為圓弧旋轉方向,等等,可從post builder 中查得。

由于UG在運算時按允差計算,并進行四舍五入,在判斷相等時不要用相等,而是判斷差值小于允差。

有了這些準備,就可以動手編程序了。當然也可以利用post builder做一個用戶自定義指令,但核心內容不變,仍需自己編寫。限于篇幅,僅示例直線運動的一部分。

global mom_l_code 自定義變量其值為:1,2,3,4
global mom_gxy 自定義變量其值為:X,Y
global mom_ba 自定義變量,第一個B 的值,即第二部分介紹的x值
global mom_bb 自定義變量,第二個B 的值,即y值
global mom_bc 自定義變量,計數長度,即j值
global mom_pos 終點變量
global mom_prev_pos 起點變量
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負半軸
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 負半軸
……
}
} 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))} {
# 終點在第1/8區域
set mom_bc abs($mom_pos(0)-$mom_prev_pos(0))
set mom_gxy X
set mom_l_code 1
} else {
# 終點在第2/8區域
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))}{
# 終點在第3/8區域
……
# 終點在第8/8區域
} else {
set mom_bc abs($mom_pos(0)-$mom_prev_pos(0))
set mom_gxy X
set mom_l_code 4
}
}
}
其他部分略。

五.結束語

如圖2所示的圖形由ug后處理出的程序如下所示,我廠的線切割需手工輸入,為方便程序閱讀,加入了坐標值,如果為自動傳輸,略加修改即可。


我做的后置處理程序經過多次改進,現在已穩定運行一年多了,效果良好。同時希望本文能給讀者一定啟迪,達到拋磚引玉的目的。


相關文章