数控加工中变坐标问题的研究
2023-11-10田源刘岩朱奕玮关磊庄睿晨郭雨龙唐宏佳
田源,刘岩,朱奕玮,关磊,庄睿晨,郭雨龙,唐宏佳
(1.沈阳航空航天大学机电工程学院,辽宁沈阳 110136;2.沈阳航空航天大学工程训练中心,辽宁沈阳 110136;3.沈阳航空航天大学安全工程学院,辽宁沈阳 110136;4.沈阳航空航天大学能源与环境学院,辽宁沈阳 110136)
0 前言
在普通的数控加工中,一旦该机床的基机械坐标确定,其加工平面就已经确定了,如:三轴的立式加工中心其加工面一般为G17(XY)平面,卧式加工中心的加工面一般为G18(XZ)或G19(YZ)平面。但是在一些变坐标的特殊加工中,一台机床可能要进行多个加工面的切换[1]。普通加工时都是一台机床只有一个加工平面,但是在安装侧铣头及安装倾斜角夹具等一些特殊的情况下就会出现多个加工平面的情况。除此之外,五轴加工中心和车铣复合加工中心在联动加工时,以归零时的加工平面为准,但是当固定角加工时也需要配合G17/G18/G19这3个不同平面之间的转换才能正确使用。所以在复杂的高端后处理制作中能否自动判断G17/G18/G19这3个平面的算法和逻辑关系就显得很重要。后处理运用UG/PostBuilder构建与数控系统相匹配的2个文件,即:事件处理文件(.tcl文件)和格式定义文件(.def文件)。.tcl文件用于定义事件的处理方式,将刀位数据转换为机床指令代码;.def文件则用于定义事件处理后机床可执行文件输出的数据格式。在国内,王钧等人[2]对三轴机床侧铣加工中判断平面的后处理进行定制,起到了一定的效果,但在多轴加工、复合加工中仍无法实现。
本文作者针对以上问题进行深入研究,旨在梳理出变坐标加工中后处理自动判断加工平面的机制、流程、相关运动的代码,达到能够制作出自动判断G17/G18/G19加工平面,并且能够输出相应插补以及配合机床使用的NC代码的目的,为变轴加工、五轴机床定轴加工、车铣复合加工的后处理制作提供相应解决方案[3-4]的同时,再进行仿真试验来检验代码在侧铣刀加工中的作用。
1 不同平面之间关系及转换
数控加工平面示意如图1所示,在床身 1和机床底座 3组成的机床主体框架上,机床机械坐标系5按照笛卡尔坐标系的原则将空间中能够加工的面分为:(1)由XY平面组成的G17加工平面;(2)由XZ平面组成的G18加工平面;(3)由YZ平面组成的G19加工平面。从图中可以看出:不同的平面其圆弧插补的方向完全不一致,如果在后处理中没有做好加工平面的判断,则会造成加工轨迹出错,无法加工零件甚至偏移过多造成碰撞导致机床工件的损坏。
普通的加工中只会出现上述3种加工平面中的任意一种,安装侧铣头或角度夹具后则会出现加工平面的变化。五轴机床通过旋转轴可以达到上述的任意一种情况,从而改变加工平面[5-7]。而车铣复合由于车削和铣削时坐标不一致也会出现加工平面的变化。所以要制作能够自动判断加工平面的后处理,需要先说明不同平面之间的原理以及差别,利用代码识别之间的差别,达到自动判断的目的,最后再结合UG/Post软件将结果输出成NC代码传输给数控机床。
由于在G17/G18/G19 3个不同的平面之间转换时其坐标发生了旋转,而机床的原始机械坐标系仍然固定不变,所以当坐标变换为G18和G19时,其变换坐标和原始坐标之间还存在着转换关系,其关系如下:
当判断为G17时,MCS坐标和机床的加工机械坐标一致,G17的空间坐标如下:
当自动判断坐标为G18(XZ)坐标时,其翻转坐标的关系如下:由于翻转为G18平面,即当前加工平面以立式加工中心的坐标来看是以XZ平面为底面的,此时刀具的轴线垂直于XZ平行于Y,所以刀具是沿着Y方向垂直进给的,则Y和Z需要做相应的变换。然而该变换又存在2种情况,即在Y的正方向象限,或者在Y的负方向象限,所以存在着Y→-Z、Z→Y或者Y→Z、Z→-Y2种坐标转换情况,系统会根据其刀具在编程中MCS坐标的方向来判断具体是哪一种。
当自动判断坐标为G19(YZ)坐标时,其翻转坐标的关系如下:
2 后处理制作
后处理是将软件中已经编制好的刀具轨迹转换成机床能够识别的特定NC代码,除此以外,该代码还要能够实现机床的一些特定功能的定制、加工时的刀具信息获取以及碰撞保护[8-9]。
2.1 后处理运行流程
后处理流程如图2所示,在软件中编好路径程序以后,就开始进行后处理的转换。
图2 后处理流程
(1)程序开始后首先进行刀具列表的判断输出,刀具列表放在开头的原因是刀具列表里含有中文或者特殊的罗马字母,这些字母很可能造成程序在机床上报错,所以统一放在程序开头的%号之前。这样整个系统就不会识别刀具列表的代码,不会出现报错。除此以外,将程序放置开头,也能够方便操作者观看。
(2)初始化机床的参数,包括对机床参数的选择,比如公制还是英制以及刀具补偿等参数的提前设置。
(3)判断软件中的刀具实际垂直于哪一个平面,该方法需要编程软件中的刀轴设置和MCS坐标设置相互配合。
(4)判断完成后,根据该坐标系下的关系特点进行圆弧和直线插补运算。
(5)完成后返回参考点,如果还有下一个工序则继续执行,否则结束程序。
2.2 后处理制作
进行后处理程序定制使用的软件是UG/Post,其原理是UG/Post使用事件调用的方式编译前处理刀具路径轨迹,事件中放置固定模块和用户自定义命令[10]。通过TCL语言编写,实现定制化功能。因为侧铣头刀具的结构和普通刀具的结构不一样,相应的后处理方式也不一样,如果使用普通的后处理方式,机床就很容易撞机。
程序定制之前,先创建后处理文件,名称为CY1003-LATER,单位为mm。由于侧铣头的刀具中心线和机床主轴的中心线具有一定角度,使用UG/Post的三轴定制模块在很多情况下由于系统判定Z轴运动轨迹和XY平面不垂直会直接报错,所以需要使用四轴的模块进行定制,并且限制旋转轴就可以解决这一问题。
2.2.1 程序开始模块
图3所示为程序开始定义模块。后处理程序设计包括以下步骤:
图3 程序开始定义模块
(1)程序开始时,首先使用命令{MOM set seq off}将程序开始的程序号关闭,避免在%出现之前就开始排序,也是为了程序的美观。
(2)使用定制命令{MOM_disable_address},该命令能够限制旋转轴ABC做任意旋转,并且使它强制输出,保证它每一次都能限制旋转轴运动。
(3)既要保证限制旋转轴,还要保证NC程序中不出现旋转轴(ABC)后面的数值,否则当机床拥有四轴时会发生反转,没有四轴时会报错。
(4)使用定制命令{mom_mcs_goto(0~2)}插入加工坐标(MCS),一般为G54-G59。插入TCL语言中的{set mom_sys_adjust_code 43},该指令的作用是在NC程序中插入Hxx代码,xx的数值视具体补偿值而定。通过以上定制,程序的开头基本完成。
2.2.2 自动判断指令定制
自动判断平面的后处理模块在定义之前需要先声明变量,这里的变量在书写语言之前就已经被封装在程序中,可以进行调用,而这里的声明就是将已经封装的命令进行调用[11],具体声明变量定义如图4所示。
(1)global mom_cycle_spindle_axis mom_sys_work_plane_change。该指令用于声明循环轴,即有转速的主轴工作平面Workplane发生了改变。
(2)global traverse_axis1 traverse_axis2 mom_motion_event mom_machine_mode。该命令用于声明移动轴1和移动轴2的运动事件的加工代码调用,在坐标转换中不需要考虑旋转轴ABC,所以确定其中移动的2个轴以后,就可以知道其加工平面。
(3)global mom_pos mom_prev_pos mom_from_pos mom_last_pos mom_sys_home_pos。由于该后处理的平面可以变换,所以前一个平面和后一个平面不同,这里根据前一个平面的坐标和后一个平面坐标是否发生了变化来做判断。
(4)global mom_sys_tool_change_pos。除了知道主轴的平面,刀具的刀轴矢量也需要声明,因为变坐标的使用中有一种方法就是“侧铣头”,侧铣头的主轴和刀轴矢量不在一条直线,所以需要两者配合判断。
(5)global spindle_first rapid_spindle_inhibit rapid_traverse_inhibit。该命令用于抑制第一刀切削时的快速移动,变坐标后坐标系改变容易造成误判,低速进给第一刀更有利于加工技师的观察。
在后处理中判断出坐标是否变换或者判断坐标是在哪个面,通过前面的叙述只要对比程序中的固定坐标系机床MCS和当前加工的主轴刀轴矢量和刀具矢量是否变换,如果变化,再判断出其移动轴就能判断出其加工平面,但是平面变化后的坐标变化即上述的坐标系转换是后处理的难点[12]。平面判断和坐标转换关系如图5所示。
图5 平面判断和坐标转换关系
使用if 指令判断机床当前加工刀具主轴{ ![info exists mom_from_pos($mom_cycle_spindle_axis)] &&和机床的自身坐标,该坐标在软件中为MCS在代码中用_{home_pos}表示,[info exists mom_sys_home_pos($mom_cycle_spindle_axis)] }。通过上述指令首先对坐标是否改变做判断,利用上述的声明调用判断后再进行坐标转换,其具体转换过程为:当为G18平面时,即原坐标中的X不变,Y变为Z,Z再替换为Y,在程序中分别用0、1、2来代表XYZ的坐标。其算法代码如下:
set mom_from_pos(0) $mom_sys_home_pos(0)
set mom_from_pos(1) $mom_sys_home_pos(2)
set mom_from_pos(2) $mom_sys_home_pos(1)
当为G19平面时,即原坐标中的Y不变,X变为Z,Z再替换为X,在程序中分别用0、1、2来代表XYZ的坐标。其算法代码如下:
set mom_sys_home_pos(0) $mom_from_pos(2)
set mom_sys_home_pos(1) $mom_from_pos(1)
set mom_sys_home_pos(2) $mom_from_pos(0)
完成以上的变换后,使用set mom_from_pos(0) 0.0指令、 set mom_sys_home_pos(0) 0.0指令插入,该指令中的0.0与上述的0代表的X不同,这里表示孔集,当上述判断完成后,利用该集合插入。
上述的指令只完成了坐标的位置转换,但是在第1节中提到,不光是位置的变换,还有在不同象限导致的正负号的变化,所以还需要对正负赋值。坐标位置正负判断如图6所示。
图6 坐标位置正负判断
首先需要使用if { ![info exists mom_sys_work_plane_change] } {set mom_sys_work_plane_change 1}命令,该命令的作用就是先判断加工的坐标和机床的坐标是否发生变化,如果发生了变化,则使用[Reverse workplane change direction per spindle axisglobal mom_spindle_axis]命令判断Workplane(加工平面)和Spindle Axisglobal(刀具主轴)旋转轴的平面是否一致,若不一致则说明方向发生了变化,则需要对其方向的正负赋值。使用set going_lower[expr abs($going_lower - 1)]命令可以赋值,由于在软件中已经有了坐标系,所以此处不需要书写判断具体在哪个方向,只需要调用已经有的函数,即上述的set going_lower [expr abs($going_lower - 1)]指令,判断并且按照图中的办法即可。
2.2.3 相关参数设置
上述的设置在程序中已经实现,但是对于如何判断平面是否改变,平面具体是哪一个,判断完平面后坐标是否有正负等问题,上述的基础设置完毕以后还需要添加输出的主体即G17/G18/G19指令的输出地址,如果没有输出地址,就犹如球体内的水滴,没有缺口输出,相关参数设置如图7所示,需要在平面插补和钻孔循环插补中添加2个G17/G18/G19指令,并且选择不让指令强制输出。
图7 相关参数设置
按照以上的设置要求,就可以让后处理自动判断输出G17/G18/G19指令,并且完成不同指令下的坐标替换以及坐标的正负值问题。
2.2.4 插补指令定制
在G17、G18等平面判断完成后,可以进行自定义,图8所示为插补指令自定义命令,而侧面铣刀后加工器的所用的是G41 G17/G18 G01 G90 X Y Z F D S M03 M08;G41作为模式命令[13]的工具,它是关于工具行进方向左边的工具补偿(可以是正数或者负数);G17/G18指示是采用绝对值程序指令G90进行的。通常,无论是顺铣削或反向铣削,都要采用SxxM03命令的形式,可按不同的生产流程选用;M08命令控制切削液的打开;剩余的命令为基本程序,在此不再赘述[14]。
图8 插补指令定制命令
2.3 个性化刀具表和错误提示
在高级后处理器的定制中,后台自定义不仅可以稳定地提供符合加工要求的 NC代码,而且还可以通过 TCL进行定制。在实际应用中,最常见的是工具清单模块和自动判断转速、进给模块。因为批量制造企业通常按照产品的工艺位置设定程序工程师与作业技术员,在后处理程序中加入工具清单,使作业人员能清楚地看见工具资讯,防止错误判断。而自动判定转速和进给模块则会提示编程人员,一般的后加工软件,即使没有转速和进给,也能输出 NC代码,但这样做会导致加工速度过快,导致零件损坏。作者对刀具清单定制、转速和进给量报警代码定制进行了具体的剖析和说明。
1.2.1 纳入与排除标准:纳入标准:年满18周岁,症状性、药物难治性Af患者,第一次行RFCA患者。排除标准:二次手术患者,数据不全或术后失访,因其他疾病一年内死亡患者。
2.3.1 刀具清单定制
图9显示了工具列表,它位于项目标题“%”以下,而第一个 Txx (T02)表示工具编号,这里 xx是一个可以随意更改的代码;TxDxRx是指工具的尺寸,也就是工具的规格和工具的直径以及工具的角度,例如T2D70R0是指工具的二次加工,该工具的直径是70 mm,圆弧半径是0。另外,对于操作员而言,最重要的2个参数是Zmax和Zmin,它们之间的差异表示了最大的切削量;操作员根据这些资料可以准确地判定卡钳的长短,防止由于工具太长而造成震动干扰,或因工具太短而发生与机器相撞的意外[15]。
图9 刀具清单示意
要完成图10所示的刀具清单,需要TCL命令实现定制。首先需要使用5组封装命令:
图10 刀具清单代码示意
global mom_tool_name
global mom_tool_type
global mom_tool_diameter
global mom_tool_flutes_number
以上命令分别实现以下功能:显示刀具名称,显示刀具类型,显示刀具直径,显示刀具半径,显示刀具号。
后加工定制程序内嵌的指令可直接展示出来,但如果计算刀具长度稍显复杂,还需代码编写,刀具长度自定义指令见图11。
图11 刀具长度定制命令
如图11所示,自定义一个能输出刀具长度的后处理程序后,需要通过如下代码判断是否有刀具:
if {![info exists ino]}{set ino 1 if {[file exists $tool_lists_file_name]}
上述编码的含义是指执行后处理程序的输入是否有刀,若有刀具则置位为1,然后输入到刀具列表。
完成以后,当输入大于1时,说明存在刀具,就可进行最大值MAX和最小值MIN输出,代码如下:
if {$ino >1} {puts $tfile "(ZMAX=[format "%.2f" $mom_sys_max_travel(2)] ZMIN=[format "%.2f" $mom_sys_min_travel(2)])"
2.3.2 转速和进给量报警代码定制
编程时常常会碰到忘了设置刀路转速或进给速度的问题,这种时候若是输出代码为NC,机器工作时会因为无转速而容易发生撞刀现象,而代码定制则能很好地表现出这种误差。所用编码如下:
global mom_spindle_speed
if { $mom_spindle_speed == 0 } {set mom_spindle_speed "未设置转速"}
以上代码的意义是当函数spindle_speed(机床转速)等于0的时候,在编程界面提示该情况,报警示意如图12 所示。
图12 报警示意
3 仿真验证
尽管许多机器能够与 NC编码进行后加工,但其容量也就局限在 ISO或者符合国家标准的 NC文档(APT)与 CNC的控制体系之间,因此其运算量也就受到了限制[16]。因此,要做一个仿真试验。表1显示了该试验中使用的机械设备的各种性能。
表1 机床参数
表1所示的1 300 mm×600 mm的冲量,可确保侧面铣刀在工作时具有充分的工作间隙,而BT40的圆锥杆可确保侧面铣刀夹紧,其主轴的输出功率和输出速度都比一般的垂直加工机床要高,可以为试验的顺利进行奠定基础。
为进一步证明这种面向垂直切削的侧铣刀片后处理的自定义能够在生产中正常、安全地进行,文中采用实例编程推导后处理软件,并进行工艺模拟,从而证明其正确性和可靠性。为保证这种检验具有一定的可信度,文中选取的零件是一个具有以下特点的车床前基础盒式模具:
(1)所述工件必须进行两侧的内、外表面的弧形处理,并对G17、G18进行判定。
(2)工件尺寸大,有很强的可信度。
(3)工件具有较大的切削面积,能够检验数控机床在切削时的切削轨迹和进给量的适应性。
图13显示了一个确认试验的原理。首先,将NC程序导出,其由此处的后加工产出,透过 NC程序,可以很明显地看到后加工已结束G17或G18的选取(参见程序第4行(G40 G18 G80))。此外,NC程序中还包括对应的刀具清单、刀具长度等。在观测此程序的同时,还对它进行了计算机编程仿真,以求进一步证实其准确性。箱体铸件的工件3底面和支撑板2接触;2根直径14 mm的螺杆5的一端和支撑板螺纹连接,另一端通过螺母预紧压板4将工件固定;最后支撑板的4个脚和机床底座1上T形槽中的T形螺母连接,限制所有的自由度完成装夹;最后安装在机床6上面的侧铣头7进行加工。完成装配后,在编程模块分别进行构建工件、构建毛坯、添加刀具、插入坐标、编制程序、选择机床、找加工坐标以及对刀等操作完成程序的仿真。
图13 验证实验示意
上述试验表明这种后处理自适应技术能够在切削刀具的生产中得到应用。结果表明:所设计的后处理定制方法正确合理,可为侧铣刀片的生产实践提供一定的借鉴作用。
4 结论
文中针对普通数控机床加工难以加工死角和干涉面的情况进行研究,通过添加变角度刀具进行变坐标加工,并在UG/Post软件上对该后处理进行制作,验证了该变坐标加工后置处理方法的可行性,对于侧铣加工具有一定的借鉴意义。