スクリプトを使用したモデル コンフィギュレーションの自動化
同一のコンフィギュレーション設定を多くのモデルで使用する場合、プログラムによって各モデルを同じように設定するスクリプトを記述することができます。スクリプトを使用して、モデルが使用するコンフィギュレーション設定をアーカイブし、比較することができます。
この例では、モデルのコンフィギュレーションをプログラムで設定する、次の 3 つの異なる方法を説明します。
モデルの既存のアクティブなコンフィギュレーション セットを編集する
モデル内に新しいコンフィギュレーション セットを作成し、編集する
独立型のコンフィギュレーション セットを指すコンフィギュレーション参照を作成する
この例では、damped_nonlin_spring
モデルを使用します。
model = 'damped_nonlin_spring';
open_system(model);
アクティブなコンフィギュレーション セットの編集
モデルに関連付けられたコンフィギュレーション セットを操作するには、コンフィギュレーション セットを表す ConfigSet
オブジェクトを使用します。この例では、モデルでアクティブになっているコンフィギュレーションを使用します。
activeConfigObj = getActiveConfigSet(model);
get_param(activeConfigObj,'Name')
ans = 'Configuration'
モデルでアクティブになっているコンフィギュレーションは Configuration
です。このコンフィギュレーションのパラメーターの現在の値を確認するには、関数 get_param
と ConfigSet
オブジェクトを使用します。
get_param(activeConfigObj,'StopTime')
ans = '10'
コンフィギュレーション セットの名前を UpdatedConfig
に変更します。
set_param(activeConfigObj,'Name','UpdatedConfig');
この例では、終了時間を 200
に設定し、ソルバーのタイプを可変ステップ ソルバーに変更します。
set_param(activeConfigObj,'StopTime','200'); set_param(activeConfigObj,'SolverType','Variable-step');
コンフィギュレーション セットの作成とアクティベーション
モデルのコンフィギュレーションを変更して、アクティブなコンフィギュレーションの元のパラメーター値を保持するには、モデルに新しいコンフィギュレーション セットを作成してアクティブにします。別のコンフィギュレーション セットを作成するには、既存のコンフィギュレーション セットをコピーして、そのコピーをモデルに連結します。コピーを連結するときに名前の競合が起こらないよう、連結する前にコピーの名前を変更するか、attachConfigSet
のオプションの 3 番目の引数である allowRename
を true
に設定します。
この例では、アクティブなコンフィギュレーション セットをコピーします。コピーの名前を ConfigCopy
に変更し、モデルに連結します。
newConfigObj = copy(activeConfigObj); set_param(newConfigObj,'Name','ConfigCopy'); attachConfigSet(model, newConfigObj);
コンフィギュレーション セットをモデルに連結するとき、そのセットは非アクティブです。非アクティブなコンフィギュレーションは、アクティブなコンフィギュレーション セットを操作するのと同じ方法で操作できます。新しいコンフィギュレーションを使用するには、モデルでアクティブにします。
set_param(newConfigObj,'SolverType','Fixed-step'); setActiveConfigSet(model,'ConfigCopy'); activeConfigSet = getActiveConfigSet(model); get_param(activeConfigSet,'Name')
ans = 'ConfigCopy'
これで、ConfigCopy
がアクティブなコンフィギュレーション セットになりました。
コンフィギュレーション参照のセットアップ
コンフィギュレーション セットをモデルの外部に保存するには、モデルにコンフィギュレーション参照をセットアップするスクリプトを記述します。参照はモデル内に保存され、Simulink® データ ディクショナリまたはベース ワークスペースのいずれかに保存された独立型のコンフィギュレーション セットを指します。独立型のコンフィギュレーション セットとコンフィギュレーション参照は、1 つのコンフィギュレーションを複数のモデルで共有するために使用します。また、独立型のコンフィギュレーション セットは、モデル ファイルを変更せずにコンフィギュレーションを編集するためにも使用できます。
この例では、モデル vdp
がコンフィギュレーション参照を使用するよう設定します。まず、モデルのアクティブなコンフィギュレーション セットをコピーして、ベース ワークスペース内に独立型のコンフィギュレーション セットを作成します。独立型のコンフィギュレーションは、変数 freeConfigSet
によって表される ConfigSet
オブジェクトです。既存の独立型のコンフィギュレーション セットを参照する場合、この手順は省略できます。
model = 'vdp';
open_system(model)
freeConfigSet = copy(getActiveConfigSet(model));
コンフィギュレーション参照を作成します。参照を独立型のコンフィギュレーション セットに向けるには、SourceName
プロパティをコンフィギュレーションを表す変数 freeConfigSet
に設定します。新しい参照は、変数 configRef
によって表される ConfigSetRef
オブジェクトです。参照 vdpConfigRef
に名前を付けます。
configRef = Simulink.ConfigSetRef; set_param(configRef,'SourceName','freeConfigSet') set_param(configRef,'Name','VdpConfigRef')
ConfigSetRef
オブジェクトを使用して、コンフィギュレーション参照をモデル vdp
に連結します。参照は 1 つのモデルのみに連結できます。モデルでコンフィギュレーション参照を使用するには、それをアクティブにします。
attachConfigSet('vdp',configRef); setActiveConfigSet('vdp','VdpConfigRef');
ここで、オブジェクト freeConfigSet
が表すコンフィギュレーション セットを変更すると、変更がモデルに適用されます。
コンフィギュレーション参照のパラメーター値は、get_param
を使用して取得できます。しかし、パラメーターの値をコンフィギュレーション参照で直接変更することはできません。値を変更するには、参照された独立型のコンフィギュレーション セットを表す ConfigSet
オブジェクトを使用しなければなりません。getRefConfigSet
メソッドを使用して、コンフィギュレーション参照から独立型のコンフィギュレーション セットを取得します。
referencedConfigObj = getRefConfigSet(configRef);
これで、referencedConfigObj
は、モデルが参照するのと同じ独立型のコンフィギュレーション セットを表すようになりました。freeConfigSet
もこのコンフィギュレーション セットを表します。コンフィギュレーション セット オブジェクトを使用して、参照されたコンフィギュレーション セットのパラメーター値を変更します。これらの変更は、コンフィギュレーションを参照する各モデルに適用されます。
set_param(referencedConfigObj,'SignalLogging','off'); set_param(referencedConfigObj,'StartTime','10');
参考
Simulink.BlockDiagram.saveActiveConfigSet