3. 速度环(中环)详解:速度环的作用、速度环与前馈控制、速度环的PI参数整定

速度环,我们通常叫它中环。位置环在外面,电流环在里面,它卡在中间,承上启下。

说白了,速度环的任务就一个:让电机按照你给定的速度转。你给 1000 rpm,它就老老实实跑 1000 rpm,负载变了、电压波动了,它都得想办法稳住。

我刚开始做伺服驱动时,总觉得速度环不就是个 PI 嘛,调调就能用。后来发现,速度环要是调不好,位置环根本没法干活——要么抖得像筛子,要么响应慢得像蜗牛。

3.1 速度环到底在干什么?

速度环的输入是速度指令(通常来自位置环的输出),反馈是编码器测得的实际速度。它输出的是电流指令,送给内层的电流环。

核心关系:

速度环的输出 = 电流环的输入

速度环的带宽 ≈ 电流环带宽的 1/5 ~ 1/10

为什么速度环带宽要比电流环低?因为速度环的输出要经过机械系统才能反映到速度上。机械系统有惯性、有摩擦、有弹性形变,这些都会引入延迟。你想想看,电流环响应是毫秒级的,速度环响应通常是几十毫秒。强行拉高速度环带宽,结果就是系统振荡。

我在一个印刷机项目上吃过这个亏。当时为了追求快速响应,把速度环比例增益调得很大。结果电机一启动就嗡嗡响,编码器反馈回来的速度波形像锯齿一样。后来降了 40% 的增益,加了一点点积分,系统才稳定下来。

3.2 速度环与前馈控制

纯反馈控制有个天生的毛病:它只能等误差出现了再去纠正。你想想,负载突然加上去,速度先掉下来,PI 控制器检测到误差才开始往上调。这个过程再快也有延迟。

前馈控制就是来解决这个问题的。它提前预测系统需要多少电流,直接加到输出上。反馈控制负责修正预测误差,前馈控制负责扛大头。

控制方式 原理 优点 缺点
纯反馈(PI) 根据误差调节 鲁棒性强,能应对不确定性 响应有延迟,误差不可避免
反馈 + 前馈 前馈扛主要负载,反馈修正偏差 响应快,稳态误差小 依赖模型精度,模型不准反而坏事

速度环的前馈通常有两种:

  • 加速度前馈:根据速度指令的变化率(加速度),提前给出对应的电流。加速时需要更多力矩,这个前馈能提前补上。
  • 摩擦力前馈:根据速度方向,提前补偿静摩擦和库仑摩擦。低速时特别有用。

我的经验:

前馈系数不要给太满。我一般先给 70%~80%,剩下的让反馈去补。给太满的话,模型一有偏差,系统反而会过冲。曾经有个项目,我把加速度前馈设到 95%,结果速度指令一变化,电机先冲过头再拉回来,位置精度反而下降了。

前馈的数学表达很简单:

// 速度环前馈计算示例
// acc_ff_gain: 加速度前馈系数
// vel_cmd: 速度指令
// vel_cmd_dot: 速度指令的微分(加速度)

float ff_current = acc_ff_gain * vel_cmd_dot + friction_ff_gain * sign(vel_cmd);
float pi_output = kp * error + ki * integral;
float total_output = ff_current + pi_output;

注意,前馈量直接加到 PI 输出上,不经过积分器。这样即使积分饱和,前馈通道依然能正常工作。

3.3 速度环的 PI 参数整定

速度环整定,说难不难,说简单也不简单。我见过太多人一上来就调 PI,调了半天还是抖。其实整定之前有几件事必须先做:

  1. 确认电流环已经调好。电流环带宽不够,速度环怎么调都没用。
  2. 确认编码器信号干净。速度反馈有噪声,PI 输出就会跟着抖。
  3. 确认机械连接刚性足够。联轴器松动、皮带打滑,速度环永远调不好。

注意:

速度环整定必须在实际负载下进行。空载调好的参数,带上负载后很可能振荡。我见过有人空载调得漂漂亮亮,一装到机器上就啸叫,最后发现是负载惯量比电机惯量大太多,速度环带宽必须降下来。

3.3.1 比例增益 Kp 的整定

Kp 决定速度环的响应速度。Kp 越大,系统对速度误差的反应越快,但过大就会振荡。

我的整定方法是:

  • 先把 Ki 设成 0(纯比例控制)
  • 从小到大增加 Kp,直到速度响应出现临界振荡(持续等幅振荡)
  • 记录此时的 Kp 值,记为 Kp_crit
  • 最终 Kp 取 Kp_crit 的 50%~70%

为什么要留余量?因为实际系统有非线性、有延迟,临界振荡点附近工作太危险。负载一变,系统可能就发散。

3.3.2 积分增益 Ki 的整定

Ki 的作用是消除稳态误差。没有 Ki,速度环在负载作用下会有静差。

Ki 的整定原则:

  • Ki 不能太大,否则会引起低频振荡(速度环的积分振荡频率通常 1~10 Hz)
  • Ki 太小,消除稳态误差的速度太慢
  • 一般 Ki = Kp / (5~20) 作为起点

经验公式:

速度环带宽 f_v (Hz) ≈ Kp / (2π * J)

其中 J 是系统总惯量(电机惯量 + 负载惯量折算值)

Ki 的积分时间常数 Ti ≈ 1 / (2π * f_v / 5)

这个公式只能作为参考。实际系统有摩擦、有弹性、有采样延迟,最终参数还是要靠现场调试。

3.3.3 整定流程总结

步骤 操作 观察现象 调整方向
1 Ki=0,Kp从小到大 速度响应变快,直到振荡 记录临界Kp
2 Kp取临界值的60% 响应快速,无振荡 若响应慢,适当增加Kp
3 加入Ki,从小到大 稳态误差逐渐消除 若出现低频振荡,减小Ki
4 加负载测试 负载突变时速度跌落和恢复 跌落大则加Kp,恢复慢则加Ki
5 加入前馈 速度指令跟踪误差 逐步增加前馈系数

我曾经在一个包装机械项目上,速度环怎么调都调不好。后来发现是编码器分辨率太低,低速时速度反馈的量化噪声太大。换了高分辨率编码器,同样的 PI 参数,效果天差地别。所以,硬件基础决定控制上限,这个道理在速度环上体现得特别明显。

3.4 速度环的常见坑

  • 积分饱和:速度指令突变时,积分器积累了大量误差,导致速度过冲。解决办法是加积分限幅或条件积分(误差大时停止积分)。
  • 速度反馈滤波过度:为了平滑速度信号,滤波时间常数设得太大,导致速度环带宽被滤波器吃掉。我一般滤波截止频率设成速度环带宽的 5~10 倍。
  • 忽略摩擦补偿:低速时摩擦占主导,纯 PI 控制很难兼顾快速性和稳定性。加一个简单的静摩擦补偿,效果立竿见影。

一个小技巧:

调试速度环时,用示波器同时看速度指令、实际速度和 PI 输出三个波形。如果 PI 输出有高频抖动,说明速度反馈有噪声;如果 PI 输出低频摆动,说明 Ki 太大或机械共振。波形会说话,关键是你得会听。

速度环控制结构图 速度指令 - PI控制器 + 前馈补偿 电流环 电机+负载 编码器 说明: 1. 速度指令与编码器反馈速度比较,误差送入PI控制器 2. 前馈补偿根据速度指令变化率提前给出电流分量 3. PI输出与前馈输出相加,作为电流环的指令 4. 电流环控制电机,编码器测量实际速度形成闭环