Main Content

参照モデルのプログラムによるパラメーター化

この例では、同じブロック パラメーターに違う値を使用するように参照モデルの複数のインスタンスをプログラムで設定する方法について説明します。

モデル引数を使用するように参照モデルを構成する

モデルのシミュレーションを実行すると、モデル ワークスペースのパラメーター オブジェクトは Simulink.Parameter オブジェクト、Simulink.LookupTable オブジェクト、または MATLAB® 変数で指定した値を使用します。ブロック パラメーターでもこれらの値を使用します。

Gain ブロックの [ゲイン] パラメーターと Discrete Filter ブロックの [分子] パラメーターをモデル引数として設定するには、次の手順に従います。

モデル ex_model_arg_ref を開きます。このモデルは再利用可能なアルゴリズムを表します。

open_system('ex_model_arg_ref')

Gain ブロックの場合は、[ゲイン] パラメーターの値を、数値を持つモデル ワークスペース内の Simulink.Parameter オブジェクトに設定します。この例では、Simulink.Parameter オブジェクトに gainArg という名前を付け、3.17 の値を代入します。

set_param('ex_model_arg_ref/Gain','Gain','gainArg')
modelWorkspace = get_param('ex_model_arg_ref','ModelWorkspace');
assignin(modelWorkspace,'gainArg',Simulink.Parameter(3.17));

Discrete Filter ブロックの場合は、[分子] パラメーターの値を、数値を使用するモデル ワークスペース内の Simulink.Parameter オブジェクトに設定します。この例では、Simulink.Parameter オブジェクトに coeffArg という名前を付け、1.05 の値を代入します。

set_param('ex_model_arg_ref/Discrete Filter','Numerator','coeffArg')
assignin(modelWorkspace,'coeffArg',Simulink.Parameter(1.05));

gainArgcoeffArg をモデル引数として指定します。

set_param('ex_model_arg_ref','ParameterArgumentNames','coeffArg,gainArg')

モデル引数の値を親モデルで設定する

親モデルのシミュレーションを実行する場合は、再利用可能な参照モデルの各インスタンスでは、親モデルで指定した引数の値が使用されます。この例では、ex_model_arg_ref の上のインスタンスでは、パラメーター オブジェクト gainArg は値 2.98 を使用します。

モデル ex_model_arg には、ex_model_arg_ref を参照する 2 つの Model ブロックが含まれています。モデルの 2 つのインスタンスに対して異なるパラメーター値を設定するには、以下の手順に従います。

モデル ex_model_arg を開きます。このモデルは、再利用可能なアルゴリズムの複数のインスタンスを使用するシステム モデルを表します。

open_system('ex_model_arg')

モデル ex_model_arg の両方のインスタンスで、モデル引数の値を設定します。これらの引数を再プロモートする場合、Argument フィールドを true に設定します。既定では、Argument フィールドは false です。

instSpecParams = get_param('ex_model_arg/Model','InstanceParameters');
instSpecParams1 = get_param('ex_model_arg/Model1','InstanceParameters');

instSpecParams(1).Value = '.98';
instSpecParams(2).Value = '2.98';
instSpecParams1(1).Value = '1.11';
instSpecParams1(2).Value = '3.34';
instSpecParams(1).Argument = true;
instSpecParams(2).Argument = true;
instSpecParams1(1).Argument = true;
instSpecParams1(2).Argument = true;

set_param('ex_model_arg/Model','InstanceParameters',instSpecParams);
set_param('ex_model_arg/Model1','InstanceParameters',instSpecParams1);

関連するトピック