一、A2L文件簡介
A2L文件是一個標定的描述文件,基于文本格式,描述ECU的通信等相關的參數,以及標定,觀測變量的地址以及物理值計算公式等等。A2L 文件中的信息允許 XCP 主站通過 XCP 連接與從站模塊通信。格式化的文本文件包含事件和測量定義以及其他配置信息,用于采集和激勵數據以及執行其他函數。
二、A2L文件結構
按A2L文件結構分Version,Project,Module,及Module下的Keyword。
三、A2L文件組成
A2L文件頭(項目配置信息等,一般不隨軟件編譯變化,除非對應參數調整)
標定變量描述(包含的地址信息每次編譯都有可能變化)
觀測變量描述(包含的地址信息每次編譯都有可能變化)
其他輔助信息,轉換公式等 (一般不隨軟件編譯變化,除非對應參數調整)
四、A2L文件分解
ASAP2_Version:
ASAP2_VERSION 1 60 /* Version 1.60 */
HEADER:
該塊里邊包含了項目信息,包括項目編號,項目版本等信息
/begin HEADER "Header Comments go here" /end HEADER
MODULE:
該塊里邊包含了在標定測量層面來描述ECU需要的所有信息,一個ECU對應一個MODULE塊,MODULE由許多子塊來組成1MOD_PAR這個塊里包含了用于管理ECU的數據,例如客戶名,編號,CPU類型,ECU的內存分配等,其中最重要的就是ECU的內存分配,開發人員需要根據ECU內存分段情況定義MEMORY SEGMENT和SEGMENT里邊的PAGE,這里的SEGMENT/PAGE的概念和在線標定中的概念是一致的,一個MODULE里邊只能出現一次。
/begin MODULE ModuleName "Module Comment Goes Here" /begin MOD_PAR "MOD PAR Comment Goes Here" /end MOD_PAR /begin MOD_COMMON "Mod Common Comment Here" BYTE_ORDER MSB_LAST /end MOD_COMMON /*......以下所有信息都包含在MODULE內*/ /end MODULE
MOD_PAR:
MOD_PAR關鍵字用于描述要為設備配置的管理數據。除了注釋之外,所有參數都是可選的。暫時沒有用到。
/begin MOD_PAR "MOD PAR Comment Goes Here" /end MOD_PAR
MOD_COMMON:
該塊用來指定ECU的一些標準的一般性描述信息,比如大小端,數據的對齊方式,FLOAT變量的處理方式等,一個MODULE里也只能出現一次。
/begin MOD_COMMON "Mod Common Comment Here" BYTE_ORDER MSB_LAST ALIGNMENT_BYTE 1 ALIGNMENT_WORD 2 ALIGNMENT_LONG 4 ALIGNMENT_FLOAT32_IEEE 4 ALIGNMENT_FLOAT64_IEEE 8 ALIGNMENT_INT64 8 /end MOD_COMMON
BYTE_ORDER:字節序,MSB_LAST=Intel,默認為Intel
ALIGNMENT_BYTE:聲明整個模塊中的BYTE對齊方式。如果參數缺失,對齊方式為1,其他同理。
RECORD_LAYOUT:
該塊用來定義標定變量的物理存儲結構(單個變量,二維表,三維表等)。
/begin RECORD_LAYOUT Scalar_BOOLEAN FNC_VALUES 1 UBYTE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Scalar_UBYTE FNC_VALUES 1 UBYTE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Scalar_BYTE FNC_VALUES 1 SBYTE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Scalar_UWORD FNC_VALUES 1 UWORD COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Scalar_SWORD FNC_VALUES 1 SWORD COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Scalar_ULONG FNC_VALUES 1 ULONG COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Scalar_LONG FNC_VALUES 1 SLONG COLUMN_DIR DIRECT /end RECORD_LAYOUT /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 /begin RECORD_LAYOUT Lookup1D_BOOLEAN FNC_VALUES 1 UBYTE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup1D_X_BOOLEAN AXIS_PTS_X 1 UBYTE INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup1D_BYTE FNC_VALUES 1 SBYTE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup1D_X_BYTE AXIS_PTS_X 1 SBYTE INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup1D_UBYTE FNC_VALUES 1 UBYTE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup1D_X_UBYTE AXIS_PTS_X 1 UBYTE INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup1D_UWORD FNC_VALUES 1 UWORD COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup1D_X_UWORD AXIS_PTS_X 1 UWORD INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup1D_WORD FNC_VALUES 1 SWORD COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup1D_X_WORD AXIS_PTS_X 1 SWORD INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup1D_ULONG FNC_VALUES 1 ULONG COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup1D_X_ULONG AXIS_PTS_X 1 ULONG INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup1D_SLONG FNC_VALUES 1 SLONG COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup1D_X_LONG AXIS_PTS_X 1 SLONG INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup1D_FLOAT32_IEEE FNC_VALUES 1 FLOAT32_IEEE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup1D_X_FLOAT32_IEEE AXIS_PTS_X 1 FLOAT32_IEEE INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup1D_FLOAT64_IEEE FNC_VALUES 1 FLOAT64_IEEE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup1D_X_FLOAT64_IEEE AXIS_PTS_X 1 FLOAT64_IEEE INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_BOOLEAN FNC_VALUES 1 UBYTE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_X_BOOLEAN AXIS_PTS_X 1 UBYTE INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_UBYTE FNC_VALUES 1 UBYTE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_X_UBYTE AXIS_PTS_X 1 UBYTE INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_BYTE FNC_VALUES 1 SBYTE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_X_BYTE AXIS_PTS_X 1 SBYTE INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_UWORD FNC_VALUES 1 UWORD COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_X_UWORD AXIS_PTS_X 1 UWORD INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_WORD FNC_VALUES 1 SWORD COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_X_WORD AXIS_PTS_X 1 SWORD INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_ULONG FNC_VALUES 1 ULONG COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_X_ULONG AXIS_PTS_X 1 ULONG INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_LONG FNC_VALUES 1 SLONG COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_X_LONG AXIS_PTS_X 1 SLONG INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_FLOAT32_IEEE FNC_VALUES 1 FLOAT32_IEEE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_X_FLOAT32_IEEE AXIS_PTS_X 1 FLOAT32_IEEE INDEX_INCR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_FLOAT64_IEEE FNC_VALUES 1 FLOAT64_IEEE COLUMN_DIR DIRECT /end RECORD_LAYOUT /begin RECORD_LAYOUT Lookup2D_X_FLOAT64_IEEE AXIS_PTS_X 1 FLOAT64_IEEE INDEX_INCR DIRECT /end RECORD_LAYOUT
該塊用來定義標定變量,里邊包含了可以被標定的變量的名字,地址,長度,計算公式,精度,最大最小值等信息,一個MODULE里邊可以出現很多次這樣的塊,也就是說一個ECU可以有很多的標定變量。
/begin CHARACTERISTIC /* Name */ KtAEBS_CrvtRateWeightFactor /* Long Identifier */ "" /* Characteristic Type */ CURVE /* ECU Address */ 0x0000 /* @ECU_Address@KtAEBS_CrvtRateWeightFactor@ */ /* Record Layout */ Lookup1D_FLOAT32_IEEE /* Maxdiff */ 0 /* Conversion Method */ AEBS_subsystem_integrated_CM_single /* Lower Limit */ -3.4E+38 /* Upper Limit */ 3.4E+38 /begin AXIS_DESCR /* Description of X-Axis Points */ /* Axis Type */ COM_AXIS /* Reference to Input */ NO_INPUT_QUANTITY /* Conversion Method */ AEBS_subsystem_integrated_CM_single /* Number of Axis Pts */ 2 /* Lower Limit */ -3.4E+38 /* Upper Limit */ 3.4E+38 AXIS_PTS_REF KaAEBS_AXIS_SpdForCrvtRateWF /end AXIS_DESCR /end CHARACTERISTIC
AXIS_PTS:
該塊用來定義數組或查表變量對應的軸的類型,它將被RECORD_LAYOUT塊來引用,一個ECU里邊可以有很多種不同的軸類型,用于實現查表和插值,一般很少用到。MEASUREMENT該塊用來定義測量變量,里邊包含了可以被測量的變量的名字,地址,長度,計算公式,精度,最大最小值等信息,一個MODULE里邊可以出現很多次這樣的塊,也就是說一個ECU可以有很多的測量變量。
/begin AXIS_PTS /* Name */ KaAEBS_AXIS_SpdForCrvtRateWF /* Long Identifier */ "" /* ECU Address */ 0x0000 /* @ECU_Address@KaAEBS_AXIS_SpdForCrvtRateWF@ */ /* Input Quantity */ NO_INPUT_QUANTITY /* Record Layout */ Lookup1D_X_FLOAT32_IEEE /* Maximum Difference */ 0 /* Conversion Method */ AEBS_subsystem_integrated_CM_single /* Number of Axis Pts */ 2 /* Lower Limit */ -3.4E+38 /* Upper Limit */ 3.4E+38 /end AXIS_PTS
MEASUREMENT:
用來定義測量變量,里邊包含了可以被測量的變量的名字,地址,長度,計算公式,精度,最大最小值等信息,一個MODULE里邊可以出現很多次這樣的塊,也就是說一個ECU可以有很多的測量變量。
/begin MEASUREMENT /* Name */ VfAEBS_AEB_acceleration_req /* Long identifier */ "" /* Data type */ FLOAT32_IEEE /* Conversion method */ AEBS_subsystem_integrated_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@VfAEBS_AEB_acceleration_req@ */ /end MEASUREMENT
COMPU_METHOD:
該塊用于定義計算公式,及原始值和物理值之前的轉換關系,這些公式可以被標定變量和測量變量來引用,從而將原始值轉換成便于用戶閱讀和使用的物理值。COMPU_TAB該塊用來定義原始值和物理值的映射關系,是一種特殊的轉換關系,它一般應用于枚舉變量,例如我們想采集一個代表XCP狀態機的變量,分別為0對應DISCONNECTED,1對應CONNECTED,2對應RESUME,那么我們就可以把這樣的映射關系定義成一個COMPU_TAB,然后關聯到對應的變量上,這時候如果上位機采集到1這樣的原始值,它就可以將當前的狀態顯示成“CONNECTED”字樣,方便用于閱讀和使用。FUNCTION該塊為可選項,很少使用。
/begin COMPU_METHOD /* Name of CompuMethod */ AEBS_subsystem_integrated_CM_single /* Long identifier */ "Q = V" /* Conversion Type */ RAT_FUNC /* Format */ "%8.6" /* Units */ "" /* Coefficients */ COEFFS 0 1 0 0 0 1 /end COMPU_METHOD
GROUPS:
該塊是把標定變量和測量變量按照一定的邏輯(比如功能模塊)組織起來,在上位機中形成一個下拉菜單,使得用于可以從中選擇變量,這塊是可選的。
/begin GROUP /* Name */ AEBS_subsystem_integrated /* Long identifier */ "AEBS_subsystem_integrated" /* Root */ ROOT /begin SUB_GROUP Root_AEBS /end SUB_GROUP /begin REF_MEASUREMENT VbAEBS_DeactivePrefil_Visn VbAEBS_Deactive_Visn VbAEBS_FullBrkDeactVisn VbAEBS_FullBrkReqVisn VbAEBS_OnComigVehVisn VbAEBS_PartBrkDeactVisn VbAEBS_PartBrkReqVisn VbAEBS_PrefillDeactVisn VbAEBS_PrefillReqVisn VfAEBS_AreqFinalVisn VfAEBS_InhibitCodeVisn VfAEBS_InhibitVisn /end REF_MEASUREMENT /end GROUP
Data type:
FLOAT32_IEEE:IEEE 754 格式的 32 位浮點數。 FLOAT64_IEEE:IEEE 754 格式的 64 位浮點數。 UBYTE:無符號 8 位整數。 SBYTE:有符號 8 位整數。 UWORD:無符號 16 位整數。 SWORD:有符號 16 位整數。 ULONG:無符號 32 位整數。 SLONG:有符號 32 位整數。 CHAR:字符。 STRING:字符串。 ENUM:枚舉類型,通常用于定義屬性的可選值。 STRUCT:結構類型,用于組織多個數據元素到一個數據結構中。 ARRAY:數組類型,用于定義相同數據類型的多個元素的集合。 COUNTER:計數器類型,用于描述一個值在時間內的變化。 BOOLEAN:布爾類型,表示真(TRUE)或假(FALSE)。 RECORD:記錄類型,通常用于組合不同數據類型的元素。 CURVE:曲線類型,用于描述參數隨輸入變化的關系。 MAP:地圖類型,用于描述兩個輸入參數和一個輸出參數之間的關系。
-
XCP
+關注
關注
0文章
11瀏覽量
11726 -
函數
+關注
關注
3文章
4327瀏覽量
62573
原文標題:XCP之A2L文件簡介
文章出處:【微信號:eng2mot,微信公眾號:汽車ECU開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論