1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/ZJWVmpZy
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
最大功率点跟踪系统是一种通过调节电气模块的工作状态,使光伏板能够输出更多电能的电气系统能够将太阳能电池板发出的直流电有效地贮存在蓄电池中,可有效地解决常规电网不能覆盖的偏远地区及旅游地区的生活和工业用电,不产生环境污染。
4.部分源码
function [sys,x0,str,ts] = MPPTsfun(t,x,u,flag)
switch flag,
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
%case 1,
%sys=mdlDerivatives(t,x,u);
%case 2,
%sys=mdlUpdate(t,x,u);
case 3,
sys=mdlOutputs(t,x,u);
%case 4,
%sys=mdlGetTimeOfNextVarHit(t,x,u);
case {1,2,4,9} %unused flag value
sys=[];
%sys=mdlTerminate(t,x,u);
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 2;
sizes.NumInputs = 7;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
.........................................................................
function sys=mdlOutputs(t,x,u)
%I=u(4)*(1-u(6)*(exp((u(7)-u(2))/(u(5)*u(1)))-1))+u(3);
k1=0.001; % voltage search step size
u1=0;
% u1=u(7); %init voltage
p1=u1*(u(4)*(1-u(6)*(exp((u1-u(2))/(u(5)*u(1)))-1))+u(3));
u2=u1+k1;
p2=u2*(u(4)*(1-u(6)*(exp((u2-u(2))/(u(5)*u(1)))-1))+u(3));
k2=(p2-p1)/(u2-u1);
U=(u1+u2)/2 ;
k=abs(k2);
while k>0.001 % xie liu "k<=0.1,(5.7 du)" shi, stop search
% if "k" selected too small ,it will take a lot of time to search
if k2>0
u1=u1+k1;
p1=u1*(u(4)*(1-u(6)*(exp((u1-u(2))/(u(5)*u(1)))-1))+u(3));
u2=u1+k1;
p2=u2*(u(4)*(1-u(6)*(exp((u2-u(2))/(u(5)*u(1)))-1))+u(3));
k2=(p2-p1)/(u2-u1);
U=(u1+u2)/2;
k=abs(k2);
else
u1=u1-k1;
p1=u1*(u(4)*(1-u(6)*(exp((u1-u(2))/(u(5)*u(1)))-1))+u(3));
u2=u1-k1;
p2=u2*(u(4)*(1-u(6)*(exp((u2-u(2))/(u(5)*u(1)))-1))+u(3));
k2=(p2-p1)/(u2-u1);
U=(u1+u2)/2;
k=abs(k2);
end
end
if U>=320 % Voc=44.2V
sys=[0;320]; % Imax=0;Umax=44.2;
else
sys=[U;u(4)*(1-u(6)*(exp((u2-u(2))/(u(5)*u(1)))-1))+u(3)];
end
A372