摘 要:本文針對(duì)多通道多微機(jī)電視監(jiān)控系統(tǒng)中實(shí)時(shí)通信的問題,利用單片機(jī)技術(shù)以及局域網(wǎng)構(gòu)成原理,研制了以SJA1000為CAN控制器、以單片機(jī)為網(wǎng)絡(luò)節(jié)點(diǎn)核心器件的多主式現(xiàn)場(chǎng)總線局域網(wǎng)。實(shí)踐證明,CAN總線技術(shù)的應(yīng)用解決了系統(tǒng)的實(shí)時(shí)通信問題,體現(xiàn)了CAN總線技術(shù)的優(yōu)越性。
關(guān)鍵詞:實(shí)時(shí)通信,SJA1000,CAN總線
Abstract:According to the problem in the multichannel and multicomputer TV supervisory system,this article discusses how to use the Single Chip Microcomputer and the theory of area network to investigate the CAN industrial network with SJA1000 and the Single ChipMicrocomputer.Fact shows that it solves the real-time problem of system and it also shows the superioroty the CAN bus as one of the field bus.
Keyword:real-time , SJA1000,CAN industrial network
隨著計(jì)算機(jī)技術(shù),通信技術(shù)和電視技術(shù)的發(fā)展,在許多場(chǎng)合,為了監(jiān)視和控制現(xiàn)場(chǎng)的運(yùn)行狀況,提出了電視監(jiān)控系統(tǒng),用以實(shí)施集中控制,尤其是控制點(diǎn)與現(xiàn)場(chǎng)較遠(yuǎn),需要的監(jiān)視點(diǎn)比較多時(shí),控制點(diǎn)和各個(gè)監(jiān)視點(diǎn)形成多微機(jī)系統(tǒng)。隨著現(xiàn)場(chǎng)總線技術(shù)的發(fā)展,CAN總線以其獨(dú)特的優(yōu)點(diǎn),開始登上舞臺(tái)。CAN總線的傳輸距離可以達(dá)到10km,數(shù)據(jù)傳輸速率高達(dá)1Mbit/s,很好的解決了本電視監(jiān)控系統(tǒng)中的要求傳輸距離遠(yuǎn)、實(shí)時(shí)性強(qiáng)的問題。同時(shí),CAN總線在報(bào)文傳送中不包含目的地址,以全網(wǎng)廣播為基礎(chǔ),各接收站根據(jù)報(bào)文中反映數(shù)據(jù)性質(zhì)的標(biāo)識(shí)過濾報(bào)文[1]。這種報(bào)文中不含目的地址的報(bào)文格式縮短了幀的長(zhǎng)度,減少了傳輸中地址匹配的麻煩,提高了傳輸速率。而這種全網(wǎng)廣播形式,使各個(gè)節(jié)點(diǎn)站沒有主從之分,可以平等的向其他節(jié)點(diǎn)發(fā)送報(bào)文,減輕了將作為主節(jié)點(diǎn)的節(jié)點(diǎn)負(fù)擔(dān),也避免了主從機(jī)之間的通信。這種多主式總線局域網(wǎng)實(shí)現(xiàn)了本電視監(jiān)控系統(tǒng)的實(shí)時(shí)、較高數(shù)據(jù)要求的系統(tǒng)功能。
1 多通道多微機(jī)電視監(jiān)控系統(tǒng)簡(jiǎn)介
如圖1所示,本系統(tǒng)設(shè)有64臺(tái)彩色攝像機(jī),每臺(tái)攝像機(jī)配有可自動(dòng)調(diào)整的鏡頭和云臺(tái),每個(gè)單元作為CAN總線網(wǎng)絡(luò)的一個(gè)節(jié)點(diǎn),64個(gè)節(jié)點(diǎn)構(gòu)成被控單元。這64臺(tái)設(shè)備分布在室外、室內(nèi)、廣場(chǎng)、站臺(tái)等場(chǎng)所。其中每一個(gè)節(jié)點(diǎn)以主控室為中心,通過CAN總線和64條視頻電纜與主控制室的上位機(jī)連接。
[align=center]

