4. 速度前馈(Feed Forward):理论推导与实战效果,为什么前馈能减少90%的误差?

做伺服调优这么多年,我见过太多人在比例增益和积分时间上死磕。调了半天,跟随误差还是几十个脉冲,甚至上百。其实有个东西,用好了能直接让误差掉一个数量级——就是速度前馈。

说白了,前馈不是靠“纠错”来工作的。它是在误差还没产生之前,就提前把控制量给出去。你想想看,这跟反馈完全是两套逻辑。

4.1 前馈的直觉:别等出错了再补救

先讲个我自己的经历。早些年调一台贴片机,X轴速度跑到300mm/s,位置误差一直在0.15mm左右晃。我试过加大位置环增益,结果电机开始抖,再往上加就啸叫了。后来一个老工程师路过,看了一眼说:“你试试把速度前馈打开,设到100%。”我照做了,误差直接掉到0.02mm。当时我就愣住了。

为什么会这样?因为反馈控制有个天生的毛病——它必须等到误差出现了,才能产生控制量。速度越快,这个“等”的代价就越大。前馈不一样,它直接根据目标速度算出一个“预判值”,叠加到输出上。

核心观点: 前馈是“预测”,反馈是“纠偏”。两者结合,才能让系统既快又准。

4.2 理论推导:前馈到底在算什么?

我们一步步来。先看一个典型的伺服位置环结构:

  • 位置指令 Pcmd → 位置误差 e → 位置环PID → 速度指令 Vref → 速度环 → 转矩 → 电机

如果没有前馈,速度指令完全由位置误差产生:

V_ref = Kp * e + Ki * ∫e dt + Kd * de/dt

这里的问题很明显:e 必须存在,Vref 才有值。你速度越快,e 就越大。

加上速度前馈后,公式变成:

V_ref = Kp * e + Ki * ∫e dt + Kd * de/dt + Kff * d(P_cmd)/dt

注意最后一项:Kff × 位置指令的微分。这就是速度前馈。它直接从指令中提取出“目标速度”,提前送到速度环。

理想情况下,如果 Kff = 1(100%),而且系统模型完美,那么速度环需要的指令完全由前馈提供,位置误差 e 理论上可以为零。

我的经验: 实际系统中,Kff 通常设在 80%~100% 之间。设到 100% 时,如果机械有间隙或柔性,可能会引起微小震荡。我一般从 80% 开始试,逐步往上加,直到误差不再明显减小为止。

4.3 为什么能减少90%的误差?

这个数字不是随便说的。我拿一个实际案例给你看:

条件 跟随误差(峰值) 说明
无前馈(Kff=0) 120 脉冲 纯位置环PID,速度越快误差越大
速度前馈 50% 60 脉冲 误差直接减半
速度前馈 80% 24 脉冲 误差降到原来的20%
速度前馈 100% 12 脉冲 误差降到原来的10%

你看,从120降到12,正好是90%。这不是巧合。因为位置环产生的速度指令,本质上是在“追赶”目标速度。前馈直接把目标速度送过去,位置环只需要补偿摩擦、负载扰动这些残余误差就行。

注意: 前馈不能消除所有误差。它只补偿“与速度成正比”的那部分。像静摩擦力、负载突变、机械谐振这些,还得靠反馈和别的补偿手段。

4.4 前馈的适用场景与限制

不是所有场合都适合开满前馈。我总结了几条:

  • 高速轨迹跟踪: 效果最明显。速度越高,前馈的价值越大。
  • 低速或点对点定位: 前馈作用不大,因为速度本身很低,误差主要来自摩擦和死区。
  • 机械刚性差: 前馈加太满可能引起震荡。这时候需要配合加速度前馈或陷波滤波器。
  • 指令有突变: 如果位置指令本身有阶跃,前馈会产生很大的速度尖峰。建议配合S型加减速使用。

4.5 实战调优步骤

我个人习惯按这个流程来:

  1. 先把位置环和速度环调稳,确保没有震荡。
  2. 设定一个典型运动轨迹(比如梯形速度曲线)。
  3. 记录无前馈时的跟随误差曲线。
  4. 设置 Kff = 50%,观察误差变化。
  5. 逐步增加 Kff,每次10%,直到误差不再明显减小。
  6. 如果出现震荡,回退5%~10%。
  7. 最后检查稳态误差和加速段误差是否在可接受范围。
一个小技巧: 我经常用示波器同时看“速度指令”和“实际速度”两条曲线。前馈调好后,这两条线应该几乎重合。如果中间有偏差,说明前馈还不够,或者机械有非线性。

4.6 前馈效果对比图

下面这张图展示了前馈开启前后的核心差异。我习惯用这种图给团队讲原理,一目了然。

速度前馈效果对比:反馈 vs 前馈+反馈 纯反馈控制 位置指令 → 位置误差 → PID → 速度环 误差必须存在,控制量才产生 速度越快 → 误差越大 跟随误差:120 脉冲 前馈 + 反馈控制 位置指令 → 微分 → 速度前馈 → 速度环 前馈提前提供速度指令 反馈只补偿残余误差 跟随误差:12 脉冲 误差↓90% 关键结论 前馈不依赖误差产生控制量,而是直接预测目标速度。反馈只需补偿扰动,误差自然大幅下降。 速度曲线对比 目标速度 纯反馈(滞后明显) 前馈+反馈(几乎重合)

4.7 避坑指南

最后说几个我踩过的坑:

  • 前馈不是越大越好。 我曾经在一个柔性联轴器系统上把Kff设到100%,结果加速段出现震荡。后来降到85%才稳定。
  • 前馈不能替代反馈。 它只补偿速度相关的误差。负载突变、摩擦力变化这些,还得靠积分项和观测器。
  • 注意指令的平滑度。 如果位置指令有高频噪声,微分后会产生很大的速度前馈波动。建议先对指令做滤波。
  • 不同速度段可能需要不同的前馈系数。 有些驱动器支持速度分段前馈,低速和高速分别设值。如果系统非线性强,可以试试这个功能。

嗯,速度前馈这部分就讲到这里。你回去可以拿一台伺服试试,先测一下无前馈的误差,然后逐步加前馈,看看误差是怎么掉的。我保证你会跟我当年一样,觉得这东西真香。