メインコンテンツ

Data Store Memory

R2026b

データ ストアの定義

  • Data Store Memory block

ライブラリ:
Simulink / Signal Routing

説明

Data Store Memory ブロックは、名前付き共有データストアを定義して初期化します。共有データストアとは、同じデータストア名を指定する Data Store Read ブロックおよび Data Store Write ブロックが使用できるメモリ領域です。

データ ストアを定義する Data Store Memory ブロックの位置によって、そのデータ ストアにアクセスできる Data Store Read ブロックおよび Data Store Write ブロックが決まります。

  • Data Store Memory ブロックが "最上位システム" 内にある場合、Data Store Read ブロックと Data Store Write ブロックはモデル内のどの位置にあっても、データストアにアクセスできます。

  • Data Store Memory ブロックが "サブシステム" 内にある場合、モデルの階層構造内で同じサブシステムかそれより下にあるサブシステム内の Data Store Read ブロックと Data Store Write ブロックが、データ ストアにアクセスできます。

  • 参照モデル内に定義されている Data Store Read ブロックまたは Data Store Write ブロックはモデルの階層構造のより高いレベルに格納されているデータにアクセスできます。

Data Store Read ブロックまたは Data Store Write ブロックが参照モデル内からモデルの階層構造のより高いレベルに格納されているデータにアクセスできるようにするには、以下のようにします。

  • Data Store Memory ブロックを参照モデル内に配置します。

  • Data Store Memory ブロック ダイアログ ボックスで、[データ ストア参照] を選択します。

For Each Subsystem に Data Store Memory ブロックを含めないでください。

データ ストアから正しい結果を得るためには、データ ストアの読み取りと書き込みが、所定の順序で行われる必要があります。詳細は、以下を参照してください。

R2026b 以降のバージョンでは、Simulink.DataStore オブジェクトを使用してデータ ストアを定義できます。 (R2026b 以降)

R2026b より前: Data Store Memory ブロックに加えて、またはその代わりとして、Simulink.Signal オブジェクトを使用してデータ ストアを定義することができます。信号オブジェクトのある "ベース" ワークスペースに定義されたデータ ストアは、"グローバル" データ ストアです。グローバル データ ストアは、すべての参照モデルを含むすべてのモデルにアクセスできます。詳細については、データ ストアを参照してください。

Data Store Read ブロック、Data Store Write ブロックまたは Data Store Memory ブロックを選択して、それに関連するブロックを強調表示できます。開いているブロック線図または新しいタブに関連するブロックを表示するには、選択後に表示される省略記号で一時停止します。その後、操作バーから [関連するブロック] Related Blocks button を選択します。選択したブロックに複数のブロックが対応している場合は、関連するブロックのリストが開きます。関連するブロックのリストはテキスト ボックスに検索語を入力してフィルターを適用できます。関連するブロックをリストから選択すると、関連するブロックが表示された開いているブロック線図または新しいタブにウィンドウのフォーカスが移ります。

string のサポート

Data Store Memory ブロックは、ブロックが [初期値] パラメーターの既定値 (0) 用に構成されている場合にのみ string データ型の受け入れおよび出力を行うことができます。

例

パラメーター

すべて展開する

メイン

このブロックで定義するデータ ストアの名前を指定します。同じ名前をもつ Data Store Read ブロックと Data Store Write ブロックは、このブロックによって初期化されたデータ ストアから読み取りおよび書き込みを行うことができます。この名前は、Data Store Memory ブロックを表すことも、データストアになるように定義された信号オブジェクトを表すこともできます。

プログラムでの使用

ブロック パラメーター: DataStoreName
型: 文字ベクトル
値: 'A' | ...
既定の設定: 'A'

Data Store Read ブロックと Data Store Write ブロックがモデル内で使用するすべての場所のこのデータ ストアの名前を変更します。

制限

次の場合、[すべての名前の変更] を使用してデータ ストアの名前を変更することはできません。

  • データ ストア用に生成されたコードを制御するのにワークスペース内の Simulink.Signal オブジェクトを使用している

  • データ ストアを定義するのに Data Store Memory ブロックではなく Simulink.Signal オブジェクトを使用している

代わりに、モデル エクスプローラーで対応する Simulink.Signal オブジェクトの名前を変更しなければなりません。例については、信号オブジェクトで定義されるデータ ストアの名前の変更を参照してください。

R2023b 以降

このオプションは、Simulink® ブロックのサブセットでモデルの階層構造のより高いレベルで定義されている Data Store Memory ブロックの要素にアクセスする必要がある場合に選択します。こうしたブロックには、Data Store Read ブロック、Data Store Write ブロック、S-Function ブロック、MATLAB Function ブロック、MATLAB System ブロック、および Chart (Stateflow) ブロックがあります。詳細については、Access Data Store at Higher Level in Model Hierarchyを参照してください。

プログラムでの使用

ブロック パラメーター: DataStoreReference
型: character vector
値: 'off'|'on'
既定の設定: 'off'

制限

