主要内容

与 Simulink 和 MATLAB 工作区共享数据

Stateflow® 图通过输入端口和输出端口与 Simulink® 模型交换数据。您也可以从 MATLAB® 工作区初始化数据值,并将最终结果保存回工作区。

Stateflow 和 Simulink 之间的数据流

Simulink 信号可以流向您的 Stateflow 图,表示传感器读数、用户输入或来自其他模块的数据。在另一个方向上,数据可以从您的 Stateflow 图流向 Simulink,作为控制信号、状态信息或仿真结果。

创建输入和输出连接

使用输入和输出连接指定 Stateflow 图如何使用数据以及如何在 Simulink 中输入和输出数据。

添加输入数据

输入数据将来自 Simulink 的信息带入您的图中。

  1. 将一个数据对象添加到图中。请参阅添加 Stateflow 数据

  2. 作用域属性设置为输入数据。输入端口显示在图模块的左侧。

  3. 将 Simulink 信号连接到输入端口。

图接收信号值,并在每次 Simulink 运行时更新数据。

添加输出数据

输出数据将信息从您的图发送到 Simulink。

  1. 将一个数据对象添加到图中。

  2. 作用域属性设置为输出数据。输出端口显示在图模块的右侧。

  3. 将输出端口连接到其他 Simulink 模块。

  4. 为输出数据设置初始值。此值在图运行之前出现在输出端口上。

图通过在状态动作或转移动作中对数据名称进行赋值来更新输出值。

端口编号

输入端口和输出端口按照您创建数据对象的顺序出现。要更改端口顺序,请执行以下操作:

  1. 在“符号”窗格中选择数据对象。

  2. 属性检查器中,将端口属性更改为所需的端口号。

当您更改一个端口号时,其他端口会自动重新编号以避免冲突。

连接多个信号

对于多个输入或输出,请为每个连接创建单独的数据对象。

Simulink transmission model that features a Stateflow chart.

此 Simulink 模型有两个信号,ThrottleVehicleSpeed,它们成为 Stateflow 的输入。在“符号”窗格中,两个 Simulink 信号显示为输入数据。

The Stateflow Symbols pane, showing the two input data signals.

从 MATLAB 工作区初始化数据

您可以使用 MATLAB 工作区中的变量设置局部数据和输出数据的初始值。

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

    initial_speed = 2000; %RPM
  2. 在您的 Stateflow 图中,创建一个与 MATLAB 变量同名的数据对象。

  3. 初始化方法属性设置为参数

当您开始仿真时,Stateflow 数据对象从 MATLAB 变量获取其初始值。您可以在 MATLAB 中为局部数据和输出数据设置初始值。

数据初始化发生在仿真开始时,或当图作为使能子系统的一部分重新初始化时。

将结果保存到 MATLAB 工作区

对于使用 C 语言作为动作语言的图,您可以将数据对象的最终值保存到 MATLAB 工作区。

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

  2. 内容 窗格中,选择数据对象。

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

仿真完成后,MATLAB 工作区中会出现与数据对象同名的变量,其中包含最终值。此选项适用于除 ConstantParameter 之外的所有作用域的数据对象。

使用 Simulink 数据类型

默认情况下,Stateflow 数据从连接的 Simulink 信号继承其类型。对于输入数据,图自动使用传入信号的类型。对于输出数据,您可以指定类型,或让 Simulink 根据连接的模块确定适当的类型。

要显式指定数据类型,请参阅指定 Stateflow 数据的作用域和类型

另请参阅

主题