Main Content

生成された ASAP2 ファイルのカスタマイズ

メモ

関数 coder.asap2.export は、このページで説明するカスタマイズでは機能しません。

メモ

TLC ベースのカスタマイズは将来のリリースでサポートされなくなる予定です。ASAP2 ファイルをカスタマイズするには、生成された ASAP2 ファイルのカスタマイズを参照してください。

ASAP2 ファイルのカスタマイズについて

Embedded Coder® 製品には、Simulink® モデルから生成された ASAP2 ファイルをカスタマイズできるようにする Target Language Compiler (TLC) ファイルがいくつか用意されています。

MATLAB パス上の ASAP2 ファイル構造

ASAP2 関連ファイルは、次に示したフォルダー内にまとめられています。

  • ASAP2 ファイル生成用 TLC ファイル

    matlabroot/rtw/c/tlc/mw (開く) フォルダーには、ASAP2 ファイルを生成する TLC ファイルである asamlib.tlcasap2lib.tlcasap2main.tlc および asap2grouplib.tlc が含まれています。これらのファイルは、モデル コンフィギュレーション パラメーター [システムターゲットファイル] の設定により含まれています

  • ASAP2 ターゲット ファイル

    matlabroot/toolbox/rtw/targets/asap2/asap2 (開く) フォルダーには、ASAP2 システム ターゲット ファイルとその他のコントロール ファイルが含まれています。

  • カスタマイズ可能な TLC ファイル

    matlabroot/toolbox/rtw/targets/asap2/asap2/user (開く) フォルダーには、ASAP2 ファイルの内容をカスタマイズするために変更できるファイルが含まれています。

  • ASAP2 テンプレート

    matlabroot/toolbox/rtw/targets/asap2/asap2/user/templates (開く) フォルダーには、ASAP2 ファイルの CHARACTERISTIC の各型を定義するテンプレートが含まれています。

ASAP2 ファイルの内容のカスタマイズ

ASAP2 関連 TLC ファイルを使用すると、Simulink モデルから生成される ASAP2 ファイルの外見をカスタマイズすることができます。大半のカスタマイズは、matlabroot/toolbox/rtw/targets/asap2/asap2/user (開く) フォルダーに含まれているファイルを変更するかそれらのファイルに追加することによって行われます。この節では、このフォルダーを asap2/user フォルダーと呼びます。

用意されているユーザーがカスタマイズできるファイルは、2 つのグループに分類することができます。

  • "静的" ファイルは、ASAP2 ファイルの生成コードの使用先となる環境に関連する部分を定義します。これらのファイルはユーザーまたはプロジェクトに固有の情報を記述します。静的ファイルはモデルに依存しません。

  • "動的" ファイルは、ソース モデルの構造に基づいて生成される ASAP2 ファイルの部分を定義します。

ASAP2 ファイルをカスタマイズする手順は、次のとおりです。

  1. 変更を加える前に、asap2/user フォルダーのコピーを作成します。

  2. MATLAB® パスから古い asap2/user フォルダーを削除します。または、新しい asap2/user フォルダーを古いフォルダーより上の MATLAB パスに追加します。MATLAB セッションでは、新規フォルダー内の ASAP2 セットアップ ファイル asap2setup.tlc が使用されます。

    asap2setup.tlc は、ASAP2 ファイル生成プロセス時にフォルダーとファイルを TLC パスに含めるよう指定します。TLC パスに含められたフォルダーとファイルを制御するよう asap2setup.tlc を変更します。

  3. ASAP2 ファイルの静的部分を変更します。これには、次が含まれます。

    • プロジェクトとヘッダーの記号。これらは asap2setup.tlc で指定されます。

    • ファイルの静的セクション。たとえば、ファイルのヘッダーとテール、A2MLMOD_COMMON など。これらは asap2userlib.tlc で指定されます。

    • ASAP2 ファイルの動的内容の外見を指定します。そのためには、既存の ASAP2 テンプレートを変更するか ASAP2 テンプレートを新たに定義します。影響を受ける ASAP2 ファイルのセクションは、次のとおりです。

      RECORD_LAYOUT: ASAP2 テンプレート ファイルを部分的に変更します。

      CHARACTERISTIC: ASAP2 テンプレート ファイルを部分的に変更します。CHARACTERISTIC レコードの外観を変更する方法の詳細については、ASAP2 テンプレートを参照してください。

    • MEASUREMENT:これらは asap2userlib.tlc で指定されます。

    • COMPU_METHOD:これらは asap2userlib.tlc で指定されます。

