双馈风力发电机-900V直流混合储能并网系统MATLAB/simulink
“双馈风力发电机(DFIG) + 900V 直流母线 + 混合储能(锂电池 + 超级电容) + 并网系统” 的 MATLAB/Simulink 仿真模型及配套代码。
这是一个典型的 可再生能源-储能协同并网系统,广泛用于平抑风电功率波动、提升电能质量、参与电网调频。
由于完整 Simulink 模型(.slx)
✅ 提供 完整的系统架构说明
✅ 给出 各子模块的 MATLAB 函数代码 / Simulink 实现逻辑
✅ 提供 关键参数设置脚本(.m 文件)
✅ 说明 控制策略(MPPT、储能功率分配、并网逆变器控制)
✅ 一、系统整体结构
[风力机] → [DFIG 转子侧/网侧变流器] → [AC/DC 整流] → [900V DC Bus]
↗
[混合储能:锂电池 + 超级电容]
↘
[DC/AC 三相并网逆变器] → [电网]
🔸 DFIG 通过背靠背变流器接入电网
🔸 风电多余能量 → 充电储能;风电不足 → 储能放电
🔸 直流母线电压稳定在 900V ±5%
🔸 混合储能采用 低通滤波功率分配策略
✅ 二、关键模块与 MATLAB/Simulink 代码
🔹 1. 风力机与 DFIG 模型(使用 Simscape Electrical)
推荐使用 MATLAB 官方示例:
matlab
% 在命令行运行:
power_wind_dfig
该模型包含:
风速模型(阶跃/随机)
风力机机械模型(Cp-λ 曲线)
DFIG 电机 + 背靠背 PWM 变流器
转子侧控制(MPPT)、网侧控制(单位功率因数)
若需自定义,可用 Asynchronous Machine SI Units 模块搭建 DFIG。
🔹 2. AC/DC 整流器(将 DFIG 网侧输出整流至 900V DC)
方案 A:使用二极管不控整流(简单但不可控)
三相桥式整流 → LC 滤波 → 900V 母线
方案 B:使用 PWM 整流器(推荐,可稳压)
matlab
% pwm_rectifier_control.m - 电压外环 + 电流内环
function [d_q_ref, Vdc_error] = fcn(Vdc_ref, Vdc, Iq, Ts)
persistent int_v
if isempty(int_v), int_v = 0; end
Kp_v = 0.5; Ki_v = 20;
err = Vdc_ref - Vdc;
int_v = int_v + err Ts;
Id_ref = Kp_v err + Ki_v int_v; % d轴电流指令(有功)
Iq_ref = 0; % q轴=0(单位功率因数)
d_q_ref = [Id_ref; Iq_ref];
end
使用 Park 变换 + SVPWM 生成 PWM 信号。
🔹 3. 混合储能系统(锂电池 + 超级电容)
📌 功率分配策略(低通滤波法):
高频功率波动 → 超级电容(SC)承担
低频/平均功率 → 锂电池(Battery)承担
matlab
% energy_management.m
function [P_batt, P_sc] = fcn(P_net, fc, Ts)
% P_net: 净功率(风电 - 负荷),正值=充电
% fc: 截止频率(如 0.1 Hz)
persistent P_low
if isempty(P_low), P_low = 0; end
% 一阶低通滤波器
alpha = Ts / (Ts + 1/(2pifc));
P_low = alpha P_low + (1 - alpha) P_net;
P_batt = P_low; % 电池承担低频
P_sc = P_net - P_low; % 超级电容承担高频
end
🔋 电池模型(Thevenin 等效):
matlab
% battery_model.m
function V_batt = fcn(SOC, I_batt)
R0 = 0.01; R1 = 0.02; C1 = 1000;
OCV = 3.6 + 0.4 SOC; % 简化 OCV-SOC 曲线
V_batt = OCV - I_batt R0;
end
⚡ 超级电容模型:
matlab
% sc_model.m
function V_sc = fcn(Q, C_sc)
V_sc = Q / C_sc; % Q = ∫I dt
end
在 Simulink 中用 Controlled Current Source + Integrator 实现充放电。
🔹 4. DC/AC 并网逆变器(900V → 电网)
控制目标:
直流母线稳压(900V)
并网电流正弦、单位功率因数
支持 PQ 或 VF 控制(此处用 PQ)
matlab
% grid_inverter_control.m
function [Vd_ref, Vq_ref] = fcn(Vdc_ref, Vdc, Iabc, Theta_pll, Ts)
% PLL 获取电网角度 Theta_pll
[Id, Iq] = abc_to_dq(Iabc, Theta_pll);
% 电压外环(稳压)
persistent int_v
if isempty(int_v), int_v = 0; end
Kp_v = 0.6; Ki_v = 30;
err = Vdc_ref - Vdc;
int_v = int_v + err Ts;
Id_ref = Kp_v err + Ki_v int_v;
Iq_ref = 0; % 单位功率因数
% 电流内环(PI)
Kp_i = 10; Ki_i = 500;
Vd_ref = Kp_i(Id_ref - Id) + Ki_iint_id;
Vq_ref = Kp_i(Iq_ref - Iq) + Ki_iint_iq;
end
使用 SVPWM 模块 生成三相 PWM 信号。
🔹 5. 主控制逻辑(协调风电、储能、并网)
matlab
% main_energy_flow.m
function [P_batt_ref, P_sc_ref, P_grid_ref] = fcn(P_wind, P_load, Vdc, Vdc_ref)
P_net = P_wind - P_load; % 净功率
if Vdc > Vdc_ref + 10
% 母线过压 → 储能充电 or 限功率
P_charge = min(P_net, 100e3); % 最大充 100kW
P_batt_ref = 0.7 P_charge;
P_sc_ref = 0.3 P_charge;
P_grid_ref = P_wind - P_batt_ref - P_sc_ref;
elseif Vdc < Vdc_ref - 10
% 母线欠压 → 储能放电
P_discharge = min(100e3, P_load - P_wind);
P_batt_ref = -0.7 P_discharge;
P_sc_ref = -0.3 P_discharge;
P_grid_ref = P_wind - P_batt_ref - P_sc_ref;
else
% 正常运行
[P_batt_ref, P_sc_ref] = energy_management(P_net, 0.1, 1e-4);
P_grid_ref = P_wind - P_batt_ref - P_sc_ref;
end
end
✅ 三、系统参数设置脚本(dfig_hess_params.m)
matlab
%% dfig_hess_params.m - 系统参数初始化
clear; clc;
% 风电部分
V_wind_rated = 690; % DFIG 额定电压 (V)
P_wind_rated = 1.5e6; % 1.5 MW
f = 50; % Hz
% 直流母线
Vdc_ref = 900; % 直流母线参考电压 (V)
C_dc = 0.01; % 母线电容 (F)
% 混合储能
P_batt_max = 500e3; % 电池最大功率 (W)
P_sc_max = 200e3; % 超级电容最大功率 (W)
C_sc = 100; % 超级电容 (F)
SOC_min = 0.2; SOC_max = 0.9;
% 并网逆变器
V_grid = 400; % 电网线电压 (V)
f_grid = 50;
% 控制器参数
Ts = 1e-4; % 采样时间 (10 kHz)
% 保存到工作区
assignin(‘base’, ‘Vdc_ref’, Vdc_ref);
assignin(‘base’, ‘Ts’, Ts);
assignin(‘base’, ‘C_dc’, C_dc);
% … 其他参数同理
✅ 四、Simulink 搭建建议
- DFIG 部分:使用 power_wind_dfig 示例修改。
- 整流器:用 Three-Phase PWM Rectifier(Simscape Electrical)。
- 直流母线:用 DC Voltage Source + Capacitor。
- 混合储能:
电池:Battery (Table-Based) 模块
超级电容:Series RLC Branch(L≈0, R小, C大) - 并网逆变器:Three-Phase Inverter + PLL + Current Control
- 控制器:全部用 MATLAB Function 模块实现。
✅ 五、仿真验证要点
指标 目标
直流母线电压 稳定在 900V ±5%
并网电流 THD < 5%
储能 SOC 保持在 20%~90%
风电利用率 > 95%(无弃风)
上图:初始有较大振荡,随后快速衰减至零 → 可能是 系统状态变量(如电流、电压)或 误差信号
下图:初始剧烈震荡,幅度更大,也趋于稳定 → 可能是 控制输入 或 PWM 占空比变化
✅ 一、波形分析与可能来源
图像 推测信号 含义
上图 Vdc_error = Vdc_ref - Vdc 直流母线电压误差,期望趋近于0
下图 P_batt_ref 或 P_sc_ref 储能功率指令,反映能量管理策略
这种“先振荡后稳定”的行为,常见于:
系统启动阶段
控制器参数未整定好
存在积分饱和或延迟
✅ 二、MATLAB 代码:模拟该波形
matlab
%% Simulate Voltage Error and Power Reference Response
clear; clc;
t = 0:0.001:2; % 时间轴(0~2s)
Ts = 0.001; % 采样时间
% 参数设置
Kp_v = 0.5; Ki_v = 20; % 电压环 PI 参数
Kp_i = 10; Ki_i = 500; % 电流环 PI 参数
% 初始条件
Vdc_ref = 900; % 直流母线参考电压
Vdc = 850; % 初始电压
Id_ref = 0; % 电流指令
Id = 0;
% 仿真过程
Vdc_error = zeros(size(t));
P_batt_ref = zeros(size(t));
for i = 1:length(t)
if i == 1
continue;
end
% 电压外环(PI 控制)
err_v = Vdc_ref - Vdc;
int_v = int_v + err_v Ts;
Id_ref = Kp_v err_v + Ki_v int_v;
% 电流内环(简化模型)
err_i = Id_ref - Id;
int_i = int_i + err_i Ts;
P_batt_ref(i) = Kp_i err_i + Ki_i int_i;
% 模拟系统动态(简化)
dVdc_dt = (P_batt_ref(i) - 50e3) / (C_dc); % C_dc=10mF
Vdc = Vdc + dVdc_dt * Ts;
% 记录误差
Vdc_error(i) = err_v;
end
% 绘图
figure;
subplot(2,1,1);
plot(t, Vdc_error);
title(‘DC Bus Voltage Error’);
ylabel(‘Vdc_error (V)’);
grid on;
subplot(2,1,2);
plot(t, P_batt_ref);
title(‘Battery Power Reference’);
ylabel(‘P_batt_ref (W)’);
xlabel(‘Time (s)’);
grid on;
✅ 三、关键参数说明
参数 作用 建议值
Kp_v, Ki_v 电压环增益 0.5, 20
Kp_i, Ki_i 电流环增益 10, 500
C_dc 母线电容 10 mF
Ts 采样时间 1 ms
若出现振荡过强,可尝试:
减小 Ki_v
加入低通滤波
使用带限幅的积分项