本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

Data Store Memory

定义数据存储

  • 库:
  • 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 ReadData Store Write 模块不能访问位于包含 Model 模块的模型中或引用模型中的 Data Store Memory 模块。

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

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

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

参数

全部展开

Main

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

编程用法

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

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

限制

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

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

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

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

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

Signal Attributes

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

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

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

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

编程用法

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

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

注意

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

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

编程用法

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

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

注意

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

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

编程用法

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

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

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

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

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

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

点击 Show data type assistant 按钮 以显示 Data Type Assistant,帮助您设置数据类型参数。有关详细信息,请参阅使用 Data Type Assistant 指定数据类型

编程用法

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

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

编程用法

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

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

如果使用除 -1 以外的值,则指定的维度必须与 Initial value 参数的维度相同,除非将初始值指定为标量(用于标量扩展)或 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 模块)都针对数据存储的一个单独副本进行读写。当您选择 Share across model instances 而不是与单独副本进行交互时,所有实例都针对同一数据存储进行读写。

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

有关示例,请参阅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'

通过选择目标包定义的信号对象类,来选择自定义存储类包。例如,要应用来自内置包 mpt 的自定义存储类,请选择 “mpt.Signal”。除非您对 Embedded Coder® 软件使用基于 ERT 的代码生成目标,否则自定义存储类不会影响生成的代码。

有关存储类的信息,请参阅将存储类应用于单个信号、状态和参数数据元素 (Simulink Coder)。有关自定义存储类的信息,请参阅Organize Parameter Data into a Structure by Using Struct Storage Class (Embedded Coder)

编程用法

模块参数:StateSignalObject
类型:字符向量
值:'Simulink.Signal' | ...
默认值:'Simulink.Signal'

应用您从列表中选择的存储类或自定义存储类。有关存储类的信息,请参阅将存储类应用于单个信号、状态和参数数据元素 (Simulink Coder)。有关自定义存储类的信息,请参阅Organize Parameter Data into a Structure by Using Struct Storage Class (Embedded Coder)

使用 Signal object classSimulink 以外的包中选择自定义存储类。

要以编程方式设置此参数,请使用 StateStorageClassStateSignalObject。请参阅将存储类应用于单个信号、状态和参数数据元素 (Simulink Coder)

编程用法

模块参数:StateStorageClass
类型:字符向量
值:'Auto' | 'Model default' | 'ExportedGlobal' | 'ImportedExtern' | 'ImportedExternPointer' | 'Custom' | ...
默认值:'Auto'

指定存储类型限定符,如 constvolatile

注意

在以后的版本中将删除 TypeQualifier。要将存储类型限定符应用于数据,请使用自定义存储类和内存段。除非您将基于 ERT 的代码生成目标与 Embedded Coder 一起使用,否则自定义存储类和内存段不会影响生成的代码。

在仿真期间,模块将使用以下值:

  • 状态名称解析成的信号对象的初始值

  • 信号对象的最小值和最大值

有关详细信息,请参阅数据对象

依存关系

要启用此参数,请将 Code generation storage class 设置为 “ExportedGlobal”、“ImportedExtern”、“ImportedExternPointer” 或 “Model default”。除非您以前为此参数设置了值,否则它将不会显示。

编程用法

模块参数:RTWStateStorageTypeQualifier
类型:字符向量
值:'' | 'const' | 'volatile' | ...
默认值:''

Diagnostics

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

  • None” - 不产生任何响应。

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

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

编程用法

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

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

  • None” - 不产生任何响应。

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

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

编程用法

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

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

  • None” - 不产生任何响应。

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

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

编程用法

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

Logging

选择此选项可在仿真过程中将此信号的值保存到 MATLAB 工作区。有关详细信息,请参阅信号日志记录

编程用法

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

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

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

编程用法

模块参数: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 | integer | single | string

直接馈通

多维信号

可变大小信号

过零检测

扩展功能

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

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

在 R2006a 之前推出