1 引言
隨著網(wǎng)絡(luò)的普及,網(wǎng)絡(luò)的可靠性越來越受到人們的關(guān)注,而影響網(wǎng)絡(luò)可靠性的關(guān)鍵是網(wǎng)絡(luò)系統(tǒng)中的電源系統(tǒng)的可靠穩(wěn)定,要求能對(duì)其運(yùn)行狀態(tài)進(jìn)行實(shí)時(shí)監(jiān)控,及時(shí)發(fā)現(xiàn)異常情況和事故隱患,在出現(xiàn)異常和故障時(shí)迅速進(jìn)行診斷并予以修復(fù),最大限度地減少ups的停機(jī)時(shí)間即成必要。筆者針對(duì)不間斷電源系統(tǒng),將can總線技術(shù)應(yīng)用到系統(tǒng)的網(wǎng)絡(luò)監(jiān)控中,并充分利用can能夠以較低的成本、較高的實(shí)時(shí)處理能力在強(qiáng)電磁干撓環(huán)境下可靠地工作的優(yōu)點(diǎn),開發(fā)出ups網(wǎng)絡(luò)監(jiān)控系統(tǒng)。
2 can總線概況
can全稱為controller area network即控制器局域網(wǎng),是國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。can最初出現(xiàn)在80年代末的汽車工業(yè)中,由德國(guó)bosch公司最先提出。最初被設(shè)計(jì)作為汽車環(huán)境中的微控制器通訊,在車載各電子控制裝置ecu之間交換信息形成汽車電子控制網(wǎng)絡(luò),發(fā)動(dòng)機(jī)管理系統(tǒng)、變速箱控制器、儀表裝備、電子主干系統(tǒng)中均嵌入can控制裝置?,F(xiàn)在它已發(fā)展為一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò)。
2.1 can總線特點(diǎn)
can具有十分優(yōu)越的特點(diǎn),使人們樂于選擇,這些特性包括:
(1) 多主方式工作
網(wǎng)絡(luò)上任意節(jié)點(diǎn)可以在任何時(shí)刻主動(dòng)的向任何其他節(jié)點(diǎn)發(fā)送消息,而不分主從;通信方式靈活,無需站地址等節(jié)點(diǎn)信息,可構(gòu)成多機(jī)備份系統(tǒng);
(2) 采用非破壞性總線仲裁技術(shù)
節(jié)點(diǎn)信息分成不同優(yōu)先級(jí),滿足不同實(shí)時(shí)要求。當(dāng)幾個(gè)節(jié)點(diǎn)同時(shí)向網(wǎng)絡(luò)發(fā)送消息時(shí),運(yùn)用逐位仲裁原則,利用幀中開始部分的標(biāo)識(shí)符,優(yōu)先級(jí)低的節(jié)點(diǎn)主動(dòng)停止發(fā)送數(shù)據(jù),而優(yōu)先級(jí)高的節(jié)點(diǎn)則不受任何影響的發(fā)送信息;
(3) 借助接受濾波的多點(diǎn)傳送
只需通過報(bào)文濾波可實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)、一點(diǎn)對(duì)多點(diǎn),以及全局廣播等方式傳送,無需專門調(diào)度;
(4) 高速率、遠(yuǎn)距離、低出錯(cuò)率
can總線通信最高波特率可高達(dá)1mbps(采用雙絞線通訊距離40m)、最遠(yuǎn)通訊距離為10km(可達(dá)5kbps),can協(xié)議采用crc校驗(yàn)并提供相應(yīng)的錯(cuò)誤信息處理功能;
(5) 通信介質(zhì)選擇靈活
通信介質(zhì)可以是雙絞線、同軸電纜或光纖,選擇靈活;
(6) 半雙工方式工作
can總線以半雙工的方式工作,一個(gè)節(jié)點(diǎn)發(fā)送消息,多個(gè)節(jié)點(diǎn)接收消息;
(7) 抗干擾性能強(qiáng)
它采用集散控制技術(shù),既可以滿足控制的實(shí)時(shí)性和數(shù)據(jù)的實(shí)時(shí)采集及處理,又可以簡(jiǎn)化系統(tǒng)接線、提高控制網(wǎng)絡(luò)的抗干擾能力。
2.2 can總線工作原理
can的通信介質(zhì)為帶優(yōu)先級(jí)的cs-ma/ca,網(wǎng)絡(luò)上任意節(jié)點(diǎn)可以在任何時(shí)刻主動(dòng)的向任何其他節(jié)點(diǎn)發(fā)送消息,而不分主、從,即當(dāng)發(fā)現(xiàn)總線空閑時(shí),各節(jié)點(diǎn)都有權(quán)使用網(wǎng)絡(luò)。而當(dāng)發(fā)生沖突時(shí),采用非破壞性總線優(yōu)先仲裁技術(shù),由于每個(gè)節(jié)點(diǎn)的can總線接口必須接收總線上出現(xiàn)的所有信息,因此必然需要設(shè)置一個(gè)接收寄存器。先將信息接收,再根據(jù)接收的信息標(biāo)識(shí)符決定是否需要讀取信息包中的數(shù)據(jù)。同時(shí)為了避免不必要的頻繁中斷,需要設(shè)置一個(gè)屏蔽寄存器來濾掉那些所在節(jié)點(diǎn)設(shè)備不感興趣的信息,獨(dú)立的can控制器sja1000裝配了一個(gè)多功能的驗(yàn)收濾波器,該濾波器允許自動(dòng)檢查id和數(shù)據(jù)字節(jié),使用這些有效的濾波方法,對(duì)于某個(gè)節(jié)點(diǎn)來說,無效的信息可被防止存儲(chǔ)在接收緩沖器里,因此降低了主控制器的處理負(fù)載。由驗(yàn)收代碼和屏蔽寄存器根據(jù)數(shù)據(jù)表給定算法來控制,接收到的數(shù)據(jù)會(huì)和驗(yàn)收代碼寄存器中的值進(jìn)行逐位比較,接收屏蔽寄存器定義與比較相關(guān)的位的位置(“0”=相關(guān),“1”=不相關(guān)),只有收到信息的相應(yīng)的位與驗(yàn)收代碼寄存器相應(yīng)的位相同,這條信息才會(huì)被接收。
can總線傳遞的信息以信息包的形式出現(xiàn):
(1) 信息的消息標(biāo)識(shí)符(11bit);
(2) 遠(yuǎn)地傳送請(qǐng)求(1bit);
(3) 數(shù)據(jù)長(zhǎng)度表 (4bit);
(4) 數(shù)據(jù)(0-8個(gè)bit)。
標(biāo)識(shí)符既用來表明信息的類型(數(shù)據(jù)幀,遠(yuǎn)程幀),也用來表明信息的優(yōu)先級(jí);遠(yuǎn)地傳送請(qǐng)求指需要數(shù)據(jù)的節(jié)點(diǎn)可以請(qǐng)求另一個(gè)節(jié)點(diǎn)發(fā)送一個(gè)相應(yīng)的數(shù)據(jù)幀,該數(shù)據(jù)幀和對(duì)應(yīng)的遠(yuǎn)程幀以相同的標(biāo)識(shí)符id命名。
2.3 接口電路
[align=center]

