1 前言
隨著通信技術的發(fā)展,CAN總線已廣泛應用于各行各業(yè)的工業(yè)現(xiàn)場,根據(jù)不同的需要或以主從方式,或以多主方式工作,CAN總線使用的通信介質(zhì)為雙絞線及其他電纜,傳輸速率可達1Mbps。鑒于其極高的可靠性和獨特的設計以及高速率,傳輸距離較長的特點,特別適合工業(yè)現(xiàn)場監(jiān)控設備的互聯(lián)。概括起來,它具有如下特點:
可建立1 024條虛擬鏈路,CAN控制器的ID號共有11位,其中1位作為優(yōu)先級,其余作為數(shù)據(jù)標識符,其主鏈路可在任意兩點之間或一點至任意多個節(jié)點之間建立。
數(shù)據(jù)長度有兩種形式:小于8字節(jié)的數(shù)據(jù)可選用單頁Page格式,大于8字節(jié)的數(shù)據(jù)可選用數(shù)據(jù)塊Block格式。
發(fā)送時將需要發(fā)送的數(shù)據(jù)填入發(fā)送信箱中,并在信息中置發(fā)送標志,CAN驅動程序循環(huán)查詢此標志,帶有發(fā)送標志的信箱會自動發(fā)送出去,接受時經(jīng)硬件濾波后,從信箱中取出信箱號與本節(jié)點的接受箱號逐一比較,相符即把信件放入接受信箱中。
數(shù)據(jù)優(yōu)先級根據(jù)信箱號而定,信箱號越小,優(yōu)先級越高,同時還提供發(fā)送緊急數(shù)據(jù)的優(yōu)先級。
2 CAN總線系節(jié)點的構成
該系統(tǒng)節(jié)點由CAN控制器和CAN驅動器組成。
本文所設計的CAN總線系統(tǒng)智能節(jié)點,采用89c51作為節(jié)點的微處理器,在CAN總線通信接口中,采用PHILIPS公司的SJA1000和82c250芯片,SJA1000是獨立的CAN通信控制器,82c250為高性能CAN總線收發(fā)器。圖1為總體框圖;圖2為CAN總線系統(tǒng)智能節(jié)點硬件電路原理圖。
圖1 總體框圖
圖2 CAN總線系統(tǒng)智能節(jié)點硬件電路原理圖
從圖2中可以看出電路主要由四部分構成,微控制器89c51,獨立CAN通信控制器SJA1000,CAN總線收發(fā)器82c250和高速光電耦合器6N137。微處理器89c51負責SJA1000的初始化,通過控制SJA1000實現(xiàn)數(shù)據(jù)的接受和發(fā)送等通信任務。
硬件電路的設計并不是太困難,但有幾點應引起注意:
(1) 為了增強CAN總線節(jié)點的抗干擾能力,SJA1000的TX0和RX0并不是直接與82c250的TXD和RXD相連,而是通過高速光電耦合器6N137后與82c250相連,這樣就很好地實現(xiàn)了總線上各CAN節(jié)點之間的電氣隔離。不過需特別說明的是光耦部分電路所采用的兩個電源Vcc和VDD必須完全隔離,否則采用光耦也就失去了意義。
(2) 82c250與CAN總線的接口部分也采取了一定的安全和抗干擾措施。82c250的CANH和CANL引腳各自通過1個5Ω的電阻與CAN總線相連,電阻可起到一定的限流作用,保護82c250免受過流的沖擊;CANH和CANL與地之間并聯(lián)了2個30pF的小電容,可以起到濾除總線上的高頻干擾和一定的防電磁輻射的作用;另外在兩根CAN總線接入端與地之間分別反接了一個保護二極管,當CAN總線有較高的負電壓時,通過二極管的短路可起到一定的過壓保護作用。82c250的Rs腳上與地之間的電阻Rs稱為斜率電阻,它的取值決定了系統(tǒng)處于高速工作方式還是斜率控制方式,把該引腳直接與地相連,系統(tǒng)將處于高速工作方式,在這種方式下,為避免射頻干擾,建議使用屏蔽電纜作總線;而在波特率較低,總線較短時,一般采用斜率控制方式,上升及下降的斜率取決于Rs的阻值,實驗數(shù)據(jù)表明15~200kΩ為Rs的較理想的取值范圍,在這種方式下,可以使用平行線或雙絞線作總線。
(3) 總線兩端應接有兩個120Ω的電阻,對于匹配總線阻抗起著相當重要的作用,忽略掉它們,會使數(shù)據(jù)通信的抗干擾及可靠性大大降低,甚至無法通信。
3 軟件設計
CAN總線節(jié)點的軟件設計主要包括:CAN節(jié)點初始化,信息的接受和發(fā)送,熟悉這兩個方面的程序設計,就能編寫出利用CAN總線進行通信的一般應用程序。當然,要將CAN總線應用于通信任務比較復雜的系統(tǒng)中,還需詳細了解有關CAN總線錯誤處理、總線脫離處理、接受濾波處理、波特率參數(shù)的設置和自動檢測以及CAN總線通信距離和節(jié)點數(shù)的計算等方面的內(nèi)容。下面僅就前面提到的兩部分程序設計流程作個描述。
3.1 初始化子程序
SJA1000的初始化只有在復位模式下才可以進行,初始化包括工作方式的設置,接受濾波方式的設置,接受屏蔽寄存器AMR和接受代碼寄存器ACR的設置,波特率參數(shù)設置和中斷允許寄存器IER的設置等,流程圖如圖3所示。
圖3 SJA1000的初始化流程圖
3.2 信息接受和發(fā)送子程序
流程圖如圖4所示。
4 設計中需注意的問題
4.1 SJA1000的工作模式
SJA1000有Basicmode和Pelimode兩種工作模式,兩種模式的底層都遵守CAN協(xié)議,如數(shù)據(jù)編碼、錯誤處理等,不同之處在于高層,如數(shù)據(jù)過濾、與MPU的接口部分等。
圖4 發(fā)送/接受中斷服務程序流程圖
SJA1000上電復位后自動進入Basicmode模式,在此模式下,SJA1000有復位(reset)和運行(operating)兩種狀態(tài),在復位狀態(tài)下完成對SJA1000某些寄存器的初始化工作,上電復位,SJA1000退出總線(Bus-off)和軟件置位復位請求都能引起SJA1000進入復位狀態(tài)。
4.2 總線定時寄存器BTR1和BTR0的初始化
總線定時寄存器的設置極大地影響了CAN性能的發(fā)揮,一般來說,若硬件連接無誤,通信失敗的主要原因在于總線定時寄存器的設置不當。
4.3 接受碼寄存器和接受屏蔽寄存器的初始化
接受碼寄存器和接受屏蔽寄存器構成硬件過濾,CAN控制節(jié)點通過它來決定是否接受總線上的報文,是否置CAN的接受中斷,極大的提高了系統(tǒng)的靈活性,為此,在對報文進行編碼時,需使每個節(jié)點所要接受的報文標識符中有盡可能多的共同位,這樣可以減少總線上無關報文對該節(jié)點的干擾。
4.4 狀態(tài)寄存器的處理
可以通過CAN控制器的狀態(tài)寄存器了解數(shù)據(jù)傳輸狀況,為了保證數(shù)據(jù)的正常收發(fā),需要對狀態(tài)寄存器各狀態(tài)位作出相應處理,這里可以采用查詢或中斷方式進行。
4.5 SJA1000的自我測試功能
SJA1000的Pelican模式可提供自我測試功能,這種功能在進行硬件設計時很有用,特別在只有一個CAN節(jié)點時也可以進行測試。
5 CAN總線在智能儀表中的應用及前景
現(xiàn)場總線技術以其獨有的技術優(yōu)勢和特點,在現(xiàn)代分布式測量與控制技術領域中的應用越來越廣泛。各種現(xiàn)場總線的主控制器一般都內(nèi)嵌有相當完善的、開放式的互連通信協(xié)議,它具有速度快、誤碼率低、開放設計簡單以及網(wǎng)絡使用維護方便等諸多特點,是實現(xiàn)網(wǎng)絡化現(xiàn)場測量與控制技術的一個發(fā)展方向。但目前在許多現(xiàn)場已投入使用的測量與控制系統(tǒng)中,各儀器設備或裝置之間通信所使用的仍是傳統(tǒng)的RS-485或RS-422總線。在不斷投入新型現(xiàn)場總線系統(tǒng)的同時,要在短期內(nèi)改造或淘汰那些舊系統(tǒng)是不現(xiàn)實的,但CAN總線廣泛應用是大勢所趨,特別是在智能儀表方面的應用中。
CAN總線具有高性能、高可靠性、高性價比、連接方便、實時性好以及獨特的設計等特點,CAN總線廣泛應用于控制系統(tǒng)中的各檢測和執(zhí)行機構之間的數(shù)據(jù)通信。本文在pH測試儀的基礎上進行不斷的更新,利用已經(jīng)投入的智能儀表進一步改造,利用CAN總線負載能力大,上位機程序簡單易開發(fā),上位機界面易處理等特點,逐步改進智能儀表的通信,并將其逐漸推廣。而在此之前,筆者已經(jīng)進行了pH測試儀的研究,實現(xiàn)了其在現(xiàn)場中的應用。本文是在pH測試儀基礎上的更新,使其功能進一步完善,實現(xiàn)網(wǎng)絡化,能夠完成現(xiàn)場總線在廠礦通信方面的應用,替代RS-485等通信方式,突出現(xiàn)場總線在通信中易操作、成本低等優(yōu)點,達到產(chǎn)品的實用和推廣,筆者探討的前景是逐步實現(xiàn)CAN總線網(wǎng)絡化的普及,令使用范圍擴大化,最大限度的發(fā)揮其功效。