4. 梯形速度曲线:最经典的加减速模型

梯形速度曲线,说白了就是让速度先匀加速、再匀速、最后匀减速。你想想看,这名字怎么来的?把速度曲线画出来,形状就像个梯形。我在刚入行那会儿,第一个接触的电子凸轮曲线就是它。简单、直观、好调,直到现在很多通用场合我还在用。

核心思想:加速度恒定,速度线性变化。加速段和减速段对称,中间是匀速段。

4.1 数学模型

梯形速度曲线由三个阶段组成。每个阶段都有明确的数学表达式。我习惯用位移、速度、加速度三个维度来看它。

设总位移为 S,最大速度为 Vmax,加速度为 a,减速度为 d(通常 a = d)。

三个阶段的运动方程如下:

阶段 时间区间 速度 v(t) 位移 s(t) 加速度
加速段 0 ≤ t ≤ ta v = a·t s = ½·a·t² a
匀速段 ta ≤ t ≤ ta+tc v = Vmax s = Vmax·(t - ta) + Sa 0
减速段 ta+tc ≤ t ≤ T v = Vmax - d·(t - ta - tc) s = Vmax·(t - ta - tc) - ½·d·(t - ta - tc)² + Sa + Sc -d

其中:

  • ta = Vmax / a —— 加速时间
  • td = Vmax / d —— 减速时间
  • Sa = ½·Vmax·ta —— 加速段位移
  • Sd = ½·Vmax·td —— 减速段位移
  • Sc = S - Sa - Sd —— 匀速段位移
  • tc = Sc / Vmax —— 匀速段时间
  • 总时间 T = ta + tc + td

我的经验:实际项目中,加速和减速的加速度往往设成一样。这样计算简单,曲线也对称。但如果你遇到负载变化大的场合,比如提升机,加速和减速分开设会更安全。

4.2 三个阶段的计算方法

实际编程时,我们通常根据已知条件反推参数。最常见的情况有两种。

情况一:已知 S、Vmax、a、d

这是最理想的情况。直接按公式算就行。但要注意一个坑——如果 S 太小,可能跑不到 Vmax 就要开始减速了。我曾经在调试一台贴片机时遇到过,总位移只有 10mm,结果算出来加速还没结束就得减速,梯形变成了三角形。

判断条件很简单:

if (S < S_a + S_d) {
    // 跑不到最大速度,变成三角形曲线
    // 需要重新计算实际能达到的最高速度
    V_actual = sqrt(2 * a * d * S / (a + d));
    t_a = V_actual / a;
    t_d = V_actual / d;
    t_c = 0;
} else {
    // 正常梯形曲线
    t_c = (S - S_a - S_d) / V_max;
}

情况二:已知 S、总时间 T、a、d

这种场景在同步控制里很常见。比如主轴转一圈,从轴必须在 0.5 秒内走完 100mm。这时候需要反推 Vmax。

求解步骤:

  1. 假设能跑出梯形,则 T = ta + tc + td
  2. 代入 ta = Vmax/a,td = Vmax/d
  3. 匀速段位移 Sc = Vmax·(T - Vmax/a - Vmax/d)
  4. 总位移 S = ½·Vmax²/a + Vmax·(T - Vmax/a - Vmax/d) + ½·Vmax²/d
  5. 整理成关于 Vmax 的一元二次方程求解

嗯,这里要注意,解出来的 Vmax 不能超过电机额定转速。我见过有人算出来 5000rpm,结果电机只能跑 3000,最后曲线全乱套了。

4.3 梯形曲线的 SVG 示意图

下面这张图展示了完整的梯形速度曲线。你可以看到速度、加速度、位移三个维度的对应关系。

梯形速度曲线三要素 速度 v(t) 加速段 匀速段 减速段 0 ta ta+tc T Vmax 加速度 a(t) +a -d 0 位移 s(t) S(总位移) 说明 加速段:抛物线 匀速段:直线 减速段:抛物线 (反向)

4.4 优缺点分析

梯形曲线用了这么多年,自然有它的道理。但也不是万能的。我根据自己的项目经验,给你列个清单。

维度 优点 缺点
计算复杂度 公式简单,单片机也能跑 —
运动效率 匀速段效率高,适合长行程 短行程跑不出梯形,效率下降
加速度特性 加速度恒定,电机扭矩好匹配 加加速度无穷大,冲击大
柔性 — 启停瞬间有冲击,不适合精密定位
调试难度 参数少,调起来快 —
适用场景 传送带、搬运、点胶等 高速高精度场合不推荐

注意:梯形曲线最大的问题在于加加速度(Jerk)无穷大。在加速开始和结束的瞬间,加速度从 0 跳变到 a,或者从 a 跳变到 0。这会产生冲击力。我曾经在调试一台高速贴片机时,用梯形曲线跑 3000rpm,结果机器抖得跟筛子一样。后来换成 S 形曲线才解决。

4.5 什么时候该用梯形曲线?

我个人总结了三句话:

  • 行程长、速度高——梯形曲线的匀速段能充分发挥效率
  • 负载刚性大——不怕冲击,比如重型搬运
  • 控制器算力有限——梯形曲线计算量最小,老式 PLC 也能跑

反过来,如果你做的是芯片封装、精密测量、高速贴装,我建议你直接跳过梯形曲线,去看后面的 S 形曲线或者多项式曲线。那些才是干精细活的料。

一个小技巧:如果你暂时只能用梯形曲线,又怕冲击太大,可以在加速开始和结束的位置加一段很小的圆弧过渡。虽然不完美,但能缓解不少。我管这叫「土办法」,应急的时候挺好使。