宏程序在矩形孔系加工编程中的应用
2022-11-17黄继战范玉付红
黄继战,范玉,付红
(1.江苏建筑职业技术学院 智能制造学院,江苏 徐州 221116; 2.徐州市模具新技术工程研究中心,江苏 徐州 221116)
0 引言
孔系加工在机械加工中极为普遍,其矩形阵列分布模式最为常见,对此类零件编程采用自动编程和常量手工编程方法编制加工程序较为繁琐,反复编程,效率低下,当孔数量较多时更甚,且编制的程序冗长,使用不便。因此,本文研究采用宏指令编制通用的宏程序,只需改变参数值即可用于加工各种矩形阵列孔系,具有一定的现实意义和实用价值。
1 宏程序基础理论
1.1 变量
一组以子程序的形式存储并带有变量的程序称为宏程序;调用宏程序的指令称为宏程序调用指令[1]。FANUC 0i系统宏程序与普通数控程序最大的不同是采用变量编程,变量用符号“#”和变量号组成(#1,#2,#3,…),变量号还可以用总括号表示为表达式,数控编程时将跟在地址符后的数字用变量代替,即可实现变量的引用[2-3]。变量分为局部变量(#1 ~#33)、全局变量(#100 ~#149、#500 ~#549)和系统变量,编制加工类宏程序主要采用局部变量和全局变量。
1.2 宏程序运算
变量的赋值有直接赋值和自变量赋值两种。当主程序使用G65非模态调用宏程序时,通过自变量赋值可由局部变量对应的地址(字母)向宏程序传递数据。宏程序的运算与数学运算相类似,用各种数学符号来表示,其指令能对变量执行诸多算术、三角函数、辅助和逻辑运算等,为宏程序的编制提供了有力的工具。宏程序的运算优先顺序为函数(SIN、COS、ATAN等)-乘除、逻辑与(*、/、AND)-加减、逻辑或、逻辑异或(+、-、OR、XOR等),数控编程时根据实际需要可用总括号改变运算的先后顺序[4]。
1.3 宏程序转移指令
根据给定的条件进行分析并作出决策是宏程序最强大的功能,也是宏程序具有智能的体现。宏程序借助IF和WHILE语句可以控制宏程序的流程,来实现宏程序的循环功能。分支语句格式:IF[条件表达式] GOTO n;它表示若条件表达式成立,则转移到n程序段执行,若条件表达式不成立,则程序执行下一程序段。
WHILE语句格式如下:
当条件表达式结果为真时,程序执行DOm和ENDm之间的循环体;当条件结果为假时,程序跳出循环,执行ENDm后的程序段[5]。另外,循环最多可三级嵌套,而且嵌套级之间不允许出现循环的交叉。
1.4 宏程序调用
本文宏程序采用G65调非模态调用,编程格式:G65 P<p> L<l> <自变量赋值>;其中:<p>为要调用的宏程序号,<l>为重复次数,默认为1,<自变量赋值>为主程序传递到宏程序的数据。
2 矩形阵列孔系宏程序的设计
2.1 孔系宏程序设计
建立矩形阵列m×n孔系编程模型和编程坐标系如图1所示。编程坐标系的XY坐标轴零点为工件左下角点,Z坐标轴零点为工件上顶面。根据图1编程模型定义矩形孔系参数和工艺参数变量如下:#24表示第一个孔中心的X坐标值,#25表示第一个孔中心的Y坐标值,#1行数,表示第几行,#4表示行间距,#2列数,表示第几列,#3表示列间距,#5表示孔系矩形列数(X向孔数),#6表示孔系矩形行数(Y向孔数)。
图1 矩形阵列孔系编程模型
设计本孔系加工刀具走刀路线为:先加工第1行,即从孔1.1开始加工,依次加工孔1.2→1.3→…→1.n,然后加工第2行,矩形阵列孔系编程所要考虑的主要是效率问题,因此为了减少刀具空行程,第2行从行尾开始加工,依次加工孔2.n→2.n-1→2.n-2…→2.1,接着加工第3行,从孔3.1开始加工,依次加工孔3.2→3.3→…→3.n,依次循环,直至全部孔加工完毕。整个刀具走刀路线呈现蛇形S状,使刀具空行程最短,加工路径最优,加工效率最高。
基于上述孔系宏程序编程需要二级循环嵌套,一级循环完成矩形孔系自下而上的逐行加工功能;二级循环完成当前行各孔的加工功能,若当前行数为奇数,二级循环自左而右加工各孔,若当前行数为偶数,二级循环自右而左加工各孔,如此便可实现矩形孔系所有孔的加工。具体编程流程为:首先,通过自变量赋值传递数据给宏程序的变量,行自变量赋初值为1。其次,一级循环进行条件判断,行自变量当前值是否不大于行数,当条件结果为假时,一级循环结束,当条件结果为真时,程序执行一级循环体。接着,列自变量赋初值为1,二级循环进行条件判断,列自变量当前值是否不大于列数,当条件结果为假时,二级循环结束,当条件结果为真时,程序执行二级循环体,判断当前行自变量值是否为偶数,如果行自变量值不为偶数,程序从左而右加工当前孔,如果行自变量值为偶数,程序从右而左加工当前孔。然后,列自变量值递增1,二级循环再进行条件判断,若条件结果为真,程序继续执行二级循环体,加工当前行的下一个孔,周而复始,当二级循环条件结果为假时,程序跳出二级循环体,表示当前行所有孔加工完毕。最后,行自变量值递增1,一级循环再进行条件判断,若条件结果为真,程序继续执行一级循环体,加工下一行孔,周而复始,当一级循环条件结果为假时,程序跳出一级循环体,表示所有行加工完毕。
2.2 孔系宏程序源代码
基于2.1节所述,根据FANUC 0i数控系统编程指令即可编写宏程序代码。为了便于宏程序编制及使用,列自变量地址和对应的局部变量关系如表1所示。
表1 宏程序自变量和对应的局部变量关系
编制的矩形孔系通用宏程序为:
2.3 程序讨论
1)本程序各孔加工为固定循环G81方式,实际应用中可根据工艺要求选择固定循环其他方式,如钻削深孔选择G73或G83方式、高精度精镗孔选择G76方式、攻右旋螺纹选择G84方式等,诸如此类,只需根据工艺要求修改程序中的程序段“N50 G98G81X#12Y#13Z#26R#18 F#9;”,即可应用加工。
2)本程序采用的刀具走刀路线为双向蛇形S状,在生产中还有一种单向平行走刀路线较为常用,即先从左到右依次加工第一行各孔,再从左到右依次加工第二行各孔,依次类推,直至所有孔加工完毕。本程序仅需删除下面若干程序段:IF [[#1 AND 1]EQ 0]GOTO 10;GOTO 50;N10 #12=#24+#3*[#5-#2];#13=#25+#4*[#1-1];即可用于本孔系采用单向平行走刀路线的加工。
3)如果各孔精度要求较低且孔径较大时,可采用立铣刀粗铣→精铣加工方案,这里仅需把宏程序O7001中的程序段“N50 G98G81X#12Y#13Z#26R#18F#9;”修改为“G00 X#12Y#13;”,再加上铣孔程序段群,并采用G91增量方式编程,或者将铣孔程序段群编制成为子程序,由本程序采用调用程序段“M98 PXXXX LXXXX;”调用。此外,本程序还可以推广到非孔类加工的其他矩形阵列分布加工,程序处理方法与铣孔类似,不再赘述。
3 零件加工实例
3.1 零件分析
某矩形阵列分布孔系工程零件二维图如图2(a)所示,三维模型如图2(b)所示。零件材料为铝合金,本工序加工内容是加工361个孔直径为5 mm的19行×19列矩形孔系,深度为14 mm的通孔,精度等级为IT11,加工方案选择为先用直径3 mm的高速钢中心钻钻各孔定心孔,再用直径5 mm的高速钢麻花钻加工各孔。由于孔数目太多,采用普通手工编程或自动编程极为繁琐,费力费时,程序冗长,因此确定采用前文所编制的宏程序。确定零件编程坐标系X、Y坐标轴零点在零件左下边角点,Z坐标轴零点在零件上顶面。
经分析图2,可得本矩形孔系参数值为:列间距为19 mm,行间距为19 mm,列数(X向孔数)为19个,行数(Y向孔数)亦为19个,共计361个孔,左下角第1个孔中心X坐标值为29 mm、Y坐标值为29 mm。由于该孔系孔深与孔直径的比值为14:5=2.8,该值小于5,定心孔亦如此,属于浅孔加工,因此,钻定心孔和钻通孔均选择固定循环G81方式加工。根据工件材料、刀具材料和机床等,确定有关工艺参数为:循环R点取3 mm,钻定心孔时主轴转速S取2500 r/min,进给速度F取120 mm/min;钻通孔时主轴转速S取2000 r/min,进给速度F取200 mm/min。
图2 某零件矩形孔系
3.2 矩形孔系宏程序的运用
主程序通过G65非模态调用所编制的矩形孔系宏程序O7001,即可实现该零件的孔系加工。根据零件分析,加工本矩形孔系钻中心孔自变量赋值:C19、I19、J19、K19、F120、R3、X29、Y29、Z-2,而钻通孔自变量赋值只需将钻定心孔自变量赋值F120改为F200,Z-2改为Z-15.5,这里考虑到钻头刀尖,钻削深度为通孔深度14mm+刀尖高度1.5 mm=15.5 mm,其余保持不变。至此,可编制该零件孔系加工主程序为:
4 结语
加工实例表明,该宏程序短小精悍,可用于加工任意行数、任意列数的矩形均布孔系,使用时仅需改变孔系参数自变量赋值,像使用固定循环指令一样方便,通用性强,大幅缩短了此类零件矩形孔系编程和程序校验时间,提高了工作效率,能更好地发挥数控机床的性能,对类似的编程具有借鉴意义。