王丹
(西安航空職業(yè)技術(shù)學(xué)院 陜西 西安 710089)
隨著車(chē)輛電子設(shè)備性能的不斷更新和進(jìn)步,汽車(chē)中的控制系統(tǒng)數(shù)量也在增加,而連接這些電子設(shè)備的導(dǎo)線(xiàn)也越來(lái)越多。這些粗大線(xiàn)束給汽車(chē)的空間造成了影響。為了減輕汽車(chē)重量,提高汽車(chē)的通訊控制系統(tǒng),及時(shí)解決這些問(wèn)題非常重要[1-2]。目前,多數(shù)汽車(chē)都有網(wǎng)絡(luò)裝置系統(tǒng),但是因?yàn)殡姎夥N類(lèi)比較多,關(guān)于網(wǎng)絡(luò)速度的需求也是不同的,所以目前市場(chǎng)中的網(wǎng)絡(luò)協(xié)議比較多。本文主要分析BOSCH公司開(kāi)發(fā)的CAN網(wǎng)絡(luò)協(xié)議,對(duì)汽車(chē)控制系統(tǒng)的網(wǎng)絡(luò)輸送率進(jìn)行分析。
傳統(tǒng)的接線(xiàn)方法一般是在ECU上直接進(jìn)行點(diǎn)對(duì)點(diǎn)的連接,但是處于不同的數(shù)據(jù)頻繁交換環(huán)境下,這種接線(xiàn)方式不僅會(huì)增加車(chē)內(nèi)空間,同時(shí)也會(huì)因?yàn)榫€(xiàn)束過(guò)多,增加成本,影響其他線(xiàn)路信號(hào)。CAN可以實(shí)現(xiàn)對(duì)串行的多控制器進(jìn)行分布式、實(shí)時(shí)的局域網(wǎng)絡(luò)總線(xiàn)控制,具有很高的速率以及可靠性,對(duì)于車(chē)輛計(jì)算系統(tǒng)、電磁輻射等惡劣的環(huán)境下比較適合使用。主要特點(diǎn)表現(xiàn):網(wǎng)絡(luò)的節(jié)點(diǎn)達(dá)到110個(gè),通信的速率距離是5 kbps/10 km~1Mbps/40m,每個(gè)節(jié)點(diǎn)都可以實(shí)現(xiàn)自動(dòng)傳輸,一般是通過(guò)同軸電纜、雙絞線(xiàn)、光纖等介質(zhì)進(jìn)行通信。還有其具有總線(xiàn)非破壞性競(jìng)爭(zhēng)裁決功能,可以避免兩個(gè)節(jié)點(diǎn)一同進(jìn)行信息發(fā)送,系統(tǒng)會(huì)將優(yōu)先級(jí)別比較低節(jié)點(diǎn)數(shù)據(jù)傳輸停止,實(shí)現(xiàn)優(yōu)先級(jí)高的數(shù)據(jù)傳輸;CAN使用的是短幀結(jié)構(gòu),其結(jié)構(gòu)受到的干擾性比較低,傳輸時(shí)間很短,具有很強(qiáng)的網(wǎng)絡(luò)抗干擾功能[3-4]。如果節(jié)點(diǎn)出現(xiàn)錯(cuò)誤,這時(shí)系統(tǒng)會(huì)自動(dòng)切斷與總線(xiàn)的聯(lián)系,從而減少給系統(tǒng)的影響。數(shù)據(jù)傳輸?shù)姆绞接幸稽c(diǎn)對(duì)多點(diǎn)、點(diǎn)對(duì)點(diǎn)、多主方式、多點(diǎn)全局廣播方式等,同時(shí)具有很高的CRC校驗(yàn)功能,可以在很大程度上減少數(shù)據(jù)的錯(cuò)誤率,提高通信的穩(wěn)定性。
CAN的數(shù)據(jù)幀是實(shí)現(xiàn)CAN總線(xiàn)上的數(shù)據(jù)鏈路層和物理層數(shù)據(jù)交換的數(shù)據(jù)結(jié)構(gòu),是屬于技術(shù)規(guī)范內(nèi)的幀定義結(jié)構(gòu),但是對(duì)接受和發(fā)送信息沒(méi)有定義功能,這些需要用戶(hù)按照系統(tǒng)規(guī)則進(jìn)行數(shù)據(jù)以及數(shù)據(jù)接口的設(shè)定,及時(shí)賦予數(shù)據(jù)不同的幀位。用戶(hù)可以直接通過(guò)通信軟件,連接數(shù)據(jù)接口與CAN總線(xiàn)的通信協(xié)議,從而實(shí)現(xiàn)數(shù)據(jù)的傳輸。
CAN協(xié)議標(biāo)準(zhǔn)的數(shù)據(jù)幀格式是CAN2.0A,其擴(kuò)展版是CAN2.0B;這兩種模式的數(shù)據(jù)幀有7個(gè)組成部分。其中擴(kuò)展版ID是29位,有5.12×108個(gè)不同的信息,標(biāo)準(zhǔn)的ID碼有11位,存在2048個(gè)不同識(shí)別信息。
攜帶數(shù)據(jù)的數(shù)據(jù)幀是從發(fā)送器傳輸給接收器的幀,關(guān)于CAN總線(xiàn)標(biāo)準(zhǔn)格式的數(shù)據(jù)幀如表1所示。
關(guān)于數(shù)據(jù)幀的結(jié)構(gòu)包括:
表1 CAN總線(xiàn)標(biāo)準(zhǔn)版格式數(shù)據(jù)幀
1)仲裁段:是由遠(yuǎn)程、11位標(biāo)識(shí)符發(fā)送求程序(RTR)構(gòu)成,而RTR的顯位是數(shù)據(jù)幀,隱位是遠(yuǎn)程幀。標(biāo)識(shí)符則是從高到低進(jìn)行發(fā)送,其中總線(xiàn)訪問(wèn)和傳送保溫具有優(yōu)先權(quán),數(shù)據(jù)值小的優(yōu)先權(quán)比較高,而ID0~I(xiàn)D4是不完全的隱性位;
2)數(shù)據(jù)段:構(gòu)成部分是被發(fā)送數(shù)據(jù),控制數(shù)目是0~8個(gè)字節(jié),在第一個(gè)最高位字節(jié)是優(yōu)先發(fā)送的;
3)起始位:具有同步作用,在總線(xiàn)空閑時(shí)發(fā)送,由1位顯性位組成;
4)證實(shí)段:是由應(yīng)答界定符、間隙應(yīng)答符構(gòu)成,總共有2位;
5)CRC段:是有學(xué)IE15位CRC(冗余循環(huán)碼校驗(yàn))、1個(gè)隱位界定符構(gòu)成,對(duì)幀進(jìn)行校驗(yàn);
6)結(jié)束段:有隱性位7位構(gòu)成,在這個(gè)期間沒(méi)有位填充。
CAN總線(xiàn)協(xié)議在汽車(chē)控制系統(tǒng)中使用比較廣泛,它是具有很大使用價(jià)值的控制局域網(wǎng)絡(luò)總線(xiàn)。
關(guān)于汽車(chē)控制系統(tǒng)中的最小系統(tǒng)節(jié)點(diǎn)原理框架圖如圖1所示。
圖1 最小系統(tǒng)節(jié)點(diǎn)原理框架圖
該節(jié)點(diǎn)系統(tǒng)上核心部分是SJA1000控制器和80C196KC微控制器。其中,82C250是作為CAN總線(xiàn)上的收發(fā)器,它的作用就是將物理總線(xiàn)和CAN器件進(jìn)行連接。SJA1000一般是在工業(yè)和汽車(chē)環(huán)境中作為高集成的局域網(wǎng)(CAN)獨(dú)立控制器,它可以實(shí)現(xiàn)高性能的網(wǎng)絡(luò)通信的各種需求,從而實(shí)現(xiàn)數(shù)據(jù)鏈路系統(tǒng)和物理系統(tǒng)的功能[5-6]。
CAN總線(xiàn)協(xié)議是存在優(yōu)先節(jié)點(diǎn)占用總線(xiàn)的功能,這樣是為了避免過(guò)多的節(jié)點(diǎn)占線(xiàn)影響重要數(shù)據(jù)的傳輸,CAN控制器是通過(guò)識(shí)別大小標(biāo)識(shí)碼來(lái)判斷總線(xiàn)情況,它也是一種非破壞性的協(xié)議仲裁總線(xiàn)。在具有不同格式且標(biāo)識(shí)碼相同的總線(xiàn)上,信息的傳送具有標(biāo)準(zhǔn)格式幀優(yōu)于擴(kuò)展格式幀的規(guī)則。
根據(jù)CAN總線(xiàn)相關(guān)協(xié)議,在網(wǎng)絡(luò)數(shù)據(jù)傳輸時(shí),需要網(wǎng)絡(luò)通過(guò)標(biāo)識(shí)碼來(lái)制定信息的優(yōu)先級(jí)[7-8]。見(jiàn)表2中使用擴(kuò)展方式的CAN總線(xiàn)協(xié)議下汽車(chē)控制系統(tǒng)的ID幀定義。假如某個(gè)節(jié)點(diǎn)上的CPU想要給另外一個(gè)節(jié)點(diǎn)或是多個(gè)節(jié)點(diǎn)發(fā)送信息,需要將這些標(biāo)識(shí)碼和待發(fā)信息給CAN總控制器發(fā)送過(guò)去,CAN總線(xiàn)控制器負(fù)責(zé)整理和發(fā)送信息。這時(shí)某個(gè)節(jié)點(diǎn)會(huì)獲得CAN總線(xiàn)控制器給予的總線(xiàn)控制權(quán),而網(wǎng)絡(luò)其他節(jié)點(diǎn)就會(huì)收到該節(jié)點(diǎn)發(fā)送的信息,同時(shí)完成檢驗(yàn)信息的功能,并建立收到的信息和節(jié)點(diǎn)之間的關(guān)系,再進(jìn)行處理。
DA是CAN總線(xiàn)的接收數(shù)據(jù)包的地址。PF屬于數(shù)據(jù)類(lèi)的代碼,而PS則是擴(kuò)展型的數(shù)據(jù)類(lèi)或是目標(biāo)地址,如果PS的目標(biāo)是DA地址(DA=255廣播時(shí)的信息),這時(shí)PS則是數(shù)據(jù)類(lèi)的擴(kuò)展碼。SA是CAN總線(xiàn)發(fā)送數(shù)據(jù)包的地址。CAN的數(shù)據(jù)包使用ID28-26作為優(yōu)先級(jí),其值越小表示有越高的優(yōu)先級(jí)。在ID幀中的DA、PS、PF取值是選擇 CAN數(shù)據(jù)包中的DA、PF、PS值。
關(guān)于數(shù)據(jù)接受步驟如下:
1)子程序進(jìn)入查詢(xún)狀態(tài);
2)判斷是否有故障,如果沒(méi)有直接進(jìn)行下一步,如果有返回到開(kāi)始部分;
3)沒(méi)有故障需要通過(guò)SJA1000讀取CPU中的數(shù)據(jù);
4)之后從接受數(shù)據(jù)中找出時(shí)標(biāo)序號(hào)、PGN、源地址;
5)然后判斷這些信息是該節(jié)點(diǎn)需要反應(yīng)的指令嗎?如果不是,將不正常相應(yīng)的信息發(fā)送到開(kāi)始程序,如果是,就將信息發(fā)送出去;
6)之后根據(jù)信息完成各種相應(yīng)命令,結(jié)束。
在該接受流程中,PGN是PS和PF的組合,它是根據(jù)不同的物理意義將信息按照不同的規(guī)則轉(zhuǎn)為代碼,作為CAN數(shù)據(jù)包類(lèi)型、意義的指定。
關(guān)于汽車(chē)控制系統(tǒng)中的CAN通信流程如下:
1)初始化SJA1000:將驗(yàn)收碼、發(fā)送錯(cuò)誤、設(shè)置控制、輸出、發(fā)送錯(cuò)誤、接收屏蔽、總線(xiàn)定時(shí)等寄存器都進(jìn)入到工作的狀態(tài);
2)發(fā)送命令:給目標(biāo)節(jié)點(diǎn)地址發(fā)送相應(yīng)的命令;
3)發(fā)送廣播的數(shù)據(jù):從制定的地址處得到相應(yīng)數(shù)量的廣播數(shù)據(jù)并發(fā)送;
4)發(fā)送數(shù)據(jù):分析CAN總線(xiàn)是否處于給目標(biāo)節(jié)點(diǎn)地址發(fā)送數(shù)據(jù)要求,比如:工作狀態(tài)、時(shí)間、工作信息等;
5)接收命令:提取命令碼,之后分析并完成執(zhí)行操作,比如:查詢(xún)、系統(tǒng)自檢等;
6)接收數(shù)據(jù):通過(guò)CAN讀取接收的數(shù)據(jù),長(zhǎng)度控制在0~8,之后將這些數(shù)據(jù)保存在單片機(jī)緩沖位置,之后再釋放接收數(shù)據(jù)的緩沖區(qū)。
表2 車(chē)輛控制系統(tǒng)的ID幀定義
7)復(fù)位節(jié)點(diǎn):將節(jié)點(diǎn)復(fù)位,并設(shè)置寄存器。
本文將該系統(tǒng)在實(shí)車(chē)和臺(tái)架上進(jìn)行了實(shí)驗(yàn),證明了這個(gè)系統(tǒng)具有很大的可靠性及正確性。本文主要是對(duì)CAN的幀格式、結(jié)構(gòu)特點(diǎn)、數(shù)據(jù)交換的運(yùn)作原理進(jìn)行分析,同時(shí)分析了汽車(chē)控制系統(tǒng)中小系統(tǒng)節(jié)點(diǎn)的構(gòu)建以及電原理,還有CAN通信協(xié)議的具體實(shí)現(xiàn)流程,經(jīng)過(guò)驗(yàn)證,該設(shè)計(jì)系統(tǒng)具有很強(qiáng)的實(shí)用性。