参照モデルのプログラムによるパラメーター化
この例では、同じブロック パラメーターに違う値を使用するように参照モデルの複数のインスタンスをプログラムで設定する方法について説明します。
モデル引数を使用するように参照モデルを構成する
モデルのシミュレーションを実行すると、モデル ワークスペースのパラメーター オブジェクトは 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));
gainArg
と coeffArg
をモデル引数として指定します。
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);