Main Content

Data Store Memory

定义数据存储

  • Data Store Memory block

库:
Simulink / Signal Routing

描述

Data Store Memory 模块定义并初始化一个命名的共享数据存储,即一个内存区域,供指定相同数据存储名称的 Data Store ReadData Store Write 模块使用。

定义数据存储的 Data Store Memory 模块的位置确定了哪些 Data Store ReadData Store Write 模块可以访问该数据存储:

  • 如果 Data Store Memory 模块在顶层系统中,则模型中任意位置的 Data Store ReadData Store Write 模块都可以访问该数据存储。

  • 如果 Data Store Memory 模块在子系统中,则位于同一子系统或模型层次结构中该子系统下面的任何子系统中的 Data Store ReadData Store Write 模块都可以访问该数据存储。

  • 在引用模型中定义的 Data Store Read Data Store Write 模块可以访问存储在模型层次结构中更高级别的数据。

要允许 Data Store Read Data Store Write 模块从引用模型内部访问存储在模型层次结构中更高级别上的数据,请执行以下操作:

  • 在引用模型中放置 Data Store Memory 模块。

  • Data Store Memory 模块对话框中,选择数据存储引用

不要在 For Each 子系统中包含 Data Store Memory 模块。

要从数据存储获取正确的结果,必须确保数据存储按照预期的顺序进行读取和写入。有关详细信息,请参阅:

您可以使用 Data Store Memory 模块结合 Simulink.Signal 对象来定义数据存储,也可以不使用前者而只使用后者来定义数据存储。在基础工作区中定义的具有一个信号对象的数据存储是一个全局数据存储。每个模型都可以访问全局数据存储,包括所有引用的模型。有关详细信息,请参阅数据存储

您可以选择 Data Store ReadData Store WriteData Store Memory 模块来突出显示与其相关的模块。要在打开的图或新选项卡中显示相关模块,请在选择后出现的省略号上暂停。然后,从操作栏中选择相关模块 Related Blocks button。当多个模块对应于所选模块时,将打开一个相关模块列表。您可以通过在文本框中输入搜索词来过滤相关模块列表。从列表中选择相关模块后,窗口焦点转至显示该相关模块的打开的图或新选项卡。

参数

全部展开

常设

使用此模块指定您正在定义的数据存储的名称。具有相同名称的 Data Store ReadData Store Write 模块可以读取和写入由此模块初始化的数据存储。此名称可以代表一个 Data Store Memory 模块或者一个定义为数据存储的信号对象。

编程用法

模块参数DataStoreName
类型:字符向量
'A' | ...
默认值'A'

重命名 Data Store ReadData Store Write 模块使用的位于模型中任意位置的此数据存储。

限制

在下列情况下,不能使用全部重命名来重命名数据存储:

  • 在工作区中使用 Simulink.Signal 对象来管理为数据存储生成的代码

  • 使用 Simulink.Signal 对象而不是 Data Store Memory 模块来定义数据存储

在这些情况下,您必须从模型资源管理器中重命名相应的 Simulink.Signal 对象。有关示例,请参阅重命名信号对象定义的数据存储

当您需要 Simulink® 的子集访问在模型层次结构中的更高级别定义的 Data Store Memory 模块的元素时,请选择此选项。这些模块包括 Data Store Read 模块、Data Store Write 模块、S-Function 模块、MATLAB Function 模块、MATLAB System 模块和 Chart (Stateflow) 模块。

编程用法

模块参数DataStoreReference
类型character vector
'off'|'on'
默认值'off'

限制

当您选择数据存储引用参数时,以下信号属性不受支持:数据类型继承维度-1信号类型自动。您必须显式选择这些属性。

列出与当前模块具有相同数据存储名称且在当前系统中或者在模型层次结构中位于当前系统下面的任何子系统中的所有 Data Store ReadData Store Write 模块。点击某模块路径将在模型中显示并突出显示该模块。

信号属性

指定数据存储的一个或多个初始值。最小值参数指定此参数的最小值,最大值参数指定最大值。

如果指定非标量值,并将维度设置为 -1(默认值),数据存储的维度将与数组的维度相同。您(通过使用 Data Store Write 模块)写入数据存储的数据必须具有这些维度。

如果将维度参数设置为 -1 以外的值,初始值维度必须与您指定的维度相匹配,除非初始值是标量或 MATLAB® 结构体。如果指定标量,则数据存储的每个元素都使用该标量作为初始值。使用这种方法可将同一初始值(您指定的标量)应用到每个元素,而无需手动将初始值的维度与数据存储的维度进行匹配。

