Simulink中的自定义模块.doc

Simulink中的自定义模块.doc

ID:50179151

大小:63.00 KB

页数:12页

时间:2020-03-06

Simulink中的自定义模块.doc_第1页
Simulink中的自定义模块.doc_第2页
Simulink中的自定义模块.doc_第3页
Simulink中的自定义模块.doc_第4页
Simulink中的自定义模块.doc_第5页
资源描述:

《Simulink中的自定义模块.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、目录Fcn模块1MATLABFcn模块2SFunction(SystemFunction)21.函数的函数头32.函数分析33.带参数的S函数54.S函数格式及说明6simulink中子模块的封装11Fcn模块Fcn模块对它的输入进行指定的表达式运算。使用的表达式可由下面的一个或多个部分组成。u---模块的输入。如果u是一个向量,u(i)表示此向量的第i个元素;u(1)或者u表示第一个元素数值常数(例如表达式5.2*u)算术运算符(+-*/^例如表达式u^2+5.2)关系运算符(==!=><>=<=)--表达式返

2、回1,如果关系为真;否则返回0逻辑运算符(&&

3、

4、!)表达式返回1,如果关系为真;否则返回0括号数学函数(abs,acos,asin,atan,atan2,ceil,cos,cosh,exp,fabs,floor,hypot,ln,log,log10,pow,power,rem,sgn,sin,sinh,sqrt,tan,tanh.)Workspace中定义的变量–如果变量名字不是Matlab保留字符(比如sin),变量名字会被传递给Matab,从而在MaltabWorkspace中获取相应给定的值。矩阵或者向量

5、必须具体到其对应的元素。(比如A(1,1))注意:Fcn模块中使用的表达式不支持矩阵运算,同样不支持(:)符。模块输入可以是标量或者向量,但输出总是标量数值。MATLABFcn模块MATLABFcn模块对它的输入进行指定的Matlab函数或者表达式运算。输出尺寸必须和模块中定义的尺寸相符,否则报错。下面是MATLABFcn模块中可以使用的有效表达式sinatan2(u(1),u(2))u(1)^u(2)注意:同Fcn模块相比,在仿真中MATLABFcn模块速度要慢,因为它需要在每个积分步骤中调用Maltab编译器

6、。因此建议使用Fcn模块或者MathFunction模块代替MATLABFcn模块,或者编写M文件或者MEX文件S函数代替它。SFunction(SystemFunction)S函数,即系统函数,用来扩展Simulink模块库。一个S函数,相当于一个Simulink模块,只不过这个模块不是在SimulinkLibrary中已经存在的,用户需要根据自己对Simulink的功能需求,使用指定的编程语言来定制自己的Simulink模块。S函数支持Matlab,C,C++,Ada,orFortran等语言,编写S函数需要

7、按照一定的格式,具体如何编写S函数,参考Matlab自带文档。如果能用现有的Simulink模块库中的模块满足需求,不建议使用S函数编写。所谓s函数是systemFunction的简称,用它来写自己的simulink模块.s函数可以用matlab、C、C++、Fortran、Ada等语言来写,这儿只介绍怎样用matlab语言来写吧(主要是它比较简单)先讲讲为什么要用s函数,我觉得用s函数可以利用matlab的丰富资源,而不仅仅局限于simulink提供的模块,而用c或c++等语言写的s函数还可以实现对硬件端口的操

8、作,还可以操作windowsAPI等先介绍一下simulink的仿真过程(以便理解s函数),simulink的仿真有两个阶段:一个为初始化,这个阶段主要是设置一些参数,像系统的输入输出个数、状态初值、采样时间等;第二个阶段就是运行阶段,这个阶段里要进行计算输出、更新离散状态、计算连续状态等等,这个阶段需要反复运行,直至结束.在matlab的workspace里输入editsfuntmpl(这是matlab自己提供的s函数模板),我们看它来具体分析s函数的结构.1.函数的函数头函数的第一行:function[sys

9、,x0,str,ts]=sfuntmpl(t,x,u,flag),先讲输入与输出变量的含义:t是采样时间;x是状态变量;u是输入(是做成simulink模块的输入);flag是仿真过程中的状态标志(以它来判断当前是初始化还是运行等)sys输出根据flag的不同而不同(下面将结合flag来讲sys的含义);x0是状态变量的初始值;str是保留参数(mathworks公司还没想好该怎么用它,一般在初始化中将它置空就可以了,str=[]);ts是一个1×2的向量,ts(1)是采样周期,ts(2)是偏移量2.函数分析下面

10、结合sfuntmpl.m中的代码来讲具体的结构:switchflag,%判断flag,看当前处于哪个状态case0,[sys,x0,str,ts]=mdlInitializeSizes;//解释说明flag=0表示当前处于初始化状态,此时调用函数mdlInitializeSizes进行初始化,此函数在该文件的第149行定义.其中的参数sys是一个结构体,它用来设置模块的一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。