1. 双馈风力发电机(DFIG)控制策略概述
双馈感应发电机(Doubly-Fed Induction Generator, DFIG)作为现代风力发电系统的核心部件,其独特的转子侧变频器设计允许在±30%转速范围内实现最大功率点跟踪。这种结构相比全功率变换系统可降低约25%的变频器容量,使得2-5MW级风电机组普遍采用DFIG方案。
在Simulink环境中构建DFIG模型时,我们需要重点关注三个核心控制环:
- 转子侧变换器(RSC)的转矩/无功功率控制
- 电网侧变换器(GSC)的直流母线电压控制
- 桨距角与转速的协调控制
典型的控制策略包括:
- 矢量控制(Field Oriented Control)
- 直接转矩控制(Direct Torque Control)
- 模型预测控制(Model Predictive Control)
注意:Matlab 2016版本中的Simulink对DFIG建模有特殊要求,需确保Power System Blockset版本不低于v6.3,否则会出现库元件缺失问题。
2. Simulink建模环境配置
2.1 基础模块准备
在新建Blank Model后,需要加载以下关键工具箱:
code复制Power System Blockset → Machines → Asynchronous Machine pu Units
Simscape Electrical → Specialized Power Systems → Power Electronics
Signal Processing Toolbox → Filters → Digital Filters
对于MATLAB 2016环境,需特别注意:
- 编译器兼容性问题:建议安装Microsoft Visual C++ 2013 Redistributable(x64版)
- 若出现"未检测到支持的编译器"警告,需执行:
matlab复制
选择已安装的VS2013编译器mex -setup
2.2 典型建模错误处理
当遇到"应用程序控制策略已阻止此文件"错误时,按以下步骤解决:
- 右键slx文件 → 属性 → 勾选"解除锁定"
- 在MATLAB命令窗口执行:
matlab复制
在"受信任的发布者"中添加MATLAB安装证书!certmgr.msc
3. DFIG核心子系统建模
3.1 电机本体参数设置
使用Asynchronous Machine pu Units模块时,关键参数配置示例:
| 参数项 | 典型值 | 单位 |
|---|---|---|
| Stator resistance (Rs) | 0.0048 | pu |
| Rotor resistance (Rr') | 0.0055 | pu |
| Stator leakage inductance (Lls) | 0.102 | pu |
| Rotor leakage inductance (Llr') | 0.11 | pu |
| Magnetizing inductance (Lm) | 3.362 | pu |
| Inertia constant (H) | 3.5 | s |
提示:实际工程中建议通过电机铭牌数据计算标幺值,基准值选择公式:
matlab复制Z_base = V_rated^2 / S_rated L_base = Z_base / (2*pi*f_rated)
3.2 转子侧变换器控制实现
构建矢量控制系统的关键步骤:
- 转速-功率外环设计
matlab复制% PI控制器参数计算示例
Kp_speed = 2*pi*J*BW_speed; % J为转动惯量
Ki_speed = Kp_speed*BW_speed/5;
- 电流内环解耦
在Simulink中使用以下方程实现:
code复制Vd = (Rr + σLr*s)*Id - ωslip*σLr*Iq
Vq = (Rr + σLr*s)*Iq + ωslip*(Lm^2/Ls + σLr)*Id
其中σ=1-Lm^2/(LsLr)
- SVPWM调制实现
建议采用Discrete PWM Generator模块,开关频率设置为2kHz,采样时间与仿真步长保持一致(通常50μs)
4. 典型故障仿真与分析
4.1 电网电压骤降响应
搭建对称跌落测试场景:
- 使用Three-Phase Fault模块设置0.2s时发生90%电压跌落
- 关键观测信号:
- DC-link电压波动
- 转子过电流峰值
- 电磁转矩振荡幅度
保护策略实现:
matlab复制function [crowbar_enable] = protection_logic(Ir_pu, Vdc_pu)
if any(abs(Ir_pu) > 1.2) || (Vdc_pu > 1.15)
crowbar_enable = 1;
else
crowbar_enable = 0;
end
end
4.2 参数敏感性分析
通过批处理仿真观察关键参数影响:
matlab复制for Rr_var = [0.8:0.1:1.2]*Rr_nominal
set_param('DFIG_Model/Machine', 'Rr', num2str(Rr_var));
simout = sim('DFIG_Model');
% 记录动态响应指标
end
5. 模型验证与代码生成
5.1 单元测试框架搭建
利用Simulink Test模块创建测试用例:
- 正常工况测试:额定风速下的功率曲线验证
- 故障工况测试:验证crowbar动作时序
- 控制模式切换测试:PQ控制与V/f控制切换
5.2 代码生成配置
针对STM32F4系列处理器的配置要点:
- 在Configuration Parameters中设置:
- Solver → Type → Fixed-step
- Hardware Implementation → Target hardware → STM32F4xx
- 生成代码前执行:
matlab复制slbuild('DFIG_Controller','ModelReferenceCoderTarget')
6. 高级应用扩展
6.1 与Carsim联合仿真
实现步骤:
- 在Carsim中导出S-Function模板
- Simulink侧配置:
matlab复制set_param(gcs, 'ExternalInput', 'Carsim_Input') set_param(gcs, 'ExternalOutput', 'Carsim_Output') - 设置耦合步长为5ms
6.2 深度学习应用
在Simulink中集成LSTM网络预测风速:
- 通过Deep Learning Toolbox导出训练好的LSTM网络
- 使用MATLAB Function模块调用预测模型:
matlab复制function y = predict_wind(u) persistent net; if isempty(net) net = coder.loadDeepLearningNetwork('wind_lstm.mat'); end y = predict(net, u); end
7. 工程实践经验
-
仿真加速技巧:
- 对电力电子部分采用平均值模型加速
- 使用parsim进行参数扫描并行计算
matlab复制simInput(1:10) = Simulink.SimulationInput('DFIG_Model'); parsim(simInput, 'ShowProgress', 'on'); -
常见问题排查:
- 若出现代数环警告,在相应信号线插入Unit Delay
- 当仿真结果异常时,检查所有初始状态是否一致
- 对于收敛性问题,尝试将仿真步长从auto改为固定值(如50μs)
-
模型版本管理建议:
- 使用Git进行版本控制时,需设置合适的slx文件比较工具
matlab复制!git config diff.slxcache.textconv "matlab -nodesktop -nosplash -r 'slxmlcomp.compare(%O,%B);quit'"
在最近的海上风电项目实践中,我们发现当电网阻抗较高时,需要特别注意PLL带宽的调整。实测数据表明,将PLL带宽从50Hz降至30Hz可使系统振荡概率降低40%。这个细节在标准文献中很少提及,但对工程稳定性至关重要。
