声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1730|回复: 2

[基本模块类] 关于S函数设定参数得问题,求助~~~

[复制链接]
发表于 2007-6-16 23:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
现在我要做一个算法仿真模型,就是要求输入一些参数值,根据这些参数值带入公式计算出需要得值
function [sys,x0,str,ts]=PM(t,x,u,flag,b,c,w,A,a)
b,c,w,A,a就是需要输入得参数,我在参数对话框中给值,那应该是在MASK S-Function中添加需要得参数,然后点击模块就可以赋值得吧?
还有就是S-Function Parameters 那需要怎么设置吗?
我的这个S函数也是不需要输入的,我想得到3个输出,这又怎么实现拉?我试着弄了下,大家帮我看看是这样设定的吗?
function [sys,x0,str,ts]=PM(t,x,u,flag,b,c,w,A,a)
switch flag
    case 0
        [sys,x0,str,ts]=mdlInitializeSizes(b,c,w,A,a)
    case 3
        sys=mdlOutputs(t,x,u,b,c,A)
    case {1,2,4,9}
        sys=[]
    otherwise
        error(['Unhandled flag=',num2str(flag)])
end
function [sys,x0,str,ts]=mdlInitializeSizes(b,c,w,A,a)
sizes=simsizes
sizes.NumContStates=0
sizes.NumDiscStates=0
sizes.NumOutputs=3
sizes.NumInputs=0
sizes.DirFeedthrough=0
sizes.NumSampleTimes=1
sys=simsizes(sizes)
x0=[]
str=[]
ts=[-1 0]
function sys=mdlOutputs(t,x,u,b,c,w,A,a)
d=pi*c/(4*sin(b))
q=atan(sqrt((A^2-c^2)/c))
最后我想输出3个值 分别是kp,ki,kd
kp=4*d*sin(b+q)/(pi*A);ki=a*tan(b+q-pi/2)/2*w+sqrt(a^2*tan(b+q-pi/2)^2+4*a) /(2*w);
kd=tan(b+q-pi/2)/2*w+sqrt(a^2*tan(b+q-pi/2)^2+4*a)/(2*a*w)
这是一个根据一种算法求解PID三个参数的。
回复
分享到:

使用道具 举报

 楼主| 发表于 2007-6-16 23:11 | 显示全部楼层
sizes.NumSampleTimes=1
这里应该是0吧
发表于 2007-6-18 10:48 | 显示全部楼层
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-29 09:42 , Processed in 0.054025 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表