主要内容

从图表中访问数据存储内存

一个金宝app仿真软件®模型实现全局变量为数据存储,无论是数据存储内存(金宝app模型)块或作为的实例金宝app仿真软件。信号(金宝app模型)对象。您可以使用数据存储在多个Simulink块之间共享数据,而不需要显式的输入或输出连接来将数据从一个块传递到另一金宝app个块。Stateflow®图表通过象征性地读取和写入数据存储内存,与Simulink模金宝app型共享全局数据。

要从图表访问全局数据,需要将statflow数据对象绑定到Simulink数据存储。金宝app创建绑定之后,statflow数据对象就变成了Simulink数据存储内存的符号表示。金宝app然后可以使用这个符号对象来存储和检索全局数据。

本地和全局数据存储内存

状态流图可以与本地和全局数据存储接口。

  • 本地数据存储对一个模型中的所有块都是可见的。要与本地数据存储交互,图表必须驻留在定义本地数据存储的模型中。定义本地数据存储时,需要添加数据存储内存阻塞到模型或创建Simulink信号对象。金宝app

  • 全局数据存储具有跨越模型引用边界的更广泛的范围。要与全局数据存储交互,图表必须位于定义全局数据存储的顶层模型中,或者位于顶层模型引用的模型中。将全局数据存储实现为Simulink信号对象。金宝app

有关更多信息,请参见本地和全球数据存储(金宝app模型)

绑定Stateflow数据到数据存储

  1. 要定义Simulink数据存金宝app储内存,添加一个数据存储内存或创建一个Simulink信号对象。金宝app有关更多信息,请参见数据存储与数据存储内存块(金宝app模型)带有信号对象的数据存储(金宝app模型)

  2. 将数据对象添加到状态流图中,如添加Stateflow数据

  3. 设置的名字属性作为要将statflow数据对象绑定到的Simuli金宝appnk数据存储内存的名称。

  4. 设置范围财产数据存储内存

statflow数据对象从绑定对象的数据存储内存继承所有附加属性。

同一个模型层次结构中可以存在多个名称相同的本地和全局数据存储。在这种情况下,statflow数据对象绑定到最近的祖先数据存储。

存储和检索全局数据

在将statflow数据对象绑定到Simulink数据存储之后,您可以在状态和转换操作金宝app中存储和检索全局数据。数据对象充当一个全局变量,您可以通过它的符号名引用它。当您在这个变量中存储数值时,您是在向Simulink数据存储内存写入数据。金宝app当您从这个变量检索数值时,您是从数据存储内存中读取数据。

例如,在这个图表中,从数据存储内存块读取和写入的状态操作称为myglobal

使用数据存储的最佳实践

图表中的数据存储属性

当您将statflow数据对象绑定到数据存储时,statflow对象将从数据存储继承其所有属性。为了确保属性正确传播,当您创建Simulink数据存储时:金宝app

  • 指定数据类型汽车

  • 尽量减少使用自动模式属性。

跨多个模型共享数据存储内存

从多个模型访问全局数据存储:

  • 验证您的模型不包含任何数据存储内存块。您可以包括数据存储读取(金宝app模型)数据存储写(金宝app模型)块。

  • 在MATLAB®基本工作区,创建一个金宝app仿真软件。信号对象具有以下属性:

    • 数据类型转换为显式数据类型。数据类型不能为汽车

    • 完全指定.信号维数不能为-1或继承了

    • 完全指定复杂性.复杂性不可能汽车

    • 存储类ExportedGlobal

  • 在共享数据的每个图表中,将statflow数据对象绑定到Simulink数据存储中。金宝app

读取前先写入数据存储内存

为了避免算法延迟,在读取数据存储内存之前,先写入数据存储内存。否则,读取操作将检索存储在上一个时间步骤中的值,而不是当前时间步骤中计算和存储的值。当未连接块共享全局数据,而运行在不同的速率:

  • 将读操作与写操作分离到单独的块中。

  • 为块分配优先级,以便您的模型在读取块之前调用写块。有关更多信息,请参见控制和显示执行顺序(金宝app模型)

为了避免在同一时间步骤中无意中发生多个读和写的情况,可以启用数据存储内存块诊断:

  • 写前检测

  • 读后检测写

  • 写后检测写

如果使用数据存储内存块作为跨时间步骤积累值的持久全局存储区域,则可以通过禁用数据存储内存块诊断。有关更多信息,请参见数据存储诊断(金宝app模型)

另请参阅

(金宝app模型)|(金宝app模型)|(金宝app模型)|(金宝app模型)

相关的话题