1 引言
隨著網(wǎng)絡(luò)的普及,網(wǎng)絡(luò)的可靠性越來越受到人們的關(guān)注,而影響網(wǎng)絡(luò)可靠性的關(guān)鍵是網(wǎng)絡(luò)系統(tǒng)中的電源系統(tǒng)的可靠穩(wěn)定,要求能對其運行狀態(tài)進(jìn)行實時監(jiān)控,及時發(fā)現(xiàn)異常情況和事故隱患,在出現(xiàn)異常和故障時迅速進(jìn)行診斷并予以修復(fù),最大限度地減少ups的停機(jī)時間即成必要。筆者針對不間斷電源系統(tǒng),將can總線技術(shù)應(yīng)用到系統(tǒng)的網(wǎng)絡(luò)監(jiān)控中,并充分利用can能夠以較低的成本、較高的實時處理能力在強(qiáng)電磁干撓環(huán)境下可靠地工作的優(yōu)點,開發(fā)出ups網(wǎng)絡(luò)監(jiān)控系統(tǒng)。
2 can總線概況
can全稱為controller area network即控制器局域網(wǎng),是國際上應(yīng)用最廣泛的現(xiàn)場總線之一。can最初出現(xiàn)在80年代末的汽車工業(yè)中,由德國bosch公司最先提出。最初被設(shè)計作為汽車環(huán)境中的微控制器通訊,在車載各電子控制裝置ecu之間交換信息形成汽車電子控制網(wǎng)絡(luò),發(fā)動機(jī)管理系統(tǒng)、變速箱控制器、儀表裝備、電子主干系統(tǒng)中均嵌入can控制裝置?,F(xiàn)在它已發(fā)展為一種有效支持分布式控制或?qū)崟r控制的串行通信網(wǎng)絡(luò)。
2.1 can總線特點
can具有十分優(yōu)越的特點,使人們樂于選擇,這些特性包括:
(1) 多主方式工作
網(wǎng)絡(luò)上任意節(jié)點可以在任何時刻主動的向任何其他節(jié)點發(fā)送消息,而不分主從;通信方式靈活,無需站地址等節(jié)點信息,可構(gòu)成多機(jī)備份系統(tǒng);
(2) 采用非破壞性總線仲裁技術(shù)
節(jié)點信息分成不同優(yōu)先級,滿足不同實時要求。當(dāng)幾個節(jié)點同時向網(wǎng)絡(luò)發(fā)送消息時,運用逐位仲裁原則,利用幀中開始部分的標(biāo)識符,優(yōu)先級低的節(jié)點主動停止發(fā)送數(shù)據(jù),而優(yōu)先級高的節(jié)點則不受任何影響的發(fā)送信息;
(3) 借助接受濾波的多點傳送
只需通過報文濾波可實現(xiàn)點對點、一點對多點,以及全局廣播等方式傳送,無需專門調(diào)度;
(4) 高速率、遠(yuǎn)距離、低出錯率
can總線通信最高波特率可高達(dá)1mbps(采用雙絞線通訊距離40m)、最遠(yuǎn)通訊距離為10km(可達(dá)5kbps),can協(xié)議采用crc校驗并提供相應(yīng)的錯誤信息處理功能;
(5) 通信介質(zhì)選擇靈活
通信介質(zhì)可以是雙絞線、同軸電纜或光纖,選擇靈活;
(6) 半雙工方式工作
can總線以半雙工的方式工作,一個節(jié)點發(fā)送消息,多個節(jié)點接收消息;
(7) 抗干擾性能強(qiáng)
它采用集散控制技術(shù),既可以滿足控制的實時性和數(shù)據(jù)的實時采集及處理,又可以簡化系統(tǒng)接線、提高控制網(wǎng)絡(luò)的抗干擾能力。
2.2 can總線工作原理
can的通信介質(zhì)為帶優(yōu)先級的cs-ma/ca,網(wǎng)絡(luò)上任意節(jié)點可以在任何時刻主動的向任何其他節(jié)點發(fā)送消息,而不分主、從,即當(dāng)發(fā)現(xiàn)總線空閑時,各節(jié)點都有權(quán)使用網(wǎng)絡(luò)。而當(dāng)發(fā)生沖突時,采用非破壞性總線優(yōu)先仲裁技術(shù),由于每個節(jié)點的can總線接口必須接收總線上出現(xiàn)的所有信息,因此必然需要設(shè)置一個接收寄存器。先將信息接收,再根據(jù)接收的信息標(biāo)識符決定是否需要讀取信息包中的數(shù)據(jù)。同時為了避免不必要的頻繁中斷,需要設(shè)置一個屏蔽寄存器來濾掉那些所在節(jié)點設(shè)備不感興趣的信息,獨立的can控制器sja1000裝配了一個多功能的驗收濾波器,該濾波器允許自動檢查id和數(shù)據(jù)字節(jié),使用這些有效的濾波方法,對于某個節(jié)點來說,無效的信息可被防止存儲在接收緩沖器里,因此降低了主控制器的處理負(fù)載。由驗收代碼和屏蔽寄存器根據(jù)數(shù)據(jù)表給定算法來控制,接收到的數(shù)據(jù)會和驗收代碼寄存器中的值進(jìn)行逐位比較,接收屏蔽寄存器定義與比較相關(guān)的位的位置(“0”=相關(guān),“1”=不相關(guān)),只有收到信息的相應(yīng)的位與驗收代碼寄存器相應(yīng)的位相同,這條信息才會被接收。
can總線傳遞的信息以信息包的形式出現(xiàn):
(1) 信息的消息標(biāo)識符(11bit);
(2) 遠(yuǎn)地傳送請求(1bit);
(3) 數(shù)據(jù)長度表 (4bit);
(4) 數(shù)據(jù)(0-8個bit)。
標(biāo)識符既用來表明信息的類型(數(shù)據(jù)幀,遠(yuǎn)程幀),也用來表明信息的優(yōu)先級;遠(yuǎn)地傳送請求指需要數(shù)據(jù)的節(jié)點可以請求另一個節(jié)點發(fā)送一個相應(yīng)的數(shù)據(jù)幀,該數(shù)據(jù)幀和對應(yīng)的遠(yuǎn)程幀以相同的標(biāo)識符id命名。
2.3 接口電路
[align=center]
圖1 can總線系統(tǒng)單個節(jié)點硬電路圖[/align]
圖1為can總線控制器與can通信網(wǎng)絡(luò)的接口電路。從圖1中可以看出,此部分電路主要由三部分所構(gòu)成:獨立can總線控制器sja1000t、總線收發(fā)器82c250和高速光電耦合器6n137。各部分功能如下:
(1) can控制器sja1000t
sja1000t內(nèi)部集成了can總線的協(xié)議,與用戶端控制器一起完成can的各項功能,起到中間協(xié)調(diào)作用;
(2) 總線收發(fā)器82c250
sja1000與can物理總線之間的接口為82c250,它可提供對總線的差動發(fā)送能力和對can控制器的差動接收能力,具有較強(qiáng)的抗干擾能力。通過對腳8(rs)的不同連接可以實現(xiàn)三種不同的工作方式:高速、斜率控制和待機(jī),本系統(tǒng)中采用斜率控制,以降低射頻干擾;
(3) 高速光耦6n137
為了增強(qiáng)can總線節(jié)點的抗干擾能力,sja1000 的tx0和rxo并不是直接與82c250的txd和rxd相連,而是通過高速光耦6n137后與82c250相連,這樣就很好的實現(xiàn)了總線上各can節(jié)點間的電氣隔離, 不過應(yīng)該特別說明的一點是光耦部分電路所采用的兩個電源vcc和vdd必須完全隔離,否則采用光耦也就失去了意義,電源的完全隔離可采用小功率電源隔離模塊或帶多5v隔離輸出的開關(guān)電源模塊實現(xiàn),這些部分雖然增加了節(jié)點的復(fù)雜但是卻提高了節(jié)點的穩(wěn)定性和安全性;
(4)82c250與can總線的接口部分
采用了一定的安全和抗干擾措施。82c250 的canh和canl引腳各自通過一個5ω的電阻與can總線相連,電阻可起到一定的限流作用,保護(hù)82c250免受過流的沖擊;canh和canl與地之間并聯(lián)了2個100pf的電容,可以起到濾除總線上的高頻干擾和一定的防電磁輻射的能力;在兩根can總線接入端與地之間分別反接了一個保護(hù)二極管,當(dāng)can總線有較高的負(fù)電壓時,通過二極管的短路可起到一定的過壓保護(hù)作用。
3 系統(tǒng)簡介
系統(tǒng)的結(jié)構(gòu)圖如圖2所示。
[align=center]
圖2 并聯(lián)ups網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)圖[/align]
圖2中本地pc監(jiān)控機(jī)及遠(yuǎn)程網(wǎng)監(jiān)控機(jī)完成對該系統(tǒng)的數(shù)據(jù)實時監(jiān)視及控制;顯示監(jiān)控模塊在系統(tǒng)的面板上,與ups1、ups2、ups3(僅列舉3個,實際做到6個)通過can總線組成canbus網(wǎng)絡(luò),顯示監(jiān)控模塊主要通過can總線完成對下面各ups相關(guān)數(shù)據(jù)的采集,并與系統(tǒng)機(jī)顯示模塊、本地pc監(jiān)控機(jī)、遠(yuǎn)程網(wǎng)監(jiān)控機(jī)進(jìn)行通信;ups1、ups2、ups3為本系統(tǒng)的可單獨運行供電的不間斷電源。canbus網(wǎng)絡(luò)通過can_h和can_l及外加在兩端的電阻rt(rt=124ω)組成,其上的節(jié)點can_h和can_l分別接在canbus網(wǎng)絡(luò)的can_h和can_l上,目前canbus網(wǎng)絡(luò)上最多可接110個節(jié)點。
鑒于本系統(tǒng)的要求,ups1、ups2、ups3及顯示監(jiān)控模塊的控制芯片均采用ti公司生產(chǎn)的tms320f240dsp,can控制器采用philip公司生產(chǎn)的sja1000t。
3.1 dsp與can總線控制器硬件接口
dsp與can控制器sja1000t之間的接口電路如圖3所示。
[align=center]
圖3 dsp與can控制器sja1000t之間的接口電路[/align]
sja1000t的存儲空間映射在微控制器dsp的i/o空間,對sja1000存儲空間的尋址必須用指令in和out。在intel方式下讀寫sja1000時,地址和數(shù)據(jù)是分時傳送的,地址在前,數(shù)據(jù)在后。根據(jù)dsp對外設(shè)端口的邏輯時序及sja1000t要求的讀寫邏輯時序,除了dsp的基本讀寫引腳we、w/r外,我們還選用a14、a15、is為控制腳,控制sja1000地址空間和數(shù)據(jù)空間的選通,當(dāng)a15=1、a14=0時為地址空間,選通ale和cs;當(dāng)a15=1、a14=0時為數(shù)據(jù)空間,此時對于dsp來說,寫則選通sja1000t的wr和cs, 讀則選通sja1000t的rd/w和cs,從而完成了dsp與sja1000t之間的數(shù)據(jù)傳遞。
另外,由于接收數(shù)據(jù)采用中斷方式,故在dsp上選用外部中斷xint1作為中斷源,而sja1000t是低有效,故通過一個上拉電阻接vcc。
4 can通信網(wǎng)絡(luò)軟件設(shè)計
單個can節(jié)點通信的功能主要是將本節(jié)點的數(shù)據(jù)信息傳送給can通信網(wǎng)絡(luò)其它節(jié)點,以及接收網(wǎng)絡(luò)上其它節(jié)點傳送來的信息。can總線單個節(jié)點的軟件設(shè)計主要包括三大部分:can節(jié)點初始化、信息的發(fā)送和信息的接收。設(shè)計時將can初始化、發(fā)送信息(數(shù)據(jù)和遠(yuǎn)程幀)設(shè)計為子程序,發(fā)送信息采用查詢方式,接收信息采用中斷方式。
(1) 初始化子程序
sja1000的初始化只有在復(fù)位模式下才可以進(jìn)行,初始化主要包括工作方式的設(shè)置、接收濾波方式的設(shè)置、接收屏蔽寄存器amr和接收代碼寄存器acr的設(shè)置、波特率參數(shù)設(shè)置和中斷允許寄存器ier的設(shè)置等。在完成sja1000的初始化設(shè)置以后,sja1000就可以回到工作狀態(tài),進(jìn)行正常的通信任務(wù),其源程序如下:
data_can .set 0c000h
dress_can .set 8000h
can_start:
ldp #4
splk #0,temp ;控制寄存器(mod)設(shè)置
out temp,dress_can
splk #1bh, temp ;復(fù)位模式
out temp,data_can ;sja1000進(jìn)行初始化
splk #0, temp
out temp,dress_can
in temp,data_can
bit temp,bit0
bcnd can_reset,ntc
splk #4,canflag ;設(shè)置驗收代碼寄存器
out temp,dress_can
splk #01h,canflag
out temp,data_can
splk #5, temp ;設(shè)置驗收屏蔽寄存器
out temp,dress_can
splk #000h, temp
out temp,data_can
splk #31, temp ;設(shè)置時鐘分頻寄存器(cdr)
out temp,dress_can
splk #48h, temp ;選擇basiccan模式,關(guān)
;閉時鐘(clkout)
out temp,data_can
splk #6, temp ;設(shè)置總線定時寄存器0
out temp,dress_can
splk #0c4h, temp ;tscl=10tclk,tclk為xtal
;的頻率周期(20mhz)
out temp,data_can ;不同總線控制器的時鐘
;振蕩器間的相對偏移為0
splk #7, temp ;設(shè)置總線定時寄存器1
out temp,dress_can
splk #0beh, temp ;設(shè)置tsyncseg=tscl,
;ttseg1=15tscl,ttseg2=4tscl
out temp,data_can ;位周期為20tscl,故在
;20mhz晶振情況下,設(shè)置波特率為100kbps
splk #8, temp ;設(shè)置輸出控制寄存器
out temp,dress_can
splk #1ah, temp ;正常輸出模式
out temp,data_can ;tx1懸空,tx0推挽式
can_work ldp #4
splk #0, temp ;設(shè)置模式寄存器(mod)
out temp,dress_can
splk #1ah, temp ;設(shè)置雙濾波接收方式,并
;返回工作狀態(tài)
out temp,data_can
splk #0, temp
out temp,dress_can
in temp,data_can
bit temp,bit0
bcnd can_work,tc
ret
(2) 發(fā)送子程序
負(fù)責(zé)單節(jié)點信息的發(fā)送,發(fā)送時只需將待發(fā)送的信息按特定格式組合成一幀,送入sja1000發(fā)送緩存區(qū)中,然后啟動sja1000發(fā)送即可,當(dāng)然在往sja1000發(fā)送緩存區(qū)送信息之前必須先作一些查詢判斷,直到空閑時才能發(fā)送,發(fā)送子程序分發(fā)送遠(yuǎn)程幀子程序和數(shù)據(jù)幀子程序兩種,遠(yuǎn)程幀無數(shù)據(jù)場;
(3) 接收子程序
負(fù)責(zé)單節(jié)點信息的接收以及其它情況處理。當(dāng)can控制器接收到信息后向微控制器發(fā)出中斷響應(yīng)信號,微控制器在中斷程序中將接收到的信息讀入,再根據(jù)信息來控制節(jié)點的動作。接收子程序比發(fā)送子程序要復(fù)雜一些,因為在處理接收信息可能是諸如總線脫離、錯誤報警、接收溢出等中斷,要對其進(jìn)行處理。
5 結(jié)束語
目前,該網(wǎng)絡(luò)監(jiān)控系統(tǒng)已經(jīng)在廣東某集團(tuán)公司18kva-6*3kva可熱插拔模塊化不間斷電源上使用,經(jīng)過了運行和調(diào)試。驗證了使用can總線技術(shù)使系統(tǒng)布線更加靈活,具有通信質(zhì)量可靠、響應(yīng)速度快、實時性好的特點,滿足整個系統(tǒng)可熱插拔的要求。
參考文獻(xiàn)
[1] 瞿 坦. 計算機(jī)網(wǎng)絡(luò)及應(yīng)用[m]. 北京:化學(xué)工業(yè)出版社,2002.
[2] philips.sja1000 stand-alone can controller product specification.2000 jan 04.
[3] 張永強(qiáng).ups的網(wǎng)絡(luò)監(jiān)控[j]. 電力學(xué)報,2002,16(1):54.
作者簡介
謝紅勝(1975-) 男 碩士研究生 主要從事于ups的并聯(lián)及其網(wǎng)絡(luò)監(jiān)控技術(shù)研究。