CAN總線(xiàn)是一種串行多主站局域網(wǎng)總線(xiàn),被廣泛應用于汽車(chē)控制系統、自動(dòng)控制、樓宇自動(dòng)化、醫學(xué)設備等各個(gè)領(lǐng)域。其傳輸距離遠,最遠可達10 km,傳輸速率高,最高可達1 Mb/s,容錯性能好,可靠性能高。但是由于CAN驅動(dòng)器的驅動(dòng)能力有限,CAN總線(xiàn)能夠驅動(dòng)的節點(diǎn)數有限,一般在100個(gè)左右,同時(shí)會(huì )隨著(zhù)傳輸距離的增加,最高傳輸速率會(huì )下降,如果距離過(guò)長(cháng)會(huì )引起信號丟失、反射等故障。在實(shí)驗室條件下測得在5 Kb/s的通信速率下最遠通信距離能達到10 km;在18 Kb/s的通信速率下最遠通信距離只能達到2 km;而在42 b/s的通信速率下,最遠通信距離只能達到1 km。測試條件:線(xiàn)纜采用線(xiàn)徑為0.75 mm2的屏蔽雙絞線(xiàn),線(xiàn)纜為盤(pán)裝,室內測試。在實(shí)驗中,發(fā)現隨著(zhù)隨著(zhù)通信距離的增加,通信速率迅速下降,而CAN總線(xiàn)的驅動(dòng)節點(diǎn)數量也次第下降。而在通信距離遠,通信節點(diǎn)多的大空間場(chǎng)所,比如礦井、電力監控等系統需要CAN總線(xiàn)來(lái)傳輸數據和監控信息的場(chǎng)所,CAN總線(xiàn)不能滿(mǎn)足要求。 如果要實(shí)現通信距離遠、通信速率高、總線(xiàn)節點(diǎn)數量多CAN總線(xiàn)系統,實(shí)現CAN總線(xiàn)的擴展,就需要一個(gè)CAN網(wǎng)關(guān)進(jìn)行橋接,把CAN總線(xiàn)劃分為幾個(gè)子網(wǎng),增加CAN總線(xiàn)通信節點(diǎn),延長(cháng)CAN總線(xiàn)的傳輸距離,提高CAN總線(xiàn)的傳輸速率。在研究基于PIC單片機的CAN網(wǎng)關(guān)設計和擴展的CAN總線(xiàn)網(wǎng)絡(luò )拓撲結構。 1 CAN網(wǎng)關(guān)總體設計及總線(xiàn)拓撲結構 1.1 CAN網(wǎng)關(guān)總體設計 CAN網(wǎng)關(guān)作為一種轉發(fā)設備,連接在兩個(gè)不同的CAN網(wǎng)絡(luò )中,能夠實(shí)時(shí)接收來(lái)自?xún)蓚(gè)子網(wǎng)中的信息,根據需要篩選或者無(wú)條件地把接收到的信息轉發(fā)到另外一個(gè)網(wǎng)絡(luò )中。CAN總線(xiàn)層次結構分為物理層、數據鏈路層和應用層,工作于ISO/OSI參考模式下。CAN網(wǎng)關(guān)在物理層和數據鏈路層完成兩個(gè)CAN網(wǎng)的連接。CAN網(wǎng)關(guān)結構圖如圖1所示。 CAN網(wǎng)關(guān)可以作為透明網(wǎng)關(guān)和源路由網(wǎng)關(guān)。透明網(wǎng)關(guān)完全按照接收到的幀格式轉發(fā),不改變幀結構,對于用戶(hù),網(wǎng)關(guān)相當于透明的。而源路由網(wǎng)關(guān)由用戶(hù)提供路由信息,網(wǎng)關(guān)按照路由信息對消息進(jìn)行過(guò)濾和有選擇性的轉發(fā)。 1.2 CAN總線(xiàn)網(wǎng)絡(luò )拓撲結構 帶有網(wǎng)關(guān)的CAN網(wǎng)絡(luò )拓撲結構如圖2所示。在這個(gè)網(wǎng)路中,PC機為主節點(diǎn),而CAN節點(diǎn)作為從節點(diǎn)。在網(wǎng)絡(luò )的頂層,由PC機和網(wǎng)關(guān)構成一個(gè)主網(wǎng),在這個(gè)主網(wǎng)中PC機和CAN網(wǎng)關(guān)作為CAN節點(diǎn),總線(xiàn)驅動(dòng)器驅動(dòng)能力可以帶100個(gè)cAN節點(diǎn)左右。主網(wǎng)中的CAN網(wǎng)關(guān)再作為下一個(gè)子網(wǎng)中的主節點(diǎn),而其他CAN網(wǎng)關(guān)或是CAN節點(diǎn)作為從節點(diǎn),構成一個(gè)子網(wǎng)。這樣通過(guò)CAN網(wǎng)關(guān)可以逐環(huán)把網(wǎng)絡(luò )擴展下去,直到最底層的CAN節點(diǎn)。而在應用層上,用戶(hù)可以把網(wǎng)關(guān)配置成透明網(wǎng)關(guān)或是源路由網(wǎng)光。透明網(wǎng)關(guān)不影響網(wǎng)絡(luò )結構,CAN拓展網(wǎng)絡(luò )形成一個(gè)多節點(diǎn),遠距離的網(wǎng)絡(luò )。源路由網(wǎng)關(guān)對消息具有過(guò)濾性,根據用戶(hù)的配置信息把CAN網(wǎng)絡(luò )在應用層上劃分為幾個(gè)小網(wǎng)。 這樣,解決了節點(diǎn)容量、通信距離、通信速率的問(wèn)題。 2 網(wǎng)關(guān)的硬件設計 硬件電路開(kāi)發(fā)采用集成電路,開(kāi)發(fā)周期短,成本低。CPU采用Microchip公司的16位單片機dsPIC30F6011作為核心部件,其內部集成了兩個(gè)CAN控制器,支持CAN 2.0A/B協(xié)議,CPU的速度可以達到30 MIPS,程序存儲器空間有132 KB,內部RAM有6 144 B,數據程序存儲器有2 048 B,集成的功能強大,體積小,性?xún)r(jià)比比較高。物理層采用兩個(gè)CAN驅動(dòng)器PCA82C250。其中一組的PCA82C250的RXD,TXD引腳不是和CPUdsPIC30F6011直接連接,而在中間用光速光藕6N137隔離。 單片機dsPIC30F6011有兩個(gè)通用的UART口,可以作為和PC機或其他上位機通信的接口來(lái)用。另外,dsPIC30F6011采用TQPF封裝64引腳,利用通用I/O驅動(dòng)LED燈作為指示燈,預留并行液晶顯示器和 4×4行列式鍵盤(pán)的接口。 CAN控制器和驅動(dòng)器部分采用了光電隔離器,因此電源設計部分要求有兩個(gè)隔離的5 V電源?紤]到可以會(huì )用到液晶顯示器,因此一路電源設計采用輸出容量1 A的開(kāi)關(guān)電源LM9076,而另外一路采用隔離DC/DC模塊電源。這樣CAN子網(wǎng)之間實(shí)現了電氣隔離,如果一個(gè)網(wǎng)絡(luò )出了問(wèn)題并不影響另外一個(gè)網(wǎng)絡(luò )的正常工作,提高了CAN網(wǎng)絡(luò )的抗干擾性能。硬件電路設計外圍電路少、設計簡(jiǎn)單、成本低。設計的CAN網(wǎng)關(guān)硬件設計系統框圖如圖3所示。 3 網(wǎng)關(guān)的軟件設計 CAN網(wǎng)關(guān)作為消息的轉發(fā)器,要準確、實(shí)時(shí)地接收兩個(gè)CAN發(fā)送的信息,并且要實(shí)時(shí)發(fā)出去。對于不斷發(fā)出信息的問(wèn)題節點(diǎn)要及時(shí)屏蔽,避免錯誤信息蔓延到另一個(gè)CAN網(wǎng)絡(luò )。如果CAN網(wǎng)關(guān)被設置成透明網(wǎng)關(guān)則直接把一個(gè)CAN網(wǎng)絡(luò )的信息轉發(fā)到另外一個(gè)網(wǎng)絡(luò )中即可,如果CAN網(wǎng)關(guān)被設置成和某個(gè)區間ID相關(guān),則要做一些信息過(guò)濾和屏蔽處理。當CAN網(wǎng)關(guān)檢測到總線(xiàn)有錯誤時(shí),要通過(guò)備用的UART口將錯誤信息上發(fā)到上位機或其他信息處理主機。 CAN網(wǎng)關(guān)的信息接收通過(guò)硬件中斷來(lái)完成。當總線(xiàn)上有消息時(shí),引起硬件中斷,進(jìn)入中斷程序后根據中斷標志位的區別把接收到的信息存放到相應的緩沖區中。緩沖區是一個(gè)FIFO的存儲區。而主程序則一直檢測兩個(gè)CAN控制器對應的兩個(gè)接收緩沖區,當檢測到緩沖區不為空時(shí)則把緩沖區內的信息順序發(fā)送到另一個(gè)網(wǎng)絡(luò )中。從而形成一個(gè)具有一定的錯誤檢測能力的雙向通道,完成了兩個(gè)CAN網(wǎng)絡(luò )的信息轉發(fā)。CAN網(wǎng)關(guān)的主程序框圖如圖4所示,中斷程序框圖如圖5所示。 4 結 語(yǔ) 詳細介紹了CAN總線(xiàn)擴展技術(shù)的網(wǎng)絡(luò )拓撲結構和系統構成,給出了CAN網(wǎng)關(guān)的硬件設計原理及軟件設計框圖。這樣的CAN總線(xiàn)擴展網(wǎng)絡(luò ),因為引入CAN網(wǎng)關(guān)而增加了消息的傳遞時(shí)間,但是這個(gè)增加的時(shí)間很小,是微秒級的,可以忽略不計。而帶來(lái)的優(yōu)勢明顯,因為把CAN網(wǎng)絡(luò )在物理層上劃分為幾個(gè)網(wǎng)絡(luò ),彼此之間不相互影響,因而增加了CAN網(wǎng)絡(luò )的抗干擾性,同時(shí),擴展靈活,只需要增加一個(gè)CAN網(wǎng)關(guān)來(lái)增加子網(wǎng)即可;通信速率可通過(guò)增加網(wǎng)關(guān)來(lái)提高,通信距離可以擴展到很遠。通過(guò)CAN網(wǎng)關(guān)增加了CAN總線(xiàn)的容量、提高了CAN總線(xiàn)的通信速率、擴展了CAN總線(xiàn)的傳輸距離。 |