[データ ストア参照] パラメーターを選択した場合、次の信号属性はサポートされません。[データ型] の [継承]、[次元] の -1、および [信号タイプ] の [自動]。これらの属性は明示的に選択する必要があります。

現在のブロックと同じデータストア名をもち、現在のシステムまたはモデルの階層構造内でそれより下にあるサブシステム内にある Data Store Read ブロックと Data Store Write ブロックがすべてリストされます。ブロック パスをクリックすると、モデル内のそのブロックが表示および強調表示されます。

信号属性

データ ストアに初期値を指定します。[最小値] パラメーターは、このパラメーターの最小値を指定し、[最大値] パラメーターは最大値を指定します。

非スカラー値を指定して、[次元] を -1 (既定値) に設定した場合、データ ストアの次元は配列と同じになります。データ ストアに (Data Store Write ブロックを使用して) 書き込むデータはこれらの次元でなければなりません。

[次元] パラメーターを -1 以外の値に設定した場合、初期値がスカラーまたは MATLAB® 構造体である場合を除き、初期値の次元と指定した次元は一致しなければなりません。スカラーを指定した場合、データ ストアの各要素は、初期値としてスカラーを使用します。この手法を使用して、初期値の次元をデータ ストアの次元に手動で合わせることなく、各要素に同じ初期値 (指定したスカラー) を適用します。

このブロックを使用して非バーチャル バス信号を初期化するには、初期値を MATLAB 構造体として指定し、モデル コンフィギュレーション パラメーターの指定不足の初期化の検出を [簡易] に設定します。構造体を使用した非バーチャル バス信号の初期化についての詳細は、Specify Initial Conditions for Bus Elementsを参照してください。

列挙データ型の場合、初期値は列挙クラスのメンバーでなければなりません。たとえば、Red、Yellow、Green の 3 つのメンバーをもつ列挙クラス TrafficLightColors があるとします。初期値として Green を指定するには、[初期値] フィールドに TrafficLightColors.Green を入力します。

For the data store named A, TrafficLightColors.Green is specified as the initial value for the enumerated type TrafficLightColors.

プログラムでの使用

ブロック パラメーター: InitialValue
型: 文字ベクトル
値: スカラー | ベクトル | 行列 | N 次元配列
既定の設定: '0'

ブロックが出力する最小値を指定します。既定値は [] (指定なし) です。この数値は有限の実数で double のスカラー値でなければなりません。

メモ

このブロックのデータ型としてバス オブジェクトを指定した場合、ブロックのバス データの最小値を設定しないでください。Simulink によりこの設定は無視されます。代わりに、データ型として指定したバス オブジェクトのバス要素の最小値を設定してください。バス要素の [最小値] プロパティの詳細については、Simulink.BusElement を参照してください。

Simulink は、最小値を使って以下を行います。

プログラムでの使用

ブロック パラメーター: OutMin
型: 文字ベクトル
値: スカラー
既定の設定: '[ ]'

ブロックが出力する最大値を指定します。既定値は [] (指定なし) です。この数値は有限の実数で double のスカラー値でなければなりません。

メモ

このブロックのデータ型としてバス オブジェクトを指定した場合、ブロックのバス データの最大値を設定しないでください。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'

固定小数点ツールが、ブロックに指定した [出力] データ型をオーバーライドしないようにするには、このパラメーターを選択します。詳細については、[出力データ型の設定をロックする] の使用 (Fixed-Point Designer)を参照してください。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

パラメーター: LockScale
値: 'off' (既定値) | 'on'

データ ストアの次元。既定の値 -1 を使用すると、[初期値] パラメーターでデータ ストアの次元を設定できます。ただし、この場合、初期値にスカラー拡張を使用することはできません。必要な次元数をもつ配列を使用して初期値を指定しなければなりません。

-1 以外の値を使用すると、初期値をスカラー (スカラー拡張用) または MATLAB 構造体として指定した場合を除き、[初期値] パラメーターと同じ次元を指定します。データ ストアがバス配列を表し、初期値に MATLAB 構造体を使用している場合、次元を指定して、この構造体でバス配列を初期化できます。

プログラムでの使用

ブロック パラメーター: Dimensions
型: 文字ベクトル
値: スカラー | ベクトル | 行列
既定の設定: '-1'

データ ストアがベクトルの初期値を 1 次元として解釈するよう指定します。

既定では、MATLAB はベクトル データを 2 次元の行列として表現します。たとえば、MATLAB は、ベクトル [1 2 3] を 1 行 3 列の行列として表現します。

このパラメーターを選択すると、データ ストアは 2 次元ではなく 1 次元のみを使用してベクトル データを表現します。たとえば、[1 2 3] を初期値に指定した場合、データ ストアは 3 つの要素をもつ 1 次元ベクトルを格納します。

詳細については、ソース ブロックの出力の次元の決定を参照してください。

プログラムでの使用

ブロック パラメーター: VectorParams1D
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'on'

データ ストアに格納される値の数値型 (実数または複素数) を指定します。

プログラムでの使用

ブロック パラメーター: SignalType
型: 文字ベクトル
値: 'auto' | 'real' | 'complex'
既定の設定: 'auto'

