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