CAN[Control(Controller) Area Network]是控制(器)局域網(wǎng)的簡(jiǎn)稱。CAN是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò),最初由德國(guó)Bosch公司80年代用于汽車內(nèi)部測(cè)試和控制儀器之間的數(shù)據(jù)通信。目前CAN 總線規(guī)范已被國(guó)際標(biāo)準(zhǔn)化組織ISO制訂為國(guó)際標(biāo)準(zhǔn)ISO11898,并得到了Motorola,Intel ,Philips等大半導(dǎo)體器件生產(chǎn)廠家的支持,迅速推出各種集成有CAN協(xié)議的產(chǎn)品。目前CAN總線主要用于汽車自動(dòng)化領(lǐng)域,如發(fā)動(dòng)機(jī)自動(dòng)點(diǎn)火、注油、復(fù)雜的加速剎車控制(ASC)、抗鎖定剎車系統(tǒng)(ABS)和抗滑系統(tǒng)等。BENZ、BMW等著名汽車上已經(jīng)采用CAN來(lái)滿足上述功能。在工業(yè)過(guò)程控制領(lǐng)域,CAN也得到了廣泛的應(yīng)用。1.1.1 CAN協(xié)議 CAN總線采用分層結(jié)構(gòu),規(guī)范規(guī)定了任意兩個(gè)節(jié)點(diǎn)之間的兼容性。包括電氣特件利數(shù)據(jù)解釋協(xié)議。
CAN協(xié)議可分為:目標(biāo)層、傳送層、物理層。其中目標(biāo)層和傳送層包括了ISO/OSI定義的數(shù)據(jù)鏈路的所有功能。目標(biāo)層的功能包括:確認(rèn)要發(fā)送的信息;位應(yīng)用層提供接口。傳送層功能包括:數(shù)據(jù)幀組織:總線仲裁:檢錯(cuò)、錯(cuò)誤報(bào)告、錯(cuò)誤處理。
CAN總線以報(bào)文為單位進(jìn)行信息交換,報(bào)文中含有標(biāo)示符(ID),它既描述了數(shù)據(jù)的含義又表明了報(bào)文的優(yōu)先權(quán)。CAN總線上的各個(gè)協(xié)點(diǎn)都可主動(dòng)發(fā)送數(shù)據(jù)。當(dāng)同時(shí)有兩個(gè)或兩個(gè)以上的節(jié)點(diǎn)發(fā)送報(bào)文時(shí),CAN控制器采用ID進(jìn)行仲裁。ID控制節(jié)點(diǎn)對(duì)總線的訪問(wèn)。發(fā)送具有最高優(yōu)先權(quán)報(bào)文的節(jié)點(diǎn)獲得總線的使用權(quán),其他節(jié)點(diǎn)自動(dòng)停止發(fā)送,總線空閑后,這些節(jié)點(diǎn)將自動(dòng)重發(fā)報(bào)文。
CAN支持四類信息幀類型。
(1)數(shù)據(jù)幀 CAN協(xié)議有兩種數(shù)據(jù)幀類型標(biāo)準(zhǔn)2.0A和標(biāo)準(zhǔn)2.0B。兩者本質(zhì)的不同在于ID的長(zhǎng)度不同。在2.0A類型中,ID的長(zhǎng)度為l l位;在2.0B類型中ID為29位。一個(gè)信息震中包括7個(gè)主要的域: 幀起始域——標(biāo)志數(shù)據(jù)幀的開始,由一個(gè)顯性位組成。仲裁域——內(nèi)容由標(biāo)示符和遠(yuǎn)程傳輸請(qǐng)求位(RTR)組成,RTR用以表明此信息幀是數(shù)據(jù)幀還是不包含任何數(shù)據(jù)的遠(yuǎn)地請(qǐng)求幀。當(dāng)2.0A的數(shù)據(jù)幀和2.0B的數(shù)據(jù)幀必須在同一條總線上傳輸時(shí),首先判斷其優(yōu)先權(quán),如果ID相同,則非擴(kuò)展數(shù)據(jù)幀的優(yōu)先權(quán)高于擴(kuò)展數(shù)據(jù)幀??刂朴?mdash;—r0、r1是保留位,作為擴(kuò)展位,DLC表示一幀中數(shù)據(jù)字節(jié)的數(shù)目。 數(shù)據(jù)域——包含0~8字節(jié)的數(shù)據(jù)。校驗(yàn)域——檢驗(yàn)位錯(cuò)用的循環(huán)冗余校驗(yàn)域,共15位。應(yīng)答域——包括應(yīng)答位和應(yīng)答分隔符。正確接收到有效報(bào)文的接收站在應(yīng)答期間將總線值為顯性電平。 幀結(jié)束——由七位隱性電平組成。
本文引用地址:http://butianyuan.cn/article/201612/330448.htm(2)遠(yuǎn)程幀接受數(shù)據(jù)的節(jié)點(diǎn)可通過(guò)發(fā)遠(yuǎn)程幀請(qǐng)求源節(jié)點(diǎn)發(fā)送數(shù)據(jù)。它由6個(gè)域組成:幀起始、仲裁域、控制域、校驗(yàn)域、應(yīng)答域、幀結(jié)束。
(3)錯(cuò)誤指示幀由錯(cuò)誤標(biāo)志和錯(cuò)誤分界兩個(gè)域組成。接收節(jié)點(diǎn)發(fā)現(xiàn)總線上的報(bào)文有誤時(shí),將自動(dòng)發(fā)出“活動(dòng)錯(cuò)誤標(biāo)志”其他節(jié)點(diǎn)檢測(cè)到活動(dòng)錯(cuò)誤標(biāo)志后發(fā)送“錯(cuò)誤認(rèn)可標(biāo)志”。
(4)超載幀由超載標(biāo)志和超載分隔符組成。超載幀只能在一個(gè)幀結(jié)束后開始。當(dāng)接收方接收下一幀之前,需要過(guò)多的時(shí)間處理當(dāng)前的數(shù)據(jù),或在幀問(wèn)空隙域檢測(cè)到顯性電平時(shí),則導(dǎo)致發(fā)送超載幀。
(5)幀間空隙位于數(shù)據(jù)幀和遠(yuǎn)地幀與前面的信息幀之間,由幀間空隙和總線空閑狀態(tài)組成。幀間空隙是必要的,在此期間, CAN不進(jìn)行新的幀發(fā)送,為的是CAN控制器在下次信息傳遞前有時(shí)間進(jìn)行內(nèi)部處理操作。當(dāng)總線空閑時(shí)CAN控制器方可發(fā)送數(shù)據(jù)。
1.1.2電氣參數(shù)及信號(hào)表示
總線上的數(shù)據(jù)采用不歸零編碼方式(NRZ),可具有兩種互補(bǔ)的邏輯值之一:顯性及隱性。CAN總線中各節(jié)點(diǎn)使用相同的位速率。它的每位時(shí)間由同步段、傳播段、相位緩沖段1及相位緩沖段2組成。發(fā)送器在同步段前改變輸出的位數(shù)值,接受器在兩個(gè)相位緩沖段間采樣輸入位值,而兩個(gè)相位緩沖段長(zhǎng)度可自由調(diào)節(jié),以保證采樣的可靠性。另外,CAN總線采用時(shí)鐘同步技術(shù)來(lái)保證通訊的同步。
1.2 CAN的主要技術(shù)特點(diǎn)
CAN網(wǎng)絡(luò)上的節(jié)點(diǎn)不分主從,任一節(jié)點(diǎn)均可在任意時(shí)刻主動(dòng)地向網(wǎng)絡(luò)上其他節(jié)點(diǎn)發(fā)送信息,通信方式靈活,利用這一特點(diǎn)可方便地構(gòu)成多機(jī)備份系統(tǒng),CAN只需通過(guò)報(bào)文濾波即可實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)、一點(diǎn)對(duì)多點(diǎn)及全局廣播等幾種方式傳送接收數(shù)據(jù),無(wú)需專門的"調(diào)度" CAN的直接通信距離最遠(yuǎn)可達(dá)10km(速率5kbps以下);通信速率最高可達(dá)1Mbps(此時(shí)通信距離最長(zhǎng)為40m)。 CAN上的節(jié)點(diǎn)數(shù)主要決定于總線驅(qū)動(dòng)電路,目前可達(dá)110個(gè);報(bào)文標(biāo)識(shí)符可達(dá)2032種(CAN2.0A),而擴(kuò)展標(biāo)準(zhǔn)(CAN2.0B)的報(bào)文標(biāo)識(shí)符幾乎不受限制。
1.3 CAN總線通信系統(tǒng)拓?fù)浣Y(jié)構(gòu)
CAN在物理結(jié)構(gòu)上屬于總線式通信網(wǎng)絡(luò)。系統(tǒng)的組成如下圖:
圖1 CAN總線系統(tǒng)結(jié)構(gòu)圖
該系統(tǒng)由上位監(jiān)控PC機(jī)、智能節(jié)點(diǎn)和現(xiàn)場(chǎng)設(shè)備三部分組成。上位監(jiān)控PC機(jī)主要負(fù)責(zé)對(duì)系統(tǒng)數(shù)據(jù)的接受與管理、控制命令的發(fā)送以及各控制單元?jiǎng)討B(tài)參數(shù)和設(shè)備狀態(tài)的實(shí)時(shí)顯示;智能節(jié)點(diǎn)可以使現(xiàn)場(chǎng)設(shè)備方便地連接到CAN總線上,主要負(fù)責(zé)對(duì)現(xiàn)場(chǎng)的環(huán)境參數(shù)和設(shè)備狀態(tài)進(jìn)行監(jiān)測(cè),對(duì)采集來(lái)的數(shù)據(jù)進(jìn)行打包處理并將處理后的數(shù)字信號(hào)通過(guò)CAN通信控制器SJA1000發(fā)送到CAN總線。智能節(jié)點(diǎn)的設(shè)計(jì)和選擇,對(duì)通信信號(hào)的傳輸發(fā)送有很的影響,系統(tǒng)中的數(shù)據(jù)傳送和接收,都是通過(guò)CAN總線接口實(shí)現(xiàn)。CAN總線接口電路的設(shè)計(jì),對(duì)CAN總線很是重要。本文正是基于此,對(duì)CAN總線接口電路進(jìn)行設(shè)計(jì)分析,給出一種設(shè)計(jì)方案。
2 CAN總線接口電路設(shè)計(jì)
2.1 總體方案設(shè)計(jì)
CAN 總線接口電路主要包括:?jiǎn)纹瑱C(jī)、控制器接口、總線收發(fā)器和看門狗電路等。采用Philips公司生產(chǎn)的SJA1000控制器和與其配套的82C250CAN收發(fā)器。按照CAN總線物理層協(xié)議選擇總線介質(zhì),設(shè)計(jì)布線方案,連接成CAN網(wǎng)絡(luò)。雙絞屏蔽線可設(shè)兩套,在兩套介質(zhì)上同時(shí)進(jìn)行信息傳輸,接收方只用一個(gè)介質(zhì)。在冗余和非冗余段的連接臨界點(diǎn)處進(jìn)行總線切換。
硬件電路的設(shè)計(jì)主要是CAN 通信控制器與微處理器之間和CAN總線收發(fā)器與物理總線之間的接口電路的設(shè)計(jì)。CAN通信控制器是CAN總線接口電路的核心,主要完成CAN的通信協(xié)議,而CAN總線收發(fā)器的主要功能是增大通信距離,提高系統(tǒng)的瞬間抗干擾能力,保護(hù)總線,降低射頻干擾(RFI),實(shí)現(xiàn)熱防護(hù)等。看門狗電路主要是實(shí)現(xiàn)對(duì)電路的監(jiān)控和復(fù)位作用。
目前廣泛流行的CAN總線器件有兩大類:一類是獨(dú)立的CAN控制器,如82C200、SJA1000及Intel82526/82527等,另一類是帶有在片CAN的微控制器,如P8XC582及16位微控制器87C196CA/CB等。本課題選取PHILIPS公司的SJA1000 CAN控制器以及82C250總線收發(fā)器,主要是考慮到SJA1000支持CAN 2.0A/B規(guī)約。而82C250可以支持110個(gè)CAN節(jié)點(diǎn),并且國(guó)內(nèi)市場(chǎng)上PHILIPS的產(chǎn)品型號(hào)比較多,購(gòu)買比較方便。在本次設(shè)計(jì)中,接口電路簡(jiǎn)單表示如下圖:
圖2-1 接口電路總體框圖
2.2 各模塊電路的設(shè)計(jì)
2.2.1單片機(jī)最小系統(tǒng)
本設(shè)計(jì)中,應(yīng)用到單片機(jī)為ATMEL公司51系列的89C51,該型號(hào)的單片機(jī)應(yīng)用廣泛,技術(shù)成熟,市場(chǎng)上價(jià)格便宜,而且在學(xué)習(xí)中所學(xué)到的多為該型號(hào),在本次設(shè)計(jì)中是首選的芯片。89C51單片機(jī)作為系統(tǒng)的核心控制部分,但在本設(shè)計(jì)中不是重點(diǎn)講解內(nèi)容,其相關(guān)技術(shù)應(yīng)用和引腳特點(diǎn)功能等,可參照其他相關(guān)資料。設(shè)計(jì)的電路原理方框大致如下圖2-2所示。
設(shè)計(jì)中為避免出現(xiàn)時(shí)鐘信號(hào)的沖突,對(duì)單片機(jī)的外接晶振引腳XTAL1、XTAL2不接上外圍電路,而是通過(guò)控制器SJA1000的時(shí)鐘信號(hào)腳反饋給單片機(jī)。同時(shí),對(duì)單片機(jī)的復(fù)位信號(hào)處理,RST引腳接上X5045P的RST腳,復(fù)位信號(hào)可由X5045P輸出,在X5045P芯片看門狗外圍電路的作用下,減少了以往由電阻、電容組成的簡(jiǎn)易復(fù)位電路造成的不精確、延時(shí)高等不良作用,使單片機(jī)回復(fù)到初始狀態(tài),完成復(fù)位操作。由于在該電路中要用到單片機(jī)的存儲(chǔ)作用,存儲(chǔ)由SJA1000傳輸過(guò)來(lái)的處理數(shù)據(jù)。因此,腳/EA接上高電平,選用片內(nèi)ROM。對(duì)ALE腳,也即地址鎖存有效信號(hào)除數(shù)端是和控制器SJA1000的ALE腳接通。
圖2-2 單片機(jī)最小系統(tǒng)
2.2.2 CAN總線接口控制電路設(shè)計(jì)
SJA1000 在電路中是一個(gè)總線接口芯片,通過(guò)它實(shí)現(xiàn)上位機(jī)與現(xiàn)場(chǎng)微處理器之間的數(shù)據(jù)通信。該電路的主要功能是通過(guò)CAN總線接收來(lái)自上位機(jī)的數(shù)據(jù)進(jìn)行分析組態(tài)然后下傳給下位機(jī)的控制電路實(shí)現(xiàn)控制功能,當(dāng)CAN總線接口接收到下位機(jī)的上傳數(shù)據(jù),SJA1000就產(chǎn)生一個(gè)中斷,引發(fā)微處理器產(chǎn)生中斷,通過(guò)中斷處理程序接收每一幀信息并通過(guò)CAN總線上傳給上位機(jī)進(jìn)行分析。AT89C51是CAN總線接口電路的核心,其承擔(dān)CAN控制器的初始化、CAN的收發(fā)控制等任務(wù)。
評(píng)論