Main Content

インスタンス固有のデータをプログラムでルックアップ テーブルに設定する

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)。瓦尔ue ='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オブジェクトに保存されたテーブル データとブレークポイント データを使用し、他のインスタンスは構造体に保存されたテーブル データとブレークポイント データを使用します。