4、运动控制基础:梯形加减速算法、S形加减速算法、速度前瞻与插补预处理
各位好,我是老张。今天咱们聊聊运动控制里最核心的几个算法。说实话,我刚入行那会儿,觉得加减速不就是个斜坡函数嘛,有啥好研究的?直到第一次调试三轴联动,电机在拐角处直接“哐”一声撞限位,我才意识到——速度规划做不好,机器就是一头蛮牛。
这一章,我带你从最基础的梯形加减速开始,一步步深入到S形曲线、速度前瞻和插补预处理。这些都是实际项目中天天要打交道的东西,你想想看,没有它们,数控系统根本跑不起来。
4.1 梯形加减速算法
梯形加减速,说白了就是加速段、匀速段、减速段三段拼成一个梯形。加速时速度线性上升,减速时线性下降。简单粗暴,但够用。
它的数学模型是这样的:
加速段:v(t) = v0 + a * t (0 ≤ t ≤ t1)
匀速段:v(t) = v_max (t1 ≤ t ≤ t2)
减速段:v(t) = v_max - a * (t - t2) (t2 ≤ t ≤ t3)
其中 a 是加速度,v0 是初速度,v_max 是目标速度。嗯,这里要注意:加速度 a 必须恒定,否则梯形就不“梯”了。
核心参数:
- 起始速度 v0(通常为0)
- 目标速度 v_max
- 加速度 a(正/负)
- 总位移 S
- 加速时间 t1 = (v_max - v0) / a
- 减速时间 t3 - t2 = (v_max - v_end) / a
我在项目中遇到过一个问题:梯形加减速在高速切换时,加速度突变会产生冲击。说白了就是电机在加速结束那一瞬间,电流会突然跳变,导致机械振动。所以后来我一般只在低速、对精度要求不高的场合用梯形。
我的经验:梯形加减速适合点位运动(比如从A到B),不适合连续轨迹加工。如果你做的是雕刻机、激光切割这类需要平滑路径的设备,建议直接上S形。
4.2 S形加减速算法
S形加减速,说白了就是让加速度也平滑变化。梯形是速度线性变化,S形是加速度线性变化,也就是加加速度(Jerk)恒定。
它的分段更多,通常分为7段:
- 加加速段:加速度从0线性增加到a_max
- 匀加速段:加速度保持a_max
- 减加速段:加速度从a_max线性降到0
- 匀速段:速度保持v_max
- 加减速段:加速度从0线性降到-a_max
- 匀减速段:加速度保持-a_max
- 减减速段:加速度从-a_max线性升到0
你可能会问:为什么要搞这么复杂?因为加加速度突变越小,机械冲击越小。我曾经调试一台五轴机床,用梯形加减速时,刀具在拐角处总是留下振纹。换成S形后,表面光洁度直接提升了一个等级。
S形的核心公式(以加加速段为例):
j = 加加速度(恒定)
a(t) = j * t
v(t) = v0 + 0.5 * j * t²
s(t) = v0 * t + (1/6) * j * t³
你看,速度是时间的二次函数,位移是三次函数。所以S形曲线也叫三次曲线规划。
注意:S形算法计算量比梯形大得多。在嵌入式系统里,如果CPU性能不够,建议用查表法或者近似计算。我早期在STM32F4上跑S形,一次规划要算几百次浮点,差点把CPU跑死。
4.3 速度前瞻
速度前瞻,说白了就是“看前面几段路径,提前规划速度”。为什么要这么做?因为数控加工是一段一段走的,如果只看当前段,到了拐角处速度可能降不下来,导致过切。
前瞻的核心逻辑:
- 读取未来N段路径(N通常为10~50)
- 计算每段路径的拐角角度
- 根据拐角角度计算允许的最大通过速度
- 反向规划减速点
我记得有一次调试一台高速雕铣机,客户反映加工圆角时总是有停顿。我一看代码,前瞻窗口只开了3段。改成20段后,速度平滑多了。你想想看,前瞻窗口太小,等于近视眼开车,能不撞吗?
前瞻的关键参数:
| 参数 | 说明 | 典型值 |
|---|---|---|
| 前瞻段数 | 一次预读多少段路径 | 10~50 |
| 拐角速度 | 拐角处允许的最大速度 | 根据角度计算 |
| 减速距离 | 从当前速度降到拐角速度所需距离 | 动态计算 |
4.4 插补预处理
插补预处理,是速度规划前的最后一步。说白了就是把G代码解析成插补器能直接用的数据。这一步做不好,后面全是白搭。
预处理通常包括:
- 路径解析:把G01、G02、G03等指令转换成直线、圆弧参数
- 速度约束:根据机床最大速度、加速度、加加速度限制,计算每段的理论最大速度
- 拐角处理:计算相邻路径的拐角角度,确定拐角通过速度
- 数据打包:把规划好的数据打包成插补器能读的格式(比如链表或数组)
我在项目中踩过一个坑:预处理时没有考虑圆弧半径对速度的限制。结果在加工小半径圆弧时,向心加速度过大,导致刀具直接飞出去了。后来我加了一个向心加速度约束:
v_max_arc = sqrt(a_max_centripetal * R)
其中 R 是圆弧半径,a_max_centripetal 是允许的最大向心加速度。这个公式很简单,但很多人会忽略。
避坑指南:预处理阶段一定要做速度回退。什么意思呢?就是如果当前段速度太高,减速距离不够,就要往前一段、两段甚至更多段去调整速度。我曾经因为没做回退,导致机床在高速下急刹车,直接把丝杠顶弯了。
知识体系总览
下面这张图是我自己画的,把这一章的核心逻辑串起来了。你看一眼就能明白:梯形/S形是基础,前瞻是眼睛,预处理是大脑。
嗯,这一章的内容就这些。梯形加减速是基础,S形是进阶,前瞻是灵魂,预处理是保障。四者缺一不可。你在实际项目中,可以根据机床的机械特性、加工精度要求来灵活选择。比如做木工雕刻机,梯形加减速加10段前瞻就够了;做精密模具,必须上S形加50段前瞻。
好了,今天就聊到这儿。下次见。