机械制造 > 数控技术
+

数控机床操作教程-(4)轮廓控制原理实验(4)

2012/2/17    作者:未知    来源:网络文摘    阅读:2502

第二节 数字积分法插补原理实验

一、实验目的

1.掌握数字积分法直线与圆弧插补的基本原理

2.掌握数字积分法直线插补与圆弧插补的程序编制方法

3.加深对数字积分法插补的理解

二、实验原理

数字积分法的基本原理是,使用一系列的小矩形面积之和来近似轮廓曲线函数积分的整个面积。此处为方便理解,从物理上来进行DDA插补的分析。

1.直线插补

设直线的终点坐标为(Xe,Ye),现取容器两个:Qx和Qy,其容量相等,均为Q≥MAX(Xe,Ye)。按一定的节拍不断将Xe值加入Qx,同时将Ye值加入Qy;若Qx中的值超过Q,则在X方向发一个脉冲,若Qy中的值超过Q,则在Y方向发一个脉冲,注意,两个方向发脉冲的过程是相互独立的事件。显然,若Xe>Ye,则X方向脉冲发得较快;若Xe=Ye,则两个方向脉冲发得一样快;若Ye>Xe,则Y方向脉冲发得较快。

可得软件框图如下(图4-11)。

数控机床操作教程-(4)轮廓控制原理实验

实际上,数字积分直线插补的物理意义是使插补点沿着速度矢量的方向上进给,对于圆弧插补,这同样适用。

2.圆弧插补

圆弧DDA插补与直线DDA插补有以下不同:

(1)直线插补时为常量(终点坐标)累加,圆弧插补时为变量(动点坐标)累加。

(2)直线插补时,Qx中放的是终点X坐标,Qy中放的是终点Y坐标;而圆弧插补时,Qx中放的是动点Y坐标,Qy中放的是动点X坐标。

可得圆弧DDA插补的软件框图(图4-12)。

数控机床操作教程-(4)轮廓控制原理实验

图4-12 数字积分法圆弧插补软件框图

3.参考程序

直线:

Sub 插补X()

标志X = 0

If 余数X >= Q Then

余数X = 余数X Mod Q

x动点 = x动点 + 1: 标志X = 1

End If

End Sub

Sub 插补Y()

标志Y = 0

If 余数Y >= Q Then

余数Y = 余数Y Mod Q

y动点 = y动点 + 1: 标志Y = 1

End If

End Sub

Sub 插补Z()

标志Z = 0

If 余数Z >= Q Then

余数Z = 余数Z Mod Q

z动点 = z动点 + 1: 标志Z = 1

End If

End Sub

Sub 插补公共()

余数X = 余数X + x终点

余数Y = 余数Y + y终点

余数Z = 余数Z + z终点

插补X

插补Y

插补Z

插补记录 = 插补记录 + 1

End Sub

Sub 插补()

Dim c As Integer

插补记录 = 0: 余数X = 0: 余数Y = 0: 余数Z = 0: 划轮廓线

PSet (z原点, x原点), vbRed

Select Case 象限标志

Case 1: ''第一象限插补

Do Until 插补记录 = Q

插补公共

Line -Step(z步长 × 标志Z, x步长 × 标志X), vbRed

Loop

Case 2: ''第二象限插补

c = x终点: x终点 = z终点: z终点 = -c

c = x步长: x步长 = z步长: z步长 = -c

Do Until 插补记录 = Q

插补公共

Line -Step(x步长 × 标志X, z步长 × 标志Z), vbRed

Loop

Case 3: ''第三象限插补

x终点 = -x终点: z终点 = -z终点

x步长 = -x步长: z步长 = -z步长

Do Until 插补记录 = Q

插补公共

Line -Step(z步长 × 标志Z, x步长 × 标志X), vbRed

Loop

Case 4: ''第四象限插补

c = x终点: x终点 = -z终点: z终点 = c

c = x步长: x步长 = -z步长: z步长 = c

Do Until 插补记录 = Q

插补公共

Line -Step(x步长 × 标志X, z步长 × 标志Z), vbRed

Loop

End Select

End Sub

圆弧:

Sub 插补()

PSet (z原点, x原点), vbRed

余数X = 0: 余数Y = 0: 余数Z = 0: 插补记录 = 0:

过象限标志 = 0: 跨象限数量 = 0

If Opt逆圆 = False Then

