[求助]在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>
回复:(bff025)[求助]在SIMULINK框图中如何引用S-函...
只需用S-function模块,打开它并在其中设置上你编写的S-function模块的函数名 <BR><BR>和参数,就可以直接使用了 <BR> <P>谢谢哈<BR><BR>问题是我已经写了<BR><BR>仍然出现一样的问题<BR><BR>好像是我写的S函数哪里错了<BR><BR>我的执行函数<BR><BR>又出现<BR>??? Input argument 'flag' is undefined.<BR>的提示<BR><BR>怎么回事的说?!</P> 输出个数应该是6个。应该用sys(1)、sys(2)等表达 o wo ye bu dong 我觉得应该错在你路径名用了中文。。。Simulink对中文支持比 MATLAB还差,封装时中文也是没法用的。 把中文的文件夹都改成英文试试,看看行不行 应该是文件夹有一个是中文名的原因 sizes.DirFeedthrough= 1; %无直接反馈输入
试试看 正常的s函数 在m编译器里运行都会出现 Input argument 'flag' is undefined
赞
页:
[1]