2. 梯形速度规划:三段式数学模型与参数物理意义
梯形速度曲线,是运动控制里最基础、也最常用的速度规划方式。说白了,就是让电机先匀加速、再匀速、最后匀减速,画出来像个梯形。我刚开始做运动控制时,第一个调的就是梯形曲线——简单,但坑也不少。
2.1 梯形速度曲线的数学模型
先看一个典型的梯形速度曲线长什么样。横轴是时间 t,纵轴是速度 v。整个过程分成三段:
- 加速段:速度从 0 线性增加到最大速度 Vmax
- 匀速段:以 Vmax 恒速运行
- 减速段:速度从 Vmax 线性减到 0
对应的位移曲线是 S 形——加速段是二次曲线,匀速段是直线,减速段又是二次曲线。嗯,这里要注意:如果加速和减速的斜率不一样,梯形就不对称了。
核心公式(单轴梯形规划):
- 加速段时间:t₁ = Vmax / a
- 减速段时间:t₃ = Vmax / d
- 加速段位移:S₁ = ½ · a · t₁²
- 减速段位移:S₃ = ½ · d · t₃²
- 匀速段位移:S₂ = S_total - S₁ - S₃
- 匀速段时间:t₂ = S₂ / Vmax
总时间 T = t₁ + t₂ + t₃。如果 S₂ ≤ 0,说明总位移太短,根本跑不到最大速度——这就是所谓的「三角形速度曲线」,只有加速和减速,没有匀速段。
// 梯形速度规划核心计算(伪代码)
float CalcTrapezoidalProfile(float totalDist, float vMax, float acc, float dec)
{
float t1 = vMax / acc;
float t3 = vMax / dec;
float s1 = 0.5f * acc * t1 * t1;
float s3 = 0.5f * dec * t3 * t3;
if (s1 + s3 >= totalDist)
{
// 三角形规划:跑不到最大速度
// 需要重新计算实际可达速度
float vPeak = sqrtf(2.0f * totalDist * acc * dec / (acc + dec));
t1 = vPeak / acc;
t3 = vPeak / dec;
return t1 + t3;
}
else
{
float s2 = totalDist - s1 - s3;
float t2 = s2 / vMax;
return t1 + t2 + t3;
}
}
这段代码我用了很多年。注意那个三角形分支的判断——很多新手会忽略,结果规划出来的速度曲线在短距离时直接超调。
2.2 加速/匀速/减速三段式详解
三段式看起来简单,但每一段都有讲究。我一个个说。
加速段:决定响应速度
加速段是系统从静止到高速的过渡。加速度 a 越大,加速时间越短,系统响应越快。但加速度太大,电机电流会瞬间飙升,机械结构也会受到冲击。我在做一台高速贴片机时,加速度设得太高,结果每次启动时皮带都打滑——后来不得不降下来。
匀速段:决定生产效率
匀速段是系统以最大速度稳定运行的阶段。Vmax 越高,单位时间内的位移越大,效率越高。但匀速段的存在前提是总位移足够长。如果位移很短,可能刚加速完就要减速,根本进不了匀速段。
减速段:决定定位精度
减速段是从高速平稳停下来的关键。减速度 d 如果太大,停止时会有明显冲击,甚至过冲。如果太小,减速距离太长,浪费时间。我习惯让减速度略小于加速度——这样停止更柔和,定位更准。
我的经验:加速和减速一般设成相同值,方便计算。但如果负载有重力分量(比如垂直轴),加速和减速必须分开设——加速时电机要克服重力,减速时重力在帮忙,设成一样反而容易出问题。
2.3 参数物理意义与调优方向
三个核心参数:最大速度 Vmax、加速度 a、减速度 d。每个参数都有明确的物理意义,调优方向也完全不同。
| 参数 | 符号 | 物理意义 | 调大影响 | 调小影响 |
|---|---|---|---|---|
| 最大速度 | Vmax | 系统允许的最高运行速度 | 效率↑,冲击↑,安全风险↑ | 效率↓,运行更平稳 |
| 加速度 | a | 速度上升的速率(m/s²) | 响应↑,电机电流↑,机械冲击↑ | 响应↓,启动更柔和 |
| 减速度 | d | 速度下降的速率(m/s²) | 停止快↑,过冲风险↑ | 停止慢↓,定位更准 |
调优时,我一般遵循这个顺序:
- 先定 Vmax:根据工艺节拍要求和电机额定转速,确定一个上限
- 再调加速度 a:从较小值开始,逐步增大,直到电机电流接近额定值或机械出现振动
- 最后调减速度 d:通常 d ≤ a,以定位精度为优先
避坑指南:我曾经在一个项目中,把加速度设得和减速度一样大,结果每次停止时负载都会晃动。后来把减速度降到加速度的 70%,问题就解决了。记住:停止比启动更需要温柔。
2.4 梯形规划的局限性
梯形曲线虽然简单,但有个硬伤:加速度在起点和终点是突变的。加速段开始时,加速度从 0 瞬间跳到 a;减速段结束时,加速度从 -d 瞬间跳到 0。这种加速度突变会产生冲击力,也就是所谓的「急动度(Jerk)」无穷大。
对于高精度设备(比如数控机床、半导体设备),这种冲击会直接影响加工质量。这时候就需要用 S 形速度曲线来平滑过渡——那是后面章节的内容了。
但话说回来,对于大多数普通应用(比如传送带、AGV、简易机械臂),梯形曲线完全够用。调好三个参数,就能跑得又快又稳。
这张图把三段式结构画得很清楚。你可以看到:加速段和减速段的斜率分别由 a 和 d 决定,匀速段的高度就是 Vmax。三个参数,决定了整个运动过程的效率和平稳性。
调梯形曲线,说白了就是在这三个参数之间找平衡。没有万能参数,只有适合你当前设备的参数。多试、多测、多记录——这是调参的唯一捷径。