Documentation

我们为许可用户提供了部分翻译好的中文文档。您只需登录便可查阅这些文档

Data Store Memory

Define data store

Library

Signal Routing

Description

The Data Store Memory block defines and initializes a named shared data store, which is a memory region usable by Data Store Read and Data Store Write blocks that specify the same data store name.

The location of the Data Store Memory block that defines a data store determines which Data Store Read and Data Store Write blocks can access the data store:

  • If the Data Store Memory block is in the top-level system, Data Store Read and Data Store Write blocks anywhere in the model can access the data store.

  • If the Data Store Memory block is in a subsystem, Data Store Read and Data Store Write blocks in the same subsystem or in any subsystem below it in the model hierarchy can access the data store.

Data Store Read or Data Store Write blocks cannot access a Data Store Memory block that is either in a model that contains a Model block or in a referenced model.

Do not include a Data Store Memory block in a subsystem that a For Each Subsystem block represents.

Obtaining correct results from data stores requires ensuring that data store reads and writes occur in the expected order. For details, see:

You can use Simulink.Signal objects in addition to, or instead of, Data Store Memory blocks to define data stores. A data store defined in the base workspace with a signal object is a global data store. Global data stores are accessible to every model, including all referenced models. See Data Stores for more information.

Data Type Support

The Data Store Memory block stores real or complex signals of these data types:

  • Floating point

  • Built-in integer

  • Fixed point

  • Boolean

  • Enumerated

  • Bus

The block does not support variable-size signals.

    Note:   If you specify a bus object as the data type for this block, do not set the minimum and maximum values for bus data on the block. Simulink® ignores these settings. Instead, set the minimum and maximum values for bus elements of the bus object specified as the data type. The values should be finite real double scalar.

    For information on the Minimum and Maximum properties of a bus element, see Simulink.BusElement.

For more information, see Data Types Supported by Simulink in the Simulink documentation.

You can use arrays of buses with a Data Store Memory block. For details about defining and using an array of buses, see Combine Buses into an Array of Buses.

Parameters

Data store name

Specify a name for the data store you are defining with this block. Data Store Read and Data Store Write blocks with the same name can read from, and write to, the data store initialized by this block. The name can represent a Data Store Memory block or a sign object defined to be a data store.

Rename All

Rename the data store everywhere the Data Store Read and Data Store Write blocks use it in a model.

You cannot use Rename All to rename a data store if you:

  • Use a Simulink.Signal object in a workspace to control the code generated for the data store

  • Use a Simulink.Signal object instead of a Data Store Memory block to define the data store

You must instead rename the corresponding Simulink.Signal object from Model Explorer. For an example, see Rename Data Store Defined by Signal Object.

Corresponding Data Store Read/Write blocks

List all the Data Store Read and Data Store Write blocks that have the same data store name as the current block, and that are in the current system or in any subsystem below it in the model hierarchy. Double-click a block in this list to highlight the block and bring it to the foreground.

Initial value

Specify the initial value or values of the data store. The Minimum parameter specifies the minimum value for this parameter, and the Maximum parameter specifies the maximum value.

If you specify a nonscalar value and set Dimensions to -1 (the default), the data store has the same dimensions as the array. Data that you write to the data store (by using Data Store Write blocks) must have these dimensions.

If you set the Dimensions parameter to a value other than -1, the initial value dimensions must match the dimensions that you specify, unless the initial value is a scalar or a MATLAB® structure. If you specify a scalar, each element of the data store uses the scalar as the initial value. Use this technique to apply the same initial value (the scalar that you specify) to each element without manually matching the dimensions of the initial value with the dimensions of the data store.

To use this block to initialize a nonvirtual bus signal, specify the initial value as a MATLAB structure and set the model configuration parameter Underspecified initialization detection to Simplified. For more information about initializing nonvirtual bus signals using structures, see Specify Initial Conditions for Bus Signals.

Minimum

Specify the minimum value that the block should output. The default value is [] (unspecified). This number must be a finite real double scalar value.

    Note:   If you specify a bus object as the data type for this block, do not set the minimum value for bus data on the block. Simulink ignores this setting. Instead, set the minimum values for bus elements of the bus object specified as the data type. For information on the Minimum property of a bus element, see Simulink.BusElement.

Simulink uses the minimum value to perform:

Maximum

Specify the maximum value that the block should output. The default value is [] (unspecified). This number must be a finite real double scalar value.

    Note:   If you specify a bus object as the data type for this block, do not set the maximum value for bus data on the block. Simulink ignores this setting. Instead, set the maximum values for bus elements of the bus object specified as the data type. For information on the Maximum property of a bus element, see Simulink.BusElement.

Simulink uses the maximum value to perform:

Data type

Specify the output data type. You can set it to:

  • A rule that inherits a data type (for example, Inherit: auto)

  • The name of a built-in data type (for example, single)

  • The name of a data type object (for example, a Simulink.NumericType object)

  • An expression that evaluates to a data type (for example, fixdt(1,16,0)). Do not specify a bus object as the data type in an expression; use Bus: <object name> to specify a bus data type.

  • Bus: <object name>; enter the name of a bus object that you want to use to define the structure of the bus. The bus must be a nonvirtual bus. If you need to create or change a bus object, click the Show data type assistant button and then click the Edit button to the right of the Bus object field to open the Simulink Bus Editor. For details, see Create Bus Objects with the Bus Editor.

Click the Show data type assistant button to display the Data Type Assistant, which helps you set the Data type parameter.

