




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