浅谈WFL车铣复合机床测量循环的后置处理

0
892

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〕,最大能到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”,最后输出。

程序当中的部分参数含义为: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。在进行测量循环操作最后,下列程序可以计算出“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车铣复合机床其他测量循环的机床代码,实现该机床的测量循环的电脑编程,就可以充分发挥该机床的优点,大大提高加工效率和可靠性。(end)