劉紀(jì)凱,趙慶志,張興武,梁奉興,張林華
(1.山東理工大學(xué) 機(jī)械工程學(xué)院,山東 淄博 255049;2.辰欣藥業(yè)股份有限公司,山東 濟(jì)寧 272100;3.山東新華醫(yī)療器械股份有限公司,山東 淄博 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
現(xiàn)行數(shù)控機(jī)床插補(bǔ)器廣泛采用逐點(diǎn)比較法、數(shù)字積分法(DDA)、最小偏差法、數(shù)據(jù)采樣法等[1-6],加工圖元以直線和圓弧為主.而特殊插補(bǔ)理論,如差分插補(bǔ)理論[7],不僅有直線、圓弧,還有圓錐曲線族(橢圓、拋物線、雙曲線)加工圖元和其他加工圖元等.因此,普通數(shù)控機(jī)床無(wú)法完全識(shí)別特殊插補(bǔ)理論的數(shù)控加工代碼,也就無(wú)法完成工件的加工.在現(xiàn)有數(shù)控裝備條件下,只有通過(guò)代碼之間的轉(zhuǎn)換才能加工特殊代碼表示的工件,而通過(guò)手工編程又無(wú)法實(shí)現(xiàn)高精度的加工,鑒于此情況,以差分插補(bǔ)數(shù)控加工代碼為例研究了特殊數(shù)控加工代碼向普通數(shù)控加工代碼的轉(zhuǎn)換.
由于現(xiàn)行數(shù)控機(jī)床識(shí)別直線(G00/G01)、圓弧(G02/G03)代碼,所以要將差分插補(bǔ)數(shù)控加工代碼轉(zhuǎn)換為直線、圓弧代碼.對(duì)差分插補(bǔ)代碼中的直線、圓弧代碼不需做處理,橢圓、拋物線、雙曲線代碼的處理流程如圖1所示.
圖1 代碼轉(zhuǎn)換流程圖Fig.1 Code conversion flow chart
在滿足給定精度要求前提下,為減少計(jì)算量、提高代碼轉(zhuǎn)換速度,采用多段微線段(直線)逼近曲線.直線逼近曲線的主要方法有等誤差法和等間距法.由于涉及二次曲線,所以采用等誤差法存在較大的計(jì)算難度,會(huì)影響計(jì)算速度與精度[8];采用等間距法會(huì)導(dǎo)致曲線上節(jié)點(diǎn)過(guò)于密集,從而使所產(chǎn)生的直線數(shù)控加工代碼量增大[9].
由于圓錐曲線方程可以轉(zhuǎn)換為以角度為參變量的參數(shù)方程,為克服等誤差法與等間距法存在的缺點(diǎn),提出了一種基于角度二分理論的多段微線段逼近曲線的誤差模型.
圖2 逼近誤差模型Fig.2 Approximation error model
圖3 基于角度二分法的微線段逼近曲線流程圖Fig.3 Flow chart of micro line approaching curve based on angle dichotomy
根據(jù)上述誤差模型實(shí)現(xiàn)多段微線段逼近圓錐曲線,以達(dá)到差分插補(bǔ)NC代碼向普通NC代碼(直線或圓弧)轉(zhuǎn)換之目的.設(shè)定所允許最大逼近誤差δ為0.001mm,由于現(xiàn)行機(jī)床識(shí)別圓弧代碼,這里只討論橢圓、拋物線和雙曲線代碼.
2.2.1 誤差模型在橢圓中的應(yīng)用
以代碼G91 G05 X-10 Y-10 I-5 J-5 A10 B5.7735為例進(jìn)行說(shuō)明.A表示橢圓在X方向上的軸長(zhǎng)度,B表示在Y方向上的軸長(zhǎng)度,(I,J)為橢圓中心相對(duì)弧起點(diǎn)的位置,(X,Y)為弧終點(diǎn)相對(duì)起點(diǎn)的位置[7].由于橢圓參數(shù)方程為
(1)
所以可由代碼數(shù)據(jù)得到橢圓方程
(2)
圖4 誤差模型在橢圓中的應(yīng)用Fig. 4 Application of error model in ellipse
2.2.2 誤差模型在拋物線中的應(yīng)用
以代碼G91 G07 X15 Y15 I-5 J5 K0為例進(jìn)行說(shuō)明.由文獻(xiàn)[7]可知,K=0表示拋物線對(duì)稱軸平行于X軸,(I,J)為拋物線頂點(diǎn)相對(duì)弧起點(diǎn)的位置,(X,Y)為弧終點(diǎn)相對(duì)起點(diǎn)的位置.由于對(duì)稱軸平行于X軸的拋物線參數(shù)方程為
(3)
所以可由代碼數(shù)據(jù)得到拋物線方程
(4)
圖5 誤差模型在拋物線中的應(yīng)用Fig. 5 Application of error model in parabola
2.2.3 誤差模型在雙曲線中的應(yīng)用
以代碼G91 G9 X15 Y17.64911 I-5 J5 A10 K0為例進(jìn)行說(shuō)明.由文獻(xiàn)[7]可知,K=0表示雙曲線實(shí)對(duì)稱軸平行于X軸,A為實(shí)半軸的長(zhǎng)度,(I,J)為雙曲線頂點(diǎn)相對(duì)弧起點(diǎn)的位置,(X,Y)為弧終點(diǎn)相對(duì)起點(diǎn)的位置.由于實(shí)對(duì)稱軸平行于X軸的雙曲線參數(shù)方程為
如圖6所示,以實(shí)半軸長(zhǎng)度a為半徑,以雙曲線對(duì)稱中心O為圓點(diǎn)作圓C0,雙曲線上的點(diǎn)Pend向?qū)崒?duì)稱軸作垂線,過(guò)垂足Pe″作圓C0的切線(切點(diǎn)Pe′在雙曲線對(duì)稱中心O與雙曲線上的點(diǎn)Pend之間),θ為Pe′O與實(shí)對(duì)稱軸之間的夾角(逆時(shí)針?lè)较?.
圖6 誤差模型在雙曲線中的應(yīng)用Fig. 6 Application of error model in hyperbola
由代碼數(shù)據(jù)得到雙曲線方程
(5)
為直觀觀察代碼轉(zhuǎn)換是否正確,減少不必要的工件浪費(fèi)、時(shí)間浪費(fèi),節(jié)約成本,在VC++6.0下搭建三維OpenGL視口,實(shí)現(xiàn)圖形平移、縮放、3D漫游瀏覽[10].由于OpenGL只提供直線顯示的庫(kù)函數(shù),所以對(duì)OpenGL下的圓弧顯示做如下研究.
由于OpenGL函數(shù)庫(kù)中無(wú)圓弧函數(shù),所以需要自定義函數(shù)來(lái)實(shí)現(xiàn)圓弧的圖形顯示.為適應(yīng)數(shù)控加工代碼,定義兩個(gè)函數(shù)分別為順圓弧(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)),入口參數(shù)為圓弧起點(diǎn)、圓弧終點(diǎn)、當(dāng)前Z坐標(biāo)值和圓心相對(duì)起點(diǎn)的坐標(biāo)值.
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
差分插補(bǔ)NC代碼向普通NC代碼轉(zhuǎn)換的具體操作流程如圖8所示.
圖8 差分插補(bǔ)源代碼Fig.8 Source codes of differential interpolation
1)打開代碼轉(zhuǎn)換設(shè)置界面(圖9),點(diǎn)擊載入“差分插補(bǔ)代碼”按鈕,打開代碼文件裝入代碼或按照界面上差分插補(bǔ)代碼格式寫入數(shù)控加工代碼,擬合模式選擇直線,允許最大誤差為0.001mm,代碼格式選擇絕對(duì)坐標(biāo),點(diǎn)擊“設(shè)置完成”退出設(shè)置界面.
2)點(diǎn)擊圖10中的“數(shù)據(jù)準(zhǔn)備”按鈕,進(jìn)行代碼轉(zhuǎn)換的相關(guān)數(shù)據(jù)計(jì)算.
圖9 代碼轉(zhuǎn)換程序設(shè)置界面Fig.9 Codes conversion program settings interface
圖10 圖形模擬Fig.10 Graphic simulation
3) 當(dāng)提示數(shù)據(jù)準(zhǔn)備完成時(shí),點(diǎn)擊“圖形模擬”按鈕,生成模擬圖,并進(jìn)行檢查,若錯(cuò)誤則分析程序生成的中間過(guò)渡數(shù)據(jù),找出錯(cuò)誤并改正.
4) 若3)中圖形無(wú)誤,則點(diǎn)擊“刀路模擬”按鈕,生成刀路圖11,檢查刀路是否正確,若不正確檢查刀路數(shù)據(jù)文件.
5) 若4)中刀路無(wú)誤,點(diǎn)擊“獲取代碼”按鈕,獲取目標(biāo)數(shù)控加工代碼,當(dāng)提示獲取完成時(shí),點(diǎn)擊“保存代碼”按鈕,選擇存儲(chǔ)路徑并保存代碼.
圖11 刀路模擬Fig.11 Tool path simulation
圖12 目標(biāo)數(shù)控加工代碼截圖Fig.12 Target NC machining code screenshot
獲取了圖12所示的1792行代碼后,將獲取的數(shù)控加工代碼載入數(shù)控機(jī)床中在PVC板材上進(jìn)行加工,加工現(xiàn)場(chǎng)、加工進(jìn)行中、加工完成圖如圖13~圖16所示.
圖13 加工現(xiàn)場(chǎng)圖Fig.13 Machining site picture
圖14 數(shù)控機(jī)床對(duì)目標(biāo)數(shù)控代碼執(zhí)行中Fig.14 NC machine tool for target NC code execution
圖15 加工完成圖Fig.15 Processing complete picture
圖16 局部放大圖Fig.16 Partial enlarged picture
在能夠識(shí)別差分插補(bǔ)代碼的機(jī)床上對(duì)圖8所示差分插補(bǔ)代碼進(jìn)行了直接加工,圖17為代碼仿真圖, 圖18為加工完成圖,圖19為局部放大圖.
圖17 差分代碼仿真圖Fig.17 Difference code emulation picture
圖18 加工完成圖Fig.18 Processing complete picture
圖19 局部放大圖Fig.19 Partial enlarged picture
由4.2試驗(yàn)(試驗(yàn)結(jié)果為圖15和圖16)和4.3差分插補(bǔ)代碼加工實(shí)驗(yàn)(實(shí)驗(yàn)結(jié)果為圖18和圖19)對(duì)比可知,轉(zhuǎn)換后的代碼正確無(wú)誤,通過(guò)加工得到了預(yù)期的圖形,且放大后曲線輪廓光滑無(wú)折線感.證明了基于角度二分法的多段微線段逼近曲線方法正確無(wú)誤、精度高.對(duì)連續(xù)多段代碼的正確處理顯示了該算法的魯棒性非常好,達(dá)到了預(yù)期的效果.
本文研究了一種基于角度二分法的多段微線段高精度逼近曲線的方法,該方法采用誤差約束,充分發(fā)揮了參數(shù)方程的特點(diǎn)和角度二分法搜索適當(dāng)節(jié)點(diǎn)的優(yōu)勢(shì).加工實(shí)例驗(yàn)證表明,該方法成功實(shí)現(xiàn)了對(duì)差分插補(bǔ)數(shù)控加工代碼的轉(zhuǎn)化,程序界面友好,運(yùn)行穩(wěn)定、可靠,獲得了良好的加工效果.
[1]李恩林.插補(bǔ)原理[M].北京:機(jī)械工業(yè)出版社,1984.
[2]孔逸敏.綜合數(shù)控實(shí)驗(yàn)系統(tǒng)的研究與開發(fā)[D].南京:南京師范大學(xué),2013.
[3]梁靜.數(shù)控機(jī)床插補(bǔ)技術(shù)的研究[D].沈陽(yáng):沈陽(yáng)工業(yè)大學(xué),2007.
[4]范希營(yíng), 郭永環(huán), 何成文,等.數(shù)控系統(tǒng)中數(shù)字積分插補(bǔ)的研究方向[J].機(jī)床與液壓, 2012, 40(11): 146-148.
[5]羅華安, 李新華.基于Matlab/GUI的數(shù)據(jù)采樣插補(bǔ)仿真研究[J].信息技術(shù), 2013 (10): 77-80.
[6]李騰飛, 凌有鑄, 劉敬猛.基于最小偏差法插補(bǔ)技術(shù)的FPGA設(shè)計(jì)與實(shí)現(xiàn)[J].重慶理工大學(xué)學(xué)報(bào)(自然科學(xué)版), 2013, 27(5): 90-93.
[7]趙慶志.基于可重構(gòu)理論的慢走絲線切割機(jī)床控制系統(tǒng)研究與設(shè)計(jì)[D].南京:南京航空航天大學(xué),2004.
[8]趙玉剛, 于光偉, 張健, 等.曲線等誤差直線擬合的算法研究及其應(yīng)用[J].制造技術(shù)與機(jī)床, 2010(6): 171-174.
[9]倪春杰, 姚振強(qiáng), 張立文.用等間距法直線逼近非圓曲線[J].機(jī)械設(shè)計(jì)與研究, 2010, 26(5): 17-19.
[10]劉紀(jì)凱,趙慶志,張林華,等.斜面矢量漢字CAD/CAM 研究與應(yīng)用[J].圖學(xué)學(xué)報(bào), 2016, 37(3): 400-404.