基于VB的数字积分直线插补设计(4)

2019-08-20 20:17

贾锋泽:基于VB的数字积分直线插补设计

VOE?VXXe?VYYe?K(常数)

现将式中的VX、VY分别代入式可得

ΔX=KXeΔt ΔY=KYeΔt

可见,刀具由原点O走向终点E的过程,可以看作是每经过一个单位时间间隔Δt,就分别以增量 [KXe]、 [KYe]同时在两个坐标轴累加的结果。也可以这样认为,数字积分法插补实际上就是利用速度分量,进行数字积分来确定刀具在各坐标轴上位置的过程,即

nnX???Xi??KXe?ti Y???Yi??KYe?ti

i?1i?1nni?1i?1当取Δti=“1”(一个单位时间间隔),则式将演变为

X?KXe??ti?nKXe

i?1nnY?KYe??ti?nKYe

i?1设经过n次累加后,刀具正好到达终点E(Xe,Ye),即要求式中常量满足下式

nK=1 或 n=1/K

从上式可以看出,比例常数K和累加次数n之间的关系是互为倒数,即两者相互制约,不能独立自由选择。也就是说只要选定了其中一个,则另一个随之确定了。由于式中n是累加次数,必须取整数,这样K就必须取小数。

为了保证每次分配给坐标轴的进给脉冲不超过1个单位(一般指1个脉冲当量),则

ΔX=KXe <1 ΔY=KYe <1

上式中Xe、Ye的最大允许值受系统中相应寄存器的容量限制。现假设寄存器为N位,则其容量为2N,对应存储的最大允许数字量为(2N-1),将其代入式中Xe、Ye,则可得到 K <1/(2N-1)

现不妨取K=2N,显然它满足式和式的约束条件,再将K值代入式,可得累加次数为

n=1/K=2

也就是说,经过n=2N次累加后,动点(刀具)将正好到达终点E。 事实上,如果将n、K值代入式,则动点坐标为

N

- 10 -

山西农业大学工学院毕业设计说明书

X=KXen=(1/2N)Xe2N=Xe Y=KYen=(1/2N)Ye2N=Ye

根据前面的分析,在进行直线插补时,先开辟两个被积函数寄存器JVX、JVY分别存放终点坐标值Xe、Ye,还有两个余数寄存器JRX和JRY。然后,当脉冲源每发送一个控制脉冲信号Δt,X轴积分器和Y轴积分器各累加一次。当累加结果超出余数寄存器容量2N-1时,就产生一个溢出脉冲ΔX(或ΔY)。这样,经过2N次累加后,每个坐标轴溢出脉冲的总数就等于该轴的被积函数值(Xe和Ye),从而控制刀具到达了终点E。

入口初始JVx←xe,JVy←yeJRx←0,JVy←0,JE←0JRx←JRx+JVxN溢出?Y+x走一步JRy←JVy+JVyN溢出?Y+y走一步JE←JE+1NJE←0?出口

图3.3 DDA直线插补流程图

- 11 -

贾锋泽:基于VB的数字积分直线插补设计

3.3 改进DDA插补质量的措施

使用DDA法插补时,其插补进给速度v不仅与系统的迭代频率fg(即脉冲频率)成正比,还且与余数寄存器的容量N成反比,与直线的长度L(或圆弧半径R)成正比它们之间有下述关系成立:

式中 v---插补进给速;

δ---系统冒充当量; L---直线段的长度; N---寄存器的容量; fg---迭代频率。

显然,即使编制同样大小的速度指令,但针对不同长度的直线段,其速度是变化的(假设fg和N为固定),必须设法加以改善。常用的改善方法是左移规格化和进给速率编程(FRN)。

以下就来讨论使DDA法从原理走向实用必须解决的速度和精度控制问题。 1)进给速度的均匀化措施---左移规格化

从上面叙述可知,数字积分器溢出脉冲的频率与被积函数中的存数成正比。如用DDA作直线插补时,每个程序段的时间间隔是固定不变的,因为不论加行程成长短,都必须同样完成m=2n次的累加运算.就是说行程长,走刀块;行程短,走刀慢.所以各程序段的进给速度是不一致的.这样影响了加工的表面质量,特别是行程短的程序段生产率低.为了克服这一缺点,使溢出脉冲均匀,溢出速度提高,通常采样左移规格化处理[5]。