圖1 多通道多微機(jī)電視監(jiān)控系統(tǒng)組成[/align]
主控制室為系統(tǒng)控制中心,在CAN總線網(wǎng)絡(luò)中充當(dāng)上位機(jī)的角色。本系統(tǒng)雖為多主式控制系統(tǒng),但需要一個(gè)總控制中來對(duì)各個(gè)子控制室進(jìn)行協(xié)調(diào)和管理。主控制室主要由一個(gè)帶有CAN接口的上位機(jī)構(gòu)成,還有一個(gè)用彩色監(jiān)視器組成的電視屏幕墻,作為系統(tǒng)的總監(jiān)視。其余個(gè)控制臺(tái)設(shè)1太彩色監(jiān)視器作為輔助監(jiān)視。
本系統(tǒng)可連接4個(gè)獨(dú)立的控制臺(tái)終端,每個(gè)控制臺(tái)終端與彩色攝像機(jī)和云臺(tái)的角色一樣,構(gòu)成一個(gè)CAN總線網(wǎng)絡(luò)節(jié)點(diǎn)。4個(gè)控制臺(tái)形成主控單元,但必須聽從上位機(jī)主控室的協(xié)調(diào)。它是編程,設(shè)定攝像機(jī)控制的發(fā)令終端。4個(gè)控制臺(tái)分別設(shè)在各樓的主管部門,與主調(diào)度室最遠(yuǎn)可達(dá)1km。
2 通信電路設(shè)計(jì)原理
2.1 云臺(tái)、鏡頭控制器
云臺(tái)有上、下、左、右旋轉(zhuǎn)控制,是通過控制2臺(tái)電機(jī)正反轉(zhuǎn)來實(shí)現(xiàn)的,鏡頭有光圈大、小,焦距遠(yuǎn)、近,變倍大、小6個(gè)通電和斷點(diǎn)開關(guān)控制。此外,還有雨刷動(dòng)作控制。
如圖2所示,89C51作為CPU控制器,TXD和RXD兩條通訊線分別經(jīng)過光隔和CAN控制器連接,通過CAN總線收發(fā)器連接到CAN總 線上,完成與帶有CAN接口卡的上位機(jī)的連接電路,使用CAN總線協(xié)議。另外,2732是一個(gè)EPROM,存放控制程序。P1口P3口作為11個(gè)開關(guān)量。P1口除了作為8個(gè)開關(guān)量輸入輸出以外,還用2個(gè)74LS244實(shí)現(xiàn)8位撥碼開關(guān)作為輸入64個(gè)控制器的硬件序號(hào)設(shè)定。
[align=center]

