梁 浩
(華北水利水電大學,河南 鄭州 450045)
近20年來,隨著現(xiàn)代電子的快速發(fā)展,大量的電子元器件在汽車上被廣泛應用。為了滿足汽車各個子系統(tǒng)對汽車運行參數(shù)的共享和實時性的要求,CAN總線逐漸成為當代汽車普遍使用的總線協(xié)議。
本監(jiān)控系統(tǒng)由一塊CAN卡(沈陽廣成 USBCAN-Ⅱ)和PC機組成,PC機里裝有基于LabVIEW開發(fā)的應用軟件。通過數(shù)據(jù)線的連接,PC機可以對汽車發(fā)動機運行參數(shù)數(shù)據(jù)的接收和發(fā)送,從而實現(xiàn)用戶對汽車發(fā)動機運行參數(shù)的監(jiān)控。如圖1所示。
圖1 系統(tǒng)硬件組成
監(jiān)控系統(tǒng)的軟件設計是基于LabVIEW平臺。LabVIEW是一種程序開發(fā)環(huán)境,由美國國家(NI)公司研制開發(fā),類似于C和BASIC開發(fā)環(huán)境,顯著特點是:不需要采用基于文本的語言代碼,使用的是圖形化編輯語言G編寫程序,產(chǎn)生的程序是框圖的形式。
汽車數(shù)據(jù)采集監(jiān)控系統(tǒng)主要包括以下功能:
1)從車輛的ECU接收發(fā)動機運行狀態(tài)參數(shù);
2)對接收到的狀態(tài)參數(shù)進行解讀,以數(shù)字,圖表等形式顯示;
3)根據(jù)用戶需要,對發(fā)動機狀態(tài)運行參數(shù)進行修正,發(fā)送指令給車輛ECU;
以上3個功能只需隨軟件運行時打開主程序,兩個并列的While結構中運行數(shù)據(jù)接收程序和數(shù)據(jù)發(fā)送程序。其中,在數(shù)據(jù)接收子程序后要添加一個條件結構對接收到的數(shù)據(jù)進行解讀顯示;在數(shù)據(jù)發(fā)送程序中添加事件結構,監(jiān)控控件動作變化。當然,只有在主程序不報錯的情況下,其余程序才能順利進行。軟件程序結構如圖2所示。
圖2 軟件程序結構
沈陽廣成科技的USBCAN-Ⅱ產(chǎn)品提供了Ecan動態(tài)庫,這個動態(tài)庫里包括了大量的動態(tài)函數(shù),通過驅(qū)動文件Control CAN.dll導出,可以作為LabVIEW的VI調(diào)用,從而實現(xiàn)對USBCAN-Ⅱ的打開、初始化設置等操作。
2.2.1 主程序
軟件系統(tǒng)中的基礎是主程序,只有主程序打開 CAN卡初始化后,CAN通信正常,其它的子程序才能順利進行,而主程序包括:打開CAN卡、初始化CAN卡、CAN通信打開,啟動子程序等。為了提高軟件的運行效率,打開 CAN卡后,只需進行一次初始化,隨后的數(shù)據(jù)操作都是在數(shù)據(jù)發(fā)送和數(shù)據(jù)接收中進行,所以對主程序使用了平鋪結構,只要CAN通信打開后,CAN卡不再進行初始化,這樣既可以保證CAN卡順利打開,又可以保證CAN通信的正常運行。
2.2.2 數(shù)據(jù)接收程序
VCI_Receive是CAN卡的接收函數(shù),在LabVIEW中使用調(diào)用庫函數(shù)的指令進行調(diào)用。通過設置timing0和timing1可以設置CAN通信的波特率。而CAN_OBJ結構體表示幀的數(shù)據(jù)結構。在接收函數(shù)Receive中被用來傳送CAN信息幀。
2.2.3 數(shù)據(jù)解讀程序
VCI_Receive函數(shù)的輸出量是以結構體形式的數(shù)組,故需要調(diào)用 LabVIEW 中“簇”將其解壓,將數(shù)據(jù)從結構體中釋放出來,再根據(jù) ID將具體的數(shù)據(jù)進行解壓和顯示。在顯示過程中調(diào)用了選擇結構,將根據(jù) ID的不同將不同的數(shù)據(jù)以不同的方式解讀和顯示。
2.2.4 數(shù)據(jù)發(fā)送程序
VCI_Transmit是CAN卡的發(fā)送函數(shù),由于數(shù)據(jù)發(fā)送程序是在一個While結構中,所以在While結構中加入了事件結構,由事件發(fā)生源作為While結構的觸發(fā)事件,這樣就可以減少數(shù)據(jù)發(fā)送程序的不必要運行,同時保證數(shù)據(jù)發(fā)送指令的即時執(zhí)行。而數(shù)據(jù)自動填充報文是在事件結構中進行,并且使用了局部變量將得到的報文以結構體的形式發(fā)出,實現(xiàn)CAN通信的發(fā)送。
汽車數(shù)據(jù)采集監(jiān)控系統(tǒng)是通過PC機和CAN卡的連接且可以正確接收和發(fā)送報文實現(xiàn)的,進而可以實現(xiàn)對發(fā)動機運行參數(shù)的檢測和控制。在軟件的試驗過程中,將 CAN卡與發(fā)動機 ECU通過雙絞線連接,實現(xiàn)發(fā)動機和監(jiān)控系統(tǒng)的通信,從而驗證軟件的實用性。
本監(jiān)控系統(tǒng)運行后,會直接顯示系統(tǒng)的運行,如圖3所示:
圖3 系統(tǒng)運行界面
圖中為試驗過程中系統(tǒng)的運行狀態(tài),均達到預期設計目的,運行穩(wěn)定。
在汽車試驗中,通過LabVIEW和CAN總線建立的汽車數(shù)據(jù)采集監(jiān)控系統(tǒng),可以實時監(jiān)測和控制車輛的運行參數(shù),且通過試驗進行驗證。結果表明,系統(tǒng)運行穩(wěn)定、可靠,軟件操作簡單,達到預期設計目的。
參考文獻
[1] 沈陽廣成科技有限公司.接口函數(shù)庫(EcanVCI.dll)動態(tài)使用手冊[Z].2015.
[2] 周竹朋,王歡.基于 CAN總線的新能源汽車通信網(wǎng)絡設計[J].機電工程技術,2017.
[3] 鐘文浩.電動汽車CAN報文的解析及應用[J].汽車電器,2017.
[4] 王堃,奚煜.基于LabVIEW的CAN總線通信系統(tǒng)的設計與實現(xiàn)[J].工業(yè)控制計算機,2017.