基于CAN總線的多ECU通信平臺(tái)設(shè)計(jì)
引言
隨著集成電路和單片機(jī)在汽車(chē)上的廣泛應(yīng)用,現(xiàn)代汽車(chē)上的電子控制器的數(shù)量越來(lái)越多,常見(jiàn)的有發(fā)動(dòng)機(jī)的電子燃油噴射裝置、防抱死制動(dòng)裝置(ABS)、安全氣囊裝置、電動(dòng)門(mén)窗裝置、主動(dòng)懸架等。電控系統(tǒng)的增加雖然提高了轎車(chē)的動(dòng)力性、經(jīng)濟(jì)性和舒適性,但隨之增加的復(fù)雜電路也降低了汽車(chē)的可靠性,增加了維修的難度。從布線角度分析,傳統(tǒng)的電子氣系統(tǒng)大多采用點(diǎn)對(duì)點(diǎn)的單一通信方式,相互之間少有聯(lián)系,這樣必然造成寵大的布線系統(tǒng)。因此,一種新的概念——汽車(chē)上電子控制器局域網(wǎng)絡(luò)CAN,也就應(yīng)運(yùn)而生。為使不同廠家生產(chǎn)的零部件能在同一輛汽車(chē)上協(xié)調(diào)工作,必須制定標(biāo)準(zhǔn)。按照ISO有關(guān)標(biāo)準(zhǔn),CAN的拓?fù)浣Y(jié)構(gòu)為總線式,因此稱(chēng)為CAN總線。 CAN總線被設(shè)計(jì)作為汽車(chē)環(huán)境中的微控制器通信,在車(chē)載各電子控制裝置ECN之間交換信息,在車(chē)載各電子控制裝置ECN之間交換信息,形成汽車(chē)電子控制網(wǎng)絡(luò)。
控制器局域網(wǎng)CAN(Controller Area Network)是一種多主方式的串行通信總線,基本設(shè)計(jì)規(guī)范要求有高的位速率,高抗電磁干擾性,而且能夠檢測(cè)出產(chǎn)生的任何錯(cuò)誤。CAN在汽車(chē)上的應(yīng)用,具有很多行業(yè)標(biāo)準(zhǔn)或者是國(guó)際標(biāo)準(zhǔn),比如國(guó)際標(biāo)準(zhǔn)化組織(ISO)的ISO11992、ISO11783以及汽車(chē)工程協(xié)會(huì)(Society of Automotive Engigeers)的SAE J1939。CAN總線已經(jīng)作為汽車(chē)的一種標(biāo)準(zhǔn)設(shè)備列入汽車(chē)的整車(chē)設(shè)計(jì)中。
1 CAN總線特點(diǎn)及其通信協(xié)議
1.1 CAN總線簡(jiǎn)介
CAN通信協(xié)議規(guī)定了4種不同的幀格式,即數(shù)據(jù)幀、遠(yuǎn)程幀、錯(cuò)誤幀和超載幀?;谝韵聨讞l基本規(guī)則進(jìn)行通信協(xié)調(diào):總線訪問(wèn)、仲裁、編碼/解碼、出錯(cuò)標(biāo)注和超裁標(biāo)注。CAN 遵從OSI模型。按照OSI基準(zhǔn)模型只有三層:物理層、數(shù)據(jù)鏈路層和哀告層,但應(yīng)用層尚需用戶(hù)自己定義。CAN總線作為一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò),應(yīng)用范圍遍及從高速網(wǎng)絡(luò)到低成本的多線路網(wǎng)絡(luò)。如:CAN在汽車(chē)中的發(fā)動(dòng)機(jī)控制部件、ABS、抗滑系統(tǒng)等應(yīng)用中的位速率可高達(dá)1Mbps。同時(shí),它可以廉價(jià)地用于交通運(yùn)載工具電器系統(tǒng)中,例如電氣窗口、燈光聚束、座椅調(diào)節(jié)等,以替代所需要的硬件連接。其傳輸介制裁為雙絞線,通信速率最高可達(dá)1Mbps/40m,直接傳輸距離最遠(yuǎn)可達(dá) 10km/5kbps,掛接設(shè)備數(shù)最多可達(dá)110個(gè)。CAN為多主工作方式,通信方式靈活,無(wú)需站地址等節(jié)點(diǎn)信息,采用非破壞性總線仲裁技術(shù),滿足實(shí)時(shí)要求。另外,CAN采用短幀結(jié)構(gòu)傳輸信號(hào),傳輸時(shí)間短,具有較強(qiáng)的抗干擾能力。
CAN總線與其它通信協(xié)議的不同之處主要有兩方面:一是報(bào)文傳送不包含目標(biāo)地址,它是以全網(wǎng)廣播為基礎(chǔ),各接收站根據(jù)報(bào)文中反映數(shù)據(jù)性質(zhì)的標(biāo)識(shí)符過(guò)濾報(bào)文,其特點(diǎn)是可在線上網(wǎng)下網(wǎng)、即插即用和多站接收;另外一個(gè)方面就是特別強(qiáng)化了數(shù)據(jù)安全性,滿足控制系統(tǒng)及其它較高數(shù)據(jù)要求系統(tǒng)的需求。
1.2 J1939通信協(xié)議
J1939協(xié)議是在CAN總線通信協(xié)議2.0B(29標(biāo)識(shí)符)之上具體實(shí)現(xiàn)了應(yīng)用層,是SAE為重載卡車(chē)和客車(chē)制定的通信協(xié)議;以CAN 2.0B為基礎(chǔ),物理層標(biāo)準(zhǔn)與ISO11898規(guī)范兼容并采用符合該規(guī)范的CAN控制器及收發(fā)器。J1939協(xié)議將CAN標(biāo)識(shí)符劃分為如下幾個(gè)部分:優(yōu)先級(jí)(P)、數(shù)據(jù)頁(yè)(PGN)、協(xié)議數(shù)據(jù)單元(PDU)格式、PDU特定域(PS)和源地址(SA)。J1939/71應(yīng)用層文檔定義了車(chē)輛控制的各種參數(shù)及命令的PGN。
由此可見(jiàn),J1939與CAN通信協(xié)議的區(qū)別在于29位標(biāo)識(shí)符(ID),數(shù)據(jù)場(chǎng)相同。J1939將CAN的29位標(biāo)識(shí)符(或稱(chēng)辨識(shí)別)進(jìn)行了詳細(xì)的物理定義。通過(guò)PDU將CAN標(biāo)準(zhǔn)格式封裝為J1939協(xié)議格式。PDU信息幀又由優(yōu)先權(quán)P、保留位R、數(shù)據(jù)頁(yè)DP、協(xié)議數(shù)據(jù)單元PF、擴(kuò)展單元PS、源地址SA和數(shù)據(jù)場(chǎng)DATA七個(gè)部分組成,即CAN的29位標(biāo)識(shí)符加上數(shù)據(jù)。
2 總體設(shè)計(jì)
2.1 汽車(chē)電控網(wǎng)絡(luò)結(jié)構(gòu)
汽車(chē)內(nèi)ECU之間的數(shù)據(jù)傳輸特征主要差別在于數(shù)據(jù)傳輸頻率,例如發(fā)動(dòng)機(jī)高速運(yùn)行時(shí),進(jìn)行的是高頻數(shù)據(jù)傳輸,每隔幾ms就傳輸1次;而在低速運(yùn)行時(shí),進(jìn)行的是低頻數(shù)據(jù)傳輸,每隔幾十ms乃至幾百ms才傳輸1次。然而為了滿足實(shí)時(shí)性要求,就要求汽車(chē)內(nèi)每個(gè)控制單元盡可能實(shí)現(xiàn)汽車(chē)公共數(shù)據(jù)共享,但又由于每個(gè)控制單元對(duì)實(shí)時(shí)性的要求是因?yàn)閿?shù)據(jù)的更新速率和控制周期不同而不同的。這就要求其數(shù)據(jù)交換網(wǎng)是基于優(yōu)先權(quán)競(jìng)爭(zhēng)的模式,且本身具有較高的通信速率。CAN總線正是為滿足這些要求而設(shè)計(jì)的。CAN已有國(guó)際標(biāo)準(zhǔn),即高速場(chǎng)合的ISO11898和用于低速場(chǎng)合的ISO11519-3。
通常的汽車(chē)網(wǎng)絡(luò)結(jié)構(gòu)采用多條不同速率的總線分別連接不同類(lèi)型的節(jié)點(diǎn),并使用網(wǎng)關(guān)服務(wù)器來(lái)實(shí)現(xiàn)整車(chē)的信息共享和網(wǎng)絡(luò)管理。若按照美國(guó)汽車(chē)工程師協(xié)會(huì)(SAE)車(chē)輛網(wǎng)絡(luò)委員會(huì)標(biāo)準(zhǔn)SAE J2057,將汽車(chē)數(shù)據(jù)傳輸網(wǎng)劃分為三類(lèi)。這里可用圖1簡(jiǎn)單說(shuō)明。其中網(wǎng)關(guān)是汽車(chē)內(nèi)部通信的核心,通過(guò)它可以實(shí)現(xiàn)在CAN總線上信息的共享以及實(shí)現(xiàn)汽車(chē)內(nèi)部的網(wǎng)絡(luò)管理和故障診斷功能;將各個(gè)數(shù)據(jù)總線上的信息反饋到儀表板總成上的顯示屏上,駕駛者通過(guò)儀表板上的信息就可以知道各個(gè)電控裝置是否正常工作了。
{{分頁(yè)}}
2.2 通信平臺(tái)硬件設(shè)計(jì)
在設(shè)計(jì)中,主控芯片CPU選用51系列的單片機(jī)。CAN通信控制器執(zhí)行完整的CAN協(xié)議,完成通信功能,包括信息緩沖和接收濾波,故CAN控制器選用 Philips的SJA1000。選用PCA82C250作為CAN總線的收發(fā)器,PCA82C250是CAN協(xié)議控制器和物理總線之間的接口,在運(yùn)行環(huán)境中具有抗瞬變、抗射頻和抗電磁干擾性能,內(nèi)部的限流電路具有電路短路時(shí)對(duì)傳送輸出級(jí)進(jìn)行保護(hù)的功能。傳輸介質(zhì)采用屏蔽電費(fèi),在測(cè)控節(jié)點(diǎn)與介質(zhì)之間加入光耦電路,以提高總線接口的抗干擾能力。圖2為通信平臺(tái)硬件框圖,圖3為控制器與收發(fā)器連接接口。
為進(jìn)一步提高系統(tǒng)的可靠性,需要考慮到系統(tǒng)的冗余設(shè)計(jì)。由于汽 車(chē)環(huán)境惡劣且干擾 因素較多,在CAN_H和CAN_L信號(hào)線與地線之間分別并聯(lián)了兩個(gè)電容,濾去噪聲,使信號(hào)傳輸平穩(wěn)。雙屏蔽電費(fèi)可設(shè)兩套,在兩套介質(zhì)上同時(shí)進(jìn)行信息傳輸。接收方只用一個(gè)介質(zhì),在冗余和非冗余段的連接臨界點(diǎn)進(jìn)行總線切換。
2.3 軟件設(shè)計(jì)
簡(jiǎn)單地說(shuō),本通信平臺(tái)所要實(shí)現(xiàn)的功能就是,使各個(gè)節(jié)點(diǎn)(ECU)通過(guò)CAN總線實(shí)現(xiàn)相互通信,發(fā)送接收命令、信息等,并實(shí)現(xiàn)數(shù)據(jù)的共享,從而提高各自的控制性能和運(yùn)行效率。汽車(chē)上CAN數(shù)據(jù)總線的每個(gè)節(jié)點(diǎn)(ECU)都有自己的地址和名稱(chēng)相對(duì)應(yīng)。ECU地址指出了數(shù)據(jù)傳送的目的地,而其名稱(chēng)則標(biāo)識(shí)了ECN的基本功能。節(jié)點(diǎn)連續(xù)監(jiān)視著總線上發(fā)出的各種數(shù)據(jù)。當(dāng)所收到的數(shù)據(jù)地址值與自身地址吻合時(shí),該節(jié)點(diǎn)就獲得令牌。在通信規(guī)約中,唯一獲得令牌的該節(jié)點(diǎn)有權(quán)發(fā)送數(shù)據(jù),以防止兩個(gè)或兩個(gè)以上的節(jié)點(diǎn)同時(shí)傳輸數(shù)據(jù)引起混亂。同時(shí)每一個(gè)節(jié)點(diǎn)都有機(jī)會(huì)得到令牌,完成數(shù)據(jù)傳輸。
本軟件設(shè)計(jì)是基于Keil C語(yǔ)言編寫(xiě)的。程序主要由主模塊、中斷處理模塊及數(shù)據(jù)通信模塊等組成,如圖4所示。
當(dāng)一個(gè)節(jié)點(diǎn)A發(fā)送數(shù)據(jù)請(qǐng)求報(bào)文(遠(yuǎn)程幀),向另外一個(gè)節(jié)點(diǎn)B請(qǐng)求報(bào)文(應(yīng)答幀)時(shí),節(jié)點(diǎn)B接收到請(qǐng)求后,經(jīng)過(guò)判別,而后發(fā)送數(shù)據(jù)(應(yīng)答幀)。由于數(shù)據(jù)請(qǐng)求沒(méi)有數(shù)據(jù)場(chǎng),所以相對(duì)數(shù)據(jù)幀長(zhǎng)度小很多。經(jīng)分析驗(yàn)證之后與節(jié)點(diǎn)B收到的數(shù)據(jù)相同,請(qǐng)求數(shù)據(jù)程序得到驗(yàn)證。
結(jié)語(yǔ)
在現(xiàn)代汽車(chē)的設(shè)計(jì)中,CAN總線已經(jīng)成為構(gòu)建汽車(chē)網(wǎng)絡(luò)的一種趨勢(shì);而汽車(chē)網(wǎng)絡(luò)作為直接與汽車(chē)內(nèi)部各個(gè)ECU連接并負(fù)責(zé)命令的傳遞、數(shù)據(jù)的發(fā)送及共享,其可靠性和穩(wěn)定性與整車(chē)的性能緊密相關(guān)。本文的設(shè)計(jì)開(kāi)發(fā)是在基于試驗(yàn)條件下搭建的仿真平臺(tái),節(jié)點(diǎn)之間的通信是通過(guò)對(duì)等的CAN通信節(jié)點(diǎn)進(jìn)行的。試驗(yàn)表明其運(yùn)行性能穩(wěn)定可靠,但實(shí)用化仍需要進(jìn)一步的研究和改進(jìn),且程序的通信處理能力、糾錯(cuò)和容錯(cuò)能力有待進(jìn)一步的提高。
評(píng)論