圖2 云臺(tái)、鏡頭控制器電路原理圖[/align]
2.2控制臺(tái)電路設(shè)計(jì)
控制臺(tái)電路基本有以下三部分組成:
1. 鍵盤接口。采用行輸出列輸入程序?qū)崟r(shí)掃描方案。74LS373作為行輸出接口,74LS244作為列出入接口。按鍵分為三類:0~9為數(shù)字鍵;一類功能鍵,包括動(dòng)作、執(zhí)行、左移、右移、鎖定、循環(huán)、方式、讀出、時(shí)間等功能;另一類就是攝象機(jī)動(dòng)作控制鍵,包括了上、下、左、右、光圈大、小,焦距遠(yuǎn)、近,變倍大、小,雨刷動(dòng)等。
2. LED數(shù)碼顯示接口。
3. 撥碼開關(guān)接口。參考圖2。
4. 發(fā)光二極管顯示燈。作為運(yùn)行狀態(tài)指示。
5. CAN控制單元接口。這是一個(gè)與云臺(tái)、鏡頭控制電路中相同功能的接口。
2.3主控制室電路設(shè)計(jì)
從圖1可知,該系統(tǒng)所形成網(wǎng)絡(luò)結(jié)構(gòu)為分布式網(wǎng)絡(luò)。接口電路有兩種接口,視頻矩陣切換控制電路和多路控制的串行接口——-CAN總線。主控室的上位機(jī)通過CAN接口卡(以SJA1000為控制器)實(shí)現(xiàn)與下位機(jī)節(jié)點(diǎn)的連接。視頻矩陣切換控制電路主要是接收攝像機(jī)與云臺(tái)傳送過來的視頻圖像,并將視頻圖像輸出到各個(gè)子控制室。由于視頻信號(hào)要經(jīng)過CAN總線的數(shù)字通道傳輸,必須通過A/D、D/A轉(zhuǎn)換,這樣增加了整個(gè)系統(tǒng)的設(shè)計(jì)復(fù)雜度。所以,在進(jìn)行視頻信號(hào)的傳輸時(shí),采用了專用模擬通道——-視頻電纜。為提高其工作效率,采用DS87C520單片機(jī)來控制DG884芯片進(jìn)行圖像信號(hào)切換。
1. CAN接口卡
這是一個(gè)位于上位機(jī)的接口卡,用來連接下位機(jī)的單片機(jī)與上位機(jī)的PC機(jī)。這個(gè)卡采用的控制器收發(fā)器均和云臺(tái)、鏡頭控制器電路以及控制器電路中的一樣,下面詳細(xì)的介紹這個(gè)接口的典型電路。
該接口電路主要微控制器89C52、PHILIPS公司的CAN控制器SJA1000及收發(fā)器PCA82C250組成。CAN 控制器功能像是一個(gè)時(shí)鐘源復(fù)位信號(hào),由外部復(fù)位電路產(chǎn)生。SJA1000 的片選由微控制器的P2.7口控制[3]。
[align=center]

圖3 CAN控制器接口連接圖[/align]
PCA82C250與CAN總線接口部分采用了一定的安全和抗干擾措施。82C250的CANH和CANL引腳各自通過一個(gè)5歐姆的電阻與CAN總線相連電阻可起到一定的限流作用,保護(hù)82C250免受過流的沖擊。CANL何CANH與地之間并聯(lián)了兩個(gè)30P的小電容可以起到濾除總線上的高頻干擾和一定的放電磁輻射的能力。另外,在兩根CAN總線接入端與地之間分別反接了一個(gè)保護(hù)二極管,當(dāng)CAN總線有較高的負(fù)電壓時(shí)通過二極管的短路起到一定的過壓保護(hù)作用。82C250的RS腳上接有一個(gè)斜率電阻,斜率電阻大小可根據(jù)通信速度適當(dāng)調(diào)整一般在16K-140K之間。
2. 視頻切換矩陣電路設(shè)計(jì)
主控制室中可接視頻64路,視頻輸出16通道,而每一個(gè)輸出通道均可接入64路中任一路輸入。將這個(gè)矩陣分為8塊標(biāo)準(zhǔn)的8入16出的切換板,只加一個(gè)8選1的板號(hào)即可,每塊板上有4片DG884電路,每片DG884的視頻輸入信號(hào)IN1~I(xiàn)N8構(gòu)成8個(gè)視頻輸入信號(hào);每個(gè)DG884的視頻輸出信號(hào)OU1~OUT4各自獨(dú)立輸出,構(gòu)成每板16通道輸出。8塊輸入切換板的16通道對(duì)應(yīng)輸出通道均相連,則構(gòu)成了64路輸入16通道輸出的切換矩陣。
[align=center]

