吴义荣,卢 勇,杨 俊,邱泽丰
(1.中山迈雷特数控技术有限公司,广东中山 528437;2.广东科贸职业学院,广州 510430)
数控编程是数控加工中非常重要的环节,常用的有手工编程和自动编程两种方式。手工编程要求操作人员熟练掌握数控编程语言,编程效率低,容易出错。随着数控机床应用的普及,如何降低数控系统的编程难度,提升编程效率就成为了实际操作中的客观需求[1-2]。因此,研究一种免编程的设计方案具有非常重要的实用价值。
本文以中山迈雷特数控技术有限公司开发的MLT980Ma铣床数控系统[3]为基础进行免编程钻攻系统开发,如图1所示,MLT980Ma 最多可控制5 个进给轴、2个主轴,最小分辨率0.1 μm,具备1 路USB-HOST 接口。该系统具备通用钻铣床系统的标准G 代码,可实现钻、铣、镗以及攻丝等控制。同时支持宏程序功能、内置式软PLC 功能及IO 接口功能的二次开发等。该系统功能丰富、性能稳定,为当前市场的主流应用产品。
图1 MLT980MDa外观
钻铣床数控系统中常用ISO 标准G 代码编程,针对不同的钻攻需求定义不同的指令格式,如表1所示。
表1 常用钻攻功能指令
利用G 代码,以及不同的指令格式,在数控系统中编制对应G 代码程序,实现钻攻功能。本文以G81 为例说明利用G代码进行普通钻孔的编程方法。
G81普通钻孔指令格式如下:
G98∕G99 G81 X_Y_R_Z_F_
指令各参数说明如表2所示。
表2 G81指令参数功能
根据不同的指令参数,可以实现不同的加工轨迹,从而适应不同的加工要求。根据G81 的指令格式,可实现两种不同的轨迹形式。如图2、图3所示。
图2 G98快速返回至初始平面加工轨迹
图3 G99 快速返回至R 平面加工轨迹
根据G81 指令格式,编制下表3程序可以完成钻孔功能,钻孔示意图如图4所示。
图4 加工示意图
表3 钻孔加工CNC程序
根据以上传统G代码钻攻编程方法,通过归纳总结,不同的G 代码数据代表不同的孔加工方式,不同的X、Y、Z 以及R 代码数据代表加工位置,F 代码数据代表速度。因此考虑借用MLT980Ma 的宏变量功能来指代各代码后面的数据,从而简化钻攻加工的编程。
根据宏变量指代代码数据的思路,基于MLT980Ma的基本功能,开发组态界面,引入图参式辅助编程思想[4-6],最终实现免编程。操作人员只需在相关页面中按提示选择、输入相关的孔型参数及工艺数据后,即可完成线性孔、圆弧孔、错位孔等常见孔型的钻、镗及攻丝等自动加工功能。为方便配置,每一种孔类型对应一个专用页面。总体界面结构如图5所示。
图5 总体界面结构
为了实现免编程功能,在设计过程中需要利用宏程序变量引用编程数据,同时编程数据需要能够在界面灵活输入。因此,在软件设计过程中主要包括不同孔型的宏编程处理以及组态界面开发两部分。宏编程处理包括变量规划,控制流程设计等。组态界面开发主要完成软件底层界面模块设计,组态工具软件的开发,实现不同孔类型的专用页面数据编辑,完成类型选择、孔参数据及加工工艺数据等的选择及输入。
为便于专用页面设计,根据MLT980Ma 中相关指令格式参数、加工工艺数据以及定义孔型数据等,对变量进行了规划。主要分为孔尺寸参数、工艺参数、孔型选择参数、加工方式选择参数、返回平面选择参数及其他参数等6 大类。同时,为了相关数据在断电后仍能被记忆,采用了非易失性的宏变量,如表4所示。
表4 变量规划表
程序控制设计是免编程钻攻系统的控制核心,分为主程序模块和各子程序模块,主程序模块完成数据状态的初始化、数据合法性检测及各子模块的调度。子程序模块实现各孔型的控制执行,包含线性孔处理模块、圆弧孔处理模块、环形孔处理模块、棋盘孔处理模块、错位孔处理模块及异常处理模块6 大模块[7-8]。程序控制流程如图6所示。
图6 程序控制流程
2.3.1 各模块的规划
基于前述的流程规划,对各程序模块功能进行了表5所示的规划。
表5 程序(模块)规划表
2.3.2 主程序模块
主程序模块的文件名为O0001.CNC,完成数据状态的初始化、数据合法性检测及各子模块的调度。其程序主要框架内容如下:
O0001(主程序模块)
#113=#0(变量初始化)
#114=#0(变量初始化)
#115=#0(变量初始化)
#116=#0(变量初始化)
…
…
#100=#4001(第1组G代码模态保存)
#101=#4002(第2组G代码模态保存)
#103=#4005(第3组G代码模态保存)
#104=#4007(第7组G代码模态保存)
#105=#4014(第14组G代码模态保存)
#106=#4016(第16组G代码模态保存)
#107=#4109(F代码模态保存)
#108=#4119(S代码模态保存)
#109=#4120(T代码模态保存)
IF[#520 EQ 3]THEN#113=1
IF[#520 EQ 4]THEN#114=1
IF[[#113 OR#114]NE 1]GOTO101(主轴旋向数据非法检测,若非法,则报警提示)
IF[#524 EQ 98]THEN#115=1
IF[#524 EQ 99]THEN#116=1
IF[[#115 OR#116]NE 1]GOTO102(返回平面选择数据非法检测,若非法,则报警提示)
…
…
IF[#530 EQ 1]GOTO1(如果当前选择了线性孔加工,则跳转至线性孔处理模块)
IF[#530 EQ 2]GOTO2(如果当前选择了圆弧孔加工,则跳转至圆弧孔处理模块)
IF[#530 EQ 3]GOTO3(如果当前选择了环形孔加工,则跳转至环形孔处理模块)
IF[#530 EQ 4]GOTO4(如果当前选择了棋盘孔加工,则跳转至棋盘孔处理模块)
IF[#530 EQ 5]GOTO5(如果当前选择了错位孔加工,则跳转至错位孔处理模块)
GOTO6(如果当前孔型非线性孔、圆弧孔、环形孔、棋盘孔、错位孔中的一种,则进入异常处理模块)
N1 M98 P9001(进入线性孔处理模块)
GOTO100
N2 M98 P9002(进入圆弧孔处理模块)
GOTO100
N3 M98 P9003(进入环形孔处理模块)
GOTO100
N4 M98 P9004(进入棋盘孔处理模块)
GOTO100
N5 M98 P9005(进入错位孔处理模块)
GOTO100
N6 M98 P9006(进入异常处理模块)
…
…
N100
G[FUP[#100]](第1组G代码模态恢复)
G[FUP[#101]](第2组G代码模态恢复)
G[FUP[#103]](第3组G代码模态恢复)
G[FUP[#104]](第7组G代码模态恢复)
G[FUP[#105]](第14组G代码模态恢复)
G[FUP[#106]](第16组G代码模态恢复)
F#107(F代码模态恢复)
S#108(S代码模态恢复)
T[FUP[#109]](T代码模态恢复)
M30(主程序结束)
N101 G65 H99 P1(∕主轴旋向未指定或指定值错误)
N102 G65 H99 P2(∕返回平面选择未指定或指定值错误)
…
…
2.3.3 线性孔处理程序
线性孔处理程序名为O9001.CNC,其根据选择的加工方式,进入对应的处理子模块进行加工控制。程序如下:
O9001(线性孔处理模块)
M#520 S#521(启动主轴,置主轴速度)
G0 X#500 Y#501(快速定位至线性孔加工起点)
IF[#519 EQ 81]GOTO81(若加工方式为普通钻孔,则跳转至普通钻孔处理)
IF[#519 EQ 85]GOTO81(若加工方式为镗孔循环,则跳转至镗孔循环处理)
IF[#519 EQ 82]GOTO82(若加工方式为镗阶梯孔,则跳转至镗阶梯孔处理)
IF[#519 EQ 73]GOTO83(若加工方式为高速深孔加工,则跳转至高速深孔加工处理)
IF[#519 EQ 83]GOTO83(若加工方式为深孔加工,则跳转至深孔加工处理)
IF[#519 EQ 74]GOTO84(若加工方式为正向攻丝,则跳转至正向攻丝处理)
IF[#519 EQ 84]GOTO84(若加工方式为反向攻丝,则跳转至反向攻丝处理)
IF[#519 EQ 76]GOTO87(若加工方式为精密镗孔,则跳转至精密镗孔处理)
IF[#519 EQ 87]GOTO87(若加工方式为孔底停镗,则跳转至孔底镗处理)
N81 G#524 G#519 X#509 Y#510 Z#502 R#503 L#511 F#522
GOTO999
N82 G#524 G#519 X#509 Y#510 Z#502 R#503 P#523 L#511 F#522
GOTO999
N83 G#524 G#519 X#509 Y#510 Z#502 R#503 Q#515 L#511 F#522
GOTO999
N84 G#524 G#519 X#509 Y#510 Z#502 R#503 Q#515 L#511 F#517
GOTO999
N87 G#524 G#519 X#509 Y#510 Z#502 R#503 Q#516 P#523 L#511 F#517
GOTO999
N999 G80(退出循环模态)
M5 S0(停主轴)
M99(返回总调度模块)
2.3.4 其他模块处理程序
圆弧孔、圆环孔、棋盘孔、错位孔及异常处理程序的框架与线性孔基本一致,受限于篇幅,此文对处理程序不做详细描述。
根据实际需求,通过PC端组态工具TPKDesigner[9]进行组态界面的设计。首先在PC 端根据需求及变量规划,确定了以各孔型为子功能菜单,各页面以图形、控件相结合的方式进行组态设计[10]。再通过USB 设备导入到MLT980Ma系统中。组态界面总体规划布局[11]如图7所示。
图7 各角度下单位体积混合能与混合时间关系
图7 组态界面总体规划布局
2.4.1 加工孔类型选择项设计
为便于选择、区分,当前加工孔型设计采用了“组合框”+“分组框”控件组合方式[12]。加工孔类型选择项组态定制过程如图8所示,实际呈现效果如图9所示。
图8 加工孔类型选择组态定制过程
图9 实际呈现效果
2.4.2 加工方式选择∕返回平面选择项设计
加工方式有钻孔、镗孔及攻丝等大类,返回平面选择有返回初始平面、返回R 平面等两种选择。因此,组态界面设计时采用了“单选框”+“分组框”控件组合方式。
2.4.3 孔参∕其他参数∕工艺参数项设计
孔参、工艺参数及其他参数类数据,实际使用中会设定、修改,因此,组态界面设计时采用了“输入框”+“分组框”控件组合方式。
2.4.4 常用孔参∕加工工艺参数快捷软功能键设计
对于加工过程中经常要更改的孔型数据、工艺数据,专门组态定制了快捷软功能键,便于操作人员修改配置。快捷软功能键组态定制过程如图10所示,实际呈现效果如图11所示。
图10 快捷软功能键组态定制过程
图11 快捷设置实际效果
组态界面完成后实际呈现的页面效果如图12~17所示。
图12 免编程钻攻系统菜单页
图13 线性孔
图14 圆弧孔
图15 环形孔
图16 棋盘孔
图17 错位孔
通过组态工具配合数控系统的程序设计,可定制出不同孔型的专用界面,在各界面中,根据实际的加工需求,输入相应的数据后,启动运行即可完成零件的自动加工。整个过程无须编程,提高了编程便利性,降低了编程难度,提升了数控系统的综合性能。该免编程钻攻系统已在客户处成功应用,目前一直在可靠稳定运行,图参化辅助编程的设计思想得到了用户的认可。
本文根据传统G 代码进行钻攻编程的应用出发,通过归纳G 代码编程特点,结合MLT980Ma 钻铣床数控系统宏变量功能,总结归纳出利用图形界面参数指定的一种免编程钻攻设计方法。可以通过仅设置图形参数,而不用编程即可完成钻攻加工。此思路可以方便快捷地完成各专用钻攻加工界面设计,显示直观、操作便捷,降低了操作人员的工作难度和出错率,提高了工作效率。不仅适合文中提及的线性孔、圆弧孔、棋盘孔等孔型的钻孔、镗孔及攻牙等孔型零件的加工,也适用于数控机床的其他各种专用加工应用中,此种免编程钻攻加工设计方法在实际数控系统中得到了验证,具有实用价值。