4. 逐点比较法直线插补

逐点比较法是数控系统中最基础、最直观的一种插补算法,其核心思想是“走一步、看一步、比一比、再决定下一步”。在直线插补中,刀具或工作台每前进一步,系统都会将当前点的实际位置与理想直线进行比较,根据偏差的正负决定下一步的进给方向。这种方法不需要复杂的三角函数运算,仅通过加减法和符号判断即可完成轨迹控制,非常适合在早期的硬件数控系统中实现,也是理解现代插补算法的最佳切入点。本节将围绕偏差判别、进给方向、偏差计算与终点判别四个核心环节展开,并通过一个完整的手算示例,帮助读者建立对逐点比较法的直观认知。

逐点比较法直线插补四步循环 第一象限直线 OE X Y O(0,0) E(4,3) P(2,2) 偏差 F 四步循环:判别 → 进给 → 计算 → 终点 ① 偏差判别 F ≥ 0 或 F < 0 ② 进给方向 F≥0 走+X;F<0 走+Y ③ 偏差计算 F←F−Ye 或 F←F+Xe ④ 终点判别 N = |Xe|+|Ye| 减至 0 循环

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 是终点坐标的值,在整个插补过程中保持不变。因此,偏差计算不需要每次都重新做乘法,而是可以通过递推公式大幅简化运算。这正是逐点比较法能够用简单硬件电路实现的原因——它只需要加法器和符号判断器,不需要乘法器或除法器。

关键理解:偏差 F 的值大小并不重要,重要的是它的符号。F ≥ 0 时,当前点在直线上方或直线上,下一步应向 +X 方向进给;F < 0 时,当前点在直线下方,下一步应向 +Y 方向进给。这种“只看符号、不看大小”的策略,使得算法极其简洁高效。

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 方向追赶
记忆口诀:“大走 X,小走 Y;加 Ye,减 Xe。”即偏差大(F≥0)时走 X 方向并减去 Ye,偏差小(F<0)时走 Y 方向并加上 Xe。注意这里的“加 Ye”和“减 Xe”是针对第一象限而言,其他象限需要根据对称性调整符号。

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
10≥0+X(1,0)0−3=−36
2−3<0+Y(1,1)−3+4=15
31≥0+X(2,1)1−3=−24
4−2<0+Y(2,2)−2+4=23
52≥0+X(3,2)2−3=−12
6−1<0+Y(3,3)−1+4=31
73≥0+X(4,3)3−3=00

从表中可以看出,实际进给顺序为 X → Y → X → Y → X → Y → X,共 4 次 X 方向进给和 3 次 Y 方向进给,最终精确到达终点 (4,3)。整个过程中偏差值始终在 −3 到 3 之间波动,体现了“追赶”直线的动态过程。

4.5 常见误区与工程注意事项

在实际学习和应用中,以下几个问题需要特别留意:

误区一:偏差递推公式的符号混淆。很多初学者容易记错“F ≥ 0 时减 Ye,F < 0 时加 Xe”的对应关系。可以这样理解:当 F ≥ 0 时,点在直线上方,说明 X 方向“走多了”,需要向 X 方向进给来“追赶”直线,同时偏差值会减小(减去 Ye);当 F < 0 时,点在直线下方,说明 Y 方向“走多了”,需要向 Y 方向进给,同时偏差值会增大(加上 Xe)。
误区二:忽略象限对称性。本节示例仅针对第一象限。对于第二、三、四象限,进给方向和偏差递推公式需要根据对称性进行变换。例如第二象限直线,X 方向进给为 −X,Y 方向进给仍为 +Y,但偏差递推公式中的加减关系需要相应调整。实际工程中通常先将坐标取值,统一到第一象限处理,再根据象限映射回实际进给方向。
工程经验:逐点比较法的最大进给速度受限于插补周期。每个插补周期只能走一步,因此进给速度 = 脉冲当量 / 插补周期。如果需要提高速度,可以增大脉冲当量(但会降低精度)或缩短插补周期(受硬件性能限制)。此外,终点判别使用总步数法时,N 的初始值必须在插补开始前计算并存储,不能中途修改。

总结复盘:逐点比较法直线插补的核心在于“偏差判别”和“偏差递推”两个环节。偏差判别决定了进给方向,偏差递推则用简单的加减法替代了复杂的乘法运算。通过手算示例可以看出,整个插补过程是一个确定性的循环,每一步都基于当前偏差状态做出决策,最终以总步数 N 归零作为终止条件。这种方法虽然每一步只能沿坐标轴方向移动,但通过交替进给,能够以折线轨迹逼近理想直线,其逼近误差不超过一个脉冲当量,完全满足大多数数控加工场景的精度要求。理解这一基础算法,对于后续学习圆弧插补、DDA 插补以及现代 CNC 系统中的粗插补与精插补两级架构,都具有重要的铺垫意义。