调用S函数SIMULINK时如何填写S-Function Parameters项?
<P><br>请教各位老师我调用了一个S函数,在SIMULINK仿真时弹出Block Parameters:S-Function对话框需要输入S-Function Name和S-Function Parameters两个项目,请问S-Function Parameters应该如何填写呢?<br>最好您给给我讲解一下这个S-Function Parameters指的是什么,以免下次同样的问题困惑我和其他遇到这个问题的其他初学者。我填入了t,x,u,flag,出现错误提示说没有定义这些变量,呵呵...郁闷中...</P><P>我调用的S函数源程序为:</P>
<P>function = spacemodel(t,x,u,flag)</P>
<P>switch flag,<br>case 0,<br> =mdlInitializeSizes;<br>case 1,<br> sys=mdlDerivatives(t,x,u);<br>case 3,<br> sys=mdlOutputs(t,x,u);<br>case {2,4,9}<br> sys=[];<br>otherwise<br> error(['Unhandled flag=',num2str(flag)]);<br>end</P>
<P>function =mdlInitializeSizes<br>sizes=simsizes;<br>sizes.NumContStates=2;<br>sizes.NumDiscStates=0;<br>sizes.NumOutputs=3;<br>sizes.NumInputs=2;<br>sizes.DerFeedthrough=1;<br>sizes.NumSampleTimes=1; %At least one sample time is needed<br>sys=simsizes(sizes);<br>x0=;<br>str=[];<br>ts=;</P>
<P>function sys=mdlDerivatives(t,x,u)</P>
<P>%Servo system Parameters<br>J=0.6;Ce=1.2;Km=6;<br>Ku=11;R=7.77;<br>Kv=2.0;</P>
<P>alfa=0.01;<br>a1=1.0; %Effect on the shape of friction curve<br>Fm=20;<br>Fc=15;<br>Kv=2.0;</P>
<P>F=J*u(1);<br>if abs(x(2))<=alfa<br> if F>Fm<br> Ff=Fm;<br> elseif F<-Fm<br> Ff=-Fm;<br> else<br> Ff=F;<br> end<br>end<br>if x(2)>alfa<br> Ff=Fc+(Fm-Fc)*exp(-a1*x(2))+Kv*x(2);<br>elseif x(2)<-alfa<br> Ff=-Fc-(Fm-Fc)*exp(a1*x(2))+Kv*x(2);<br>end</P>
<P>sys(1)=x(2);<br>sys(2)=-Km*Ce/(J*R)*x(2)+Ku*Km*u(2)/(J*R)-Ff/J;</P>
<P>function sys=mdlOutputs(t,x,u)</P>
<P>%Servo system Parameters<br>J=0.6;Ce=1.2;Km=6;<br>Ku=11;R=7.77;<br>Kv=2.0;</P>
<P>alfa=0.01;<br>a1=1.0; %Effect on the shape of friction curve<br>Fm=20;<br>Fc=15;<br>Kv=2.0;</P>
<P>F=F*u(1);<br>if abs(x(2))<=alfa<br> if F>Fm<br> Ff=Fm;<br> elseif F<-Fm<br> Ff=-Fm;<br> else<br> Ff=F;<br> end<br>end<br>if x(2)>alfa<br> Ff=Fc+(Fm-Fc)*exp(-a1*x(2))+Kv*x(2);<br>elseif x(2)<-alfa<br> Ff=-Fc-(Fm-Fc)*exp(a1*x(2))+Kv*x(2);<br>end</P>
<P>sys(1)=x(1); %Angle<br>sys(2)=x(2); %Angle speed<br>sys(3)=Ff; %Friction force<br></P>
[此贴子已经被电力仿真于2006-6-6 20:58:24编辑过]
S-Function Parameters 里的参数应该在S函数里定义<BR>这个是M形的S函数吗?<BR>我只学过C MEX S函数,里面对于参数的定义有标准的格式
回复:(dayu0518)调用S函数SIMULINK时如何填写S-Fu...
我想应该是 sys,x0,str,ts吧<BR>我也只用c格式的s函数, S-Function Parameters里填的参数是定义函数里新增的参数如:function=sfun(t,x,u,flag,damp),S-Function Parameters这一项里填damp 谢谢,我也在用S函数编程,遇到了同样的问题。 原帖由 leafsong 于 2006-8-20 16:57 发表
S-Function Parameters里填的参数是定义函数里新增的参数
如:function=sfun(t,x,u,flag,damp),S-Function Parameters这一项里填damp
这是正解 原帖由 dayu0518 于 2006-6-6 18:51 发表 http://www.chinavib.com/forum/images/common/back.gif
请教各位老师我调用了一个S函数,在SIMULINK仿真时弹出Block Parameters:S-Function对话框需要输入S-Function Name和S-Function Parameters两个项目,请问S-Function Parameters应该如何填写呢?最好您给给我讲 ...
我觉得是楼主在输入伺服系统变量的时候缺少定义,可以共同研究一下 上面写入.m文件名(不要加.m)。。
下面可以不填。t是初始时间。。x是三种状态传递的参数。。flag是三种状态的标志。。u是该模块的输入。。所以都不用填。
如果你要认为的加入一些起始参数,如自己设定抽样时间,可以在函数后面添加。如
function = sfuntmpl(t,x,u,flag,ts)。。那么在S-Function Parameters项中就填入ts的值
页:
[1]