S-Functio简介:
S-Function为扩展Simulink的性能提供了一个有力的工具。
S-Function可以使用Matlab,C,C++等语言来辩,使用MEX工具,将C,C++的S-Function编译成MEX-文件,在需要的时候,他们可与其它的MEX-文件一起动态地链接到Matlab中。
S-Function范例:
Simulink提供了一个S-Function的范例库,要运行 一个范例,按照以下步骤:
1.在Matlab命令行中输入sfundemos,Matlab会显示如下图所示的S-Function范例库:
库中的每个快代表了一种类别的S-Function范例。
2.双击一个类别的块,可以显示出它所包含的范例
3.双击一个块,选择范例并运行。
这些范例的源码保存在Matlab根目录下的以下几个子目录中
使用C语言编写S-Function
Simulink与一个C MEX S-Function之间的相互作用是通过调用S-Function中的回调函数来实现的。每个函数完成一个预先定义的任务,诸如计算快的输出,这些任务是S-Function定义的仿真模块功能必须的。
Simulink采用通用的方法来定义每个回调函数的任务,S-Function根据气实现的功能性自由地执行任务。
创建C MEX S-Function最简单的办法是使用S-Fnuction Builder ,该工具可以根据你一共的要求和部分代码来创建一个C MEX S-Function。
但是S-Function Builder只限于生成集中类型的S-Function。
例如它生成的S-Function不能有一个以上的输入或输出,也不能处理除了double以外的其它数据类型。
自动生成S-Function
S-Fnuction Builder是一个根据你提供的要求和C代码来构建一个S-Function的块,它也可以为在模型中使用的i安城的S-Function进行包装。
步骤:
1.将Matlab当前目录设置为你想创建的S-Function的目录;
2.创建一个新的Simulink模型;
3.从模块库中拖拽一个S-Fnuction Builder块到新建的模型中。
双击S-Function Builder
在S-Function name区输入S-Function的名字;以及其它参数配置
点击Build按钮开始创建。生成后缀名为tlc,c,xx_wrapper.c的文件
打开.c文件编辑
/*
* File: twoTime.c
*
*
* --- THIS FILE GENERATED BY S-FUNCTION BUILDER: 3.0 ---
*
* This file is an S-function produced by