撰文/ 江苏建筑职业技术学院 黄继战 王凤清
本文简介了子程序编程的基础知识,以实例形式论述了子程序在模具平面、凸模和多腔铣削加工编程中的具体应用。实践表明,使用子程序编程解决了因平面铣削走刀次数多、分层铣削层数多、多腔铣削腔数多而导致的无法进行的手工编程的问题,并能够克服数控自动编程程序可读性差、柔性差的缺点,缩短编程时间和工作量。
数控编程是模具加工的关键环节,编制高质量的加工程序对工件质量、效率和成本有重要的影响。在模具加工中,经常会遇到平面铣削走刀次数多、分层铣削层数多、多腔铣削腔数多而导致的手工编程繁琐问题,甚至若不采用子程序无法进行手工编程的问题。因此,本文探讨利用子程序以简化模具加工手工编程具有重要的意义。
一、FNUAC 0i 系统子程序编程基础
1. 子程序的概念
数控机床的加工程序分为主程序和子程序两种。主程序是一个完整的零件加工程序,或是零件加工程序的主体部分,它和加工零件是一一对应的关系。在编制零件加工程序中,如果其中有些加工内容完全相同或相似,为了简化程序,可以把程序中某些重复出现的程序单独抽出来,按一定格式编成一个单独的程序,以供调用,这个程序即是子程序。
2. 子程序的调用
在FANUC 0i 系统中,子程序的调用可通过M98 指令进行,且在调用格式中将子程序的程序号地址O 改为P,其常用的子程序调用格式为:M98 P L。
其中地址P 后面的四位数字为子程序号,地址L 的数字表示重复调用的次数。若只调用1 次子程序,在地址L及其后的数字可省略不写。
3. 子程序的嵌套
在编程时让程序调用另一个子程序,这一功能称为子程序的嵌套。当主程序调用子程序时,该子程序被认为是一级子程序,为一级嵌套,一级子程序再调用子程序时,该子程序被认为是二级子程序,为二级嵌套,依次类推,FANUC 0i 系统中,子程序可以嵌套4 级。
主程序在运行过程中若需要执行某一级子程序,通过M98 调用指令来调用该一级子程序,如果该一级子程序需要执行某二级子程序,也是通过M98 指令来调用该二级子程序,依次类推。子程序返回时与调用次序相反,最终一级子程序运行结束后又返回到主程序调用程序段处,继续执行下面的程序段。
二、子程序的编程应用
1. 模具平面的编程
模具主要是由板类零件组成的,平面是典型加工表面,下面以某模板平面长、宽尺寸为300×250为例进行铣削编程。
(1)编程分析。
刀具选用直径为30mm 的平底立铣刀,以刀位点进行编程,铣削平面走刀路线由单向行切和双向行切,为保证加工表面质量采用单向不对称逆铣行切,步距一般为刀具直径的0.85 倍,故步距取26mm,工件宽度为250 除以步距26,得循环次数为9.6 次,而次数须为整数,因此,循环走刀次数确定为10 次。
(2)确定编程原点,设计走刀路线。
编程零点确定在工件上表面中心,所设计的每次走刀路线如图1 所示,即P1 → P2 → P3。
(3)确定基点坐标值。
考虑刀具半径15mm、刀具X 轴方向让刀距离3mm和步距26mm,采用CAD 尺寸标注法确定P1 点绝对坐标为P1(-18,11),P2、P3 点增量坐标为P1(336,0)、P2(-336,26)。
(4)编写加工程序源代码。
综合上述分析及设计,编写参考子程序如O6001 所示,编写主程序如O1 所示,根据加工平面尺寸只需修改所编程序中基点P1、P2、P3 坐标值,即可用于加工。
O6001;(子程序名)
G90G00Z5;(切换为绝对编程,刀具快速下降到Z坐标值5mm 处)
G01Z-1.5F50;(刀具切削进给至Z 值-1.5mm 处)
G91G01X336Y0F120;( 切换为增量编程,刀具切削进给从P1 到P2 点)
G90G00Z50;(切换为绝对编程,刀具快速抬刀至Z坐标值为50mm 处)
G91G00X-336Y26;(切换为增量编程,刀具快速至下一个下刀点)
M99;( 子程序结束)
O1;( 主程序名)
G91G28Z0;(刀具Z 轴回零)
G54G90G00X-18Y11S600M03;(建立XY 工件系,刀具快速至下刀点,主轴正转,转速600r/min)
G00Z50;(刀具快速至Z 坐标值50mm 处)
M98P6001L10;(调用O6001 子程序10 次)
G00Z200;(刀具快速至Z 坐标值200mm 处)
M30;(主程序结束)
2. 模具零件的分层铣削编程
某模具零件图如图2 所示,毛坯长、宽、高尺寸为:100×100×110。
(1)编程分析。
在模具实际加工中,特别高速加工,为减小切削抗力,避免机床负载的剧烈变化,刀具每次的切削深度必须限定在一定范围内。使用子程序编程可实现刀具Z 向的分层加工。一般要求加工高度和每层切削深度为整数倍关系,该冲模型芯高80mm,确定每层切削深度2mm,则需调用子程序40 次。刀具选用直径16mm 的合金刀具。
(2)确定编程零点,设计走刀路线。
编程零点确定在工件上表面中心,设计走刀路线时注意以下4 点:①走刀路线下刀点和返回点尽量重合,以简化编程;②精加工刀具要切向切入切出工件,防止接刀痕; ③ 刀具XY 下刀点尽量在工件以外, 必要时预加工工艺孔, 保护刀具; ④ 走刀路线尽量短, 有利于基点坐标计算。所设计的每层走刀路线如图3 所示,即P → P1 → P2 → P3 → P4 → P5 → P6 → P2 → P7 → P。
(3)确定基点坐标值。
图3 中的刀具每层走刀路线图为精确设计,使用CAD软件查询法顺次确定基点坐标为:P(0,-60)、P1 (12,-52)、P2(0,-40)、P3(-30,-40)、P4(-30,10)、P5(30,10)、P6(30,-40)、P7(-12,-52)。
(4)编写加工程序源代码。
基于上述分析及设计,编写参考子程序如O6002 所示,编写主程序如O2 所示,以供参考。值得注意的是:①分层铣削子程序编程Z 向须用G91 编程;②主程序中程序段G01Z0F20,刀具须切削进给至Z 坐标值0 处,才能保证工件的加工高度尺寸。
O6002;(子程序名)
G91G01Z-2F20;(刀具每次切削深度-2mm)
G90G41G01X12Y-52D01F200;( 刀具从P 点切削进给到P1 点,建立刀具半径左补偿)
G03X0Y-40R12;( 刀具从P1 点切削进给到P2 点,圆弧切向切入工件)
G01X-30;( 刀具从P2 点切削进给到P3 点)
G01Y10;( 刀具从P3 点切削进给到P4 点)
G03X30R30; ( 刀具从P4 点切削进给到P5 点)
G01Y-40; ( 刀具从P5 点切削进给到P6 点)
G01X0; ( 刀具从P6 点切削进给到P2 点)
G03X-12Y-52R12;( 刀具从P3 点切削进给到P7 点,圆弧切向切出工件)
G40G01X0Y-60F1000;( 刀具从P7 点切削进给到P 点,取消刀具半径左补偿)
M99; ( 子程序结束)
O2;( 主程序名)
G91G28Z0;( 刀具Z 轴回零)
G54G90G00X0Y0S2000M03;( 建立工件系,刀具快速至下刀点P,主轴正转,转速2000r/min)
G00Z50;( 刀具快速下降到离工件顶面50mm)
G00Z5;( 刀具快速下降到离工件顶面5mm)
G01Z0F20;( 刀具切削进给到Z 坐标值0 处)
M98P6002L40;( 调用O6002 子程序40 次)
G00Z50;( 刀具快速抬刀至离工件顶面50mm)
G00Z200;( 刀具快速抬刀至离工件顶面200mm)
M30;( 主程序结束)
3. 模具的多腔铣削编程
假设刀具一次能加工深度为10mm,对图4 所示零件各腔进行精铣编程。
(1)编程分析。
刀具选用直径8mm 的键槽铣刀,零件各腔为精加工,为避免刀痕,设计走刀路线时,刀具圆弧切向切入切出工件,编写轮廓子程序使用G91 增量编程,实现工件轮廓形状编程与位置的无关。
(2)确定编程零点,设计走刀路线。
编程零点确定在工件上表面中心, 所设计的走刀路线如图5 所示, 各腔的加工顺序为①→②→③→④→⑥→⑦→⑧→⑨,所设计的每腔走刀路线为O → A1 → A2 → A3 → A4 → A5 → A6 → A2 → A7 → O。
(3)确定基点坐标值。
为使刀具加工形状与其位置无关,需采用G91 方式编程,因此,使用CAD 尺寸标注法确定各基点坐标增量坐标为:O(0,0)、A1(5,5)、A2(-5,5)、A3(-15,0)、A4(0,-20)、A5(30,0)、A6(0,20)、A7(-5,-5)、O(5,-5)。
(4)编写加工程序源代码。
根据以上分析及设计,编写子程序如O6003 所示,编写主程序如O3 所示,以供参考。
O6003;(子程序名)
G00Z5;(刀具快速下降到离工件顶面5mm 处)
G01Z-10F20;(刀具切削进给到切削深度-10mm)
G91G41G01X5Y5D01F60;( 切换为增量编程,建立刀具半径补偿左刀补,刀具从O 点进给到A1 点)
G03X-5Y5R5; ( 刀具从A1 点进给到A2 点)
G01X-15Y0,R5; ( 刀具从A2 点进给到A3 点)
G01X0Y-20,R5; ( 刀具从A3 点进给到A4)
G01X30Y0,R5; ( 刀具从A4 点进给到A5 点)
G01X0Y20,R5; ( 刀具从A5 点进给到A6 点)
G01X-15Y0;( 刀具从A6 点到进给A2 点)
G03X-5Y-5R5; ( 刀具从A2 点到进给A7 点)
G40G01X5Y-5F500;( 取消左刀补,刀具从A7 点进给到O 点)
G90G00Z50;( 切换为绝对编程,刀具快速抬刀至离工件顶面50mm)
M99;( 子程序结束)
O3;( 主程序)
G91G28Z0;(刀具Z 轴回零)
G54G90G00X0Y0S800M03;(建立工件坐标系,刀具快速定位至第1 个腔体中心)
G00Z50;( 刀具快速下降到离工件顶面50mm)
M98P6003L1;( 调用O6003 子程序1 次)
G00X35Y0;( 刀具快速至第2 个腔体中心)
M98 P6003L1; ( 调用O6003 子程序1 次)
……(刀具顺次定位至腔中心,调用子程序加工)
G00X35Y-25; ( 刀具快速至第9 个腔体中心)
M98 P6003L1;( 调用O6003 子程序1 次)
G00Z200;( 刀具快速抬刀至离工件顶面200mm)
M30;( 主程序结束)
三、结语
实践表明,模具铣削编程中若能充分使用子程序编程,可缩短程序长度,减少程序错误,缩短编程时间和工作量,程序修改容易且迅速;同时解决了因平面铣削走刀次数多、分层铣削层数多、多腔铣削腔数多而导致的无法进行的手工编程的问题,这些对模具加工中类似的特征编程具有极强的参考价值。