首页 理论教育 改进逐点比较法算法:实现更高效的数据比较

改进逐点比较法算法:实现更高效的数据比较

时间:2023-06-20 理论教育 版权反馈
【摘要】:四方向逐点比较法插补结果以垂直的折线逼近给定轨迹,插补误差小于或等于一个脉冲当量。八方向逐点比较法终点判别,可以用两个坐标总的走步数作为判终计数器的初值,单坐标进给是减1,双坐标进给时减2,计数器为0时停止插补。

改进逐点比较法算法:实现更高效的数据比较

从以上介绍可以看出,逐点比较法每插补一次,要么在X轴方向走一步,要么在Y轴方向走一步,走步方向为+X、-X、+Y、-Y这四个方向之一。因此可称之为四方向逐点比较法。四方向逐点比较法插补结果以垂直的折线逼近给定轨迹,插补误差小于或等于一个脉冲当量。

八方向逐点比较法与四方向逐点比较相比,它不仅以+X、-X、+Y、-Y作为走步方向,而且两个坐标可以同时进给,即四个合成方向+X+Y、-X+Y、+X-Y、-XY也作为进给方向,如图3-8所示。八方向逐点比较法以45°折线逼近给定轨迹,逼近误差小于半个脉冲当量,加工出来的工件质量要比四方向逐点比较法的高。

下面以四方向逐点比较法为基础,导出八方向逐点比较法的插补原理及算法

1.八方向逐点比较法直线插补

如图3-8所示,八个进给方向将四个象限分为八个区域。在各个区域中的直线的进给方向如图3-9所示。如在1区的直线进给方向为+X+Y或+X,在2区的直线进给方向为+X+Y或+Y。可见,对于某一区域的直线来说,进给方向也只有两种可能,要么两坐标同时进给,要么单坐标进给。

978-7-111-42411-6-Chapter03-15.jpg

图3-8 八个进给方向

978-7-111-42411-6-Chapter03-16.jpg

图3-9 八方向直线插补

这里以1区的直线插补为例,设动点为m,如向+X走一步,到达点m1,此点的偏差为Fm1;如两坐标同时进给,到达点m2,此点偏差为Fm2。如果在m1的基础上再向+Y方向进给一步,同样到达点m2,其偏差仍为Fm2。由四方向直线插补可知,向+X走一步,则偏差再由点m1向+Y走一步,其偏差为

Fm1=Fm-ye

在由点m1向+Y走一步,其偏差为

Fm2=Fm1+xe

比较两个偏差绝对值的大小,如果Fm1>Fm2则表示单坐标进给偏差大,应两坐标同时进给,并保留Fm2作为下一步的偏差;反之则单坐标进给,保留Fm1作为下一步的偏差。

同理,对于2区的直线,向+Y走一步偏差为

Fm1=Fm+xe

再向+X走一步偏差为

Fm2=Fm1-ye

按四方向逐点比较法的处理方式,都以坐标的绝对值计算,进给方向正负由数据处理程序模块直接传给进给驱动程序,则4、5、8区的直线插补算法与1区的直线插补算法一致,3、6、7区的直线插补算法与2区的直线插补算法一致。

八方向逐点比较法终点判别,可以用两个坐标总的走步数作为判终计数器的初值,单坐标进给是减1,双坐标进给时减2,计数器为0时停止插补。八方向逐点比较法直线插补的流程图略。

2.八方向逐点比较法圆弧插补

用八方向逐点比较法,在八个区域中共有16种圆弧。如图3-10所示,各种圆弧的进给方向都在图上标出,仍按四方向逐点比较法处理方式,用坐标绝对值进行计算,进给方向的正负由数据处理程序模块直接传递给进给驱动程序,不由插补程序处理。八方向逐点比较法圆弧插补计算可分为四种算法:

1)圆弧NR2、SR3、NR6、SR7,X轴为单进给坐标,且动点的X坐标绝对值呈减小趋势。算法如下:

Fm1=Fm-2xm+1

Fm2=Fm1+2ym+1

若|Fm1|≥|Fm2|,则走双坐标,

|x|m减1,|ym|加1。

若|Fm1|<|Fm2|,则走X单坐标,|xm|减1。

2)圆弧SR2、NR3、SR6、NR7,X轴为单进给坐标,且动点的X坐标绝对值呈增加趋势。算法如下:(www.xing528.com)

