上一篇博客介绍了光伏电池的数学模型,并应用FCS-MPC和扰动观察法进行了初步仿真,但还没有分析MPPT算法原理,这篇博客重点介绍这部分。
👉 【Simulink】光伏电池数学模型公式推导和初步仿真
1. 几种常见的MPPT方法简介
光伏电池最大功率点跟踪(Maximum Power Point Tracking, MPPT)是一种关键的技术,用于最大化光伏系统的能量转换效率。本文主要介绍三种主流的在线MPPT方法:恒定电压法 + 增量电导法(固定步长、变步长、增量电导+PI) + 扰动观察法(固定步长、变步长)
1️⃣ 恒定电压法(Constant Voltage)
该方法通过设定光伏电池的输出电压在一个预设值,以近似最大功率点。
光伏电池生产厂家一般会提供 U m U_m Um 的数值,通过采集光伏电池输出电压 U p v U_{pv} Upv 并与 U m U_m Um 数值进行比较和修正,达到最大功率输出。这种方法简单,但对光照变化的适应性较差,通常用于光照条件相对稳定的环境。
2️⃣ 增量电导法(Incremental Conductance)
该方法通过比较电导的增量和电流、电压的关系来确定最大功率点。
根据上一篇博客的仿真结果,在外部温度和光照强度一定时,P-U特性曲线有且仅有一个最大功率点
P
m
P_m
Pm,且其对应电压的导数等于零,即
d
P
/
d
U
dP/dU
dP/dU=0,而
P
=
U
I
P =UI
P=UI,则在最大功率点有:
d
P
d
U
=
I
+
U
d
I
d
U
=
0
\frac{d P}{d U}=I+U \frac{d I}{d U}=0
dUdP=I+UdUdI=0
由此可得出:
d
I
d
U
=
−
I
U
\frac{d I}{d U}=-\frac{I}{U}
dUdI=−UI
当曲线斜率 d I / d U < 0 dI/dU<0 dI/dU<0时,工作在最大功率点右侧,这时需要增大光伏电池输出电流的参考值来减小直流母线侧的电压,以达到最大功率点;当曲线斜率 d I / d U > 0 dI/dU>0 dI/dU>0时,工作在最大功率点左侧,这时需要减小光伏电池输出电流的参考值来增大直流母线侧的电压,以达到最大功率点。
注意电压扰动方向和占空比扰动方向是相反的。
3️⃣ 扰动观察法(Perturb and Observe, P&O)
该方法通过不断地扰动光伏电池的工作点,观察输出功率的变化。
如果功率增加,则持续扰动;若功率减少,则方向反向扰动。这种方法简单易实现,但在快速变化的环境条件下,可能导致功率过冲或不稳定。
2. Simulink仿真
电路和上一篇博客的设置类似。
1️⃣ 恒定电压法(Constant Voltage)
光伏输出电压:
光伏输出功率:
2️⃣ 增量电导法(Incremental Conductance)
固定步长
这里把占空比的扰动步长设为1e-6(固定)
写成子系统形式:
或者用 Matlab Function 编程,核心代码:
if dU==0
if dI==0
D=D_last;
elseif dI>0
D=D_last-deltaD;
else
D=D_last+deltaD;
end
elseif dI/dU+Ipv/Upv==0
D=D_last;
elseif dI/dU+Ipv/Upv>0
D=D_last-deltaD;
else
D=D_last+deltaD;
end
两种形式的效果都是一样的。
光伏输出电压:
光伏输出功率:
将步长从1e-6改成2e-6
光伏输出电压:
光伏输出功率:
变步长
当远离最大功率点时,P-U曲线斜率 ( d P / d U ) (dP/dU) (dP/dU) 的绝对值数值较大,而在接近最大功率点时数值较小,因此可以根据 ( d P / d U ) (dP/dU) (dP/dU) 作步长调整。
核心代码:
if dU~=0
deltaD=1e-6*0.01*abs(dP/dU);
end
if dU==0
if dI==0
D=D_last;
elseif dI>0
D=D_last-deltaD;
else
D=D_last+deltaD;
end
elseif dI/dU+Ipv/Upv==0
D=D_last;
elseif dI/dU+Ipv/Upv>0
D=D_last-deltaD;
else
D=D_last+deltaD;
end
步长:
光伏输出电压:
光伏输出功率:
增量电导+PI
在固定步长(1e-6)的增量电导原方法基础上,用 PI 减小误差
(
d
I
/
d
V
+
I
/
V
)
(dI/dV + I/V)
(dI/dV+I/V)
光伏输出电压:
光伏输出功率:
相比于原方法,跟踪速度加快了一点。
3️⃣ 扰动观察法(Perturb and Observe, P&O)
固定步长
这里把占空比的扰动步长设为1e-6(固定)
子系统形式:
Matlab Function 核心代码:
if dU==0 || dP==0
D=D_last;
elseif (dU*dP>0)
D=D_last-deltaD;
else
D=D_last+deltaD;
end
两种编程形式结果都是一样的。
光伏输出电压:
光伏输出功率:
变步长
同增量电导法,作步长变化。
if dU==0 || dP==0
D=D_last;
elseif (dU*dP>0)
D=D_last-deltaD;
else
D=D_last+deltaD;
end
步长:
光伏输出电压:
光伏输出功率:
当然,还有其他变步长的设置方式,大家可以自行探索。
参考
[1] 殷丽娟.基于模型预测控制的光伏系统最大功率点跟踪技术研究[D].湖北工业大学,2016.
[2] 孙泽涛.光伏发电系统中MPPT和并网控制策略的研究[D].安徽理工大学,2022.