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