声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1115|回复: 2

小弟请教一个关于S函数的问题

[复制链接]
发表于 2007-5-3 19:58 | 显示全部楼层 |阅读模式

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

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

x
错误是:Output returned by S-function 'chap_1s' in block 'chap10_1/S-Function' during flag=3 call must be a real vector of length 1
S函数控制程序是:chap_1s.m
function[sys,x0,str,ts] = spacemodel(t,x,u,flag)
switch flag,
    case 0,
       [sys,x0,str,ts]=mdlInitializeSizes;
    case 3,
        sys=mdlOutputs(t,x,u);
    case{2,4,9}
        sys=[];
    otherwise
        error(['Unhandled flag = ',num2str(flag)]);
end
function [sys,x0,str,ts] = mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 0;
sizes.NumOutputs    = 1;
sizes.NumInputs     = 3;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes =1; % At least one sample time is needed
sys = simsizes(sizes);
x0 = [];
str = [];
ts = [0 0];
function sys=mdlOutputs(t,x,u)
g=9.8;
m=1;
l=0.25;
d=2.0;
a=20.0;b=15.0;
I=4/3*m*l^2;
A=1.0;F=1.0;
r=u(1);
x1=u(2);
x2=u(3);
dr=A*F*2*pi*cos(F*2*pi*t);
ddr=-A*(F*2*pi)^2*sin(2*pi*t);
e=x1-r;
de=x2-dr;
tol=(d-a*I)*de-b*I*e+I*ddr+d*dr+m*g*l*cos(x1);
sys(1)=tol;
S函数被控制程序是:chap_1plant.m
function[sys,x0,str,ts] = spacemodel(t,x,u,flag)
switch flag,
    case 0,
        [sys,x0,str,ts]=mdlInitializeSizes;
    case 1,
        sys=mdlDerivatives(t,x,u);
    case 3,
        sys=mdlOutputs(t,x,u);
    case{2,4,9}
        sys=[];
    otherwise
        error(['Unhandled flag = ',num2str(flag)]);
end
function[sys,x0,str,ts] = mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates =2;
sizes.NumDiscStates =0;
sizes.NumOutputs    =2;
sizes.NumInputs    =1;
sizes.DirFeedthrough =0;
sizes.NumSampleTimes =1;
sys = simsizes(sizes);
x0 = [0;0];
str = [];
ts = [0 0];
function sys=mdlDerivatives(t,x,u)
g=9.8;
m=1;
l=0.25;
d=2.0;
I=4/3*m*l^2;
tol=u;
sys(1)=x(2);
sys(2)=1/I*(-d*x(2)-m*g*l*cos(x(1))+tol);
function sys=mdlOutputs(t,x,u)
sys(1)=x(1);
sys(2)=x(2);
模型如下:

chap10_1.mdl

12.72 KB, 下载次数: 16

回复
分享到:

使用道具 举报

 楼主| 发表于 2007-5-3 20:52 | 显示全部楼层

希望懂这方面的高手指点一下!!

希望有高手指点一下!!性命攸关!!!:'(
发表于 2007-7-12 10:39 | 显示全部楼层
把sizes.DirFeedthrough = 0改为1试试看
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-21 14:50 , Processed in 0.058401 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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