楊澤林 馬 凱 呂 靜
(寧夏大學物理電氣信息學院,寧夏 銀川 750021)
現有的基于可編程多軸運動控制卡(programmable multi-axis controller,PMAC)開發實現的數控系統,都是在離線狀態下人工調試計算機數控(computer numerical control,CNC)代碼后保存在計算機的外存儲器。在進行加工時,需人工將控制程序調入內存再執行加工。這種方式在數控系統加工的工件類型較多時,對操作人員的要求就比較高,且人工調試CNC代碼較為繁瑣。
如何利用AutoCAD系統提供的對儲存在DXF文件中的圖形信息進行數控加工過程的實時監控和自動生成數控代碼,是當前數控領域研究的熱點,也是目前研究的目標。由于AutoCAD提供了圖形交換格式(drawing exchange format,DXF)文件與外界程序的接口方法[1],因此,為了實現對多種加工零件的實時監控,首先應將由AutoCAD所提供的零件信息讀入數據庫中,然后根據所讀入的參數在實時監控系統中顯示出零件的外形加工輪廓。為此需要設計擬合算法,以便在橢圓(弧)曲線擬合插補時滿足數控加工的工藝需求[2]。本文就DXF文件所能提供的橢圓(弧)曲線的相關信息作簡要說明。
DXF是具有規范格式的ASCII碼文本文件,易被其他程序處理,而且保存了CAD圖形的精確數據。因此,可以通過編制高級語言設計接口程序來提取相關圖形數據,實現CAD圖形與計算機輔助制造(computer aided manufacturing,CAM)加工代碼之間的轉換,并結合相關數控工藝知識,生成CAM加工程序。DXF文件的特點和優勢為CAD/CAM接口程序的開發提供了有利條件。
利用高級語言編寫接口程序,必須首先了解文件的結構[3]。DXF數據文件包含設計過程的所有圖形和非圖形信息。一個完整的DXF文件必須包括標題段(HEADER)、類段(CLASSES)、表段(TABLES)、塊段(BLOCKS)、實體段(ENTITIES)和文件結束標志(EOF)。
DXF文件各組成部分具體介紹如下。
①標題段(HEADER):它包含與本文件所繪制的圖形的基本信息,其中包括了AutoCAD數據庫的版本號、存盤時的各種設置以及許多系統變量。
②類段(CLASSES):它包含所有應用程序定義的類的信息。它包括的大部分信息對非CAD應用程序來說沒有任何價值。
③表段(TABLES):它包含了四個表,每個表又包含可變數目的表項。按照這些表在文件中出現的順序,它們依次為線型表、圖層表、字樣表和視圖表。TABLES段與HEADER段一樣,有時也可以忽略。
④塊段(BLOCKS):它記錄和定義每一塊段的塊名、當前圖層名、塊的種類、塊的插入基點及組成該塊的所有成員。目前,它還沒有得到廣泛使用,但由于它允許繪圖的模塊化操作,所以現在的應用越來越廣泛。
⑤ 實體段(ENTITIES):它通過使用點、線、圓、弧等定義實際的三維或二維幾何體(實體),記錄了每個幾何實體段的名稱、所在圖層的名稱、線型名、顏色號、基面高度、厚度以及有關幾何數據。它是實體交換的主要段。
⑥文件結束(EOF):它標志了文件結束。
文件中每個數據元素前面都帶有一個稱為組碼的整數,組碼的值表明了其后數據元素的類型。相應的一系列組碼和組值構成了DXF文件中的段(SECTION),每一個段都以一個組碼為0、組值為字符串SECTION的組對開始,其后再緊跟組碼為2和表示各段名稱的字符串(如HEADER、ENTITIES等)。
每個段中相應的組碼和組值定義了相應的DXF段,而每個段都以組碼為0和字符串為ENDSEC的組值構成的代碼對結束。這些組碼和組值組織成的各段便組成了DXF文件。
橢圓(弧)曲線在DXF文件實體段中是以“AcD-bEllipse”開始標記。在圖元實體模塊中,橢圓(弧)曲線的實體信息如表1所示。

