simulink仿真中S函数提示我变量‘t'没有定义怎么回事啊?

Undefinedfunctionorvariable't'.这个是错误提示程序如下,是一个简单的控制器function[sys,x0,str,ts]=controler... Undefined function or variable 't'.这个是错误提示

程序如下,是一个简单的控制器
function [sys,x0,str,ts] = controler1(t,x,u,flag)
switch flag,
%%%%%%%%%%%%%%%%%%
% Initialization %
%%%%%%%%%%%%%%%%%%
case 0,
[sys,x0,str,ts]=mdlInitializeSizes;
%%%%%%%%%%%
% Outputs %
%%%%%%%%%%%
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 = 3;
sizes.NumInputs = 6;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
%
% initialize the initial conditions
%
x0 = [];
%
% str is always an empty matrix
%
str = [];
%
% initialize the array of sample times
%
ts = [0 0];
function sys=mdlOutputs(t,x,u)
G=[1 2];
K=[2 2];
deta=0.5;
numda=0.05;
x=[u(1);u(2)];
xd=[u(3);u(4)];
A=[0 1;-1 1];
Ad=[0 0.5;0.5 0.5];
B=[1;2];
s=G*(x-[1;1])-u(5)-u(6);%滑模
ueq = -inv(G*B)*(numda+deta*norm(G)*norm(x))*sign(s);
ucon = -K*x;
ut = ueq+ucon;%控制律
int1=G*(A-B*K)*x;%要积分后回来构成滑模的两项
int2=G*Ad*xd;
sys(1)=ut;
sys(2)=int1;
sys(3)=int2;
% end mdlOutputs
展开
 我来答
庚斌vg
推荐于2017-10-15 · TA获得超过1100个赞
知道小有建树答主
回答量:462
采纳率:100%
帮助的人:283万
展开全部
在你这个代码 窗口工具栏中打开tools, 点击edit data/ports,看看输入变量的设置是否正确。
八成是t这个量设置成了Parameter,而simulink仿真调用这个函数前又没有定义t是什么,所以报错了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式