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,调了半天还是抖。其实整定之前有几件事必须先做:
- 确认电流环已经调好。电流环带宽不够,速度环怎么调都没用。
- 确认编码器信号干净。速度反馈有噪声,PI 输出就会跟着抖。
- 确认机械连接刚性足够。联轴器松动、皮带打滑,速度环永远调不好。
注意:
速度环整定必须在实际负载下进行。空载调好的参数,带上负载后很可能振荡。我见过有人空载调得漂漂亮亮,一装到机器上就啸叫,最后发现是负载惯量比电机惯量大太多,速度环带宽必须降下来。
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 太大或机械共振。波形会说话,关键是你得会听。