所谓“左移规格化”处理,是当被积函数的值比较小时,如被积函数寄存器有i个前零时,若直接迭代,那么至少需要2次迭代,才能输出一个溢出脉冲,致使输出脉冲的速率下降.因此在实际的数字积分器中,需把被积函数寄存器中的前零移去即对被积函数实现“ 左移规格化”处理.经过左移规格化的数就成为规格化数—寄存器中的数其最高位为“1”时,该数即称为规格化数;反之最高位为“0”的数称为非规格化数.显然,规格化数累加两次必有一次溢出,而非规格化数必须作两次以上或多次累加才有一次溢出.

2) 提高插补精度的措施——余数寄存器预置数

- 12 -

山西农业大学工学院毕业设计说明书

前已述及,DDA直线插补的插补误差小于一个脉冲当量,但是DDA圆弧插补的插补误差有可能大于一个脉冲当量,其原因是这样的:由于数字积分器溢出脉冲的频率与被积函数寄存器的存数成正比,当在坐标轴附近进行插补时,一个积分器的被积函数接近于零,而另一个积分器的被积函数值却接近最大值(圆弧半径),这样,后者可能连续溢出,前者几乎没有溢出,两个积分器的溢出脉冲速率相差很大。

为了减少插补误差,提高插补精度,可以把积分器的位数增多,从而增加迭代次数。这相当于把图2-7矩形积分的小区间Δt取得更小。这样做可以减小插补误差,但是进给速度却降低了,所以我们不能无限制地增加寄存器位数。在实际的积分器中,常常应用一种简便而行之有效的方法——余数寄存器预置数。即在DDA插补之前,余数寄存器JRx和JRy预置某一数值(不是零),这一数值可能是最容量,及2n-1,也可以是小于最大容量的某一个数,如2n/2,常用的则是预置最大容量值(成为置满数或全加载)和预置0.5(成为半加载)两种。

“半加载”是在DDA迭代前,余数寄存器JRx和JRy的初值不是置零,而是置1000…000(即0.5),也就是说把余数寄存器JRx和JRy的最高有效位置“1”,其余各位均置“0”,这样,只要再叠加0.5,余数寄存器就可以产生第一个溢出脉冲, 使积分器提前溢出。这在被积函数较小,迟迟不能产生溢出的情况时,有很大的实际意义,因为它改善了溢出脉冲的时间分布,较少了插补误差。

“半加载”可以使直线插补的误差减小到半个脉冲当量以内,一个显而易见的例子是:若直线OA的起点为坐标原点,重点坐标是A(15,1)没有“半加载”时,x积分器除第一次迭代没有溢出外,其余15次迭代均有溢出;而y积分器只有在第16次迭代时才有溢出脉冲(见图3.4(a))。若进行了“半加载”,则x积分器除第9次迭代没有溢出外,其余15次均有溢出;而y积分器的溢出提前到第8次迭代有溢出,这就改善了溢出脉冲的时间分布,提高了插补精度(见图3.4(a))。

“半加载”使圆弧插补的精度得到明显改善。若对图3.4(b)的例子进行“半加载”,其插轨迹如图中的折线所示。仔细比较后可以发现,“半加载”使x积分器的溢出提前了,从而提高了插补精度。

- 13 -

贾锋泽:基于VB的数字积分直线插补设计

图3.4半加载后的轨迹

所谓“全加载”,是在DDA迭代前将余数寄存器JRx和JRy的初值置成该寄存器的最大容量值(当为n时,即置入2n-1),这会使得被积函数值很小的坐标积分器提早产生溢出,插补精度得到明显改善[8]。

图3.5全加载后的实际轨迹

4 软件设计

4.1 对象属性

在VB程序设计中,首先是要按问题的需求在窗体界面上添加相应的控件,要有一个完整的VB界面,控件对象的属性又是不可或缺的,所以,在编程的开始,本文先对所用到的的控件属性做了逐一说明,两个窗体内部控件及本身的属性如表4.1和4.2所示。

表4.1 对象属性

对象 属性 属性值 说明

- 14 -


基于VB的数字积分直线插补设计(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:XX学院学生参观加油站油库的实习报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: