这就能使程序简洁明了,节省内存空间。但应用子程序至少要占用两个程序名(即主程序和子程序各占1个)。
有的数控系统程序总数只有64个,当加工的产品种类较多时,只能删除原有的其他程序。另外,在执行子程序过程中出现问题(比如崩刀),再重新调试执行是件很麻烦的事。
而宏程序是通过数学计算或逻辑运算,以变量的不断变化进行编程,程序非常简洁且逻辑性强。特别是加工一些非圆曲线时(如椭圆、抛物线等),更显示出宏程序的优越性。
当我们在加工形状相同而尺寸不同的产品时,只需要改变其中的的变量就解决问题了。一般情况下,宏程序的编写都较为复杂,对编程人员和操作人员的要求较高,且其应用受机床数控系统宏程序功能的限制——有的机床只能运行宏程序功能A,不支持宏程序功能B,有的旧系统甚至不带宏程序功能。
如果将子程序和宏程序结合起来使用,就可以相互取长补短,使编程和加工调试都方便快捷,为生产节省辅助时间,提高生产效率。编程人员和操作人员只需要懂得一些简单的宏程序知识就能应付自如。下面就以两个例子说明子程序与宏程序在数控车削中的综合运用。
一、一次装夹车多件
在车削加工中,当需加工多个相同的精度要求较高的小零件时,为避免机床的重复起动,应用子程序实现一次装夹车多件较为理想。是一件较薄的螺纹栓,直径为30mm,两边倒角1mm×45º。
这里的要求为:毛坯Ф32mm,右端面中心为工件坐标原点,一次装夹加工10件。工件伸出约100mm。切断刀刀宽2.5mm,左刀点对刀。采用广州数控系统980TDA,前刀架,具体编程如下。
O1234;
G50 X100. Z100.;定义工件坐标系
T0101;外圆车刀
M03 S500; 主轴正转,500r/min
G00 X32. Z2.;
G90 X30. Z-90. F100; 粗加工外圆
S1000;
G00 X28.;
G01 Z0. F100;精加工外圆
G01 X29.8 Z-1. F50;
G01 Z-85.;长度要保证可加工10个工件
G00 X100. Z100.;退回换刀点
S800;
T0202;60º螺纹车刀
G00 X32. Z2.;
G92 X29. Z-85. F1;加工螺纹,螺距为1mm
G92 X28.85 Z-85. F1;
G92 X28.8 Z-85. F1;
G00 X100. Z100.;退回换刀点
M00;程序暂停,检验螺纹
M03 S600;
T0303;切断刀,刀宽2.5mm
G00 X31. Z0.;定位
#1=2.5;宏变量输入刀宽值
#2=#1 5.3; 宏变量输入每次移动值
M98 P104321; 调用子程序(O4321)10次
G00 X100. Z100.; 退回换刀点
T0101;
M30; 主程序结束
子程序:
O4321;
G94 X-0.5 W-0.1 F60;精车右端面
GOO W-#2;移动一个切断距离
G94 X10 F60;先开槽
G94 X27.6 W0 R1.7;工件左边倒角,留0.2mm余量给下道工序车左端面
G94 X27.8 W0 R-1.6;下一个工件的右边倒角,并留0.1mm余量精车端面
G94 X-0.5 W0.1 R0;切断
M99;子程序结束返回
这样编程的好处在于,如果在加工过程中,切断刀磨损或折断,在刃磨好或更换切断刀后,重新对刀,只需更改宏变量(#1)和子程序的调用次数,然后定位到“G00 X31.Z0.”,按“循环起动”就可以继续加工了。
二、大凹圆弧的加工
车削大凹圆弧,由于直径方向尺寸相差太大,无法一二次走刀来完成加工。若采用G73固定循环指令编程,则空走刀过多,影响生产率效。
若用切槽刀进行开粗,圆头刀半精、精加工,虽然加工效率较快,但需手工计算或利用CAD绘图找出相应点的坐标,所需辅助时间较长。并且,用切槽刀开粗,径向受力大,不适合工件刚性不够的情况下使用。
此时,若使用子程序和宏程序的混合编程进行加工,则能较好地解决上述问题。如图2,在直角三角形ABC中,B为R31的圆心。已知AC=(80-10-10)/2=30,BC=31,。故取开始切削的圆弧半径为8mm,切削的圆弧半径每次增加1mm。如图3,计算出EF≈5.5mm,并计算出每次Z轴移动量约为1.374mm。编程如下(只编写加工凹圆弧部分,使用的圆头车刀半径为2mm,圆心作为对刀点):
O4567;
G50 X100. Z100.;定义工件坐标系
M03 S500;主轴正转,500r/min
T0303;圆弧车刀,R=2mm
G00 X84. Z-40.;定位到E点
#1=1.374;每次Z轴移动量
#2=5.5-#1;定位初值
#3=7.;半径初值
#4=1.;半径增值
G00 W#2;
M98 P107654;调用子程序
G00 G42 X84 Z-10 D03; 执行半径补偿
G01 X80 Z10 F60;
G02 X80 Z-70 R31; G01 X84 ;最后精加工
G00 G40 X100 Z100; T0101;取消半径补偿
M30; 主程序结束
O7654; 子程序
G00 W#1;Z轴正向进给1.374mm
#2=#2 #1;
#3=#3 #4;半径值加1mm
#5=#2 #2;
G02 W-#5 R#3 F80; 从右至左加工圆弧
G00 W-#1;Z轴负向进给1.374mm
#2=#2 #1;
#3=#3 #4;半径值加1mm
#5=#2 #2;
G03 W#5 R#3 F80; 从左至右加工圆弧
M99;子程序结束返回
上述编程每次在半径方向进给1mm,调用1次子程序半径方向进给2mm,加工过程没有多余的空走刀,加工效率极高。在子程序中不执行刀具半径补偿,所以刀具要偏移轮廓超过一个刀具半径值。
如果机床不支持刀具半径补偿功能,可以在编程时人工编移一个刀具半径进行加工。如果机床只能执行宏程序功能A而不能执行宏程序B的话,可以用宏程序的加法运算指令“G65 H02”来代替上述宏变量的加法运算,不会影响加工效果。
掌握一些子程序和宏程序的编程知识,是编程人员的基本要求。在实际应用中,编程人员要做到灵活和变通,综合运用子程序和宏程序进行编程,这样才能起到事半功倍效果。
,