Main Content

向模型添加 Simulink 函数

Simulink® 函数的输入和输出参量接口类似于编程语言。您可以使用以下方式为 Simulink 函数创建函数定义:

  • Simulink Function 模块内的 Simulink 模块。

  • 从 Stateflow® 图导出的图形函数中的 Stateflow 状态转移。

  • 从 Stateflow 图导出的 MATLAB® 函数中的 MATLAB 代码。

以下各节说明如何为函数 y = timestwo(x) 创建 Simulink 函数。该函数将来自调用方的值 (x) 乘以 2,然后将计算得到的值 (y) 发送回调用方。要调用这些函数,请参阅 Call a Simulink Function from a Model

Simulink 函数和函数调用方

名为 ex_simulink_functions_and_function_callers 的模型显示创建和调用 Simulink 函数的多种方法。

该模型以三种方式创建 Simulink 函数:

  • Simulink Function 模块

  • 导出图形函数的 Stateflow 图

  • 导出 MATLAB 函数的 Stateflow 图

该模型以三种方式调用每个 Simulink 函数:

  • Function Caller 模块

  • MATLAB Function 模块

  • Stateflow 图

为了直观地显示 Simulink 函数及其调用方之间的信号线连接,在调试选项卡的叠加信息下,函数连接器按钮处于选中状态。

使用 Simulink Function 模块创建 Simulink 函数

设置 Simulink Function 模块以通过函数调用方的输入参量接收数据,然后通过输出参量传回计算得到的值。

  1. 为您的模型添加一个 Simulink Function 模块。

  2. 在模块上输入函数原型。

    y = timestwo(x)

    After you configure the block, the block icon displays the function prototype for the Simulink Function.

  3. 双击该模块打开定义函数算法的子系统。

  4. 添加 Gain 模块,并将增益参数设置为 2

    To represent the function algorithm, the Simulink canvas has a trigger port, f, with an input of x, gain block with value 2, and an output of y.

使用从 Stateflow 图导出的图形函数创建 Simulink 函数

在 Stateflow 图中建立图形函数,通过输入参量从函数调用方接收数据,并通过输出参量传回计算得到的值。设置图参数以将函数导出到 Simulink 模型。

在 Stateflow 图中定义图形函数

在 Stateflow 图中创建图形函数。定义函数接口和函数定义。

  1. 将 Stateflow 图添加到您的 Simulink 模型中。双击 Simulink 模块图。在搜索框中,输入 chart,然后从搜索结果中选择

  2. 双击打开图。

  3. 添加图形函数。从左侧工具栏中,点击图形函数图标 并将其拖到图上。

  4. 定义函数接口。在函数框中,用函数接口 y = timestwo(x) 替换 ?

  5. 定义函数算法。点击转移箭头,并将 ? 替换为 {y = 2*x}

    After you configure the graphical function, the block icon displays the function interface and the function algorithm.

测试图形函数

在导出为 Simulink 模型之前,在 Stateflow 图中测试图形函数。

  1. 在图中添加用于测试函数的默认转移。从左侧工具栏中,点击默认转移箭头 并将其拖到图上。

  2. 双击箭头,将 ? 替换为 {y1 = timestwo(x1)}

  3. 向图中添加输入端口。打开模型资源管理器。在左侧窗格中,选择表 Chart。从菜单中,选择添加 > 数据。将名称设置为 x1 并将范围设置为输入

  4. 向图中添加输出端口。从菜单中,选择添加 > 数据。将名称设置为 y1 并将范围设置为输出

  5. 添加 Sine Wave 模块以提供测试数据作为输入,并添加 Scope 模块以查看输出的结果。

    After you add the components to test the graphical function, there is a Sine Wave block as input to a Stateflow chart which sends output to a Scope block.

  6. 运行仿真。

为图形函数设置参数

指定函数输入和输出参量的大小、复/实性和类型。图只能导出具有完全指定的原型的函数。

  1. 打开模型资源管理器。在建模选项卡上,从设计部分中,选择模型资源管理器

  2. 在左窗格中,选择图形函数。

    Modeling Hierarchy pane of the Model Explorer shows the timestwo graphical function under the Chart.

  3. 从中间窗格的列视图列表中,选择 Stateflow。选择过滤器图标 ,然后从切换列表中选择所有 Stateflow 对象。从中部窗格表中,选择输入或输出参量。

    Column View pane of the Model Explorer shows the arguments of the timestwo graphical function.

  4. 在右窗格中,将“大小”设置为 1(标量),将复/实性设置为 off(实数),并将类型设置为 double

    Data pane of the Model Explorer shows the parameters set for x.

  5. 使用输出函数参量 y 重复步骤 23

