潘 琪,譚 勁,范明月
(中國計量大學(xué) 信息工程學(xué)院,浙江 杭州 310018)
控制器局域網(wǎng)CAN[1](Controller area network)最早是由Bosch公司于1985年研發(fā),用于搭建車內(nèi)網(wǎng)絡(luò),是一個汽車內(nèi)部ECU之間有效、可靠、快速的串行傳輸總線,并于1993年成為國際標(biāo)準(zhǔn)(ISO 11898)。大部分汽車?yán)锒加袃蓷lCAN總線[2]:一條高速總線,用來傳輸汽車在行駛中傳動系統(tǒng)單元的相關(guān)數(shù)據(jù),如發(fā)動機、方向盤、剎車和變速箱等。它的傳輸速率約500 kb/s,最高可達(dá)1 M;另一條是低速總線,主要用于傳輸車身單元的數(shù)據(jù),如收音機、車門鎖、車窗控制和溫度(空調(diào))等數(shù)據(jù),傳輸速率可達(dá)125 kb/s。在每條總線上傳輸?shù)母鱾€數(shù)據(jù)就是一個電控單元即ECU。兩條總線之間通過一個網(wǎng)關(guān)[3]相連,網(wǎng)關(guān)可以進行速度匹配和與其它總線格式進行轉(zhuǎn)換。整車網(wǎng)絡(luò)框架如圖1。

圖1 整車網(wǎng)絡(luò)框架圖Figure 1 Vehicle network framework
CAN協(xié)議廢除了傳統(tǒng)的站地址編碼,對發(fā)送的消息進行編碼,消息的標(biāo)識符ID由11位或29位[4]的二進制數(shù)組成。在CAN總線上不存在主/從ECU,所有節(jié)點都能發(fā)送數(shù)據(jù)和接收其它節(jié)點發(fā)出的數(shù)據(jù)[5],并且所有ECU都有過濾能力。當(dāng)某一個ECU發(fā)出消息后,其他所有的ECU可以同時接收并讀取該ECU發(fā)送的數(shù)據(jù),但這些ECU只對有需要的數(shù)據(jù)作出回應(yīng);當(dāng)多個節(jié)點同時發(fā)送數(shù)據(jù)時,依據(jù)總線仲裁特性[6],ID值越低優(yōu)先權(quán)越高,具有較低值ID的消息可以優(yōu)先將數(shù)據(jù)發(fā)送出去,而較高值ID的消息只能在總線空閑時再發(fā)送。CAN總線上的消息包含4種不同的幀[7],即數(shù)據(jù)幀、請求幀、錯誤幀和超載幀。數(shù)據(jù)幀的數(shù)據(jù)長度范圍為0~8字節(jié)[8],由ECU周期性的發(fā)出,不……