電動車車身網(wǎng)絡(luò)CAN總線通訊實現(xiàn)
1、引言
CAN總線是一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡(luò),其應(yīng)用范圍遍及從高速網(wǎng)絡(luò)到低成本的多線路網(wǎng)絡(luò)。CAN總線具有如下特點:
(1)CAN是到目前為止唯一有國際標(biāo)準(zhǔn)現(xiàn)場總線。
(2)CAN為多主方式工作,網(wǎng)絡(luò)上任一個節(jié)點均可在任意時刻主動向網(wǎng)絡(luò)上其它節(jié)點發(fā)送信息,而不分主從。
(3)在報文標(biāo)志符上, CAN上的節(jié)點分成不同的優(yōu)先級,可滿足不同的實時要求,優(yōu)先級高的數(shù)據(jù)最多可在 134 us內(nèi)得到傳輸。
(4)CAN采用非破壞性總線仲裁技術(shù)。
(5)CAN節(jié)點只需通過報文的標(biāo)識符濾波即可實現(xiàn)點對點,一點對多點及全局廣播等幾種方式傳送數(shù)據(jù),無需專門的“調(diào)度”。
(6)CAN的直接通信距離最遠(yuǎn)可達(dá) 10 K米;通信速率最高可達(dá) 1 Mbps。
(7)CAN上的節(jié)點數(shù)主要取決與總線驅(qū)動電路,目前可達(dá)110多個。
(8)報文采用短幀結(jié)構(gòu),傳輸時間短,受干擾概率低,使數(shù)據(jù)的出錯率降低。
(9)CAN的每幀信息都有 CRC校驗及其他檢錯措施,具有極好的檢錯效果。
(10)CAN通信介質(zhì)可為雙絞線、同軸電纜或光纖。
(11)CAN節(jié)點在嚴(yán)重的情況下具有自動關(guān)閉輸出功能,以使總線上其他節(jié)點的操作不受影響。
(12)CAN總線具有較高的性能價格比。
2、車身網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)
對于電動車車身網(wǎng)絡(luò)[5]來說,電子設(shè)備多,位置分布雜亂。為了便于對整個網(wǎng)絡(luò)進(jìn)行管理,可以把整個車身網(wǎng)絡(luò)按找拓?fù)浣Y(jié)構(gòu)的不同劃分為不同的節(jié)點。網(wǎng)絡(luò)節(jié)點的劃分按照分塊劃分的原則。節(jié)點中的電子設(shè)備可以相互間進(jìn)行網(wǎng)絡(luò)通訊,不同區(qū)域的電子設(shè)備通過不同的網(wǎng)路節(jié)點進(jìn)行通訊。在分析電動車車身的設(shè)備的基礎(chǔ)上,把車身網(wǎng)絡(luò)分成儀表臺節(jié)點、左前節(jié)點、右前節(jié)點、左后節(jié)點和右后節(jié)點等。
對于車身網(wǎng)絡(luò)來說,電子設(shè)備對于通訊速度都沒有很高的要求,所以,按照美國工程師協(xié)會 SAE車身網(wǎng)絡(luò)定義,選擇 B類總線,傳輸速率為 10-125 kbps,網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)如圖 1所示:
500)this.style.width=500;" border="0" />
3、通訊協(xié)議報文設(shè)計
采用了 CAN總線通用的報文形式[6] 每幀最大的數(shù)據(jù)長度是 8 bytes。
通訊協(xié)議的報文主要任務(wù)是發(fā)送報文和接收報文,報文以數(shù)據(jù)幀的格式接收和發(fā)送 [7]。數(shù)據(jù)幀的數(shù)據(jù)域能發(fā)送或接收 8個字節(jié)的報文內(nèi)容。每個字節(jié)有 8個位,每次只能發(fā)送或接收1個位。通訊協(xié)議報文格式如表 1所示。
500)this.style.width=500;" border="0" />
4、基于 LABVIEW的協(xié)議實現(xiàn)
硬件采用 MC9S12DP51216單片機(jī)[7]。MC9S12DP51216單片機(jī)總線采用雙絞線和臺式上位機(jī)。
4.1定義數(shù)據(jù)結(jié)構(gòu)
在 LABVIEW中,Virtual CAN Interface(VCI) 函數(shù)庫是專門為 ZLGCAN設(shè)備在 PC上使用而提供的應(yīng)用程序接口,可以從 LABVIEW中直接使用這些庫函數(shù)。首先創(chuàng)建 VCI函數(shù)庫德數(shù)據(jù)結(jié)構(gòu),定義數(shù)據(jù)類型為簇,并同時調(diào)用庫函數(shù)[8]。
本系統(tǒng)的程序?qū)崿F(xiàn)了數(shù)據(jù)的發(fā)送與接受,并通過 CAN總線將收發(fā)的數(shù)據(jù)在前面板上的列表中顯示出來。該程序中含有3個主要的 While循環(huán):主循環(huán)、發(fā)送數(shù)據(jù)循環(huán)和接受數(shù)據(jù)循環(huán)。這三個循環(huán)是并行運(yùn)行的,互相獨立。主循環(huán)處理處理與用戶交互的界面,它使用了事件驅(qū)動機(jī)制來處理用戶在前面板的操作,并通過用戶事件與發(fā)送數(shù)據(jù)循環(huán)和接受數(shù)據(jù)循環(huán)通信。它包含以下功能:打開/關(guān)閉設(shè)備、超時、啟動 CAN、復(fù)位 CAN、讀取設(shè)備信息、讀取 CAN狀態(tài)、讀取錯誤信息和清空緩沖區(qū)。
4.2數(shù)據(jù)發(fā)送和接收函數(shù)的實現(xiàn) 接受和發(fā)送數(shù)據(jù)通過控制面板的按鈕,調(diào)用 VCI函數(shù),并同時把數(shù)據(jù)實時顯示出來。程序框圖如圖 2和圖 3所示。
500)this.style.width=500;" border="0" />
4.3 驅(qū)動模塊設(shè)計
驅(qū)動模塊包括超時模塊、停止模塊、OpenDevice模塊的設(shè)計、StartCAN模塊的設(shè)計、 ResetCAN模塊的設(shè)計、Clear Buffer模塊的設(shè)計、 GetBoradInfo模塊的設(shè)計、 GetErrorInfo模塊的設(shè)計、GetStatus模塊的設(shè)計和 TREvent模塊的設(shè)計等。各個模塊都是通過在控制面板中設(shè)計控制鍵,并調(diào)用子函數(shù),實現(xiàn)需要的功能。
其中 TREvent模塊的程序框圖如圖 4所示。該模塊主要用于顯示發(fā)送和接收的數(shù)據(jù)。
500)this.style.width=500;" border="0" />
5、系統(tǒng)測試
5.1建立控制面板和顯示面板
車身網(wǎng)絡(luò)系統(tǒng)要正確地反映通訊狀態(tài),首先要采集汽車在工作狀態(tài)下車身 CAN總線上的眾多信號。這些信號可以分成二大類:開光信號和模擬信號。
開關(guān)信號也稱為數(shù)字信號,主要有近光燈開關(guān)、遠(yuǎn)光燈開關(guān)、制動燈開關(guān)、霧燈開關(guān)、轉(zhuǎn)向燈開關(guān)、空調(diào)開關(guān)、雨刮開關(guān)。還有一些指示信號亮,需要通過 CAN網(wǎng)絡(luò)進(jìn)行傳輸,在儀表中進(jìn)行顯示的量。這些量包括 CAN故障指示、安全帶指示、遠(yuǎn)光指示、倒車指示、左轉(zhuǎn)向指示、右轉(zhuǎn)向指示、后霧燈指示、制動故障報警指示、駐車指示等。
車身網(wǎng)絡(luò)中也有一些模擬信號,主要包括電機(jī)轉(zhuǎn)速、車速、電池電量、電瓶電壓、電池溫度等。
通過 LABVIEW軟件建立開關(guān)量模塊的控制面板和顯示面板。通過控制面板的按鈕,可以發(fā)送相應(yīng)的數(shù)據(jù),并在顯示面板顯示相應(yīng)的信號。
500)this.style.width=500;" border="0" />
5.2數(shù)據(jù)接收和發(fā)送檢測
檢測數(shù)據(jù)的發(fā)送和接收,在LABVIEW中設(shè)定數(shù)據(jù)的收發(fā)類行為自發(fā)自收[9]。啟動CAN,指示燈亮,點發(fā)送按鈕,數(shù)據(jù)以自發(fā)自收的形式發(fā)送出去[10],如圖 5所示。 6、結(jié)論
本文針對電動汽車的特點,建立電動車車身網(wǎng)絡(luò)。在分析 CAN總線的基礎(chǔ)上,建立應(yīng)用層的通訊協(xié)議。應(yīng)用 LABVIEW軟件,編寫 CAN網(wǎng)絡(luò)通訊的上機(jī)位軟件。為了驗證通訊的數(shù)據(jù)傳輸和接收,在 LABVIEW軟件中進(jìn)行仿真,經(jīng)過檢測,該系統(tǒng)可以很好的實現(xiàn)電動車車身網(wǎng)絡(luò)的通訊要求。
本文作者創(chuàng)新點:
應(yīng)用 CAN總線技術(shù)建立了純電動車車身網(wǎng)絡(luò),通過 LABVIEW軟件實現(xiàn)了網(wǎng)絡(luò)連接。并通過系統(tǒng)的通訊測試,驗證了網(wǎng)絡(luò)的可行性。
參考文獻(xiàn)
[1] 胡驊,宋慧.電動汽車. 人民交通出版社.北京. 2006.
[2] 舒華,姚國平.汽車電子控制技術(shù).人民交通出版社.2008.
[3] 鄔明寬.CAN總線原理與應(yīng)用系統(tǒng)設(shè)計. 北京航天航空大學(xué)出版社.1996.
[4] 周凱,郭棟.虛擬儀器工程設(shè)計與開發(fā).國防工業(yè)出版社.2004年8月.
[5] 崔勝民,熊杰,王大方.汽車車身CAN網(wǎng)絡(luò)系統(tǒng)設(shè)計.2009,1:32-34.
[6] 徐偉,一種適用于分布式測量系統(tǒng)的CAN總線協(xié)議.微計算機(jī)信息.2007,11-2:32-34.
[7] 劉劍鋒,桂衛(wèi)華,黃志武,童海濤,諶介人.一種CAN總線調(diào)度算法在機(jī)車制動機(jī)上的應(yīng)用研究.2009,1-1:183-187.
[8] 王豐 , 欒學(xué)德,單片機(jī)原理與應(yīng)用技術(shù),北京航空航天大學(xué)出版社,2007.
[9] 蔡國英,張宏群.基于 LabVIEW的信號產(chǎn)生與分析系統(tǒng).國外電子測量技術(shù). 2007,7:12-14.
[10] 馬迎建,曹潔,宋彭.基于LabVIEW的3458A數(shù)據(jù)采集系統(tǒng)設(shè)計.電子測量技術(shù).2009,1:131-143.