■ 中國航發西安航空發動機有限公司 (陜西西安 710021) 馮永星
后置處理是將CAM軟件生成的刀位文件轉換成機床可識別的NC代碼的一個重要環節,大部分CAM軟件在安裝時自身都配置有后置處理,然而這些文件大都是一些通用的、籠統性的文件,甚至一些CAM軟件自身所帶的后置處理存在缺陷或者功能并不是很完善,通過其生成的NC代碼并不能直接傳輸到數控機床進行使用,需要手動更改方可確保加工的安全性以及零件質量。而且CAM軟件并不會針對所有的控制系統配置后置處理,因此需要使用者根據所使用的數控機床的特點及習慣進行二次開發。本文是在開發基于Master CAM的Fidia NC15系統五軸后置處理過程中的一些方法及心得。
(1)NC代碼特點 文中涉及的設備為意大利菲迪亞股份有限公司生產的HS664RT五軸加工中心,其控制系統為Fidia NC15。與ISO代碼相比,該設備的NC代碼有如下幾處比較典型的特點。
1)圓弧指令中的I、J、K。在ISO代碼中,圓弧指令中I、J、K后面的數值指的是從圓弧起點到圓弧中心方向的矢量分量,而在Fidia控制系統中,I、J、K后面的數值指的是該圓弧圓心的坐標值。
2)進給指令。與ISO代碼一樣,Fidia控制系統進給指令代碼為F,不同的是在Fidia系統中F后面的數值是不帶小數點的整數,單位只能為mm/min。
3)加工循環。這里所說的加工循環包括鉆中心孔、鉆(深)孔、锪孔、攻螺紋、鏜孔及鉸孔等,其指令代碼有很多地方相似,但是具體到每個指令的格式及運動方式都有著顯著的差異。
(2)指令差異 本文以深孔排屑啄鉆指令(均為G83)為例,來說明兩個系統在指令格式及運動方式上的差異,其他幾個指令基本類似,這里不再一一細述。
表1列舉了在兩種系統下排屑啄式鉆孔功能的指令格式,結合圖1所示的運動分解圖,可以得出如下幾個結論。
1)兩種系統下G83、X_、Y_、R_及F_代碼完全相同。
2)兩種系統下雖然都存在Z_位址,但是其意義不同,在ISO代碼中Z_代表了鉆孔的最終深度,而在Fidia NC15代碼中Z_則是快速定位時的點位坐標值。
3)Q_、K_及D_、E_、H_分別是各自系統下特有的代碼,Q_與D_代碼意義大致相似。
4)I S O代碼中Δ值由系統No.5115參數決定,Fidia NC15控制系統中Δ值由G83K MAINT參數定義。

表1 深孔排屑啄鉆指令
表2列舉了兩種控制系統的換刀指令、刀具指令、長度補償及坐標系等代碼的差異,這些差異在后置處理文件中做簡單更改即可。

表2 兩種控制系統的其他差異

圖1 運動分解示意
分析出了Fidia NC15系統的特點后,我們可以對CAM軟件后置處理文件的源代碼做出相應的調整或更改,使后置處理出的程序可直接用于當前的設備。通過對Master CAM 2018系統自帶后置處理文件的分析與對比,選擇Generic Fanuc 5X Mill.pst作為此次二次開發的原始文件,該文件與加密文件Generic Fanuc 5X Mill.psb共同構成了Fanuc系統的五軸后置處理。
(1)軸定義 不同的五軸設備其各軸間的相對運動關系不盡相同,機床坐標軸的配置也各有差異,因此在進行后置處理開發時第一步就是要對當前設備進行分析,明確各軸的配置以及各運動軸間的相對關系。
1)H S664RT機床分析。HS664RT是典型的Table/Table類型的五軸設備,配置了三個線性軸和兩個旋轉軸,其傾斜軸(A軸)擺角為±110°,旋轉軸(C軸)轉角為±3 60°(N×360°),如圖2所示。在相對運動上,線性軸X、Y、Z運動與刀具一致,旋轉軸A、C運動與刀具軸相反(即零件運動)。
2)五軸定義及更改。在后置處理文件中,坐標軸的定義包含了分配軸地址、旋轉軸設置、工作平面及軸定義等模塊,針對HS664RT機床,這部分的代碼應按照表3進行更改設置。表3僅列舉出了需要更改的部分,與源文件一致的部分不再一一列出。
其次,在變量格式定義中也需要進行更改。
fmt “C” 20 p_out
fmt “A” 20 s_out
fmt “B” 20 d_out
3)軸行程設定。通常情況下,在更改后置處理文件時要根據設備具體的結構特點并結合使用上的要求來設置各軸的最大行程。根據使用習慣,這部分代碼進行了如下更改。

