モデルのコンフィギュレーション セットの管理
モデル コンフィギュレーション セットは、モデルのパラメーターに対する値の名前付きコレクションです。
モデルには、複数のパラメーター値のセットを関連付けることができます。モデルに関連付けられたコンフィギュレーション セットは、いずれかまたはすべてのコンフィギュレーション パラメーターに別の値を指定できます。"アクティブ" なコンフィギュレーションのパラメーター値がモデルに使用されます。アクティブなコンフィギュレーションは、モデルに連結されている任意のコンフィギュレーション セットに素早く変更できます。
次のような場合、モデルで複数のコンフィギュレーション セットを使用します。
いくつかのパラメーターの値を変更した後、モデルの実行の相違点を比較する。
モデルを異なるコンテキストで使用する際、モデルに異なるコンフィギュレーションを使用する。
この例では、モデル sldemo_fuelsys_dd
を、異なるソルバーを指定する 2 つのコンフィギュレーション セットを持つように設定します。その後、コンフィギュレーションの一方をモデル vdp
にコピーして、それを vdp
の既定のコンフィギュレーション セットと比較します。この例では、コンフィギュレーション セットを管理するためにコンフィギュレーション ダイアログ ボックスを使用します。コンフィギュレーションをプログラムで管理する方法の例については、スクリプトを使用したモデル コンフィギュレーションの自動化を参照してください。
コンフィギュレーション セットをモデル内で作成する
モデル sldemo_fuelsys_dd
には 1 つのコンフィギュレーション セットが含まれており、それには可変ステップ ソルバーが使用されています。固定ステップ ソルバーを使用する別のコンフィギュレーションを追加します。
モデルを開きます。コマンド ラインに
sldemo_fuelsys_dd
と入力します。モデル エクスプローラーを開きます。[モデル化] タブで [設計] 、 [モデル エクスプローラー] をクリックします。
[モデルの階層構造] ペインでモデル ノードを展開し、モデル名
sldemo_fuelsys_dd
を選択します。新しいコンフィギュレーション セットは次のいずれの方法でも作成できます。
[追加] メニューの [コンフィギュレーション] を選択します。
ツール バーの [コンフィギュレーションの追加] ボタン をクリックします。
モデルのノードの下の [Configurations] ノードを選択します。[コンテンツ] ペインで、既存のコンフィギュレーション セットを右クリックして、コンフィギュレーション セットをコピーして貼り付けます。
モデルのノードの下の [Configurations] ノードを選択します。新しいコンフィギュレーション セット
Configuration1
が [コンテンツ] ペインに表示されます。モデルのアクティブなコンフィギュレーションは、既定のコンフィギュレーションであるConfiguration
のままです。[コンテンツ] ペインで名前
Configuration1
をダブルクリックして、コンフィギュレーションの名前をFixedStepConfig
に変更します。固定ステップ ソルバーの指定は次のセクションで行います。コンフィギュレーション
Configuration
の名前をVariableStepConfig
に変更します。
コンフィギュレーション セットに含まれるコンフィギュレーション パラメーター値の変更
コンフィギュレーション セットのパラメーター値を変更するには、そのコンフィギュレーションの [コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。そのコンフィギュレーションがアクティブであるかどうかにかかわらず、コンフィギュレーション セットを開いて変更できます。
この例では、コンフィギュレーション FixedStepConfig
を変更して、既定の可変ステップ ソルバーの代わりに固定ステップ ソルバーを指定します。
モデル エクスプローラーを開きます。
モデルのノードを展開して、その下の [Configurations] ノードを選択します。
[コンテンツ] ペインでコンフィギュレーション セット
FixedStepConfig
を右クリックし、[開く] をクリックします。[コンフィギュレーション パラメーター] ダイアログ ボックスで、コンフィギュレーション セットが開きます。
メモ
コンフィギュレーション セットには独自の [コンフィギュレーション パラメーター] ダイアログ ボックスがあります。コンフィギュレーション セットの状態を変更すると、ダイアログ ボックスのタイトル バーがそれを反映して変わります。
[ソルバー] ペインで、[タイプ] パラメーターを
Fixed-step
に設定します。[OK] をクリックします。
これで、異なるソルバー タイプを使用する 2 つのコンフィギュレーション、VariableStepConfig
と FixedStepConfig
がモデルに含まれました。アクティブ コンフィギュレーションを変更してモデルをシミュレートすることで、ソルバーの設定がシミュレーションに与える影響を比較できます。
コンフィギュレーション セットをアクティブにする
モデルに関連付けられているコンフィギュレーション セットのうちアクティブなセットは常に 1 つだけです。アクティブ セットは、モデル パラメーターの現在の値を決定します。モデルの実行中を除いて、アクティブまたは非アクティブなセットのパラメーター値はいつでも変更できます。そうすることで、テスト用、量産用など、目的に応じてモデルをすばやく設定し直すことができます。
前のセクションで作成した固定ステップのコンフィギュレーションをアクティブにするには、以下を行います。
モデル エクスプローラーを開きます。
モデルのノードを展開して、その下の [Configurations] ノードを選択します。
[コンテンツ] ペインでコンフィギュレーション セット
FixedStepConfig
を右クリックし、[アクティブにする] をクリックします。アクティブなコンフィギュレーションには、コンフィギュレーション名の右側に (Active) と表示されます。
コンフィギュレーション セットをコピー、削除、移動する
モデル エクスプローラーの [モデルの階層構造] ペインに表示されるモデル間でコンフィギュレーション セットを削除、コピー、移動するには、[編集] またはコンテキスト メニューを使用します。
この例では、コンフィギュレーション FixedStepConfig
をモデル vdp
にコピーします。
モデル
vdp
を開き、モデル エクスプローラーを開きます。コマンド ラインに「openExample('VanDerPolOscillatorExample')
」と入力します。[モデルの階層構造] ペインで、モデル
sldemo_fuelsys_dd
のノードを展開して、その下の [コンフィギュレーション] ノードを選択します。[コンテンツ] ペインで
FixedStepConfig
を右クリックし、コンテキスト メニューで [コピー] をクリックします。[モデルの階層構造] ペインでモデル ノード
vdp
を右クリックし、[貼り付け] をクリックします。モデル
vdp
でコンフィギュレーションFixedStepConfig
をアクティブにします。
ドラッグ アンド ドロップを使用してコンフィギュレーション セットをコピーするには、マウスの右ボタンを押しながらコンフィギュレーション セットをコピーの作成先モデルの [コンフィギュレーション] ノードにドラッグします。
ドラッグ アンド ドロップを使用して、モデルからモデルにコンフィギュレーション セットを移動させるには、マウスの左ボタンを押しながらコンフィギュレーション セットを目的のモデルの [コンフィギュレーション] ノードまでドラッグします。
メモ
モデルのアクティブなコンフィギュレーション セットは移動も削除もできません。
コンフィギュレーション セットを保存する
コンフィギュレーション セットをモデルの内部に保存すると、モデルの保存時にコンフィギュレーション セットが保存されるようになります。または、コンフィギュレーションを他のモデルと共有するため、独立型のコンフィギュレーション セットとしてモデルの外部にコンフィギュレーション セットを保存することもできます。コンフィギュレーション セットは Simulink® データ ディクショナリに保存するか、MAT ファイルまたはスクリプトにエクスポートすることができます。独立型のコンフィギュレーション セットをベース ワークスペースに保存する場合、保存するにはそれを MAT ファイルかスクリプトにエクスポートしなければなりません。
Simulink データ ディクショナリ
コンフィギュレーション セットをモデルの外部に保存するには、Simulink データ ディクショナリにコンフィギュレーションを保存します。データ ディクショナリを使用して、コンフィギュレーションを共有およびアーカイブできます。そのコンフィギュレーションをモデルで使用するには、コンフィギュレーション参照を使用します。詳細については、コンフィギュレーションの複数のモデル間での共有を参照してください。
エクスポートされるファイル
コンフィギュレーション セットの設定は、MAT ファイル内の Simulink.ConfigSet
オブジェクトとして、または MATLAB® 関数またはスクリプトとして保存することもできます。異なるコンフィギュレーション セットの設定を比較する場合、コンフィギュレーション セットを MATLAB 関数またはスクリプトにエクスポートします。ただし、独立型のコンフィギュレーション セットを保持する必要がある場合には、コンフィギュレーションをファイルにエクスポートすることは推奨されません。コンフィギュレーション セットを使用するときに手動で読み込まなければならなくなるためです。代わりに、コンフィギュレーション セットを Simulink データ ディクショナリに保存してください。
この例では、モデル vdp
にコピーしたコンフィギュレーション セット FixedStepConfig
を、モデル エクスプローラーを使用して保存します。
モデル エクスプローラーを開きます。
[モデルの階層構造] ペインで、モデル ノード
vdp
を展開して、その下の [コンフィギュレーション] ノードを選択します。[コンテンツ] ペインで、コンフィギュレーション
FixedStepConfig
を右クリックして [エクスポート] を選択します。[コンフィギュレーションをファイルへエクスポート] ダイアログ ボックスで、ファイル名とファイルの種類を指定します。この例では、コンフィギュレーションを
FixedStepConfig.m
として保存します。.m
拡張子を指定すると、コンフィギュレーション セット オブジェクトを作成する MATLAB 関数がファイルに含まれます。.mat
拡張子を指定すると、コンフィギュレーション セット オブジェクトがファイルに含まれます。メモ
このファイル名にはモデル名と同じ名前を指定しないください。このファイル名がモデルと同じ名前になっていると、ソフトウェアがファイルを読み込むときに、どのファイルがコンフィギュレーション セット オブジェクトを含んでいるかを識別できません。
コンフィギュレーション セットを後のリリースで使用する場合、
.mat
拡張子を指定します。.m
拡張子を指定すると、まれに、依存関係の変更によってパラメーター値が変わることがあります。
[保存] をクリックします。Simulink はコンフィギュレーション セットを保存します。
保存したコンフィギュレーション セットを読み込む
モデル vdp
から保存したコンフィギュレーション セットを読み込むには、以下のようにします。
モデル
vdp
を開きます。モデル エクスプローラーを開きます。
[モデルの階層構造] ペインで、モデルを右クリックして、[コンフィギュレーション] 、 [インポート] を選択します。
[コンフィギュレーションをファイルからインポート] ダイアログ ボックスで、コンフィギュレーション セット オブジェクトを作成する関数を含む M ファイルまたは、コンフィギュレーション セット オブジェクトを含む MAT ファイルを選択します。この例では
FixedStepConfig.m
を選択します。[開く] をクリックします。Simulink はコンフィギュレーション セットを読み込みます。
メモ
無効なカスタム ターゲットを含むコンフィギュレーション セット オブジェクトを読み込むと、システム ターゲット ファイル (Simulink Coder)パラメーターが
[ert.tlc]
に設定されます。システムで使用できないコンポーネントを含むコンフィギュレーション セットを読み込むと、欠落しているコンポーネントのパラメーターが既定値にリセットされます。
コンフィギュレーション セットの比較
2 つのコンフィギュレーション セットを M ファイルまたは MAT ファイルとして保存すると、関数 visdiff
を使用して視覚的に比較できます。この関数は比較ツールを開き、2 つのファイルの相違点を示します。比較ツールの詳細については、Simulink モデルの比較を参照してください。
この例では、既定のコンフィギュレーション Configuration
を、モデル vdp
にコピーしたコンフィギュレーション FixedStepConfig
と比較します。
コンフィギュレーション セットを保存するに示すように、コンフィギュレーション
FixedStepConfig
をファイルFixedStepConfig.m
に保存します。同じ手順に従って、2 つ目のコンフィギュレーション
Configuration
をファイルDefaultConfig.m
に保存します。ファイルを比較します。
visdiff('FixedStepConfig.m','DefaultConfig.m');