袁士平
(北京航空制造工程研究所,北京100024)
五軸聯(lián)動(dòng)加工中心能高效率、高質(zhì)量地完成復(fù)雜工件的五面加工,在飛機(jī)主機(jī)、發(fā)動(dòng)機(jī)、模具等行業(yè)得到了廣泛的應(yīng)用。要實(shí)現(xiàn)五軸加工,首先要規(guī)劃刀具軌跡,使刀具的運(yùn)動(dòng)軌跡光滑連續(xù)無(wú)干涉,一般靠自動(dòng)編程軟件實(shí)現(xiàn)。自動(dòng)編程軟件輸出刀位源文件(cutter location source file,簡(jiǎn)稱CLSF),刀位源文件描述了編程坐標(biāo)系下的刀具位置、刀軸矢量、刀具轉(zhuǎn)速、進(jìn)給速度等信息。但刀位源文件是APT 格式的文本文件,機(jī)床的數(shù)控系統(tǒng)無(wú)法識(shí)別。后置處理的任務(wù)就是把刀位源文件中的刀具路徑信息轉(zhuǎn)換為機(jī)床可識(shí)別的數(shù)控加工程序(G 代碼文件)。因?yàn)槲遄鴺?biāo)機(jī)床結(jié)構(gòu)形式多樣,控制指令各不相同,坐標(biāo)求解過(guò)程復(fù)雜,所以后置處理是實(shí)現(xiàn)五坐標(biāo)加工的關(guān)鍵技術(shù)之一。
筆者公司現(xiàn)有的五軸加工中心如圖1 所示,該機(jī)床采用了臥式的正交布局,機(jī)床平移坐標(biāo)X、Y、Z向行程約1.5 m,刀具主軸繞X軸擺動(dòng)(定義為A軸),范圍+30°~-90°,轉(zhuǎn)臺(tái)繞Y軸轉(zhuǎn)動(dòng)定義為B軸,角度范圍-9999°~+9999°。該機(jī)床的數(shù)控系統(tǒng)為NUM760,能實(shí)現(xiàn)五軸聯(lián)動(dòng),但不帶RTCP 功能,編程坐標(biāo)系與機(jī)床坐標(biāo)系的轉(zhuǎn)換關(guān)系復(fù)雜,是制約其加工能力的主要問(wèn)題。
工作流程如圖2 所示。后置處理程序首先顯示界面,等待用戶輸入需要處理的刀位文件、DAT2 值、刀長(zhǎng);然后依次讀入刀位文件的每一行,將相關(guān)數(shù)據(jù)填充到內(nèi)存數(shù)據(jù)結(jié)構(gòu)中;求解機(jī)床坐標(biāo)值,將結(jié)果寫入內(nèi)存數(shù)據(jù)結(jié)構(gòu);根據(jù)機(jī)床坐標(biāo)值和數(shù)控程序的格式構(gòu)造G代碼并寫入NC 程序文件。下面分別介紹各個(gè)功能模塊的原理。
應(yīng)用程序界面模塊的作用是顯示用戶界面,等待用戶輸入DAT2、刀長(zhǎng)、轉(zhuǎn)心距等信息。本例用Visual Studio 創(chuàng)建標(biāo)準(zhǔn)的Windows界面如圖3。
該模塊負(fù)責(zé)讀取、解析刀位文件,并將刀位文件中的數(shù)據(jù)填充到結(jié)構(gòu)化的內(nèi)存數(shù)據(jù)結(jié)構(gòu)中。該模塊依次讀取刀位文件中的一行,根據(jù)該行的首詞用switch -case 語(yǔ)句分別處理該行的信息。
(1 ) 首 詞 為FORM、 GOTO、 GOHOME:代表該行為直線位移。該行的參數(shù)有兩種情況:GOTO/x、y、z、i、j、k或GOTO/x、y、z。x、y、z為刀尖點(diǎn)的坐標(biāo)值,需要用double. Parse(string)命令解析該坐標(biāo)值。i、j、k為刀軸矢量,如果該參數(shù)為空,表明該刀具位置的刀軸矢量未發(fā)生變化,i、j、k保持上一個(gè)值。
(2)首詞為CIRCLE:代表此軌跡為圓弧。其格式為CIRCLE/x、y、z、i、j、k、r、t、f、d、e、[TIMES,n]。首先保存圓弧起點(diǎn)坐標(biāo)、圓心坐標(biāo)、插補(bǔ)軸矢量、進(jìn)給速度,再讀取下一行,取得圓弧的終點(diǎn)坐標(biāo)。
后置處理的過(guò)程中,程序要與大量的數(shù)據(jù)打交道,數(shù)據(jù)結(jié)構(gòu)尤其重要。根據(jù)數(shù)控程序中數(shù)據(jù)的特點(diǎn),定義如圖4 的數(shù)據(jù)結(jié)構(gòu),并把數(shù)據(jù)保存在相應(yīng)的類中。
坐標(biāo)求解模塊進(jìn)行坐標(biāo)變換、進(jìn)給速度轉(zhuǎn)換。讀取并處理數(shù)據(jù)類,將機(jī)床坐標(biāo)值、進(jìn)給速度值等需要計(jì)算的量填充到數(shù)據(jù)類中。后置處理的關(guān)鍵算法是根據(jù)機(jī)床的結(jié)構(gòu)形式,求解機(jī)床坐標(biāo)值。主要包括轉(zhuǎn)動(dòng)、平移坐標(biāo)的求解兩部分。
機(jī)床A、B軸角度與刀軸矢量的關(guān)系如圖5 所示,其中刀軸矢量為單位矢量。故有:
A=arcsin(J/1)(A取值范圍:-90°≤A≤90°)
由表1 可計(jì)算B坐標(biāo)取值范圍在±180°內(nèi)的值:
表1 B 角的計(jì)算
計(jì)算B 軸的角度時(shí),需要考慮B坐標(biāo)值的取值范圍。轉(zhuǎn)臺(tái)的角度m與m±360 ×n(n為整數(shù))實(shí)際上是同樣的位置。當(dāng)轉(zhuǎn)臺(tái)運(yùn)動(dòng)到±180°附近時(shí),如果程序路徑中要求繼續(xù)回轉(zhuǎn),B坐標(biāo)值應(yīng)超過(guò)±180°,否則轉(zhuǎn)臺(tái)大幅回轉(zhuǎn),會(huì)與工件碰撞。當(dāng)后置處理系統(tǒng)計(jì)算某個(gè)點(diǎn)B坐標(biāo)在±180°范圍內(nèi)的值B’時(shí),必須與上一個(gè)點(diǎn)的值進(jìn)行比較,轉(zhuǎn)臺(tái)以最短路徑運(yùn)動(dòng)。即求出B±360 ×n(-10 <n<10)與上一個(gè)B坐標(biāo)值最接近的值。具體算法為
B= min[Blast-(B’±360 ×n)](n為整數(shù),-10<n<10,B取值范圍-3780 <B<3780,B’為上一個(gè)點(diǎn)位的B 坐標(biāo)值)
工件安裝在轉(zhuǎn)臺(tái)上,轉(zhuǎn)臺(tái)旋轉(zhuǎn)將導(dǎo)致刀具與工件的相對(duì)位置發(fā)生變化,一般有2 種方法可補(bǔ)償這種變化。
(1)高檔數(shù)控系統(tǒng)一般具有RPCP 功能,即五軸機(jī)床工件旋轉(zhuǎn)中心編程(rotation around part center point)。工作臺(tái)旋轉(zhuǎn)時(shí),機(jī)床X、Z坐標(biāo)能自動(dòng)跟蹤,刀尖點(diǎn)與工件的相對(duì)位置不變。如SIEMENS 系統(tǒng)的TRAORI指令、HEIDENHAIN530I 系統(tǒng)的M128 指令、NUM 系統(tǒng)的G151S0 指令。這種情況下,數(shù)控程序中的X、Z坐標(biāo)值使用刀位文件中的坐標(biāo)值即可。
表2 刀位文件與NC 代碼
(2)另一種情況下,數(shù)控系統(tǒng)不具有RPCP 功能,由后置處理程序來(lái)補(bǔ)償轉(zhuǎn)臺(tái)轉(zhuǎn)動(dòng)對(duì)平移坐標(biāo)的影響。如圖6 所示,機(jī)床處于B=0 位置時(shí),轉(zhuǎn)臺(tái)中心在機(jī)床坐標(biāo)系下的坐標(biāo)值為DAT1,工件坐標(biāo)系相對(duì)轉(zhuǎn)臺(tái)中心的相對(duì)坐標(biāo)值為DAT2。對(duì)某一臺(tái)機(jī)床來(lái)講,DAT1為固定值,DAT2隨工件擺放位置的變化而變化。
如圖7 所示,轉(zhuǎn)臺(tái)中心在工件坐標(biāo)系XOZ下的坐標(biāo)為P1(X1,Z1),即(-XDAT2,-ZDAT2)。轉(zhuǎn)臺(tái)轉(zhuǎn)過(guò)角度B時(shí),刀尖點(diǎn)P(X,Y)在轉(zhuǎn)臺(tái)的帶動(dòng)下運(yùn)動(dòng)到P’(X’,Y’)。由計(jì)算機(jī)圖形學(xué)的二維旋轉(zhuǎn)公式,可得:
當(dāng)A= -90°,即主軸立式時(shí),X、Z、B軸中只要有任意2 軸運(yùn)動(dòng)即可實(shí)現(xiàn)XOZ平面內(nèi)的加工,這時(shí)后置處理有多個(gè)解,需要優(yōu)化機(jī)床的運(yùn)動(dòng)。如圖8所示的機(jī)匣類工件,端面上需要鉆孔、鉸孔、插銑、銑邊,如果用XZ軸聯(lián)動(dòng)加工,不僅工件的分度精度不好,而且機(jī)床將在Z-向超過(guò)行程范圍。所以本后置處理開(kāi)發(fā)了B軸代替X軸運(yùn)動(dòng)的功能,加工端面時(shí),X始終為0,靠B軸實(shí)現(xiàn)工件的分度。在式(1)中,令X'=0,即可計(jì)算出對(duì)應(yīng)的B值。
主軸端面到A軸轉(zhuǎn)動(dòng)中心的距離稱為轉(zhuǎn)心距(pivot)。由于這個(gè)距離和刀具長(zhǎng)度的存在,A軸轉(zhuǎn)動(dòng)將導(dǎo)致平移坐標(biāo)Y的變化。通常消除這個(gè)位移有兩種辦法,一種是數(shù)控系統(tǒng)的RTCP 功能,另一種是在后置處理中考慮樞軸中心距。
(1)啟用RTCP 功能后,控制系統(tǒng)會(huì)自動(dòng)計(jì)算并保持刀具中心始終在編程的XYZ位置上,轉(zhuǎn)動(dòng)坐標(biāo)的每一個(gè)運(yùn)動(dòng)都會(huì)被XYZ坐標(biāo)的一個(gè)直線位移所補(bǔ)償,數(shù)控程序中的刀尖點(diǎn)坐標(biāo)直接使用刀位文件中的值即可。如圖9a[2]所示。
(2)未啟動(dòng)RTCP 功能時(shí),控制點(diǎn)在A擺轉(zhuǎn)動(dòng)中心上,如圖9b 所示。后置處理過(guò)程中,需要把刀位文件中刀尖點(diǎn)的坐標(biāo)值Y、Z換算成轉(zhuǎn)動(dòng)中心的坐標(biāo)值Y’、Z’,由三角函數(shù)可得出計(jì)算公式:
式中:TL為刀具長(zhǎng)度;PL為轉(zhuǎn)心距。
具有旋轉(zhuǎn)軸的自由曲面的加工,進(jìn)給速度控制一般使用G93,其進(jìn)給率F為時(shí)間倒數(shù),其計(jì)算公式為F=V/D(F為進(jìn)給速率;V為編程的進(jìn)給速度,mm/min,D為路徑長(zhǎng)度,mm),其中(Δx、Δy、Δz為輪廓點(diǎn)間的距離)。
實(shí)際計(jì)算中:所取的Δx、Δy、Δz為刀位文件中的刀位點(diǎn)間的距離。這種算法在直線運(yùn)動(dòng)距離較短,而回轉(zhuǎn)運(yùn)動(dòng)角度較大時(shí),會(huì)出現(xiàn)實(shí)際進(jìn)給速度大大高于刀位文件中編程速度的情況。在平移坐標(biāo)XYZ不動(dòng),僅回轉(zhuǎn)刀具軸變化時(shí),甚至?xí)霈F(xiàn)D=0,進(jìn)給速度F無(wú)窮大的極端情形。這種情況下,不僅機(jī)床可能報(bào)錯(cuò),而且加工的表面質(zhì)量也不好。
為了避免進(jìn)給速度的這種情況,把轉(zhuǎn)動(dòng)角度1°等同于直線進(jìn)給1 mm 處理,引進(jìn)到算法中,其算法為:
NC 文件輸出模塊負(fù)責(zé)根據(jù)機(jī)床的G 代碼格式,將內(nèi)存數(shù)據(jù)結(jié)構(gòu)中的NC 點(diǎn)位信息填充到G 代碼文件中。處理前的刀位文件和處理完的適合NUM760 系統(tǒng)的NC 代碼如表2 所示。
轉(zhuǎn)臺(tái)-擺頭結(jié)構(gòu)五軸聯(lián)動(dòng)加工中心的后置處理程序主要分為界面顯示、刀位文件讀取與解析、坐標(biāo)求解、G 代碼構(gòu)造、數(shù)控程序文件輸出等模塊。后置處理程序的核心算法一是根據(jù)刀具矢量I/J/K計(jì)算機(jī)床轉(zhuǎn)動(dòng)坐標(biāo)A/B/C,二是將刀尖點(diǎn)的平移坐標(biāo)X/Y/Z轉(zhuǎn)換到機(jī)床的控制點(diǎn)上,三是將進(jìn)給速度mm/min 轉(zhuǎn)換為時(shí)間倒數(shù)進(jìn)給率1/min。啟用數(shù)控系統(tǒng)的RTCP、RPCP 功能后,具有后置處理算法簡(jiǎn)單,改變工件坐標(biāo)系位置、刀長(zhǎng)時(shí)不必修改數(shù)控程序的特點(diǎn),將是五軸后置處理程序設(shè)計(jì)的方向。
[1]NX7 Help Library[Z].
[2]菲迪亞C 級(jí)用戶及編程手冊(cè)V3MDO1377[Z].