摘要:借用AUTOCAD軟件生成DXF文件中的直線圓弧數(shù)據(jù),使用VB開發(fā)數(shù)控車床自動編程軟件。軟件的重要功能為:對坐標(biāo)數(shù)據(jù)的格式的轉(zhuǎn)換,實現(xiàn)自動提取,自動產(chǎn)生G代碼,能夠?qū)崿F(xiàn)輸入輸出及仿真等功能。
關(guān)鍵詞:AUTOCAD;VB;G代碼;數(shù)控車自動編程
數(shù)控加工自動編程軟件很多,一般CAD/CAM都有這樣的自動編程功能。如PRO/E、UG等軟件,結(jié)構(gòu)龐大,軟件學(xué)習(xí)也復(fù)雜,并且價格也昂貴。假若僅僅用于數(shù)控車床的自動編程,就如同殺雞用牛刀,顯然很浪費。使用簡潔,操作方便,專門用于數(shù)控車床加工的小軟件想必有一定的存在必要。開發(fā)出一種能夠使數(shù)控車床編程變得更加簡單,更加智能的軟件對于個人來說也是一種挑戰(zhàn)。
參數(shù)化設(shè)計、三維運算內(nèi)核的開發(fā),對于個人來說是遙不可及的事情。個人開發(fā)設(shè)計一種圖形設(shè)計軟件也同樣不太現(xiàn)實。也只有借雞生蛋的方法,借用一種被廣泛使用的圖形設(shè)計軟件,獲取工件輪廓坐標(biāo),和線條特征,經(jīng)過軟件進(jìn)行編譯,最后得到需要的數(shù)控加工程序。
因此,此軟件的功能被確定為能夠獲取工件輪廓坐標(biāo),和線條特征,能夠進(jìn)行數(shù)控程序編譯,同時為了能檢驗程序的正確性,最好還能夠有可視化的模擬功能。
AUTOCAD因其靈活性和接口的多樣性被廣泛的使用在機(jī)械設(shè)計領(lǐng)域。在其能生成的文件格式中有一個二進(jìn)制文件,格式為DXF的文件。DXF文件中包含著AUTOCAD圖形文件中所有對象的信息,其中包含著輪廓線的線型和坐標(biāo)信息。使用二維功能強(qiáng)大的AUTOCAD軟件繪制軸類零件的外輪廓顯然是一件非常容易的事情。于是本數(shù)控車床自動編程軟件的運行機(jī)理就如下圖所示。本軟件的開發(fā)工具使用VB,雙劃線部分為本軟件要實現(xiàn)的功能。
一、坐標(biāo)的獲取
首先使用CAD軟件繪制軸類零件,在圖形文件中只包含工件的外輪廓線條,也就是數(shù)控車的精車所走的刀路,而其它無關(guān)線條對坐標(biāo)的獲取產(chǎn)生干擾。典型的圖形如圖所示。圖1為工件的外型輪廓圖,圖2為編程所需要的單側(cè)輪廓線。所以在CAD中畫的圖為圖(2)。
將工件按照以上規(guī)則繪制后另存為AUTOCAD2000 DXF格式??墒褂梦谋敬蜷_方式便能將其打開。我們可以在一系列的子類標(biāo)記中可以找到子類標(biāo)記ACDBLINE,在該子類下就隱含了該直線的坐標(biāo)值。組碼10,20,30下分別為直線起點X、Y、Z坐標(biāo),組碼11、21、31下分別為直線終點X、Y、Z坐標(biāo)。以同樣的方式我們可以找出子類標(biāo)記ACDBARC,組碼10,20,30為圓弧中心坐標(biāo)X、Y、Z,40為半徑,50為起始角,51為終止角。
根據(jù)以上的特點,在VB中建立工程,添加控件如下,并在控件下輸入相應(yīng)的代碼。
使用 OpenFile NameForInput As#1代碼將二進(jìn)制DXF文件逐行讀入。并和字符“ACDBLINE”和“CADBARC”進(jìn)行對比,符合要求的分別提取組碼10,20,11,21,40,50,51下的數(shù)值通過數(shù)據(jù)庫操作代碼儲存在數(shù)據(jù)庫中。直線線名為LINE(n),圓弧線名為ARC(n)。
數(shù)控車床能接收直線的描述方式同DXF中的描述方式一樣均為起點坐標(biāo)和終點坐標(biāo)。但是圓弧卻不一樣,一般數(shù)控系統(tǒng)接收的方式是:圓弧起點坐標(biāo)、終點坐標(biāo)和半徑以及通過G2、G3來區(qū)別圓弧的方向。而在DXF文件中是以圓心、半徑、起始角,終止角的方式。兩者不一直,所以在編譯時必須對DXF中圓弧坐標(biāo)的表述進(jìn)行處理,換算成數(shù)控車能接受的:圓弧起點坐標(biāo)、終點坐標(biāo)和半徑。并且通過起始角和終止角的所在坐標(biāo)象限位置來判斷圓弧方向,以決定是使用G02還是G03代碼。
將圓分成4等分,0到90度以及90到180度為G03代碼,180度到270度以及270到360度為G02代碼。下面以在0度到90度的范圍內(nèi)圓弧起始點x,y坐標(biāo)為例,計算方法如下:
sx----圓弧起點x坐標(biāo);sy----圓弧起點y坐標(biāo);sjiao----起始角度;banjin-----半徑;xinx----圓心x坐標(biāo);xiny----圓心y坐標(biāo)。
使用以上的程序代碼可以獲得A點坐標(biāo),同樣的方法可以獲得B點的坐標(biāo)。
二、數(shù)據(jù)的排列
通過轉(zhuǎn)換好的數(shù)據(jù)重新輸入數(shù)據(jù)庫。但是仔細(xì)發(fā)現(xiàn)數(shù)據(jù)庫是數(shù)值排列比較凌亂,假若直接取出并不能用于生成G代碼。所以要對里面的數(shù)據(jù)按照一定的要求進(jìn)行重新的排列。作為刀路的起點選擇也是有一定的規(guī)則的,必須選擇為圖形最右上角的點,是X,Y值為所有點中值最大的。對數(shù)據(jù)庫進(jìn)行搜索獲取XY值最大的作為刀路的起始點。如下圖假若獲得起點SX1,SY1為起點,那么很自然下一點坐標(biāo)為(ex1,ey1)。但是第二條直線的起點是多少呢?要根據(jù)坐標(biāo)(ex1,ey1)對數(shù)據(jù)庫進(jìn)行搜索對比,找到相對應(yīng)的值。然后以同直線或圓弧的另一點做為該線的終點。以此方法類推就能產(chǎn)生一條完整的刀路。排列后的坐標(biāo)重新輸入數(shù)據(jù)庫。
三、G代碼的生成
得到正確的數(shù)據(jù)庫后,必須對數(shù)據(jù)進(jìn)行編譯,生成G代碼。要注意CAD圖中的XY坐標(biāo)同車床坐標(biāo)系的區(qū)別。
線名為LINE的坐標(biāo)生成G代碼的格式為 G01Xey1 Zex1
線名為ARC和根據(jù)起始角、終止角大小把坐標(biāo)生成G代碼的格式為
G02Xey1 Zex1 Rr或 G03Xey1 Zex1 Rr
并將所得到的G代碼程序傳遞到容器控件LIST中。
完整的G代碼程序還需要頭程序段和結(jié)尾程序,通過軟件界面左邊的文本框控件的輸入,和復(fù)選框控件的選擇,可以得到頭程序段和結(jié)尾程序,例如:N00001;G50 X100 Z100;S800 M03 T101;和結(jié)尾程序G0 X100 Z100;M30。
將頭程序段插入進(jìn)LIST控件中的最前面,將結(jié)尾程序插入進(jìn)LIST控件中的最后面。和原先的刀路G代碼相組合,得到完整的數(shù)控加工程序。
四、程序的驗證和保存
為了驗證程序是否正確需要對LIST中的G代碼進(jìn)行模擬。從LIST中提取坐標(biāo)使用VB中的畫直線畫圓功能在指定的區(qū)域內(nèi)畫出刀具運行軌跡,通過軌跡的運行曲線同工件的外輪廓相比較,來判斷刀路是否正確。
在軟件的最后使用OpenFile NameForoutput As#1將LIST容器中所有的字符輸入到給定文件名的文本文件中保存。整個軟件完成后如下圖所示。
五、結(jié)束語
以上只是針對于數(shù)控車床的精加工程序的編制。本自動編程軟件的初加工功能,各種循環(huán)功能,螺紋切削功能,都可以在精加工程序的基礎(chǔ)上進(jìn)行拓展??梢约尤胍恍┲悄芘袛喑绦蚴贡拒浖δ芨鼜?qiáng)大,使用更傻瓜化。相信開發(fā)這樣的一個軟件會使數(shù)控車床的編程更加簡單方便。