xx: 跨象限数量 = 跨象限数量 + 1

Select Case 象限标志

Case 1: ''第一象限插补

过象限预处理

Do Until (x动点对圆心 - x终点对圆心) ^ 2 + (z动点对圆心 - z终点对圆心) ^ 2 <= 跨象限数量 ^ 2

If x动点对圆心 = 0 Then

象限标志 = 2:

过象限标志 = 1

GoTo xx

End If

插补公共

Line -Step(z步长 × 标志Z, -x步长 × 标志X), vbRed

Loop

过象限标志 = 0

Case 2: ''第二象限插补

过象限预处理

Do Until (x动点对圆心 - x终点对圆心) ^ 2 + (z动点对圆心 - z终点对圆心) ^ 2 <= 跨象限数量 ^ 2

If x动点对圆心 = 0 Then

象限标志 = 3:

过象限标志 = 1

GoTo xx

End If

插补公共

Line -Step(-x步长 × 标志X, z步长 × 标志Z), vbRed

Loop

过象限标志 = 0

Case 3: ''第三象限插补

过象限预处理

Do Until (x动点对圆心 - x终点对圆心) ^ 2 + (z动点对圆心 - z终点对圆心) ^ 2 <= 跨象限数量 ^ 2

If x动点对圆心 = 0 Then

象限标志 = 4:

过象限标志 = 1

GoTo xx

End If

插补公共

Line -Step(z步长 × 标志Z, -x步长 × 标志X), vbRed

Loop

过象限标志 = 0

Case 4: ''第四象限插补

过象限预处理

Do Until (x动点对圆心 - x终点对圆心) ^ 2 + (z动点对圆心 - z终点对圆心) ^ 2 <= 跨象限数量 ^ 2

If x动点对圆心 = 0 Then

象限标志 = 1:

过象限标志 = 1

GoTo xx

End If

插补公共

Line -Step(-x步长 × 标志X, z步长 ×标志Z), vbRed

 Loop

过象限标志 = 0

End Select

Else

xy: 跨象限数量 = 跨象限数量 + 1

Select Case 象限标志

Case 1: ''第一象限插补

过象限预处理

Do Until (x动点对圆心 - x终点对圆心) ^ 2 + (z动点对圆心 - z终点对圆心) ^ 2 <= 跨象限数量 ^ 2

单步连续判断

If z动点对圆心 = 0 Then

象限标志 = 4:

过象限标志 = 1

GoTo xy

End If

插补公共

Line -Step(-z步长 × 标志Z, x步长 × 标志X), vbRed

Loop

过象限标志 = 0

Case 2: ''第二象限插补

过象限预处理

Do Until (x动点对圆心 - x终点对圆心) ^ 2 + (z动点对圆心 - z终点对圆心) ^ 2 <= 跨象限数量 ^ 2

单步连续判断

If z动点对圆心 = 0 Then

象限标志 = 1:

过象限标志 = 1

GoTo xy

End If

插补公共

Line -Step(x步长 × 标志X, -z步长 × 标志Z), vbRed

Loop

过象限标志 = 0

Case 3: ''第三象限插补

过象限预处理

Do Until (x动点对圆心 - x终点对圆心) ^ 2 + (z动点对圆心 - z终点对圆心) ^ 2 <= 跨象限数量 ^ 2

If z动点对圆心 = 0 Then

象限标志 = 2:

过象限标志 = 1

GoTo xy

End If

插补公共

Line -Step(-z步长 × 标志Z, x步长 × 标志X), vbRed

Loop

过象限标志 = 0

Case 4: ''第四象限插补

过象限预处理

Do Until (x动点对圆心 - x终点对圆心) ^ 2 + (z动点对圆心 - z终点对圆心) ^ 2 <= 跨象限数量 ^ 2

If z动点对圆心 = 0 Then

象限标志 = 3:

过象限标志 = 1

GoTo xy

End If

插补公共

Line -Step(x步长 × 标志X, -z步长 × 标志Z), vbRed

Loop

过象限标志 = 0

End Select

cc: End If

End Sub

  • 相关文章
  • 热门文章
免责申明:天天CAD教程网旨在相互学习交流,是一个完全免费的网站,部分原创作品,欢迎转载,部分内容来自互联网,如果侵犯了您的权利请尽快通知我们!邮箱:qm198794@gmail.com天天CAD教程网湘ICP备17006802号
【回到顶部】