See Control Signal Data Types.

Lock output data type setting against changes by the fixed-point tools

Select to lock the output data type setting of this block against changes by the Fixed-Point Tool and the Fixed-Point Advisor. For more information, see Use Lock Output Data Type Setting.

Signal type

Specify the numeric type, real or complex, of the values in the data store.

Dimensions (-1 to infer from Initial value)

Dimensions of the data store. The default value, -1, enables you to set the dimensions of the data store by using the Initial value parameter. However, in this case, you cannot use scalar expansion with the initial value. You must specify the initial value by using an array that has the dimensions that you want.

If you use a value other than -1, specify the same dimensions as the dimensions of the Initial value parameter, unless you specify the initial value as a scalar (for scalar expansion) or a MATLAB structure. If the data store represents an array of buses, and if you use a MATLAB structure for the initial value, you can specify dimensions to initialize the array of buses with this structure.

Interpret vector parameters as 1-D

Specify that the data store interpret vector initial values as one-dimensional.

By default, MATLAB represents vector data as matrices, which have two dimensions. For example, MATLAB represents the vector [1 2 3] as a 1-by-3 matrix.

When you select this parameter, the data store represents vector data by using only one dimension instead of two. For example, if you specify an initial value of [1 2 3], the data store stores a one-dimensional vector with three elements.

For more information, see Determining the Output Dimensions of Source Blocks.

Data store must resolve to Simulink signal object

Specify that Simulink software, when compiling the model, searches the model and base workspace for a Simulink.Signal object having the same name, as described in Symbol Resolution. If Simulink does not find such an object, the compilation stops, with an error. Otherwise, Simulink compares the attributes of the signal object to the corresponding attributes of the Data Store Memory block. If the block and the object attributes are inconsistent, Simulink halts model compilation and displays an error.

Signal object class

Choose a custom storage class package by selecting a signal object class that the target package defines. For example, to apply custom storage classes from the built-in package mpt, select mpt.Signal. Unless you use an ERT-based code generation target with Embedded Coder® software, custom storage classes do not affect the generated code.

For information about storage classes, see Control Signals and States in Code by Applying Storage Classes. For information about custom storage classes, see Control Data Representation by Applying Custom Storage Classes.

To programmatically set this parameter, use StateSignalObject. See Control Signals and States in Code by Applying Storage Classes.

Storage class

Applies the storage class or custom storage class that you select from the list. For information about storage classes, see Control Signals and States in Code by Applying Storage Classes. For information about custom storage classes, see Control Data Representation by Applying Custom Storage Classes.

Use Signal object class to select custom storage classes from a package other than Simulink.

To programmatically set this parameter, use StateStorageClass or StateSignalObject. See Control Signals and States in Code by Applying Storage Classes.

TypeQualifier

Specify a storage type qualifier such as const or volatile.

Setting Storage class to ExportedGlobal, ImportedExtern, ImportedExternPointer, or SimulinkGlobal enables this parameter. This parameter is hidden unless you previously set its value.

    Note:   TypeQualifier will be removed in a future release. To apply storage type qualifiers to data, use custom storage classes and memory sections. Unless you use an ERT-based code generation target with Embedded Coder software, custom storage classes and memory sections do not affect the generated code.

See Discrete Block State Naming in Generated Code in the Simulink Coder™ documentation for more information.

Detect read before write

Select the diagnostic action to take if the model attempts to read data from a data store to which it has not written data in this time step. See also the Detect read before write diagnostic in the Data Store Memory block section of the Model Configuration Parameters > Diagnostics > Data Validity pane.

Default: warning

none

Take no action.

warning

Display a warning.

error

Terminate the simulation and display an error message.

Detect write after read

Select the diagnostic action to take if the model attempts to write data to the data store after previously reading data from it in the current time step. See also the Detect write after read diagnostic in the Data Store Memory block section of the Model Configuration Parameters > Diagnostics > Data Validity pane.

Default: warning

none

Take no action.

warning

Display a warning.

error

Terminate the simulation and display an error message.

Detect write after write

Select the diagnostic action to take if the model attempts to write data to the data store twice in succession in the current time step. See also the Detect write after write diagnostic in the Data Store Memory block section of the Model Configuration Parameters > Diagnostics > Data Validity pane.

Default: warning

none

Take no action.

warning

Display a warning.

error

Terminate the simulation and display an error message.

Log signal data

Select this option to save the values of this signal to the MATLAB workspace during simulation. See Signal Logging for details.

Logging name

Use this pair of controls, consisting of a list box and an edit field, to specify the name associated with logged signal data.

Simulink uses the signal name as its logging name by default. To specify a custom logging name, select Custom from the list box and enter the custom name in the adjacent edit field.

Data

Use this group of controls to limit the amount of data that Simulink logs for this signal.

  • Limit data points to last: Discard all but the last N data points, where N is the number that you enter in the adjacent edit field.

  • Decimation: Log every Nth data point, where N is the number that you enter in the adjacent edit field. For example, suppose that your model uses a fixed-step solver with a step size of 0.1 s. If you select this option and accept the default decimation value (2), Simulink records data points for this signal at times 0.0, 0.2, 0.4, and so on.

For more information, see Log Data Stores

Characteristics

Data Types

Double | Single | Boolean | Base Integer | Fixed-Point | Enumerated | Bus

Multidimensional Signals

Yes

Variable-Size Signals

No

Code Generation

Yes

Introduced before R2006a

Was this topic helpful?