表1 橢圓(弧)曲線實體信息Tab.1 The substantive information of ellipse(arc)curve
由上述分析可知,基于PMAC卡的開放式數控系統將由DXF文件讀取的圖元實體信息存儲于數據庫中,以便利用數據庫中的圖元信息自動生成CNC代碼[4-5],并依據生成的CNC代碼實現在線實時監控并加工。
橢圓(弧)曲線的加工實際上是直線擬合曲線的加工[6],即橢圓(弧)曲線的 CNC代碼實際上是直線CNC代碼的組合[7];而在工控機中,對于橢圓(弧)曲線的繪制是利用計算機輔助幾何設計的數學知識采用畫直線模擬曲線的方法。總之,橢圓(弧)曲線擬合算法的根本思想是利用連續的多條直線來擬合曲線[8]。所以,通過連續的多條直線正確地擬合出曲線便成為生成橢圓(弧)曲線的CNC代碼與實現橢圓(弧)曲線加工實時監控的關鍵。
橢圓(弧)曲線擬合的基本思想是以弦進給代替弧進給[9]。第一象限內橢圓(弧)逆時針擬合插補如圖1所示。

圖1 橢圓(弧)逆時針擬合插補示意圖Fig.1 Schematic drawing of ellipse(arc)anti-clockwise fitting interpolation
依據橢圓(弧)逆時針擬合插補示意圖,結合橢圓(弧)曲線的參數方程,根據最小擬合誤差給定的要求值,可依次確定各擬合點的坐標值。
橢圓(弧)方程的一般形式可表示為:

由于橢圓(弧)在數控系統中無法直接識別,因此,必須將其分解為直線或圓弧。
根據橢圓(弧)參數方程,其長、短軸分別為a、b(a≥b)。設起始角和終止角分別為α、β(0≤α<β≤2π),擬合誤差為 δ,起點坐標 P0(a cosα,b sinα)為本次插補點,求下次插補點 P1(a cosθ1,b sinθ1),以此來生成一條滿足擬合誤差要求的逼近線段P0P1,并以弦長P0P1代替弧長P0P1,則有:

式中:VFeed為擬合插補時的切削進給速度,mm/s;Ti為插補采樣時間,s。
設直線方程為y=kx+B,則直線P0P1的斜率為:

同時,作弦P0P1的平行線切橢圓弧于Q點,則得橢圓上任意一點 Qi(a cosθi,b sinθi)處的斜率為:

設與直線P0P1平行,切橢圓(弧)于點P(θi)的直線為 l,其中 α≤θi≤β。比較式(4)、式(6),由于在切點處兩斜率相等,因此,可得:

當l到P0P1的距離小于擬合誤差δ時,滿足逼近要求,由此可得到不等式:

將式(4)、式(5)代入式(8),化簡后得到:

直接解不等式(9)便可求出θ1,即求出點P1。
為了進一步化簡式(9),對其左邊采用放縮法化簡,可得:

一般情況下,δ<a,0<θ1-α <π,解不等式(10),可得:

由式(11)可求出下一個逼近點的參數坐標。依次類推,可以得到整個橢圓(弧)的線段擬合的參數坐標值。
需要說明的是,上述算法中,由于弦長P0P1近似等于弧長P0P1,因此,每次插補實際進給的輪廓步長不等于VFeed×Ti,但它們之間相差非常小,在實際切削過程中,完全可以認為輪廓步長保持恒定,即切削進給速度保持恒定。
無論是橢圓(弧)曲線的CNC代碼的自動生成,還是用于實時監控的圖形繪制,其基礎都是運用上述擬合算法[10]。
本文以Visual C++6.0為前臺開發工具,利用MFC的框架設計思想,在相應的DOC類下建立以下橢圓(弧)曲線擬合函數。

