主要内容

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

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

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

本地和全局数据存储内存

StateFlow图表可以与本地和全局数据存储连接。

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

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

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

绑定Stateflow数据到数据存储

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

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

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

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

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

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

存储和检索全局数据

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

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

使用数据存储的最佳实践

图表中的数据存储属性

将StateFlow Data对象绑定到数据存储时,StateFlow对象从数据存储继承其所有属性。要确保属性正确传播,请在创建Simulink数据存储时:金宝app

  • 指定除此之外的数据类型汽车

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

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

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

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

  • 在matlab.®基本工作区,创建一个金宝appsimulink.signal.具有这些属性的对象:

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

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

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

    • 存储类ExportedGlobal

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

阅读前写入数据存储内存

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

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

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

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

  • 在写之前检测读取

  • 读后检测写

  • 写后检测写

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

另请参阅

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

相关话题