単一のモデル参照階層で、複数の Model ブロックを使用して Data Store Memory ブロックが含まれるモデルを参照する場合、既定では、参照モデル (各 Model ブロック) の各インスタンスはデータストアの個別のコピーに対して読み書きを行います。[モデル インスタンス間で共有する] を選択すると、個別のコピーを操作する代わりに、すべてのインスタンスが同じデータ ストアに対して読み書きを行います。

モデル コンフィギュレーション パラメーターの [コード インターフェイスのパッケージ化] を [再利用可能な関数] に設定し、モデル (Simulink Coder™) から再呼び出し可能なコードを生成すると、[モデル インスタンス間で共有する] が選択されているデータ ストアがエントリポイント関数を直接アクセスして生成したグローバル シンボルとしてコードに表示されます。たとえば、グローバル シンボルはグローバル変数またはグローバル構造体変数のフィールドです。したがって、エントリポイント関数に対してコードが行う各呼び出し (モデルの各インスタンス) でデータが共有されます。

例については、再利用可能なアルゴリズムの複数のインスタンス間でのデータの共有を参照してください。詳細については、参照モデル インスタンス間でのデータの共有を参照してください。

プログラムでの使用

ブロック パラメーター: 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'
既定の設定: 'none'

モデルがデータ ストアからデータを読み取った後、現在のタイム ステップでモデルがデータ ストアにデータを書き込もうとしたときに、行う診断アクションを選択します。[モデル コンフィギュレーション パラメーター] 、 [診断] 、 [データ有効性] ペインの [Data Store Memory ブロック] セクションのDetect write after read診断も参照してください。

  • なし — 応答しません。

  • 警告 — 警告が表示され、シミュレーションは続行されます。

  • エラー — シミュレーションを終了し、エラーを表示します。

プログラムでの使用

ブロック パラメーター: WriteAfterReadMsg
型: 文字ベクトル
値: 'none' | 'warning' | 'error'
既定の設定: 'none'

現在のタイム ステップで、モデルが 2 度連続してデータ ストアにデータを書き込もうとしたときに、行う診断アクションを選択します。[モデル コンフィギュレーション パラメーター] 、 [診断] 、 [データ有効性] ペインの [Data Store Memory ブロック] セクションのDetect write after write診断も参照してください。

  • なし — 応答しません。

  • 警告 — 警告が表示され、シミュレーションは続行されます。

  • エラー — シミュレーションを終了し、エラーを表示します。

プログラムでの使用

ブロック パラメーター: WriteAfterWriteMsg
型: 文字ベクトル
値: 'none' | 'warning' | 'error'
既定の設定: 'warning'

ログ

シミュレーション時にこの信号の値を MATLAB ワークスペースに保存するには、このオプションを選択します。

プログラムでの使用

ブロック パラメーター: DataLogging
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

リスト ボックスと編集フィールドで構成されるこのコントロールのペアを使用して、ログに記録された信号データに関連付けられた名前を指定します。

既定の設定で、Simulink は信号名をログ名として使用します。独自のログ名を指定するには、リスト ボックスから [カスタム] を選択し、隣接する編集フィールドにカスタム名を入力します。

プログラムでの使用

ブロック パラメーター: DataLoggingNameMode
型: 文字ベクトル
値: 'SignalName' | 'Custom'
既定の設定: 'SignalName'

DataLoggingNameMode を 'Custom' に設定すると、DataLoggingName パラメーターを使用して、ログに記録された信号データに関連付けられた名前を指定しなければなりません。

ブロック パラメーター: DataLoggingName
型: 文字ベクトル
値: 文字ベクトル
既定の設定: ''

最後の N 個のデータ点を除いて、すべて破棄します。ここで、N は隣の編集フィールドに入力された値です。詳細については、データ ストアのログ記録を参照してください。

プログラムでの使用

ブロック パラメーター: DataLoggingLimitDataPoints
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'
ブロック パラメーター: DataLoggingMaxPoints
型: 文字ベクトル
値: 非ゼロの整数
既定の設定: '5000'

N 個ごとに 1 個のデータ点のログを作成します。ここで、N は隣の編集フィールドに入力された値です。たとえば、ステップ サイズが 0.1 の固定ステップ ソルバーをモデルで使用するとします。このオプションを選択し、既定の間引き値 (2) を受け入れると、この信号のデータ点が時間 0.0、0.2、0.4 などで記録されます。詳細については、データ ストアのログ記録を参照してください。

プログラムでの使用

ブロック パラメーター: DataLoggingDecimateData
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'
ブロック パラメーター: DataLoggingDecimation
型: 文字ベクトル
値: 非ゼロの整数
既定の設定: '2'

ブロックの特性

データ型

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

直達

はい

多次元信号

はい

可変サイズの信号

はいa

ゼロクロッシング検出

いいえ

a Supports only unbounded variable-size signals for versions R2023b or later.

拡張機能

すべて展開する

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。

バージョン履歴

R2006a より前に導入

すべて展開する