当前位置:文档之家› MATLABandSIMULINK控制系统仿真lkSfunction【精选】

MATLABandSIMULINK控制系统仿真lkSfunction【精选】

A hand-written C MEX S-function(推荐)
matlabroot/simulink/src/sfuntmpl_doc.c
The S-Function Builder (新手)
The Legacy Code Tool
S-函数的例子:
在模型中使用 S-Function 为了将一个 S-function 组合到一个Simulink 模型中,首先从Simulink 用户
MATLAB/SIMULINK控制系 统仿真
航空科学与工程学院 2014年 4月
Sቤተ መጻሕፍቲ ባይዱ函数
S-函数介绍(为什么要引入S-Function?) S-函数的分类 S-函数的使用(实例演习)
为什么要引进S-函数?
1, Simulink里自带的Block够用么? 2, 如何跟其他硬件有效结合? 3,如果速度不够快怎么办? 4,如何使用现成的开源代码? …………………
S-函数具备什么特征(1/3) ?
Simulink 是如何工作的(Simulink与Matlab的本质不同?)
总结:
Simulink的工作原理 就是不停更新系统状 态的过程,这个系统 可以是连续的,可以 使离散的,也可以使 混合体。
S-函数具备什么特征(2/3)?
如何把S函数放进去?
一个S函数必须包含必要的 callback (子函数), 做: 1.1 初始化(Initialization ) 1.2 计算步长(非必须) 1.3 计算系统的输出 1.4 更新系统状态 1.5 与系统其他模块整合
S-函数分类(1/2)
M-file S-函数
通过function handles实现
优点: 简单,容易上手 可以调用Matlab里的工具箱 缺点: 比较慢 不太适合硬件开发
MEX-file S-函数
C, C++, Ada, Fortran;S-function API 实现
优点: 速度快 可以调用任何开源代码 适合硬件开发 缺点: 对初学者比较难
向 S-Function 传递参数 在 S-function 块的S-function parameters 区域可以指定参数值,这些值将被 传递到相应的S-function中。要使用这个区域,必须了解S-function 所需要的 参数,及参数的顺序(如果不知道,应查询S-function的编制者、相关文件, 或源代码)。输入参数值时,参数之间应使用逗号分隔,并按照S-function 要 求的参数顺序进行输入。参数值可以是常量、模型空做区间定义的变量名、 或MATLAB 表达式。下面的图示使用 S-function parameters 区域输入用户 自定义参数的用法:
定义的函数块库中拖出一个S-Function 块,然后在S-Function 块对话框中的 S-Function name 区域指定S-Function 的名字。如下图所示:
在本例中,模型包含了两个的S-function 块,这两个块使用到同一个源文件 (mysfun,可以是一个 C MEX 文件,或者是一个M 文件)。如果一个C MEX 文件与一个M 文件具有 相同的名字,则C MEX 文件被优先使用,即在S-function 块中使用的是C MEX 文件。
S-函数分类(2/2)
A Level-1 M-file S-function
matlabroot/toolbox/simulink/blocks/sfuntmpl.m
A Level-2 M-file S-function
matlabroot/toolbox/simulink/blocks/msfuntmpl_basic.m
在本例中,模型使用的是由Simulink 提供的S-function 范例,limintm。该Sfunction 的源代码在目录toolbox/simulink/blocks 下可以找到。函数limintm 接受了三个参数:一个下边界,一个上边界,及一个初始条件。该函数将输 入信号对时间进行积分,如果积分值在上下边界之间则输出积分值;如果积 分值小于下边界值,则输出先边界值;如果积分值大于上边界值,则输出上 边界的值。在本例的对话框中指定下边界值、上边界和初始条件分别为2,3, 和2.5。图中示波器显示的曲线是当输入振幅为1的正弦波时的输出结果。
S-函数具备什么特征(3/3) ?
1: 参数传递, S-函数如何跟系统其他Block交换参数? Direct Feedthrough (S输入参数直接跟输入相关) Dynamically Sized Arrays (S输入的参数可变) 2:时间设置,S-函数如何与Simulations的时间配合起来? Continuous sample time (连续系统,微小步长) Continuous, but fixed in minor time step sample time (连续系统,非自定 义步长) Discrete sample time (自定义步长) Variable sample time (可变步长) Inherited sample time (继承其他block)
什么是 S-Function
S-函数是系统函数(System Function)的简称,是指采用非图形化的方 式(即计算机语言,区别于Simulink的系统模块)描述的一个功能块。
S-Function 可以使用MATLAB,C,C++,Ada,或Fortran 语言来 编 写 。 使 用 MEX 实 用 工 具 , 将 C , C++ , Ada , 和 Fortran 语 言 的 SFunction 编译成MEX-文件,在需要的时候,它们可与其MEX-文件一起动 态地连接到MATLAB 中。 S-Function 使用一种特殊的调用格式让你可以与Simulink 方程求解器相互 作用,这与发生在求解器和内置Simulink 块之间的相互作用非常相似。SFunction 的形式是非常通用的,且适用于连续、离散和混合系统。 S-function 为你提供了一种在Simulink 模型中增加自制块的手段,你可以使 用MATLAB,C,C++,Ada,或Fortran 语言来创建自己的块。按照下面一 套简单的规则,你可以在S-function 中实现自己的算法。
相关主题