自定义模块的类型
MATLAB Function 模块
MATLAB® Function 模块允许您使用 MATLAB 语言定义自定义功能。在以下情况下,这些模块是创建自定义模块的很好的起点:
您已经拥有可对自定义功能建模的 MATLAB 函数。
您发现使用 MATLAB Function 对自定义功能建模比使用 Simulink® 模块图建模更容易。
自定义功能不包含连续或离散动态状态。
您可以使用以下某种类型的 MATLAB 函数模块从 MATLAB 函数创建自定义模块。
Interpreted MATLAB Function 模块允许您使用 MATLAB 函数定义 SISO 模块。
MATLAB Function 模块允许您定义一个可部署到嵌入式处理器并具有多个输入和输出的自定义模块。
Fcn 模块允许您使用 MATLAB 表达式来定义单输入单输出 (SISO) 模块。
上述每个模块在特定建模应用中各具优点。例如,您可以从包含 MATLAB Function 模块的模型中生成代码,而不能为包含 Fcn 模块的模型生成代码。
MATLAB System 模块
MATLAB System 模块可让您使用以 MATLAB 语言编写的 System object 定义自定义功能。在以下情况下,这些模块是创建自定义模块的很好的起点:
您有一个现有的 System object™,它可对自定义功能建模。
您发现使用 MATLAB 语言对自定义功能建模比使用 Simulink 模块图建模更容易。
自定义功能包括离散的动态状态。
子系统模块
子系统模块允许您构建 Simulink 图来定义自定义功能。在以下情况下,可以方便地基于这些模块来创建自定义模块:
已有对自定义功能建模的 Simulink 图。
使用图形表示法对自定义功能进行建模比使用人工代码建模更容易。
自定义功能是连续或离散系统状态的函数。
您可以使用现有 Simulink 模块对自定义功能建模。
一旦您有了对所需行为建模的 Simulink 子系统,即可通过以下方式将其转换为自定义模块:
封装模块以隐藏模块内容并提供自定义模块对话框。
将模块放在库中以防止修改并允许方便地更新模块的副本。
有关详细信息,请参阅自定义库和Author Block Masks。
C Caller 模块
C Caller 模块允许您将 C 代码集成到 Simulink 模块中。在以下情况下,可以方便地基于这些模块来创建自定义模块:
已有对自定义功能建模的现有 C 代码。
您的 C 函数不读写全局/静态变量。
您要使模块可以轻松地与其他 Simulink 功能集成,例如 Simulink Coverage™、Simulink Test™ 和 Simulink Coder™。
您不是对动态系统建模。
C Function 模块
C Function 模块允许您将 C 代码集成到 Simulink 模块中。在以下情况下,可以方便地基于这些模块来创建自定义模块:
已有对自定义功能建模的现有 C 代码。
您要从模块中调用多个 C 函数,或有条件地调用 C 函数。
您要在调用 C 函数之前和之后使用 C 代码来预处理和后处理数据。
您要为仿真和代码生成指定不同代码。
您不是用连续状态对动态系统建模。
S-Function 模块
S-Function 模块允许您编写 MATLAB、C 或 C++ 代码来定义自定义功能。在以下情况下,可以方便地基于这些模块来创建自定义模块:
已有对自定义功能建模的 MATLAB、C 或 C++ 代码。
您使用需要访问 S-Function API 的连续或离散动态状态或其他系统行为。
您不能使用现有 Simulink 模块对自定义功能建模。
您可以使用以下某种类型的 S-Function 函数模块从 S-Function 创建自定义模块。
Level-2 MATLAB S-Function 模块允许您使用 MATLAB 语言编写 S-Function。(请参阅Write Level-2 MATLAB S-Functions)。您可以使用 MATLAB 调试器在仿真期间调试 MATLAB S-Function。
S-Function 模块允许您使用 C 或 C++ 编写 S-Function,或者使用 C-MEX 包装器将现有代码合并到模型中。(请参阅Author Blocks Using C MEX S-Functions。)
S-Function Builder 模块可帮助您创建 C-MEX S-Function 或包装函数以合并原有 C 或 C++ 代码。(请参阅Author Blocks Using C MEX S-Functions。)
代码继承工具将现有 C 或 C++ 函数转换为 C MEX S-Function。(请参阅Integrate C Functions Using Legacy Code Tool。)
Simulink Coder 产品中的 S-Function 目标自动从图形子系统生成 C MEX S-Function。如果您要在 Simulink 子系统中构建自定义模块,但在 S-Function 中实现该模块的最终版本,则可以使用 S-Function 目标将子系统转换为 S-Function。有关使用 S-Function 目标的详细信息和限制,请参阅 Simulink Coder 用户指南中的 将 S-Function 目标用于模型或子系统 (Simulink Coder)。
封装模块
您可以通过为任何模块添加封装来自定义该模块。封装是模块的自定义接口。您可以通过多种方式使用封装来自定义模块,例如:
更改模块的外观。
对模块的用户隐藏部分或全部参数。
自定义模块参数。
要了解有关封装模块的详细信息,请参阅Author Block Masks。
另请参阅
Fcn | Interpreted MATLAB Function | C Caller | C Function | Level-2 MATLAB S-Function | MATLAB Function | MATLAB System | S-Function | S-Function Builder | Simulink Function | Subsystem