2. 运动控制基础:位置、速度、加速度、加加速度(Jerk)的概念与关系
各位同学,欢迎来到第二章。
上一章我们聊了电子凸轮能干什么。这一章,咱们得把基本功打扎实。你想想看,玩电子凸轮,本质上就是在玩运动曲线。而运动曲线,说白了就是位置、速度、加速度、加加速度这四个物理量随时间变化的关系。
这四个量,是运动控制的基石。我见过不少工程师,调起PID来头头是道,但一问到Jerk是什么,就含糊了。嗯,这其实很要命。因为电子凸轮曲线的好坏,很大程度上就取决于你怎么控制Jerk。
2.1 从位置到加加速度:一次说清
我们先从最直观的「位置」说起。
- 位置 (Position):就是物体在空间中的坐标。在电子凸轮里,通常指从轴(跟随轴)的位移量,单位是mm或度。
- 速度 (Velocity):位置的变化率。说白了,就是物体移动的快慢。单位是mm/s或rpm。
- 加速度 (Acceleration):速度的变化率。它决定了物体从静止到高速需要多久。单位是mm/s²。
- 加加速度 (Jerk):加速度的变化率。这是很多人忽略的点。它决定了加速过程是否「柔和」。单位是mm/s³。
它们之间的关系,就是微积分里的求导与积分。位置对时间求导是速度,速度对时间求导是加速度,加速度对时间求导就是Jerk。反过来,Jerk积分得加速度,加速度积分得速度,速度积分得位置。
核心公式链:
位置 s(t)
速度 v(t) = ds/dt
加速度 a(t) = dv/dt = d²s/dt²
加加速度 j(t) = da/dt = d³s/dt³
我在项目里见过一个案例:一台高速贴片机,取放头运动时,位置曲线看着很平滑,速度曲线也还行。但一分析加速度曲线,发现末端有剧烈的抖动。再一看Jerk曲线,好家伙,峰值高得吓人。这就是典型的「加速度突变」导致的机械振动。后来我们把Jerk限制住,机器立马安静了。
2.2 为什么Jerk如此重要?
很多做PLC的老工程师,习惯只设速度和加速度。这在低速、低精度的场合,问题不大。但在高速高精的电子凸轮应用中,这就是灾难。
为什么会这样?
因为加速度的突变,意味着力的突变。力突变,就意味着冲击。冲击会带来什么?
- 机械振动:机器抖起来,精度就没了。
- 噪音:车间里那种刺耳的尖叫声,多半是Jerk太大。
- 零件寿命缩短:凸轮、导轨、丝杠,天天被冲击,迟早要坏。
避坑指南:
我曾经调试一台高速包装机,凸轮曲线用的是最基础的梯形速度曲线。空跑没问题,一带负载就嗡嗡响。查了三天,最后发现是加速度在拐点处突变,导致Jerk无穷大。后来换成S型曲线,问题迎刃而解。所以,永远不要忽视Jerk的存在。
2.3 四者关系的直观理解:SVG框架图
光说公式可能有点抽象。我画了一张图,帮你把四者的关系串起来。你看这张图,从左到右,就是一次比一次更「高阶」的控制量。
2.4 实际应用中的曲线形态
在电子凸轮里,我们不会直接用梯形速度曲线(因为Jerk无穷大)。常用的曲线有这些:
| 曲线类型 | Jerk特性 | 适用场景 |
|---|---|---|
| 梯形速度曲线 | 加速度突变,Jerk无穷大 | 低速、对冲击不敏感的场合 |
| S型速度曲线 | Jerk为常数,加速度线性变化 | 大多数通用场合,平衡效率与冲击 |
| 正弦加速度曲线 | Jerk连续且平滑 | 高速、高精度、低振动要求 |
| 修正梯形曲线 | Jerk分段可控 | 需要兼顾加减速时间和振动抑制 |
个人经验:
我建议你在做电子凸轮选型时,先问自己一个问题:我的设备对振动有多敏感?如果是印刷机、贴片机这种,直接上正弦加速度曲线或修正梯形。如果是简单的搬运,S型曲线就够用了。别一上来就搞最复杂的,调试起来也麻烦。
2.5 如何用代码描述一条运动曲线?
理论说完了,咱们来点实际的。在运动控制器里,我们通常用位置表或多项式来描述凸轮曲线。下面是一个简单的S型速度曲线位置生成示例,用伪代码表示:
// 输入:总位移 S,总时间 T,最大加速度 Amax,最大Jerk Jmax
// 输出:位置数组 pos[]
function generateSProfile(S, T, Amax, Jmax) {
// 1. 计算各阶段时间
// 加速阶段:Jerk为正,加速度从0增加到Amax
// 匀速阶段:加速度为0
// 减速阶段:Jerk为负,加速度从Amax减到0
// 这里省略了复杂的数学推导,只展示核心逻辑
// 2. 分段计算位置
for (t = 0; t < T; t += dt) {
if (t < t1) {
// 加加速阶段:Jerk = +Jmax
a = Jmax * t;
v = 0.5 * Jmax * t * t;
s = (1/6) * Jmax * t * t * t;
} else if (t < t2) {
// 匀加速阶段:Jerk = 0, a = Amax
// ...
} else if (t < t3) {
// 减加速阶段:Jerk = -Jmax
// ...
}
// ... 后续还有匀速、加减速、匀减速、减减速阶段
pos[i] = s;
}
return pos;
}
你看,代码里最核心的就是对Jerk的控制。每一段都要算清楚加速度怎么变,速度怎么变,位置怎么变。这就是电子凸轮曲线规划的底层逻辑。
2.6 本章小结
这一章我们讲了四个基本量。位置是目标,速度是效率,加速度是力,Jerk是舒适度。你记住这个比喻就行。
我个人习惯,在调试任何电子凸轮项目时,第一件事就是打开示波器,看加速度和Jerk曲线。如果Jerk曲线有尖峰,那一定有问题。别问我怎么知道的,都是血泪教训。