許矛盾,殷安龍,陳 琳,鄒鵬飛,張持健
(安徽師范大學(xué) 物電學(xué)院,安徽 蕪湖 241000)
基于CAN總線通信協(xié)議安全及汽車溫度檢測(cè)系統(tǒng)的研究
許矛盾,殷安龍,陳 琳,鄒鵬飛,張持健
(安徽師范大學(xué) 物電學(xué)院,安徽 蕪湖 241000)
為了實(shí)現(xiàn)對(duì)汽車內(nèi)CAN節(jié)點(diǎn)的安全通信和汽車溫度的實(shí)時(shí)檢測(cè),本文采用單片機(jī)和CAN總線設(shè)計(jì)出一套汽車溫度檢測(cè)系統(tǒng)。該系統(tǒng)基于CAN總線通信協(xié)議,實(shí)現(xiàn)對(duì)各個(gè)節(jié)點(diǎn)相互通信時(shí)的安全校驗(yàn),并能實(shí)時(shí)檢測(cè)車身各個(gè)部分溫度。經(jīng)實(shí)驗(yàn)表明,該系統(tǒng)在安全性和實(shí)時(shí)性具有顯著的提高,同時(shí)具有很好的可移植性,方便二次開發(fā)。
CAN總線;通信協(xié)議 ;安全性;溫度檢測(cè)
隨著在汽車應(yīng)用中的電子設(shè)備逐漸增多,汽車總線技術(shù)越來越重要。在技術(shù)成熟的所有總線當(dāng)中,CAN總線技術(shù)具有數(shù)據(jù)通信突出的實(shí)時(shí)性、安全性和精確性的特點(diǎn),成為目前國際上應(yīng)用最廣泛的現(xiàn)場總線之一[1]。CAN總線在汽車中的應(yīng)用,不僅保證了汽車系統(tǒng)的安全,增加汽車網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)陌踩?,還提高了車內(nèi)電子設(shè)備的穩(wěn)定性。在本文中,研究將CAN總線網(wǎng)絡(luò)系統(tǒng)嵌入到汽車系統(tǒng)之中,同時(shí)努力解決CAN總線節(jié)點(diǎn)間的通信安全問題;反過來,當(dāng)汽車溫度過高時(shí),溫度檢測(cè)系統(tǒng)能夠即使提醒車主進(jìn)行相應(yīng)的處理,進(jìn)而有效地降低車輛設(shè)備的損壞。
但是隨著車內(nèi)電子設(shè)備不斷增多,節(jié)點(diǎn)間因同時(shí)發(fā)送信息而產(chǎn)生的沖突的概率也會(huì)增大,這就會(huì)導(dǎo)致優(yōu)先級(jí)較低的節(jié)點(diǎn)等待時(shí)間過長,因此CAN總線系統(tǒng)的安全性和實(shí)時(shí)性變得很差。如果節(jié)點(diǎn)間的傳送數(shù)據(jù)延遲過長,從而影響多個(gè)CAN節(jié)點(diǎn)之間傳送數(shù)據(jù),導(dǎo)致了車輛系統(tǒng)的安全性變差,造成車輛駕駛的安全。
與此同時(shí),很多文獻(xiàn)都針對(duì)CAN總線網(wǎng)絡(luò)協(xié)議帶來的問題提出了改進(jìn)措施。文獻(xiàn)[2]基于CAN總線通信協(xié)議,提出了排隊(duì)理論并給出了非強(qiáng)占M/G/1排隊(duì)論模型;文獻(xiàn)[3]針對(duì)總線資源受限的問題,本文提出,采用靈活的量化調(diào)度方法提高系統(tǒng)的實(shí)時(shí)性;文獻(xiàn)[4]進(jìn)一步提出了CAN協(xié)議車載網(wǎng)絡(luò)級(jí)系統(tǒng)V字型系統(tǒng)工程開發(fā)方法,完善了整車網(wǎng)絡(luò)級(jí)系統(tǒng)的系統(tǒng)集成策略;文獻(xiàn)[5]驗(yàn)證了在自主開發(fā)的網(wǎng)絡(luò)平臺(tái)上驗(yàn)證了CAN-open協(xié)議的有效性。但是針對(duì)如何識(shí)別CAN總線各節(jié)點(diǎn)間的身份,給出的對(duì)策較少。文中提出一種識(shí)別各節(jié)點(diǎn)身份,增強(qiáng)CAN總線網(wǎng)絡(luò)完全的一種方案。
CAN總線節(jié)點(diǎn)間通信采用的協(xié)議是 CSMA/CA協(xié)議(帶有沖突避免的載波監(jiān)聽多路訪問),CAN總線網(wǎng)絡(luò)節(jié)點(diǎn)之間通信,與一般網(wǎng)絡(luò)相比較得出:具有更好的安全性和可靠性。仲裁過程中,標(biāo)識(shí)符小的數(shù)據(jù)可以不受影響的連續(xù)發(fā)送數(shù)據(jù),標(biāo)識(shí)符大的數(shù)據(jù)則退出等待,由于總線響應(yīng)的請(qǐng)求是根據(jù)報(bào)文在整個(gè)系統(tǒng)中的重要性按順序處理的,所以CAN總線實(shí)現(xiàn)了較高的效率[6]。CAN總線各個(gè)節(jié)點(diǎn)之間,沒有主從關(guān)系的概念。每個(gè)節(jié)點(diǎn)作為獨(dú)立的節(jié)點(diǎn),均可與掛載在總線上的其它節(jié)點(diǎn)進(jìn)行通信。各節(jié)點(diǎn)只需通過報(bào)文濾波即可實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)、一點(diǎn)對(duì)多點(diǎn)以及全局廣播等方式傳送接受數(shù)據(jù)[7]。CAN總線上的各節(jié)點(diǎn)間數(shù)據(jù)通信,使用無破壞性總線仲裁技術(shù),當(dāng)CAN節(jié)點(diǎn)出現(xiàn)故障,這個(gè)節(jié)點(diǎn)可以自動(dòng)關(guān)閉,不會(huì)影響到總線中其他節(jié)點(diǎn)之間的通信。
1.1 CAN總線的實(shí)時(shí)性改進(jìn)
由節(jié)點(diǎn)間發(fā)送信息沖突所引起的非周期性通信延遲問題,本文在溫度檢測(cè)系統(tǒng)采用了了時(shí)分多路優(yōu)先級(jí)方法對(duì)CAN總線的實(shí)時(shí)性進(jìn)行了優(yōu)化,其數(shù)學(xué)期望如下:
公式中di表示非周期性信息幀,di表示競爭時(shí)下個(gè)窗口到來的延遲時(shí)間。Dm表示延遲時(shí)間的數(shù)學(xué)期望。由于采用了時(shí)分多路方法,節(jié)點(diǎn)間時(shí)間觸發(fā)基本無排隊(duì)延遲。結(jié)合優(yōu)先級(jí)排隊(duì)原理,運(yùn)用競爭時(shí)窗內(nèi)的優(yōu)先級(jí)晉升方案來解決非周期性事件觸發(fā)。優(yōu)化前后的效果如圖1(a)和圖1(b):
圖1 優(yōu)化前后相應(yīng)時(shí)間圖
通過以上分析得出,時(shí)分多路優(yōu)先級(jí)方法有效減少節(jié)點(diǎn)間通信的實(shí)時(shí)性問題。
1.2 CAN總線的安全性改進(jìn)
CAN總線作為一種多節(jié)點(diǎn)、無主從的實(shí)時(shí)通信總線,在通信中則會(huì)存在潛在的外部威脅問題。很多文獻(xiàn)中都指出了車載網(wǎng)絡(luò)CAN節(jié)點(diǎn)間通信的安全性問題,但是提出增強(qiáng)車載網(wǎng)絡(luò)CAN節(jié)點(diǎn)間安全性的解決辦法的相對(duì)較少。
本文通過軟件編程來實(shí)現(xiàn):當(dāng)CAN節(jié)點(diǎn)正在傳送信息幀時(shí),寄存器SJA1000使用flag來進(jìn)行標(biāo)識(shí)。為了保證CAN節(jié)點(diǎn)預(yù)防方法的響應(yīng)的實(shí)時(shí)性,在寄存器SJA1000中,編程實(shí)現(xiàn)能夠檢查輸入的所有數(shù)據(jù)。當(dāng)檢查到為授權(quán)的數(shù)據(jù)在CAN節(jié)點(diǎn)上傳送數(shù)據(jù)時(shí)候,立即發(fā)送一個(gè)錯(cuò)誤幀。具體數(shù)據(jù)幀授權(quán)實(shí)現(xiàn)流程如圖2。
圖2 數(shù)據(jù)幀授權(quán)實(shí)現(xiàn)流程
根據(jù)分析CAN總線的傳輸協(xié)議,在CRC界定符之后,SJA1000芯片來檢測(cè)所有輸入數(shù)據(jù)的循環(huán)冗余碼校驗(yàn)(CRC)場。在滿足CAN總線通信協(xié)議的情況下,預(yù)防方法能夠在包含一個(gè)標(biāo)準(zhǔn)CAN控制器SJA1000的ECU中得以合理的實(shí)現(xiàn)。該方法優(yōu)點(diǎn):當(dāng)CAN總線網(wǎng)絡(luò)中出現(xiàn)了未授權(quán)信息幀的情況,通過編程使得ECU一直出路循環(huán)檢測(cè)中,這樣只要有未授權(quán)的數(shù)據(jù)幀出現(xiàn),總線的各個(gè)節(jié)點(diǎn)就能檢測(cè)到未授權(quán)的信息幀,然后隨后立即發(fā)送一個(gè)錯(cuò)誤幀,提醒其他總線節(jié)點(diǎn)出現(xiàn)未授權(quán)數(shù)據(jù)幀為錯(cuò)誤幀,從而使ECU避免了接收到未授權(quán)的數(shù)據(jù)幀。
從功能方面分析,系統(tǒng)可分為電源模塊、CAN總線驅(qū)動(dòng)器模塊、串口通信模塊、溫度采集模塊、報(bào)警模塊和單片機(jī)主控模塊。汽車生產(chǎn)廠商生產(chǎn)的汽車所提供的電源電壓是12 V,而要使用CAN控制芯片SJA1000必須要求供電電壓為直流電壓5 V,所以采用了接口簡單,使用方便的穩(wěn)壓芯片TLE4264,完成+12 V向+5 V的電壓的轉(zhuǎn)化。溫度采集模塊主要使用DS18B20溫度傳感器,DS18B20溫度傳感器是由美國DALLAS半導(dǎo)體公司生產(chǎn)。該溫度采集模塊在應(yīng)用設(shè)計(jì)中需要注意的問題是:節(jié)點(diǎn)上掛載的溫度傳感器不能超過8個(gè)。系統(tǒng)MCU(中央處理單元)使用的是STC89C52RC單片機(jī),它的優(yōu)勢(shì)在于空閑態(tài)電流為1mA,工作電流5.5mA,掉電狀態(tài)僅為20nA。該單片機(jī)這樣的功耗,適合于小型供電系統(tǒng)。為了解決本系統(tǒng)嵌入到車載電腦系統(tǒng)的問題,增加了RS232串口通信模塊。報(bào)警模塊由LED發(fā)光二極管、GPRS(sim300芯片)和LCD液晶顯示屏組成。系統(tǒng)結(jié)構(gòu)框圖如圖3所示。
圖3 汽車溫度檢測(cè)系統(tǒng)框圖
2.1 CAN節(jié)點(diǎn)電路硬件設(shè)計(jì)
CAN節(jié)點(diǎn)的硬件電路由SJA1000控制芯片和TJA1050總線驅(qū)動(dòng)芯片組成,主要功能是檢測(cè)出車內(nèi)電子設(shè)備當(dāng)前溫度。節(jié)點(diǎn)電路處于不停的間隔檢測(cè)當(dāng)前車內(nèi)各個(gè)部分的溫度,當(dāng)監(jiān)測(cè)溫度超出預(yù)先設(shè)定的值時(shí),LED發(fā)光二極管會(huì)發(fā)出警示,并立即通過SIM300芯片給車主發(fā)送消息。如果該節(jié)點(diǎn)因意外故障發(fā)生損壞,或者檢測(cè)到未授權(quán)的信息幀時(shí),則會(huì)關(guān)閉發(fā)生故障的節(jié)點(diǎn),會(huì)立即發(fā)送錯(cuò)誤幀,保證了總線上其他CAN節(jié)點(diǎn)間的通信。
總線與CAN-BUS間的通信,使用了最新TJA1050收發(fā)芯片。TJA1050收發(fā)芯片用于連接CAN節(jié)點(diǎn)與物理總線,與很多人使用的PCA82C250收發(fā)芯片相比較,TJA1050的優(yōu)勢(shì)在于性價(jià)比高、電磁輻射EME極低、電磁抗干擾EMI性極高。CAN總線節(jié)點(diǎn)電路如圖4所示。
圖4 SJA1000節(jié)點(diǎn)電路
2.2 CAN節(jié)點(diǎn)軟件總體流程
從功能角度分析,CAN節(jié)點(diǎn)的軟件主要實(shí)現(xiàn)了:節(jié)點(diǎn)與節(jié)點(diǎn)之間相互通信、對(duì)每個(gè)節(jié)點(diǎn)進(jìn)行溫度的實(shí)時(shí)監(jiān)測(cè)。系統(tǒng)的軟件程序完成MCU模塊上電初始化,初始化部分包括單片機(jī)模塊初始化、CAN總線模塊初始化、液晶模塊初始化、時(shí)鐘模塊初始化。開放中斷,溫度傳感器DS18B20采集數(shù)據(jù)并對(duì)數(shù)據(jù)是否超過預(yù)定值進(jìn)行判斷。在處理程序上,主程序處于無限循環(huán)狀態(tài),當(dāng)采集到的溫度超過預(yù)定值,則觸發(fā)標(biāo)志位,來執(zhí)行相應(yīng)的標(biāo)志位所對(duì)應(yīng)的操作。軟件總體流程如圖5。
圖5 軟件執(zhí)行流程
經(jīng)實(shí)際結(jié)果表明,基于CAN總線的溫度檢測(cè)系統(tǒng),其采集溫度的精確性和網(wǎng)絡(luò)通信的實(shí)時(shí)性、安全性都得到了很好的保證。而且該系統(tǒng)的成本低廉,CAN總線節(jié)點(diǎn)間通信網(wǎng)絡(luò)搭建便捷,還可以根據(jù)車內(nèi)設(shè)備數(shù)量的增多或減少,系統(tǒng)節(jié)點(diǎn)可以進(jìn)行相應(yīng)的增多和減少,有利于二次開發(fā),具有實(shí)際的應(yīng)用前景。
[1]張培仁,朱東杰,馬云,等.自動(dòng)控制技術(shù)和應(yīng)用[M].合肥:中國科學(xué)技術(shù)大學(xué)出版社,2001.
[2]陳曦.CAN總線實(shí)時(shí)性和可靠性若干問題的研究[D].天津:天津大學(xué),2010.
[3]匡付華.CANopen總線網(wǎng)絡(luò)應(yīng)用的實(shí)時(shí)性和可靠性若干問題的研究[D].廣州:華南理工大學(xué),2011.
[4]曹萬科.CAN協(xié)議車載網(wǎng)絡(luò)若干關(guān)鍵理論研究[D].沈陽:東北大學(xué),2008.
[5]李芳,張俊志,王麗芳,廖承林.電動(dòng)汽車動(dòng)力總成系統(tǒng)控制器局域網(wǎng) (CAN)總線通信協(xié)議[J].機(jī)械工程學(xué)報(bào),2008,44(5):101-107.
[6]王津津,張培仁,崔軍輝,等.基于 CAN總線通信系統(tǒng)實(shí)驗(yàn)的設(shè)計(jì)[J].自動(dòng)化與儀表,2008(5):17-21.
[7]屈敏.汽車車身舒適系統(tǒng)的 CAN總線及其測(cè)控系統(tǒng)研究[D].南京:南京林業(yè)大學(xué),2007.
Research on communication protocol security and automotive temperature detection system based on CAN bus
XU Mao-dun,YIN An-long,CHEN Lin,ZOU Peng-fei,ZHANG Chi-jian
(College of Physics and Electronic Information,Anhui Normal University,Wuhu 241000,China)
In order to achieve real-time detection of secure communications and automotive temperature inside the car CAN node,we use microcontrollers and CAN bus design a car temperature detection system.The system is based on CAN bus communication protocol to implement safety check at each node to communicate with each other,and real-time detection of various parts of the body temperature.The experiment shows that the system in real-time safety and a significant increase,but also has good portability,convenient secondary development.
CAN bus;communication protocol;security;temperature detection
TN911.72
A
1674-6236(2016)18-0182-03
2015-10-13 稿件編號(hào):201510075
許矛盾(1989—),男,江蘇宿遷人,碩士研究生。研究方向:嵌入式開發(fā)與智能控制。