蓄电池能量管理系统(BESS)的Simulink仿真模型,包含光伏发电、负载需求、电网交互和智能控制策略。
系统架构概述
[光伏阵列] → [DC/DC转换器] →
[直流母线] → [DC/AC逆变器] → [交流负载]
[蓄电池组] → [双向DC/DC转换器] →
[电网连接点]
Simulink模型实现
1. 主系统模型 (BESS_System.slx
)
% 主系统参数设置
Ts = 0.1; % 仿真步长 (s)
T_total = 24*3600; % 总仿真时间 (24小时)
% 创建新模型
open_system(new_system('BESS_System'));
set_param('BESS_System', 'Solver', 'ode4', 'FixedStep', num2str(Ts));
% 添加子系统
add_block('simulink/Commonly Used Blocks/Subsystem', 'BESS_System/PV_System');
add_block('simulink/Commonly Used Blocks/Subsystem', 'BESS_System/Battery_System');
add_block('simulink/Commonly Used Blocks/Subsystem', 'BESS_System/Load_Profile');
add_block('simulink/Commonly Used Blocks/Subsystem', 'BESS_System/Control_System');
add_block('simulink/Commonly Used Blocks/Subsystem', 'BESS_System/Grid_Interface');
% 连接子系统
add_line('BESS_System', 'PV_System/1', 'Bus_Bar/1');
add_line('BESS_System', 'Battery_System/1', 'Bus_Bar/2');
add_line('BESS_System', 'Load_Profile/1', 'Bus_Bar/3');
add_line('BESS_System', 'Grid_Interface/1', 'Bus_Bar/4');
add_line('BESS_System', 'Control_System/1', 'Battery_System/2');
add_line('BESS_System', 'Control_System/2', 'PV_System/2');
add_line('BESS_System', 'Control_System/3', 'Grid_Interface/2');
% 添加测量和显示模块
add_block('simulink/Commonly Used Blocks/Scope', 'BESS_System/Scope');
add_block('simulink/Sinks/To Workspace', 'BESS_System/To_Workspace');
2. 光伏系统模型 (PV_System.slx
)
function PV_System()
% 光伏阵列参数
P_max = 5000; % 峰值功率 (W)
V_mp = 200; % 最大功率点电压 (V)
I_mp = 25; % 最大功率点电流 (A)
% 创建等效电路模型
add_block('simpowersystems/Solar Cell', 'PV_System/Solar_Cell');
set_param('PV_System/Solar_Cell', 'NumberOfSeriesCells', '60');
set_param('PV_System/Solar_Cell', 'NumberOfParallelStrings', '5');
% 添加辐照度和温度输入
add_block('simulink/Sources/In1', 'PV_System/Irradiance');
add_block('simulink/Sources/In1', 'PV_System/Temperature');
% 添加MPPT控制器
add_block('simpowersystems/MPPT', 'PV_System/MPPT_Controller');
set_param('PV_System/MPPT_Controller', 'AlgorithmType', 'Perturb and Observe');
% 连接模块
add_line('PV_System', 'Irradiance/1', 'Solar_Cell/1');
add_line('PV_System', 'Temperature/1', 'Solar_Cell/2');
add_line('PV_System', 'Solar_Cell/1', 'MPPT_Controller/1');
add_line('PV_System', 'MPPT_Controller/1', 'DC_DC_Converter/1');
% 输出接口
add_block('simulink/Commonly Used Blocks/Out1', 'PV_System/Out1');
end
3. 蓄电池系统模型 (Battery_System.slx
)
function Battery_System()
% 电池参数
Capacity = 100; % 容量 (Ah)
Voltage = 48; % 标称电压 (V)
SOC_init = 50; % 初始SOC (%)
R_charge = 0.05; % 充电内阻 (Ω)
R_discharge = 0.03; % 放电内阻 (Ω)
% 创建电池模型
add_block('simpowersystems/Battery', 'Battery_System/Battery');
set_param('Battery_System/Battery', 'NominalVoltage', num2str(Voltage));
set_param('Battery_System/Battery', 'Capacity', num2str(Capacity));
set_param('Battery_System/Battery', 'InitialStateOfCharge', num2str(SOC_init/100));
% 添加双向DC-DC转换器
add_block('simpowersystems/DC-DC Converter', 'Battery_System/Bi_Directional_DCDC');
set_param('Battery_System/Bi_Directional_DCDC', 'ConverterType', 'Buck-Boost');
% 添加控制信号输入
add_block('simulink/Sources/In1', 'Battery_System/Ctrl_Signal');
% 连接模块
add_line('Battery_System', 'Ctrl_Signal/1', 'Bi_Directional_DCDC/2');
add_line('Battery_System', 'Bi_Directional_DCDC/1', 'Battery/1');
% 输出接口
add_block('simulink/Commonly Used Blocks/Out1', 'Battery_System/Out1');
end
4. 智能控制系统 (Control_System.slx
)
function Control_System()
% 输入信号
add_block('simulink/Sources/In1', 'Control_System/SOC');
add_block('simulink/Sources/In1', 'Control_System/PV_Power');
add_block('simulink/Sources/In1', 'Control_System/Load_Power');
add_block('simulink/Sources/In1', 'Control_System/Grid_Price');
add_block('simulink/Sources/In1', 'Control_System/Time');
% 基于规则的电池管理策略
add_block('simulink/User-Defined Functions/MATLAB Function', 'Control_System/Battery_Manager');
% MATLAB Function 代码
set_param('Control_System/Battery_Manager', 'FunctionName', 'batteryManagement');
% 函数内容:
% function [batt_cmd, pv_cmd, grid_cmd] = batteryManagement(SOC, PV_power, Load_power, Price, Time)
% % 参数设置
% SOC_min = 20; SOC_max = 90; % SOC限制
% peak_price_threshold = 0.15; % 高电价阈值 (USD/kWh)
%
% % 计算净功率
% net_power = PV_power - Load_power;
%
% % 基于电价和SOC的决策
% if Time > 7*3600 && Time < 19*3600 % 白天
% if Price > peak_price_threshold && SOC > SOC_min
% % 高电价时段放电
% batt_cmd = min(net_power, SOC_to_power(SOC, SOC_min));
% elseif net_power > 0 && SOC < SOC_max
% % 光伏过剩时充电
% batt_cmd = -min(net_power, SOC_to_power(SOC_max, SOC));
% else
% batt_cmd = 0;
% end
% else % 夜间
% if Price > peak_price_threshold && SOC > SOC_min
% % 高电价时段放电
% batt_cmd = min(Load_power, SOC_to_power(SOC, SOC_min));
% elseif Price < peak_price_threshold && SOC < SOC_max
% % 低电价时段充电
% batt_cmd = -min(0.5*Capacity*Voltage/1000, SOC_to_power(SOC_max, SOC));
% else
% batt_cmd = 0;
% end
% end
%
% % 辅助函数:计算可用功率
% function power = SOC_to_power(SOC_target, SOC_current)
% energy_available = Capacity*Voltage*(SOC_current - SOC_target)/100/3600; % kWh
% power = energy_available * 1000; % W
% end
% end
% 输出接口
add_block('simulink/Commonly Used Blocks/Out1', 'Control_System/Out1'); % 电池控制
add_block('simulink/Commonly Used Blocks/Out1', 'Control_System/Out2'); % PV控制
add_block('simulink/Commonly Used Blocks/Out1', 'Control_System/Out3'); % 电网控制
end
5. 负载和电网模型 (Load_Profile.slx
和 Grid_Interface.slx
)
% 负载模型
function Load_Profile()
% 创建典型日负载曲线
t = 0:3600:24*3600; % 每小时一个点
load_pattern = [0.3, 0.2, 0.2, 0.2, 0.3, 0.5, ... % 0-6点
0.7, 0.9, 0.8, 0.7, 0.6, 0.8, ... % 6-12点
0.9, 0.8, 0.7, 0.8, 1.0, 1.2, ... % 12-18点
1.0, 0.9, 0.8, 0.7, 0.5, 0.4]; % 18-24点
% 创建可编程负载源
add_block('simulink/Sources/From Workspace', 'Load_Profile/Load_Source');
set_param('Load_Profile/Load_Source', 'VariableName', 'load_data');
% 输出接口
add_block('simulink/Commonly Used Blocks/Out1', 'Load_Profile/Out1');
end
% 电网接口模型
function Grid_Interface()
% 电网参数
V_grid = 220; % 电网电压 (V)
f_grid = 50; % 电网频率 (Hz)
% 创建电网模型
add_block('simpowersystems/AC Voltage Source', 'Grid_Interface/Grid');
set_param('Grid_Interface/Grid', 'Amplitude', num2str(V_grid*sqrt(2)));
set_param('Grid_Interface/Grid', 'Frequency', num2str(f_grid));
% 添加双向逆变器
add_block('simpowersystems/Inverter', 'Grid_Interface/Grid_Inverter');
set_param('Grid_Interface/Grid_Inverter', 'NumberOfBridges', '1');
% 添加控制信号输入
add_block('simulink/Sources/In1', 'Grid_Interface/Ctrl_Signal');
% 连接模块
add_line('Grid_Interface', 'Ctrl_Signal/1', 'Grid_Inverter/2');
add_line('Grid_Interface', 'Grid_Inverter/1', 'Grid/1');
% 输出接口
add_block('simulink/Commonly Used Blocks/Out1', 'Grid_Interface/Out1');
end
仿真结果分析脚本
% 运行仿真
sim('BESS_System', T_total);
% 提取结果数据
time = simout.time;
SOC = simout.signals(1).values; % 电池SOC
PV_power = simout.signals(2).values; % 光伏功率
Load_power = simout.signals(3).values; % 负载功率
Batt_power = simout.signals(4).values; % 电池功率
Grid_power = simout.signals(5).values; % 电网功率
Price = simout.signals(6).values; % 电价
% 计算系统性能指标
% 1. 自给自足率
self_sufficiency = 100 * sum(PV_power + Batt_power) / sum(Load_power);
% 2. 电网交互成本
import_cost = sum(Grid_power(Grid_power>0) .* Price(Grid_power>0)) / 3600 / 1000; % USD
export_revenue = sum(-Grid_power(Grid_power<0) .* Price(Grid_power<0)) / 3600 / 1000; % USD
net_cost = import_cost - export_revenue;
% 3. 电池使用效率
charge_energy = sum(-Batt_power(Batt_power<0)) / 3600 / 1000; % kWh
discharge_energy = sum(Batt_power(Batt_power>0)) / 3600 / 1000; % kWh
batt_efficiency = 100 * discharge_energy / charge_energy;
% 可视化结果
figure('Position', [100, 100, 1200, 800]);
% 功率流图
subplot(3,1,1);
plot(time/3600, PV_power/1000, 'g', 'LineWidth', 1.5); hold on;
plot(time/3600, Load_power/1000, 'r', 'LineWidth', 1.5);
plot(time/3600, Batt_power/1000, 'b', 'LineWidth', 1.5);
plot(time/3600, Grid_power/1000, 'm', 'LineWidth', 1.5);
title('系统功率流 (kW)');
legend('光伏功率', '负载功率', '电池功率', '电网功率');
xlabel('时间 (小时)');
ylabel('功率 (kW)');
grid on;
% SOC和电价
subplot(3,1,2);
yyaxis left;
plot(time/3600, SOC, 'b', 'LineWidth', 1.5);
ylabel('电池SOC (%)');
ylim([0 100]);
yyaxis right;
plot(time/3600, Price*100, 'm', 'LineWidth', 1.5);
ylabel('电价 (美分/kWh)');
title('电池SOC和电价');
xlabel('时间 (小时)');
grid on;
% 成本分析
subplot(3,1,3);
bar([import_cost, export_revenue, net_cost]);
set(gca, 'XTickLabel', {'购电成本', '售电收入', '净成本'});
title('经济分析 (USD)');
ylabel('金额 (美元)');
text(1, import_cost+0.1, sprintf('%.2f', import_cost), 'HorizontalAlignment', 'center');
text(2, export_revenue+0.1, sprintf('%.2f', export_revenue), 'HorizontalAlignment', 'center');
text(3, net_cost+0.1, sprintf('%.2f', net_cost), 'HorizontalAlignment', 'center');
% 显示性能指标
fprintf('系统性能指标:\n');
fprintf('自给自足率: %.2f%%\n', self_sufficiency);
fprintf('电池循环效率: %.2f%%\n', batt_efficiency);
fprintf('净电力成本: $%.4f\n', net_cost);
% 保存结果
save('BESS_Simulation_Results.mat', 'time', 'SOC', 'PV_power', 'Load_power', 'Batt_power', 'Grid_power', 'Price');
关键模型参数
组件 | 参数 | 值 | 单位 |
---|---|---|---|
光伏系统 | 峰值功率 | 5 | kW |
最大功率点电压 | 200 | V | |
最大功率点电流 | 25 | A | |
蓄电池系统 | 容量 | 100 | Ah |
标称电压 | 48 | V | |
初始SOC | 50 | % | |
充电内阻 | 0.05 | Ω | |
放电内阻 | 0.03 | Ω | |
电网参数 | 电压 | 220 | V |
频率 | 50 | Hz | |
控制参数 | SOC下限 | 20 | % |
SOC上限 | 90 | % | |
高电价阈值 | 0.15 | USD/kWh |
仿真结果分析要点
功率平衡分析:
- 光伏发电与负载需求的匹配程度
- 电池充放电行为的合理性
- 电网交互的时机和功率大小
电池性能评估:
- SOC变化范围是否在安全区内
- 充放电深度和频率
- 循环效率计算
经济性分析:
- 峰谷电价套利效果
- 自发电量利用率
- 净电力成本
控制策略优化方向:
- 基于预测的优化控制
- 电池寿命模型集成
- 多目标优化(经济性 vs 电池寿命)
参考代码 蓄电池能量管理matlab的simulink仿真模型 youwenfan.com/contentalc/46595.html
这个完整的蓄电池能量管理系统仿真框架可以用于研究不同控制策略的有效性,评估系统经济性和可靠性,并为实际系统设计提供指导。