第三章 整定黄金法则一:带宽法则——根据系统带宽需求确定PI参数的理论依据
做伺服驱动这些年,我见过太多工程师一上来就调PI参数,调了半天系统还是抖得像筛子。其实,调参之前你得先想清楚一个问题:你的系统到底需要多快的响应?
这个问题的答案,就是带宽。带宽法则,说白了就是:你想要多快的响应,就得给多大的带宽;带宽定了,PI参数的范围也就定了。
3.1 带宽是什么?——别把它想得太玄乎
带宽,在电流环里指的是系统能有效跟踪输入信号的频率范围。单位是Hz(赫兹)或者rad/s(弧度/秒)。
举个例子:你给电机一个正弦波电流指令,频率是100Hz。如果系统带宽是200Hz,那电机电流能很好地跟上指令。如果系统带宽只有50Hz,那电机电流就会明显滞后,幅值也会衰减。
我个人习惯把带宽理解成系统的「反应速度」。带宽越高,反应越快;带宽越低,反应越慢。但注意,不是越高越好——带宽太高,系统容易振荡,噪声也会被放大。
核心观点:带宽是PI参数整定的「天花板」。你调出来的PI参数,最终决定了系统的实际带宽。反过来,你先确定目标带宽,再用公式反推PI参数,这就是带宽法则的精髓。
3.2 电流环的数学模型——简单回顾一下
电流环的控制对象是电机绕组,可以简化成一个RL串联电路。传递函数是:
G(s) = 1 / (L·s + R)
其中:
- L:电机电感(H)
- R:电机电阻(Ω)
- s:拉普拉斯算子
PI控制器的传递函数是:
C(s) = Kp + Ki / s
把两者串联起来,得到开环传递函数:
G_open(s) = (Kp·s + Ki) / (s·(L·s + R))
嗯,这里要注意:我们通常把PI控制器的零点设计成与电机极点对消。也就是让:
Ki / Kp = R / L
为什么要这么做?因为对消之后,开环传递函数就简化成了:
G_open(s) = Kp / (L·s)
你想想看,一个纯积分环节,系统就变得简单可控了。闭环传递函数变成:
G_close(s) = 1 / (1 + (L/Kp)·s)
这是一个一阶低通滤波器,它的带宽(截止频率)就是:
BW = Kp / L (单位:rad/s)
或者换算成Hz:
BW_Hz = Kp / (2π·L)
技巧:这个公式就是带宽法则的核心。你只要知道目标带宽BW,和电机电感L,就能直接算出Kp。Ki则由极点对消条件得出:Ki = Kp · R / L。
3.3 带宽法则的整定步骤——三步走
我在项目中遇到过很多次,工程师拿着电机参数就开始调,调了半天发现系统响应太慢或者太振荡。其实按照带宽法则来,三步就能搞定:
- 确定目标带宽
- 根据机械系统的需求来定。比如,一个高速主轴可能需要1000Hz以上的电流环带宽;一个大型机械臂可能只需要200Hz。
- 一般建议:电流环带宽 = 速度环带宽 × 5~10倍。速度环带宽 = 位置环带宽 × 5~10倍。
- 我曾经在一个项目中,客户要求位置环带宽50Hz,我直接定了电流环带宽500Hz。结果系统响应非常干脆,客户很满意。
- 计算Kp
- 公式:Kp = BW × L
- 注意单位:BW用rad/s,L用H。
- 如果BW给的是Hz,先换算:BW_rad/s = 2π × BW_Hz
- 计算Ki
- 公式:Ki = Kp × R / L
- 或者直接用:Ki = BW × R
- 这个Ki值能保证极点对消,系统响应最优。
警告:极点对消的前提是电机参数L和R准确。如果参数不准,对消效果会打折扣。我曾经遇到过一台电机,标称电感是5mH,实测只有3.8mH。用标称值算出来的PI参数,系统响应明显有超调。后来用实测值重新算,问题就解决了。
3.4 带宽选择的实际考量——不是越高越好
你可能会想:既然带宽越高响应越快,那我直接把带宽设到最高不就行了?
别急,这里有几个限制因素:
| 限制因素 | 说明 | 我的建议 |
|---|---|---|
| PWM开关频率 | 电流环带宽不能超过PWM频率的1/10~1/5 | 一般取1/8比较安全 |
| 采样延迟 | 电流采样和计算会引入延迟,限制带宽 | 带宽不要超过采样频率的1/10 |
| 噪声放大 | 带宽越高,高频噪声越容易被放大 | 如果电流反馈有噪声,适当降低带宽 |
| 机械谐振 | 电流环带宽过高可能激发机械谐振 | 先做机械模态测试,避开谐振频率 |
说白了,带宽选择是个权衡。我个人习惯是先按理论值算一个初始带宽,然后在实际系统上微调。比如,理论算出来500Hz,实际跑起来发现电流噪声有点大,那就降到400Hz试试。
3.5 带宽法则的SVG知识图谱
下面这张图总结了带宽法则的核心逻辑,你看一眼就能明白:
3.6 一个完整的计算示例
假设你手头有一台电机,参数如下:
- 电感 L = 5 mH = 0.005 H
- 电阻 R = 0.5 Ω
- 目标电流环带宽 BW = 500 Hz
第一步,换算单位:
BW_rad/s = 2π × 500 = 3141.6 rad/s
第二步,计算Kp:
Kp = BW × L = 3141.6 × 0.005 = 15.708
第三步,计算Ki:
Ki = Kp × R / L = 15.708 × 0.5 / 0.005 = 1570.8
所以,PI参数为:Kp = 15.7,Ki = 1571。
你把这个参数写进控制器,系统响应应该能达到500Hz的带宽。当然,实际调试时可能还需要微调,但至少有了一个靠谱的起点。
小提示:如果你用的驱动器支持自动整定,它内部大概率也是用这个逻辑。但自动整定出来的参数不一定最优,尤其是当电机参数不准或者机械系统有谐振时。我建议你学会手动计算,这样遇到问题能快速定位。
3.7 避坑指南——我曾经踩过的坑
做伺服驱动这么多年,我在带宽法则上栽过几次跟头。分享出来,希望你别重蹈覆辙:
- 坑一:忽略电感饱和
我曾经在一个项目中,电机在低速大扭矩时电感会下降30%。用空载时的电感值算出来的Kp,在重载时明显偏大,系统出现振荡。后来我改用饱和电感值重新计算,问题解决。
- 坑二:带宽设得太高,触发机械谐振
有一次我把电流环带宽设到了800Hz,结果电机一跑起来就发出刺耳的啸叫声。用频谱仪一测,发现机械谐振频率正好在750Hz。把带宽降到600Hz后,啸叫声消失。
- 坑三:忽略采样延迟
有些低端驱动器的电流采样频率只有10kHz,理论上最大带宽只能到1kHz。但我当时没注意,设了1.2kHz的带宽,结果系统相位裕度不够,响应有超调。后来把带宽降到800Hz,一切正常。
嗯,这些坑其实都可以避免。只要你记住:带宽法则给出的是理论值,实际调试时一定要结合系统特性做微调。
3.8 小结
带宽法则的核心就一句话:先定带宽,再算参数。它把PI整定从一个「玄学」问题变成了一个「数学」问题。你只要知道电机参数和目标带宽,就能算出靠谱的Kp和Ki。
当然,实际系统总会有各种非理想因素。但有了这个理论基础,你调试起来就有方向了,而不是盲目地试参数。
下一章,我会讲第二个黄金法则——相位裕度法则。到时候你会看到,光有带宽还不够,还得保证系统有足够的稳定裕量。