基于Master CAM的Fidia五轴后置处理二次开发
2020-07-10中国航发西安航空发动机有限公司陕西西安710021冯永星
■ 中国航发西安航空发动机有限公司 (陕西西安 710021) 冯永星
后置处理是将CAM软件生成的刀位文件转换成机床可识别的NC代码的一个重要环节,大部分CAM软件在安装时自身都配置有后置处理,然而这些文件大都是一些通用的、笼统性的文件,甚至一些CAM软件自身所带的后置处理存在缺陷或者功能并不是很完善,通过其生成的NC代码并不能直接传输到数控机床进行使用,需要手动更改方可确保加工的安全性以及零件质量。而且CAM软件并不会针对所有的控制系统配置后置处理,因此需要使用者根据所使用的数控机床的特点及习惯进行二次开发。本文是在开发基于Master CAM的Fidia NC15系统五轴后置处理过程中的一些方法及心得。
1. 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 运动分解示意
2. 后置处理及开发
分析出了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. 典型案例
图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
4. 结语
Master CAM后置处理开发所使用的是其公司专用的MP语言,针对该语言及系统函数、变量的详细讲解的资料非常少。本文是根据我公司意大利五轴加工中心HS664RT的使用要求,在Master CAM 2018自带Fanuc五轴后置处理的基础上进行二次开发的过程中得到的一些方法及心得。通过不断摸索以及尝试,此次二次开发达到了预期的目标,满足了使用上的要求,实现了CAM软件与数控设备的无缝连接。