圖1 can總線系統(tǒng)單個(gè)節(jié)點(diǎn)硬電路圖[/align]
圖1為can總線控制器與can通信網(wǎng)絡(luò)的接口電路。從圖1中可以看出,此部分電路主要由三部分所構(gòu)成:獨(dú)立can總線控制器sja1000t、總線收發(fā)器82c250和高速光電耦合器6n137。各部分功能如下:
(1) can控制器sja1000t
sja1000t內(nèi)部集成了can總線的協(xié)議,與用戶端控制器一起完成can的各項(xiàng)功能,起到中間協(xié)調(diào)作用;
(2) 總線收發(fā)器82c250
sja1000與can物理總線之間的接口為82c250,它可提供對(duì)總線的差動(dòng)發(fā)送能力和對(duì)can控制器的差動(dòng)接收能力,具有較強(qiáng)的抗干擾能力。通過對(duì)腳8(rs)的不同連接可以實(shí)現(xiàn)三種不同的工作方式:高速、斜率控制和待機(jī),本系統(tǒng)中采用斜率控制,以降低射頻干擾;
(3) 高速光耦6n137
為了增強(qiáng)can總線節(jié)點(diǎn)的抗干擾能力,sja1000 的tx0和rxo并不是直接與82c250的txd和rxd相連,而是通過高速光耦6n137后與82c250相連,這樣就很好的實(shí)現(xiàn)了總線上各can節(jié)點(diǎn)間的電氣隔離, 不過應(yīng)該特別說明的一點(diǎn)是光耦部分電路所采用的兩個(gè)電源vcc和vdd必須完全隔離,否則采用光耦也就失去了意義,電源的完全隔離可采用小功率電源隔離模塊或帶多5v隔離輸出的開關(guān)電源模塊實(shí)現(xiàn),這些部分雖然增加了節(jié)點(diǎn)的復(fù)雜但是卻提高了節(jié)點(diǎn)的穩(wěn)定性和安全性;
(4)82c250與can總線的接口部分
采用了一定的安全和抗干擾措施。82c250 的canh和canl引腳各自通過一個(gè)5ω的電阻與can總線相連,電阻可起到一定的限流作用,保護(hù)82c250免受過流的沖擊;canh和canl與地之間并聯(lián)了2個(gè)100pf的電容,可以起到濾除總線上的高頻干擾和一定的防電磁輻射的能力;在兩根can總線接入端與地之間分別反接了一個(gè)保護(hù)二極管,當(dāng)can總線有較高的負(fù)電壓時(shí),通過二極管的短路可起到一定的過壓保護(hù)作用。
3 系統(tǒng)簡(jiǎn)介
系統(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ī)完成對(duì)該系統(tǒng)的數(shù)據(jù)實(shí)時(shí)監(jiān)視及控制;顯示監(jiān)控模塊在系統(tǒng)的面板上,與ups1、ups2、ups3(僅列舉3個(gè),實(shí)際做到6個(gè))通過can總線組成canbus網(wǎng)絡(luò),顯示監(jiān)控模塊主要通過can總線完成對(duì)下面各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)的可單獨(dú)運(yùn)行供電的不間斷電源。canbus網(wǎng)絡(luò)通過can_h和can_l及外加在兩端的電阻rt(rt=124ω)組成,其上的節(jié)點(diǎn)can_h和can_l分別接在canbus網(wǎng)絡(luò)的can_h和can_l上,目前canbus網(wǎng)絡(luò)上最多可接110個(gè)節(jié)點(diǎn)。
鑒于本系統(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的存儲(chǔ)空間映射在微控制器dsp的i/o空間,對(duì)sja1000存儲(chǔ)空間的尋址必須用指令in和out。在intel方式下讀寫sja1000時(shí),地址和數(shù)據(jù)是分時(shí)傳送的,地址在前,數(shù)據(jù)在后。根據(jù)dsp對(duì)外設(shè)端口的邏輯時(shí)序及sja1000t要求的讀寫邏輯時(shí)序,除了dsp的基本讀寫引腳we、w/r外,我們還選用a14、a15、is為控制腳,控制sja1000地址空間和數(shù)據(jù)空間的選通,當(dāng)a15=1、a14=0時(shí)為地址空間,選通ale和cs;當(dāng)a15=1、a14=0時(shí)為數(shù)據(jù)空間,此時(shí)對(duì)于dsp來說,寫則選通sja1000t的wr和cs, 讀則選通sja1000t的rd/w和cs,從而完成了dsp與sja1000t之間的數(shù)據(jù)傳遞。
另外,由于接收數(shù)據(jù)采用中斷方式,故在dsp上選用外部中斷xint1作為中斷源,而sja1000t是低有效,故通過一個(gè)上拉電阻接vcc。
4 can通信網(wǎng)絡(luò)軟件設(shè)計(jì)
單個(gè)can節(jié)點(diǎn)通信的功能主要是將本節(jié)點(diǎn)的數(shù)據(jù)信息傳送給can通信網(wǎng)絡(luò)其它節(jié)點(diǎn),以及接收網(wǎng)絡(luò)上其它節(jié)點(diǎn)傳送來的信息。can總線單個(gè)節(jié)點(diǎn)的軟件設(shè)計(jì)主要包括三大部分:can節(jié)點(diǎn)初始化、信息的發(fā)送和信息的接收。設(shè)計(jì)時(shí)將can初始化、發(fā)送信息(數(shù)據(jù)和遠(yuǎn)程幀)設(shè)計(jì)為子程序,發(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è)置驗(yàn)收代碼寄存器
out temp,dress_can
splk #01h,canflag
out temp,data_can
splk #5, temp ;設(shè)置驗(yàn)收屏蔽寄存器
out temp,dress_can
splk #000h, temp
out temp,data_can
splk #31, temp ;設(shè)置時(shí)鐘分頻寄存器(cdr)
out temp,dress_can
splk #48h, temp ;選擇basiccan模式,關(guān)
;閉時(shí)鐘(clkout)
out temp,data_can
splk #6, temp ;設(shè)置總線定時(shí)寄存器0
out temp,dress_can
splk #0c4h, temp ;tscl=10tclk,tclk為xtal
;的頻率周期(20mhz)
out temp,data_can ;不同總線控制器的時(shí)鐘
;振蕩器間的相對(duì)偏移為0
splk #7, temp ;設(shè)置總線定時(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é)點(diǎn)信息的發(fā)送,發(fā)送時(shí)只需將待發(fā)送的信息按特定格式組合成一幀,送入sja1000發(fā)送緩存區(qū)中,然后啟動(dòng)sja1000發(fā)送即可,當(dāng)然在往sja1000發(fā)送緩存區(qū)送信息之前必須先作一些查詢判斷,直到空閑時(shí)才能發(fā)送,發(fā)送子程序分發(fā)送遠(yuǎn)程幀子程序和數(shù)據(jù)幀子程序兩種,遠(yuǎn)程幀無數(shù)據(jù)場(chǎng);
(3) 接收子程序
負(fù)責(zé)單節(jié)點(diǎn)信息的接收以及其它情況處理。當(dāng)can控制器接收到信息后向微控制器發(fā)出中斷響應(yīng)信號(hào),微控制器在中斷程序中將接收到的信息讀入,再根據(jù)信息來控制節(jié)點(diǎn)的動(dòng)作。接收子程序比發(fā)送子程序要復(fù)雜一些,因?yàn)樵谔幚斫邮招畔⒖赡苁侵T如總線脫離、錯(cuò)誤報(bào)警、接收溢出等中斷,要對(duì)其進(jìn)行處理。
5 結(jié)束語
目前,該網(wǎng)絡(luò)監(jiān)控系統(tǒng)已經(jīng)在廣東某集團(tuán)公司18kva-6*3kva可熱插拔模塊化不間斷電源上使用,經(jīng)過了運(yùn)行和調(diào)試。驗(yàn)證了使用can總線技術(shù)使系統(tǒng)布線更加靈活,具有通信質(zhì)量可靠、響應(yīng)速度快、實(shí)時(shí)性好的特點(diǎn),滿足整個(gè)系統(tǒng)可熱插拔的要求。
參考文獻(xiàn)
[1] 瞿 坦. 計(jì)算機(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é)報(bào),2002,16(1):54.
作者簡(jiǎn)介
謝紅勝(1975-) 男 碩士研究生 主要從事于ups的并聯(lián)及其網(wǎng)絡(luò)監(jiān)控技術(shù)研究。