このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
生成された ASAP2 ファイルのカスタマイズ
ASAP2 ファイルのフィールドをカスタマイズするには、次のいずれかの方法でコード ジェネレーターを使用します。
カスタム計算メソッド名のカスタマイズ
生成された 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 ファイルの計算メソッド名でサポートされません。以下の表に示すように、特殊文字は変換されます。cmUnits
特殊文字 | 変換 |
---|---|
% | _percent_ |
- | _dash_ |
/ | _per_ |
* | _into_ |
° | _deg_ |
たとえば、
引数 dataTypeName
'int16'
と
引数 cmUnits
'm/s'
を使用して関数 getCompuMethodName
を呼び出してから、myModel
という名前のモデル用の ASAP2 ファイルを生成した場合、計算メソッド名は次のように生成ファイルに表示されます。
/begin COMPU_METHOD /* Name of CompuMethod */ myModel_CM_int16_m_per_s /* Units */ "m/s" ... /end COMPU_METHOD
グループ化した特性および測定の各オブジェクトのエクスポート
R2021b 以降、ASAP2 ファイルの特性および測定の各オブジェクトは、そのプロパティに基づいてグループ化できます。既定では、生成された ASAP2 ファイルには、モデル内のサブシステムに基づく GROUPS
と SUB_GROUPS
が含まれます。
sldemo_fuelsys
モデルを開きます。open_system("sldemo_fuelsys")
モデルを作成します。
Generate Calibration Files
ツールまたは次のコマンドを使用して ASAP2 ファイルを生成します。coder.asap2.export("sldemo_fuelsys")
モデル アーキテクチャに基づいてデータ要素がグループ化されます。最上位モデルは
GROUP
と表現され、モデル内のサブシステムはSUB_GROUPS
と表現されます。生成されたファイルには、以下の行が含まれます。/begin GROUP /* Name */ sldemo_fuelsys /* Long identifier */ "sldemo_fuelsys" /* Root */ ROOT /begin SUB_GROUP rtB.es_o sldemo_fuelsys_Dashboard sldemo_fuelsys_Engine_Gas_Dynamics sldemo_fuelsys_Throttle_Command sldemo_fuelsys_To_Controller sldemo_fuelsys_To_Plant sldemo_fuelsys_fuel_rate_control /end SUB_GROUP /end GROUP
scalar
オブジェクトを ASAP2 ファイル内にあるGROUP_TYPE_SCALAR
という名前のグループにグループ化するには、次のコマンドを使用します。coder.asap2.export("sldemo_fuelsys",CustomizeGroupsBy={'SCALAR'})
また、array
型のオブジェクト、およびテーブルの次元に基づいて、ルックアップ テーブルを MAP
、CURVE
、CUBOID
、CUBE_4
、および CUBE_5
にグループ化できます。
レコード レイアウトの生成
sldemo_fuelsys
モデルを開きます。open_system("sldemo_fuelsys")
モデルを作成します。
次のコマンドを使用して ASAP2 ファイルを生成します。
coder.asap2.export("sldemo_fuelsys",IncludeAllRecordLayouts=true)
ASAP2 ファイルのバージョンに従って、
RecordLayouts.a2l
ファイルが生成されます。ASAP2 ファイルで、次の行を確認します。/include "RecordLayouts.a2l"
生成された
RecordLayouts.a2l
ファイルには、モデル内に存在するデータ型のレコード レイアウトが含まれます。メモ
RecordLayouts.a2l
ファイルは ASAP2 ファイルと同じフォルダー内にある必要があります。coder.asap2.export("sldemo_fuelsys",IncludeAllRecordLayouts=false)
では個別のレコード レイアウト ファイルを生成せず、エクスポートされたデータ オブジェクトのデータ型のレコード レイアウトを ASAP2 ファイルに含めます。/begin RECORD_LAYOUT Scalar_FLOAT32_IEEE FNC_VALUES 1 FLOAT32_IEEE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Scalar_FLOAT64_IEEE FNC_VALUES 1 FLOAT64_IEEE COLUMN_DIR DIRECT /end RECORD_LAYOUT ...
ヒント
ASA2P ファイルで、モデル引数として使用されるルックアップ テーブルの形状を保持するには、LookUp Table ブロックが参照モデル内にあることを確認します。Lookup table object
を最上位モデルからインスタンス パラメーター値として渡します。
構造体と 64 ビット整数の除外
R2022a 以降では、生成された A2L ファイルで構造体要素と 64 ビット整数を除外できます。既定では、構造体と 64 ビット整数は A2L ファイルに含まれます。
sldemo_fuelsys
モデルを開きます。open_system("sldemo_fuelsys")
モデルを作成します。
次のコマンドを使用して ASAP2 ファイルを生成します。
coder.asap2.export("sldemo_fuelsys", SupportStructureElements=false, ... Support64bitIntegers=false)
生成された ASAP2 ファイルには 64 ビット整数と構造体要素が含まれていません。
メモ
R2022a 以降では、ASAP2 ファイルでポインター変数は生成されません。
既定のイベント リストを含む ASAP2 の生成
R2022a 以降では、マルチレート モデルについて、ASAP2 ファイルに、DEFAULT_EVENT_LIST
をもつ IF_DATA
セクションが含まれ、キャリブレーション ツールでデータ要素の各ラスター値を表示できます。
sldemo_fuelsys
モデルを開きます。open_system("sldemo_fuelsys")
モデルを作成します。
Generate Calibration Files
ツールまたは次のコマンドを使用して ASAP2 ファイルを生成します。coder.asap2.export("sldemo_fuelsys")
このモデルの単一レートは、
0.01
です。生成されたファイルでは測定値が次のように定義されます。/begin MEASUREMENT /* Name */ rtB.es_o.throttle /* Long identifier */ "" /* Data type */ FLOAT32_IEEE /* Conversion method */ sldemo_fuelsys_CM_single /* Resolution (Not used) */ 0 /* Accuracy (Not used) */ 0 /* Lower limit */ -3.4E+38 /* Upper limit */ 3.4E+38 ECU_ADDRESS 0x0000 /* @ECU_Address@rtB.es_o.throttle@ */ /end MEASUREMENT
次のコマンドを使用してモデルをマルチレート モデルに変換します。
blockName = ['sldemo_fuelsys' '/EGO Fault Switch']; set_param(blockName, 'SampleTime', '0.02');
モデルを作成します。
次のコマンドを使用して ASAP2 ファイルを生成します。
coder.asap2.export("sldemo_fuelsys")
生成されたファイルでは測定値が次のように定義されます。
/begin MEASUREMENT /* Name */ rtB.es_o.throttle /* Long identifier */ "" /* Data type */ FLOAT32_IEEE /* Conversion method */ sldemo_fuelsys_CM_single /* Resolution (Not used) */ 0 /* Accuracy (Not used) */ 0 /* Lower limit */ -3.4E+38 /* Upper limit */ 3.4E+38 ECU_ADDRESS 0x0000 /* @ECU_Address@rtB.es_o.throttle@ */ /begin IF_DATA XCP /begin DAQ_EVENT VARIABLE /begin DEFAULT_EVENT_LIST EVENT 0x0001 /end DEFAULT_EVENT_LIST /end DAQ_EVENT /end IF_DATA /end MEASUREMENT
DEFAULT_EVENT_LIST
を含めずに ASAP2 ファイルを生成するには、次のコマンドを使用します。coder.asap2.export("sldemo_fuelsys",IncludeDefaultEventList=false);
ECU アドレス拡張の指定
R2022a 以降では、EcuAddressExtension
プロパティの整数値を指定して、ASAP2 ファイルで追加のアドレス情報を指定できます。既定では、追加のアドレス情報は提供されません。
sldemo_fuelsys
モデルを開きます。open_system("sldemo_fuelsys")
モデルを作成します。
次のコマンドを使用して ASAP2 ファイルを生成します。
coder.asap2.export("sldemo_fuelsys",EcuAddressExtension=4)
特性、測定、および軸ポイントの
ECU_ADDRESS_EXTENSION
キー ワードが ASAP2 ファイルに含まれ、追加のアドレス情報を指定できます。/begin MEASUREMENT /* Name */ rtB.MinMax /* Long identifier */ "" /* Data type */ FLOAT64_IEEE /* Conversion method */ sldemo_fuelsys_CM_double /* Resolution (Not used) */ 0 /* Accuracy (Not used) */ 0 /* Lower limit */ -1.7E+308 /* Upper limit */ 1.7E+308 ECU_ADDRESS 0x0000 /* @ECU_Address@rtB.MinMax@ */ ECU_ADDRESS_EXTENSION 4 /end MEASUREMENT