基于CAN總線的電動車控制系統(tǒng)設計
本設計中采用的是29位擴展標示符,符合CAN2.0B的標準,所以在驗收屏蔽過濾器設置中進行相應的設定。同時,本設計的CAN波特率設置為250 Kb/s,與總線上其他節(jié)點的波特率相同,才能進行正常的通信。
4.2 數據的發(fā)送
對CAN數據的發(fā)送采用查詢方式,提高處理器的效率,STM32F103VE的CAN模塊有3個發(fā)送郵箱,發(fā)送報文的流程為:應用程序選擇一個空發(fā)送郵箱;設置標識符,數據長度和待發(fā)送數據;對CAN+TixR寄存器的TXRQ位置1,請求發(fā)送;郵箱進入掛號狀態(tài),等待發(fā)送;一旦CAN總線進入空閑狀態(tài),發(fā)送郵箱中的報文則立即發(fā)送,成功發(fā)送后,郵箱為空;通過查詢CAN_TSR寄存器的TXOK位來查詢報文是否發(fā)送成功。數據發(fā)送程序的流程圖如圖5所示。本文引用地址:http://cafeforensic.com/article/162479.htm
4.3 數據的接收
對CAN報文的接收采用中斷方式,提高通信的實時性。接收報文的流程如圖6所示。當CAN總線發(fā)來一個報文,根據屏蔽過濾器設置的標識符進行過濾,如果是要接收的報文,則CAN控制器將總線上的報文按順序存入接收FIFO,并進入接收中斷,在中斷中對接收FIFO中的報文進行存儲,然后釋放FIFO郵箱。如果不釋放郵箱,當總線上再發(fā)送過來報文時,會直接覆蓋上一個報文,從而導致報文丟失。數據接收程序流程如圖6所示。
4.4 錯誤處理
電動車的整車控制器需要接收BMS、CCS和電機控制器這3個節(jié)點發(fā)來的報文,如果超過1 s未接收到例如BMS的報文,則通信鏈路超時,此時需要進行故障處理。所以在軟件設計時,定義一個全局變量,在每個定時周期中加1,在接收BMS報文中斷中,對此變量清零,則可以實現通信超時檢測。當總線發(fā)生嚴重故障時,CAN節(jié)點錯誤寄存器累積到一定次數時,CAN控制器會關閉總線,節(jié)點脫離總線。
5 結論
在實車實驗中,各個節(jié)點可以實現可靠的數據通信,可以實現電動車的加減速和勻速運行。在本電動車控制系統(tǒng)中,設計的CAN通信節(jié)點體積小、功耗低、處理能力強、抗干擾性好,能在電磁環(huán)境復雜的環(huán)境中穩(wěn)定、可靠地工作。在電動車控制系統(tǒng)中可實現數據的實時快速通信,可靠性強。
評論