您现在的位置:首页 >> 智能控制 >> 内容

基于simulink的MPPT控制器性能仿真,MPPT使用S函数实现

时间:2023/2/16 22:56:11 点击:

  核心提示:A372,包括程序操作录像...

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

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168