CAN總線技術(shù)在智能汽車系統(tǒng)中的應(yīng)用
1 引言
CAN總線是控制局域網(wǎng)絡(luò)(Control Area Network)的簡稱,它最早由德國BOSCH公司提出。由于它具有傳輸速率高,抗干擾能力強,硬件連接方便等突出特點,非常適合用于汽車系統(tǒng)中,解決眾多測試與控制儀器之間的數(shù)據(jù)交換問題。
2 智能汽車系統(tǒng)簡介
智能汽車主要被用于野外環(huán)境中,它可以按照人預(yù)先設(shè)定的指令,根據(jù)地圖信息做出全局路徑規(guī)劃,并在行進過程中不斷感知周圍的環(huán)境信息,自主地制定出各種決策,引導(dǎo)自身安全地行使并完成相應(yīng)的規(guī)劃和操作任務(wù)。
它除具備普通汽車的各類功能外,還增加了測算車身位置,測算車頭方向,控制汽車自帶有向天線的方向使其與基地之間進行無線通信等功能。如此眾多的信息,如果完全采用RS-232總線進行內(nèi)部數(shù)據(jù)交換顯
然有些力不從心。因而采用CAN總線作為其內(nèi)部數(shù)據(jù)傳輸?shù)耐ǖ?,是理所?dāng)然的。
3 系統(tǒng)設(shè)計
3.1 概述
智能汽車的控制系統(tǒng)由擔(dān)負著檢測計算功能的下位機系統(tǒng)和擔(dān)負著控制顯示功能的上位機系統(tǒng)組成。圖1為該系統(tǒng)的功能框圖。
下位機系統(tǒng)各模塊及其功能:
〇 GPS數(shù)據(jù)采集模塊,用來測量汽車當(dāng)前位置。
〇 磁羅盤數(shù)據(jù)采集模塊,用來測量車頭的方向。
王軼,碩士生,主要研究方向:計算機控制與智能交通
〇 步進電機控制模塊,用來驅(qū)動有向天線的旋轉(zhuǎn)。
〇 步進電機轉(zhuǎn)動角度限制模塊,用來測量有向天線相對于車頭的角度,并防止由于步
進電機單方向轉(zhuǎn)動角度過大而造成的線路纏繞。
〇 CAN模塊。
500)this.style.width=500;" border="0" />
注:圖1中的電位器用來測量步進電機轉(zhuǎn)過的角度,將它的輸出電平轉(zhuǎn)換成頻率信號再發(fā)往下位機。CAN總線使用共地的雙絞線作為其傳輸介質(zhì)。
上位機系統(tǒng)各模塊及其功能:
〇 LCD模塊,用來顯示下位機傳送來的各種數(shù)據(jù)。
〇 簡易鍵盤輸入模塊,通過8鍵鍵盤完成對下位機的一些簡單控制。
〇 CAN模塊。
上位機和下位機通信由CAN模塊和CAN總線來完成。其中,下位機要傳送給上位機的數(shù)據(jù)有,汽車當(dāng)前的GPS坐標(biāo),車頭當(dāng)前的方向,有向天線相對于車頭的角度;上位機要傳送給下位機的數(shù)據(jù)有,基地的GPS坐標(biāo),手動模式下電機旋轉(zhuǎn)的方向和角度。
3.2 硬件實現(xiàn)
系統(tǒng)上下位機均采用PIC18F258單片機,該單片機自帶CAN收發(fā)接口,它的引腳見圖2。CAN模塊相對獨立,其的主要特征如下:
〇 通過ISO CAN標(biāo)準測試。
〇 執(zhí)行CAN協(xié)議:CAN1.2 CAN2.0A CAN2.0B。
〇 標(biāo)準和擴展數(shù)據(jù)模式。
〇 0-8位數(shù)據(jù)長度。
〇 可編程速率高達1M bps。
〇 2個數(shù)據(jù)接收緩沖器
〇 6個完全接收濾波器,2個對應(yīng)高優(yōu)先權(quán)緩沖器,4個對應(yīng)低優(yōu)先權(quán)緩沖器。
〇 2 個完全接收掩碼器。
〇 3個具有優(yōu)先權(quán)的發(fā)送緩沖器
該系統(tǒng)中,上位機與其外圍設(shè)備鍵盤和LCD顯示器通過標(biāo)準并行I/O總線相連,下位機與其外圍設(shè)備GPS接收器、磁羅盤以及電機驅(qū)動器通過RS-232串行總線相連,在
此不做詳細介紹。圖3是CAN通信模塊硬件簡圖。
500)this.style.width=500;" border="0" />
由于單片機的輸出電流比較弱,難以驅(qū)動光電隔離器,為保險起見,信號輸入光偶前要經(jīng)過74HC573鎖存;同樣為了增加信號驅(qū)動能力,經(jīng)過隔離的信號要再次經(jīng)過74HC573鎖存。
使用該單片機,無須擴展CAN總線模塊,簡化了硬件設(shè)計,提高了運行效率。
3.3 軟件實現(xiàn)
PIC18F258的CAN模塊帶有眾多控制和數(shù)據(jù)寄存器,為方便起見,可以將它們做以下分類:
〇控制和狀態(tài)寄存器
〇發(fā)送緩沖寄存器
〇接收緩沖寄存器
〇波特率控制寄存器
〇I/O控制寄存器
〇中斷標(biāo)志和控制寄存器
CAN模塊可工作于6種模式下,配置模式,禁止模式,正常工作模式,監(jiān)聽模式,自循環(huán)模式,錯誤識別模式。本系統(tǒng)涉及到了2種模式,配置模式和正常工作模式。
首先在配置模式下將控制和狀態(tài)寄存器,波特率控制寄存器,I/O控制寄存器,中斷標(biāo)志和控制寄存器,接收掩碼器和接受濾波器按照系統(tǒng)要求設(shè)定好,以保證CAN總線暢通。這些寄存器只能在配置模式下進行設(shè)定。設(shè)定完畢后,進入正常工作模式。上位機和下位機都將各自的CAN接收中斷打開,等待CAN總線傳送來的數(shù)據(jù)。所不同的是,上位機只在需要進行人工干預(yù)的情況下,向總線發(fā)送控制信號;而下位機是循環(huán)向總線發(fā)送采集到的信息的。
圖4是CAN模塊發(fā)送數(shù)據(jù)的程序流程圖:
500)this.style.width=500;" border="0" />
CAN模塊數(shù)據(jù)接收是通過中斷方式實現(xiàn)的,即每傳來一個報文,就發(fā)生一個中斷,然后將收到的數(shù)據(jù)從接收寄存器中轉(zhuǎn)移到指定的存儲區(qū)域內(nèi)并保存起來 ,最后中斷返回。
圖5是下位機CAN模塊接收數(shù)據(jù)的中斷服務(wù)程序流程圖:
500)this.style.width=500;" border="0" />
4 關(guān)于設(shè)計中的幾個問題
(1)下位機是循環(huán)發(fā)送數(shù)據(jù)的,在每一個報文發(fā)送出去后,要等待充足的時間再發(fā)送下一個報文。否則,可能出現(xiàn)上次報文未發(fā)送完畢,就裝載下一個報文的情況。從而,造成報文丟失,甚至每次報文都不能成功發(fā)送。等待的時間與微處理器的時鐘頻率和報文發(fā)送的波特率有關(guān)。
(2)報文發(fā)送過程中可能會產(chǎn)生種種錯誤,CAN協(xié)議提供了成熟的錯誤檢驗機制。這些錯誤可能包括:CRC錯誤、應(yīng)答錯誤、形式錯誤、位錯誤、填充位錯誤,引起這些錯誤的原因各不相同。對PIC18F258而言,每發(fā)生一次錯誤,CAN模塊內(nèi)部的錯誤計數(shù)器就會加1,一旦錯誤計數(shù)器的值大于255,就會進入總線關(guān)斷狀態(tài),這時CAN總線將不能用來收發(fā)數(shù)據(jù)。它會等待128組連續(xù)的11位隱性位后,再恢復(fù)到正常狀態(tài)。系統(tǒng)運行過程中不允許有間斷,所以應(yīng)當(dāng)在進入總線關(guān)閉狀態(tài)前,將錯誤計數(shù)器清零或恢復(fù)到允許總線正常工作的范圍內(nèi)。
(3)本系統(tǒng)中需要傳輸?shù)臄?shù)據(jù),相對于CAN總線強大的功能而言是有限的。但是,考慮到今后系統(tǒng)的改進和擴充,必然需要更多的網(wǎng)絡(luò)節(jié)點,也必然會傳輸更多的數(shù)據(jù),所以,系統(tǒng)在設(shè)計時預(yù)留了很多軟硬件資源,以備日后使用。
5 結(jié)束語
本文中的智能汽車系統(tǒng),在普通汽車系統(tǒng)的基礎(chǔ)上,進行了功能擴展,涉及到了人工智能領(lǐng)域的一些技術(shù)。上位機與下位機之間由CAN總線來傳輸數(shù)據(jù),RS-232接口只與外圍檢測和控制設(shè)備相連,分工明確,不會造成串行總線過于繁忙,從而引起數(shù)據(jù)傳輸錯誤。
用CAN總線組建的通信網(wǎng)絡(luò),擴展性強、可靠性高、而且具有自診斷和監(jiān)控能力,既提高了通信質(zhì)量,又方便了軟硬件設(shè)計。本例中所使用的PIC18F258單片機自帶CAN總線接口,性能優(yōu)越、價格低廉,必然會受到設(shè)計師的青睞。