圖4 DG884邏輯圖[/align]
DG884是一個(gè)數(shù)碼型可選擇的8路輸入4路輸出單片矩陣開關(guān)切換集成電路,其內(nèi)部功能如圖4。信號(hào)通道由矩陣?yán)锏腡形開關(guān)和串聯(lián)于每個(gè)輸出的附加低阻值開關(guān)組成。
DG884與DS87C520單片機(jī)接口的數(shù)字信號(hào)中,RESET用作電源復(fù)位,它把現(xiàn)存項(xiàng)目鎖定器的資料去除,并使所有輸出關(guān)斷。RESET只對(duì)現(xiàn)存項(xiàng)目地址鎖定器有效,而對(duì)存放在另一組設(shè)定資料的鎖存器是無效的。A2A1A0為8路選入地址,A3=1時(shí)為導(dǎo)通,A3=0時(shí)為關(guān)斷。B1B0為輸出通道選擇地址,WR為寫信號(hào),置低后再返回高,這一動(dòng)作重復(fù)3次,可將4個(gè)通道設(shè)定。但是,內(nèi)部邏輯禁止把兩個(gè)不同輸入連到同一個(gè)輸出地址上。當(dāng)存入4個(gè)輸入輸出通路的資料后,只要把SALVO變低后再返回高,現(xiàn)存項(xiàng)目鎖存器就把舊資料去除并載入了新的設(shè)定信息。
3 軟件設(shè)計(jì)
本系統(tǒng)的軟件設(shè)計(jì)主要集中在信息的傳遞上,以CAN2.0協(xié)議為基礎(chǔ),自定義通信協(xié)議,采用模塊化設(shè)計(jì)。
3.1用戶協(xié)議
在動(dòng)作幀中,000是幀號(hào),用來識(shí)別幀的類型。根據(jù)驗(yàn)收濾波器中的內(nèi)容來選擇傳送幀的目的地。這利用了CAN2.0協(xié)議的特點(diǎn)。動(dòng)作包括了對(duì)攝像機(jī)的動(dòng)作控制命令和對(duì)圖像切換的控制命令,根據(jù)前面的內(nèi)容而定。
切換幀中,001為幀號(hào)。工作方式有四種:00為定點(diǎn);01為循環(huán);10為四畫面循環(huán)[4]。
[align=center]

圖5 用戶協(xié)議[/align]
數(shù)據(jù)部分主要根據(jù)工作方式的不同,來確定所傳輸?shù)耐ǖ捞?hào)、定點(diǎn)路號(hào)、循環(huán)路號(hào)等等。
時(shí)間幀中,010為幀號(hào)。循環(huán)時(shí)間是指畫面的循環(huán)時(shí)間[4]。
在CAN系統(tǒng)中,數(shù)據(jù)在節(jié)點(diǎn)間發(fā)送和接收以四種不同類型的幀出現(xiàn)和控制,其中:數(shù)據(jù)幀將數(shù)據(jù)由發(fā)送器傳至接收器;遠(yuǎn)程幀由節(jié)點(diǎn)發(fā)送,以請(qǐng)求發(fā)送具有相同標(biāo)志符的數(shù)據(jù)幀;出錯(cuò)幀可由任何節(jié)點(diǎn)發(fā)送,以檢測(cè)總線錯(cuò)誤,而超載幀用于提供先前和后續(xù)數(shù)據(jù)幀或遠(yuǎn)程幀之間的附加延時(shí)。另外,數(shù)據(jù)幀和遠(yuǎn)程幀以幀間空間隔同先前幀隔開。
有了完整的底層和上層協(xié)議,就可以設(shè)計(jì)本系統(tǒng)的軟件部分。主要集中在信息傳送上,采用模塊化設(shè)計(jì)。以下具體描述信息傳遞的程序設(shè)計(jì),其他的部分讀者可參閱參考文獻(xiàn)中的涉及論文[4]。
3.2軟件框圖
1. 主程序模塊
主程序模塊如圖6所示,對(duì)系統(tǒng)進(jìn)行統(tǒng)一的管理和調(diào)度。
[align=center]

圖6 主程序框圖[/align]
2. 初始化模塊
在這個(gè)模塊中主要是對(duì)系統(tǒng)的初始化,其中包括了CAN控制器SJA1000、DG884等的初始化。在這里詳細(xì)的介紹SJA1000的初始化程序流程。由于獨(dú)立的CAN控制器SJA1000有兩種不同的工作模式BasicCan 模式和PeliCan模式。上電時(shí)BasicCan模式是默認(rèn)工作模式。PeliCan是新的工作模式,它能夠處理所有的CAN2.0定義的幀了類型。還提供一些增強(qiáng)功能,本系統(tǒng)采用PeliCan模式。在進(jìn)行信息傳遞時(shí),首先必須對(duì)SJA1000進(jìn)行初始化,這對(duì)SJA1000是一項(xiàng)很重要的工作。分別對(duì)其模式寄存器、時(shí)鐘分頻寄存器、接收代碼寄存器、接收屏蔽寄存器、總線定時(shí)寄存器0、1、輸出控制寄存器、發(fā)送錯(cuò)誤計(jì)數(shù)器、錯(cuò)誤代碼捕捉寄存器及中斷使能寄存器按照PeliCan的模式進(jìn)行初始化。接下來才能進(jìn)行信息的接收和發(fā)送。
3. 發(fā)送信息和接收信息模塊
根據(jù)CAN協(xié)議的約定,信息的發(fā)送和接收由SJA1000初始化完成。如圖7和圖8。
[align=center]

