wfl车铣复合机床除了有强大的多轴加工功能,还能自动找正零件和在线测量零件。有了这些功能,车铣复合机床不仅能够大大提高零件的加工精度,而且能够大大提高零件的加工效率。
wfl车铣复合机床的功能比较强大、效率比较高,不仅有车、多轴铣和镗孔,还有多种测量循环,因此编程就比较复杂。实际生产中,虽然手工编程也能实现这些功能,但是手工编程也有一定局限性,因此实现车铣复合机床的电脑自动编程,是一件很有意义的事情。
以下就以wfl机床的一个简单的测量循环“probe”为例,叙述如何使用nx软件编程,以及后置处理输出wfl车铣复合机床测量循环的方法。
一、机床测量循环的代码定义
要写出能输出“probe”的正确的后置处理程序,首先必须要理解wfl车铣复合机床测量循环“probe”的含义—该测量循环的含义是在随机轴上测量轨迹点。该测量循环的格式为:probe(ax,dis,mp,num),各参数的含义如下。
◎ax:测量轴。测头由ax定义的运动轴以很快的进给率(一般是以g0的速度)接近工件,然后进行测量,在wfl车铣复合机床上有三个测 量轴,x1、y1和z1,即机床的x、y和z轴。
◎dis:测头移动的距离。测量轨迹点(即零件上要测量的点)到起始点(开始执行g1的点)之间的距离必须在dis定义的距离之内,即二者距离必须小于该值。如果测量轨迹点与起始点之间的距离大于该值时,测头是测量不到测量轨迹点的。dis值可以为正也可以为负,分别表示测量轨迹的运动方向是沿着测量轴的正方向还是负方向。
◎num:在*次测量轨迹点之后,测头会沿测量轴稍回撤,然后以正常的测量进给率重复测轨迹点,重复的次数由num,一般是测量3次。
◎mp:是测量结果的存储位置。测量结果输出到机床的内存单元mc_p〔0中,同时被存储到以mp为下标的机床内存中,变成测量点mc_point〔mp〕。
我们只要在后置处理的程序中正确定义了这4个参数,并实现其输出,就可以输出该测量循环的正确机床代码。
以下的一段机床代码就是probe 应用的一个实际的例子,测量的零件和测量点如附图所示。
…
n035 g54
n040 g0 x1=48 y1=0 c1=0 z1=10
n045 probe (“z1”,-15,1,3)
n050 g0 x1=93
n055 g0 z1=-50
n060 probe (“z1”,-15,2,3)
…
在这段机床代码中,probe (“z1”,-15,1,3) 的测量点为mp1,mp1的位置由该代码的上一句程序。该例中测量点mp1的位置为 (48,0,0),测头沿机床z1轴的负方 向进行测量,定义的测头移动距离为15,测头的测量起始点为z1=10 的位置,测量轨迹点自z1=0 的位置,测量轨迹点到测量起始点之间的距离为10,小于测头移动距离15,测量结果存储在机床内存mc_p〔0〕和存储单元mc_point〔1〕中,重复测量 3 次。
probe (“z1”,-15,2,3) 的测量点是,的位置由该代码的前两句程序mp2,mp2该例中测量点mp2的位置为(93,0,0),测头沿机床z1轴的负方向进行测量,定义的测头移动距离为15,测头的测量起始点为z1=-50的位置,测量轨迹点自z1=-60的位置,测量轨迹点到测量起 始点之间的距离为10,小于测头移动距离15。测量结果存储在机床内存mc_p〔0〕和存储单元mc_point〔2〕中。
此处需要注意的是:此处为堆栈存储的方式,在完成第二次测量后,mc_p〔0〕内存储的值自动移动到mc_p〔1〕,zui大能到mc_p〔3〕,该点重复测量3 次。
二、如何用后置处理器实现机床代码的正确输出
在nx 6.0中编写该测量循环的前置比较简单,这种测量循环在nx6.0中用操作“probe_point”就很容易写出正确的前置,后置处理的任务就是把前置程序翻译成wfl车铣复合机床能识别的机床代码probe(ax,dis,mp,num)。 请注意:后面所提到程序的执行程序皆为后置处理时的执行顺序。以下所述就是定义并如何输出正确的机床代码的方法和步骤。
1.输出测量轴 ax
实现这一输出的后置处理程序如下 (后置处理的程序皆为tcl语言编写)。
global mom_probe_direction
global axis
global dis
global mp
if{$ mom_probe_direction = =“xaxis”} {
set axis x1}
if{$ mom_probe_direction = =“yaxis”} {
set axis y1}
if{$ mom_probe_direction = =“zaxis”} {
set axis z1}
mom_output_literal“probe($axis,$dis,$mp,3)”
这段后置处理程序用来定义输出的主程序。mom_probe_direction为nx 的系统变量,axis、dis和mp均为用户自定义变量。mom_probe_direction 在系统里有三个取值,分别为“xaxis”、“yaxis”和“zaxis”。当nx操作里的测量方向为x轴时,其取值为“xaxis”;当nx操作里的测量方向为y轴时,其取值为“yaxis”;当nx操作里的测量方向为z轴时,其取值为“zaxis”。这样,就可以利用这个系统变量作为条件,用if 判断语句来进行判断,对应输出程序中的变量“axis”,也就是probe(ax,dis,mp,num)中的“ax”的值。程序的解释为:当mom_probe_direction为“xaxis”时,则将“x1”赋值给“axis”;当mom_probe_direction 为“yaxis” 时,则将“y1” 赋值给“axis”;当mom_probe_direction 为“za xis”时,则将“z1”赋值给“axis”,zui后输出。
程序当中的部分参数含义为:globe表示全局变量; if表示判断条件;$为取值符;set表示赋值给其后面的参数(具体的介绍请参考tcl语言的教材)。
2.输出 dis
“dis”的输出要分为以下三个步骤:
(1)计算测量起始点的值。在进行每次测量循环操作前,运行下列程序,可以计算出起始点的x、y和z坐标值(其值用参数为x1_bofore、y1_bofore 和z1_bofore 定义,皆为用户自定义变量)。在下面的tcl程序中,mom_mcs_goto 为nx 的系统变量,其存储方式是一个数组,其中mom_mcs_go- to (0)自动存储当前加工坐标系x的值,mom_mcs_goto(1)自动存储当前加工坐标系y的值,mom_mcs_goto (2)自动存储当前加工坐标系z的值,这些变量与clsf文件中的坐标值采用的坐标值一致。
global mom_mcs_goto
global x1_bofore
global y1_bofore
global z1_bofore
set x1_bofore$ mom_mcs_goto (0)
set y1_bofore$ mom_mcs_goto (1)
set z1_bofore$ mom_mcs_goto (2)
(2)计算测量轨迹点。在进行每次测量循环操作后,执行下列程序,可以计算出测量轨迹点的x、y和z坐标值,其值分别用参数x1_when、y1_ when 和z1_ when定义(三者皆为用户自定义变量)。
global mom_mcs_goto
global x1_ when
global y1_ when
global z1_ when
set x1_ when $ mom_mcs_goto (0)
set y1_ when $ mom_mcs_goto (1)
set z1_ when $ mom_mcs_goto (2)
(3)计算dis。在进行测量循环操作zui后,下列程序可以计算出“dis”。“dis”在后置处理的程序中是用用户自定义 的变量“dis”来表示。如果测量起始点减去测量轨迹点的值大于零,则说明测量轨迹是沿着测量轴负向运动,此时,用测量轨迹点的坐标值减去测量起始点的坐标值,再减去一个常量得到dis,则可以保证测头的移动距离大于测量轨迹点到起始点之间的距离。如果测量起始点减去测量轨迹点的值小于零,则说明测量轨迹是沿着测量轴的正向运动,此时,用测量轨迹点的坐标值减去测量起始点的坐标值,再加上一个常量,即可得到dis,则可以保证测头的移动距离大于测量轨迹点到起始点之间的距离。nx后置处理程序如下。
if {$ x1_bofore-$ x1_ when>0} {
set dis [expr($ x1_ when-$ x1_bofore-10)]}
if {$ x1_bofore-$ x1_ when<0} {
set dis [expr($ x1_ when-$ x1_bofore+10)]}
if {$ y1_bofore-$ y1_ when>0} {
set dis [expr($ y1_ when-$ y1_bofore-10)]}
if {$ y1_bofore-$ y1_ when<0} {
set dis [expr($ y1_ when-$ y1_bofore+10)]}
if {$ z1_bofore-$ z1_ when>0} {
set dis [expr($ z1_ when-$ z1_bofore-10)]}
if {$ z1_bofore-$ z1_ when<0} {
set dis [expr($ z1_ when-$ z1_bofore+10)]}
3.输出 mp
在一个测量程序中,可能会测量很多个点,这就需要很多次probe测量循环,每一个测量循环的结果都要占一个存储内存,所以每一个“mp”都应该有不同的值,因此可以用下面的程序分两个步骤来输出“mp”。
(1)初始化mp为0。在*次测量程序开始执行之前执行下列后置处理程序:
global mp
set mp0
该程序将 mp 初始化为0。
(2)每进行一次测量循环操作,执行一次下列程序,则可以实现参数“mp”的增加,因此可以保证每一个“mp”的值都不同,并且从“1”开始。每进行一次测量操作,就递增一次。
global mom_probe_cycle_type
global mp
if{ $ mom_probe_cycle_type!=0 }{
set mp[expr($mp+1)]}
其中,mom_probe_cycle_type 为系统变量,在执行数控程序的过程中,当有测量循环操作时,其赋值不等于0,当没有进行测量操作时,其赋值就是0。从nx的*个操作开始就进行扫描,每当mom_probe_cycle_type不为零时,mp就自加一次。因此我们就可以利用这个变量作为条件,来完成“mp”的赋值和输出。
4.输出num
因为一般情况下,重复测轨迹的次数为3次,所以在输出的主程序中,已经直接定义了“num”为“3”,因此可以直接输出,不再需要对该参数进行定义。
三、结束语
经验证,用该方法写出的后置处理程序,可以输出正确无误的机床代码probe(ax,dis,mp,num),如果按照此方法将后置处理程序加以完善,就可以输出完整、正确的wfl车铣复合机床其他测量循环的机床代码,实现该机床的测量循环的电脑编程,就可以充分发挥该机床的优点,大大提高加工效率和可靠性。
(文章来源:成都飞机工业公司 刘陨双)
STAUFF流量发讯器作用原理
石家庄离心机内氧含量合格服务放心
水管道流量计,大口径管道水流量计价格
三大点为你解决购买高低温试验箱所有烦恼
IgG抗体的基本信息简介
WFL车铣复合机床测量循环的后置处理方法
石墨炉原子吸收光谱法分析 茶叶中的铅、镉 和砷
太阳能曝气机有哪些常见的安装方式?
上银导轨在旧设备回收中再次使用的注意事项
解锁餐厨垃圾投放新姿势 这几份处理攻略收好了
S30409不锈钢耐蚀性能 锻件材料
宝德BURKERT流量计利用卡曼漩涡原理的流量计
GZ644TC陶瓷双闸板阀结构特点
如何选择破碎机配件?
霍尼韦尔 Honeywell传感器13PCO1D48的工作原理
SICK标准光电开关工作原理及安装注意事项
污水处理设备中如何判断电线质量
Rollvisswiss行星滚柱螺杆,行星滚柱丝杠
VGA切换器是什么?VGA切换器的特性!
数控钻攻机的钻孔与攻丝有何不同?