资源简介
MPPT算法,具体参数看仿真模型,绝对好用,来着师兄师姐的仿真论文
代码片段和文件信息
function [sysx0strts] = PV_array_MPPT_Boost_420V(txuflag)
switch flag
case 0
[sysx0strts] = mdlInitializeSizes;
case 2
sys = mdlUpdate(txu);
case 3
sys = mdlOutputs(txu);
case {149}
sys =[];
otherwise
error([‘unhandled flag = ‘num2str(flag)]);
end
function [sysx0strts] = mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 4;
sizes.NumOutputs = 1;
sizes.NumInputs = 2;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 =[0 0 0.5 0];
str =[];
ts =[2e-3 0]; %步长为1e-6
function sys = mdlUpdate(txu)
% 增量电导法MPPT
dU=u(1)-x(1);
dI=u(2)-x(2);
slope=0;
k1=0.01; %占空比步长
%变步长
Pnew=u(1)*u(2);
P=x(1)*x(2);
dP=Pnew-P;
if dU~=0
m=dP/dU;
k1=0.01*abs(m);
end
%G+dGI大于零时应该减小D;小于零时增大D
if dU==0
if dI==0
slope = 0;
elseif dI > 0
slope = -1;
elseif dI < 0
slope = 1;
end
else
if (dI/dU) ==(-u(2)/u(1))
slope = 0;
elseif (dI/dU) >(-u(2)/u(1))
slope = -1;
elseif (dI/dU) <(-u(2)/u(1))
slope = 1;
end
end
%找到最大功率点的判断
if abs(u(2)+u(1)*dI/dU)<2e-5
x(4)=1;
else
x(4)=0;
end
if x(4)==0
x(3)=x(3)+k1*slope; %更新占空比值
else
x(3)=1-u(1)/420;
end
x(1)=u(1);
x(2)=u(2);
sys=[x(1) x(2) x(3) x(4)];
function sys = mdlOutputs(txu)
% if x(3)<=0
% x(3)=0.1;
% end
% if x(3)>=0.8
% x(3)=0.8;
% end
sys=x(3); % 输出占空比值
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-10-28 21:39 PV_array_MPPT_Boost_5320W_420V\
文件 1746 2014-11-26 18:05 PV_array_MPPT_Boost_5320W_420V\PV_array_MPPT_Boost_420V.m
文件 75377 2014-11-26 18:05 PV_array_MPPT_Boost_5320W_420V\PV_array_MPPT_Boost_5320W_420V.mdl
- 上一篇:毕业论文矩阵初等变换的若干应用
- 下一篇:爆破字典用户名top500
评论
共有 条评论