A2L文件解析

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
綜述
ASAP2標準是一個比較複雜的標準,詳細的一條一條講解標準內容並沒有太大的價值,我們將主要以一種應用的方式來帶領大家認識ASAP2標準理解作爲ASAP2表現形式的A2L文件的作用,最後學會如何閱讀和修改A2L文件。首先我們要搞清楚什麼是A2L什麼是ASAP2標準,簡單來說ASAP2標準是ASAM組織制定的一套標準,該標準規定了上位機(Master)和ECU(Slave)之間的通訊所需要的所有信息(可以是XCPonCAN,XCPonUSB等,也可以是CCP,還可以是UDS),而A2L文件就是ASAP2標準的表現形式,符合ASAP2標準的A2L文件主要含有兩部分內容:ECU的描述信息和通訊方式的描述信息。 什麼是ASAP2標準ASAP2標準是ASAM在1998年提出來的,現在它的名字叫做ASAM MCD-2MC/D,是ASAP標準中的第二部分。整個ASAP有3部分內容,ASAP1描述了上位機(Master)和ECU(Slave)之間的通訊協議,我們這個系列文章介紹的XCP以及它的前身CCP都是屬於ASAP1標準,ASAP2規定了Master端如何去描述和解析Slave端的信息,ASAP3規定了如何使用第三方工具和設備操作和控制上位機(Master),例如如何使用臺架軟件來控制標定測量工具去對ECU進行控制和測試。ASAP2標準目前的版本爲v1.6,對應的文件全名爲:ASAM_MCD-2MC_DataSpecifcation_V1.6.pdf 什麼是A2L文件前邊介紹了,A2L文件是基於ASAP2標準書寫完成的,那麼A2L文件到底是什麼東西了。首先它是採用ASAP2指定的一套類XML語言的描述性語言(採用開標籤和關標籤來描述信息)書寫的文件,它裏邊包含了某個特定的ECU中的軟件和系統信息,還包含了上位機和ECU通訊方式的約定,它用來指導上位機和ECU的通訊交互過程,讓他們對交互的信息有一致的認識,從而是上位機工具準確且友好的將ECU中的信息展現給用戶。

A2L文件結構及內容
一個A2L文件只能有一個Project(項目),而項目中至少要有一個Module,A2L文件的註釋和C語言的註釋方式是一樣的,支持/**/和//兩種方式。
上邊文件結構中,不同的文件塊的意義:

HEADER這個塊裏邊包含了項目信息,包括項目編號,項目版本等信息
MODULE這個塊裏邊包含了在標定測量層面來描述ECU需要的所有信息,一個ECU對應一個MODULE塊,MODULE由許多子塊來組成1MOD_PAR這個塊裏包含了用於管理ECU的數據,例如客戶名,編號,CPU類型,ECU的內存分配等,其中最重要的就是ECU的內存分配,開發人員需要根據ECU內存分段情況定義MEMORY SEGMENT和SEGMENT裏邊的PAGE,這裏的SEGMENT/PAGE的概念和在線標定中的概念是一致的,請參考在線標定篇章,一個MODULE裏邊只能出現一次。
MOD_COMMON這個塊用來指定ECU的一些標準的一般性描述信息,比如大小端,數據的對齊方式,FLOAT變量的處理方式等,一個MODULE裏邊只能出現一次。
CHARACTERISTIC這個塊用來定義標定變量,裏邊包含了可以被標定的變量的名字,地址,長度,計算公式,精度,最大最小值等信息,一個MODULE裏邊可以出現很多次這樣的塊,也就是說一個ECU可以有很多的標定變量。
AXIS_PTS這個塊用來定義數組或查表變量對應的軸的類型,它將被RECORD_LAYOUT塊來引用,一個ECU裏邊可以有很多種不同的軸類型,用於實現查表和插值。
MEASUREMENT這個塊用來定義測量變量,裏邊包含了可以被測量的變量的名字,地址,長度,計算公式,精度,最大最小值等信息,一個MODULE裏邊可以出現很多次這樣的塊,也就是說一個ECU可以有很多的測量變量。
COMPU_METHOD用於定義計算公式,及原始值和物理值之前的轉換關係,這些公司可以被標定變量和測量變量來引用,從而將原始值轉換成便於用戶閱讀和使用的物理值。
COMPU_TAB這個塊用來定義原始值和物理值的映射關係,是一種特殊的轉換關係,它一般應用於枚舉變量,例如我們想採集一個代表XCP狀態機的變量,分別爲0對應DISCONNECTED,1對應CONNECTED,2對應RESUME,那麼我們就可以把這樣的映射關係定義層一個COMPU_TAB,然後關聯到對應的變量上,這時候如果上位機採集到1這樣的原始值,它就可以將當前的狀態顯示成“CONNECTED”字樣,方便用於閱讀和使用。
FUNCTION這個塊不是必須。
GROUPS這個塊這個把標定變量和測量變量按照一定的邏輯(比如功能模塊)組織起來,在上位機工具中形成一個下拉菜單,使得用於可以從中選擇變量,這個塊不是必須的。
RECORD_LAYOUT這個塊用來定義標定變量的物理存儲結構(單個變量,二維表,三維表等)。
上述的這些信息塊可以分爲兩類:

一類是隨着ECU和XCP實施完成以後就確定的,這類信息一經確定以後再後續的使用過程中是不需要修改的,例如大小端,MEMORY SEGMENT內存分配等,上述HEADER/MOD_PAR/MOD_COMMON屬於這一類,另外一類是當ECU軟件有所調整的時候就會變化的,例如已有的標定變量和測量變量的地址,甚至變量名,或者可能會新增變量,上述CHARACTERISTIC/AXIS_PTS/MEASUREMENT/COMPU_METHOD/COMPU_TAB/FUNCTION
/GROUPS/RECORD_LAYOUT屬於這一類。
在第二類中改動最多的尤其是CHARACTERISTIC和MEASUREMENT快中的變量地址信息,因爲每次軟件變化重新編譯都會造成這部分信息的更新,地址更新導致的塊信息更新需要手動的更改A2L文件才能使得A2L和當前的軟件配置起來,只有兩者相匹配才能實現正確的標定和測量。 A2L塊示例測量變量vechicle_speed可以進行如下定義,該變量處於RAM中,對應的地址是0xD0001234,它的範圍是[0-230] ,它在ECU中以一個UWORD類型來表示,原始值和物理值的轉換關係爲:Phy = 0.003 X Raw ,即Ax+B中A=0.003,B=0;測量變量xcp_state代表XCP的狀態,可以進行如下定義,它處於RAM中,在ECU中的地址是0xD0005678,它是一個枚舉量,0對應DISCONNECTED,1對應CONNECTED,2對應RESUME;標定變量Current_threshold可以進行如下定義,它處在FLASH標定區域,在ECU中的地址是0x00012345,它的範圍是[-20,20],是一個有符號量,精度爲0.125,即Phy = 0.125 X Raw我們前邊提到的,在每次軟件有更新重新編譯以後,會導致這些變量在ECU中的地址有變化,那麼上邊這些變量對應的ECU ADDRESS條目的內容就需要隨着改變,變量的地址信息可以從編譯生成的MAP文件中獲得,然後手動更新到A2L中。

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述


在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述


a2L文檔編輯軟件
https://www.intrepidcs.net.cn/a2l-asap2-editor/


vector can ape也可以操作a2l文件,大家自行參考。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章