向模型添加 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 Function 模块创建 Simulink 函数
设置 Simulink Function 模块以通过函数调用方的输入参数接收数据,然后通过输出参数传回计算得到的值。
为您的模型添加一个 Simulink Function 模块。
在模块上输入函数原型。
y = timestwo(x)
双击该模块打开定义函数算法的子系统。
添加 Gain 模块,并将增益参数设置为
2
。
使用从 Stateflow 图中导出的图形函数创建 Simulink 函数
在 Stateflow 图中建立图形函数,通过输入参数从函数调用方接收数据,并通过输出参数传回计算得到的值。设置图参数以将函数导出到 Simulink 模型。
在 Stateflow 图中定义图形函数
在 Stateflow 图中创建图形函数。定义函数接口和函数定义。
将 Stateflow 图添加到您的 Simulink 模型中。双击 Simulink 模块图。在搜索框中,输入
chart
,然后从搜索结果中选择“图
”。双击打开图。
添加图形函数。从左侧工具栏中,点击图形函数图标
并将其拖到图上。
定义函数接口。在函数框中,用函数接口
y = timestwo(x)
替换?
。定义函数算法。点击转移箭头,并将
?
替换为{y = 2*x}
。
测试图形函数. 在导出为 Simulink 模型之前,在 Stateflow 图中测试图形函数。
在图中添加用于测试函数的默认转移。从左侧工具栏中,点击默认转移箭头
并将其拖到图上。
双击箭头,将
?
替换为{y1 = timestwo(x1)}
。向图中添加输入端口。打开模型资源管理器。在左侧窗格中,选择表
Chart
。从菜单中,选择添加 > 数据。将名称设置为x1
并将范围设置为“输入
”。向图中添加输出端口。从菜单中,选择添加 > 数据。将名称设置为
y1
并将范围设置为“输出
”。添加 Sine Wave 模块以提供测试数据作为输入,并添加 Scope 模块以查看输出的结果。
运行仿真。
为图形函数设置参数
指定函数输入和输出参数的大小、复/实性和类型。图只能导出具有完全指定的原型的函数。
打开模型资源管理器。在建模选项卡上,从设计部分中,选择模型资源管理器
。
在左窗格中,选择图形函数。
从中间窗格的列视图列表中,选择 “
Stateflow
”。选择过滤器图标,然后从切换列表中选择所有 Stateflow 对象。从中部窗格表中,选择输入或输出参数。
在右窗格中,将“大小”设置为 1(标量),将复/实性设置为 “
off
”(实数),并将类型设置为 “double
”。使用输出函数参数
y
重复步骤2
和3
。
为图形函数设置导出函数参数
设置参数,以便在仿真过程中将图形函数从 Stateflow 图导出到 Simulink 模型。
打开模型资源管理器。
在左窗格中,选择包含图形函数的图。
在右侧的属性对话框中,选中导出图级别函数复选框,点击应用按钮,然后选中将导出的函数视为全局可见复选框。
如果您从另一个 Stateflow 图(而不是导出图形函数的图)调用导出的图形函数,则不需要选中将导出的函数视为全局可见复选框。
使用从 Stateflow 图中导出的 MATLAB 函数创建 Simulink 函数
在 Stateflow 图中建立 MATLAB 函数,通过输入参数从函数调用方接收数据,然后通过输出参数传回计算得到的值。设置图参数以将函数导出到 Simulink 模型。
在 Stateflow 图中定义 MATLAB 函数
在 Stateflow 图中创建 MATLAB 函数。定义函数接口和函数定义。
将 Stateflow 图添加到您的 Simulink 模型中。双击模块图。在搜索框中,输入
chart
,然后从搜索结果中选择“图
”。打开图。
添加 MATLAB 函数。从左侧工具栏中,点击图形函数图标
并将其拖到图上。
定义函数接口。在函数框中,用函数接口
y = timestwo(x)
替换?
。双击函数框以打开 MATLAB 代码编辑器。用 MATLAB 代码定义函数算法。
测试 MATLAB 函数. 在导出为 Simulink 模型之前,在 Stateflow 图中测试 MATLAB 函数。
在图中添加用于测试函数的默认转移。从左侧工具栏中,点击默认转移箭头
并将其拖到图上。
双击箭头,将
?
替换为{y1 = timestwo(x1)}
。向图中添加输入端口。打开模型资源管理器。在左侧窗格中,选择表
Chart
。从菜单中,选择添加 > 数据。将名称设置为x1
并将范围设置为“输入
”。向图中添加输出端口。从菜单中,选择添加 > 数据。将名称设置为
y1
并将范围设置为“输出
”。添加 Sine Wave 模块以提供测试数据作为输入,并添加 Scope 模块以查看输出的结果。
运行仿真。
为 MATLAB 函数设置参数
指定函数输入和输出参数的大小、复/实性和类型。图只能导出具有完全指定的原型的函数。
打开模型资源管理器。在建模选项卡上,从设计部分中,选择模型资源管理器
。
在左侧窗格中,选择 MATLAB 函数。
从中间窗格的列视图列表中,选择 “
Stateflow
”。选择过滤器图标,然后从切换列表中选择所有 Stateflow 对象。从中部窗格表中,选择输入或输出参数。
在右窗格中,将大小设置为 1(标量),将复/实性设置为 “
off
”(实数),并将类型设置为 “double
”。使用输出函数参数
y
重复步骤2
和3
。
为 MATLAB 函数设置导出函数参数
设置参数以在仿真过程中从 Stateflow 图中导出 MATLAB 函数。
打开模型资源管理器。
从左窗格中,选择包含 MATLAB 函数的图。
在右侧的属性对话框中,选中导出图级别函数复选框,点击应用按钮,然后选中将导出的函数视为全局可见复选框。
如果您从另一个 Stateflow 图(而不是导出的 MATLAB 函数的图)调用导出的 ®MATLAB 函数,则不需要选中将导出的函数视为全局可见复选框。
另请参阅
Simulink Function | Argument Inport | Argument Outport | Function Caller | MATLAB Function