bff025 发表于 2006-4-4 16:42

[求助]在SIMULINK框图中如何引用S-函数?谢谢

<P>我用一个S-Function来引用,并且在S-Functionparameters里面注明引用的函数名是我已经写好的S函数 sfun:<BR><BR>function =sfun(t,x,u,flag,m0,m1,m2,j1,j2,l1,l2,l,f0,f1,f2,g0,g)<BR>switch flag<BR>    case 0                      %初始化<BR>      =mdlInitializeSizes;<BR>    case 1                      %计算连续状态<BR>      sys=mdlDerivatives(t,x,u,m0,m1,m2,j1,j2,l1,l2,l,f0,f1,f2,g0,g);<BR>    case 2                      %计算离散状态<BR>      sys=mdlUpdate(t,x,u);<BR>    case 3                      %计算输出<BR>      sys=mdlOutputs(t,x,u);<BR>    case 4                      %计算采样时间<BR>      sys=mdlGetTimeOfNextVarHit(t,x,u);<BR>    case 9                      %结束时的动作<BR>      sys=mdlTerminate(t,x,u);<BR>    otherwise                   %flag错误<BR>      error(['不正确的flag=',num2str(flag)]);<BR>end</P>
<P>function =mdlInitializeSizes()<BR>    sizes=simsizes;             %创建尺寸结构<BR>    sizes.NumContStates = 6;    %连续状态的个数为6<BR>    sizes.NumDiscStates = 0;    %离散状态的个数为0<BR>    sizes.NumOutputs    = 6;    %输出个数为6<BR>    sizes.NumInputs   = 1;    %输入个数为1<BR>    sizes.DirFeedthrough= 0;    %无直接反馈输入<BR>    sizes.NumSampleTimes= 1;    %至少需一个采样时间<BR>    sys = simsizes(sizes);<BR>    x0                  = ;   <BR>    str               = [];   %系统保留<BR>    ts                  = ;%初始化采样时间数组<BR>    <BR>function sys=mdlDerivatives((t,x,u,m0,m1,m2,j1,j2,l1,l2,l,f0,f1,f2,g0,g)<BR>%计算连续状态<BR>    O=zeros(3);<BR>    E=eye(3);<BR>    MATR = ;<BR>      <BR>    F=-;<BR>    <BR>    N=;<BR>    <BR>    G=;<BR>    <BR>    A=;<BR>    <BR>    N1=;<BR>    <BR>    sys = A*x+N1+G*u;<BR>    <BR>function sys=mdlUpdate(t,x,u)<BR>%无离散状态<BR>    sys = [];</P>
<P>function sys=mdlOutputs(t,x,u)<BR>    sys = x;</P>
<P>function sys=mdlGetTimeOfNextVarHit(t,x,u)<BR>    sampleTime = [];</P>
<P>function sys=mdlTerminate(t,x,u)<BR>    sys = [];<BR><BR><BR><BR>参数是用一个subsystem赋的,<BR><BR>可是老是出错:<BR><BR>Error in S-function block 'untitled/二阶倒立摆系统/S-Function': S-Function 'sfun' does not exist<BR><BR>初学,嘿嘿,请各位高手帮帮忙!<BR></P>

AaronSpark 发表于 2006-4-5 08:48

回复:(bff025)[求助]在SIMULINK框图中如何引用S-函...

只需用S-function模块,打开它并在其中设置上你编写的S-function模块的函数名 <BR><BR>和参数,就可以直接使用了 <BR>

bff025 发表于 2006-4-5 12:53

<P>谢谢哈<BR><BR>问题是我已经写了<BR><BR>仍然出现一样的问题<BR><BR>好像是我写的S函数哪里错了<BR><BR>我的执行函数<BR><BR>又出现<BR>??? Input argument 'flag' is undefined.<BR>的提示<BR><BR>怎么回事的说?!</P>

shuidongli 发表于 2006-4-7 10:40

输出个数应该是6个。应该用sys(1)、sys(2)等表达

honghuiqun 发表于 2006-7-15 13:37

o wo ye bu dong

PatrickLeu 发表于 2006-8-16 03:54

我觉得应该错在你路径名用了中文。。。
Simulink对中文支持比 MATLAB还差,封装时中文也是没法用的。

PatrickLeu 发表于 2006-8-16 03:55

把中文的文件夹都改成英文试试,看看行不行

lcf2005 发表于 2006-8-23 11:54

应该是文件夹有一个是中文名的原因

smoothfox 发表于 2006-9-23 16:05

sizes.DirFeedthrough= 1; %无直接反馈输入
试试看

smoothfox 发表于 2006-9-23 16:06

正常的s函数 在m编译器里运行都会出现 Input argument 'flag' is undefined

huweifa 发表于 2006-9-25 12:03

页: [1]
查看完整版本: [求助]在SIMULINK框图中如何引用S-函数?谢谢