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