4、梯形速度曲线:原理、参数设置与适用场景

梯形速度曲线,说白了就是加速-匀速-减速三段式。这是PLC运动控制里最基础、最常用的速度规划方式。我刚开始做调试那会儿,90%的设备用的都是这种曲线。为什么?因为它简单、直观、参数少,现场调起来也快。

核心概念:梯形速度曲线由三段直线组成——加速段、匀速段、减速段。加速度和减速度通常设为相同值,但也可以独立设置。

4.1 梯形曲线的数学原理

咱们先看一个典型的梯形速度曲线长什么样。横轴是时间t,纵轴是速度v。从0开始,先以恒定加速度a加速到目标速度Vmax,然后匀速跑一段,最后以恒定减速度a减速到0。

梯形速度曲线示意图 时间 t 速度 v t₁ t₂ t₃ t₄ Vmax 加速段 匀速段 减速段 加速时间 = t₂ - t₁,减速时间 = t₄ - t₃,匀速时间 = t₃ - t₂

这里有几个关键公式,我建议你记一下:

  • 加速距离:Sacc = ½ × Vmax × tacc
  • 匀速距离:Sconst = Vmax × tconst
  • 减速距离:Sdec = ½ × Vmax × tdec
  • 总距离:Stotal = Sacc + Sconst + Sdec

为什么会这样?因为加速度恒定,速度就是线性变化。面积就是位移,这个初中物理就学过。但实际项目中,很多人把加速时间和减速时间设成一样,结果发现停止位置不准——嗯,这里要注意,如果负载特性不同,加减速时间应该独立调整。

4.2 参数设置要点

梯形曲线在PLC里通常涉及三个核心参数。我列个表,你对照着看:

参数名称 常见符号 单位 说明
目标速度 Vmax mm/s 或 Hz 匀速段运行的最高速度
加速时间 tacc ms 从0加速到Vmax所需时间
减速时间 tdec ms 从Vmax减速到0所需时间

我的习惯:在西门子S7-1200里,我通常用MC_MoveRelative指令,直接填加速度和减速度值。三菱FX5U则用DDRVI指令,通过设置加减速时间常数来控制。不同品牌叫法不同,但本质一样。

参数设置时,有几点你一定要注意:

  1. 加速时间不能太短。太短意味着加速度太大,机械冲击会很大。我曾经遇到一个贴标机,加速时间设了50ms,结果每次启动皮带都打滑,标签位置全偏了。
  2. 减速时间要考虑负载惯性。如果负载很重,减速时间太短会导致过冲。我记得有一次调试一个大型转盘,减速时间设了200ms,结果每次定位都过冲5mm,后来加到800ms才稳定。
  3. 总行程太短时,可能没有匀速段。这种情况叫"三角速度曲线",只有加速和减速。你想想看,如果距离不够,还没加速到目标速度就得开始减速了。

4.3 适用场景分析

梯形曲线不是万能的。我做了这么多年调试,总结出它的优缺点:

场景类型 推荐程度 原因
点对点定位(如搬运、码垛) ★★★★★ 简单可靠,参数少,调试快
高速轻载(如小型装配机) ★★★★☆ 加速度突变小,冲击可接受
重载或高精度(如加工中心) ★★☆☆☆ 加速度突变会产生振动,建议用S型曲线
需要平滑启停(如电梯、输送线) ★★★☆☆ 启停瞬间有冲击,舒适度差

说白了,梯形曲线最适合那些对启停平滑度要求不高、但对调试效率要求高的场合。我个人的经验是:如果设备运行速度低于300mm/s,或者负载重量小于5kg,梯形曲线完全够用。

4.4 梯形曲线的局限性

梯形曲线有个天生的缺陷——加速度在拐点处突变。你看曲线图,在t₁和t₂之间,加速度从0瞬间跳到a,又在t₂处瞬间回到0。这种突变会产生冲击力,专业术语叫"加加速度"(Jerk)无穷大。

避坑指南:我曾经调试一台高速贴片机,用梯形曲线时,每次加速到最高速时机器都会抖一下。后来用示波器看加速度波形,发现拐点处的冲击力达到了电机额定转矩的1.8倍。换成S型曲线后,冲击力降到了1.2倍,问题解决了。

所以,如果你遇到以下情况,建议考虑其他曲线:

  • 设备有精密光学镜头或易碎工件
  • 运行速度超过500mm/s
  • 负载重量超过20kg
  • 定位精度要求0.01mm以内

4.5 梯形曲线的代码实现示例

下面是一个梯形速度曲线的PLC实现思路。我用结构化文本(ST)写了个简单示例,方便你理解:

// 梯形速度曲线 - 位置模式
// 输入:目标位置 TargetPos,目标速度 TargetVel
// 输入:加速时间 AccTime,减速时间 DecTime

// 计算加速距离和减速距离
AccDist := TargetVel * AccTime / 2.0;
DecDist := TargetVel * DecTime / 2.0;

// 判断是否有匀速段
IF (TargetPos >= AccDist + DecDist) THEN
    // 有匀速段
    ConstDist := TargetPos - AccDist - DecDist;
    ConstTime := ConstDist / TargetVel;
    
    // 三段式运动
    // 加速段:0 ~ AccTime
    // 匀速段:AccTime ~ AccTime + ConstTime
    // 减速段:AccTime + ConstTime ~ AccTime + ConstTime + DecTime
ELSE
    // 无匀速段,三角曲线
    // 实际最大速度达不到TargetVel
    ActualVel := SQRT(2 * TargetPos * TargetVel / (AccTime + DecTime));
    // 重新计算加速和减速时间
END_IF

这个代码只是示意。实际项目中,你还要考虑单位换算、限位保护、急停处理等。我个人习惯把梯形曲线封装成一个功能块,输入目标位置、速度、加减速时间,输出当前速度指令。这样调用起来方便,也容易维护。

4.6 梯形曲线与S型曲线的对比

最后,我把梯形曲线和下一章要讲的S型曲线做个对比。你心里有个数:

对比项 梯形曲线 S型曲线
加速度变化 阶跃突变 连续平滑
机械冲击 大 小
参数数量 3个(速度、加速时间、减速时间) 5个(速度、加加速度、加速度、减速度、减减速度)
调试难度 低 高
适用速度 中低速(<500mm/s) 中高速(>300mm/s)
典型应用 搬运、码垛、简单定位 加工中心、机器人、精密装配

梯形曲线就像手动挡汽车——简单直接,但换挡时会有顿挫感。S型曲线则像自动挡——平顺舒适,但调校起来更复杂。选哪个,取决于你的设备对冲击的容忍度。

我的建议:新手先从梯形曲线入手。把加减速时间调明白,理解速度、加速度、位移之间的关系。等梯形曲线玩熟了,再学S型曲线。基础打牢了,后面学什么都快。