4、前馈补偿策略:速度前馈原理与实现、加速度前馈原理与实现、前馈系数标定方法、前馈与反馈的协同工作
各位,咱们继续聊。前面几章我们把反馈控制聊透了,PID 调得再好,它也是个“事后诸葛亮”——等误差出来了才去补救。那有没有办法让系统提前预判,在误差还没成型之前就把它扼杀在摇篮里?
有,就是前馈补偿。
说白了,前馈就是“开环预测”,反馈就是“闭环修正”。两者一结合,效果往往出奇的好。我最早接触前馈是在一台高速贴片机上,那会儿纯靠 PID 追不上位置,后来加了速度前馈,跟踪误差直接砍掉 70%。嗯,今天就把这块硬骨头啃下来。
核心观点:前馈不改变系统稳定性,只负责“提前出力”。反馈负责“擦屁股”。两者分工明确,协同工作。
4.1 速度前馈原理与实现
先讲速度前馈。它的逻辑很简单:既然我知道目标轨迹的速度曲线,为什么不直接把对应的控制量提前给出去?
你想想看,伺服系统要跟踪一个匀速运动的目标,反馈控制器必须等到位置误差出现才能产生速度指令。这个等待过程就是滞后。速度前馈直接把目标速度映射成电流指令,提前给电机“加油”。
数学表达:
U_ff_v = K_vff * V_target
其中:
U_ff_v:速度前馈输出(通常是电流指令)K_vff:速度前馈系数V_target:目标速度(来自轨迹规划)
实现步骤:
- 从运动控制器获取每个周期的目标位置,差分得到目标速度。
- 乘以标定好的速度前馈系数
K_vff。 - 将结果叠加到速度环的积分输出上。
我的经验:速度前馈对刚性连接的系统效果最明显。如果系统有较大间隙或柔性,前馈系数不能给太大,否则会激起机械谐振。我曾经在一个皮带传动平台上吃过这个亏,前馈一加,整个系统开始唱歌……后来把系数降到 0.6 才稳住。
4.2 加速度前馈原理与实现
速度前馈解决了匀速段的跟踪问题,但加减速段呢?
这里就要请出加速度前馈了。加减速时,系统需要克服惯性力。反馈控制器要等到位置误差累积到一定程度才能产生足够的加速力矩——这又是个滞后。加速度前馈直接根据目标加速度给出对应的力矩补偿。
数学表达:
U_ff_a = K_aff * A_target
其中:
U_ff_a:加速度前馈输出K_aff:加速度前馈系数A_target:目标加速度(目标速度的差分)
实现要点:
- 加速度信号噪声大,必须做低通滤波。我习惯用截止频率为系统带宽 3~5 倍的一阶低通。
- 加速度前馈通常叠加在电流环的给定上,而不是速度环。
- 如果系统惯量变化大(比如机器人抓取不同重量的工件),加速度前馈系数需要在线调整。
注意:加速度前馈对噪声极其敏感。我曾经见过一个案例,工程师把加速度前馈系数调得过高,结果系统在匀速段出现高频抖动——因为速度的微小波动被差分放大成了加速度噪声。解决办法:要么降低系数,要么加强滤波。
4.3 前馈系数标定方法
系数怎么定?拍脑袋肯定不行。我一般用两种方法:
方法一:理论计算法
适用于系统模型已知的情况。
K_vff = 1 / (Kt * J) (简化模型)
K_aff = J / Kt
其中 Kt 是电机力矩常数,J 是折算到电机轴的转动惯量。算出来的是理论值,实际还要微调。
方法二:实验标定法(我推荐)
- 让系统跑一段梯形速度曲线,记录跟踪误差。
- 先调速度前馈:在匀速段观察误差,调整
K_vff使匀速段误差趋近于零。 - 再调加速度前馈:在加减速段观察误差,调整
K_aff使加减速段误差峰值最小。 - 反复迭代 2~3 次。
| 标定阶段 | 观察对象 | 调整目标 | 典型系数范围 |
|---|---|---|---|
| 速度前馈 | 匀速段误差 | 误差均值 → 0 | 0.8 ~ 1.2 |
| 加速度前馈 | 加减速段误差峰值 | 峰值最小化 | 0.5 ~ 1.0 |
| 联合微调 | 全程 RMS 误差 | RMS 最小 | 微调 ±0.05 |
避坑指南:我曾经在标定时犯过一个低级错误——用正弦波做测试轨迹。结果前馈系数怎么调都调不好,因为正弦波的加速度和速度是耦合的。后来换成梯形波,问题迎刃而解。记住:标定要用解耦的测试信号。
4.4 前馈与反馈的协同工作
前馈和反馈不是二选一,而是搭档。我习惯用一张图来说明它们的关系:
从图上可以看得很清楚:前馈走的是“开环捷径”,直接从目标轨迹映射到控制量;反馈走的是“闭环回路”,用实际位置和目标的偏差来修正。两者在求和点汇合,共同驱动伺服系统。
协同工作的几个原则:
- 前馈为主,反馈为辅:理想情况下,前馈承担大部分控制任务,反馈只做微调。
- 前馈不能完全替代反馈:模型误差、摩擦、扰动这些,前馈处理不了,必须靠反馈兜底。
- 先调反馈,再加前馈:我个人的习惯是先把 PID 调到稳定但偏保守,然后逐步加入前馈。这样即使前馈系数不准,系统也不会发散。
警告:前馈加得太多,系统会变得“过于自信”。一旦模型发生变化(比如负载变了、温度变了),前馈输出和实际需求不匹配,反馈又来不及补偿,误差就会突然增大。我曾经在一条生产线上遇到过这种情况,换了个批次的工件,跟踪误差直接翻倍。后来加了自适应前馈系数才解决。