董立巖, 張 亮, 田 耕, 辛?xí)匀A, 李永麗, 孫 鵬, 尹相杰
(1. 吉林大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 長(zhǎng)春 130012; 2. 東北師范大學(xué) 計(jì)算機(jī)科學(xué)與信息技術(shù)學(xué)院, 長(zhǎng)春 130117)
在數(shù)控加工過(guò)程中, 數(shù)控系統(tǒng)的實(shí)際控制對(duì)象是刀具中心, 數(shù)控系統(tǒng)通過(guò)直接控制刀具中心的運(yùn)動(dòng)軌跡, 間接地實(shí)現(xiàn)對(duì)實(shí)際零件的輪廓加工。由于刀具半徑的存在, 刀具的運(yùn)動(dòng)軌跡并不等同于所需加工零件的實(shí)際輪廓[1,2]。因此, 編程人員需根據(jù)零件輪廓并結(jié)合刀具半徑重新計(jì)算編程軌跡, 這種計(jì)算過(guò)程稱為刀具補(bǔ)償[3]。如果數(shù)控機(jī)床具備刀具自動(dòng)補(bǔ)償?shù)墓δ? 編程人員只需按照工件的輪廓軌跡編制數(shù)控程序, 將補(bǔ)償值輸入CNC系統(tǒng), 數(shù)控系統(tǒng)即可自動(dòng)進(jìn)行刀具補(bǔ)償計(jì)算和調(diào)整刀具運(yùn)動(dòng)軌跡, 加工合格的零件, 既不容易產(chǎn)生錯(cuò)誤, 又能提高編程效率。
筆者提出一種通過(guò)判斷相鄰兩曲線轉(zhuǎn)接方式實(shí)現(xiàn)半徑補(bǔ)償?shù)乃惴? 實(shí)驗(yàn)證明該算法適用于轉(zhuǎn)接方式[4,5]為直線和直線、 直線和圓弧、 圓弧和直線以及圓弧和圓弧相鄰的所有半徑補(bǔ)償方式。
刀具半徑補(bǔ)償分為左補(bǔ)償和右補(bǔ)償[6](見(jiàn)圖1), 沿著刀具進(jìn)給的方向看, 刀具在加工工件輪廓的左邊叫做左補(bǔ)償, 用G41指令實(shí)現(xiàn); 沿著刀具進(jìn)給的方向看, 刀具在加工工件輪廓的右邊叫做右補(bǔ)償, 用G42指令實(shí)現(xiàn); 另外, 半徑補(bǔ)償取消用G40指令實(shí)現(xiàn)。
圖1 半徑補(bǔ)償分類(lèi)
圖2 轉(zhuǎn)接方式
在實(shí)際加工過(guò)程中, 大多數(shù)工件輪廓線是由圓弧和直線組成, 所以在刀具補(bǔ)償中, 相鄰兩段編程軌跡在轉(zhuǎn)接處有如下4種轉(zhuǎn)接方式(見(jiàn)圖2): 1) 直線轉(zhuǎn)接直線; 2) 直線轉(zhuǎn)接圓弧; 3) 圓弧轉(zhuǎn)接直線; 4) 圓弧轉(zhuǎn)接圓弧。其指令如下:
N1 G54 G90 G00 X0 Y0 Z0 M03 S500
N2 G01 Z-10 F1.0
N3 G41 G01 X10 Y0 D01
N4 G01 X40
N5 G01 X60 Y-30
N6 G02 X40 Y-50 R20
N7 G01 X0 Y-50
N8 G02 X0 Y-10 R20
N9 G03 X10 Y0 R10
N10 G40 G01 X0 Y0 Z0
N11 M30
以工件加工輪廓ABCDEFA為例,A′B′C′D′E′F′A″為帶半徑補(bǔ)償?shù)能壽E, 沿著刀具進(jìn)給的方向看, 刀具在加工工件輪廓的左邊, 半徑補(bǔ)償類(lèi)型左補(bǔ)償, 補(bǔ)償從A點(diǎn)開(kāi)始, 經(jīng)B、C、D、E、F回到A點(diǎn), 半徑補(bǔ)償取消; 輪廓中軌跡轉(zhuǎn)接方式: 直線AB轉(zhuǎn)接直線BC、 直線BC轉(zhuǎn)接順時(shí)針圓弧CD、 順時(shí)針圓弧CD轉(zhuǎn)接直線DE、 直線DE轉(zhuǎn)接順時(shí)針圓弧EF、 順時(shí)針圓弧EF轉(zhuǎn)接逆時(shí)針圓弧FA。
算法的基本思想是在原有編程軌跡基礎(chǔ)上結(jié)合刀具半徑補(bǔ)償值r重新計(jì)算編程軌跡。具體過(guò)程如下: 半徑補(bǔ)償建立[7], 順序讀取數(shù)控指令及其后繼行指令, 通過(guò)相鄰行的指令類(lèi)型獲得編程軌跡的轉(zhuǎn)接方式, 根據(jù)指令索引號(hào),分別設(shè)所取前后兩條指令軌跡為曲線i和曲線i+1, 補(bǔ)償后軌跡為曲線i′與曲線(i+1)′。若曲線i為直線, 則曲線i′與曲線i平行且距離為r; 若曲線i為圓弧, 則曲線i′與曲線i為半徑R+r或R-r和R的同心圓。同理可求得曲線(i+1)′。聯(lián)立曲線方程, 求得曲線i′與曲線(i+1)′的交點(diǎn)存至當(dāng)前指令, 并通過(guò)曲線(i+1)′求得潛在終點(diǎn)。如果曲線i′與曲線(i+1)′不存在交點(diǎn), 則需要插入一條過(guò)渡指令, 遍歷指令直至半徑補(bǔ)償撤消[7], 將潛在終點(diǎn)作為半徑補(bǔ)償?shù)慕K點(diǎn), 所求新軌跡即為帶半徑補(bǔ)償?shù)木幊誊壽E。
輸入: 無(wú)半徑補(bǔ)償?shù)臄?shù)控指令集InstructionsSet
輸出: 帶半徑補(bǔ)償?shù)臄?shù)控指令集NewInstructionsSet
Input(InstructionsSet)//輸入數(shù)控指令集
Execute(InstructionsSet)//執(zhí)行數(shù)控指令集
if(InstructionType(i)=G41) then//左補(bǔ)償G41
dor=Read(D), CompensationState=TRUE
else if (InstructionType(i)=G42) then//右補(bǔ)償G41
dor=Read(D)*(-1), CompensationState=TRUE
if(CompensationState)//半徑補(bǔ)償建立
求解補(bǔ)償起點(diǎn)Begin
for each instructioni∈InstructionsSet
if (InstructionType(i+1)!=G40) then do
InstructionRead(i), InstructionRead(i+1);//讀取第i,i+1條指令
InstructionType(i), InstructionType(i+1)→AdapterType
CrossPoint→InstructionWrite(i)//交點(diǎn)寫(xiě)入指令i
求解潛在終點(diǎn)TempEnd;
else TempEnd→InstructionWrite(i), CompensationState=FALSE
//潛在終點(diǎn)寫(xiě)入指令i, 半徑補(bǔ)償取消
end for
end if
Output(NewInstructionsSet)//輸出數(shù)控指令集
end Execute//結(jié)束
2.3.1 半徑補(bǔ)償建立
刀具半徑補(bǔ)償均以直線插補(bǔ)開(kāi)始, 補(bǔ)償起點(diǎn)Begin求法如圖3所示。
圖3 半徑補(bǔ)償建立
G41:
(1)
G42:
(2)
由式(1)和式(2)可知, 左補(bǔ)償G41與右補(bǔ)償G42在補(bǔ)償計(jì)算過(guò)程中只是r相差了一個(gè)符號(hào); 讀入指令N3、N4, 判斷補(bǔ)償狀態(tài)為左補(bǔ)償G41。已知點(diǎn)A、B, 由式(1)求出A′(補(bǔ)償起點(diǎn)Begin), 寫(xiě)回指令N4, 半徑補(bǔ)償建立。
2.3.2 基于轉(zhuǎn)接方式判斷刀補(bǔ)過(guò)程
數(shù)控加工過(guò)程中, 隨著前后兩段編程軌跡線形的不同, 相應(yīng)的刀具中心軌跡有不同的轉(zhuǎn)接形式[8-10]。CNC系統(tǒng)共有4種轉(zhuǎn)接形式。
1) 直線轉(zhuǎn)接直線。以加工圖2工件為例, 直線AB轉(zhuǎn)接直線BC。讀入指令N4、N5, 判斷轉(zhuǎn)接方式為直線轉(zhuǎn)接直線。已知點(diǎn)A、B、C、A′(補(bǔ)償起點(diǎn)Begin), 利用式(1)求得潛在終點(diǎn)C′, 利用點(diǎn)A、B可求出A′B′的斜率k1。又知A′, 可求出直線A′B′方程y=k1x+b1。同理求出B′C′方程y=k2x+b2, 聯(lián)立方程即可解出交點(diǎn)B′寫(xiě)回指令N4。
2) 直線轉(zhuǎn)接圓弧。以加工圖2工件為例, 直線BC轉(zhuǎn)接順時(shí)針圓弧CD。讀入指令N5、N6, 判斷轉(zhuǎn)接方式為直線轉(zhuǎn)接圓弧。已知點(diǎn)B、B′、C、D、R(插補(bǔ)半徑)、r(補(bǔ)償半徑), 利用點(diǎn)B、C可求出A′B′的斜率k1。又知B′, 可求出直線A′B′方程y=k1x+b1。利用C、D、R、r以及圓弧的插補(bǔ)方向求出圓弧C′D′方程(x-x0)2+(y-y0)2=(R+r)2, 聯(lián)立方程即可解出交點(diǎn)C′, 寫(xiě)回指令N5。
圓弧插補(bǔ)方式下潛在終點(diǎn)求法。
潛在終點(diǎn)求法如圖4所示。
G41:E′點(diǎn):XE′=Xo+(R+r)cosαYE′=Yo+(R+r)sinα
(3)
G42:E″點(diǎn):XE″=Xo+(R-r)cosαYE″=Yo+(R-r)sinα
(4)
圖4 圓弧潛在終點(diǎn)求解
由式(3)和式(4)知左補(bǔ)償G41與右補(bǔ)償G42在補(bǔ)償計(jì)算過(guò)程中只是r相差了一個(gè)符號(hào), 由式(3)求出潛在終點(diǎn)D′。
3) 圓弧轉(zhuǎn)接直線。以加工圖2工件為例, 順時(shí)針圓弧CD轉(zhuǎn)接直線DE。讀入指令N6、N7, 判斷轉(zhuǎn)接方式為圓弧轉(zhuǎn)接直線。已知點(diǎn)C、C′、D、E、R(插補(bǔ)半徑)、r(補(bǔ)償半徑), 利用C、D、R、r以及圓弧的插補(bǔ)方向求出圓弧C′D′方程(x-x0)2+(y-y0)2=(R+r)2, 利用點(diǎn)D、E可求出D′E′的斜率k1。又由式(3)求出潛在終點(diǎn)E′, 可求出直線D′E′方程y=k1x+b1。聯(lián)立方程即可解出交點(diǎn)D′, 寫(xiě)回指令N6。
4) 圓弧轉(zhuǎn)接圓弧。以加工圖2工件為例, 順時(shí)針圓弧EF轉(zhuǎn)接逆時(shí)針圓弧FA。讀入指令N8、N9, 判斷轉(zhuǎn)接方式為圓弧轉(zhuǎn)接圓弧。已知點(diǎn)E、F、A、R(插補(bǔ)半徑)、r(補(bǔ)償半徑), 利用E、F、R、r以及圓弧的插補(bǔ)方向求出圓弧E′F′方程(x-x0)2+(y-y0)2=(R+r)2。同理, 求出圓弧F′A″方程(x-x1)2+(y-y1)2=(R-r)2, 聯(lián)立方程即可解出交點(diǎn)F′, 寫(xiě)回指令N8, 利用式(3)求出潛在終點(diǎn)A′。
2.3.3 半徑補(bǔ)償撤消
讀入指令N9、N10, 判斷N10指令為G40半徑補(bǔ)償撤消指令, 將潛在終點(diǎn)A″作為半徑補(bǔ)償終點(diǎn)寫(xiě)回N9, 半徑補(bǔ)償撤消。
按照判斷相鄰兩曲線轉(zhuǎn)接方式的思想編程實(shí)現(xiàn)半徑補(bǔ)償功能, 對(duì)圖2中的工件進(jìn)行數(shù)控編程實(shí)驗(yàn), 選擇直徑為6 cm的端銑刀, 半徑補(bǔ)償r為3 cm, 加工數(shù)據(jù)如表1所示。
半徑補(bǔ)償前后的加工效果如圖5所示。在未使用半徑補(bǔ)償?shù)那闆r下, 由于刀具半徑的存在, 工件明顯過(guò)切。該算法通過(guò)利用相鄰曲線間的轉(zhuǎn)接方式, 巧妙避開(kāi)了縮短型、 插入型、 伸長(zhǎng)型[3]等補(bǔ)償判斷的繁瑣, 實(shí)驗(yàn)結(jié)果表明, 具有誤差小, 求解高效等優(yōu)點(diǎn)。另外當(dāng)相鄰兩曲線沒(méi)有交點(diǎn)時(shí)即方程組無(wú)解時(shí), 插入一條半徑為r的半圓弧過(guò)渡指令即可。
a 半徑補(bǔ)償前 b半徑補(bǔ)償后
實(shí)際加工過(guò)程中, 半徑補(bǔ)償不僅與刀具的真實(shí)半徑有關(guān), 還與刀具的磨損有關(guān), 在實(shí)際加工過(guò)程需要根據(jù)刀具真實(shí)半徑與磨損值設(shè)置半徑補(bǔ)償值。筆者實(shí)現(xiàn)了編程軌跡為直線圓弧組合方式的補(bǔ)償, 若編程軌跡出現(xiàn)橢圓、 雙曲線等復(fù)雜曲線, 該算法思想同樣適用, 只需做簡(jiǎn)單改進(jìn)。
參考文獻(xiàn):
[1] 張臣. 球頭銑刀刀具磨損建模與誤差補(bǔ)償 [J]. 機(jī)械工程學(xué)報(bào), 2008, 44(2): 207-212, 218.
ZHANG Chen. Modeling and Wear-Induced Error Compensation of Ball-End Milling Cutter Wear [J]. Chinese Journal of Mechanical Engineering, 2008, 44(2): 207-212, 218.
[2]張書(shū)誠(chéng). 基于PC的開(kāi)放式數(shù)控系統(tǒng)研究 [D]. 合肥: 合肥工業(yè)大學(xué)機(jī)械與汽車(chē)工程學(xué)院, 2008.
ZHANG Shu-cheng. Research on the Open NC Systems Based on PC [D]. Hefei: School of Mechanical and Automotive Engineering, Hefei University of Technology, 2008.
[3]李旭宇. 數(shù)控刀具新型半徑補(bǔ)償算法的研究與實(shí)現(xiàn) [D]. 廣州: 華南理工大學(xué)自動(dòng)化科學(xué)與工程學(xué)院, 2010.
LI Xu-yu. Research and Implementation of a Novel Algorithm for Tool Compensation [D]. Guangzhou: College of Antomation Science and Engineering, South China University of Technology, 2010.
[4]盧軍霞. 刀具半徑補(bǔ)償算法的研究與實(shí)現(xiàn) [J]. 機(jī)床與液壓, 2010, 38(12): 9-10.
LU Jun-xia. Research and Implementation of Cutting Tool Radius Compensation Algorithm [J]. Machine Tool and Hydraulics, 2010, 38(12): 9-10.
[5]劉德平. CNC系統(tǒng)刀具半徑補(bǔ)償功能的實(shí)現(xiàn) [J]. 組合機(jī)床與自動(dòng)化加工技術(shù), 2002(2): 18-20.
LIU De-ping. Realization of Cutter Radius Compensation in CNC System [J]. Modular Machine Tool & Automatic Manufacturing Technique, 2002(2): 18-20.
[6]潘冬. FANUC數(shù)控系統(tǒng)刀具半徑補(bǔ)償?shù)膽?yīng)用 [J]. 裝備制造技術(shù), 2009(4): 137-141.
PAN Dong. Application of Radius Compensation on FANUC NC Systems [J]. Equipment Manufacturing Technology, 2009(4): 137-141.
[7]朱志紅. 刀具半徑補(bǔ)償算法研究 [J]. 華中理工大學(xué)學(xué)報(bào), 1993, 21(2): 99-104.
ZHU Zhi-hong. Research of Cutting Tool Radius Compensation Algorithm [J]. Journal of Huazhong University of Science and Technology, 1993, 21(2): 99-104.
[8]趙亞軍. 刀具半徑補(bǔ)償在數(shù)控仿真中的應(yīng)用 [J]. 機(jī)械研究與應(yīng)用, 2007, 20(6): 44-46.
ZHAO Ya-jun. Application of Tool Radius Compensation in Simulation of Numerical Control [J]. Mechanical Research and Application, 2007, 20(6): 44-46.
[9]張麗麗. 刀具半徑補(bǔ)償轉(zhuǎn)接類(lèi)型的判斷方法 [J]. 數(shù)字技術(shù)與應(yīng)用, 2012(9): 189.
ZHANG Li-li. Judgment Method on Transfer Type of Tool Radius Compensation [J]. Digital Technology and Application, 2012(9): 189.
[10]胡柳, 趙玉剛, 李海洋, 等. 刀具半徑補(bǔ)償轉(zhuǎn)接類(lèi)型的判斷方法 [J]. 山東理工大學(xué)學(xué)報(bào): 自然科學(xué)版, 2011, 25(1): 84-87.
HU Liu, ZHAO Yu-gang, LI Hai-yang, et al. Judgment Method on Transfer Type of Tool Radius Compensation [J]. Journal of Shandong University of Technology: Natural Science Edition, 2011, 25(1): 84-87.