ASAP2 テンプレート

ASAP2 ファイルの CHARACTERISTIC レコードの外見は、CHARACTERISTIC の型ごとに異なるテンプレートを使用して制御されます。asap2/user フォルダーにはスカラーである 1-D Lookup Table ブロックと 2-D Lookup Table ブロック用のテンプレート定義ファイルが入っています。これらのテンプレート定義ファイルを変更するか、必要に応じて追加テンプレートを作成することができます。

ASAP2 テンプレートを新規作成する手順は、次のとおりです。

  1. テンプレート定義ファイルを作成します。テンプレート定義ファイルの作成を参照してください。

  2. テンプレート定義ファイルを TLC パスに含めます。このパスは ASAP2 セットアップ ファイル asap2setup.tlc で指定されます。

テンプレート定義ファイルの作成

この節では、ASAP2 テンプレート定義ファイルを構成するコンポーネントについて説明します。説明は asap2lookup1d.tlc のコード例をいくつか使用して行います。このファイルは、Lookup1D テンプレートのテンプレート定義ファイルです。このテンプレートは、Lookup1D パラメーター グループに対応します。

メモ

テンプレートを新規作成する場合、次のコードの Lookup1D の代わりに対応するパラメーター グループ名を使用してください。

テンプレート登録関数

入力引数はこのテンプレートに関連付けられたパラメーター グループの名前です。

%<LibASAP2RegisterTemplate("Lookup1D")>

RECORD_LAYOUT 名定義関数

レコード レイアウト名 (エイリアス) は、データ型ごとに自由に指定することができます。この関数はこのファイルの他のコンポーネントが使用します。

%function ASAP2UserFcnRecordLayoutAlias_Lookup1D(dtId) void
  %switch dtId
  %case tSS_UINT8
    %return "Lookup1D_UBYTE"
  ...
  %endswitch
%endfunction

RECORD_LAYOUT 定義を書き込むための関数

この関数はこのテンプレートに関連付けられた RECORD_LAYOUT 定義を書き込みます。この関数は ASAP2 ファイル生成プロセスに関係する組み込み関数によって呼び出されます。関数名は次のように定義しなければなりません。なお、アンダースコアの後にテンプレート名を使用します。

%function ASAP2UserFcnWriteRecordLayout_Lookup1D() Output
  /begin RECORD_LAYOUT 
%<ASAP2UserFcnRecordLayoutAlias_Lookup1D(tSS_UINT8)>
    ...
  /end   RECORD_LAYOUT
%endfunction

CHARACTERISTIC を書き込むための関数

この関数はこのテンプレートに関連付けられた CHARACTERISTIC を書き込みます。この関数は ASAP2 ファイル生成プロセスに関係する組み込み関数によって呼び出されます。関数名は次のように定義しなければなりません。なお、アンダースコアの後にテンプレート名を使用します。

この関数の入力引数は、パラメーター グループ レコードを指すポインターです。示した例は、メンバーが 2 つの Lookup1D パラメーター グループ用です。関連付けられた xy の各データ レコードへの参照は、示されているとおりパラメーター グループ レコードから取得されます。

この関数は組み込み関数をいくつか呼び出して必要な情報を収集します。たとえば、関数 LibASAP2GetSymbol は指定されたデータ レコードのシンボル (名前) を返します。

