4. 逐点比较法直线插补
逐点比较法是数控系统中最基础、最直观的一种插补算法,其核心思想是“走一步、看一步、比一比、再决定下一步”。在直线插补中,刀具或工作台每前进一步,系统都会将当前点的实际位置与理想直线进行比较,根据偏差的正负决定下一步的进给方向。这种方法不需要复杂的三角函数运算,仅通过加减法和符号判断即可完成轨迹控制,非常适合在早期的硬件数控系统中实现,也是理解现代插补算法的最佳切入点。本节将围绕偏差判别、进给方向、偏差计算与终点判别四个核心环节展开,并通过一个完整的手算示例,帮助读者建立对逐点比较法的直观认知。
4.1 核心原理:偏差的几何意义与判别逻辑
逐点比较法的理论基础是解析几何中“点与直线的位置关系”。设第一象限内有一条从原点 O(0,0) 出发、终点为 E(Xe, Ye) 的直线段。对于任意动点 P(Xi, Yi),定义偏差函数为:
F = Xi × Ye − Yi × Xe
这个式子的几何意义非常直观:如果 F = 0,说明点 P 恰好落在直线 OE 上;如果 F > 0,说明点 P 位于直线上方(即 X 方向超前);如果 F < 0,说明点 P 位于直线下方(即 Y 方向超前)。偏差的正负号直接决定了下一步的进给方向,这就是“偏差判别”的本质。
值得注意的是,偏差函数中的 Xe 和 Ye 是终点坐标的值,在整个插补过程中保持不变。因此,偏差计算不需要每次都重新做乘法,而是可以通过递推公式大幅简化运算。这正是逐点比较法能够用简单硬件电路实现的原因——它只需要加法器和符号判断器,不需要乘法器或除法器。
4.2 进给方向与偏差递推计算
确定了进给方向后,动点坐标发生变化,偏差值也需要同步更新。为了避免每次重新计算乘法,我们采用递推公式。以第一象限直线为例:
- 当 F ≥ 0 时,向 +X 方向进给一步,即 Xi+1 = Xi + 1,Yi 不变。新偏差为:
F' = (Xi+1) × Ye − Yi × Xe = Xi × Ye − Yi × Xe + Ye = F + Ye
- 当 F < 0 时,向 +Y 方向进给一步,即 Yi+1 = Yi + 1,Xi 不变。新偏差为:
F' = Xi × Ye − (Yi+1) × Xe = Xi × Ye − Yi × Xe − Xe = F − Xe
可以看到,递推计算只需要一次加法或减法,且参与运算的 Ye 和 Xe 是常数。这种“偏差判别 → 进给 → 偏差递推 → 终点判别”的循环结构,就是逐点比较法的完整工作流程。下表总结了第一象限直线插补的完整规则:
| 偏差状态 | 进给方向 | 偏差递推公式 | 几何含义 |
|---|---|---|---|
| F ≥ 0 | +X(向右) | F ← F − Ye | 点在直线上方,向 X 方向追赶 |
| F < 0 | +Y(向上) | F ← F + Xe | 点在直线下方,向 Y 方向追赶 |
4.3 终点判别:总步数法
终点判别是插补循环的退出条件。常用的方法有三种:总步数法、坐标比较法和射线法。其中总步数法最为常用,其原理是:预先计算出从起点到终点所需的总步数 N = |Xe| + |Ye|,每进给一步,N 减 1,直到 N = 0 时停止插补。
总步数法的优点是实现简单、判断可靠,不需要比较当前坐标与终点坐标的大小关系。无论实际轨迹如何曲折,只要总步数走完,就一定到达终点。这是因为逐点比较法每一步只在一个坐标轴方向进给一个脉冲当量,总步数恰好等于两个方向进给次数之和。
以终点 E(4, 3) 为例,总步数 N = 4 + 3 = 7。这意味着整个插补过程需要 7 个循环周期,其中 4 步向 +X 方向,3 步向 +Y 方向。虽然进给顺序可能交替变化,但最终一定走完 4 个 X 步和 3 个 Y 步,到达终点 (4, 3)。
4.4 手算示例:从 (0,0) 到 (4,3) 的完整插补过程
下面通过一个完整的手算示例,演示逐点比较法直线插补的每一步操作。设起点 O(0,0),终点 E(4,3),脉冲当量为 1(即每步移动 1 个单位)。初始偏差 F₀ = 0,总步数 N = 7。
第 1 步:F₀ = 0 ≥ 0,向 +X 进给至 (1,0)。偏差递推:F₁ = F₀ − Ye = 0 − 3 = −3。N = 7 − 1 = 6。
第 2 步:F₁ = −3 < 0,向 +Y 进给至 (1,1)。偏差递推:F₂ = F₁ + Xe = −3 + 4 = 1。N = 6 − 1 = 5。
第 3 步:F₂ = 1 ≥ 0,向 +X 进给至 (2,1)。偏差递推:F₃ = F₂ − Ye = 1 − 3 = −2。N = 5 − 1 = 4。
第 4 步:F₃ = −2 < 0,向 +Y 进给至 (2,2)。偏差递推:F₄ = F₃ + Xe = −2 + 4 = 2。N = 4 − 1 = 3。
第 5 步:F₄ = 2 ≥ 0,向 +X 进给至 (3,2)。偏差递推:F₅ = F₄ − Ye = 2 − 3 = −1。N = 3 − 1 = 2。
第 6 步:F₅ = −1 < 0,向 +Y 进给至 (3,3)。偏差递推:F₆ = F₅ + Xe = −1 + 4 = 3。N = 2 − 1 = 1。
第 7 步:F₆ = 3 ≥ 0,向 +X 进给至 (4,3)。偏差递推:F₇ = F₆ − Ye = 3 − 3 = 0。N = 1 − 1 = 0,插补结束。
将上述过程整理为表格,可以更清晰地观察每一步的偏差变化和进给方向:
| 步序 | 进给前偏差 F | 偏差符号 | 进给方向 | 进给后坐标 | 偏差递推 | 剩余步数 N |
|---|---|---|---|---|---|---|
| 1 | 0 | ≥0 | +X | (1,0) | 0−3=−3 | 6 |
| 2 | −3 | <0 | +Y | (1,1) | −3+4=1 | 5 |
| 3 | 1 | ≥0 | +X | (2,1) | 1−3=−2 | 4 |
| 4 | −2 | <0 | +Y | (2,2) | −2+4=2 | 3 |
| 5 | 2 | ≥0 | +X | (3,2) | 2−3=−1 | 2 |
| 6 | −1 | <0 | +Y | (3,3) | −1+4=3 | 1 |
| 7 | 3 | ≥0 | +X | (4,3) | 3−3=0 | 0 |
从表中可以看出,实际进给顺序为 X → Y → X → Y → X → Y → X,共 4 次 X 方向进给和 3 次 Y 方向进给,最终精确到达终点 (4,3)。整个过程中偏差值始终在 −3 到 3 之间波动,体现了“追赶”直线的动态过程。
4.5 常见误区与工程注意事项
在实际学习和应用中,以下几个问题需要特别留意:
总结复盘:逐点比较法直线插补的核心在于“偏差判别”和“偏差递推”两个环节。偏差判别决定了进给方向,偏差递推则用简单的加减法替代了复杂的乘法运算。通过手算示例可以看出,整个插补过程是一个确定性的循环,每一步都基于当前偏差状态做出决策,最终以总步数 N 归零作为终止条件。这种方法虽然每一步只能沿坐标轴方向移动,但通过交替进给,能够以折线轨迹逼近理想直线,其逼近误差不超过一个脉冲当量,完全满足大多数数控加工场景的精度要求。理解这一基础算法,对于后续学习圆弧插补、DDA 插补以及现代 CNC 系统中的粗插补与精插补两级架构,都具有重要的铺垫意义。