コンフィギュレーションの複数のモデル間での共有
コンフィギュレーション セットを複数のモデル間で共有するには、Simulink® データ ディクショナリまたはベース ワークスペース内に、"独立型のコンフィギュレーション セット" として保存します。既定の設定では、コンフィギュレーション セットは単一モデル内に存在しているため、そのモデルのみが使用できます。独立型のコンフィギュレーション セットとは、複数のモデルで使用できるよう、モデルの外部に保存された Simulink.ConfigSet
オブジェクトのことです。
独立型のコンフィギュレーション セットをモデルで使用するには、独立型のコンフィギュレーション セットを指す "コンフィギュレーション参照" をモデルに作成します。その後、そのコンフィギュレーション参照を標準のコンフィギュレーション セットと同様の方法でアクティブにします。同一の独立型のコンフィギュレーション セットを複数のモデルから参照できます。
次のような場合、コンフィギュレーション参照を使用します。
同一のコンフィギュレーション パラメーターを複数のモデルで使用する。独立型のコンフィギュレーションでパラメーターの値を変更すると、変更はコンフィギュレーションを参照する各モデルに適用されます。
コンフィギュレーション セットをモデルの階層構造全体で共有するために、最上位モデルからその参照モデルへ参照を伝播することができます。詳細については、参照モデル間でコンフィギュレーションを共有するを参照してください。
モデル ファイルを変更せずに、任意の数のモデルのコンフィギュレーション パラメーターを変更する。コンフィギュレーション セットを Simulink データ ディクショナリに保存した場合、コンフィギュレーションのパラメーター値を変更するとデータ ディクショナリ ファイルが変更されます。データ ディクショナリにリンクされ、そのコンフィギュレーション セットを参照するモデルは新しい値を使用しますが、そのモデル ファイルは変わりません。
モデル ファイルを変更せずに、任意の数のモデルのコンフィギュレーション セットをすばやく置き換える。コンフィギュレーション セットを Simulink データ ディクショナリに保存した場合、同じくデータ ディクショナリに保存されている参照からそのコンフィギュレーションを指すことができます。そして、そのデータ ディクショナリのコンフィギュレーション参照を、モデルから参照できます。データ ディクショナリの参照を異なるコンフィギュレーション セットを指すように変更すると、モデルでは新しいコンフィギュレーションが使用されます。
コンフィギュレーション参照がベース ワークスペース内のコンフィギュレーションを参照する場合、
Simulink.ConfigSet
オブジェクトを表す変数を指します。変数に異なるコンフィギュレーション セットを割り当てると、そのコンフィギュレーション セットが変数を参照する各モデルに割り当てられます。
この例では、コンフィギュレーション セットを Simulink データ ディクショナリに保存し、そのコンフィギュレーション セットをデータ ディクショナリにリンクされたモデルから参照します。Simulink データ ディクショナリを作成してリンクするには、Simulink データ ディクショナリを使用するモデルの移行を参照してください。モデルに既に保存されているコンフィギュレーション セットを共有するには、参照モデル間でコンフィギュレーションを共有するに示すように、コンフィギュレーションを参照される独立型のコンフィギュレーションに変換します。
コンフィギュレーション セットをデータ ディクショナリ内で作成する
モデルから独立型のコンフィギュレーション セットを参照する前に、Simulink データ ディクショナリ内にコンフィギュレーションを作成し、それをモデルにリンクします。この例では、Simulink の機体のプロジェクトを使用します。プロジェクトには、Simulink データ ディクショナリ system_model
と、このデータ ディクショナリにリンクされた複数のモデルが含まれています。
プロジェクトを開きます。コマンド ラインに「
openExample('simulink/AirframeProjectExample')
」と入力します。プロジェクト フォルダーのフォルダー
data
で、Simulink データ ディクショナリsystem_model.sldd
をダブルクリックします。データ ディクショナリがモデル エクスプローラーで開きます。[モデルの階層構造] ペインで
system_model
のデータ ディクショナリ ノードを展開します。ノードを右クリックし、[空のセクションを表示] をクリックします。コンフィギュレーション ノードを選択し、[コンフィギュレーションの追加] ボタン をクリックします。コンフィギュレーション セット オブジェクトが [コンテンツ] ペインに既定の名前
Configuration
で表示されます。新しいコンフィギュレーションに
SharedConfig
という名前を付けます。
新しいコンフィギュレーションを参照することができるのは、データ ディクショナリ system_model.sldd
にアクセスできるモデルです。
コンフィギュレーション参照を作成して連結する
独立型のコンフィギュレーション セットをモデルで使用するには、このコンフィギュレーション セットを指すコンフィギュレーション参照をモデルに連結します。この例では、モデル LinearActuator
を使用します。このモデルは、新しいコンフィギュレーション SharedConfig
を含む Simulink データ ディクショナリ system_model.sldd
にリンクされています。
モデルを開きます。コマンド ラインに
LinearActuator
と入力します。モデル エクスプローラーの [モデルの階層構造] ペインでモデル ノードを選択します。
[追加] 、 [コンフィギュレーション参照] を選択するか、または [コンフィギュレーション参照の追加] ボタン をクリックします。
モデル ノードで [Configurations] をクリックします。
Reference
という名前の新しいコンフィギュレーション参照がリストされます。コンフィギュレーション参照に
LinActuatorRef
という名前を付けます。
新しいコンフィギュレーション参照がモデルに連結されます。ただし、これはまだ独立型のコンフィギュレーションを指しておらず、アクティブでもありません。設定を完了するため、コンフィギュレーション参照を関連付け、アクティブにします。
コンフィギュレーション参照を関連付ける
関連付けられていないコンフィギュレーション参照とは、有効なコンフィギュレーション セット オブジェクトを指定していないコンフィギュレーション参照のことです。前述の手順を使用してコンフィギュレーション参照を作成するとき、参照は関連付けられていません。
作成したコンフィギュレーション参照を関連付けるには、次のようにします。
[モデルの階層構造] ペインの
LinearActuator
モデルのモデル ノードで、コンフィギュレーション ノードを選択します。[コンテンツ] ペインで、関連付けられていないコンフィギュレーション参照LinActuatorRef
を選択します。右側のペインに、コンフィギュレーション参照が関連付けられていないことが示されます。
[名前] ドロップダウン メニューを使用して、データ ディクショナリ内に作成した
SharedConfig
を選択します。ヒント
コンフィギュレーション セットの代わりにコンフィギュレーション参照の名前を指定できます。ただし、この深さを超えるコンフィギュレーション参照の入れ子は、エラーとなります。
[適用] をクリックします。警告アイコンが消え、参照が独立型のコンフィギュレーション セットを指すようになります。
コンフィギュレーション参照が既に関連付けられている場合、この手順に従って参照するコンフィギュレーション セットを変更できます。
コンフィギュレーション参照をアクティブにする
コンフィギュレーション参照を作成してモデルに連結した後、参照されたコンフィギュレーションをモデルで使用するために参照をアクティブにします。
[モデルの階層構造] ペインの
LinearActuator
モデルのモデル ノードで、コンフィギュレーション ノードを選択します。[コンテンツ] ペインで、コンフィギュレーション参照LinActuatorRef
を選択します。コンフィギュレーション参照
LinActuatorRef
を右クリックし、[アクティブにする] を選択します。
コンフィギュレーション参照がアクティブのとき、モデル エクスプローラーの参照名は接尾辞 (Active)
が付いて表示されます。これで、独立型コンフィギュレーション セットから、モデルのコンフィギュレーション パラメーターを取得できるようになりました。
別のモデルでのコンフィギュレーション参照の作成
この例では、コンフィギュレーション セットを更新して、関連付けられたモデルへの影響を確認します。上述の処理を繰り返し、SharedConfig
を 2 つ目のモデルに次のように関連付けます。
モデル
NonLinearActuator
を開きます。このモデルも、独立型のコンフィギュレーション セットを含むデータ ディクショナリにリンクされています。モデル エクスプローラーで、モデル
NonLinearActuator
にコンフィギュレーション参照を追加します。コンフィギュレーション参照に
NonLinActuatorRef
という名前を付けます。参照を独立型のコンフィギュレーション セット
SharedConfig
に向けます。コンフィギュレーション参照をアクティブにします。
Simulink データ ディクショナリ内の同じコンフィギュレーション セット オブジェクトを参照するコンフィギュレーション参照が、両方のモデルに含まれるようになります。
参照するコンフィギュレーション セットのパラメーター値を変更する
独立型のコンフィギュレーション セットを編集するには、そのコンフィギュレーション セットを指す参照の [コンフィギュレーション参照] ダイアログ ボックスから、独立型のコンフィギュレーション セットを開きます。独立型のコンフィギュレーション セットに変更を加えると、それを参照するコンフィギュレーション参照に影響します (これらの参照内でオーバーライドされるパラメーターを除く)。モデルが参照しているコンフィギュレーション セットを編集するには、次のようにします。
コンフィギュレーション セットを参照するモデルの 1 つを開きます。この例では、モデル
LinearActuator
を開きます。[コンフィギュレーション参照] ダイアログ ボックスを開くには、[モデル化] タブで [モデル設定] ボタン をクリックします。[コンフィギュレーション参照] ダイアログ ボックスに、参照するコンフィギュレーション
SharedConfig
の読み取り専用表示が表示されます。このダイアログ ボックスでは、[コンフィギュレーション パラメーター] ダイアログ ボックスで行う場合と同じ方法で、パラメーターの参照、検索およびパラメーターの状況依存のヘルプの取得を行うことができます。[コンフィギュレーション参照] ダイアログ ボックスの上部にある [モデル コンフィギュレーション パラメーター] アイコン をクリックします。[コンフィギュレーション パラメーター] ダイアログ ボックスが開きます。これで、コンフィギュレーション セットの場合と同じように、パラメーター値を変更して適用できます。
メモ
コンフィギュレーション セットのオプションの中には、ある特定のモデルにアクションを実行するため、独立型のコンフィギュレーションでは使用できないものもあります。たとえば、[データのインポート/エクスポート] 、 [入力の接続] ボタンは、コンフィギュレーションを使用するモデルのルート Inport マッパーを開くため、独立型のコンフィギュレーション セットではサポートされません。
[ソルバー] ペインで、[タイプ] パラメーターを
Fixed-step
に設定します。[適用]、[OK] を順にクリックします。行った変更が [コンフィギュレーション参照] ダイアログ ボックスに表示されます。独立型のコンフィギュレーション
SharedConfig
を参照するモデルで、新しいソルバーが使用されます。
コンフィギュレーション参照のパラメーター値の変更
独立型のコンフィギュレーションに変更を加えることなく、独立型のコンフィギュレーション セットを参照するモデルの個々のパラメーター値をオーバーライドすることができます。オーバーライドされたパラメーターについては、参照コンフィギュレーション セットの値の代わりに、ローカルに割り当てた値が使用されます。たとえば、LinearActuator
と NonLinearActuator
が両方とも同一のモデルの階層構造にあるとします。LinearActuator
は必要に応じて何度でも参照できるようにし、NonLinearActuator
が 1 回を超えて参照された場合は Simulink がエラーを返すようにするとします。この例では、NonLinearActuator
モデルのみにおいて、[モデル参照] 、 [最上位モデルごとに可能なインスタンスの総数] パラメーターをオーバーライドします。
この例では、モデル NonLinearActuator
のコンフィギュレーション参照のパラメーターをオーバーライドします。
モデル
NonLinearActuator
を開きます。[コンフィギュレーション参照] ダイアログ ボックスを開くには、[モデル化] タブで [モデル設定] ボタン をクリックします。アクティブなコンフィギュレーション参照には、参照コンフィギュレーションの読み取り専用のビューが表示されます。
変更するパラメーターを右クリックして、コンテキスト メニューから [オーバーライド] を選択します。これで、コンフィギュレーション セットの場合と同じように、パラメーター値を変更できます。この例では、パラメーター [モデル参照] 、 [最上位モデルごとに可能なインスタンスの総数] をオーバーライドし、値を
One
に設定します。左側のペインでは、各ペインに含まれるオーバーライドされたパラメーターの数がペインごとに表示されます。
[適用] をクリックして変更を維持するか、[キャンセル] をクリックしてパラメーターを参照された値に復元します。
パラメーター値に対して行う変更は、パラメーターをオーバーライドおよび変更するコンフィギュレーション参照に対してのみ適用されます。参照コンフィギュレーション セットへのその他の参照には影響しません。この例では、モデル
NonLinearActuator
では最上位モデルの参照は 1 回のみ許可されますが、モデルLinearActuator
では最上位モデルを複数回参照することができます。
オーバーライドされたパラメーターを参照コンフィギュレーション セットの値に復元するには、オーバーライドされたパラメーターを右クリックして、コンテキスト メニューから [元に戻す] を選択します。オーバーライドされたパラメーターは参照コンフィギュレーションの値にリセットされ、再度読み取り専用になります。
参照するコンフィギュレーション セットを保存する
独立型のコンフィギュレーション セットを Simulink データ ディクショナリに保存した場合、データ ディクショナリを保存することで、コンフィギュレーションの変更を保存することができます。
モデルでベース ワークスペースに保存されたコンフィギュレーション セットを参照している場合、MATLAB® を終了する前に、参照しているコンフィギュレーション セットを MAT ファイルまたは MATLAB スクリプトに保存する必要があります。
モデル エクスプローラーを開いて、[モデルの階層構造] ペインで [Base Workspace] を選択します。
[コンテンツ] ペインで、参照するコンフィギュレーション セット オブジェクトの名前を右クリックします。
コンテキスト メニューから [エクスポート] を選択します。
コンフィギュレーション セットを保存するためのファイル名を MAT ファイルまたは MATLAB スクリプトとして指定します。
ヒント
モデルを再び開いたときに、保存したコンフィギュレーション セットを読み込まなければなりません。そうしないと、コンフィギュレーション参照は関連付けられません。コンフィギュレーション セット オブジェクトを自動的に読み込むようにモデルを設定するには、コールバックを使用したモデル動作のカスタマイズを参照してください。
保存した参照先コンフィギュレーション セットを読み込む
コンフィギュレーション参照が MAT ファイルまたは MATLAB スクリプトにエクスポートされたコンフィギュレーション セットを使用している場合、参照されるコンフィギュレーション セットをファイルからベース ワークスペースに読み込む必要があります。
モデル エクスプローラーを開いて、[モデルの階層構造] ペインで [Base Workspace] を右クリックします。
コンテキスト メニューの [インポート] を選択します。
保存したコンフィギュレーション セットのファイル名を指定して、[OK] を選択します。コンフィギュレーション セット オブジェクトがベース ワークスペースに表示されます。
コンフィギュレーション参照の制限事項
コンフィギュレーション参照は別のコンフィギュレーション参照を指すことができますが、2 つ目の参照を超えてコンフィギュレーション参照を入れ子にすることはできません。
カスタム ターゲットを使用しているときに、コンフィギュレーション参照をアクティブにすると、関数
ActivateCallback
は、対応する独立型のコンフィギュレーション セットの通知をトリガーしません。同様に、独立型のコンフィギュレーション セットが 1 つのターゲットを別のターゲットに切り替えると、関数ActivateCallback
は新しいターゲットの通知をトリガーしません。この動作は、アクティブなコンフィギュレーション参照がそのターゲットを指している場合にも起こります。関数ActivateCallback
の詳細については、rtwgensettings 構造体 (Simulink Coder)を参照してください。参照のすべてのパラメーターをオーバーライドできるわけではありません。たとえば、モデル参照階層で一貫していなければならないパラメーターなどはオーバーライドできません。