4、转速外环PI参数整定:转速环传递函数推导、抗饱和积分设计、变增益PI控制
各位工程师朋友,咱们接着聊。上一章我们把电流内环搞定了,这一章轮到转速外环。说实话,转速环的整定比电流环要“艺术”一些。为什么?因为电流环面对的是电气时间常数,快得很;转速环面对的是机械时间常数,慢悠悠的,而且还有一堆非线性因素等着你。
我个人习惯把转速环整定分成三步走:先把传递函数理清楚,再把抗饱和积分加上,最后用变增益来提升全工况性能。咱们一步步来。
4.1 转速环传递函数推导
先看一个典型的双闭环控制结构。电流内环我们已经等效成一阶惯性环节了,转速外环就架在上面。
从框图可以写出开环传递函数:
G(s) = (Kp + Ki/s) * [1/(Ti*s + 1)] * Kt * [1/(J*s)] * (1/s)
这里Ti是电流环等效时间常数,一般取开关周期的3~5倍。J是转动惯量,Kt是转矩系数。
嗯,这里要注意。很多教材直接把电流环当成1来处理,这在低速时问题不大。但我在项目中遇到过,当风机转速超过额定转速的80%时,电流环的延迟效应就开始显现了。所以建议保留Ti项,别偷懒。
把上式整理一下,得到转速环的闭环特征方程:
D(s) = J*Ti*s^3 + J*s^2 + Kt*Kp*s + Kt*Ki = 0
这是个三阶系统。我个人习惯用“对称最优法”来整定,也就是让系统具有最佳的阻尼比。令:
Kp = J / (2 * Ti * Kt)
Ki = Kp / (4 * Ti)
这样整定出来的系统,阶跃响应超调量大约在4.3%左右,响应速度也够快。当然,这只是理论值,实际调试时还得微调。
4.2 抗饱和积分设计
讲完传递函数,咱们聊聊一个很实际的问题——积分饱和。
你想想看,当风机突然遇到一个大的负载变化,比如阵风来了,转速会掉下去。PI调节器一看误差大了,拼命积分,输出值蹭蹭往上涨。但问题是,电流内环有上限啊,比如额定电流的1.5倍。这时候PI输出已经超过限幅值了,但积分项还在继续累加。
等转速恢复回来,误差变负了,但积分项里还存着一大堆“旧账”。结果就是——输出迟迟降不下来,转速过冲,甚至振荡。这就是典型的积分饱和现象。
我曾经在一个2MW的风场遇到过这个问题。那台机组每次并网后转速都要晃好几下,折腾了三天。后来发现就是积分饱和在作怪。
解决办法?用抗饱和积分,也叫Anti-windup。我常用的有两种方式:
方法一:条件积分法
简单粗暴——当PI输出超过限幅值时,停止积分。伪代码如下:
// 条件积分法
if (output >= max_limit || output <= min_limit) {
integral_term = integral_term; // 保持不动
} else {
integral_term += Ki * error * Ts;
}
这个方法实现简单,但有个问题:在限幅边界上容易产生“抖振”。因为输出在限幅值附近来回跳,积分一会儿开一会儿关。
方法二:反馈跟踪法
这个更优雅一些。把实际输出和PI计算输出的差值,通过一个增益反馈回积分器:
// 反馈跟踪法
real_output = saturate(pi_output, min_limit, max_limit);
integral_term += Ki * error * Ts + Kaw * (real_output - pi_output) * Ts;
Kaw是抗饱和增益,一般取1/Ti到10/Ti之间。我习惯取2/Ti,效果不错。
4.3 变增益PI控制
好了,传递函数有了,抗饱和也加上了。但还有一个问题——风机的工况变化太大了。低风速时转动惯量小,高风速时转动惯量大。一套PI参数打天下?不现实。
变增益PI控制,说白了就是让PI参数跟着工况走。我常用的策略有两种:
策略一:基于转速的增益调度
把转速范围分成几个区间,每个区间用不同的PI参数:
| 转速区间 | Kp | Ki | 说明 |
|---|---|---|---|
| 0 ~ 0.3 p.u. | Kp0 * 1.5 | Ki0 * 1.2 | 低转速,惯量小,增益大一些 |
| 0.3 ~ 0.7 p.u. | Kp0 | Ki0 | 额定工况,用基准值 |
| 0.7 ~ 1.0 p.u. | Kp0 * 0.8 | Ki0 * 0.7 | 高转速,惯量大,增益小一些 |
| 1.0 p.u. 以上 | Kp0 * 0.5 | Ki0 * 0.3 | 超速保护区域,增益要保守 |
Kp0和Ki0就是前面用对称最优法算出来的基准值。区间边界处要做线性插值,避免参数跳变引起振荡。
策略二:基于误差的变增益
这个思路更直接——误差大的时候用大增益,误差小的时候用小增益。我常用的是:
// 基于误差的变增益
if (abs(error) > error_threshold) {
Kp_eff = Kp * 1.5;
Ki_eff = Ki * 0.5; // 大误差时积分弱一些,防止饱和
} else {
Kp_eff = Kp;
Ki_eff = Ki;
}
这个策略在风机启动和停机时特别有用。启动时误差大,用大比例快速拉近;接近目标时用小比例,防止过冲。
最后总结一下我的个人经验。转速环整定,传递函数是基础,抗饱和是保障,变增益是提升。这三样都做好了,你的转速环基本就稳了。实际项目中,我一般先在仿真里把参数调个七七八八,再到现场微调。现场调试时,重点关注两个场景:一是空载启动,二是满载突加负载。这两个场景能过,其他工况基本没问题。
好了,转速环就聊到这儿。记住,调试时别急,一步一步来。先把电流环锁死,再调转速环。电流环不稳,转速环怎么调都是白搭。