首先声明此文转载于数控机床网,
一、引言
目前,我国现代制造技术飞速发展,与世界制造业先进水平的差距不断缩小, 数控加工技术在我国得到广泛应用,越来越受到人们的重视。数控加工中很重要的一部分就是编程,它既是数控技术的重要组成部分,也是数控加工的关键技术之一,数控程序编制的效率和质量在很大程度上决定了产品的加工精度和生产效率。
在我国,有相当多数控铣床(包括加工中心)都是应用在模具行业,大部分模具厂都应用CAD/CAM软件。CAD/CAM软件出现以后,自动编程得到广泛应用,手工编程、宏程序应用的空间日趋缩小,究其原因就是大家对手工编程不重视,对宏程序不熟悉。其实手工编程是自动编程的基础,宏程序是手工编程的高级形式,是手工编程的精髓,也是手工编程的最大亮点和最后堡垒。 现在有一种说法比较流行:“宏程序没有啥用!”, 笔者并不赞成。在实际工作中,宏程序有广泛的应用空间,并且能够方便手工编程,锻炼操作者的编程能力,又能解决自动编程在生产实际工作中存在的不足。
二、宏程序简介
宏程序是以变量的组合,通过各种算术和逻辑运算,转移和循环等命令,而编制的一种可以灵活运用的程序,只要改变变量的值,即可以完成不同的加工和操作。
用户宏程序与普通程序的区别在于:在用户宏程序本体中,能使用变量,可以给变量赋值,变量间可以运算,程序可以跳转;而普通程序中,只能指定常量,常量之间不能运算,程序只能顺序执行,不能跳转,因此功能是固定的,不能变化。用户宏功能是用户提高数控机床性能的一种特殊功能。宏程序可以简化程序的编制,提高工作效率。宏程序可以像子程序一样用一个简单的指令调用。
三、宏程序的技术特点
1、宏程序具有灵活性、通用性和智能性等特点
宏程序注重把机床功能参数和编程语言相结合,溶入了编程人员的智慧。编程人员根据零件的几何信息建立相应的数学模型,完成模块化的加工程序,除了便于调用外,还使编程人员从繁琐的、大量的重复性工作中解脱出来,这是任何自动编程软件都不能达到的效果。
而在CAD/CAM软件中,当零件的几何参数改变时,都要重新建模,重新设置加工参数,重新计算刀具轨迹,重新生成数控程序。
2、宏程序结构简单、阅读直观、存储方便
CAD/CAM软件生成的程序少则上千行,多则上10万行,可读性差,存储容量大,一般的机床上的内存都存不下,因此一般来说除了相对简单的孔系加工、二维轮廓加工以外, 其余绝大部分程序都不得不以DNC方式进行在线加工,显然机床与电脑之间的传输速度成为了影响加工速度的第一个“瓶颈”因素。除了那些机床系统内置硬盘、或机床与电脑之间以FDDI、以太网等形式进行组网的新型数控机床(主要是高速加工机床)之外,目前占总数8 0%以下的数控铣/加工中心都是通过RS2 32口的串口通讯求实现DNC在线加工的。在实际应用中,考虑到传输效果,DNC在线加工方式下的加工效率要大打折扣。
但宏程序可以弥补这种不足,它结构严紧、分析方便、可读性好、短小精悍,任何合理的、优化的宏程序一般都少于6O行,换算成字节数,至多不过2KB的容量。即使是最廉价的机床数控系统,也完全容纳得下任何复杂的宏程序。
3、宏程序加工精度高、加工效率高
CAD/CAM软件生成的数控程序,是用“直线去逼近曲线曲面”,必然存在计算误差、后置处理误差,就必然使加工精度受到影响,还存在大量的刀具路径重复现象,使加工效率下降。
宏程序能直接调用数控系统的圆弧插补,螺旋插补等指令,能有效地控制刀具路径,具有运算速度快、加工效率高、加工精度高等特点。
四、HNC-21/22M系统中宏程序的应用
例1 在铣床或加工中心上钻削如图1所示一70x90x15mm方形零件上的矩形网式群孔。钻孔直径¢7mm,孔数H=24。试编写其宏程序。
解:
工艺设计
⑴建立工件坐标系,工件左下角为工件坐标系X、Y轴的零点,工件上表面为
工件坐标系Z轴的零点,机床坐标系偏置值设置在G54寄存器中。
⑵刀具与切削参数
选择¢7mm的麻花钻,取主轴转速为800r/min,钻削进给速度为150mm/min;主轴起始位置在零件上方50.0mm,刀具起始切削安全高度为4.0mm,最终加工深度为Z-20.0mm。
⑶加工路线(见图2)
2、加工程序
OZW01; 文件名
%0001; 主程序号
N10 T1 M06; 调用1号刀
N20 G17 G90 G21 G54 G94 G40 G49 G80; 工艺加工状态设置
N30 G43 G00 Z50.0 H01 S800 M03; 刀具长度补偿,主轴正转
N40 X0.0 Y0.0 M07; 刀具快速移动到工件坐标零点,打开切削液
N50 #2=20.0; 将20.0赋值给#2
#3=10.0; 将10.0赋值给#3
#4=1; 矩形网式孔群行计数器置1
#5=1; 矩形网式孔群列计数器置1
#30=4.0; 将行数4.0赋值给#30
#31=6.0; 将列数6.0赋值给#31
#32=15.0; 将角度15.0赋值给#32
#33=10.0; 将列孔距10.0赋值给#33
#34=10.0; 将行孔距10.0赋值给#34
#10=-20.0; 最终加工深度
#11=4.0; 安全距离
#12=150.0; 切削进给速度
N60 M98 P1000; 调用宏程序
N70 G00 Z100.0 M09; 刀具退到工件上表面100mm处,切削液关闭
N80 G49; 取消刀具长度补偿
N90 X0 Y0 M05; 刀具退到工件坐标零点,主轴停止
N100 M30; 程序结束并返回程序起始段
%1000; 宏程序
N10 WHILE #5LE#31; 如果#5(孔列计数值)大于#31(孔列数),则跳转到N210程序段
N20 WHILE #4LE#30; 如果#4(孔行计数值)大于#30(孔行数),则跳转到N80程序段
N30 #101=[#4-1]*#33; 计算当前孔与第一个孔的孔中心行间距值
N40 #102=[#5-1]*#34; 计算当前孔与第一个孔的孔中心列间距值
N50 G01 X[#101*COS[#32*PI/180]+#102*SIN[#32*PI/180]+#2]
Y[#102*COS[#32*PI/180]+#101*SIN[#32*PI/180]+#3] F1000; 机床移动到当前加工孔中心的X、Y坐标
N60 G81 Z[-#10] R[#11] F[#12] K0; 调用固定循环程序钻定位孔
N70 #4=#4+1; 孔行数加1
N80 ENDW; 返回循环体
N90 #4=#30; 将孔行数赋值给变量#4
N100 WHILE #4GE1; 如果#4小于1,则跳转到N180程序段
N110 #101=[#4-1]*#33; 计算当前孔与第一个孔的孔中心行间距值
N120 #102=#5*#34; 计算当前孔与第一个孔的孔中心列间距值
N130 #103=[#31-1]*#34; 孔中心列间距值计算
N140 IF ABS[#102] GT ABS[#103]; 如果ABS[#102]大于ABS[#103],则跳转到N220程序段
N150 G01 X[#101*COS[#32*PI/180]+#102*SIN[#32*PI/180]+#2]
Y[#102*COS[#32*PI/180]+#101*SIN[#32*PI/180]+#3] F1000;
机床移动到当前加工孔中心的X、Y坐标
N160 G81 Z[-#10] R[#11] F[#12] K0; 调用固定循环程序钻定位孔
N170 #4=#4-1; 孔行数减1
N180 ENDW; 返回循环体
N190 #5=#5+2; 孔列数加2
N200 #4=1; 行计数器置1
N210 ENDW; 返回循环体
N220 ENDIF;
N230 M99; 子程序结束,并返回主程序
例2 在铣床或加工中心上钻削如图3所示一90x90x15mm方形零件上的圆弧点阵孔群。圆弧点阵孔群零件的圆弧中心绝对坐标为X0=40.0mm,钻孔直径¢7mm,弧形半径I=30.0mm,孔间隔角度D=30°,第一孔的起始角A=15°,孔数H=4。试编写其宏程序。
解:
1、 工艺设计
⑴建立工件坐标系,工件左下角为工件坐标系X、Y轴的零点,工件上表面为
工件坐标系Z轴的零点,机床坐标系偏置值设置在G54寄存器中。
⑵刀具与切削参数
选择¢7mm的麻花钻,取主轴转速为800r/min,钻削进给速度为150mm/min;主轴起始位置在零件上方50.0mm,刀具起始切削安全高度为4.0mm,最终加工深度为Z-20.0mm。
⑶加工路线
采用逆时针位移钻削方式钻削圆弧点阵孔群。
2、加工程序
OZW02; 文件名
%0002; 主程序号
N10 T1 M06; 调用1号刀
N20 G17 G90 G21 G54 G94 G40 G49 G80; 工艺加工状态设置
N30 G43 G00 Z50.0 H01 S800 M03; 刀具长度补偿,主轴正转
N40 X0.0 Y0.0 M07; 刀具快速移动到工件坐标零点,打开切削液
N50 #1=40.0; 圆弧中心的X坐标
#2=30.0; 圆弧中心的Y坐标
#3=30.0; 圆弧半径
#4=15.0; 第一孔的起始角
#5=4.0; 圆周上孔数
#6=30.0; 均布孔间隔度数
#7=-20.0; 最终加工深度
#8=4.0; 安全距离
#9=150.0; 切削进给速度
N60 M98 P2000; 调用宏程序
N70 G00 Z100.0 M09; 刀具退到工件上表面100mm处,切削液关闭
N80 G49; 取消刀具长度补偿
N90 X0 Y0 M05; 刀具退到工件坐标零点,主轴停止
N100 M30; 程序结束并返回程序起始段
%2000; 宏程序
N10 #100=1; 赋孔计数器初始值
N20 WHILE #100LE#5; 如果#100(孔计数值)大于#5(孔数),则跳转到N110程序段
N30 #30=#3*COS[#4*PI/180]; 圆弧中心到圆弧上任意孔中心的横坐标值
N40 #31=#1+#30; 圆弧上任意孔中心的工件绝对横坐标值
N50 #32=#3*SIN[#4*PI/180]; 圆弧中心到圆弧上任意孔中心的纵坐标值
N60 #33=#2+#32; 圆弧上任意孔中心的工件绝对纵坐标值
N70 G90 G00 X[#31] Y[#33] F[#9]; 刀具直线插补到圆弧上任意孔中心上方
N80 G99 G81 Z[#7] R[#8] F[#9] K0; 调用固定循环程序钻孔
N90 #100=#100+1; 孔计数器加1
N100 #4=#4+#6; 孔位置角度叠加一个角度均值
N110 ENDW; 返回循环体
N120 G80; 取消固定循环
N130 M99 子程序结束,并返回主程序
五、结语
宏程序在现在的加工中都能用到,而且在加工有规律的工件时无论是加工速度还是加工精度都比自动编程来得好,手工编程是基本功,任何时候都是必须掌握的。不能落在一边,要利用起来,不能单纯的依赖自动编程,现在的全国数控大赛只允许手工编程,而且国外的一些数控相关的考试都是采用手工编程,不允许使用CAD/CAM 软件进行编程,可见宏程序是很重要的。能用手工编程的工件尽量用手工编程,我们在平时就应该在能用宏程序加工时把宏程序用上,以锻炼操作者的编程能力,经过一定的努力宏程序一定能应用得很熟练。