Simulink モデルの変数とオブジェクトの保存場所の決定
"モデル データ" はベース ワークスペースやデータ ディクショナリなどのワークスペースで作成するオブジェクトと変数です。モデル データには次が含まれます。
ブロック パラメーターの数値 (
Simulink.Parameter
オブジェクトや MATLAB® 変数など)信号 (
Simulink.Signal
オブジェクトなど)Simulink.ValueType
オブジェクトで定義される値のタイプデータ型
モデル コンフィギュレーション セット
シミュレーションの入力と出力のデータ
モデルのデータは設計に適した場所で保存、分割および共有できます。選択するストレージの場所は以下によって異なる場合があります。
モデル化の目的。
モデル アーキテクチャ (参照モデル、サブシステムやその他の分割方法) およびコンポーネントの構造体。
使用するデータの種類。
データの種類
"シミュレーション データ" は、シミュレーションの実行に使用される一連の入力データとシミュレーションによって生成される一連の出力データです。たとえば、シミュレーションで Inport ブロックによって取得される入力データを保存するために、変数を使用できます。シミュレーションでは出力データを Outport ブロック、To Workspace ブロック、ログ信号などでエクスポートできます。
現在の MATLAB セッションのシミュレーション データをベース ワークスペースに保存できます。このシミュレーション データを永続的に保存するには、MAT ファイルまたはスクリプト ファイルに保存します。シミュレーション データの読み込み、生成、保存についての詳細は、信号読み込みの手法の比較およびシミュレーション データのエクスポートを参照してください。
"設計データ" はモデル内のブロック パラメーターおよび信号特性を指定するために使用する一連の変数です。たとえば、設計データには、MATLAB の数値変数、値のタイプ オブジェクト、パラメーターと信号のデータ オブジェクト、データ型オブジェクト、バス オブジェクトが含まれます。
設計データは、ベース ワークスペース、モデル ワークスペースまたはデータ ディクショナリの [Design Data] セクションに保存できます。ローカルな設計データをモデルと共に永続的に保存するには、モデル ワークスペースを使用します。モデル間で設計データを共有するには、データ ディクショナリまたはベース ワークスペースを使用します。データ ディクショナリはデータを永続的に保存し、所有権の確立、可読性とメンテナンス性を向上させるためのデータの分割、変更の追跡のためのデータ スコープを制御できます。ベース ワークスペースを使用する場合、データを永続的に保存するためには、MAT ファイルまたはスクリプト ファイルに保存しなければなりません。
"コンフィギュレーション セット" はモデル コンフィギュレーション パラメーターのセットです。既定では、コンフィギュレーション セットはモデル ファイル内にあるため、モデルとは別に保存する必要はありません。ただし、これらのセットを他のモデルと共有することはできません。
モデル間でコンフィギュレーション セットを共有するためには、
Simulink.ConfigSet
オブジェクトを作成しなければなりません。それぞれのオブジェクトがスタンドアロンのコンフィギュレーション セットを表します。これらのオブジェクトはベース ワークスペースまたはデータ ディクショナリの [コンフィギュレーション] セクションに保存できます。データ ディクショナリを使用する場合、各コンフィギュレーション セットのスコープの定義、異なるコンフィギュレーション セットの比較および変更の追跡を行うことができます。データ ディクショナリでは、コンフィギュレーション セットは他の種類のデータから分割されます。
設計に合わせたデータの保存
次の表では、設計データとコンフィギュレーション セットを保存、分割および管理するために使用できる手法について説明します。
モデル化のシナリオ | シナリオの説明 | ストレージの場所と手法 |
---|---|---|
ラピッド プロトタイピングおよびモデルの実験 | Simulink® の使用方法を学びながら、一時的なデータ (ブロックの数値パラメーターを指定する変数など) を作成します。 モデル化手法を試します。作成したデータを永続的に保存する必要はありません。 | データをすばやく作成したり変更したりできるようにベース ワークスペースにデータを保存します。 |
スタンドアロン モデル | 他のシステムのデータに依存していない単一のモデルがあります。より大きなシステムの一部ではないため、モデルはスタンドアロンです。 | モデル ワークスペースにデータを保存し、モデルの移植性を向上します。モデル ワークスペースに保存できないデータを保存するためにデータ ディクショナリを使用します。 または、モデルのすべてのデータをデータ ディクショナリに保存します。ディクショナリを使用する場合、参照ディクショナリを使用することによってデータを分割できます。 |
スタンドアロンの参照モデル階層 | 他のシステムのデータに依存していない参照モデル階層があります。より大きなシステムの一部ではないため、階層はスタンドアロンです。 | ローカルなモデル データをそれぞれのモデル ワークスペースに保存します。 モデルが共有するデータ (バス オブジェクトやコンフィギュレーション セットなど) をデータ ディクショナリに保存します。階層内のすべてのモデルをディクショナリにリンクします。 例については、ディクショナリを使用するモデル参照階層の移行とデータ ディクショナリを使用した燃料制御システムのデータの管理を参照してください。 |
複数コンポーネントのシステム | モデルのシステムのコンポーネントを 1 つ以上のチームが保守しています。"コンポーネント" は、大規模なシステムの一部を表す単一のモデルまたは参照モデルの階層です。 | ローカルのモデル データをモデル ワークスペースに保存します。 コンポーネント内のモデルが共有するデータ (バス オブジェクトやコンフィギュレーション セットなど) をデータ ディクショナリに保存します。コンポーネント内のすべてのモデルをディクショナリにリンクします。 他の参照ディクショナリを使用してコンポーネントが共有するデータを保存します。 例については、データ ディクショナリを使用したモデル参照階層用のデータ分割を参照してください。 |
ストレージの場所
次のいずれかの場所を選択してデータを保存します。
MATLAB ベース ワークスペース。一時的なモデルで実験する間、変数を保存するためにベース ワークスペースを使用します。
モデル ワークスペース。モデルのローカルなデータを永続的に保存するためにモデル ワークスペースを使用します。
データ ディクショナリ。グローバル データの永続的な保存、モデル間のデータ共有、データに対して行われた変更の追跡を行うためにデータ ディクショナリを使用します。
次のチャートでは、それぞれのストレージの場所の機能と長所について説明します。
機能 | ベース ワークスペース | モデル ワークスペース | データ ディクショナリ |
---|---|---|---|
データ モデル リンク | 暗黙的 | 暗黙的 | ✓ |
データを定義するための統合インターフェイス | ✓ | ✓ | ✓ |
モデル データ依存性 | ✓ | ✓ | ✓ |
データ エントリの比較 | ✓ | ✓ | ✓ |
データ エントリの持続性 | ✓ | ✓ | |
不明な変数を修復するオプション | ✓ | ✓ | 追加オプション |
共有データ | ✓ | ✓ | |
データ グループ化 | ✓ | ||
データ エントリの変更の追跡 | ✓ | ||
コンフィギュレーション セットの変更の追跡 | ✓ | ||
データ エントリのマージと調整 | ✓ | ||
補助データの保存と分割 | ✓ | ||
要件のリンク | ✓ |
モデルによるワークスペースおよびワークスペース変数の操作方法の詳細については、記号の解釈を参照してください。
一時データ: ベース ワークスペース
一時的にデータを保存するためにはベース ワークスペースを使用します。
Simulink の使用方法を学習するとき
モデル化の手法を試す際にすばやく変数を作成する必要がある場合
データを永続的に保存する必要がない場合
ベース ワークスペース内に変数を作成するために、MATLAB コマンド プロンプトまたはモデル エクスプローラーを使用できます。ベース ワークスペース内に作成したデータは、開いているすべてのモデルで使用できます。
モデル内のブロックの数値パラメーターを変数を使用して指定した場合、コマンド プロンプトでコマンドを使用することでシミュレーションの最中にパラメーター値をプログラムによって変更できます。モデル ワークスペースまたはデータ ディクショナリ内に保存したパラメーターの値をプログラムによって変更するには、これらのストレージの場所に対応する関数インターフェイスを使用しなければなりません。
MATLAB セッションを終了する前にベース ワークスペースのデータを永続的に保存するには、データを MAT ファイルまたはスクリプト ファイルに保存します。後のセッションでファイルからデータを読み込むことができます。ただし、ベース ワークスペース内のデータに変更を行った場合は、再びデータをファイルに保存しなければなりません。データを永続的に保存するには、代わりにモデル ワークスペースまたはデータ ディクショナリの使用を検討します。
ローカル データ: モデル ワークスペース
関連付けられたモデル内でのみ使用するデータを保存するためにはモデル ワークスペースを使用します。このデータには次のものが含まれます。
定数パラメーター。たとえば、ブロック パラメーターの値を指定するために使用する数値変数。
信号やパラメーターの特性を制御するために使用する
Simulink.Signal
オブジェクトやSimulink.Parameter
オブジェクトなどのデータ オブジェクト。ただし、モデル ワークスペース内の信号オブジェクトはAuto
ストレージ クラスのみを使用できます。モデル ワークスペース内にAUTOSAR.Parameter
オブジェクトを保存した場合、コード ジェネレーターはオブジェクトに対して指定したストレージ クラスを無視します。データ型を指定するために使用する
Simulink.NumericType
オブジェクト。ただし、このオブジェクトをデータ型エイリアスとして使用することはできません。IsAlias
プロパティをfalse
に設定しなければなりません。モデルの引数。
データをモデル ワークスペースに保存することにより、モデルの移植性を高めたり、データの所有権を確立したりできます。この場合、データはモデルのファイルに永続的に保存されます。
モデル参照階層内で、各モデル ワークスペースは一意の名前空間として機能します。このため、同じ変数名を複数のモデル ワークスペース内で使用できます。その後モデルごとに一意の変数の値を代入できます。
モデル エクスプローラーを使用してモデル ワークスペースのデータを操作できます。また、コマンド プロンプトやスクリプトをモデル ワークスペースのプログラム インターフェイスと共に使用することもできます。
モデル ワークスペースを使用してローカル データを保存する方法についての詳細は、モデル ワークスペースを参照してください。
グローバル データおよび共有データ: データ ディクショナリ
データ ディクショナリはデータを永続的に保存するスタンドアロンのファイルです。データの分割、変更の追跡、アクセス制御、データ共有を行うためにベース ワークスペースの代わりにデータ ディクショナリを使用します。モデルをデータ ディクショナリにリンクする場合、モデルまたはディクショナリのいずれかからのアクセスを構成することで、引き続きベース ワークスペースで変数を使用できます。
モデル ワークスペースと同様に、データ ディクショナリを使用してデータをモデルと直接関連付けることができます。データ スコープの指定や所有権の確立のためにこの関連付けを使用できます。
ディクショナリを使用する場合、他の参照ディクショナリにデータを保存することによってデータを分割できます。ただし、ディクショナリ内の各エントリは一意な名前を使用しなければなりません。それぞれのディクショナリを別のファイルとして管理しなければなりません。
複数のモデルまたはシステム コンポーネントで共有されるデータを保存するためにデータ ディクショナリを使用します。このデータには次のものが含まれます。
ブロック パラメーターの値を指定するために複数のモデルで使用される数値変数。
複数のモデルのデータ型を一度に指定するために使用する
Simulink.AliasType
オブジェクトおよびSimulink.NumericType
オブジェクト。Auto
以外のストレージ クラスを使用する信号オブジェクト (Simulink.Signal
など) を含むデータ オブジェクト。Simulink Coder™ のライセンスをお持ちの場合、これらのオブジェクトは生成コード内でグローバル変数として表現される信号および調整可能なパラメーターを表現できます。参照モデルなどのモデル オブジェクトのインターフェイスを定義するために使用する
Simulink.ValueType
オブジェクトおよびSimulink.Bus
オブジェクト。複数のモデルの間でコンフィギュレーション パラメーターの統一性を維持するために使用する
Simulink.ConfigSet
オブジェクト。Simulink.data.dictionary.EnumTypeDefinition
オブジェクトを使用して保存する列挙型の定義。
モデル エクスプローラーを使用してディクショナリ データを操作できます。また、コマンド プロンプトやスクリプトをデータ ディクショナリのプログラム インターフェイスと共に使用することもできます。
データ ディクショナリの基本的な情報は、データ ディクショナリとはを参照してください。
コード生成に関する考慮事項
モデルから C コードを生成する場合 (Simulink Coder)、以下の考慮事項に注意してください。
生成コード内の信号またはブロックの状態の表示を制御するために、信号オブジェクト (
Simulink.Signal
など) にAuto
以外のストレージ クラスを適用する場合、オブジェクトをモデル ワークスペースに格納することはできません。ベース ワークスペースまたはデータ ディクショナリにオブジェクトを格納してください。信号および状態のストレージ クラスの詳細については、モデル インターフェイス要素の C コード生成の構成 (Simulink Coder)を参照してください。パラメーター オブジェクト (
Simulink.Parameter
など) にAuto
以外のストレージ クラスを適用する場合は、オブジェクトをベース ワークスペース、モデル ワークスペースまたはデータ ディクショナリに格納できます。ただし、オブジェクトをモデル ワークスペースに格納する場合、上位モデルがパラメーターを所有しているとコード ジェネレーターは想定します。詳細については、パラメーター オブジェクトの保存場所のコード生成への影響 (Simulink Coder)を参照してください。