圖2 機床示意

表3 軸定義及更改
auto_set_lim : 0
pri_limtyp$ : 1
sec_limtyp$ : 0
pri_limlo$ : 0
pri_limhi$ : 360
sec_limlo$ : -110
sec_limhi$ : 110
可以看出,本文僅對旋轉軸行程進行了設定,在具體使用時可根據各自的軟件及設備等的使用要求及習慣進行線性軸行程的設定,這部分包含了use_stck_typ、up_x_lin_lim 、up_y_lin_lim、up_z_lin_lim、lw_x_lin_lim 、lw_y_lin_lim及lw_z_lin_lim等。
(2)程序頭、尾更改 程序頭pheader$及程序尾peof$主要定義程序號、數控程序起始及結束程序段的一些注釋性的內容(如名稱、日期及刀具表等),這部分可以根據具體的要求進行更改。結合本文實際情況,這一段更改后的代碼如下。
pheader$ #Call before start of file
##### Custom changes allowed below #####
!spaces$, spaces$ = 0
if progno$ = zero, progno$ = one
“( ----------------------------------------------------------- )”,e$
“( MACHINE : Fidia HS664RT- CONTROLLER: Fidia NC15 )”,E$
“( PROG NO:CXXFY-PWC-”,*progno$, “)”,e$
“( “, *progno$, “)”,e$
“( “, sprogname$, “ REV- )”,e$
“( ---------------------------------------------------------- )”,e$
pbld, n$, “G17 Q1”,e$
pbld, n$, *sgabsinc,e$
pbld, n$, *smetric, e$
pbld, n$, “M242”,E$
p b l d, n$, “G01 A0. C0.F3000”,e$
spathnc$ = ucase(spathnc$)
smcname$ = ucase(smcname$)
stck_matl$ = ucase(stck_matl$)
snamenc$ = ucase(snamenc$)
spaces$ = prv_spaces$
至于peof$程序段,需要將“M30”更改為“M02”并刪除“%”, e$一行,其余內容保持不變。
(3)換刀、初始運動及進退刀 不同的設備及使用環境在換刀格式、設備初始運動和進退刀方式上都存在著差異。Master CAM軟件可以在軟件內部通過對控制器、刀路參數定義的方式滿足部分要求,其次還需要對后置處理文件進行代碼更改。
針對文中的HS664RT機床,在后置處理更改時首先將nobrk$值由no$更改為yes$,其次需要對p_goto_strt_tl、p_goto_strt_ntl、pretract、prefreturn、protretinc及ppos_cax_lin等幾個程序塊進行改寫,后文中“……”均代表了與源文件格式、內容一致的部分。
1)p_goto_strt_tl程序塊。
p_goto_strt_tl #Make the tool start up at toolchange
……
if stagetool <= one, pbld, n$,“M306”,PTOOLS, e$
n$, “G55 O1”,E$
pbld, n$, “G01”,*p_out, *s_out,”F3000”,e$
pbld, n$, “G154”,e$
pbld, n$, *speed, *spindle,e$
……
pg68_map
pbld, n$, *zabs_s, e$
pbld, n$, *sg00, “X0.”,“Y0.”, *zabs_s, e$
pcan1, pbld, n$, *sgcode,*xabs_s, *yabs_s, strcantext, e$
]
else, #5 axis and regular mode (n_tpln_mch = -2)
……
else,
[
pcan1, pbld, n$,*sgcode, *xout, *yout, PFYFEED, pgear,strcantext, e$
]
……
pg68
pbld, n$, *xout,*yout, *zout, pscool, e$
]
else, pbld, n$, *zout, pscool, e$
……
2)p_goto_strt_ntl程序塊。
p_goto_strt_ntl #Make the tool start up at null toolchange
……
pg68_map
pbld, n$, *xabs_s, *yabs_s,*zabs_s, *p_out, *s_out, e$
pg68
pbld, n$, xout, yout, zout, e$
]
#else, pbld, n$, pwcs, sgabsinc,*xout, *yout, *zout, *p_out, *s_out, e$
else,
[
pbld, n$, sgabsinc, *xout,*yout, *zout, e$
pbld, n$, “G01”,*p_out, *s_out,”F3000”,e$
pbld, n$, “G154”,e$
]
……
3)pretract程序塊。
pretract #End of tool path,toolchange
……
##### Custom changes allowed below #####
pbld, n$, *spindle, e$
pbld, n$, *scoolant, e$
pg69
……
#pbld, n, *sg28, protretinc, e
pbld, n$,”G154”,e$
4)prefreturn程序塊。
prefreturn #Refernce return
pbld, n$, “M242”, e$
5)protretinc程序塊。在該程序塊中只需要將pbld, n$, *sg28,p_out, s_out, e$這一行代碼改寫成pbld, n$, *sg01, *p_out, *s_out,“F3000”, e$即可,其余程序段不需要進行更改。
6)ppos_cax_lin程序塊。該程序塊需要將pbld, n$, sgcode,p_o u t, s_o u t, e$這一行改成pbld, n$, sgcode, *p_out, *s_out,“F3000”, e$,其余不變。
(4)圓弧模式 如前文所述,HS664RT在圓弧加工時I、J、K后面的數值指的是該圓弧圓心的坐標值,但對arctype$變量值按照后置處理文件的說明進行幾次嘗試后均未達到滿意的效果,因此對源代碼進行了如下編寫。
1)增加自定義變量。通過增加FYI、FYJ、FYK三個變量來對輸出的I、J、K值進行重新計算,從而獲得需要的結果數值。
#FIDIA IJK OUTPUT
fmt “I” 3 FYI #FIDIA IOUT
fmt “J” 3 FYJ #FIDIA JOUT
fmt “K” 3 FYK #FIDIA KOUT
2)parcijk程序塊。通過后置處理文件中的parcijk程序塊對圓弧加工時輸出的格式進行控制,這個程序塊需進行如下更改。
parcijk #Select the arc output
FYI=prv_X$+I$
FYJ=prv_y$+J$
FYK=prv_Z$+K$
if arcoutput$ = zero | full_arc_flg$,
[
#Arc output for IJK
*FYI, *FYJ, !FYK
]
else,
……
(5)孔加工循環 孔加工是加工中心最常用的功能之一,HS664RT在孔加工循環上與ISO代碼有著很大的差異,因此在后置處理文件中需要改寫大量代碼,限于篇幅,在本文中僅列出最復雜的G83指令的實現方法,其余指令(如G82、G84、G85等)與G83類似。
1)字地址的定義。通過前文對G83指令后各地址的分析與對比,在后置處理文件中drlx、drly、drlz、peck1$及dwell$的地址需要做如下更改。
fmt “E” 2 drlx #X position output
fmt “E” 2 drly #Y position output
fmt “E” 2 drlz #Z position output
fmt “D” 2 peck1$ #First peck increment (positive)
fmt “H” 11 dwell$ #Dwell
2)鉆孔輸出格式。G83包括啄式排屑鉆孔與斷屑鉆孔,在指令的輸出格式上兩個是一致的,在后置處理文件中包括ppeck$、pchpbrk$兩個程序塊。
ppeck$ #Canned Peck Drill Cycle
pdrlcommonb
pcan1, pbld, n$, *sgdrill,sgabsinc, prdrlout, *peck1$, dwell$,PFYfeed, strcantext, e$
pcom_movea
pchpbrk$ #Canned Chip Break Cycle
pdrlcommonb
pcan1, pbld, n$, *sgdrill,sgabsinc, prdrlout, *peck1$, dwell$,PFYfeed, strcantext, e$
pcom_movea
(6)進給的修改 前文提到,在Fidia系統中F后面的數值是不帶小數點的整數,單位只能為mm/min。同時,我公司使用該設備時出于安全及保護設備的考慮,在加工時快速定位功能(G00)均被以F3000運動的直線插補代替,因此也需要修改后置處理來實現這個功能。
fmt “F” 4 FYFEED
#FEED FOR FIDIA
PFYFEED
IF GCODE$=0,
[FYFEED=3000],*FYFEED
ELSE,
[FYFEED=FEED],FYFEED
上面的7行代碼通過定義新變量FYFEED以及對GCODE$變量值的判斷,重新對FYFEED進行賦值,解決了Fidia系統對F格式的要求,也滿足了公司對設備使用的要求。當然,在后置處理文件中,需要將所有的“*feed”或“`feed”更改為“PFYFEED”。同時也需要將s g00 : “G0”#Rapid這一行內容更改為sg00 :“G1” #Rapid。
(7)其他更改 后置處理文件中其余更改內容見表4,主要包括換刀指令、刀具指令、公制/英制代碼以及其他一些功能性的更改或優化。

表4 后置處理文件的其他更改

圖3 燃燒室排氣管安裝邊
圖3所示為某航空發動機燃燒室排氣管安裝邊簡圖,現需要在HS664RT上加工圖示的42個φ1.397mm徑向孔,加工方案采用φ1.0mm球頭銑刀鉆中心孔、φ1.45mm鉆頭鉆孔的方式。
(1)模型及刀路 Master CAM 2018環境下的刀具路線圖如圖4所示,在加工該零件時傾斜軸A旋轉-90°,旋轉軸C按圖樣要求分度,從而達到加工該零件的目的。
(2)加工程序 在完成刀路規劃及參數設定后即可進行后置處理操作,在進行后置處理時要選擇提前更改好的后置處理文件。圖4所示的刀路圖經后置處理后得到程序文件,限于篇幅文中僅列出前三孔與最后一孔的程序。可以看出,使用經過二次開發的后置處理文件,得到的數控程序已經達到了不需要做任何修改即可傳輸到機床進行使用的目的。通過與DNC系統的結合,完美實現了CAM軟件與數控機床的無縫連接。
( -------------------------------------------------------------- )
( MACHINE : Fidia HS664RT -CONTROLLER: Fidia NC15 )
( PROG NO:CXXFY-PWC-:0001)
( :0001)
( 3100588-02 REV- )
( -------------------------------------------------------------- )
N100G17 Q1
N110G90
N120G71
N130M242
N140G01 A0. C0. F3000
(T.1|DRILL-1.45 |TOOL DIA.-1.45)
(DRILL-1.45 |TOOL-1|DIA. OFF.-1|LEN.-1|TOOL DIA.-1.45)
N150 M306 T.1
N160 G55 O1
N170 G01 C9. A-90. F3000

圖4 刀具路線圖
N180 G154
N190 S3300 M3
N200 G1 X0. Y-8.128 F3000
N210 Z172.415
N220 G83 X0. Y-8.128 Z139.915 E119.915 R124.915 D1. F70
N230 G80
N240 X0. Y-8.128 Z172.415
N250 G01 C13.5 A-90. F3000
N260 G154
N270 G83 X0. Y-8.128 Z139.915 E119.915 R124.915 D1.
N280 G80
N290 X0. Y-8.128 Z172.415
N300 G01 C18. A-90. F3000
N310 G154
N320 G83 X0. Y-8.128 Z139.915 E119.915 R124.915 D1.
N330 G80
……
N2240 X0. Y-8.128 Z172.415
N2250 G01 C352.286 A-90. F3000
N2260 G154
N2270 G83 X0. Y-8.128 Z139.915 E119.915 R124.915 D1.
N2280 G80
N2290 M5
N2300 M9
N2310 M242
N2320 G1 C0. A0. F3000
N2330 G154
N2340 M02
Master CAM后置處理開發所使用的是其公司專用的MP語言,針對該語言及系統函數、變量的詳細講解的資料非常少。本文是根據我公司意大利五軸加工中心HS664RT的使用要求,在Master CAM 2018自帶Fanuc五軸后置處理的基礎上進行二次開發的過程中得到的一些方法及心得。通過不斷摸索以及嘗試,此次二次開發達到了預期的目標,滿足了使用上的要求,實現了CAM軟件與數控設備的無縫連接。