手把手教你学simulink实例--基于Simulink的光伏发电系统建模与仿真
目录
基于Simulink的光伏发电系统建模与仿真
1. 背景介绍
1.1 项目背景
2. 系统建模与仿真
2.1 光伏发电系统组成
2.2 光伏阵列模型
2.3 DC-DC变换器模型
2.4 最大功率点跟踪(MPPT)控制器
2.5 逆变器模型
3. Simulink仿真模型
3.1 创建Simulink模型
3.2 添加模块
3.2.1 光伏阵列模块
3.2.2 MPPT控制器
3.2.3 DC-DC变换器
3.3 连接模块
3.4 设置仿真参数
4. 示例代码片段
5. 结束语
基于Simulink的光伏发电系统建模与仿真
1. 背景介绍
1.1 项目背景
光伏发电系统的主要作用是将太阳能转化为电能,并被归类为一种清洁能源技术
本项目旨在建立一个完整且精确的光伏发电系统模型,并涵盖光伏阵列、DC-DC变换器、逆变器以及最大功率点跟踪(MPPT)控制器等关键组件;随后借助仿真软件对系统的运行性能进行验证以确保设计的有效性
2. 系统建模与仿真
2.1 光伏发电系统组成
光伏发电系统通常由以下几个部分组成:
- 光伏系统的主要功能是将太阳能转化为直流电能。
- DC-DC转换器的作用是根据负载需求调节光伏阵列的输出电压。
- 逆变器的功能是将直流电转换为交流电以供电网或负载使用。
- MPPT控制器通过实时调整工作点来最大化光伏系统的输出功率。
- 该传感器网络用于采集光照强度、温度等关键环境参数。
2.2 光伏阵列模型
光伏阵列的输出特性可以用以下数学模型描述:
电流-电压关系
描述光伏阵列在不同光照强度和温度下的输出特性:
I=Iph−I0⋅[exp(V+I⋅Rsn⋅VT)−1]−V+I⋅RsRshI=Iph−I0⋅[exp(n⋅VTV+I⋅Rs)−1]−RshV+I⋅Rs
其中:
-
II:输出电流的符号
其中II被定义为电路中输出端的电流值。 -
VV:输出电压的符号
VV被定义为电路中输出端的电压值。 -
Iph(光生电流):光生效应产生的电流
Iph被定义为在光照作用下产生的光生电流量。 -
I0(二极管反向饱和电流):二极管反向工作时的饱和电流
I0被定义为二极管在反向截止状态下的饱和漏current. -
Rs(串联电阻):电路中的串联电阻
Rs被定义为连接在电源两端的串联电阻值。 -
Rsh(并联电阻):电路中的并联电阻
Rsh被定义为连接在电源两端并联使用的电阻值。 -
nn(二极管理想因子):二极管的理想因素
nn被定义为表征二极管理想特性的无量纲参数。 -
VTVT(热电压):温度相关的电压常数
VT VT被称为温度相关的基本电压常数。
光照强度与温度的重要性
光照强度与温度的重要性
Iph=Isc⋅GGrefIph=Isc⋅GrefG
Voc=Voc,ref⋅[1−α⋅(Tc−Tref)]Voc=Voc,ref⋅[1−α⋅(Tc−Tref)]
其中:
- GG: 真实的光照强度
- GrefGref: 基准光照下的入射光强
- TcTc: 电池工作状态下的温度
- TrefTref: 基准环境温度
- αα: 额定电压下的温控系数
2.3 DC-DC变换器模型
常见的DC-DC变换器拓扑结构有三种:boost型、buck型及buck-boost型电路。其中一种是boost变换器,在此情况下其数学模型描述为:
电感电流方程
L⋅dILdt=Vin−Vout⋅DL⋅dtdIL=Vin−Vout⋅D
输出电压方程
C⋅dVoutdt=IL1−D−IloadC⋅dtdVout=1−DIL−Iload
其中,DD 为占空比,LL 为电感值,CC 为电容值。
2.4 最大功率点跟踪(MPPT)控制器
为了动态优化光伏系统的发电效率并实现能效最大化,在系统运行过程中通过实时调整工作点来实现最佳能量捕获。现有技术中常用的有:
- 动态变化观测技术(P &O):通过动态调整充荷率并分析功率变化来定位最大输出功率位置。
- 增量式电导分析:基于光伏阵列的电导特性确定最佳输出位置。
- 模糊逻辑调节方法:采用预设的模糊逻辑关系模型用于自适应MPPT调节过程。
2.5 逆变器模型
逆变器可将直流电转换为交流电;常用的拓扑结构主要涉及单相全桥型和三相型设计;其控制策略主要包括:
- PWM技术:能够通过调节开关信号的时间比例来实现对电压波形的精准控制。
- PLL系统:确保逆变器输出频率与电网频率保持高度一致。
3. Simulink仿真模型
3.1 创建Simulink模型
- 打开MATLAB并新建一个Simulink模型文件。
- 定义模型名称为
PV_System.
matlab
深色版本
modelName = 'PV_System';
new_system(modelName);
open_system(modelName);
3.2 添加模块
3.2.1 光伏阵列模块
定义光伏阵列模型,模拟其输出特性。
matlab
深色版本
add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/PV_Array']);
set_param([modelName '/PV_Array'], 'Mask', 'on');
set_param([modelName '/PV_Array'], 'MaskDisplay', 'PV Array');
% 在Matlab Function中定义光伏阵列模型
function [I_out] = fcn(V_out, G, Tc)
% 参数初始化
Isc = 8; % 短路电流 (A)
Voc = 21; % 开路电压 (V)
Imp = 7; % 最大功率点电流 (A)
Vmp = 17; % 最大功率点电压 (V)
alpha = -0.004; % 开路电压温度系数
beta = 0.0005; % 短路电流温度系数
% 温度修正
Voc_temp = Voc * (1 + alpha * (Tc - 25));
Isc_temp = Isc * (1 + beta * (Tc - 25));
% 光照强度修正
Isc_light = Isc_temp * (G / 1000);
Imp_light = Imp * (G / 1000);
% 拟合输出电流
if V_out <= 0
I_out = Isc_light;
elseif V_out >= Voc_temp
I_out = 0;
else
I_out = polyval([Imp_light / (Vmp^2), -2*Imp_light/Vmp, Isc_light], V_out);
end
end
3.2.2 MPPT控制器
定义MPPT控制器,实现最大功率点跟踪。
matlab
深色版本
add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/MPPT_Controller']);
set_param([modelName '/MPPT_Controller'], 'Mask', 'on');
set_param([modelName '/MPPT_Controller'], 'MaskDisplay', 'MPPT Controller');
% 在Matlab Function中定义MPPT控制器
function [D] = fcn(P_prev, P_curr, D_prev)
if P_curr > P_prev
D = D_prev + 0.01; % 增加占空比
else
D = D_prev - 0.01; % 减小占空比
end
end
3.2.3 DC-DC变换器
定义DC-DC变换器模型,调节光伏阵列输出电压。
matlab
深色版本
add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/DC_DC_Converter']);
set_param([modelName '/DC_DC_Converter'], 'Mask', 'on');
set_param([modelName '/DC_DC_Converter'], 'MaskDisplay', 'DC-DC Converter');
% 在Matlab Function中定义DC-DC变换器
function [V_out] = fcn(V_in, D)
V_out = V_in / (1 - D);
end
3.3 连接模块
将各个模块按照系统框图连接起来。
matlab
深色版本
% 连接光伏阵列到DC-DC变换器
add_line(modelName, '/PV_Array/1', '/DC_DC_Converter/1', 'autorouting', 'on');
% 连接DC-DC变换器到MPPT控制器
add_line(modelName, '/DC_DC_Converter/1', '/MPPT_Controller/1', 'autorouting', 'on');
3.4 设置仿真参数
设置仿真时间为60秒。
matlab
深色版本
set_param(modelName, 'StopTime', '60'); % 设置仿真时间为60秒
save_system(modelName); % 保存模型
4. 示例代码片段
以下是一个完整的基于Simulink的光伏发电系统仿真过程。
matlab
深色版本
% Step 1: Define model name and create a new system
modelName = 'PV_System';
new_system(modelName);
open_system(modelName);
% Step 2: Add PV Array Module
add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/PV_Array']);
set_param([modelName '/PV_Array'], 'Mask', 'on');
set_param([modelName '/PV_Array'], 'MaskDisplay', 'PV Array');
% 在Matlab Function中定义光伏阵列模型
function [I_out] = fcn(V_out, G, Tc)
% 参数初始化
Isc = 8; % 短路电流 (A)
Voc = 21; % 开路电压 (V)
Imp = 7; % 最大功率点电流 (A)
Vmp = 17; % 最大功率点电压 (V)
alpha = -0.004; % 开路电压温度系数
beta = 0.0005; % 短路电流温度系数
% 温度修正
Voc_temp = Voc * (1 + alpha * (Tc - 25));
Isc_temp = Isc * (1 + beta * (Tc - 25));
% 光照强度修正
Isc_light = Isc_temp * (G / 1000);
Imp_light = Imp * (G / 1000);
% 拟合输出电流
if V_out <= 0
I_out = Isc_light;
elseif V_out >= Voc_temp
I_out = 0;
else
I_out = polyval([Imp_light / (Vmp^2), -2*Imp_light/Vmp, Isc_light], V_out);
end
end
% Step 3: Add MPPT Controller
add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/MPPT_Controller']);
set_param([modelName '/MPPT_Controller'], 'Mask', 'on');
set_param([modelName '/MPPT_Controller'], 'MaskDisplay', 'MPPT Controller');
% 在Matlab Function中定义MPPT控制器
function [D] = fcn(P_prev, P_curr, D_prev)
if P_curr > P_prev
D = D_prev + 0.01; % 增加占空比
else
D = D_prev - 0.01; % 减小占空比
end
end
% Step 4: Add DC-DC Converter
add_block('simulink/User-Defined Functions/Matlab Function', [modelName '/DC_DC_Converter']);
set_param([modelName '/DC_DC_Converter'], 'Mask', 'on');
set_param([modelName '/DC_DC_Converter'], 'MaskDisplay', 'DC-DC Converter');
% 在Matlab Function中定义DC-DC变换器
function [V_out] = fcn(V_in, D)
V_out = V_in / (1 - D);
end
% Step 5: Connect Blocks
add_line(modelName, '/PV_Array/1', '/DC_DC_Converter/1', 'autorouting', 'on');
add_line(modelName, '/DC_DC_Converter/1', '/MPPT_Controller/1', 'autorouting', 'on');
% Step 6: Set Simulation Parameters
set_param(modelName, 'StopTime', '60');
save_system(modelName);
5. 结束语
本项目文档旨在详细阐述如何利用Simulink平台搭建光伏发电系统的仿真模型,并实现相应的控制系统设计。该文档旨在帮助读者更好地理解并灵活运用相关技术方案,并为其在实际工程中的应用提供有益的参考依据。如需进一步优化或拓展功能,则可以根据具体的应用需求进行相应地调整和完善。
