




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
S函数用于自定义实现特定的算法,然后嵌入到simulink模块“S-Function”中用于仿真。一、主函数1、函数头:function sys,x0,str,ts=functionname(t,x,u,flag,p1,p2,p3.)1 sys,x0,str,ts为系统默认输出变量;2 t,x,u,flag为系统默认输入参数;3 p1,p2,p3.为用户可选输入变量;(如果定义函数时列表中有可选输入参数,在S-Function模块中要设置参数的值)4 s函数文件名要与函数名一致。2、 函数体switch flagcase 0sys,x0,str,ts=mdlInitializeSizes;case 1sys = mdlDerivatives(t,x,u);case 2sys = mdlUpdates(t,x,u);case 3sys = mdlOutputs(t,x,u);case 4sys = mdlGetTimeOfNextVarHit(t,x,u);case 9sys=mdlGetTimeOfNextVarHit(t,x,u);3、 说明对于特定的算法可能只用到某些flag状态的操作,对于不需要操作的flag状态,有两种处理方式,一种是在主函数中处理,另一种是在定义子函数时处理。以不需要进行flag为1、4和9状态时的操作为例分别进行说明。1 在主函数中处理在主函数中编写为:case 1,2,9 sys = ; 这样处理就不需要再编写对应状态的子函数。2 在子函数中处理在主函数中编写为:case 1sys = mdlDerivatives(t,x,u);case 4sys = mdlGetTimeOfNextVarHit(t,x,u);case 9sys=mdlGetTimeOfNextVarHit(t,x,u);在子函数中编写为:function sys = mdlUpdates(t,x,u)sys = ;function sys = mdlGetTimeOfNextVarHit(t,x,u)sys = ;function sys=mdlTerminate(t,x,u) sys = ;二、子函数算法的设计可能会用到状态变量x,那么根据x的性质可以将算法分为三大类:基于连续状态变量的算法、基于离散状态变量的算法和不基于状态变量的算法。接下来分别介绍这三种类型的算法设计。1、 基于连续状态变量的算法算法的整体设计思想是:=f1(t,x,u) y=f2(t,x,u)1 初始化(flag=0)设置使用的连续状态变量的个数:size.NumContStates = 设置不使用离散状态变量:size.NumDiscStates = 0设置输出变量的个数:size.NumOutputs = 设置输入变量的个数:size.NumInputs = 设置输出变量与输入变量是否相关:size.DirFeedthrough = 1或0设置采样时间的个数:size.NumSampleTimes = 用系统变量sys记录并返回上述设置:sys=simsize(sizes)设置状态变量的初始值:x0 = .设置保留变量str为空:str = 设置采样时间类型:ts = .示例:/*/function sys,x0,str,ts = mdlInitializeSizessizes = simsizes;sizes.NumContStates = 2;sizes.NumDiscStates = 0;sizes.NumOutputs = 2;sizes.NumInputs = 2;sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1;sys = simsizes(sizes);x0 = zeros(2,1);str = ;ts = 0 0;/*/2 状态变量求导(flag=1)子函数mdlDerivatives实现连续状态变量x导数的表达式:f1(t,x,u),用系统变量sys记录并传递给。在函数体中也可以编写其它操作,但是sys只返回给。示例:/*/function sys = mdlDerivatives(t,x,u,A,B,C,D)sys = A*x + B*u;/*/3 状态变量更新(flag=2)子函数mdlUpdates实现离散状态变量x的更新,因此在基于连续状态变量的算法中不需要这一步运算。4 输出变量计算(flag=3)子函数mdlOutputs实现输出变量y的表达式:f2(t,x,u),用系统变量sys记录并传递给y。在函数体中也可以编写其它操作,但是sys只返回给y。示例:/*/function sys = mdlOutputs( t,x,u,A,B,C,D )sys = A*x + B*u;/*/5 采样时刻计算(flag=4)子函数mdlGetTimeOfNextVarHit计算下一次采样时刻,只在离散采样系统中有用(即mdlInitializeSizes中的ts设置ts(1)不为0)。示例:/*/function sys = mdlGetTimeOfNextVarHit( t,x,u )sys = t + u(2);/*/6 Simulink仿真结束时的操作(flag=9)编写simulink仿真结束时刻进行的操作,用sys记录返回值,但是返回值传递给哪个变量不详,一般置sys=。示例:/*/function sys=mdlTerminate(t,x,u) sys = ;/*/2、 基于离散状态变量的算法算法的整体设计思想是:x(n+1)=f1(t,x,u) y(n)=f2(t,x,u)1 初始化(flag=0)设置不使用连续状态变量:size.NumContStates = 0设置使用的离散状态变量的个数:size.NumDiscStates = 设置输出变量的个数:size.NumOutputs = 设置输入变量的个数:size.NumInputs = 设置输出变量与输入变量是否相关:size.DirFeedthrough = 1或0设置采样时间的个数:size.NumSampleTimes = 用系统变量sys记录并返回上述设置:sys=simsize(sizes)设置状态变量的初始值:x0 = .设置保留变量str为空:str = 设置采样时间类型:ts = .示例:/*/function sys,x0,str,ts = mdlInitializeSizessizes = simsizes;sizes.NumContStates = 0;sizes.NumDiscStates = 2;sizes.NumOutputs = 2;sizes.NumInputs = 2;sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1;sys = simsizes(sizes);x0 = zeros(2,1);str = ;ts = 0 0;/*/2 状态变量求导(flag=1)子函数mdlDerivatives实现连续状态变量x的更新,计算f1(t,x,u),用系统变量sys记录并传递给。因此在基于离散状态变量的算法中不需要这一步运算。3 状态变量更新(flag=2)子函数mdlUpdates实现离散状态变量x导数的表达式:f1(t,x,u),用系统变量sys记录并传递给x(n+1)。在函数体中也可以编写其它操作,但是sys只返回给x(n+1)。示例:/*/function sys = mdlUpdates(t,x,u,A,B,C,D)sys = A*x + B*u;/*/4 输出变量计算(flag=3)子函数mdlOutputs实现输出变量y的表达式:f2(t,x,u),用系统变量sys记录并传递给y。在函数体中也可以编写其它操作,但是sys只返回给y。示例:/*/function sys = mdlUpdates( t,x,u,A,B,C,D )sys = A*x + B*u;/*/5 采样时刻计算(flag=4)子函数mdlGetTimeOfNextVarHit计算下一次采样时刻,只在离散采样系统中有用(即mdlInitializeSizes中的ts设置ts(1)不为0)。示例:/*/function sys = mdlGetTimeOfNextVarHit( t,x,u )sy
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老院奉献爱心倡议书
- 努力的感言15篇
- 2025年上半年安徽交控集团所属交控资源公司招聘7人考前自测高频考点模拟试题及答案详解参考
- 2025年安徽理工大学公开招聘电气与工程学院副院长考前自测高频考点模拟试题及一套完整答案详解
- 2025年《中国烟草》杂志社有限公司(中国烟草总公司传媒中心)招聘考前自测高频考点模拟试题及答案详解(网校专用)
- 2025年5月广西师范大学劳动合同制员工招聘1人考前自测高频考点模拟试题参考答案详解
- 2025年滨州市面向社会公开招聘硕博士高层次人才(168人)模拟试卷及参考答案详解1套
- 2025年海上风力发电场运维成本效益分析与技术创新策略报告
- 2025年数字人民币跨境支付技术合规性与监管策略研究报告
- 2025年环保型表面处理技术在环保产业政策支持下的创新发展报告
- 肿瘤微环境中的细胞间通信
- 麦肯锡商业计划书模板
- 项目经理职业生涯规划
- 除锈剂MSDS参考资料
- 高一英语选择性必修一课文及翻译(外研版新教材)中英Word精编文档
- 社会调查研究抽样课件
- 消防管道支架工程量计算表
- 应用成型的双面彩钢板复合风管代替传统的铁皮风管
- JJF(石化)006-2018漆膜弹性测定器校准规范
- 东华软件需求调研提纲汇总版与03-02同步
- 全国优质课一等奖初中数学《有理数的乘方》精品课件
评论
0/150
提交评论