探索光伏PV模型并网及储能的Simulink之旅
光伏PV模型并网Matlab/simulink光伏发电+储能simulink模型(光伏发电MPPT采用扰动观察法/变步长扰动观察法/电导增量法) ~
在可再生能源领域,光伏发电日益成为研究和应用的焦点。今天咱们就来聊聊如何在Matlab/Simulink中搭建光伏PV模型并网以及带储能的系统,并且深入探讨下MPPT(最大功率点跟踪)算法的实现。
一、光伏PV模型搭建
在Simulink里,我们可以通过各种模块来构建光伏PV模型。首先,要明确光伏电池的特性方程,它一般遵循以下形式:
\[I = I{ph} - I0\left[\exp\left(\frac{q(V + IRs)}{AKT}\right)-1\right]-\frac{V + IRs}{R_{sh}}\]
这里 \(I\) 是光伏电池输出电流,\(I{ph}\) 是光生电流,\(I0\) 是反向饱和电流,\(q\) 是电子电荷量,\(V\) 是光伏电池输出电压,\(Rs\) 是串联电阻,\(A\) 是二极管理想因子,\(K\) 是玻尔兹曼常数,\(T\) 是温度,\(R{sh}\) 是并联电阻。
在Simulink中,我们可以利用 “PV Array” 模块来方便地搭建光伏模型。这个模块参数设置中,我们可以输入光伏电池的关键参数,比如开路电压、短路电流、最大功率点电压、最大功率点电流等,这样就能快速模拟出光伏阵列在不同光照和温度条件下的输出特性。
二、MPPT算法实现
扰动观察法
扰动观察法(P&O)是最常用的MPPT算法之一。其基本原理就是通过不断地扰动光伏阵列的工作点(一般是改变占空比来调整电压),然后观察功率的变化方向。如果功率增加,就朝着这个扰动方向继续,反之则反向扰动。
下面是一段简单的扰动观察法Matlab代码示例(以在DC - DC变换器中实现为例):
% 初始化参数
P_old = 0;
duty = 0.5; % 初始占空比
step_size = 0.01; % 扰动步长
while true
% 通过DC - DC变换器模型计算当前功率P
V_out = calculate_V_out(duty);
I_out = calculate_I_out(duty);
P = V_out * I_out;
if P > P_old
duty = duty + step_size;
else
duty = duty - step_size;
end
P_old = P;
end
在这段代码中,我们首先初始化了一些参数,包括上一时刻功率 \(P{old}\),初始占空比 \(duty\) 和扰动步长 \(stepsize\)。然后在循环中,通过当前占空比计算输出电压 \(V{out}\) 和输出电流 \(I{out}\),进而得到当前功率 \(P\)。根据功率比较结果,决定占空比是增加还是减小。
变步长扰动观察法
变步长扰动观察法是对传统扰动观察法的改进。传统方法在最大功率点附近会频繁振荡,导致能量损失。变步长的思路就是在远离最大功率点时采用大步长快速搜索,接近最大功率点时采用小步长以减少振荡。
光伏PV模型并网Matlab/simulink光伏发电+储能simulink模型(光伏发电MPPT采用扰动观察法/变步长扰动观察法/电导增量法) ~
代码实现如下:
% 初始化参数
P_old = 0;
duty = 0.5;
step_size_big = 0.05;
step_size_small = 0.005;
delta_P_threshold = 0.1; % 功率变化阈值
while true
V_out = calculate_V_out(duty);
I_out = calculate_I_out(duty);
P = V_out * I_out;
if abs(P - P_old) > delta_P_threshold
if P > P_old
duty = duty + step_size_big;
else
duty = duty - step_size_big;
else
if P > P_old
duty = duty + step_size_small;
else
duty = duty - step_size_small;
end
P_old = P;
end
这里我们新增了大步长 \(step\size\big\)、小步长 \(step\size\small\) 和功率变化阈值 \(delta\P\threshold\)。根据功率变化量与阈值的比较,决定采用大步长还是小步长进行扰动。
电导增量法
电导增量法基于光伏电池的功率对电压的导数为零这一特性来跟踪最大功率点。其公式为:
\[\frac{dP}{dV}=I + V\frac{dI}{dV}=0\]
即当 \(\frac{dI}{dV}=-\frac{I}{V}\) 时,光伏电池工作在最大功率点。
在Simulink中实现电导增量法,我们需要实时计算电流、电压的变化量以及当前的电导值。下面是一段简单的计算逻辑代码示例:
% 假设已经获取到当前电压V和电流I
% 以及上一时刻电压V_old和电流I_old
dV = V - V_old;
dI = I - I_old;
G = I / V; % 当前电导
dG = dI / dV; % 电导增量
if dG == -G
% 已经在最大功率点,保持当前状态
elseif dG > -G
% 增大电压,例如调整DC - DC变换器占空比使电压上升
else
% 减小电压
end
这段代码通过计算电压、电流的变化量得到电导增量 \(dG\) 和当前电导 \(G\),根据两者关系来决定是增大还是减小光伏阵列的工作电压。
三、并网及储能模型搭建
并网
光伏系统要接入电网,需要通过逆变器将直流电转换为交流电,并且要保证输出交流电的频率、相位和幅值与电网匹配。在Simulink中,我们可以使用 “Three - Phase Voltage Source Inverter” 模块来实现这一功能。我们需要对逆变器进行控制,常见的控制策略有PQ控制等,通过控制逆变器的触发脉冲,实现并网功能。
储能
储能系统在光伏发电中起着平滑功率波动、提高电能质量的重要作用。在Simulink里,我们可以使用 “Battery” 模块来模拟储能电池。同时,需要设计合理的充放电控制策略,比如基于荷电状态(SOC)的控制。当光伏功率过剩且电池SOC未达到上限时,电池充电;当光伏功率不足或负载功率波动较大时,电池放电。
% 假设已经获取到光伏功率P_pv、负载功率P_load和电池SOC
if P_pv > P_load && SOC < 0.9
% 电池充电逻辑,例如调整DC - DC变换器占空比为充电模式
elseif P_pv < P_load || SOC < 0.2
% 电池放电逻辑
else
% 保持当前状态
end
这段代码简单展示了基于SOC的储能充放电控制逻辑。
总之,通过在Matlab/Simulink中精心搭建光伏PV模型并网及储能系统,并合理选择MPPT算法,我们能有效地模拟和研究光伏发电系统的性能,为实际应用提供有力的理论支持和技术参考。希望大家在这个领域不断探索,让光伏发电更好地服务于我们的生活。

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)