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