Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

スクリプトを使用したモデル コンフィギュレーションの自動化

同一のコンフィギュレーション設定を多くのモデルで使用する場合、プログラムによって各モデルを同じように設定するスクリプトを記述することができます。スクリプトを使用して、モデルが使用するコンフィギュレーション設定をアーカイブし、比較することができます。

この例では、モデルのコンフィギュレーションをプログラムで設定する、次の 3 つの異なる方法を説明します。

  • モデルの既存のアクティブなコンフィギュレーション セットを編集する

  • モデル内に新しいコンフィギュレーション セットを作成し、編集する

  • 独立型のコンフィギュレーション セットを指すコンフィギュレーション参照を作成する

この例では、モデル sldemo_mdlref_depgraph を使用します。

model = 'sldemo_mdlref_depgraph';
open_system(model)

アクティブなコンフィギュレーション セットの編集

モデルに関連付けられたコンフィギュレーション セットを操作するには、コンフィギュレーション セットを表す ConfigSet オブジェクトを使用します。この例では、モデルでアクティブになっているコンフィギュレーションを使用します。

activeConfigObj = getActiveConfigSet(model);
get_param(activeConfigObj,'Name')
ans = 
'Configuration'

モデルでアクティブになっているコンフィギュレーションは Configuration です。このコンフィギュレーションのパラメーターの現在の値を確認するには、関数 get_paramConfigSet オブジェクトを使用します。

get_param(activeConfigObj,'StopTime')
ans = 
'2*24*60*60'

コンフィギュレーション セットの名前を UpdatedConfig に変更します。

set_param(activeConfigObj,'Name','UpdatedConfig');

この例では、終了時間を 200 に設定し、ソルバーのタイプを可変ステップ ソルバーに変更します。

set_param(activeConfigObj,'StopTime','200');
set_param(activeConfigObj,'SolverType','Variable-step');

コンフィギュレーション セットの作成とアクティベーション

モデルのコンフィギュレーションを変更して、アクティブなコンフィギュレーションの元のパラメーター値を保持するには、モデルに新しいコンフィギュレーション セットを作成してアクティブにします。別のコンフィギュレーション セットを作成するには、既存のコンフィギュレーション セットをコピーして、そのコピーをモデルに連結します。コピーを連結するときに名前の競合が起こらないよう、連結する前にコピーの名前を変更するか、attachConfigSet のオプションの 3 番目の引数である allowRenametrue に設定します。

この例では、アクティブなコンフィギュレーション セットをコピーします。コピーの名前を 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(activeConfigObj,'Name')
ans = 
'UpdatedConfig'

これで、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');

関連するトピック