1. 梯形速度曲线入门:什么是梯形速度曲线、为什么需要速度规划、运动控制中的基本概念
大家好,我是老张。在运动控制这行摸爬滚打了十几年,今天咱们来聊聊最基础、也最实用的话题——梯形速度曲线。
说实话,我刚入行那会儿,觉得运动控制不就是让电机转起来嘛,哪有那么多弯弯绕绕?直到有一次,我负责一个高速贴片机项目,电机一启动就剧烈抖动,甚至出现过流报警。那时候我才意识到——速度规划,是运动控制的灵魂。
1.1 什么是梯形速度曲线?
梯形速度曲线,说白了就是速度随时间的变化像一个梯形。
你想想看,一个完整的运动过程,通常分三个阶段:
- 加速阶段:速度从0开始,匀加速上升到目标速度
- 匀速阶段:保持目标速度运行一段时间
- 减速阶段:匀减速到0,平稳停下
画出来就是这样的梯形:
嗯,这张图我画了很多遍。你看,加速段和减速段是对称的,中间是平的。这就是梯形速度曲线最经典的样子。
核心要点:梯形速度曲线由三段组成——匀加速、匀速、匀减速。它的特点是实现简单、计算量小,是工业运动控制中最常用的速度规划方式。
1.2 为什么需要速度规划?
这个问题,我当年也问过自己。直接给电机一个目标位置,让它全速冲过去不行吗?
不行。原因有三:
- 冲击太大:如果速度瞬间从0跳到最大值,加速度理论上无穷大。你想想看,电机轴、联轴器、负载,哪个受得了?我见过一个项目,就是因为没做速度规划,联轴器直接扭断了。
- 定位不准:高速运动到目标位置时,如果没有减速过程,惯性会让它冲过头。说白了,就是停不下来。
- 设备寿命短:频繁的冲击会加速机械磨损。我曾经调试过一台机床,没做速度规划,用了三个月导轨就出现明显磨损痕迹。
所以,速度规划的本质是什么?是在运动时间和运动平稳性之间找一个平衡点。
我的经验:在大多数工业场景中,梯形速度曲线已经够用了。除非你对运动平滑度有极高要求(比如精密加工、医疗设备),否则没必要一上来就搞S形曲线。先跑通梯形,再谈优化。
1.3 运动控制中的基本概念
在讲梯形速度曲线之前,有几个概念必须搞清楚。这些是运动控制的基石,我每次带新人都会反复强调。
1.3.1 位置(Position)
位置,就是物体在空间中的坐标。在旋转运动中,位置就是角度。
举个例子:一个伺服电机,当前位置是0度,目标位置是360度。那它需要转一圈。
位置的单位:
- 直线运动:毫米(mm)、微米(μm)
- 旋转运动:度(°)、弧度(rad)
1.3.2 速度(Velocity)
速度,就是位置随时间的变化率。说白了,就是单位时间内走了多远。
公式很简单:
v = Δp / Δt
其中 Δp 是位置变化量,Δt 是时间变化量。
速度的单位:
- 直线运动:mm/s、m/s
- 旋转运动:rpm(转/分钟)、rad/s
注意:在梯形速度曲线中,我们通常限制最大速度 v_max。这个值不能超过电机和机械系统的额定能力。我曾经遇到过有人把速度设得过高,结果电机直接失步,位置全乱了。
1.3.3 加速度(Acceleration)
加速度,就是速度随时间的变化率。它决定了电机从静止加速到目标速度需要多长时间。
公式:
a = Δv / Δt
加速度的单位:
- 直线运动:mm/s²、m/s²
- 旋转运动:rad/s²
这里有个关键点:加速度越大,启停越快,但冲击也越大。
我个人的习惯是:在满足节拍要求的前提下,尽量把加速度设小一点。这样对机械系统更友好,设备寿命更长。
1.3.4 加加速度(Jerk)
加加速度,也叫急动度,是加速度随时间的变化率。
公式:
j = Δa / Δt
加加速度的单位:mm/s³ 或 rad/s³
你可能会问:为什么还要关心加加速度?
原因很简单:梯形速度曲线在加速段和匀速段的交界处,加速度会突变。从 a = a_max 瞬间变成 a = 0,这个突变会产生冲击力。
在普通设备上,这个冲击可能感觉不到。但在精密设备上,比如晶圆切割机、高精度贴片机,这个冲击就会影响产品质量。
避坑指南:我曾经调试一台高速点胶机,点胶位置总是有偏差。查了很久才发现,是梯形速度曲线在加减速切换点的冲击导致机械振动。后来改用S形曲线(限制了加加速度),问题就解决了。
1.4 四个概念的关系
这四个概念的关系,可以用一张图来总结:
你看,从位置到加加速度,是一层层的微分关系。反过来,从加加速度到位置,是一层层的积分关系。
在梯形速度曲线中,我们通常只控制速度和加速度。加加速度是无限大的(在切换点),这也是梯形曲线的固有缺陷。
1.5 梯形速度曲线的数学表达
说了这么多,咱们来看看梯形速度曲线的数学公式。别怕,很简单。
假设总位移为 S,最大速度为 v_max,加速度为 a,减速度也为 a(对称情况):
加速段时间:t1 = v_max / a
加速段位移:s1 = 0.5 * a * t1² = v_max² / (2a)
减速段与加速段对称:
减速段时间:t3 = v_max / a
减速段位移:s3 = v_max² / (2a)
匀速段时间:t2 = (S - s1 - s3) / v_max
匀速段位移:s2 = S - s1 - s3
总时间:T = t1 + t2 + t3
这个公式,我建议你记下来。在实际项目中,经常需要根据节拍时间反推加速度或最大速度。
实用技巧:如果计算出来的 t2 是负数,说明位移太短,还没加速到 v_max 就要开始减速了。这时候实际速度曲线是三角形,不是梯形。这种情况在短距离运动中很常见,要注意处理。
1.6 梯形速度曲线的优缺点
| 对比项 | 优点 | 缺点 |
|---|---|---|
| 实现难度 | 算法简单,计算量小,容易在低端控制器上实现 | 加减速切换点存在加速度突变 |
| 运动效率 | 在长距离运动中效率高,能充分利用电机能力 | 短距离运动效率低(可能变成三角形曲线) |
| 平稳性 | 匀速段非常平稳,适合对速度稳定性要求高的场景 | 启停和加减速切换时有冲击,加加速度无限大 |
| 适用场景 | 大多数工业设备、自动化产线、AGV小车等 | 精密加工、医疗设备、晶圆搬运等对冲击敏感的场景 |
嗯,总结一下:梯形速度曲线是运动控制的入门基础,也是实际应用最广泛的方案。它简单、可靠、高效,但不够平滑。
我个人建议:先掌握梯形,再学习S形。就像学走路,先学会走,再学跑。不要一上来就搞复杂的曲线,容易把自己绕晕。
好了,这一章就到这里。梯形速度曲线的核心概念和基本公式,你都记住了吗?下一章我们聊聊梯形速度曲线的代码实现,我会给出完整的C语言示例。