S-Function入门——基础介绍
# S-Function入门——基础介绍
S-Function(System Function)作为Simulink的重要模块,为用户提供了无限的扩展功能,当用户希望对算法进行加密,或者希望利用之前已有的程序算法,就可以利用S-Funciton实现这个目的。本节主要介绍S-Function的一些概念和执行顺序。
# S-Function的组成
S-Function既可以用M函数文件编写,也可以用C/C++、Fortran等源文件经编译产生MEX文件构成。在后续将会介绍如何用M文件编写Level1形式、Level2形式的S-Function和用C/C++编写C-Mex形式的S-Function。
一个Simulink模块包括一组输入(个数可以为0),一组输出(个数可以为0)和模型内部的状态量(个数同样可以为0),以及一个仿真时间量组成。
# S-Function的执行顺序
S-Function的执行主要可以分为两个半阶段:模块的初始化阶段、模块的仿真循环计算阶段和模块结束时的清理内存等阶段。
- 初始化阶段(仅执行一次):主要完成模块的实例化,明确输入输出端口的个数、名称、端口信号的维度、端口信号数据类型、模块的采样时间等属性参数;
- 仿真循环计算阶段:在初始化完成后进入循环计算,如果为变步长仿真,需要在每个采样时刻计算出下一个采样时间,如果定步长,则无需计算下一个采样时间,直接计算模块的输出结果即可;
- 结束清理内存阶段(仅执行一次):在仿真结束后进行必要的内存清理,例如在初始化时申请的内存应当在这个阶段进行释放。
# S-Function模块
S-function模块及其参数对话框如下:
S-Function名称
字段填入编写好的S-Function文件名;S-Function参数
字段可以指定其他额外参数;S-Function模块
字段指定需要额外源文件参与编译生成代码的文件名,不要指定扩展名
编辑 (opens new window)
上次更新: 2023/08/14, 19:51:00