声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2389|回复: 2

[控制系统类] 询问一个非线性系统s函数的正确写法

[复制链接]
发表于 2008-6-27 20:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
小弟在做课程设计的时候,要设计一个双容水柜的控制器,但是这个模型是非线性连续系统,
下面是我自己写的s函数,当仿真的时候,无论输入怎么变化,输出图形都不变化,不知道原因,请各位大侠帮忙解决一下!谢谢!s函数如下:

function [sys,x0,str,ts] = mysh(t,x,u,flag)
Cv2=10.4;
Cv3=11.79;
A1=50;
A2=57;

switch flag,

  case 0
    [sys,x0,str,ts] = mdlInitializeSizes(Cv2,Cv3,A1,A2);

  case 1      
      sys=mdlDerivatives(t,x,u,Cv2,Cv3,A1,A2);
        
  case 3                                                
    sys = mdlOutputs(t,x,u,Cv2,Cv3,A1,A2);

  case {2,4,9}                                                
sys = [];
otherwise
    error(['Unhandled flag = ',num2str(flag)]);

end

function [sys,x0,str,ts] = mdlInitializeSizes(Cv2,Cv3,A1,A2)

sizes = simsizes;
sizes.NumContStates  = 2;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 1;
sizes.NumInputs      = 1;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;

sys = simsizes(sizes);

x0  = [50; 0];
str = [];
ts  = [0 0];

function sys=mdlDerivatives(t,x,u,Cv2,Cv3,A1,A2)
    sys(1)=x(2);
    sys(2)=(u/(A2*x(2)+Cv3*x(1)^0.5)-A1*Cv3*x(2)/(Cv2^2*x(1)^0.5)-1)*Cv2^2/(2*A1*A2)
   
function sys = mdlOutputs(t,x,u)

sys = x(1);

恳请各位大侠指出错误!
回复
分享到:

使用道具 举报

发表于 2010-4-28 16:21 | 显示全部楼层
没有人回答过?小弟也遇到类似问题了
发表于 2010-4-29 09:41 | 显示全部楼层
输入变化给一个变化的数值 比如正弦 不要是固定数值
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-23 18:51 , Processed in 0.072878 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表