一、 DDA的基本原理
由高等数学可知,求函数 对 的积分运算,从几何概念上讲,就是求此函数曲线 所包围的面积 (图2—7),即
若把自变量的积分区间[ , ]等分成许多有限的小区间 (其中 ),这样,求面积可以转化成求有限个小区间面积之和,即
数字运算时,Δt一般取最小单位“1”,即一个脉冲当量,则
由此可见,函数的积分运算变成了变量的求和运算。当所选取的积分间隔Δt足够小时,
则用求和运算代替求积运算所引起的误差可以不超过允许的值。
二、 DDA直线插补
设我们要对 平面上的直线进行脉冲分配,直线起点为坐标原点 ,终点为 ,如图2-8所示。
图2-8 合成速度与分速度的关系
假定 和 分别表示动点在 和 方向的移动速度,则在 和 方向上的移动距离微小增量 和 应为
(2—5)
对直线函数来说, 和 是常数,则下式成立:
(2—6)
式中K为比例系数。
在Δt时间内,x和y位移增量的参数方程为
(2—7)
动点从原点走向终点的过程,可以看作是各坐标每经过一个单位时间间隔Δt分别以增量 和 同时累加的结果。经过m次累加后,x和y分别都到达终点 ,即下式成立:
(2—8)
则
或 (2—9)
上式表明,比例系数K和累加次数 的关系是互为倒数。因为m必须是整数,所以 一定是小数。在选取K时主要考虑每次增量 或 不大于1,以保证坐标轴上每次分配进给脉冲不超过一个单位步距,即
= <1
= <1
式中 和 的最大容许值受控制机的位数及用几个字节存储坐标值所限制。如用TP801(Z80)单板机作控制机,用两个字节存储坐标值,因该单板机为8位机,故 和 的最大容许寄存容量为216-1=65 535。为满足 <1及 <1的条件,即
= (216-1)<1
= (216-1)<1
则
如果取 ,则 ,即满足 <1的条件。这时累加次数为
次
一般情况下,若假定寄存器是n位,则 和 的最大允许寄存容量应为2n-1(各位全1时),若取
则
显然,由上式决定的Kxe和Kye是小于1的,这样,不仅决定了系数 ,而且保证了Δx和Δy小于1的条件。因此,刀具从原点到达终点的累加次数m就有
当 时,对二进制数来说, 与 的差别只在于小数点的位置不同,将 的小数点左移n位即为 。因此在n位的内存中存放 ( 为整数)和存放 的数字是相同的,只是认为后者的小数点出现在最高位数n的前面。
当用软件来实现数字积分法直线插补时,只要在内存中设定几个单元,分别用于存放 及其累加值 和 及其累加值 。将 和 赋一初始值,在每次插补循环过程中,进行以下求和运算:
+ →
+ →
将运算结果的溢出脉冲Δx和Δy用来控制机床进给,就可走出所需的直线轨迹。
综上所述,可以得到下述结论:
数字积分法插补器的关键部件是累加器和被积函数寄存器,每一个坐标方向就需要一个累加器和一个被积函数寄存器。一般情况下,插补开始前,累加器清零,被积函数寄存器分别寄存 和 ;插补开始后,每来一个累加脉冲 ,被积函数寄存器里的内容在相应的累加器中相加一次,相加后的溢出作为驱动相应坐标轴的进给脉冲 (或 ),而余数仍寄存在累加器中;当脉冲源发出的累加脉冲数m恰好等于被积函数寄存器的容量2n时,溢出的脉冲数等于以脉冲当量为最小单位的终点坐标,刀具运行到终点。
数字积分法插补第Ⅰ象限直线的程序流程图如图2-11所示。
图2-11 DDA直线插补流程图
下面举例说明DDA直线插补过程。设要插补图2—12所示的直线轨迹OA,起点坐标为 (0,0),终点坐标为 (7,10)。若被积函数寄存器Jvx和Jvy,余数寄存器 JRx和JRy,以及终点减法计数器JE均为四位二进制寄存器,则迭代次数为m=24=16次时插补完成。在插补前,JE,JRx,JRy均为零,Jvx和Jvy分别存放 =7(即二进制的0111), =10(即二进制的1010)。在直线插补过程中Jvx和Jvy中的数值始终为 和 保持不变。本例的具体轨迹如图2-12中的折线所示,由此可见,经过16次迭代之后, 和 坐标分别有7个和10个脉冲输出。直线插补轨迹与理论曲线的最大误差不超过1个脉冲当量。
图2-13 DDA直线插补过程
点击动画进入DDA直线插补
三、 DDA圆弧插补
以第Ⅰ象限逆圆为例,设刀具沿圆弧 移动,半径为R,刀具的切向速度为 , 为动点(如图2—13),
图2-13 DDA圆弧插补
则有下述关系:
式中 为比例常数。因为半径 为常数,切向速度 为匀速,所以 可认为是常数。
在单位时间增量 内, 和 位移增量的参量方程可表示为
(2—10)
(2—11)
点击进入动画观看DDA圆弧插补
根据此两式,仿照直线插补方案用两个积分器来实现圆弧插补,如图2—14(a)所示。图中系数K的省略原因和直线时类同。但必须指出:第一,坐标值 和 存入寄存器Jvx和Jvy的对应关系与直线不同,恰好位置互调,即 存入Jvx,而x存入Jvy中。第二,Jvx和Jvy寄存器中寄存的数值与直线插补时还有一个本质的区别:直线插补时Jvx(或Jvy)寄存的是终点坐标xe(或ye),是个常数;而在圆弧插补时寄存的是动点坐标,是个变量。因此在刀具移动过程中必须根据刀具位置的变化来更改速度寄存器Jvx和Jvy中的内容。在起点时,Jvx和Jvy分别寄存起点坐标值y0和x0;在插补过程中,JRy每溢出一个 脉冲,Jvx寄存器应该加“1”;反之,当JRx溢出一个 脉冲时,Jvy应该减“1”。减“1”的原因是刀具在作逆圆运动时 坐标须作负方向进给,动坐标不断减少。图2—14中用 及Ө表示修改动点坐标时这种加“1”或减“1”的关系。图2—14(b)为第Ⅰ象限逆时针走向的圆弧插补的数字积分器符号表示图。
图2-14 DDA圆弧插补运算框图及符号图
对于顺圆、逆圆及其他象限的插补运算过程和积分器结构基本上与第Ⅰ象限逆圆是一致的。其不同在于,控制各坐标轴的 和 的进给方向不同,以及修改Jvx和Jvy内容时是 还是Ө,要由 和 坐标的增减而定,见表2—5。
表2-5 DDA圆弧插补时的坐标修改情况
|
SR1 |
SR2 |
SR3 |
SR4 |
NR1 |
NR2 |
NR3 |
NR4 |
Jvx(y) |
一 |
+ |
一 |
+ |
+ |
一 |
+ |
一 |
Jvy(x) |
+ |
一 |
+ |
一 |
一 |
一 |
+ |
+ |
∆x |
+ |
+ |
- |
- |
- |
- |
+ |
+ |
∆y |
- |
+ |
+ |
- |
+ |
- |
- |
+ | 大容量的某一个数,如2 n/2,常用的则是预置最大容量值(称为置满数或全加载)和预置0.5(称为半加载)两种。
“半加载”是在DDA迭代前,余数寄存器JRx和JRy的初值不是置零,而是置1000…000(即0.5),也就是说,把余数寄存器JRx和JRy的最高有效位置“1”,其余各位均置“0”,这样,只要再叠加0.5,余数寄存器就可以产生第一个溢出脉冲,使积分器提前溢出。这在被积函数较小,迟迟不能产生溢出的情况时,有很大的实际意义,因为它改善了溢出脉冲的时间分布,减小了插补误差。
“半加载”可以使直线插补的误差减小到半个脉冲当量以内,一个显而易见的例子是:若直线OA的起点为坐标原点,终点坐标是A(15,1),没有“半加载”时,x积分器除第一次迭代没有溢出外,其余15次迭代均有溢出;而y积分器只有在第16次迭代时才有溢出脉冲(见图2—17(a))。若进行了“半加载”,则x积分器除第9次迭代没有溢出外,其余15次均有溢出;而y积分器的溢出提前到第8次迭代有溢出,这就改善了溢出脉冲的时间分布,提高了插补精度(见图2—17(a))。
图2-17 “半加载”后的轨迹
“半加载”使圆弧插补的精度得到明显改善。若对图2—17(b)的例子进行“半加载”,其插补轨迹如图中的折线所示,插补过程见表2—7。仔细比较后可以发现,“半加载”使x积分器的溢出脉冲提前了,从而提高了插补精度。
所谓“全加载”,是在DDA迭代前将余数寄存器JRx 和JRy的初值置成该寄存器的最大容量值(当为n位时,即置入2n-1),这会使得被积函数值很小的坐标积分器提早产生溢出,插补精度得到明显改善。
图2-18 “全加载”后的实际轨迹
点击进入动画观看半加载,全加载DDA圆弧插补
图2—18是使用“全加载”的方法得到的插补轨迹,由于被积函数寄存器和余数寄存器均为三位,置入最大数为7(111)。
五、 其他函数的DDA插补运算
为方便起见,现将各种积分单元符号重画于图2—19,其中增量 , , 直接写成了它们的微分形式 , , ,这里所列的各种单元都可由先前的积分器基本线路演化得到。
图2-19 积分器符号图
对于标准椭圆方程
经微分并整理后可得
(2-13)
其框图如图2-20(a)所示。
对于双曲线的标准方程
经微分并整理后可得
(2-14)
其框图如图2—20(b)所示。
图2-20 其他函数积分器符号图
(a)椭圆 (b)双曲线 (c)抛物线
抛物线抛物线的方程为
经微分并整理可得
(2—15)
其框图如图2—20(c)所示。 |