要使用此模块初始化非虚拟总线信号,请将初始值指定为 MATLAB 结构体,并将模型配置参数欠定初始化检测设置为简化。有关使用结构体初始化非虚拟总线信号的详细信息,请参阅指定总线元素的初始条件

编程用法

模块参数InitialValue
类型:字符向量
:标量 | 向量 | 矩阵 | N 维数组
默认值'0'

指定模块应输出的最小值。默认值为 [](未指定)。此数字必须为有限双精度实数标量值。

注意

如果您指定总线对象作为此模块的数据类型,请不要为模块上的总线数据设置最小值。Simulink 会忽略此设置。但请为指定作为数据类型的总线对象的总线元素设置最小值。有关总线元素的“最小值”属性的信息,请参阅 Simulink.BusElement

Simulink 使用最小值执行下列操作:

编程用法

模块参数OutMin
类型:字符向量
:标量
默认值'[ ]'

指定模块应输出的最大值。默认值为 [](未指定)。此数字必须为有限双精度实数标量值。

注意

如果您指定总线对象作为此模块的数据类型,请不要为模块的总线数据设置最大值。Simulink 会忽略此设置。但请为指定作为数据类型的总线对象的总线元素设置最大值。有关总线元素的“最大值”属性的信息,请参阅 Simulink.BusElement

Simulink 使用最大值执行下列操作:

编程用法

模块参数OutMax
类型:字符向量
:标量
默认值'[ ]'

指定输出数据类型。可以将其设置为:

  • 继承数据类型的规则(例如,Inherit: auto)

  • 内置数据类型的名称(例如,single)。

  • 数据类型对象的名称,例如 Simulink.NumericType 对象。

  • 计算结果为数据类型的表达式(例如,fixdt(1,16,0))。不要在表达式中将总线对象指定为数据类型,请使用 Bus: <object name> 指定总线数据类型。

  • 如果您有 Computer Vision Toolbox™,请使用 Simulink.ImageType (Computer Vision Toolbox) 对象的构造函数,并指定描述图像的属性。默认情况下,数据类型使用 Simulink.ImageType(480,640,3) 表达式,分别表示图像的行、列和通道。

数据类型助手可帮助您设置数据属性。要使用数据类型助手,请点击 the Show data type assistant button。有关详细信息,请参阅使用数据类型助手指定数据类型

编程用法

模块参数OutDataTypeStr
类型:字符向量
值:'Inherit: auto' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'boolean' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | 'string' | 'Enum: <class name>' | 'Simulink.ImageType(480,640,3)'
默认值:'Inherit: auto'

选择此参数可防止定点工具覆盖您在模块上指定的输出数据类型。有关详细信息,请参阅Use Lock Output Data Type Setting (Fixed-Point Designer)

编程用法

模块参数LockScale
类型:字符向量
值:'off' | 'on'
默认值:'off'

数据存储的维度。为默认值 -1 时,您可以使用初始值参数来设置数据存储的维度。但是,在这种情况下,不能将标量扩展用于初始值。您必须通过使用具有所需维度的数组来指定初始值。

如果使用除 -1 以外的值,则指定的维度必须与初始值参数的维度相同,除非将初始值指定为标量(用于标量扩展)或 MATLAB 结构体。如果数据存储表示总线数组,并且初始值使用 MATLAB 结构体,则可以指定维度以使用此结构体初始化总线数组。

编程用法

模块参数Dimensions
类型:字符向量
值:标量 | 向量 | 矩阵
默认值:'-1'

指定数据存储将向量初始值解释为一维。

默认情况下,MATLAB 将向量数据表示为具有两个维度的矩阵。例如,MATLAB 将向量 [1 2 3] 表示为一个 1×3 矩阵。

当选择此参数时,数据存储仅使用一维而不是二维来表示向量数据。例如,如果指定初始值 [1 2 3],数据存储将存储包含三个元素的一维向量。

有关详细信息,请参阅 确定源模块的输出维度

编程用法

模块参数VectorParams1D
类型:字符向量
'off' | 'on'
默认值'on'

指定数据存储内的值的数值类型(实数或复数)。

编程用法

模块参数SignalType
类型:字符向量
值:'auto' | 'real' | 'complex'
默认值:'auto'

在单一模型引用层次结构中,当使用多个 Model 模块来引用包含 Data Store Memory 模块的模型时,默认情况下,引用模型的每个实例(每个 Model 模块)都针对数据存储的一个单独副本进行读写。当您选择跨模型实例共享而不是与单独副本进行交互时,所有实例都针对同一数据存储进行读写。

