曹 琨,范益民,羅 凌,趙萬生
(上海交通大學(xué)機(jī)械與動力工程學(xué)院機(jī)械系統(tǒng)與振動國家重點實驗室,上海200240)
隨著計算機(jī)和數(shù)控技術(shù)的飛速發(fā)展,CAM軟件已成為企業(yè)實現(xiàn)高度自動化設(shè)計及加工的重要手段。據(jù)統(tǒng)計,我國制造類企業(yè)每年采購三維CAD/CAM軟件的金額高達(dá)幾十億元,且還以每年20%的速度遞增,這對國內(nèi)制造企業(yè)是一個巨大的壓力,也存在信息和知識產(chǎn)權(quán)隱患[1]。因此,深化開發(fā)應(yīng)用CAD/CAM軟件具有重要意義。線切割機(jī)床由于采用金屬線作為加工工具,其加工對象多為直壁平面圖形,最復(fù)雜的加工當(dāng)屬上下異形直紋面。而即使是對于上下異形的工件加工,也可通過二維的編程來實現(xiàn)[2]。用二維CAD/CAM軟件實現(xiàn)線切割加工的生產(chǎn)設(shè)計自動化,無疑將降低企業(yè)的成本,提高產(chǎn)品的競爭力。
目前,國內(nèi)較為常用的二維線切割CAM軟件有YH型線切割軟件、CAXA、WTCAM,前者只能用于DOS系統(tǒng)中,后兩者目前也支持Windows系統(tǒng),同時后兩者還開發(fā)了專有的CAD模塊,因此能實現(xiàn)較強(qiáng)大的圖形交互CAM過程。而國內(nèi)許多高校也都有針對線切割加工的計算機(jī)輔助制造系統(tǒng)解決方案的研究,如基于Windows操作系統(tǒng),利用Visual C++6.0和OpenGL,開發(fā)了專用的空間曲面電火花線切割CAD/CAM 軟件[3];基于AutoCAD平臺,實現(xiàn)了線切割數(shù)控自動編程[4]。近年來,基于 Linux的線切割加工數(shù)控系統(tǒng)以其優(yōu)越的安全性,圖形界面的友好性,極好的穩(wěn)定性以及開源性,正在贏得越來越多的開發(fā)者和廠商的青睞。隨著該類型數(shù)控系統(tǒng)在加工制造業(yè)中的迅速發(fā)展,相信其在今后一定會迸發(fā)出更為強(qiáng)大的競爭力。而目前尚缺乏與之配套的較為成熟的線切割CAM軟件,本文針對基于Linux的線切割數(shù)控系統(tǒng),設(shè)計開發(fā)了一套圖形交互線切割加工計算機(jī)輔助制造系統(tǒng)解決方案。
本文所介紹的線切割CAM軟件系統(tǒng)的整體結(jié)構(gòu)如圖1所示,主要包括二維圖形數(shù)據(jù)DXF文件接口模塊、CAD圖形矢量化顯示模塊、線切割CAM模塊、ISO格式數(shù)控代碼輸出模塊和軌跡仿真模塊。
圖1 軟件整體結(jié)構(gòu)
該軟件特點:
(1)標(biāo)準(zhǔn)的圖形文件接采用口,自定義開發(fā)的數(shù)據(jù)類,數(shù)據(jù)操作獨立且高效實用。
(2)強(qiáng)大的 Graphics View Framework,提供了完善的CAD圖形矢量化顯示和高效的圖元管理模塊。
(3)針對用戶操作習(xí)慣設(shè)計的人機(jī)交互環(huán)境和更為優(yōu)越的圖元鏈選取及排序算法,為生成符合用戶需求的數(shù)控代碼提供了保證。
(4)能對復(fù)雜的零件,例如上下異形體零件進(jìn)行CAM數(shù)控代碼生成。
(5)針對ISO標(biāo)準(zhǔn)數(shù)控代碼設(shè)計的格式化輸出模塊,保證了輸出代碼的規(guī)范性和數(shù)據(jù)精確性。
(6)界面友好、簡潔,用戶操作簡單。
DXF是Autodesk公司開發(fā)的用于AutoCAD與其他軟件之間進(jìn)行數(shù)據(jù)交換的CAD數(shù)據(jù)文件格式,是一種基于矢量的ASCII文本文件。因為Auto-CAD是最流行的CAD系統(tǒng),所以DXF被廣泛使用,成為事實上的數(shù)據(jù)交換工業(yè)標(biāo)準(zhǔn)。
調(diào)用QFileDialog類的成員函數(shù)getOpen-FileName,用戶可自定義選擇所需加載的DXF文件。通過對AutoCAD二維圖形DXF文件組碼的解析,可獲取文件中各個圖元的實體信息。為了能有效地分離數(shù)據(jù)處理和圖形顯示,保證數(shù)據(jù)處理的高速和準(zhǔn)確,同時方便CAM模塊的設(shè)計開發(fā),基于Qt中Model/View的思想[5],作者開發(fā)了獨立的KData類,用于存儲DXF文件中各圖元的數(shù)據(jù)信息,并實現(xiàn)了多個函數(shù)以對這些數(shù)據(jù)進(jìn)行分析、計算與處理。
由于線切割異形面的CAM涉及到用戶對上下表面的單個圖元的拾取操作,而單純的CAD圖形位圖顯示并不能滿足軟件對這一功能的需求,因此需開發(fā) CAD圖形矢量化顯示模塊?;赒t的Graphics View Framework[6],作者實現(xiàn)了包括KGraphicView,KEntity,KEntityContainer的CAD圖形矢量化顯示模塊。該模塊基于Qt的 Model/View結(jié)構(gòu),實現(xiàn)了對大量圖元的高效管理,同時提供了坐標(biāo)系間矩陣變換、圖元實體與用戶點擊位置間的碰撞檢測等多種功能。
如圖1所示,將KData對象傳遞給KEntity的構(gòu)造函數(shù),建立單個圖元的KEntity對象,與Dennis Crain在Hit Testing Lines and Curves一文中提到的對直線和曲線的鼠標(biāo)選中相比[7],KEntity類提供了更方便的碰撞檢測,以實現(xiàn)用戶對單個圖元實體的鼠標(biāo)點擊選中。另外,在KEntity類中,作者還實現(xiàn)了圖元實體對不同狀態(tài)的響應(yīng)函數(shù)。如:實體被選中時,該圖元的線型和顏色都將發(fā)生改變。KEntityContainer對象用于管理之前創(chuàng)建的各個KEnity對象,在依次添加這些KEntity對象后,它負(fù)責(zé)控制各個圖元的狀態(tài)和相互位置關(guān)系。KGraphicView則是一個顯示窗口部件,負(fù)責(zé)物化顯示KEntity-Container中的各個圖元,同時它還提供了窗口滾動條,方便用戶移動圖形,提供了圖形放大、縮小和旋轉(zhuǎn)的接口,方便用戶查看大小不同的圖形和觀察圖形細(xì)節(jié)。
CAM模塊的基本結(jié)構(gòu)見圖1,由CAM參數(shù)設(shè)置界面、人機(jī)交互環(huán)境、圖元鏈選取及排序算法組成。
在該軟件的參數(shù)設(shè)置界面,用戶可設(shè)置線切割加工的加工方式、電極絲切入方式、切入點和切出點的坐標(biāo)等(圖2)。
圖2 參數(shù)設(shè)置界面
基于多線程技術(shù),作者建立了CAM的人機(jī)交互環(huán)境,由二維線切割加工和上下異形體線切割加工兩部分組成。它能使程序在機(jī)器的提示和用戶的反饋中獲得符合用戶需求的數(shù)控插補(bǔ)軌跡和數(shù)控代碼,該環(huán)境的工作流程如圖3所示。
圖3 人機(jī)交互環(huán)境
由于在使用AutoCAD之類的CAD軟件進(jìn)行機(jī)械制圖時,其DXF文件中保存的圖元數(shù)據(jù)信息都是按設(shè)計人員的制圖順序排列的,因此如果直接由DXF文件生成數(shù)控ISO代碼,可能會生成序列混亂的軌跡和數(shù)控代碼。圖4是按此種方法生成的軌跡與真實軌跡之間的比較,其中圖4a中的軌跡為真實準(zhǔn)確的加工軌跡,圖4b中的軌跡為直接由DXF文件生成的軌跡,很顯然,它在制圖時間連續(xù)但空間不連續(xù)的兩段圖元之間分別生成了3條不符合用戶要求的軌跡。
為避免此現(xiàn)象的出現(xiàn),基于自定義的KData類,作者設(shè)計了該軟件的CAM算法,包括圖元鏈選取算法及圖元排序算法(圖5)。其中data為用戶選中的第一段圖元的數(shù)據(jù)對象,dataVector為所有圖元數(shù)據(jù)對象的集合,sortedData為經(jīng)過排序選擇后的圖元數(shù)據(jù)對象的集合。通過遍歷dataVector中的圖元數(shù)據(jù)對象,并和前一段圖元的數(shù)據(jù)對象進(jìn)行比較,可獲取首尾相連的各段圖元數(shù)據(jù)對象。通過對相鄰的兩個圖元數(shù)據(jù)對象的位置關(guān)系和用戶拾取的切割方向的判斷,可將這些數(shù)據(jù)對象進(jìn)行排序并最終獲得所需數(shù)據(jù)對象鏈表。bool型isEqual(a,b)函數(shù)用于比較兩個data對象是否等同,如等同就返回true,否則返回false。bool型 isNext(a,b)函數(shù)用于比較兩個data對象是否相鄰,如果對象b為對象a緊鄰的下一個圖元對象就返回true,否則返回false。
依據(jù)之前CAM過程生成的sortedData,同時考慮各段圖元起始點的位置關(guān)系,作者利用QString[5]提供的格式化字符串函數(shù)生成了各段圖元的數(shù)控ISO代碼,并通過QFile[5]將各段代碼輸出到.iso文件中。該文件包含了多種基本線切割準(zhǔn)備功能指令:“G00 X Y”直線快速進(jìn)給指令,“G01 X Y”直線插補(bǔ)指令,“G02 X Y I J”順時針圓弧插補(bǔ)指令,“G03 X Y I J”逆時針圓弧插補(bǔ)指令,在此基礎(chǔ)上,作者擴(kuò)展了多種4軸加工指令:“G01 X Y;G01 U V”4軸直線插補(bǔ)指令,“G02 X Y I J;G02 U V I J”4軸順時針圓弧插補(bǔ)指令,“G03 X Y I J;G03 U V I J”4軸逆時針圓弧插補(bǔ)指令,“G01 X Y;G02 U V I J” 、“G01 X Y;G03 U V I J”4 軸上下異形插補(bǔ)指令等。另外,還可擴(kuò)展多種輔助功能指令。如圖6為對一上下異形體的CAM,其中,從原點到方形右下角的直線部分為切入切出軌跡,圓弧部分為上平面加工軌跡,方形部分為下平面加工軌跡。
圖6 數(shù)控ISO代碼格式化輸出及加工軌跡
為了方便用戶檢查最終生成的數(shù)控代碼是否準(zhǔn)確,作者開發(fā)了數(shù)控代碼的軌跡仿真模塊。通過對前面生成的數(shù)控加工代碼的解釋,計算機(jī)根據(jù)各段加工代碼生成相應(yīng)軌跡,并依次在圖形窗口中顯示(圖 7)。
圖7 數(shù)控代碼的軌跡仿真
本文立足于對國內(nèi)線切割數(shù)控系統(tǒng)發(fā)展的展望,以性能優(yōu)良、價格低廉為目標(biāo),開發(fā)了一套基于Linux操作系統(tǒng)的圖形交互線切割CAM軟件。由于該軟件開發(fā)了基于通用二維CAD圖形交換的DXF文件接口模塊,所以該軟件的使用并不受限于用戶所使用的CAD軟件,這樣可增強(qiáng)該軟件的獨立性和可移植性。
[1]國產(chǎn)三維CAD/CAM 技術(shù)研討會在京舉行——開發(fā)核心基礎(chǔ)軟件,支持制造業(yè)創(chuàng)新發(fā)展[J].中國制造業(yè)信息化,2009(5):35-35.
[2]郭艷玲,趙萬生.用二維編程實現(xiàn)線切割機(jī)床的三維型面加工[J].大連理工大學(xué)學(xué)報,2001,41(3):325-329.
[3]任福君,姜永成.空間曲面電火花線切割CAD/CAM 系統(tǒng)[J].機(jī)械工程學(xué)報,2007,43(5):214-218.
[4]章勇,谷安,項甫根.基于DXF文件的低速走絲線切割加工自動編程系統(tǒng)的開發(fā)[J].電加工與模具,2007(5):9-11.
[5]Blanchette J,Summerfield M.C++GUI programming with Qt4[M].Prentice Hall,2006.
[6]Troll Tech.Qt Reference Documentation:The Graphics View Framework.2007.
[7]Crain D.Hit testing lines and curves.http://msdn.microsoft.com/en-us/library/ms969920.aspx.1994.02.