<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 汽車(chē)電子 > 設計應用 > CAN總線(xiàn)技術(shù)在智能汽車(chē)系統中的應用研究

CAN總線(xiàn)技術(shù)在智能汽車(chē)系統中的應用研究

作者: 時(shí)間:2008-09-26 來(lái)源:網(wǎng)絡(luò ) 收藏


摘 要: 智能汽車(chē)是一種具有自動(dòng)駕駛功能的汽車(chē),它綜合應用了計算機、控制、信息處理、通訊以及傳感器等多種技術(shù)。使用CAN保證了系統內部數據交換的高速性和可靠性。引入了一種帶有CAN接口的單片機--PIC18F258,介紹了它CAN模塊的結構及其在完成通信任務(wù)時(shí)的工作原理。該方法在人工智能和工業(yè)測控領(lǐng)域具有一定的應用價(jià)值。


關(guān)鍵詞: 智能控制 CAN PIC18F258 中斷接收

1 引言
CAN總線(xiàn)是控制局域網(wǎng)絡(luò )(Control Area Network)的簡(jiǎn)稱(chēng),它最早由德國B(niǎo)OSCH公司提出。由于它具有傳輸速率高,抗干擾能力強,硬件連接方便等突出特點(diǎn),非常適合用于汽車(chē)系統中,解決眾多測試與控制儀器之間的數據交換問(wèn)題。


2 智能汽車(chē)系統簡(jiǎn)介
智能汽車(chē)主要被用于野外環(huán)境中,它可以按照人預先設定的指令,根據地圖信息做出全局路徑規劃,并在行進(jìn)過(guò)程中不斷感知周?chē)沫h(huán)境信息,自主地制定出各種決策,引導自身安全地行使并完成相應的規劃和操作任務(wù)。


它除具備普通汽車(chē)的各類(lèi)功能外,還增加了測算車(chē)身位置,測算車(chē)頭方向,控制汽車(chē)自帶有向天線(xiàn)的方向使其與基地之間進(jìn)行無(wú)線(xiàn)通信等功能。如此眾多的信息,如果完全采用RS-232總線(xiàn)進(jìn)行內部數據交換顯然有些力不從心。因而采用CAN總線(xiàn)作為其內部數據傳輸的通道,是理所當然的。


3 系統設計
3.1 概述
智能汽車(chē)的控制系統由擔負著(zhù)檢測計算功能的下位機系統和擔負著(zhù)控制顯示功能的上位機系統組成。圖1為該系統的功能框圖。


下位機系統各模塊及其功能:
數據采集模塊,用來(lái)測量汽車(chē)當前位置。
〇 磁羅盤(pán)數據采集模塊,用來(lái)測量車(chē)頭的方向。
〇 步進(jìn)電機控制模塊,用來(lái)驅動(dòng)有向天線(xiàn)的旋轉。
〇 步進(jìn)電機轉動(dòng)角度限制模塊,用來(lái)測量有向天線(xiàn)相對于車(chē)頭的角度,并防止由于步
進(jìn)電機單方向轉動(dòng)角度過(guò)大而造成的線(xiàn)路纏繞。
〇 CAN模塊。

注:圖1中的電位器用來(lái)測量步進(jìn)電機轉過(guò)的角度,將它的輸出電平轉換成頻率信號再發(fā)往下位機。CAN總線(xiàn)使用共地的雙絞線(xiàn)作為其傳輸介質(zhì)。
上位機系統各模塊及其功能:
〇 LCD模塊,用來(lái)顯示下位機傳送來(lái)的各種數據。
〇 簡(jiǎn)易鍵盤(pán)輸入模塊,通過(guò)8鍵鍵盤(pán)完成對下位機的一些簡(jiǎn)單控制。
〇 CAN模塊。


上位機和下位機通信由CAN模塊和CAN總線(xiàn)來(lái)完成。其中,下位機要傳送給上位機的數據有,汽車(chē)當前的坐標,車(chē)頭當前的方向,有向天線(xiàn)相對于車(chē)頭的角度;上位機要傳送給下位機的數據有,基地的坐標,手動(dòng)模式下電機旋轉的方向和角度。


3.2 硬件實(shí)現
系統上下位機均采用PIC18F258單片機,該單片機自帶CAN收發(fā)接口,它的引腳見(jiàn)圖2。CAN模塊相對獨立,其的主要特征如下:
〇 通過(guò)ISO CAN標準測試。
〇 執行CAN協(xié)議:CAN1.2 CAN2.0A CAN2.0B。
〇 標準和擴展數據模式。
〇 0-8位數據長(cháng)度。
〇 可編程速率高達1M bps。
〇 2個(gè)數據接收緩沖器
〇 6個(gè)完全接收濾波器,2個(gè)對應高優(yōu)先權緩沖器,4個(gè)對應低優(yōu)先權緩沖器。
〇 2 個(gè)完全接收掩碼器。
〇 3個(gè)具有優(yōu)先權的發(fā)送緩沖器


該系統中,上位機與其外圍設備鍵盤(pán)和LCD顯示器通過(guò)標準并行I/O總線(xiàn)相連,下位機與其外圍設備GPS接收器、磁羅盤(pán)以及電機驅動(dòng)器通過(guò)RS-232串行總線(xiàn)相連,在此不做詳細介紹。圖3是CAN通信模塊硬件簡(jiǎn)圖。



