第4章 前馈补偿原理:速度前馈与加速度前馈的数学模型与实现
前馈补偿,说白了就是“提前给指令”。
我刚开始做伺服调试那会儿,总觉得PID能搞定一切。直到有一次调一个高速贴片机,位置跟随误差怎么都压不下去。后来老师傅跟我说:“你试试前馈。” 嗯,从那以后,我的调试工具箱里就多了这把利器。
4.1 为什么需要前馈?
先想一个问题:一个电机从静止加速到3000rpm,靠什么?
靠PID的误差累积。位置环看到偏差了,速度环才动;速度环看到速度差了,电流环才给力矩。这一圈下来,滞后是必然的。
前馈的思路很简单:既然知道要加速,为什么不提前给一个力矩?
核心观点:前馈不依赖误差,它依赖“期望轨迹”。误差还没产生,补偿就已经到位了。
我个人的习惯是:先调好前馈,再用PID去擦屁股。这样PID的负担小,系统也不容易振荡。
4.2 速度前馈的数学模型
速度前馈,补偿的是速度环的滞后。
数学上很简单:
Vff(t) = Kvff × dθ_ref(t) / dt
其中:
- Vff — 速度前馈输出(通常叠加到速度环给定)
- Kvff — 速度前馈增益(0~100%)
- dθ_ref/dt — 期望位置的微分,即期望速度
你想想看,如果Kvff=100%,意味着速度环的给定完全由前馈提供。那PID只需要处理扰动和模型误差。
实战经验:我在做印刷机套准控制时,Kvff一般设在85%~95%。设到100%理论上完美,但实际系统有摩擦、惯量变化,留一点余量给PID更稳妥。
4.3 加速度前馈的数学模型
加速度前馈,补偿的是电流环(力矩环)的滞后。
公式长这样:
Aff(t) = Kaff × d²θ_ref(t) / dt²
其中:
- Aff — 加速度前馈输出(叠加到电流环给定)
- Kaff — 加速度前馈增益
- d²θ_ref/dt² — 期望加速度
为什么要加速度前馈?因为速度前馈只解决了“匀速段”的滞后。在加速和减速阶段,惯性力矩是主要矛盾。没有加速度前馈,电机启动时会有明显的“拖尾”。
注意:加速度前馈对噪声非常敏感。期望轨迹的二次微分会放大高频噪声。我建议在计算加速度前,先对位置指令做一次低通滤波。
4.4 前馈在控制系统中的位置
下面这张图是我自己画的前馈结构,你看一眼就明白了:
从图上你能看到:前馈是“开环”的,它不依赖反馈误差。虚线路径直接绕过PID,把补偿量送到速度环和电流环。
4.5 离散域实现
实际控制器里,我们处理的是离散信号。微分要换成差分。
速度前馈的离散形式:
Vff[n] = Kvff × (θ_ref[n] - θ_ref[n-1]) / Ts
加速度前馈的离散形式:
Aff[n] = Kaff × (θ_ref[n] - 2×θ_ref[n-1] + θ_ref[n-2]) / Ts²
其中 Ts 是控制周期。
我曾经踩过的坑:加速度前馈的差分对噪声极其敏感。如果位置指令有量化噪声,二阶差分出来的值可能比实际加速度还大。我的做法是:先对位置指令做3点滑动平均,再算加速度。
4.6 前馈增益的整定方法
整定前馈增益,我有一套自己的流程:
- 先关掉前馈,只跑PID。记录跟随误差曲线。
- 逐步增加Kvff,观察匀速段的误差。当匀速段误差接近0时,Kvff就差不多了。
- 再增加Kaff,观察加减速段的误差峰值。峰值下降就是有效。
- 微调:两个增益互相影响,需要来回调几次。
下面这个表是我常用的参考值:
| 应用场景 | Kvff 推荐值 | Kaff 推荐值 | 说明 |
|---|---|---|---|
| 低速高精度(如加工中心) | 80%~90% | 50%~70% | 精度优先,前馈不宜过高 |
| 中速通用(如包装机) | 90%~95% | 70%~85% | 平衡精度与响应 |
| 高速高动态(如贴片机) | 95%~100% | 85%~95% | 响应优先,注意噪声 |
我的习惯:先设Kaff=0,调Kvff到匀速段误差消失。再加Kaff,每次加5%,观察加速段峰值。加到峰值不再下降反而开始振荡时,退回5%就是最佳值。
4.7 前馈与反馈的配合
前馈不是万能的。它依赖精确的模型。如果系统惯量变化大(比如机器人抓取不同重量的工件),前馈效果会打折扣。
这时候我的做法是:前馈做粗调,反馈做细调。前馈承担80%的补偿,反馈处理剩下的20%扰动和模型误差。
你想想看,如果前馈能搞定大部分,PID的增益就可以设得低一些。系统更稳定,也不容易振荡。
总结一句话:前馈是“预见性”补偿,反馈是“纠错性”补偿。两者配合,才能做到又快又准。