欢迎来到天天文库
浏览记录
ID:38968954
大小:1.97 MB
页数:38页
时间:2019-06-22
《MATLABSIMULINK控制系统仿真(lk)Sfu》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、MATLAB/SIMULINK控制系统仿真航空科学与工程学院2014年4月S-函数S-函数介绍(为什么要引入S-Function?)S-函数的分类S-函数的使用(实例演习)为什么要引进S-函数?1,Simulink里自带的Block够用么?2,如何跟其他硬件有效结合?3,如果速度不够快怎么办?4,如何使用现成的开源代码?…………………什么是S-FunctionS-Function可以使用MATLAB,C,C++,Ada,或Fortran语言来编写。使用MEX实用工具,将C,C++,Ada,和Fortran语言的S-Function编译成MEX
2、-文件,在需要的时候,它们可与其MEX-文件一起动态地连接到MATLAB中。S-Function使用一种特殊的调用格式让你可以与Simulink方程求解器相互作用,这与发生在求解器和内置Simulink块之间的相互作用非常相似。S-Function的形式是非常通用的,且适用于连续、离散和混合系统。S-function为你提供了一种在Simulink模型中增加自制块的手段,你可以使用MATLAB,C,C++,Ada,或Fortran语言来创建自己的块。按照下面一套简单的规则,你可以在S-function中实现自己的算法。S-函数是系统函数(Sy
3、stemFunction)的简称,是指采用非图形化的方式(即计算机语言,区别于Simulink的系统模块)描述的一个功能块。S-函数具备什么特征(1/3)?Simulink是如何工作的(Simulink与Matlab的本质不同?)总结:Simulink的工作原理就是不停更新系统状态的过程,这个系统可以是连续的,可以使离散的,也可以使混合体。S-函数具备什么特征(2/3)?如何把S函数放进去?一个S函数必须包含必要的callback(子函数),做:1.1初始化(Initialization)1.2计算步长(非必须)1.3计算系统的输出1.4更新
4、系统状态1.5与系统其他模块整合S-函数具备什么特征(3/3)?1:参数传递,S-函数如何跟系统其他Block交换参数?DirectFeedthrough(S输入参数直接跟输入相关)DynamicallySizedArrays(S输入的参数可变)2:时间设置,S-函数如何与Simulations的时间配合起来?Continuoussampletime(连续系统,微小步长)Continuous,butfixedinminortimestepsampletime(连续系统,非自定义步长)Discretesampletime(自定义步长)Varia
5、blesampletime(可变步长)Inheritedsampletime(继承其他block)S-函数分类(1/2)M-fileS-函数通过functionhandles实现MEX-fileS-函数C,C++,Ada,Fortran;S-functionAPI实现优点:简单,容易上手可以调用Matlab里的工具箱缺点:比较慢不太适合硬件开发优点:速度快可以调用任何开源代码适合硬件开发缺点:对初学者比较难S-函数分类(2/2)ALevel-1M-fileS-functionmatlabroot/toolbox/simulink/blocks
6、/sfuntmpl.mALevel-2M-fileS-functionmatlabroot/toolbox/simulink/blocks/msfuntmpl_basic.mAhand-writtenCMEXS-function(推荐)matlabroot/simulink/src/sfuntmpl_doc.cTheS-FunctionBuilder(新手)TheLegacyCodeToolS-函数的例子:在模型中使用S-Function为了将一个S-function组合到一个Simulink模型中,首先从Simulink用户定义的函数块库中
7、拖出一个S-Function块,然后在S-Function块对话框中的S-Functionname区域指定S-Function的名字。如下图所示:在本例中,模型包含了两个的S-function块,这两个块使用到同一个源文件(mysfun,可以是一个CMEX文件,或者是一个M文件)。如果一个CMEX文件与一个M文件具有相同的名字,则CMEX文件被优先使用,即在S-function块中使用的是CMEX文件。向S-Function传递参数在S-function块的S-functionparameters区域可以指定参数值,这些值将被传递到相应的S-
8、function中。要使用这个区域,必须了解S-function所需要的参数,及参数的顺序(如果不知道,应查询S-function的编制者、相关文件,或源代码)。输
此文档下载收益归作者所有