Fm1=Fm+2xm+1

Fm2=Fm1-2ym+1

若|Fm1|≥|Fm2|,则走双坐标,|xm|加1,|ym|减1。

若|Fm1|<|Fm2|,则走X单坐标,|xm|加1。

3)圆弧SR1、NR4、SR5、NR8,Y轴为单进给坐标。且动点的Y坐标绝对值呈减小趋势。算法如下:

Fm1=Fm-2ym+1

Fm2=Fm1+2xm+1

若|Fm1|≥|Fm2|,则走双坐标,|ym|减1,|xm|加1。

若|Fm1|<|Fm2|,则走Y单坐标,|ym|减1。

4)圆弧NR1、SR4、NR5、SR8,Y轴为单进给坐标。且动点的Y坐标绝对值呈增加趋势。算法如下:

Fm1=Fm+2ym+1

Fm2=Fm1-2xm+1

若|Fm1|≥|Fm2|,则走双坐标,|ym|加1,|xm|减1。

978-7-111-42411-6-Chapter03-17.jpg

图3-10 16种圆弧及进给方向

Fm1Fm2,则走Y单坐标,ym加1。

以上四种算法中,走双坐标时保留Fm2作为下一步的偏差,走单坐标时保留Fm1作为下一步的偏差。

综上所述,八方向逐点比较法圆弧插补的四种类型,可用第一象限中的四种圆弧作为代表,即可分SR1、NR1、SR2、NR2四种插补方式。

八方向逐点比较法圆弧插补流程略。

3.圆弧过象限处理

用四方向逐点比较法,有过象限圆弧插补的问题。相邻象限的圆弧插补计算方法不同,进给方向也不同,过了象限如果不改变插补方式和进给方向,就会发生错误。因此,用八方向逐点比较法插补圆弧,一过区域就必须改变插补方式和进给方向。

过象限和过区域的处理,首先应进行过象限或过区域判断。当xm=0或ym=0时过象限;当xm=ym时过区域(这里xmym是绝对值)。每走一步,除进行终点判别外,要进行过象限或过区域判别,到达过象限或过区域点时进行相应处理。

过象限或区域的处理,可用查表的方法。由数据处理模块中的译码程序对用户程序段译码后生成插补数据和标志字。标志字中包含了插补方式、进给方向等信息。其中有4位为圆弧的编码,最多可表示16种圆弧,用此通过编码查表,可得到下一象限(或区域)的圆弧标志字。新的标志字也包含插补方式、进给方向及圆弧编码等信息。过象限(或区域)处理,实际就是用旧的标志字通过查表取得新标志字,替换旧标志字。当再次进行插补时,即根据新的标志字进行插补和进给。

前面介绍了逐点比较法插补的原理,在数控系统软件中,插补只是一个模块,它和其他模块,如进给驱动、数据处理模块等有着不可分割的联系。在程序设计前,模块的界面一定要定义好,如任务如何划分、数据如何传递等。按结构化程序设计的要求,模块应该一个入口、一个出口,一个模块只做一件事情。就插补模块来说,其任务是插补计算,但插补任务包含许多子任务,这些子任务由一些子模块来完成。对于插补程序模块来说,与之有直接关系的主要有数据处理模块和进给驱动模块。插补模块从数据处理模块得到插补数据和标志字,然后根据插补结果调用进给驱动模块(子程序),将进给命令传递给驱动系统。要设计好一个程序模块,首先必须定义好它与其他模块的关系。

数据处理模块向插补模块提供两种信息。其一是坐标数据,如圆弧起点坐标(直线的终点坐标)、判别终点的计数值等;其二是标志字,它确定插补程序作何种插补,并提供圆弧过象限(或过区域)的信息。标志字同时还向进给驱动程序提供各个坐标轴的进给方向的正负信息。对于坐标数据,数据处理模块用固定的存放单元传送,因为是绝对值,所以为无符号二进制数,单位为脉冲当量。标志字要传递的信息有插补方式、进给方向(传递给进给驱动程序)、圆弧编码(用于过象限或过区域查表)、插补结束标志等。标志字各位的作用可如表3-5方式定义。

读者在定义好数据信息和控制信息的格式后,查阅相关资料即可找到插补程序实现的流程图,而且很容易读懂插补流程图,编制出相应的插补程序。

3-5 标志字定义

978-7-111-42411-6-Chapter03-18.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