4、前馈控制进阶:速度前馈与加速度前馈、摩擦补偿、前馈增益整定

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

反馈控制是等误差出来了再纠偏,前馈控制则是提前预测误差,直接给一个补偿量。我刚开始做运动控制时,总觉得反馈调好了就万事大吉。直到有一次做高速贴片机项目,发现位置跟随误差怎么都压不下去,才意识到前馈的重要性。

这一章,咱们就把速度前馈、加速度前馈、摩擦补偿,还有前馈增益怎么整定,一次性讲透。

核心观点:前馈控制不改变系统稳定性,只改善跟随精度。反馈保证「稳」,前馈保证「准」。

前馈控制知识体系 前馈控制 速度前馈 加速度前馈 摩擦补偿 补偿速度滞后 增益 = 速度环比例增益的倒数 补偿惯性力 增益 = 负载惯量 / 电机转矩常数 库仑摩擦 + 粘滞摩擦 死区补偿 + 方向切换处理 整定目标:跟随误差最小化,不牺牲稳定性

4.1 速度前馈:解决「追不上」的问题

速度前馈解决什么问题?

你想想看,当指令速度变化时,反馈控制总是慢半拍。位置环输出速度指令,速度环再输出转矩指令,这一圈走下来,误差已经产生了。速度前馈就是直接把指令速度叠加到速度环的输入端,让电机提前动起来。

我的经验:速度前馈增益的初始值,我一般设为速度环比例增益的倒数。比如速度环 Kvp = 20,那速度前馈增益就设 0.05。然后微调,直到跟随误差最小。

整定步骤很简单:

  1. 先关闭加速度前馈和摩擦补偿,只调速度前馈。
  2. 让轴跑一个梯形速度曲线,观察跟随误差。
  3. 逐步增大速度前馈增益,直到误差曲线变得平坦。
  4. 如果出现超调或震荡,说明增益太大了,往回退一点。

我曾经在一个龙门双驱项目上,速度前馈调好后,跟随误差从 0.5mm 降到了 0.05mm。效果立竿见影。

4.2 加速度前馈:解决「推不动」的问题

速度前馈管的是匀速段,加速度前馈管的是加减速段。

加减速时,电机需要克服负载的惯性力。这个力有多大?F = ma。加速度前馈就是提前把这个力算出来,直接加到转矩指令上。

计算公式:加速度前馈量 = 加速度指令 × 负载惯量 / 电机转矩常数

实际应用中,我们通常用一个可调增益来缩放这个值。

整定加速度前馈时,我习惯用 S 形速度曲线来测试。因为梯形曲线的加加速度突变太大,容易掩盖前馈效果。

测试波形 适用场景 观察重点
梯形速度曲线 速度前馈整定 匀速段误差
S形速度曲线 加速度前馈整定 加减速段误差峰值
正弦波位置指令 综合前馈整定 相位滞后和幅值衰减

注意:加速度前馈增益过大,会在加减速结束时产生明显的冲击。我见过有人把增益调到 120%,结果机器在加减速切换点「咯噔」一下,导轨都磨出印子了。

4.3 摩擦补偿:解决「卡住」的问题

摩擦是运动控制里最烦人的非线性因素。它不像惯量那样是线性的,补偿起来很麻烦。

摩擦主要分两种:

  • 库仑摩擦:跟速度方向有关,大小基本恒定。表现为启动时需要额外推力。
  • 粘滞摩擦:跟速度大小成正比。速度越快,阻力越大。

摩擦补偿的常见做法是加一个死区补偿:

// 伪代码示例
if (abs(velocity) > deadband) {
    friction_compensation = sign(velocity) * friction_level;
} else {
    friction_compensation = 0;
}

这里有个坑——方向切换时的处理。如果补偿量切换太突然,会在零点附近产生震荡。我一般会加一个平滑过渡,比如用一阶低通滤波把补偿量过渡一下。

避坑指南:我曾经在磨床项目上,摩擦补偿参数没调好,结果在换向时产生了 0.01mm 的过冲。虽然很小,但对磨削精度来说就是废品。后来加了速度相关的渐变补偿,才把这个问题解决。

4.4 前馈增益整定:三步法

前馈增益整定,我总结了一个三步法,屡试不爽:

  1. 粗调速度前馈:让匀速段误差趋近于零。
  2. 细调加速度前馈:让加减速段误差峰值最小化。
  3. 补摩擦补偿:处理换向和低速段的残余误差。

每一步之间要反复迭代。因为速度前馈和加速度前馈会互相影响,摩擦补偿又会影响低速段的响应。

整定时,我习惯用示波器同时看三个信号:指令位置、实际位置、跟随误差。这样能一眼看出问题出在哪个阶段。

整定口诀:速度前馈管匀速,加速度前馈管加减速,摩擦补偿管换向。三步迭代,误差归零。

4.5 实战中的常见问题

说几个我实际遇到过的问题:

  • 前馈量饱和:前馈增益太大,导致输出指令超过驱动器限幅。这时候要检查限幅设置,或者降低前馈增益。
  • 前馈与反馈打架:前馈补偿过头,反馈又在往回拉,系统会震荡。解决办法是降低前馈增益,或者提高反馈环的带宽。
  • 摩擦补偿在高速段失效:高速时粘滞摩擦占主导,库仑摩擦补偿的作用变小。需要根据速度动态调整补偿系数。

嗯,前馈控制这块,理论不难,难的是跟实际系统的匹配。每个机械系统的惯量、摩擦特性都不一样,没有一套参数能通吃。多试、多看波形、多积累手感,才是正道。