インスタンス固有のデータをプログラムでルックアップ テーブルに設定する
Simulink.LookupTable
オブジェクトを使用して ASAP2 または AUTOSAR のコード生成 (STD_AXIS や CURVE など) 用のルックアップ テーブル データを保存および設定する場合、そのオブジェクトをモデルの引数として設定できます。そして、コンポーネントのインスタンスごとに一意のテーブル データおよびブレークポイント データを指定できます。
この例では、ルックアップ テーブルとコマンド プロンプトを使用して、同じブロック パラメーターに異なる値を使用するように参照モデルの複数のインスタンスを設定する方法について説明します。
参照モデルでのモデルの引数の設定
再利用可能なアルゴリズムを表すモデル ex_arg_LUT_ref
を開きます。
open_system('ex_arg_LUT_ref')
Simulink.LookupTable
オブジェクトをベース ワークスペースに作成します。この例では、オブジェクトに LUTArg
という名前を付けています。
temp = Simulink.LookupTable;
テーブル データおよびブレークポイント データの値を指定します。ex_arg_LUT_ref
から直接シミュレーションやコード生成を行う場合、モデルではこれらの値が使用されます。
temp.Table.Value = [3 4; 1 2]; temp.Breakpoints(1).Value = [1 2]; temp.Breakpoints(2).Value = [3 4];
構造体の名前を LUTArg_Type
に設定します。
temp.StructTypeInfo.Name = 'LUTArg_Type';
構造体をモデル ワークスペースにコピーします。
mdlwks = get_param('ex_arg_LUT_ref','ModelWorkspace'); assignin(mdlwks,'LUTArg',copy(temp))
LUTArg
をモデル引数として指定します。
set_param('ex_arg_LUT_ref','ParameterArgumentNames','LUTArg')
n-D Lookup Table ブロックでは、'Data specification'
を 'Lookup table object'
に設定し、名前を LUTArg
に設定します。
set_param('ex_arg_LUT_ref/n-D Lookup Table',... 'DataSpecification','Lookup table object','LookupTableObject','LUTArg')
インスタンス固有の引数の値の作成
再利用可能なアルゴリズムを 2 回使用するモデル ex_arg_LUT
を開きます。
open_system('ex_arg_LUT')
Simulink.LookupTable
オブジェクトをベース ワークスペースに作成します。
LUTForInst1 = Simulink.LookupTable;
オブジェクトのテーブル データとブレークポイント データを指定します。
LUTForInst1.Table.Value = [8 7; 6 5]; LUTForInst1.Breakpoints(1).Value = [5 6]; LUTForInst1.Breakpoints(2).Value = [3 4];
構造体の名前を、参照モデル ワークスペースのオブジェクトで指定された名前と一致させます。
LUTForInst1.StructTypeInfo.Name = 'LUTArg_Type';
構造体を使用して 2 番目の Model ブロックに対してインスタンス固有の引数値を作成します。構造体のブレークポイント データとテーブル データを指定します。
StructForInst2.Table = [9 8; 7 7]; StructForInst2.BP1 = [3 4]; StructForInst2.BP2 = [5 6];
ex_arg_LUT
モデルで、モデル インスタンス Model
に対して LUTArg
の値を LUTForInst1
に設定します。モデル インスタンス Model1
で、LUTArg
の値を StructForInst2
に設定します。
instSpecParams = get_param('ex_arg_LUT/Model','InstanceParameters'); instSpecParams(1).Value = 'LUTForInst1'; instSpecParams1 = get_param('ex_arg_LUT/Model1','InstanceParameters'); instSpecParams1(1).Value = 'StructForInst2'; set_param('ex_arg_LUT/Model','InstanceParameters',instSpecParams); set_param('ex_arg_LUT/Model1','InstanceParameters',instSpecParams1);
ex_arg_LUT_ref
の 1 つのインスタンスはベース ワークスペースの Simulink.LookupTable
オブジェクトに保存されたテーブル データとブレークポイント データを使用し、他のインスタンスは構造体に保存されたテーブル データとブレークポイント データを使用します。