添加 Stateflow 数据
当您想要存储可在特定 Stateflow® 层级可见的值时,可向图中添加数据。仿真模型时,图数据对象在仿真期间保留其值。
在 Stateflow 图中定义的数据对图中的多个 Stateflow 对象可见,包括状态、转移、MATLAB® 函数和真值表。要确定在状态或转移中使用的数据,请右键点击状态或转移并选择 浏览。上下文菜单会列出在状态或转移中所有已解析符号的名称和作用域。从上下文菜单中选择一个符号将在模型资源管理器中显示其属性。从上下文菜单中选择输出事件将打开与事件关联的 Simulink® 子系统或 Stateflow 图。
注意
Stateflow 数据对于 Stateflow 图中的 Simulink 函数不可用。
您可以使用符号窗格、Stateflow 编辑器菜单或模型资源管理器向 Stateflow 图添加数据。
通过“符号”窗格添加数据
使用 Stateflow 编辑器菜单添加数据
通过模型资源管理器添加数据
要向 Simulink 模型中的 Stateflow 图添加函数级别或状态级别的数据,请使用模型资源管理器:
在建模选项卡的设计数据下,选择模型资源管理器。
在模型层次结构窗格中,在 Stateflow 层次结构中选择您希望新数据对其可见的对象。所选对象即变为新数据的父级。
在模型资源管理器工具条中,选择“添加数据” 按钮。或者,在模型资源管理器菜单中,选择添加 > 数据。具有默认定义的新数据出现在模型资源管理器的内容窗格中。
在数据窗格中,指定数据的属性。有关详细信息,请参阅设置数据属性。
提示
您不需要在以下类型的函数中显式创建局部或临时数据:
图中使用 MATLAB 作为动作语言的图形函数
使用 MATLAB 作为动作语言的真值表函数
MATLAB 函数
在这些函数中,您可以使用未定义的变量来存储仅在函数调用的其余部分可访问的值。要存储在各次函数调用之间保持不变的值,请在图级别使用局部数据。或者,在 MATLAB 函数中,可以使用关键字 persistent
。
使用图中数据的最佳做法
避免从 Simulink 模块继承输出数据属性
Stateflow 输出数据不应该从输出信号继承属性,因为这些值从 Simulink 模块反向传播且可能无法预测。
通过使用原位数据生成更高效的代码
通过使用原位数据,您可以提高 Stateflow 图、真值表和状态转移表的性能,并减少生成代码的内存占用。当您对图输入和图输出使用相同的数据名称时,您就会创建原位数据。从图生成代码时,生成的代码将输入和输出数据视为传引用的单个原位参量。使用原位数据可减少生成代码复制中间数据的次数,从而提高代码的效率。
当输入和输出数据具有相同的名称时,您只能编辑输入数据的属性。输出数据的属性为只读。