基于A(yíng)T89C51型單片機的CAN總線(xiàn)智能節點(diǎn)設計
1 引言
本文引用地址:http://dyxdggzs.com/article/85600.htmCAN(Controller Area Network)是控制器局域網(wǎng),主要用于各種設備檢測及控制的現場(chǎng)總線(xiàn)。CAN總線(xiàn)是德國B(niǎo)OSCH公司20世紀80年代初為解決汽車(chē)中眾多控制與測試儀器間的數據交換而開(kāi)發(fā)的串行數據通信協(xié)議。這是一種多主總線(xiàn),無(wú)論是在高速網(wǎng)絡(luò )還是在低成本的節點(diǎn)系統,應用都很廣泛。由于采用了許多新技術(shù)及獨特的設計,與一般的通信總線(xiàn)相比,CAN總線(xiàn)的數據通信具有突出的可靠性、實(shí)時(shí)性和靈活性,其主要特點(diǎn)如下:
●通信方式靈活,可以多主方式工作,網(wǎng)絡(luò )上任意一個(gè)節點(diǎn)均可以在任意時(shí)刻主動(dòng)向網(wǎng)絡(luò )上的其他節點(diǎn)發(fā)送信息,不分主從。
●CAN節點(diǎn)只需對報文的標識符濾波即可實(shí)現點(diǎn)對點(diǎn)、點(diǎn)對多點(diǎn)及全局廣播方式發(fā)送和接收數據,其節點(diǎn)可分成不同的優(yōu)先級,節點(diǎn)的優(yōu)先級可通過(guò)報文標識符進(jìn)行設置,優(yōu)先級高的數據最多可在134μs內傳輸,可以滿(mǎn)足不同的實(shí)時(shí)要求。
●CAN總線(xiàn)通信格式采用短幀格式,每幀字節數量多為8個(gè)字節,可滿(mǎn)足一般工業(yè)領(lǐng)域中控制命令、工作狀態(tài)及測試數據的要求,同時(shí),8個(gè)字節不會(huì )占用總線(xiàn)時(shí)間過(guò)長(cháng),保證了通信的實(shí)時(shí)性。
●采用非破壞性總線(xiàn)仲裁技術(shù),當多個(gè)節點(diǎn)同時(shí)向總線(xiàn)發(fā)送信息出現沖突時(shí),優(yōu)先級低的節點(diǎn)會(huì )主動(dòng)退出數據發(fā)送,而優(yōu)先級高的節點(diǎn)可不受影響地繼續傳輸數據,大大節省了總線(xiàn)沖突仲裁時(shí)間,在網(wǎng)絡(luò )重載的情況下也不會(huì )出現網(wǎng)絡(luò )癱瘓。
●直接通信距離最大可達10 km (速率在5 kb/s以下),最高通信速率可達1 Mb/s (此時(shí)距離最長(cháng)為40 m);節點(diǎn)數可達110個(gè),通信介質(zhì)可以是雙絞線(xiàn)、同軸電纜或光導纖維。
●CAN總線(xiàn)采用CRC檢驗并可提供相應的錯誤處理功能,保證數據通信的可靠性,其節點(diǎn)在錯誤嚴重的情況下具有自動(dòng)關(guān)閉輸出功能,使總線(xiàn)上其他節點(diǎn)的操作不受影響。
2 CAN總線(xiàn)系統結構
由于CAN總線(xiàn)采用多主方式工作,所以具有與DCS(分布式控制系統)不一樣的拓撲結構。其控制系統由計算機和智能節點(diǎn)組成,如圖1所示。該系統最大的特點(diǎn)是所有的節點(diǎn)都能以平等的地位掛接在總線(xiàn)上。1個(gè)總線(xiàn)節點(diǎn)通常至少包括3部分:控制節點(diǎn)任務(wù)的單片機、總線(xiàn)控制器及總線(xiàn)驅動(dòng)器。本文主要介紹CAN總線(xiàn)智能節點(diǎn)的簡(jiǎn)單設計。智能節點(diǎn)由89C5l型單片機、SJA1000型總線(xiàn)控制器、82C250型總線(xiàn)驅動(dòng)器及PC構成。在實(shí)際應用中可以連接不同的傳感器件,完成數據的采集和傳輸。
3 硬件電路設計
筆者設計的CAN總線(xiàn)系統智能節點(diǎn)采用Intel公司的AT89C51型單片機作為節點(diǎn)的微處理器。AT89C51具有64KB的尋址空間。本身不帶CAN控制器,所以要實(shí)現與CAN總線(xiàn)之間的通信需外加CAN控制器和CAN驅動(dòng)器。在本設計中采用SJAl000型CAN總線(xiàn)通信控制器和AT82C250型總線(xiàn)驅動(dòng)器。
CAN總線(xiàn)系統智能節點(diǎn)硬件電路如圖2所示。從圖2可以看出,硬件電路主要由AT89C51、SJAl000、AT82C250、6N137型高速光電耦合器和MAX202型電平轉換器件組成。AT89C51負責SJAl000的初始化,控制SJAl000實(shí)現數據的接收和發(fā)送等通信任務(wù)。MAX202用于TTL電平與RS232電平的相互轉換,可以將接收的數據顯示在PC上。SJAl000的ADO-AD7連接到AT89C51的P0口,CS連接到AT89C51的P2.7。P2.7為0時(shí),CPU片外存儲器地址可選中SJA1000,CPU通過(guò)這些地址可對SJAl000執行相應的讀/寫(xiě)操作。SJAl000的RD、WR、ALE分別與AT89C51的相應引腳相連,SJAl000的INT接AT89C51的INTl,AT89C51也可通過(guò)中斷方式訪(fǎng)問(wèn)SJA1000。
為了增強總線(xiàn)節點(diǎn)的抗干擾能力,SJAl000的TX0和RX0并不直接與82C250的TXD和RXD相接,而是通過(guò)6N137與AT82C250相接,這樣,很好地實(shí)現了總線(xiàn)上各節點(diǎn)間的電氣隔離。不過(guò),光耦電路用的2個(gè)電源VCC和VDD必須隔離。電源的完全隔離可采用小功率電源隔離模塊實(shí)現。這雖然增加了接口電路的復雜性,但卻提高了節點(diǎn)的穩定性和安全性。
AT82C250與總線(xiàn)的接口也采取了一定的安全和抗干擾措施。AT82C250的CANH引腳和CANL引腳各自通過(guò)1只5 Ω的電阻器與總線(xiàn)相連,電阻器可起到一定的限流作用,保護AT82C250免受過(guò)電流沖擊。CANH和CANL與地之間并聯(lián)了2只30pF的小電容器,可以濾除總線(xiàn)上的高頻干擾并具有一定的防電磁輻射能力。另外,在2條CAN總線(xiàn)輸入端與地之間分別接了1個(gè)防雷擊管,當2個(gè)輸入端與地之間出現瞬變干擾時(shí),防雷擊管的放電起到一定的保護作用。AT82C250的RS引腳接1只斜率電阻器,其阻值的大小可根據總線(xiàn)通信速度適當調整,一般在16 kΩ~140 kΩ之間。
評論