メインコンテンツ

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

R2026b

同一のコンフィギュレーション設定を多くのモデルで使用する場合、プログラムによって各モデルを同じように設定するスクリプトを記述することができます。プログラムによってモデルを構成するために、以下を行うことができます。

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

  • 元の設定を維持できるように、モデル内に新しいコンフィギュレーション セットを作成して編集する

  • 独立型のコンフィギュレーション セットを指すコンフィギュレーション参照を作成し、他のモデルと共有できるようにする

  • 2 つのコンフィギュレーション セットのパラメーター値を比較する

この例では、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'

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

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

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

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

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

モデルのコンフィギュレーションを変更して、アクティブなコンフィギュレーションの元のパラメーター値を保持するには、モデルに新しいコンフィギュレーション セットを作成してアクティブにします。別のコンフィギュレーション セットを作成するには、既存のコンフィギュレーション セットをコピーして、そのコピーをモデルに連結します。コピーを連結するときに名前の競合が起こらないよう、連結する前にコピーの名前を変更するか、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 つのコンフィギュレーションを複数のモデルで共有するために使用します。また、独立型のコンフィギュレーション セットは、モデル ファイルを変更せずにコンフィギュレーションを編集するためにも使用できます。

この例では、モデル bouncingBall がコンフィギュレーション参照を使用するよう設定します。

model = 'bouncingBall';
open_system(model)

まず、モデルのアクティブなコンフィギュレーション セットをコピーして、ベース ワークスペース内に独立型のコンフィギュレーション セットを作成します。独立型のコンフィギュレーションは、変数 freeConfigSet によって表される ConfigSet オブジェクトです。既存の独立型のコンフィギュレーション セットを参照する場合、この手順は省略できます。

freeConfigSet = copy(getActiveConfigSet(model));

コンフィギュレーション参照を作成します。

configRef = Simulink.ConfigSetRef;

参照を独立型のコンフィギュレーション セットに向けるには、SourceName プロパティをコンフィギュレーションを表す変数 freeConfigSet に設定します。

set_param(configRef,'SourceName','freeConfigSet')

新しい参照は、変数 configRef によって表される ConfigSetRef オブジェクトです。参照に bouncingBallConfigRef という名前を付けます。

set_param(configRef,'Name','bouncingBallConfigRef')

ConfigSetRef オブジェクトを使用して、コンフィギュレーション参照をモデル vdp に連結します。参照は 1 つのモデルのみに連結できます。モデルでコンフィギュレーション参照を使用するには、それをアクティブにします。

attachConfigSet(model,configRef);
setActiveConfigSet(model,'bouncingBallConfigRef');

ここで、オブジェクト freeConfigSet が表すコンフィギュレーション セットを変更すると、変更がモデルに適用されます。

コンフィギュレーション参照のパラメーター値は、get_param を使用して取得できます。しかし、パラメーターの値をコンフィギュレーション参照で直接変更することはできません。値を変更するには、参照された独立型のコンフィギュレーション セットを表す ConfigSet オブジェクトを使用しなければなりません。getRefConfigSet メソッドを使用して、コンフィギュレーション参照から独立型のコンフィギュレーション セットを取得します。

referencedConfigObj = getRefConfigSet(configRef);

これで、referencedConfigObj は、モデルが参照するのと同じ独立型のコンフィギュレーション セットを表すようになりました。freeConfigSet もこのコンフィギュレーション セットを表します。コンフィギュレーション セット オブジェクトを使用して、参照されたコンフィギュレーション セットのパラメーター値を変更します。これらの変更は、コンフィギュレーションを参照する各モデルに適用されます。

set_param(referencedConfigObj,'SignalLogging','off');
set_param(referencedConfigObj,'StartTime','10');

コンフィギュレーションの比較

モデルの元のコンフィギュレーション セットと更新されたコンフィギュレーション セットを比較することで、どのコンフィギュレーション パラメーターが変更されたかを確認できます。2 つの異なるモデルのコンフィギュレーションを比較することもできます。

この例では、モデル damped_nonlin_spring 用に作成したコンフィギュレーション セットを比較します。2 つの構成オブジェクトに対して関数 isequal を使用し、異なるパラメーターのリストを返します。

[tf,parameters] = isequal(activeConfigObj,newConfigObj);
parameters
parameters = 1×3 cell
    {'Name'}    {'SolverName'}    {'SolverType'}

例の関数 CompareConfigSets は、get_param を呼び出すことで、各コンフィギュレーション セットの異なる各パラメーターの値をレポートします。例の関数を使用して、2 つのコンフィギュレーション セットにおけるパラメーターの異なる値を確認します。

CompareConfigSets(activeConfigObj,newConfigObj)
ans = 3×3 cell
    {'Name'      }    {'UpdatedConfig'   }    {'ConfigCopy'   }
    {'SolverName'}    {'VariableStepAuto'}    {'FixedStepAuto'}
    {'SolverType'}    {'Variable-step'   }    {'Fixed-step'   }

参考

トピック