%function ASAP2UserFcnWriteCharacteristic_Lookup1D(paramGroup) 
Output
  %assign xParam = paramGroup.Member[0].Reference
  %assign yParam = paramGroup.Member[1].Reference
  %assign dtId = LibASAP2GetDataTypeId(xParam)
    /begin CHARACTERISTIC
     /* Name */              %<LibASAP2GetSymbol(xParam)>
     /* Long identifier */   "%<LibASAP2GetLongID(xParam)>"
     ...
    /end CHARACTERISTIC
%endfunction

カスタム計算メソッド名のカスタマイズ

生成された ASAP2 ファイルでは、電子コントロール ユニット (ECU) の測定量とキャリブレーション量の内部表現が、計算メソッドによって物理モデル指向表現に変換されます。Simulink Coder™ ソフトウェアには、計算メソッドの名前をカスタマイズできる機能が用意されています。より直感的で ASAP2 ファイルの可読性を高める名前、または社内要件を満たす名前を付けることができます。

計算メソッド名をカスタマイズするには、MATLAB 関数 getCompuMethodName を使用します。これは、matlabroot/toolbox/rtw/targets/asap2/asap2/user/getCompuMethodName.m で定義されます。

関数 getCompuMethodName は、計算メソッド名を作成します。関数のプロトタイプは次のとおりです。

cmName = getCompuMethodName(dataTypeName, cmUnits)

ここで、dataTypeName は計算メソッドに関連付けられたデータ型名、cmUnitsSimulink.Parameter オブジェクトまたは Simulink.Signal オブジェクトの Unit プロパティで指定された単位 (rpmm/s など) であり、cmName は作成された計算メソッド名を返します。

この関数が返す既定の名前の形式は、次のとおりです。

<localPrefix><datatype>_<cmUnits>

ここで

  • <local_Prefix> は、ローカル接頭辞 CM_ であり、これは matlabroot/toolbox/rtw/targets/asap2/asap2/user/getCompuMethodName.m で定義されます。

  • <datatype><cmUnits> は、関数 getCompuMethodName に指定された引数です。

さらに、生成された ASAP2 ファイル内では、作成された名前に接頭辞 <ASAP2CompuMethodName_Prefix> が付きます。これは、matlabroot/toolbox/rtw/targets/asap2/asap2/user/asap2setup.tlc で定義されたモデル接頭辞です。

たとえば、関数 getCompuMethodNamedataTypeName 引数 'int16'cmUnits 引数 'm/s' を付けて呼び出し、myModel という名前のモデル用の ASAP2 ファイルを生成した場合、計算メソッド名は生成ファイルに次のように表示されます。

/begin COMPU_METHOD
   /* Name of CompuMethod */ myModel_CM_int16_m_s
   /* Units */ "m/s"
   ...
/end COMPU_METHOD

FIX_AXIS での計算メソッド使用の抑制

Versions 1.51 以降の ASAP2 仕様では、ルックアップ テーブル軸記述 (整数データ型で doc unit なし) について、場合によっては計算メソッドが不要であり、そのときは Conversion Method パラメーターを値 NO_COMPU_METHOD に設定しなければならない、と述べています。Target Language Compiler (TLC) オプション ASAP2GenNoCompuMethod を使用する必要がない場合に計算メソッドを抑制するかどうかを制御することができます。この TLC オプションは、既定の設定では無効です。このオプションを有効にすると、計算メソッドが不要の場合は ASAP2 ファイル生成機能によってルックアップ テーブル軸記述用の計算メソッドが生成されず、代わりに値 NO_COMPU_METHOD が生成されます。以下に例を示します。

/begin CHARACTERISTIC
/* Name            */
lu1d_fix_axisTable_data
...
/begin AXIS_DESCR
    ...	
    /* Conversion Method    */
NO_COMPU_METHOD
    ...
/end CHARACTERISTIC

ASAP2GenNoCompuMethod オプションは matlabroot/toolbox/rtw/targets/asap2/asap2/user/asap2setup.tlc で定義されます。

関連するトピック