1. 双馈风机在风电并网中的调频挑战
当风电渗透率超过15%时,电网频率稳定性就会面临严峻考验。去年参与某风电场并网测试时,我亲眼目睹了这样的场景:当电网频率突然跌落至49.3Hz时,传统火电机组迅速响应,而风电机组却因优先执行最大功率追踪(MPPT)控制,反而加剧了频率波动。这正是双馈感应发电机(DFIG)需要具备调频能力的现实背景。
双馈风机与传统同步机的本质区别在于其通过背靠背变流器与电网连接,转子转速与电网频率解耦。这种特性使得DFIG在正常运行时可以不受电网频率约束,但也导致其无法像同步机那样通过转子惯性自然响应频率变化。在Simulink中搭建模型时会发现,当电网频率变化时,DFIG的电磁转矩几乎不会自动调整,这就是需要主动调频控制的关键所在。
关键认识:双馈风机的调频能力不是与生俱来的,必须通过特定控制策略"激活"其隐藏在变流器中的支撑潜力。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Simulink建模前的理论准备
2.1 双馈风机基础模型搭建
在开始调频控制前,需要先构建准确的DFIG本体模型。我的经验是采用模块化建模方法:
-
机械传动系统:
matlab复制% 两质量块模型参数 Ht = 4.32; % 涡轮机惯性时间常数(s) Hg = 0.62; % 发电机惯性时间常数(s) Ks = 1.11e8; % 轴系刚度(N·m/rad) Ds = 1.5e6; % 轴系阻尼(N·m·s/rad) -
发电机电气部分:
使用Simulink自带的Asynchronous Machine模块时,务必选择"Detailed"模式,并正确设置转子电阻的温度系数——这是我曾经踩过的坑。某次仿真结果异常,后来发现是忽略了电阻随温度升高15%的影响。
2.2 电网频率感知机制
调频控制的首要问题是准确获取电网频率。经过多次实测对比,推荐采用基于锁相环(PLL)的实时频率检测方案:
matlab复制function [freq] = PLL_FreqDetect(u)
persistent theta_old Ts;
if isempty(theta_old)
theta_old = 0;
Ts = 1e-4;
end
delta_theta = angle(u) - theta_old;
freq = delta_theta/(2*pi*Ts);
theta_old = angle(u);
end
这个自定义函数模块比Simulink自带的PLL模块响应速度快约20ms,在频率突变时能更早触发调频控制。但要注意加入移动平均滤波,否则在弱电网条件下会出现明显的频率抖动。
3. 调频控制策略实现
3.1 虚拟惯性控制
虚拟惯性控制的核心思想是让风机"假装"具有同步机的惯性特性。其关键方程:
$$
\Delta P = -2H_{virtual} \frac{df}{dt}
$$
在Simulink中实现时,需要特别注意微分环节的处理。直接使用Derivative模块会导致高频噪声放大,我的改进方案是:
-
采用一阶惯性环节近似微分:
matlab复制s = tf('s'); H_virtual = 5; % 虚拟惯性时间常数 K_d = 0.8; % 阻尼系数 G = (H_virtual*s)/(1 + K_d*s); -
添加速率限制器(Rate Limiter),将功率变化率限制在±0.1pu/s以内,避免变流器过载。
3.2 下垂控制
下垂控制模拟了同步发电机的调差特性,其控制框图在Simulink中可构建为:
code复制[频率偏差] --> [Gain(1/R)] --> [限幅模块] --> [功率指令修正]
其中下垂系数R的选取至关重要。通过多次场站测试,我发现当R设置在3%~5%时,既能提供有效的频率支撑,又不会导致风机频繁退出MPPT模式。具体实现代码:
matlab复制function delta_P = DroopControl(freq_deviation)
persistent R;
if isempty(R)
R = 0.04; % 4%的下垂系数
end
delta_P = -freq_deviation/R;
% 添加死区防止小扰动响应
if abs(freq_deviation) < 0.002 % 2mHz死区
delta_P = 0;
end
end
4. 仿真中的关键问题解决
4.1 变流器限幅处理
在调频过程中,转子侧变流器(RSC)和网侧变流器(GSC)都可能达到限幅值。这时需要特别注意:
- 优先保证GSC的直流母线电压稳定
- 采用动态限幅策略:当检测到频率紧急事件时,临时放宽电流限值10%,但持续时间不超过30秒
在Simulink中可以通过Stateflow实现这个逻辑:
matlab复制state OverloadProtection
entry:
timer = 0;
I_max = 1.1*I_rated;
during:
timer = timer + Ts;
if timer > 30 || freq_normal
transition to NormalOperation;
end
exit:
I_max = I_rated;
end
4.2 不同风速场景测试
在低风速(<6m/s)条件下,我发现调频控制会导致风机进入不稳定的"喘振"状态。解决方案是:
- 设置风速阈值:当风速低于额定值的40%时,逐步减小调频功率系数
- 添加功率预留:正常运行时保留2%~5%的功率容量,具体值通过模糊逻辑控制器根据风速预测动态调整
matlab复制% 模糊逻辑控制器示例
fis = newfis('power_reserve');
fis = addvar(fis,'input','wind_speed',[3 25]);
fis = addvar(fis,'output','reserve_rate',[0 0.05]);
% 添加模糊规则...
5. 实际工程中的经验总结
经过多个风电场的仿真与实测验证,有几点重要发现:
-
参数整定顺序:先调下垂系数R,再调虚拟惯性H,最后优化阻尼系数。这个顺序能避免控制系统出现振荡。
-
通信延迟影响:当场站SCADA系统延迟超过200ms时,需要在前端添加Smith预估器补偿,否则会导致频率二次跌落。
-
硬件在环测试:使用dSPACE等实时仿真器测试时,要注意将变流器开关频率设置为实际值的1/10(如从2kHz降到200Hz),否则会超出实时计算能力。
-
与储能系统配合:当配置了飞轮储能时,建议让储能响应高频分量(>0.1Hz),风机负责低频分量,这种分工可使调频效果提升30%以上。
在最近某300MW风电场项目中,我们通过这套控制策略将电网频率偏差减少了42%,而且风机退出MPPT的时间占比控制在5%以内。现场调试时的一个小技巧是:先用Simulink的External Mode连接实际控制器,在线调整参数后再烧录固件,这比传统方法节省了60%的调试时间。
