[已答复] 光伏电池MPPT的S函数老师出错,希望高手帮忙看下

[复制链接]
若叶 发表于 2011-11-3 19:39:56
function [sys,x0,str,ts] =Mppt(t,x,u,flag,Ur)

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,Ur);

case 4,
    sys=mdlGetTimeOfNextVarHit(t,x,u);

case 9,
  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  = 3;
sizes.NumOutputs     = 1;
sizes.NumInputs      = 2;
sizes.DirFeedthrough = 1;%有一个直接馈入
sizes.NumSampleTimes = 1;%至少需要一个采样时间  
sys = simsizes(sizes);
x0  = [0,0,0.45];
str = [];
ts = [0.01 0];

function sys=mdlDerivatives(t,x,u)
    sys = [];

function sys=mdlUpdate(t,x,u)
    sys=[u(1);u(2);Ur];

function sys=mdlOutputs(t,x,u)  
    Ur=0.45;%为参考电压
    u(1) = cellmat(V_Input(1));
    u(2) = cellmat(I_Input(2));
    V = u(1);
    I = u(2);
    di=u(1)-x(1);
    dv=u(2)-x(2);   
    if dv==0
        if di==0
            Ur=Ur;
        else
         if di>0
              Ur=Ur+dv;
          else
              Ur=Ur-dv;
          end
        end
        
    else
        s=u(2)+u(1)*(u(2)-x(2))/(u(1)-x(1));
         if s==0
             Ur=Ur;
         else if s<0
             Ur=Ur-dv;
           else
              Ur=Ur+dv;
            end
        end
    end
          sys =Ur;


function sys=mdlGetTimeOfNextVarHit(t,x,u)

           sampleTime = 1;   
           sys = t + sampleTime;

我封装了 然后接在图里仿真 老出现错误:Error evaluating parameter 'Ur' in 'sfunMppt/Mppt/S-Function': Undefined function or variable 'Ur'.
请高手指点 ,谢谢啦

6 条回复


lancia 发表于 2011-11-6 16:46:07

回复 1# 若叶 的帖子

function sys=mdlOutputs(t,x,u)  
的定义和
case 3
sys=mdlOutputs(t,x,u,Ur);

不一样,加上Ur试一下

若叶 发表于 2011-11-7 14:56:38
好的 我试下 谢谢了哦

若叶 发表于 2011-11-7 16:11:13

回复 2# lancia 的帖子

我改了 还是不行:'( :'(

Liyihai 发表于 2012-1-4 10:51:06

回复 4# 若叶 的帖子

无奈,我也常常遇到这种问题

Liyihai 发表于 2012-1-4 11:01:00

回复 1# 若叶 的帖子

将sys=mdlOutputs(t,x,u,Ur);中的Ur去掉即可。

Liyihai 发表于 2012-1-4 11:03:11

回复 1# 若叶 的帖子

请问u(1) = cellmat(V_Input(1));中的cellmat(V_Input(1));是什么?貌似没有定义,因此算改正了原来的错误,还是通过不了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表