伴隨著電動(dòng)汽車的發(fā)展,CAN總線通訊技術(shù)應(yīng)用越來越廣泛,它可為純電動(dòng)汽車上四輪獨(dú)立驅(qū)動(dòng)控制,以及剎車防抱死系統(tǒng)(ABS)、電子穩(wěn)定裝置(ESP)等主動(dòng)安全系統(tǒng)的實(shí)現(xiàn)提供便利。
在設(shè)計(jì)CAN總線通信系統(tǒng)時(shí),總要面臨著CAN數(shù)據(jù)的診斷與分析問題,不能解決該問題,便不能完成設(shè)計(jì)。本文基于Kvaser Leaf Professional HS這一USB_CAN工具,借助于Visual Basic環(huán)境,在PC機(jī)上開發(fā)出數(shù)據(jù)分析系統(tǒng),并在該分析系統(tǒng)與四輪獨(dú)立驅(qū)動(dòng)電動(dòng)車電機(jī)控制板之間實(shí)現(xiàn)了CAN通信。通過對(duì)CAN總線數(shù)據(jù)進(jìn)行診斷分析,能夠更好地完成CAN總線系統(tǒng)的設(shè)計(jì)。
四輪獨(dú)立驅(qū)動(dòng)
電動(dòng)車控制策略
電動(dòng)車實(shí)物模型中使用的分布式四輪電子差速系統(tǒng)由一個(gè)中央控制器、四個(gè)電動(dòng)輪控制器及CAN總線網(wǎng)絡(luò)三個(gè)部分組成,其在電動(dòng)車實(shí)物模型上的布局如圖1所示。
圖1 分布式四輪電子差速系統(tǒng)在車身上的布局
在該分布式系統(tǒng)中,基于四輪獨(dú)立控制的電子差速算法被分為整車差速算法與轉(zhuǎn)速控制算法兩個(gè)部分,其中轉(zhuǎn)速控制算法是針對(duì)每個(gè)電動(dòng)輪轉(zhuǎn)速。中央控制器與四個(gè)電動(dòng)輪控制器通過CAN總線連接成一個(gè)實(shí)時(shí)控制網(wǎng)絡(luò)。
在該系統(tǒng)控制過程中,中央控制器通過A/D采樣獲得來自轉(zhuǎn)向傳感器的車輛轉(zhuǎn)向角度信號(hào)和來自手柄轉(zhuǎn)把中的車速設(shè)定信號(hào),經(jīng)過整車差速算法,分別獲得四個(gè)車輪當(dāng)前各自應(yīng)有的轉(zhuǎn)速,并將這一結(jié)果作為當(dāng)前時(shí)刻對(duì)應(yīng)車輪的轉(zhuǎn)速控制設(shè)定值,通過CAN總線發(fā)送給相應(yīng)的電動(dòng)輪控制器。四個(gè)車輪控制器以從CAN總線收到的轉(zhuǎn)速設(shè)定值作為控制目標(biāo),使用電動(dòng)轉(zhuǎn)速控制算法對(duì)各自的電動(dòng)輪進(jìn)行控制,使各個(gè)電動(dòng)輪的實(shí)際轉(zhuǎn)速實(shí)時(shí)滿足整車差速算法的要求,進(jìn)而實(shí)現(xiàn)電動(dòng)車輛的平順轉(zhuǎn)向。
四輪獨(dú)立驅(qū)動(dòng)
電動(dòng)車CAN控制網(wǎng)絡(luò)
通過CAN總線,本四輪驅(qū)動(dòng)電動(dòng)車中央控制器將車輪的速度等設(shè)定值傳送給每個(gè)車輪的控制器,同時(shí),各電機(jī)控制器將實(shí)際轉(zhuǎn)速等信息通過CAN總線反饋給中央控制器。CAN網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)如圖2所示。
圖2 CAN控制網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)
整個(gè)網(wǎng)絡(luò)中共含有五個(gè)CAN節(jié)點(diǎn):四個(gè)電動(dòng)輪電機(jī)控制器a、b、c、d,以及一個(gè)電動(dòng)車中央控制器e。
在設(shè)計(jì)應(yīng)用層協(xié)議時(shí),必須根據(jù)實(shí)際應(yīng)用為總線消息編排一個(gè)合理的總線仲裁優(yōu)先順序,以改善CAN通訊的實(shí)時(shí)性。在本應(yīng)用場(chǎng)合中,下行數(shù)據(jù)即中央控制器發(fā)給各電動(dòng)輪電機(jī)控制器的控制命令,比上行數(shù)據(jù)即各電動(dòng)輪電機(jī)控制器的反饋信息具有更高的優(yōu)先級(jí)。此外,中央控制器發(fā)往四個(gè)車輪控制器的指令必須同步,才能為后續(xù)控制提供可靠的前提。
綜合考慮以上因素,本文設(shè)計(jì)了如表1所示的CAN數(shù)據(jù)報(bào)文ID體系。
電機(jī)控制器a、b、c、d分別控制電動(dòng)車左前輪、右前輪、左后輪和右后輪。中央控制器發(fā)出的CAN消息數(shù)據(jù)域結(jié)構(gòu)如圖3所示。
圖3 中央控制器CAN消息數(shù)據(jù)域結(jié)構(gòu)
中央控制器發(fā)出的ID為0x010和0x020的CAN數(shù)據(jù),表示轉(zhuǎn)速以及轉(zhuǎn)矩的設(shè)定值,對(duì)應(yīng)的實(shí)際值為模擬量,這里采用了16位長(zhǎng)度的有限精度定點(diǎn)數(shù)表示。16位數(shù)據(jù)中高9位表示整數(shù),低7位表示小數(shù),即9Q7格式的定點(diǎn)數(shù)。對(duì)于中央控制器發(fā)出的ID為0x00F的CAN數(shù)據(jù),發(fā)給每一個(gè)電機(jī)控制器的命令也是16位的數(shù)據(jù),低8位表示剎車命令,高8位表示控制模式選擇命令。
四個(gè)電機(jī)控制器向中央控制器反饋當(dāng)前狀態(tài)信息的CAN消息數(shù)據(jù)域結(jié)構(gòu)如圖4所示。
圖4 電機(jī)控制反饋狀態(tài)信息結(jié)構(gòu)
CAN總線消息的觸發(fā)方式有兩種:事件觸發(fā)與時(shí)間觸發(fā)。前者適用于發(fā)送時(shí)間上離散變化的開關(guān)狀態(tài)量,如剎車命令與控制模式選擇命令;后者適用于發(fā)送時(shí)間上連續(xù)變化的模擬量,如轉(zhuǎn)速設(shè)定值與轉(zhuǎn)矩設(shè)定值。由于本控制系統(tǒng)中兼有上述兩類總線信息,故采用事件觸發(fā)與時(shí)間觸發(fā)相結(jié)合的方式來進(jìn)行發(fā)送。
Kvaser Leaf Professional
HS簡(jiǎn)介
Kvaser Leaf Professional是用于CAN和LIN的單通道USB接口,該設(shè)備提供了把幾個(gè)接口簡(jiǎn)單接入PC的可能性,可以方便地實(shí)現(xiàn)同一個(gè)USB Hub上連接多個(gè)Kvaser Leaf設(shè)備,并且無需額外的連接。此外,它還具有很好的EMC(Electro Magnetic Compatibility)性能以及即插即拔的特點(diǎn)。同時(shí),由于一個(gè)USB Hub上可以連接多個(gè)設(shè)備,因此各個(gè)設(shè)備都可以由該Hub進(jìn)行供電,具有很低的功耗。
Kvaser提供的庫函數(shù)非常豐富,用戶可以根據(jù)自己的需要調(diào)用相應(yīng)的庫函數(shù),靈活地處理CAN總線數(shù)據(jù)。
PC機(jī)CAN數(shù)據(jù)分析系統(tǒng)設(shè)計(jì)
該數(shù)據(jù)分析系統(tǒng)根據(jù)電輪獨(dú)立驅(qū)動(dòng)車中央控制器與四個(gè)電機(jī)控制器之間的CAN通信數(shù)據(jù),動(dòng)態(tài)地顯示中央控制器發(fā)出的命令,以及各個(gè)電機(jī)的當(dāng)前運(yùn)轉(zhuǎn)信息。同時(shí),還可以顯示各個(gè)電機(jī)轉(zhuǎn)速的變化曲線,并具有數(shù)據(jù)保存功能,便于離線分析。
該系統(tǒng)基于Visual Basic語言設(shè)計(jì)開發(fā),應(yīng)用了Measurement Studio軟件中的CWGraph控件來顯示轉(zhuǎn)速曲線。通過Kvaser Leaf Professional HS,PC機(jī)與控制板之間的CAN通信得以實(shí)現(xiàn)。電機(jī)運(yùn)轉(zhuǎn)數(shù)據(jù)的保存則通過VB編程連接Microsoft Access數(shù)據(jù)庫完成。這樣,系統(tǒng)就可以由一個(gè)主窗體和五個(gè)顯示電機(jī)轉(zhuǎn)速曲線的子窗體組成,如圖5所示。
圖5 窗體結(jié)構(gòu)圖
這里,主窗體是啟動(dòng)窗體,子窗體A、B、C、D、E在主窗體啟動(dòng)時(shí)并不顯示,通過主窗體上的相應(yīng)按鍵可以控制子窗體的啟動(dòng)以及關(guān)閉,亦即顯示和關(guān)閉各車輪轉(zhuǎn)速曲線。
系統(tǒng)運(yùn)行時(shí),最先啟動(dòng)的是主窗體,通過主窗體上對(duì)相應(yīng)按鍵的點(diǎn)擊等操作,可以方便地與各控制板之間建立CAN通信,接收主控板與電機(jī)控制板之間的CAN消息,通過界面內(nèi)部數(shù)據(jù)處理函數(shù)處理后,在相應(yīng)顯示區(qū)域加以顯示。
CAN通信正常后,五個(gè)顯示區(qū)域便會(huì)根據(jù)CAN總線上的消息動(dòng)態(tài)更新并顯示相應(yīng)信息。
當(dāng)需要進(jìn)行數(shù)據(jù)保存時(shí),單擊Data_Record按鍵,便會(huì)彈出選擇數(shù)據(jù)庫的窗口,選擇已經(jīng)建立好的數(shù)據(jù)庫后,電機(jī)的狀態(tài)數(shù)據(jù)便可以保存在被選擇的數(shù)據(jù)庫中,還可以隨時(shí)中止數(shù)據(jù)保存。需要注意的是,被保存的電機(jī)運(yùn)轉(zhuǎn)狀態(tài)數(shù)據(jù)是在單擊Data_Record按鍵并選擇好數(shù)據(jù)庫后界面收到的數(shù)據(jù),這之前的數(shù)據(jù)并沒有保存。也就是說,如果想把整個(gè)電機(jī)運(yùn)轉(zhuǎn)過程的數(shù)據(jù)都保存下來的話,在電機(jī)開始運(yùn)轉(zhuǎn)之前就要先單擊Data_Record按鍵,并選擇好數(shù)據(jù)庫。
在退出界面時(shí),首先應(yīng)該斷開CAN總線的連接,單擊Disconnect按鍵斷開。然后單擊Quit按鍵便可以正常退出界面。
本系統(tǒng)的設(shè)計(jì)采用了在VB中使用ADO(ActiveX Data Object)對(duì)象模型的方法,連接Microsoft Access數(shù)據(jù)庫,進(jìn)行數(shù)據(jù)保存。只要在一個(gè)數(shù)據(jù)庫中建立一系列的表,便可以將數(shù)據(jù)很方便地保存在相應(yīng)的表中。比如,本設(shè)計(jì)中為四個(gè)電機(jī)分別建立了一個(gè)獨(dú)立的表,用以存儲(chǔ)其運(yùn)轉(zhuǎn)的狀態(tài)信息,包括轉(zhuǎn)速、轉(zhuǎn)矩、電池電壓以及控制模式等信息。利用Access數(shù)據(jù)庫的數(shù)據(jù)處理功能可以很方便地進(jìn)行離線的數(shù)據(jù)分析和處理。
為了方便不同用戶對(duì)系統(tǒng)的使用,在數(shù)據(jù)保存之前,系統(tǒng)提供了一個(gè)對(duì)話框讓用戶選擇已有的數(shù)據(jù)庫,便于用戶自定義數(shù)據(jù)保存的路徑。
結(jié)語
在本設(shè)計(jì)的軟件方面,在VB環(huán)境下,MeasurementStudio提供了功能強(qiáng)大的控件;硬件方面,具有Kvaser Leaf Professional HS以及Peak_CAN等工具,使得本系統(tǒng)的實(shí)現(xiàn)變得容易,且效果也比常規(guī)的設(shè)計(jì)方法更好。經(jīng)過聯(lián)機(jī)調(diào)試證明,本系統(tǒng)能有效地對(duì)CAN總線的數(shù)據(jù)進(jìn)行分析處理。