张 伟,刘 葵,谢正武,周德民,方振红
(中国兵器工业集团江山重工研究院有限公司,湖北 襄阳 441057)
Unigraphics NX[1-3](简称UG NX)是集CAD/CAE/CAM于一体的三维参数化软件系统,其在数控编程方面是目前市场上功能较强、使用非常广泛的集成系统,加工编程功能包含车削加工编程、线切割加工编程、3~5轴(多轴)铣削加工编程等,该系统包括前置处理和后置处理两大部分。由于机械产品千变万化,需要针对具体的对象在UG NX系统中的NX/Post后置处理器基础上,结合TCL脚本语言和UG/POST Builder后处理构造器进行二次开发,针对特定产品来设计出界面友好、功能强大、使用方便、格式规范、内容精简的NC程序式,即可定制各种TCL脚本语言命令,以满足所需的特殊NC指令。
UG NX的后置处理[4]是数控加工编程过程中一个重要的环节,其主要任务是利用NX/Post将UG NX系统生成的加工刀轨(前置处理部分)转换成特定机床可以接受的NC代码,以驱动机床运动,同时保证加工质量。根据制造需要,UG NX的后置处理可以实现个性化定制,这也是UG NX系统功能强大的重要体现之一。
UG/POST Builder后处理构造器是一个非常方便的可创建和修改后置处理的工具,用户可以交互式地灵活定义NC程序的格式和输出内容,以及程序开头和程序结尾、换刀、循环等每一个事件的处理方式。通过它来创建和修改事件处理文件,进行客户化后置处理。
TCL脚本语言[5]经常被用于快速原型开发、脚本编程、GUI和测试等方面。实际包含两部分:1个语言和1个库。具有如下特点:1)任何东西都是一条命令;2)任何事物都可以重新定义和重载;3)所有的数据类型都可以看作字符串;4)语法规则相当简单;5)代码紧凑,易于维护。
POST Builder后处理构造器使用TCL脚本语言作为其命令语言有三大好处:1)TCL提供了标准语法,一旦掌握了TCL就可以容易地发布命令给基于TCL的程序;2)TCL实现了很多功能,使创建和修改后处理变得方便;3)TCL可作为程序间的通信接口。
数控程序[6-8]中含有变量的程序称为宏程序。它的基本原理是用户用变量作为数据进行编程,变量在编程中充当“媒介”作用,在后续程序中可以重新再赋值,原来内容被新赋的值所取代,利用系统对变量值进行计算和可以重新赋值的特性,使变量随程序的循环自动增加并计算,实现加工过程的自动循环(见图1)。
宏程序[9]具有如下几项特点:1)可以进行变量的算术运算、逻辑运算和函数的混合运算,还可以使用循环语句、分支语句和子程序调用语句;2)宏程序能依据变量,用事先指定的变量代替直接给出的数值,在调用宏程序或宏程序本身执行时,得到计算好的变量值;3)在数控编程中,宏程序编程灵活、高效、快捷,是加工编程的重要补充,宏程序可以实现像子程序那样功能,例如,型腔加工宏程序、固定加工循环宏程序、球面加工宏程序、锥面加工宏程序等。
变量分为局部变量、公共变量和系统变量,实际加工编程中最常用的是局部变量,变量号范围#1~#33。
宏程序的构成[10]:1)变量;2)算术或逻辑运算(=)的程序段;3)控制语句(例如:IF、GOTO、DO、END)的程序段;4)宏程序调用指令(G65、G66、G67或其他G代码,M代码调用宏程序)的程序段。
宏程序的适用加工范围和场合:形状类似但大小不同,大小相同但位置不同,特殊形状(椭圆、球等)。
在实际数控加工制造过程中,经常会遇到平面铣削恒定分层、重复有规律等的刀具路径,UG NX系统自带的后置处理编制的数控程序会因恒定、重复具有一定规律走刀的原因,导致NC程序容量大、语句反复出现、参数修改工作量大、易出错等问题。针对上述难题,笔者进行了思考,利用宏程序变量的特点和UG NX的后置处理个性化定制功能来实现系统的二次开发,即通过将宏程序变量、算术公式及条件转移等参数预先植入UG后处理构造器,对后处理构造器功能进行二次定义,使其在数控程序后置处理时系统内部就能自动完成逻辑运算、程序循环等,最终达到简化刀路、优化程序的目的。后置处理二次开发流程图如图2所示。
下面具体介绍创建UG NX宏程序后置处理开发全过程的方法和步骤。
1)新建UG后置处理文件(见图3)。注:UG后置处理文件名的命名一定要有特定性并配有注释,便于开发完成的宏程序后置处理技术的后期查阅。
注意:为了方便转换,且最大限度地保证UG NX系统中原有的后置处理功能的安全性、可靠性和完整性,每段定制命令开始前,都设置有激活和关闭二次开发宏程序后置处理功能选项的判断语句,如果条件满足,执行宏程序后置处理,否则退出。
global iii
set iii 0
global iii
if {iii==2} {
MOM_suppress Once Z FG_motion(“MOM”表示NXMOM事件;“mom”表示NX mom变量)
MOM_disable_address Z
globalmom_feed_approach_value(逼近移动的进给率)
globalmom_feed_engage_value(切削移动的进给率)
globalmom_mcs_goto(刀轨转至点将输出到一个CLSF)
globalmom_nxt_mcs_goto(绝对转至坐标中下一mcs转至的值)
globalkkk
setkkk [expr mom_mcs_goto(2)-mom_nxt_mcs_goto(2)]
if {kkk!=0} {
MOM_output_literal "#3=#1"
globalmom_seqnum
globalxzwn
setxzwn mom_seqnum
MOM_set_seq_on
MOM_output_literal "G00 Z [#1+[format "%.2f" kkk]]"
MOM_add_to_address_buffer F start "Z#1"
MOM_add_to_address_buffer F End "M08"
}
if {kkk==0} {
globalmom_seqnum
globalxzwn
setxzwn mom_seqnum
MOM_output_literal "G0 Z[ #1+3.0]"(循环起始位置)
MOM_set_seq_on(如果在定义文件中给出SEQUENCE说明符,则允许输出序号,在执行命令时返回序列设置)
MOM_output_literal "G1 Z#1 Fmom_feed_approach_value M08"
(开始下刀以及定义逼近移动的进给率和打开M08)
}
globalmom_pos
globalxzwx
globalxzwy
setxzwx mom_pos(0)
setxzwy mom_pos(1)
}
globalmom_Instruction
globaliiijjj
set jjj [string match #?=* mom_Instruction](判断用户定义事件是否输入)
set iii [expr iii+jjj]
MOM_output_literal "mom_Instruction"(将用户定义事件中的文字作为单行输出)
global iii
if {iii==2} {
globalmom_last_pos
globalxzwzz
setxzwzz mom_last_pos(2)
globalmom_mcs_goto
global xzwzz2
set xzwzz2 mom_mcs_goto(2)
MOM_forceOffG_motion G
}
global iii
if {iii==2} {
globalxzwn
globalxzwzz xzwzz2
globalddd
set ddd [expr xzwzz2-xzwzz]
if {ddd>0} {
MOM_output_literal "Z[#1+[format "%.2f" ddd]]"
}
globalxzwxxzwy
MOM_output_literal "X[format "%.3f" xzwx] Y[format "%.3f" xzwy]"(返回循环X方向和Y方向的起始位置)
MOM_output_literal "#1=#1-#2"(将文字“#1=#1-#2”作为单行输出)
globalmom_pos
MOM_output_literal "IF[#1>=[format "%.2f" xzwzz]] GOTO[format"%.f" xzwn]"
MOM_output_literal "G0 Z[format "%.2f" mom_pos(2)]"(Z方向退刀)
}
1)新建一个UG加工文档(见图4)。
2)定义进刀量:机床控制→开始刀轨事件→【Insert】选项卡输入(见图5)。#1=-0.5,为初始进刀量;#2=0.5,为每刀进刀步距。
3)选定制作的UG后置处理如图6所示。
4)验证自制后置处理的结果如图7所示。
5)实例验证,UG NX系统自带后置处理与UG NX系统二次开发后的宏程序后置处理制作的数控程序效果对比如图8所示。
本文介绍了UG NX系统中宏程序后置处理的二次开发技术的研究与运用,在不破坏原程序的基础上,利用宏程序编程原理,将后置处理进行二次挖掘,通过自动判断语句,激活或关闭宏程序后置处理的定制事件,促使刀具路径直接转化为NC宏程序,NC程序基本不用修改,可直接传输到机床使用。后置处理器的二次开发后生成的NC程序具有语句简短、格式规范、查找方便、自动运算等特点,解决了原有NC程序容量大、语句反复出现、参数修改工作量大、出错率高等多项短板,这在实际制造过程中具有较强现实意义,在数控制造领域具有一定的创新性和推广性。