




摘 要:近幾年,隨著技術的發展,應用CAN總線系統的工程車越來越多。與普通線路相比,CAN總線具有各電器系統相對獨立,相互之間關聯較少,線路相對簡單等特點。只要能夠掌握CAN總線原理,車輛各電氣系統的原理圖,CAN總線各模塊功能及其在車上的位置,就能通過故障現象,迅速準確地排除故障。本文針對新能源工程機械報文解析在故障診斷的方面應用,通過報文的獲取,報文解析進而確定故障原因。
關鍵詞:CAN協議 報文 報文格式 報文解析
1 CAN協議概述
1.1 相關術語介紹
總線:節點(功能部件)間信息交換技術;作一個比喻:電腦處理信息就好像在不斷穿梭接送乘客的BUS,而各個計算機部件就是一個個車站,從而將信息連接到每個計算機部件的。
CAN總線:CAN總線是英文Controller Area Network的縮寫,就是某種信息交換技術的網絡布置方法。其等效原理如圖1。
總線分類:在工程機械上已經出現了多種總線標準,從總線所實現的功能角度分,
可分為兩類:
一類是控制策略驅動的總線,如SAE的J1850、德國大眾的ABUS、博世的CAN、ISO11898和ISO11519、美國商用機器的AutoCAN、ISO的VAN、馬自達的PALMNET、以及用于低速場合的LIN等。
一類是以大量數據傳輸為目的的多媒體總線,如IDB-C、IDB-1394、MOST、AMIC-C等。
協議:網絡協議的簡稱,通訊雙方必須共同遵從的一組約定。簡單的說了,網絡中的節點要能夠互相順利的通信,就必須講同樣的語言,協議就相當于符號化的語言。工程機械中采用J1939CAN網絡協議。
1.2 通訊協議的三要素
a:語法:數據與控制信息的結構或格式;簡單的說,類似語言中的:主謂賓,定狀補
b:語義:結構或格式中每部分所表示的現實含義。如:何種控制、何種響應等
c:時序:事件實現順序的詳細描述
在CAN協議中存在大量專業術語,在此不再敖述,可以參考CAN網絡協議標準[1]。
2 何為報文
報文:將位于應用層的信息分組稱為報文,是網絡傳輸中的數據單元,包含了數據的完整性。以幀為最小傳輸單位,長度不限且可變。在網絡傳輸過程中不斷的封裝為段、組、包、幀來傳輸。封裝的本質就是添加一些信息域俗稱報文頭。
(1)數據單元:報文是計算機網絡中傳輸的數據單元。它是信息在網絡中傳遞的基本單位,類似于日常生活中的信件或郵包。
(2)封裝和解封裝:報文在傳輸前需要經過封裝的過程,即將數據添加額外的頭部信息,以便在網絡中正確傳遞到目標位置。在目標位置,報文會被解封裝,也就是將頭部信息去除,還原出原始的數據。
(3)標識信息:報文通常包含標識信息,例如源地址和目標地址,以確保數據被正確傳送到目標設備,并讓接收方知道報文的來源。此外還有控制信息、仲裁信息、檢驗信息等。
(4)通信協議:報文的格式和規則由通信協議定義。不同的應用和協議可能會使用不同的報文格式,但它們都遵循相應協議規定的結構和處理方式。
CAN通訊協議的基本格式:如圖2所示。
基本格式=報文頭+報文體+報文尾。
報文頭:包含通訊開始時所涉及的必要標識信息,例如控制信息、仲裁信息、功能信息、擴展信息、源地址、目標地址等,對應的是:幀起始、仲裁場、控制場。
報文體:應用層需求的信息,對應的是數據場或域。
報文尾:包含通訊結束時所涉及的必要標識信息,如應答信息、檢驗信息等。對應的是CRC場、ACK場、幀結束。
(5)數據傳輸:報文通過計算機網絡進行傳輸,經過多個中間節點,如路由器、交換機等,通過這些節點的轉發,最終到達目標設備。
(6)標識符:信息的抽象符號,以位為最小單位,以域為最小功能單位。
3 CAN報文的采集
(1)CAN報文采集所需的軟硬件。硬件有:CAN盒(周立功)、測試線、存儲設備(SD卡或優盤),與硬件相匹配的軟件,CANPRO、USBCAND等。軟件安裝在筆記本電腦上。
(2)采集過程:通過測試線把CAN盒輸入口與整車的診斷口相連--輸出口與電腦相連--打開車輛電鎖--打開USBCAN軟件--選擇CAN通訊通道--選擇通訊波特率(在工程機械一般為250KB或500KB)--啟動車輛,在軟件交互窗口獲取報文。如圖3所示某車型所獲取的報文,其中Message Number:報文序號信息;Time Offset(ms):報文采集時間信息;Bus:總線通道信息;Type:報文傳輸方向(其中Rx表示接受,Tx表示發出)信息;Reserved:保留位(用于功能擴展)Data Lengh Code:表示數據長度信息,其中數字8代表數據長度占8個字節;Data Bytes(Hex):表示報文數據信息,以十六進制形式表示;ID:報文唯一標識符,類似我們身份證,與數據場一一對應。
4 報文的解析
報文的解析分為兩部分:第一部分對報文的標識信息的的解析,第二部分對報文體的數據進行解析。下文將對這兩部分進行詳細的解釋。
4.1 報文標識信息的解析:主要是對報文的ID進行解析
CAN報文的ID根據CAN協議中規定可分為:標準幀的ID為11為二進制數構成,以十六進制形式顯示;擴展幀的ID為29為二進制數構成,同樣以十六進制顯示。目前工程車輛都使用擴展幀結構即29位ID。幀ID中所包含的信息:優先級、參數組編號、源地址、目的地址四個信息。現以某車型實際報文為例進行說明:所采集到的報文如圖4所示。
ID的十六進制的形式為:0C08E4DC。
其中最后兩位DC為:源地址(Source Adress簡稱SA),作用:告知我們數據場的數據來源,也就是說這些數據是哪個節點發出來的。其中DC為廠家自主定義,源地址與節點一一對應,不可重復,一個節點只能獲得唯一一個地址碼。該處某廠家定義為:DC-DC模塊的地址標識符。表1某廠家節點模塊地址碼定義。
前面六位十六進制數0C08E4為參數組PGN(Parameter Group Number):傳輸數據參數的集合,每一個參數組都有一個唯一的標識符稱為參數組編號。參數組依據功能進行分配,例如命令參數組、數據參數組、請求參數組、應答參數組等。這些在CAN協議標準中進行明確的規定。PGN如圖5所示:
最前面3位二進制 表示優先級(Priority)信息,數值越小,傳輸優先級越高。作用:可以明確該條報文的收發優先級,如圖5所示中:當PF的值大于等于十進制的240,則字節3的數據表示目的地址為全局(GE);當PF的值小于十進制的240,則字節3的數據表示目的地址為特定(DA);作用:可知是哪個或那些節點是需要接受信息。
4.2 報文的數據解析:主要是指數據場的數據進行解析
CAN報文數據場由8個字節組成,共計64位二進制(如表2)。可以存放數據類型:可以是狀態值或測量值。1個byte由8個bit組成,byte稱為“字節”,bit稱為“位”,bit的數值只能是“0”和“1”數據由廠家自行定義。以圖4某廠家實際報文為例:該報文的數據為:0A 28 10 27 10 27 38 48。
在解析數據時需要根據廠家實際的DBC(Data Base Can)文件來進行解析(如圖6)。
如圖6所示,我們先看圖5 DCDC工作狀態數據在第7字節第7位,根據描述欄:其中“0”表示停機狀態,“1”表示運行狀態。實際測量值中(圖7所示)在第7字節第7位的值位0,說明DCDC沒有運行。該車現在存在故障。DCDC工作運行的條件:有輸入電壓和并有輸出電壓和。接下來根據圖圖5中的規定分別計算一下這些值。
DCDC輸入電壓:用兩個字節來表示,分別占用第5字節的0-7位和第6字節的0-7位;再根據圖5所示這兩個字節中的數據為十六進制的10和27,該協議采用的MBS規則,寫成十六進制順序為2710,將十六進制轉化為十進制:(2710)16=(10000)10,得到10000。
根據公式:測量值=十進制數值*分辨率+偏移量,該DCDC輸入端電壓=10000*0.1-1000=0V。
0V說明DCDC沒有輸入電壓,所以DCDC沒有運行。我們可以把故障鎖定在DCDC輸入端。
最終故障原因為高壓盒給DCDC供電的接觸器損壞導致。
DCDC輸出端電壓:用兩個字節來表示,分別占用第1字節的0-7位和第2字節的0-7位;再根據表2所示這兩個字節中的數據為十六進制的0A和28,該協議采用的MBS規則,寫成十六進制順序為280A,將十六進制轉化為十進制:(280A)16=(10250)10,得到10250。
根據公式:測量值=十進制數值*分辨率+偏移量,該DCDC輸出端電壓=10250*0.1-1000=25V。
重要提示:此數據只能明確蓄電池電壓正常但是不能確定DCDC正常。同理可以計算DCDC輸入和輸出電流均為0A。讀者可自行驗證。在此不再敖述。
5 結語
本文以實際案例為引線,詳細闡述報文獲取、解析在實際中的具體應用。包括實際中所用到的硬、軟件工具,報文獲取以及解析流程步驟。為廣大讀者提供了具有現實的指導意義。
參考文獻:
[1]劉君濤.計算機通信網絡安全與防護策略的相關思考[J].通訊世界,2016(19):104-105.
[2]王磊.關于計算機網絡信息安全及防護策略探究[J].電腦知識與技術,2014,10(19):4414-4416.
[3]張揚,申朝,曾昭凱,等.CAN總線技術在電動汽車上的實現[J].沈陽工業大學學,2006,28(5):563-565.
[4]韓成浩,高曉紅.CAN總線技術及其應用[J].制造業自動,2010,32(2):145-147.
[5]楊兵,耿仁義.國產汽車CAN總線發展[J].科技創新導報,2009,25(32):193-194.