为图形函数设置导出函数参数

设置参数,以便在仿真过程中将图形函数从 Stateflow 图导出到 Simulink 模型。

  1. 打开模型资源管理器。

  2. 在左窗格中,选择包含图形函数的图。

    Modeling Hierarchy pane of the Model Explorer shows the timestwo graphical function under the Chart.

  3. 在右侧的属性对话框中,选中导出图级别函数复选框,点击应用按钮,然后选中将导出的函数视为全局可见复选框。

    如果您从另一个 Stateflow 图(而不是导出图形函数的图)调用导出的图形函数,则不需要选中将导出的函数视为全局可见复选框。

使用从 Stateflow 图导出的 MATLAB 函数创建 Simulink 函数

在 Stateflow 图中建立 MATLAB 函数,通过输入参量从函数调用方接收数据,然后通过输出参量传回计算得到的值。设置图参数以将函数导出到 Simulink 模型。

在 Stateflow 图中定义 MATLAB 函数

在 Stateflow 图中创建 MATLAB 函数。定义函数接口和函数定义。

  1. 将 Stateflow 图添加到您的 Simulink 模型中。双击模块图。在搜索框中,输入 chart,然后从搜索结果中选择

  2. 打开图。

  3. 添加 MATLAB 函数。从左侧工具栏中,点击图形函数图标 并将其拖到图上。

  4. 定义函数接口。在函数框中,用函数接口 y = timestwo(x) 替换 ?

    MATLAB Function called timestwo.

  5. 双击函数框以打开 MATLAB 代码编辑器。用 MATLAB 代码定义函数算法。

    MATLAB code editor with function algorithm defined as y equals 2 times x.

测试 MATLAB 函数

在导出为 Simulink 模型之前,在 Stateflow 图中测试 MATLAB 函数。

  1. 在图中添加用于测试函数的默认转移。从左侧工具栏中,点击默认转移箭头 并将其拖到图上。

  2. 双击箭头,将 ? 替换为 {y1 = timestwo(x1)}

  3. 向图中添加输入端口。打开模型资源管理器。在左侧窗格中,选择表 Chart。从菜单中,选择添加 > 数据。将名称设置为 x1 并将范围设置为输入

  4. 向图中添加输出端口。从菜单中,选择添加 > 数据。将名称设置为 y1 并将范围设置为输出

  5. 添加 Sine Wave 模块以提供测试数据作为输入,并添加 Scope 模块以查看输出的结果。

    After you add the components to test the MATLAB function, there is a Sine Wave block as input to a Stateflow chart which sends output to a Scope block.

  6. 运行仿真。

为 MATLAB 函数设置参数

指定函数输入和输出参量的大小、复/实性和类型。图只能导出具有完全指定的原型的函数。

  1. 打开模型资源管理器。在建模选项卡上,从设计部分中,选择模型资源管理器

  2. 在左侧窗格中,选择 MATLAB 函数。

    Modeling Hierarchy pane of the Model Explorer shows the timestwo graphical function under the Chart.

  3. 从中间窗格的列视图列表中,选择 Stateflow。选择过滤器图标 ,然后从切换列表中选择所有 Stateflow 对象。从中部窗格表中,选择输入或输出参量。

    Modeling Hierarchy pane of the Model Explorer shows the timestwo graphical function under the Chart.

  4. 在右窗格中,将大小设置为 1(标量),将复/实性设置为 off(实数),并将类型设置为 double

  5. 使用输出函数参量 y 重复步骤 23

为 MATLAB 函数设置导出函数参数

设置参数以在仿真过程中从 Stateflow 图中导出 MATLAB 函数。

  1. 打开模型资源管理器。

  2. 从左窗格中,选择包含 MATLAB 函数的图。

  3. 在右侧的属性对话框中,选中导出图级别函数复选框,点击应用按钮,然后选中将导出的函数视为全局可见复选框。

    如果您从另一个 Stateflow 图(而不是导出的 MATLAB 函数的图)调用导出的 ®MATLAB 函数,则不需要选中将导出的函数视为全局可见复选框。

另请参阅

| | | |

相关主题