MATLAB S-Function详细编写指南

需积分: 10 1 下载量 162 浏览量 更新于2024-07-21 收藏 2.41MB PDF 举报
"MATLAB的S-Function编写指导 .pdf" MATLAB的S-Function(System Function)是一种自定义模块,允许用户扩展Simulink的功能,以满足特定的建模和仿真需求。S-Function是Simulink环境中用于实现定制算法的核心工具,支持基于模型的设计流程,包括建模、仿真和实现。 S-FUNCTION概述: S-Function是Simulink中的自定义计算模块,可以执行任意复杂的数学运算或控制逻辑。它们可以被用作Simulink模型中的黑盒,接收输入,产生输出,并根据内部状态进行计算。S-Functions可以用于模拟无法用现有Simulink库块表示的系统行为。 在模型中使用S-FUNCTION: 在Simulink模型中,S-Function可以作为一个单独的块插入,与其他Simulink块并行运行。用户可以通过设置参数和接口来定制S-Function的行为,使其适应特定的系统模型。 向S-Function传递参数: S-Functions可以通过端口接收输入参数,也可以通过模型参数进行配置。这使得S-Function可以灵活地适应不同的工作条件和输入信号。 S-FUNCTION的工作原理: Simulink块的数学关系是通过S-Function的回调函数实现的。这些回调函数在仿真过程中按需调用,如`init`, `deriv`, `output`, `reset`等,每个回调对应仿真过程的不同阶段。S-Function的执行与Simulink的仿真引擎紧密集成,确保了精确的时序和同步。 S-FUNCTION的实现: S-Functions有两种主要实现方式:M-文件和MEX文件。M-文件是用MATLAB脚本语言编写的,易于调试和理解,但可能性能较低。MEX文件是编译后的C、C++、Fortran或Ada代码,执行效率更高,但需要编译环境。 - M-文件S-Function:直接使用MATLAB脚本编写,适合快速原型开发和简单功能实现。 - MEX文件S-Function:生成预编译的二进制代码,提供更好的性能,适用于需要高效计算的场景。 S-FUNCTION的概念: - 直接馈通:描述S-Function输出与输入之间的直接关系,无需内部计算。 - 动态维矩阵:S-Function可以处理大小可变的矩阵,适用于处理不确定大小的数据流。 - 设置采样时间和偏移量:S-Function可以设定自定义的采样时间,以适应不同速率的系统。 编写S-FUNCTION: 编写S-Function涉及定义参数、输出和回调函数。MATLAB提供了详细的S-Function模板和构建工具,如S-Function Builder,帮助用户生成和配置S-Function代码。 - S-Function Builder提供了一个图形化界面,用户可以配置S-Function的属性,包括初始化、数据属性、库依赖、输出和更新规则等。 - 使用C语言编写S-FUNCTION(CMEX S-Function)可以提高性能,通过自动生成S-Function模板,用户只需关注核心算法的实现。 总结来说,MATLAB的S-Function是Simulink中强大的自定义模块,能够满足各种复杂建模和仿真需求。通过理解和熟练掌握S-Function的编写,用户可以充分利用Simulink环境,实现高度定制化的系统模拟。
2019-07-09 上传
S-FUNCTION 概述 .................................................................................................................................... 1 什么是 S-FUNCTION................................................................................................................................ 2 在模型中使用 S-FUNCTION.................................................................................................................... 3 向 S-Function 传递参数..................................................................................................................... 3 何时使用 S-Function.......................................................................................................................... 4 S-FUNCTION 的工作原理........................................................................................................................ 5 Simulink 块的数学关系...................................................................................................................... 5 仿真过程.............................................................................................................................................. 5 S-Function 回调程序.......................................................................................................................... 6 S-FUNCTION 的实现................................................................................................................................ 8 M-文件的 S-Function......................................................................................................................... 8 MEX 文件的 S-function ..................................................................................................................... 8 MEX 文件与 M-文件的 S-function 比较........................................................................................... 9 S-FUNCTION 的概念.............................................................................................................................. 10 直接馈通............................................................................................................................................ 10 动态维矩阵........................................................................................................................................ 10 设置采样时间和偏移量.....................................................................................................................11 S-FUNCTION 范例.................................................................................................................................. 14 M 文件 S-function 范例.................................................................................................................... 15 C S-Function 范例............................................................................................................................ 16 Fortran S-Function 范例.................................................................................................................. 18 C++ S-Function 范例....................................................................................................................... 18 Ada S-Function 范例 ....................................................................................................................... 18 编写 M S-FUNCTION.............................................................................................................................. 19 概述........................................................................................................................................................ 20 S-Function 参数................................................................................................................................ 20 S-Function 的输出............................................................................................................................ 20 定义 S-FUNCTION 块特性..................................................................................................................... 22 处理 S-FUNCTION 参数......................................................................................................................... 22 M 文件的 S-FUNCTION 范例................................................................................................................. 23 范例 1—— 简单的 M 文件 S-Function ........................................................................................... 23 范例 2—— 连续状态 S-Function .................................................................................................... 25 范例 3—— 离散状态 S-Function .................................................................................................... 27 范例 4—— 混合系统 S-Function .................................................................................................... 28 范例 5—— 变步长 S-Function ........................................................................................................ 31 使用 C 语言编写 S-FUNCTION ............................................................................................................. 33 概述........................................................................................................................................................ 34 创建 C MEX S-Function.................................................................................................................. 35 自动生成 S-FUNCTION.......................................................................................................................... 36 配置生成的 S-Function.................................................................................................................... 37 S-Function Builder 如何生成 S-Function...................................................................................... 37 设置 include 路径 ............................................................................................................................. 37 S-FUNCTION BUILDER 的对话窗........................................................................................................... 39 Initialization 选卡.............................................................................................................................. 39 Data Properties 选卡 ....................................................................................................................... 40 Libraries 选卡.................................................................................................................................... 42 Outputs 选卡..................................................................................................................................... 43 Continuous Derivatives 选卡.......................................................................................................... 45 Discrete Update 选卡 ...................................................................................................................... 46 Build Info 选卡 .................................................................................................................................. 47 一个基本的 C MEX S-FUNCTION 范例 ............................................................................................... 48 定义与包含........................................................................................................................................ 49 回调函数的实现................................................................................................................................ 50 Simulink/Real-Time Workshop 接口 ............................................................................................. 51 Building Timestwo 范例................................................................................................................... 51 C S-FUNCTION 模板.............................................................................................................................. 52 S-Function 源文件必需的内容........................................................................................................ 52 SimStruct........................................................................................................................................... 53 编译 C S-Function............................................................................................................................ 53 SIMULINK 如何与 C S-FUNCTION 相互作用 ........................................................................................ 54 进程层面............................................................................................................................................ 54 数据层面............................................................................................................................................ 56 编写回调函数........................................................................................................................................ 59 将 LEVEL 1 C MEX S-FUNCTION 转换到 LEVEL 2 .............................................................................. 60 创建 C++ S-FUNCTION.......................................................................................................................... 63 创建 ADA S-FUNCTION......................................................................................................................... 64 创建 FORTRAN S-FUNCTION.............................................................................................................. 65 实现块特性................................................................................................................................................ 67 对话框参数............................................................................................................................................ 68 可调参数............................................................................................................................................ 68 运行参数................................................................................................................................................ 70 创建运行参数.................................................................................................................................... 70 更新运行参数.................................................................................................................................... 71 创建输入和输出端口............................................................................................................................ 72 创建输入端口.................................................................................................................................... 72 创建输出端口.................................................................................................................................... 73 输入的标量扩展................................................................................................................................ 74 掩码多端口 S-Function.................................................................................................................... 75 自定义数据类型.................................................................................................................................... 76 采样时间................................................................................................................................................ 77 基于块的采样时间............................................................................................................................ 77 指定基于端口的采样时间................................................................................................................ 79 基于块与基于端口的混合采样时间 ................................................................................................ 81 多速率 S-Function 块....................................................................................................................... 82 多速率 S-Function 块的同步........................................................................................................... 83 工作向量................................................................................................................................................ 84 工作向量与过零检测........................................................................................................................ 85 包括指针工作向量的范例................................................................................................................ 85 内存分配............................................................................................................................................ 86 FUNCTION-CALL 子系统........................................................................................................................ 87 错误处理................................................................................................................................................ 89 防超程代码........................................................................................................................................ 89 SsSetErrorStatus 的终止条件 ........................................................................................................ 90 数组边界检查.................................................................................................................................... 90 S-FUNCTION 范例.................................................................................................................................. 91 连续状态的 S-Function 范例........................................................................................................... 92 离散状态的 S-Function 范例........................................................................................................... 93 混合系统的 S-Function 范例........................................................................................................... 93 变步长的 S-Function 范例............................................................................................................... 94 过零检测的 S-Function 范例........................................................................................................... 94 时变连续传递函数的 S-Function 范例........................................................................................... 94