3、插补算法原理:时间分割法、数据采样插补法,粗插补与精插补的分工
插补算法,说白了就是让电机按照你想要的轨迹走。不是简单走直线,而是走圆弧、走曲线、走螺旋线。我刚开始接触多轴插补时,总觉得这玩意儿是数学家在纸上画的东西,直到第一次调机时看到电机在圆弧上走出了一串锯齿……嗯,从那以后我再也不敢轻视插补算法了。
这一章,我们聊聊三种核心概念:时间分割法、数据采样插补法,以及粗插补与精插补的分工。搞懂了这些,你写插补代码时心里就有底了。
3.1 时间分割法:把连续轨迹切成时间片
时间分割法,名字听着挺唬人,其实思路很简单——把一段连续的轨迹,按固定的时间间隔切成一小段一小段。每一小段里,电机走一个直线或圆弧微段。
举个例子,你要走一个半径为 50mm 的圆弧,进给速度 100mm/s。如果你把时间片设为 1ms,那每一片里电机就走 0.1mm。这 0.1mm 的微段,控制器就当成直线来算。
核心公式:
ΔL = F × ΔT
其中 ΔL 是每个时间片内的位移量,F 是进给速度,ΔT 是时间片长度。
我个人的习惯是,时间片选 1ms 到 5ms 之间。太短了,CPU 扛不住;太长了,轨迹会明显走形。你想想看,如果时间片是 20ms,那一个圆弧就被切成 50 段直线,看起来就跟多边形似的。
实战建议:
时间片的选择要结合你的控制周期。如果伺服驱动器的位置环周期是 1ms,那插补时间片最好也是 1ms 的整数倍,比如 2ms 或 4ms。这样插补点和驱动器的采样点能对齐,减少抖动。
3.2 数据采样插补法:用采样点还原轨迹
数据采样插补法,跟时间分割法有点像,但思路不同。它不是按固定时间切,而是按固定的空间步长或角度步长来采样。说白了,就是先算出轨迹上的一系列离散点,然后让电机一个点一个点地走过去。
我记得有一次做五轴联动,客户要求加工一个叶轮曲面。如果用时间分割法,圆弧段还好,但到了样条曲线段,时间片切出来的点分布不均匀——曲率大的地方点太疏,曲率小的地方点太密。后来换成数据采样插补法,按弧长等距采样,效果就好多了。
| 对比项 | 时间分割法 | 数据采样插补法 |
|---|---|---|
| 采样依据 | 固定时间间隔 | 固定空间步长/角度步长 |
| 适用场景 | 直线、圆弧等简单轨迹 | 样条曲线、自由曲面等复杂轨迹 |
| 点分布 | 时间均匀,空间不均匀 | 空间均匀,时间不均匀 |
| CPU 负载 | 较低 | 较高(需实时计算采样点) |
| 轨迹精度 | 受时间片大小影响 | 受采样步长影响 |
实际项目中,我经常把两种方法混着用。直线段用时间分割法,简单高效;曲线段用数据采样法,保证精度。你想想看,没必要所有地方都用重武器。
3.3 粗插补与精插补:分工协作的艺术
粗插补和精插补,是插补算法里最容易被忽视的一对搭档。很多人以为插补就是一次算完,其实不是。现代运动控制器里,插补是分两层做的。
粗插补:在轨迹规划层,按较大的时间片(比如 1ms~10ms)算出轨迹上的关键点。这些点叫“插补点”或“路径点”。粗插补只关心轨迹的形状,不关心电机怎么走。
精插补:在伺服驱动层,按更小的时间片(比如 0.1ms~1ms)在粗插补点之间做线性插值,生成给电机的位置指令。精插补关心的是让电机走得平滑、不抖动。
举个例子:
粗插补每 2ms 算出一个点,精插补每 0.5ms 算一次。那精插补就在两个粗插补点之间,用直线插值算出 4 个中间点。这样电机每 0.5ms 收到一个新位置指令,走起来就顺滑多了。
我曾经在一个项目中,粗插补周期设了 10ms,精插补周期设了 1ms。结果电机在圆弧上跑出了明显的抖动。后来把粗插补周期降到 2ms,问题就解决了。为什么会这样?因为粗插补点太稀疏,精插补用直线去拟合圆弧,误差太大。
避坑指南:
我曾经犯过一个错误——粗插补和精插补的周期比设成了 20:1。粗插补 10ms,精插补 0.5ms。结果精插补在两个粗插补点之间插了 20 个点,但轨迹误差累积到 0.3mm 以上。后来我给自己定了个规矩:粗插补与精插补的周期比不要超过 10:1,最好控制在 4:1 到 8:1 之间。
3.4 三层插补架构:从轨迹到电机
在实际的多轴运动控制器里,插补通常分三层:轨迹规划层、粗插补层、精插补层。我画了一张图,帮你理清这三层的关系。
从图上你能看到,轨迹规划层负责解析 G 代码,生成连续的轨迹描述(比如直线、圆弧、样条)。粗插补层把轨迹切成离散的路径点。精插补层在路径点之间做线性插值,生成给伺服驱动器的位置指令。最后伺服驱动器执行位置环、速度环、电流环,让电机真正动起来。
我个人的习惯是,在粗插补层用时间分割法处理直线和圆弧,用数据采样法处理样条曲线。精插补层统一用线性插值,简单可靠。你想想看,精插补如果也用复杂算法,CPU 负载就上去了,而且没必要——粗插补已经把轨迹形状算好了,精插补只是做平滑过渡。
3.5 实战中的参数选择建议
说了这么多理论,最后给点干货。这是我多年调试总结出来的参数选择经验,直接拿去用。
| 应用场景 | 粗插补周期 | 精插补周期 | 插补方法 |
|---|---|---|---|
| 普通两轴直线插补 | 5ms | 1ms | 时间分割法 |
| 三轴圆弧插补 | 2ms | 0.5ms | 时间分割法 + 数据采样法 |
| 五轴样条插补 | 1ms | 0.2ms | 数据采样法 |
| 高速高精度加工 | 0.5ms | 0.1ms | 数据采样法 + 前瞻处理 |
调试小技巧:
如果你不确定参数怎么设,先按粗插补 2ms、精插补 0.5ms 起步。跑一段轨迹,用示波器看位置指令的平滑度。如果指令有毛刺,说明精插补周期太长或粗插补点太疏。如果 CPU 负载超过 70%,说明周期设得太短了。
嗯,插补算法这块就聊到这儿。记住一句话:粗插补管形状,精插补管平滑。两者配合好了,电机走出来的轨迹才漂亮。