Main Content

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

与 Simulink 和 MATLAB 工作区共享数据

Stateflow® 图通过以下方式与 Simulink® 模型中的其他模块进行交互:

  • 通过输入和输出连接共享数据。

  • 从 MATLAB® 基础工作区导入初始数据值。

  • 将最终数据值保存到 MATLAB 基础工作区。

图还可以访问 Simulink 参数和数据存储。有关详细信息,请参阅与 Simulink 和 MATLAB 工作区共享参数Access Data Store Memory from a Chart

与 Simulink 共享输入和输出数据

数据通过输入端口从 Simulink 流入 Stateflow 图。数据通过输出端口从 Stateflow 图流入 Simulink。

要在图中定义输入或输出数据,请执行下列操作:

  1. 向图添加数据对象,如添加 Stateflow 数据所述。

  2. 设置数据对象的作用域属性。

    • 要定义输入数据,请将作用域设置为输入数据。输入端口显示在图模块的左侧。

    • 要定义输出数据,请将作用域设置为输出数据。输出端口显示在图模块的右侧。

    默认情况下,端口值按添加数据对象的顺序显示。您可以通过修改数据的端口属性来更改以上分配。更改输入或输出数据对象的端口属性时,其余输入或输出数据对象的端口值将自动重新编号。

  3. 设置数据对象的数据类型,如指定 Stateflow 数据的类型中所述。

  4. 设置数据对象的大小,如指定 Stateflow 数据的大小中所述。

注意

不能将 Stateflow 输入数据的类型或大小设置为接受来自 Simulink 的基于帧的数据。

MATLAB 基础工作区初始化数据

您可以通过在 MATLAB 基础工作区和 Stateflow 层次结构中定义数据符号的初始值来导入数据符号的初始值。

  1. 在 MATLAB 基础工作区中定义和初始化变量。

  2. 在 Stateflow 层次结构中,定义一个数据对象并使其名称与 MATLAB 变量的名称相同。

  3. 选择数据对象的允许初始值解析为参数属性。

仿真开始时,会发生数据解析。在此过程中,Stateflow 数据对象会从关联的 MATLAB 变量获取其初始值。

一维 Stateflow 数组与相同大小的 MATLAB 行和列向量兼容。例如,大小为 5 的 Stateflow 向量与大小为 [1,5] 的 MATLAB 行向量或大小为 [5,1] 的列向量兼容。Stateflow 数组的每个元素都初始化为与 MATLAB 基础工作区中数组的对应元素相同的值。

初始化的时间取决于 Stateflow 数据对象的数据父级和作用域。

数据父级

作用域

初始化时间

Stateflow 图

输入

不适用

输出、局部

开始仿真时,或 Stateflow 图重新初始化为 Simulink 使能子系统的一部分时

包含历史结点的状态

局部

开始仿真时,或 Stateflow 图重新初始化为 Simulink 使能子系统的一部分时

不包含历史结点的状态

局部

状态的 entry 动作

函数(图形函数、真值表函数和 MATLAB 函数)

输入、输出

调用函数调用子系统时

局部

开始仿真时,或 Stateflow 图重新初始化为 Simulink 使能子系统的一部分时

将数据保存到 MATLAB 基础工作区

在仿真结束时,使用 C 作为动作语言的 Stateflow 图可以将数据对象的最终值保存到 MATLAB 基础工作区。

  1. 打开模型资源管理器。在建模选项卡中,选择模型资源管理器

  2. 双击内容窗格中的数据对象。

  3. 在“数据”属性对话框的描述窗格中,选择将最终值保存到基础工作区

此选项可用于除常量参数之外的所有作用域的数据符号。

相关主题