由于單片機的輸出電流比較弱,難以驅動(dòng)光電隔離器,為保險起見(jiàn),信號輸入光偶前要經(jīng)過(guò)74HC573鎖存;同樣為了增加信號驅動(dòng)能力,經(jīng)過(guò)隔離的信號要再次經(jīng)過(guò)74HC573鎖存。
使用該單片機,無(wú)須擴展CAN總線(xiàn)模塊,簡(jiǎn)化了硬件設計,提高了運行效率。


3.3 軟件實(shí)現
PIC18F258的CAN模塊帶有眾多控制和數據寄存器,為方便起見(jiàn),可以將它們做以下分類(lèi):
〇控制和狀態(tài)寄存器
〇發(fā)送緩沖寄存器
〇接收緩沖寄存器
〇波特率控制寄存器
〇I/O控制寄存器
〇中斷標志和控制寄存器


CAN模塊可工作于6種模式下,配置模式,禁止模式,正常工作模式,監聽(tīng)模式,自循環(huán)模式,錯誤識別模式。本系統涉及到了2種模式,配置模式和正常工作模式。


首先在配置模式下將控制和狀態(tài)寄存器,波特率控制寄存器,I/O控制寄存器,中斷標志和控制寄存器,接收掩碼器和接受濾波器按照系統要求設定好,以保證CAN總線(xiàn)暢通。這些寄存器只能在配置模式下進(jìn)行設定。設定完畢后,進(jìn)入正常工作模式。上位機和下位機都將各自的CAN接收中斷打開(kāi),等待CAN總線(xiàn)傳送來(lái)的數據。所不同的是,上位機只在需要進(jìn)行人工干預的情況下,向總線(xiàn)發(fā)送控制信號;而下位機是循環(huán)向總線(xiàn)發(fā)送采集到的信息的。


圖4是CAN模塊發(fā)送數據的程序流程圖:




圖4 發(fā)送程序流程圖


CAN模塊數據接收是通過(guò)中斷方式實(shí)現的,即每傳來(lái)一個(gè)報文,就發(fā)生一個(gè)中斷,然后將收到的數據從接收寄存器中轉移到指定的存儲區域內并保存起來(lái) ,最后中斷返回。
圖5是下位機CAN模塊接收數據的中斷服務(wù)程序流程圖:
圖5 接收中斷服務(wù)程序流程圖


4 關(guān)于設計中的幾個(gè)問(wèn)題


(1)下位機是循環(huán)發(fā)送數據的,在每一個(gè)報文發(fā)送出去后,要等待充足的時(shí)間再發(fā)送下一個(gè)報文。否則,可能出現上次報文未發(fā)送完畢,就裝載下一個(gè)報文的情況。從而,造成報文丟失,甚至每次報文都不能成功發(fā)送。等待的時(shí)間與微處理器的時(shí)鐘頻率和報文發(fā)送的波特率有關(guān)。


(2)報文發(fā)送過(guò)程中可能會(huì )產(chǎn)生種種錯誤,CAN協(xié)議提供了成熟的錯誤檢驗機制。這些錯誤可能包括:CRC錯誤、應答錯誤、形式錯誤、位錯誤、填充位錯誤,引起這些錯誤的原因各不相同。對PIC18F258而言,每發(fā)生一次錯誤,CAN模塊內部的錯誤計數器就會(huì )加1,一旦錯誤計數器的值大于255,就會(huì )進(jìn)入總線(xiàn)關(guān)斷狀態(tài),這時(shí)CAN總線(xiàn)將不能用來(lái)收發(fā)數據。它會(huì )等待128組連續的11位隱性位后,再恢復到正常狀態(tài)。系統運行過(guò)程中不允許有間斷,所以應當在進(jìn)入總線(xiàn)關(guān)閉狀態(tài)前,將錯誤計數器清零或恢復到允許總線(xiàn)正常工作的范圍內。


(3)本系統中需要傳輸的數據,相對于CAN總線(xiàn)強大的功能而言是有限的。但是,考慮到今后系統的改進(jìn)和擴充,必然需要更多的網(wǎng)絡(luò )節點(diǎn),也必然會(huì )傳輸更多的數據,所以,系統在設計時(shí)預留了很多軟硬件資源,以備日后使用。


5 結束語(yǔ)
本文中的智能汽車(chē)系統,在普通汽車(chē)系統的基礎上,進(jìn)行了功能擴展,涉及到了人工智能領(lǐng)域的一些技術(shù)。上位機與下位機之間由CAN總線(xiàn)來(lái)傳輸數據,RS-232接口只與外圍檢測和控制設備相連,分工明確,不會(huì )造成串行總線(xiàn)過(guò)于繁忙,從而引起數據傳輸錯誤。


用CAN總線(xiàn)組建的通信網(wǎng)絡(luò ),擴展性強、可靠性高、而且具有自診斷和監控能力,既提高了通信質(zhì)量,又方便了軟硬件設計。本例中所使用的PIC18F258單片機自帶CAN總線(xiàn)接口,性能優(yōu)越、價(jià)格低廉,必然會(huì )受到設計師的青睞。


參考文獻:
1 陽(yáng)憲惠.現場(chǎng)總線(xiàn)技術(shù)及其應用.北京:清華大學(xué)出版社,1999.P309-360
2 Microchip Technology Inc.PIC18FXX8 data sheet. Printed in U.S.A 2003
3 鄔寬明.CAN總線(xiàn)原理和應用系統設計.北京:北京航空航天大學(xué)出版社,1996.P35-60,P110-160.
4 鄔寬明.CAN總線(xiàn)系統設計中的幾個(gè)問(wèn)題.電子技術(shù)應用,1998,第九期:P18-20.



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>