3. 速度前馈设计:基于模型的速度前馈,加速度前馈,前馈增益整定

前馈控制,说白了就是「提前给一脚油」。

我刚开始做运动控制那会儿,总觉得反馈控制就够了。PID调得死死的,啥都能搞定。直到有一次做高速贴片机项目,速度一上去,位置就超调,怎么调PID都没用。后来老工程师跟我说:「你试试前馈。」嗯,这一试,就打开了新世界的大门。

3.1 为什么需要速度前馈?

先想一个问题:你的电机要跑一个S型速度曲线。反馈控制是怎么做的?

它看到实际位置跟目标位置有偏差,然后拼命去追。这就像你开车,眼睛盯着前车,人家刹车你才刹车,永远慢半拍。反馈控制天生就有滞后性。

前馈不一样。它直接告诉驱动器:「接下来我要加速了,你先准备好力矩。」说白了,就是提前补偿。

核心思想:前馈不依赖误差,它依赖模型。模型越准,前馈效果越好。

3.2 基于模型的速度前馈

速度前馈的公式其实很简单:

Vff = Kvff * Vcmd

其中:

  • Vff:速度前馈输出(通常是电压或力矩)
  • Kvff:速度前馈增益
  • Vcmd:指令速度

但这里有个坑。Kvff 不是随便给的。它取决于你的系统模型。

我习惯的做法是:先做一次开环测试。给一个固定速度指令,看实际速度跟指令速度的比例关系。这个比例,就是 Kvff 的初始值。

举个例子:

// 伪代码示例:速度前馈计算
float Kvff = 0.85;  // 初始值来自开环测试
float Vcmd = 500;    // 目标速度 500 rpm
float Vff = Kvff * Vcmd;  // 前馈值 425

// 最终输出 = 前馈 + 反馈
float output = Vff + PID_Output;

你可能会问:「为什么不是1.0?」因为系统有摩擦、有阻尼。指令速度500,实际可能只有450。所以 Kvff 通常小于1。

我的经验:Kvff 的初始值可以设为 0.8~0.9,然后逐步增加。如果系统出现振荡,说明前馈过强了,往回退一点。

3.3 加速度前馈:解决「起步肉」的问题

速度前馈解决了匀速段的跟踪问题。但加速段呢?

你想想看,电机从静止加速到高速,需要克服惯性。这个惯性力矩,速度前馈是补偿不了的。因为它只跟速度有关,跟加速度无关。

这时候就需要加速度前馈。

Aff = Kaff * Acmd

其中:

  • Aff:加速度前馈输出
  • Kaff:加速度前馈增益
  • Acmd:指令加速度

加速度前馈的物理意义很直观:它直接提供克服惯性所需的力矩。

我记得有一次做龙门铣床的同步控制。两个轴要完全同步,但加速段总是差几个脉冲。调PID调了一整天,效果都不理想。后来加了加速度前馈,问题一下子就解决了。说白了,就是让两个轴在加速时「同时发力」。

关键点:加速度前馈的增益 Kaff 通常等于系统的总惯量(折算到电机轴)。如果你知道负载惯量,可以直接算出来。

3.4 前馈增益整定:实战方法

理论说完了,咱们聊聊怎么调。

我总结了一套「三步整定法」,分享给你:

  1. 先调速度前馈
    • 设置 Kaff = 0
    • 让系统跑一个梯形速度曲线
    • 观察匀速段的跟踪误差
    • 逐步增加 Kvff,直到匀速段误差最小
  2. 再加加速度前馈
    • 保持 Kvff 不变
    • 观察加速段和减速段的误差
    • 逐步增加 Kaff,直到加减速段误差最小
  3. 微调与折中
    • 有时候 Kvff 和 Kaff 会互相影响
    • 我习惯先粗调,再细调,来回两三次就差不多了

注意:前馈增益不是越大越好。过大的前馈会导致系统对模型误差敏感,甚至引发振荡。我曾经在一个项目中把 Kvff 调到 0.98,结果系统在高速时剧烈抖动。后来降到 0.92,稳如老狗。

3.5 知识体系结构图

下面这张图,帮你理清速度前馈设计的核心逻辑:

速度前馈设计知识体系 速度前馈 Vff = Kvff * Vcmd 补偿匀速段跟踪误差 Kvff 通常 0.8~0.95 来自开环测试 加速度前馈 Aff = Kaff * Acmd 补偿加减速段惯性力 Kaff 等于系统总惯量 解决「起步肉」问题 增益整定 三步整定法 ① 先调速度前馈 ② 再加加速度前馈 ③ 微调与折中 前馈 = 基于模型的前置补偿 模型越准,前馈效果越好 ⚠ 前馈不是越大越好 过大会引发振荡 ⚠ 前馈不能完全替代反馈 两者需要配合使用 ⚠ 模型变化时需重新整定 负载变化要留意

3.6 实战中的避坑指南

做前馈整定这么多年,我踩过的坑不少。分享几个典型的:

  • 「前馈一加就振荡」—— 我曾经在一个高速分拣机上,Kvff 从0.85加到0.9,系统就开始抖。后来发现是机械共振。解决办法:降低前馈增益,或者加一个低通滤波器。
  • 「加减速段误差反而变大」—— 有一次我调加速度前馈,Kaff 加得太大,结果加速段过冲了。说白了,前馈补偿过头了。这时候要往回退,或者检查一下惯量参数对不对。
  • 「低速段跟高速段表现不一样」—— 摩擦是非线性的。低速时静摩擦大,高速时动摩擦小。我习惯在低速段单独加一个摩擦前馈,跟速度前馈配合使用。

一个小技巧:如果你不确定前馈参数是否合适,可以先把反馈增益降低一半,然后观察前馈单独作用的效果。这样能更清楚地看到前馈的贡献。

3.7 小结

速度前馈设计,说白了就是三件事:

  • 用速度前馈解决匀速段的跟踪问题
  • 用加速度前馈解决加减速段的惯性问题
  • 用三步整定法把两个增益调到最佳

记住,前馈不是万能的。它依赖模型,模型不准,前馈反而添乱。但如果你能把模型摸清楚,前馈就是提升系统性能的利器。

专注资料整理