将模型配置参数代码接口打包设置为可重用函数以从模型生成可重入代码 (Simulink Coder™) 时,选择了跨模型实例共享的数据存储在代码中将作为生成的入口函数可以直接访问的全局符号出现。例如,全局符号可以是一个全局变量,也可以是全局结构体变量中的一个字段。因此,您的代码对入口函数的每个调用(模型的每个实例)都会共享数据。

有关示例,请参阅Share Data Store Between Instances of a Reusable Algorithm。有关详细信息,请参阅在引用模型实例之间共享数据

编程用法

模块参数ShareAcrossModelInstances
类型:字符向量
值:'off' | 'on'
默认值:'off'

指定 Simulink 软件在编译模型时需在模型和基础工作区中搜索具有相同名称的 Simulink.Signal 对象,如符号解析中所述。如果 Simulink 找不到此类对象,将停止编译并显示错误。否则,Simulink 会将该信号对象的属性与 Data Store Memory 模块的对应属性进行比较。如果模块与对象的属性不一致,Simulink 将中断模型编译并显示错误。

编程用法

模块参数StateMustResolveToSignalObject
类型:字符向量
值:'off' | 'on'
默认值:'off'

诊断

选择当模型试图从在当前时间步中未曾写入数据的数据存储中读取数据时要执行的诊断操作。另请参阅模型配置参数 > 诊断 > 数据有效性 窗格的 Data Store Memory 模块部分中的 Detect read before write 诊断。

  • - 不产生任何响应。

  • 警告 - 显示警告并继续进行仿真。

  • 错误 - 终止仿真并显示错误。

编程用法

模块参数ReadBeforeWriteMsg
类型:字符向量
值:'none' | 'warning' | 'error'
默认值:'warning'

选择当模型试图向曾在当前时间步中读取过数据的数据存储中写入数据时要执行的诊断操作。另请参阅模型配置参数 > 诊断 > 数据有效性 窗格的 Data Store Memory 模块部分中的 Detect write after read 诊断。

  • - 不产生任何响应。

  • 警告 - 显示警告并继续进行仿真。

  • 错误 - 终止仿真并显示错误。

编程用法

模块参数WriteAfterReadMsg
类型:字符向量
值:'none' | 'warning' | 'error'
默认值:'warning'

选择当模型试图在当前时间步中连续两次向数据存储中写入数据时要执行的诊断操作。另请参阅模型配置参数 > 诊断 > 数据有效性 窗格的 Data Store Memory 模块部分中的 Detect write after write 诊断。

  • - 不产生任何响应。

  • 警告 - 显示警告并继续进行仿真。

  • 错误 - 终止仿真并显示错误。

编程用法

模块参数WriteAfterWriteMsg
类型:字符向量
值:'none' | 'warning' | 'error'
默认值:'warning'

记录

选择此选项可在仿真过程中将此信号的值保存到 MATLAB 工作区。

编程用法

模块参数DataLogging
类型:字符向量
值:'off' | 'on'
默认值:'off'

使用这一对控件(包括一个列表框和一个编辑字段)指定与记录的信号数据相关联的名称。

默认情况下,Simulink 使用信号名称作为其记录名称。要指定自定义记录名称,请从列表框中选择自定义,然后在旁边的编辑字段中输入自定义名称。

编程用法

模块参数DataLoggingNameMode
类型:字符向量
值:'SignalName' | 'Custom'
默认值:''

注意

如果将 DataLoggingNameMode 设置为 Custom,则必须使用 DataLoggingName 参数指定与记录信号数据相关联的名称。

模块参数:DataLoggingName
类型:字符向量
值:字符向量
默认值:''

放弃除最后 N 个数据点之外的所有数据点,其中 N 是您在旁边的编辑字段中输入的数字。有关详细信息,请参阅Log Data Stores

编程用法

模块参数DataLoggingMaxPoints
类型:字符向量
值:非零整数
默认值:'5000'

N 个数据点记录一次,其中 N 是您在相邻的编辑字段中输入的数字。例如,假设您的模型使用步长为 0.1 秒的定步长求解器。如果您选中此选项并接受默认抽取值 (2),Simulink 将在 0.00.20.4 秒等时间记录此信号的数据点。有关详细信息,请参阅Log Data Stores

编程用法

模块参数DataLoggingLimitDataPoints
类型:字符向量
值:非零整数
默认值:'2'

模块特性

数据类型

Boolean | bus | double | enumerated | fixed point | half | integer | single | string

直接馈通

多维信号

可变大小信号

过零检测

扩展功能

C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。

定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。

版本历史记录

在 R2006a 之前推出

全部展开