劉紀凱,趙慶志,張興武,梁奉興,張林華
(1.山東理工大學 機械工程學院,山東 淄博 255049;2.辰欣藥業股份有限公司,山東 濟寧 272100;3.山東新華醫療器械股份有限公司,山東 淄博 255000)
Abstract: In order to make the general NC machine process the workpieces which are represented by difference interpolation NC code, a method for the high-precision approximation curve using multi-segment micro line is studied based on angle dichotomy.This method overcame the shortcomings of the great calculation difficulty of equal error method and the overdense curve nodes of equal space method. Through the test of OpenGL viewport graphic simulation and machining experiments, this method achieved the conversion from the differential interpolation of NC code into ordinary NC code, and the program is running stable and reliable with friendly interface easy to use, and obtained the ideal processing effect.
Keywords:the method of angle dichotomy; the differential interpolation; the transformation of the NC code; approximation error; OpenGL
現行數控機床插補器廣泛采用逐點比較法、數字積分法(DDA)、最小偏差法、數據采樣法等[1-6],加工圖元以直線和圓弧為主.而特殊插補理論,如差分插補理論[7],不僅有直線、圓弧,還有圓錐曲線族(橢圓、拋物線、雙曲線)加工圖元和其他加工圖元等.因此,普通數控機床無法完全識別特殊插補理論的數控加工代碼,也就無法完成工件的加工.在現有數控裝備條件下,只有通過代碼之間的轉換才能加工特殊代碼表示的工件,而通過手工編程又無法實現高精度的加工,鑒于此情況,以差分插補數控加工代碼為例研究了特殊數控加工代碼向普通數控加工代碼的轉換.
由于現行數控機床識別直線(G00/G01)、圓弧(G02/G03)代碼,所以要將差分插補數控加工代碼轉換為直線、圓弧代碼.對差分插補代碼中的直線、圓弧代碼不需做處理,橢圓、拋物線、雙曲線代碼的處理流程如圖1所示.

圖1 代碼轉換流程圖Fig.1 Code conversion flow chart
在滿足給定精度要求前提下,為減少計算量、提高代碼轉換速度,采用多段微線段(直線)逼近曲線.直線逼近曲線的主要方法有等誤差法和等間距法.由于涉及二次曲線,所以采用等誤差法存在較大的計算難度,會影響計算速度與精度[8];采用等間距法會導致曲線上節點過于密集,從而使所產生的直線數控加工代碼量增大[9].
由于圓錐曲線方程可以轉換為以角度為參變量的參數方程,為克服等誤差法與等間距法存在的缺點,提出了一種基于角度二分理論的多段微線段逼近曲線的誤差模型.


圖2 逼近誤差模型Fig.2 Approximation error model

圖3 基于角度二分法的微線段逼近曲線流程圖Fig.3 Flow chart of micro line approaching curve based on angle dichotomy
根據上述誤差模型實現多段微線段逼近圓錐曲線,以達到差分插補NC代碼向普通NC代碼(直線或圓弧)轉換之目的.設定所允許最大逼近誤差δ為0.001mm,由于現行機床識別圓弧代碼,這里只討論橢圓、拋物線和雙曲線代碼.
2.2.1 誤差模型在橢圓中的應用
以代碼G91 G05 X-10 Y-10 I-5 J-5 A10 B5.7735為例進行說明.A表示橢圓在X方向上的軸長度,B表示在Y方向上的軸長度,(I,J)為橢圓中心相對弧起點的位置,(X,Y)為弧終點相對起點的位置[7].由于橢圓參數方程為

(1)
所以可由代碼數據得到橢圓方程

(2)


圖4 誤差模型在橢圓中的應用Fig. 4 Application of error model in ellipse
2.2.2 誤差模型在拋物線中的應用
以代碼G91 G07 X15 Y15 I-5 J5 K0為例進行說明.由文獻[7]可知,K=0表示拋物線對稱軸平行于X軸,(I,J)為拋物線頂點相對弧起點的位置,(X,Y)為弧終點相對起點的位置.由于對稱軸平行于X軸的拋物線參數方程為
(3)
所以可由代碼數據得到拋物線方程
(4)


圖5 誤差模型在拋物線中的應用Fig. 5 Application of error model in parabola
2.2.3 誤差模型在雙曲線中的應用
以代碼G91 G9 X15 Y17.64911 I-5 J5 A10 K0為例進行說明.由文獻[7]可知,K=0表示雙曲線實對稱軸平行于X軸,A為實半軸的長度,(I,J)為雙曲線頂點相對弧起點的位置,(X,Y)為弧終點相對起點的位置.由于實對稱軸平行于X軸的雙曲線參數方程為
如圖6所示,以實半軸長度a為半徑,以雙曲線對稱中心O為圓點作圓C0,雙曲線上的點Pend向實對稱軸作垂線,過垂足Pe″作圓C0的切線(切點Pe′在雙曲線對稱中心O與雙曲線上的點Pend之間),θ為Pe′O與實對稱軸之間的夾角(逆時針方向).

圖6 誤差模型在雙曲線中的應用Fig. 6 Application of error model in hyperbola
由代碼數據得到雙曲線方程
(5)