圖7 發(fā)送信息模塊 圖8 接收信息模塊[/align]
當(dāng)SJA1000初始化完成后,SJA1000進(jìn)入了工作模式??梢宰x狀態(tài)寄存器中的內(nèi)容,判斷其中的發(fā)送完成狀態(tài)位、接收狀態(tài)位、發(fā)送緩沖器狀態(tài)位是否符合允許發(fā)送的前提條件。當(dāng)狀態(tài)寄存器中的內(nèi)容完全符合發(fā)送數(shù)據(jù)的要求,將要發(fā)送的數(shù)據(jù)放入到發(fā)送緩沖區(qū),然后將命令寄存器中的“發(fā)送請(qǐng)求”標(biāo)志置位標(biāo)志控制。本系統(tǒng)中,采用中斷發(fā)送。
收到的信息放到接受緩沖器中??梢园l(fā)送給主控制器的信息,有狀態(tài)寄存器地接受緩沖器狀態(tài)標(biāo)志“RBS”標(biāo)出和接收中斷標(biāo)志“RI”標(biāo)出。主控制器會(huì)將這條信息發(fā)送到本地的信息存儲(chǔ)器,然后釋放接受緩沖器并對(duì)信息進(jìn)行操作。接收過程采用查詢接受的方式。
4. 幀信息處理模塊[2]
主要是從緩沖區(qū)中把各幀的信息存入。從用戶協(xié)議可知,幀有動(dòng)作幀、切換幀和時(shí)間幀三種類型。所以,在這個(gè)模塊中,根據(jù)判斷接收到的是哪一種的幀來具體執(zhí)行相應(yīng)的內(nèi)容。
5. 圖象切換模塊[2]
按通道順序逐個(gè)的切換。
4 結(jié)束語
本系統(tǒng)采用CAN工業(yè) 網(wǎng)真正實(shí)現(xiàn)了實(shí)時(shí)通訊,發(fā)揮了CAN總線的優(yōu)勢(shì)。CAN作為多主總線,傳輸速率可以達(dá)到1Mbps[1],這個(gè)速度很好的滿足了工業(yè)控制的需要,也提高了本系統(tǒng)的整體性能。同時(shí)CAN的網(wǎng)絡(luò)節(jié)點(diǎn)不受限制,最多可以掛接110個(gè)節(jié)點(diǎn)[1],方便了大型工業(yè)控制網(wǎng)的組建,在傳輸距離上,最遠(yuǎn)可以傳輸10Km[1],達(dá)到了遠(yuǎn)距離傳輸?shù)囊?實(shí)踐證明,CAN總線網(wǎng)通訊效率高,準(zhǔn)確度高,值得在工業(yè)控制系統(tǒng)中推廣。
參考文獻(xiàn)
[1] 鄔寬明. CAN總線原理和應(yīng)用系統(tǒng)設(shè)計(jì).北京航空航天大學(xué)出版社.1996
[2] 馬崇良 王金海 .多通道多微機(jī)電視監(jiān)控系統(tǒng). 天津紡織工學(xué)院學(xué)報(bào) 1997第16卷第4期
[3] SJA1000用戶指南.Philips Com.
[4] 王金海 馬崇良.多路視頻信號(hào)交叉點(diǎn)開關(guān)器的計(jì)算機(jī)控制研究.天津紡織工學(xué)院學(xué)報(bào) 1997 第16卷第4期