s函数程序在这里,输入的量是转矩T和速度v.输出的是转矩。输入量用demux并在一起输入,程序里分别用u(2),u(1)表示。仿真输出似乎只是输出了倒数第二行的指令了,没有体现延时的情况。
请大家看看问题处在什么地方。具体的M文件和mdl文件在附件。
function [sys,x0,str,ts] = adhension(t,x,u,flag)
switch flag
case 0
[sys,x0,str,ts]=mdlInitializeSizes;
case 3
sys=mdlOutputs(t,x,u);
case { 1, 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; % dynamically sized
sizes.NumInputs = 2; % dynamically sized
sizes.DirFeedthrough = 1; % has direct feedthrough
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
str = [];
x0 = [];
ts = [-1 0];
function sys = mdlOutputs(t,x,u)
if u(1)>=10; %u(1)=v
u(2)=0; %u(2)=T
sys=u(2);
for i=1:3/0.00001 %time delay
end %time delay
u(2)=100;
sys=u(2);
else
u(2)=100;
sys=u(2);
end
2009-9-17 17:08 上传
点击文件名下载附件
6.52 KB, 下载次数: 4139