Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

Simulink Function

用 Simulink 模块以图形方式定义函数

  • Simulink Function block

库:
Simulink / User-Defined Functions
SimEvents

描述

Simulink Function 模块是一个预先配置的子系统模块,可以用它作为一个起点来使用 Simulink® 模块以图形方式定义函数。该模块为函数调用方提供了文本接口。您可以从 Function Caller 模块、MATLAB Function 模块或 Stateflow® 图调用 Simulink Function 模块。请参阅Call a Simulink Function from a Model

有关模块参数的描述,请参阅 Subsystem

您可以在序列查看器中可视化 Simulink Function 调用。该查看器可显示使用参数进行调用的时间和返回的值。

您可以选择 Simulink FunctionFunction Caller 模块来突出显示相关模块。如果一个或多个相关模块位于子系统或引用模型中,则相关模块和包含相关模块的 Subsystem 模块或 Model 模块也会突出显示。

要在打开的图或新选项卡中显示相关模块,请在选择 Simulink FunctionFunction Caller 模块后出现的省略号上暂停。然后,从操作栏中选择相关模块 Related Blocks button。当多个模块对应于所选模块时,将打开一个相关模块列表。您可以通过在文本框中输入搜索词来过滤列表。从列表中选择相关模块后,窗口焦点转至显示该相关模块的打开的图或新选项卡。

函数接口

函数接口出现在 Simulink Function 模块表面上。编辑模块文本会从函数定义中添加和删除 Argument Inport 模块和 Argument Outport 模块。编辑操作还会设置 Simulink Function 模块内的 Trigger 模块中的函数名称参数。

例如,在 Simulink Function 模块表面输入 y = myfunction(u) 将在子系统内添加一个 Argument Inport 模块 (u) 和一个 Argument Outport 模块 (y)。

当使用 Function Caller 模块调用函数时,Function Caller 模块中的函数原型参数必须与您在 Simulink Function 模块上指定的函数接口完全匹配。此匹配包括函数的名称以及输入和输出参数的名称。例如,此 Simulink Function 模块和 Function Caller 模块均使用参数名称 uy

当从 Stateflow 转移标签或状态标签上调用函数时,您可以使用不同的参数名称。例如,此 Simulink Function 模块使用 xy 参数,而 Stateflow 转移则使用 x2y2 参数调用函数。

Function-Call Subsystem 与 Simulink Function 模块的比较

一般来说,与 Simulink Function 模块相比,Function-Call Subsystem 模块可通过直接的信号连接提供更好的信号可追溯性,而 Simulink Function 模块则无需在模型层次结构中布设输入和输出信号线。

属性Function-Call Subsystem 模块Simulink Function 模块
执行/调用函数的方法使用一条信号线来触发使用函数名称按引用来调用
正式的输入参数(Argument Inport 模块)和输出参数(Argument Outport 模块)
本地输入(Inport 模块)和输出(Outport 模块)

端口

输入

全部展开

在子系统模块中放置一个 Inport 模块会向该模块添加一个外部输入端口。端口标签与 Inport 模块的名称相匹配。

使用 Inport 模块可以从局部环境中接收信号。

数据类型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image | struct

子系统模块中的 Argument Inport 模块提供了对应于输入参数的输入端口。子系统模块上不显示端口。

数据类型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image | struct

输出

全部展开

在子系统模块中放置一个 Outport 模块会添加该模块的输出端口。子系统模块上的端口标签是 Outport 模块的名称。

使用 Outport 模块可以向局部环境发送信号。

数据类型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image | struct

子系统模块中的 Argument Outport 模块提供对应于输出参数的输出端口。子系统模块上不显示端口。

数据类型: single | double | half | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus | image | struct

参数

全部展开

常设

选择如何在 Subsystem 模块图标上显示端口标签。

  • - 不显示端口标签。

  • FromPortIcon - 如果对应的端口图标显示了信号名称,则在 Subsystem 模块上显示信号名称。否则,如果模块名称是默认名称,则显示端口模块名称或端口号。

  • FromPortBlockName - 在 Subsystem 模块上显示对应端口模块的名称。

  • SignalName - 如果连接到端口的信号已命名,则会在 Subsystem 模块上显示信号的名称。否则,显示相应端口模块的名称。

有关 Subsystem 模块上的端口标签编辑,请参阅Edit Port Labels on Subsystem Blocks

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

参数: ShowPortLabels
值: 'FromPortIcon' (默认) | 'FromPortBlockName' | 'SignalName'

控制用户对子系统内容的访问。

  • ReadWrite - 允许打开和修改子系统内容。

  • ReadOnly - 允许打开但不允许修改子系统。如果子系统在模块库中,您可以创建和打开该子系统的链接,创建和修改子系统的本地副本,但不能更改权限或修改原始模块库实例的内容。

  • NoReadOrWrite - 禁止打开或修改子系统。如果子系统在模块库中,您可以在模型中创建该子系统的链接,但不能打开、修改、更改权限或创建子系统的本地副本。

如果您尝试查看其读取/写入权限参数设置为 NoReadOrWrite 的子系统的内容,将不会收到响应。例如,当您双击此类子系统时,软件不会打开该子系统,并且不显示任何消息。

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

参数: Permissions
值: 'ReadWrite' (默认) | 'ReadOnly' | 'NoReadOrWrite'

输入软件执行子系统时,如果发生错误要调用的函数的名称。

该软件向函数传递两个参数:子系统的句柄以及指定错误类型的字符向量。如果未指定任何函数,当执行子系统导致错误时,软件将显示常规错误消息。

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

参数: ErrorFcn
值: '' (默认) | function name in quotes
数据类型: char | string

选择是否解析此子系统引用的工作区变量的名称。

有关详细信息,请参阅符号解析符号解析过程

  • 全部 - 解析此子系统使用的所有工作区变量的名称,包括用来指定模块参数值和 Simulink 数据对象(例如,Simulink.Signal 对象)的工作区变量的名称。

  • ExplicitOnly - 只解析用来指定模块参数值、数据存储内存(不存在模块)、信号以及标有“must resolve”状态的工作区变量的名称。

  • - 不解析任何工作区变量名称。

编程用法

要以编程方式设置模块参数值,请使用 set_param 函数。

参数: PermitHierarchicalResolution
值: 'All' (默认) | 'ExplicitOnly' | 'None'

模块特性

数据类型

Booleana | busa | doublea | enumerateda | fixed pointa | halfa | integera | singlea | stringa

直接馈通

多维信号

a

可变大小信号

过零检测

a 实际支持的数据类型或功能取决于模块实施。

扩展功能

版本历史记录

在 R2014b 中推出

全部展开