為直觀觀察代碼轉換是否正確,減少不必要的工件浪費、時間浪費,節約成本,在VC++6.0下搭建三維OpenGL視口,實現圖形平移、縮放、3D漫游瀏覽[10].由于OpenGL只提供直線顯示的庫函數,所以對OpenGL下的圓弧顯示做如下研究.
由于OpenGL函數庫中無圓弧函數,所以需要自定義函數來實現圓弧的圖形顯示.為適應數控加工代碼,定義兩個函數分別為順圓弧(ShunArc(double m_X0, double m_Y0, double m_X1, double m_Y1, double m_Z,double m_I, double m_J))和逆圓弧(NiArc(double m_X0, double m_Y0, double m_X1, double m_Y1, double m_Z,double m_I, double m_J)),入口參數為圓弧起點、圓弧終點、當前Z坐標值和圓心相對起點的坐標值.
for(θ=θstart; θ>=θend; )
{glBegin(GL_LINES);
glVertex3f(Xc+ r*cos(θ),Yc+ r*sin(θ),m_Z);
θ=θ-Δθ;
glVertex3f(Xc+ r*cos(θ),Yc+ r*sin(θ),m_Z);
glEnd();}

圖7 OpenGL中順圓弧圖形顯示Fig.7 The clockwise circular graphics in the OpenGL viewport display
差分插補NC代碼向普通NC代碼轉換的具體操作流程如圖8所示.

圖8 差分插補源代碼Fig.8 Source codes of differential interpolation
1)打開代碼轉換設置界面(圖9),點擊載入“差分插補代碼”按鈕,打開代碼文件裝入代碼或按照界面上差分插補代碼格式寫入數控加工代碼,擬合模式選擇直線,允許最大誤差為0.001mm,代碼格式選擇絕對坐標,點擊“設置完成”退出設置界面.
2)點擊圖10中的“數據準備”按鈕,進行代碼轉換的相關數據計算.

圖9 代碼轉換程序設置界面Fig.9 Codes conversion program settings interface

圖10 圖形模擬Fig.10 Graphic simulation
3) 當提示數據準備完成時,點擊“圖形模擬”按鈕,生成模擬圖,并進行檢查,若錯誤則分析程序生成的中間過渡數據,找出錯誤并改正.
4) 若3)中圖形無誤,則點擊“刀路模擬”按鈕,生成刀路圖11,檢查刀路是否正確,若不正確檢查刀路數據文件.
5) 若4)中刀路無誤,點擊“獲取代碼”按鈕,獲取目標數控加工代碼,當提示獲取完成時,點擊“保存代碼”按鈕,選擇存儲路徑并保存代碼.

圖11 刀路模擬Fig.11 Tool path simulation

圖12 目標數控加工代碼截圖Fig.12 Target NC machining code screenshot
獲取了圖12所示的1792行代碼后,將獲取的數控加工代碼載入數控機床中在PVC板材上進行加工,加工現場、加工進行中、加工完成圖如圖13~圖16所示.

圖13 加工現場圖Fig.13 Machining site picture

圖14 數控機床對目標數控代碼執行中Fig.14 NC machine tool for target NC code execution

圖15 加工完成圖Fig.15 Processing complete picture

圖16 局部放大圖Fig.16 Partial enlarged picture
在能夠識別差分插補代碼的機床上對圖8所示差分插補代碼進行了直接加工,圖17為代碼仿真圖, 圖18為加工完成圖,圖19為局部放大圖.

圖17 差分代碼仿真圖Fig.17 Difference code emulation picture

圖18 加工完成圖Fig.18 Processing complete picture

圖19 局部放大圖Fig.19 Partial enlarged picture
由4.2試驗(試驗結果為圖15和圖16)和4.3差分插補代碼加工實驗(實驗結果為圖18和圖19)對比可知,轉換后的代碼正確無誤,通過加工得到了預期的圖形,且放大后曲線輪廓光滑無折線感.證明了基于角度二分法的多段微線段逼近曲線方法正確無誤、精度高.對連續多段代碼的正確處理顯示了該算法的魯棒性非常好,達到了預期的效果.
本文研究了一種基于角度二分法的多段微線段高精度逼近曲線的方法,該方法采用誤差約束,充分發揮了參數方程的特點和角度二分法搜索適當節點的優勢.加工實例驗證表明,該方法成功實現了對差分插補數控加工代碼的轉化,程序界面友好,運行穩定、可靠,獲得了良好的加工效果.
[1]李恩林.插補原理[M].北京:機械工業出版社,1984.
[2]孔逸敏.綜合數控實驗系統的研究與開發[D].南京:南京師范大學,2013.
[3]梁靜.數控機床插補技術的研究[D].沈陽:沈陽工業大學,2007.
[4]范希營, 郭永環, 何成文,等.數控系統中數字積分插補的研究方向[J].機床與液壓, 2012, 40(11): 146-148.
[5]羅華安, 李新華.基于Matlab/GUI的數據采樣插補仿真研究[J].信息技術, 2013 (10): 77-80.
[6]李騰飛, 凌有鑄, 劉敬猛.基于最小偏差法插補技術的FPGA設計與實現[J].重慶理工大學學報(自然科學版), 2013, 27(5): 90-93.
[7]趙慶志.基于可重構理論的慢走絲線切割機床控制系統研究與設計[D].南京:南京航空航天大學,2004.
[8]趙玉剛, 于光偉, 張健, 等.曲線等誤差直線擬合的算法研究及其應用[J].制造技術與機床, 2010(6): 171-174.
[9]倪春杰, 姚振強, 張立文.用等間距法直線逼近非圓曲線[J].機械設計與研究, 2010, 26(5): 17-19.
[10]劉紀凱,趙慶志,張林華,等.斜面矢量漢字CAD/CAM 研究與應用[J].圖學學報, 2016, 37(3): 400-404.