針對橢圓(弧)順時針和逆時針這兩種插補方向,我們可以得出以下兩個橢圓(弧)擬合插補通用公式。
當Start_Angle<End_Angle,即橢圓(弧)按逆時針方向擬合插補時,有:

式中:ΔA為滿足擬合誤差Δ的角度增量,且ΔA=2×(float)a cos(1-Δ/a)。
同理,當 End_Angle<Start_Angle,即橢圓(弧)按順時針方向擬合插補時,有:

可以看出,運用式(12)、式(13)進行插補計算,不必進行過象限判別,就可實現插補點自動過象限,從而避免了過象限時由于插補公式切換不及時而引起加工點表面粗糙度變大的現象。
利用AutoCAD和上述方法繪制的典型橢圓(弧)曲線如圖2所示。

圖2 典型橢圓(弧)曲線Fig.2 The typical ellipse(arc)curves
從圖2可以看出,兩者是一致的。如果從PMAC卡中讀取出橢圓(弧)曲線的加工信息,則可以完成實時監控。這也說明了利用上述算法,通過直線模擬曲線生成的 CNC代碼可以完成橢圓(弧)曲線的加工[11-12]。
同時,利用上述擬合算法,在相應的圖形文件夾中生成一個名為nc_code.gc的文件。該文件為文本文件,通過記事本或者文本處理軟件均可以打開,可以查看生成的CNC代碼。
本文針對實際應用的需要,通過讀取DXF文件獲取了AutoCAD中橢圓(弧)曲線的幾何信息,提取出了橢圓(弧)曲線在數據庫中存儲的表結構;利用由連續的多條直線擬合曲線的設計思想,實現了小線段擬合插補算法,并通過Visual C++6.0重新繪制。由于此算法在設計過程中采用了插補點自動過象限的設計思路,因此,在實際加工過程中,從根本上避免了過象限時由于插補公式切換不及時而引起加工點表面粗糙度變大的現象,為以PMAC卡為基礎的開放式數控系統的動態在線監視系統和加工代碼的研發奠定了基礎。
[1]于杰,王懷明.基于DXF文件的CAD/CAM接口程序開發與應用[J].制造業自動化,2008,30(7):79 -81.
[2]王亮德,馬金河.數控加工圖形輪廓與曲面的數學處理[J].機床與液壓,2008,36(8):74 -76.
[3]余承飛,方勇.AutoCAD 2000二次開發技術[M].北京:人民郵電出版社,1999.
[4]Cogun C.NC parts programs generation from CAD exchange files[J].Computer in Industry,1992,20(2):193 -202.
[5]Ulker E,Turanalp M E,Halkaci H S.An artificial immune system approach to CNC tool path generation[J].Journal of Intelligent Manufacturing,2009,20(1):67 -77.
[6]冉樹成,曲長虹,劉義翔.數控系統中橢圓插補功能的研究與實現[J].組合機床與自動化加工技術,1995(5):18-24.
[7]曹斌,李光耀,李啟炎.基于DXF文件格式的二維復雜圖形數控代碼自動生成法[J].機械設計與制造,2003,6(3):30 -32.
[8]陽濤.數控車床加工橢圓的方法探討[J].機電工程技術,2008,37(9):20-21.
[9]Piegl L.Curve fitting algorithm for rough cutting[J].Computeraided Design,1986,18(2):79 -82.
[10]郭景峰,潘曉,吳雷.基于DXF文件的曲線擬合方法的設計與實現[J].機床與液壓,2006(11):210 -213.
[11]夏斌,王偉,黃學良,等.橢圓弧數控代碼的自動生成方法[J].組合機床與自動化加工技術,2007(5):67-70.
[12]羅先全,黃學良,王偉,等.基于PMAC卡數控的G代碼自動生成[J].現代制造工程,2007(7):14-16.