生成された ASAP2 ファイルのカスタマイズ
メモ
関数 coder.asap2.export
は、このページで説明するカスタマイズでは機能しません。
メモ
TLC ベースのカスタマイズは将来のリリースでサポートされなくなる予定です。ASAP2 ファイルをカスタマイズするには、生成された ASAP2 ファイルのカスタマイズを参照してください。
ASAP2 ファイルのカスタマイズについて
Embedded Coder® 製品には、Simulink® モデルから生成された ASAP2 ファイルをカスタマイズできるようにする Target Language Compiler (TLC) ファイルがいくつか用意されています。
MATLAB パス上の ASAP2 ファイル構造
ASAP2 関連ファイルは、次に示したフォルダー内にまとめられています。
ASAP2 ファイル生成用 TLC ファイル
(開く) フォルダーには、ASAP2 ファイルを生成する TLC ファイルであるmatlabroot
/rtw/c/tlc/mwasamlib.tlc
、asap2lib.tlc
、asap2main.tlc
およびasap2grouplib.tlc
が含まれています。これらのファイルは、モデル コンフィギュレーション パラメーター [システムターゲットファイル] の設定により含まれていますASAP2 ターゲット ファイル
(開く) フォルダーには、ASAP2 システム ターゲット ファイルとその他のコントロール ファイルが含まれています。matlabroot
/toolbox/rtw/targets/asap2/asap2カスタマイズ可能な TLC ファイル
(開く) フォルダーには、ASAP2 ファイルの内容をカスタマイズするために変更できるファイルが含まれています。matlabroot
/toolbox/rtw/targets/asap2/asap2/userASAP2 テンプレート
(開く) フォルダーには、ASAP2 ファイルのmatlabroot
/toolbox/rtw/targets/asap2/asap2/user/templatesCHARACTERISTIC
の各型を定義するテンプレートが含まれています。
ASAP2 ファイルの内容のカスタマイズ
ASAP2 関連 TLC ファイルを使用すると、Simulink モデルから生成される ASAP2 ファイルの外見をカスタマイズすることができます。大半のカスタマイズは、
(開く) フォルダーに含まれているファイルを変更するかそれらのファイルに追加することによって行われます。この節では、このフォルダーを matlabroot
/toolbox/rtw/targets/asap2/asap2/userasap2/user
フォルダーと呼びます。
用意されているユーザーがカスタマイズできるファイルは、2 つのグループに分類することができます。
"静的" ファイルは、ASAP2 ファイルの生成コードの使用先となる環境に関連する部分を定義します。これらのファイルはユーザーまたはプロジェクトに固有の情報を記述します。静的ファイルはモデルに依存しません。
"動的" ファイルは、ソース モデルの構造に基づいて生成される ASAP2 ファイルの部分を定義します。
ASAP2 ファイルをカスタマイズする手順は、次のとおりです。
変更を加える前に、
asap2/user
フォルダーのコピーを作成します。MATLAB® パスから古い
asap2/user
フォルダーを削除します。または、新しいasap2/user
フォルダーを古いフォルダーより上の MATLAB パスに追加します。MATLAB セッションでは、新規フォルダー内の ASAP2 セットアップ ファイルasap2setup.tlc
が使用されます。asap2setup.tlc
は、ASAP2 ファイル生成プロセス時にフォルダーとファイルを TLC パスに含めるよう指定します。TLC パスに含められたフォルダーとファイルを制御するようasap2setup.tlc
を変更します。ASAP2 ファイルの静的部分を変更します。これには、次が含まれます。
プロジェクトとヘッダーの記号。これらは
asap2setup.tlc
で指定されます。ファイルの静的セクション。たとえば、ファイルのヘッダーとテール、
A2ML
、MOD_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 テンプレートを新規作成する手順は、次のとおりです。
テンプレート定義ファイルを作成します。テンプレート定義ファイルの作成を参照してください。
テンプレート定義ファイルを 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
パラメーター グループ用です。関連付けられた x
と y
の各データ レコードへの参照は、示されているとおりパラメーター グループ レコードから取得されます。
この関数は組み込み関数をいくつか呼び出して必要な情報を収集します。たとえば、関数 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
は cmUnits
Simulink.Parameter
オブジェクトまたは Simulink.Signal
オブジェクトの Unit
プロパティで指定された単位 (rpm
や m/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
たとえば、関数 getCompuMethodName
を
引数 dataTypeName
'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