摘 要:提出了一種基于CAN總線的集散型火災(zāi)報(bào)警控制系統(tǒng)的設(shè)計(jì)方案,系統(tǒng)以AT89C51單片機(jī)為節(jié)點(diǎn)控制器,MCP2510為總線控制器,MCP2551為總線收發(fā)器。文章主要介紹了AT89C51與MCP2510的SPI接口實(shí)現(xiàn)方法,以及MCP2510的初始化方法。
關(guān)鍵詞:CAN現(xiàn)場(chǎng)總線 MCP2510 集中機(jī) 區(qū)域機(jī)
隨著經(jīng)濟(jì)建設(shè)的發(fā)展,社會(huì)對(duì)火災(zāi)報(bào)警控制系統(tǒng)的規(guī)模的要求越來(lái)越大,為了適應(yīng)市場(chǎng)的需要,筆者利用CAN現(xiàn)場(chǎng)總線技術(shù),設(shè)計(jì)出了一種集散型火災(zāi)報(bào)警控制系統(tǒng),該系統(tǒng)結(jié)構(gòu)靈活、使用方便,可滿足大、中、小各種規(guī)模的火災(zāi)報(bào)警及消防控制的要求。CAN(Controller Area Network)即控制器區(qū)域網(wǎng)——一種有效的支持分布式控制和實(shí)時(shí)控制的串行通訊網(wǎng)絡(luò),由于其高性能、高可靠行,及獨(dú)特的設(shè)計(jì),越來(lái)越受到人們的重視,其總線規(guī)范已被ISO國(guó)際標(biāo)準(zhǔn)化組織制定為國(guó)際標(biāo)準(zhǔn),并被公認(rèn)為是最有前途的現(xiàn)場(chǎng)總線之一。本文主要介紹由MCP2510與MCP2551組成的CAN現(xiàn)場(chǎng)總線的在集散型火災(zāi)報(bào)警控制系統(tǒng)中的應(yīng)用。
1、系統(tǒng)組成與工作原理概述
本文提出的基于CAN現(xiàn)場(chǎng)總線的集散型火災(zāi)報(bào)警控制系統(tǒng)的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,每個(gè)節(jié)點(diǎn)都以AT89C51單片機(jī)為節(jié)點(diǎn)控制器,MCP2510為總線控制器,MCP2551為總線收發(fā)器,其中,與控制臺(tái)工作站相連接的節(jié)點(diǎn)被稱(chēng)為集中機(jī),其余為區(qū)域機(jī)。在集中機(jī)中,所謂控制臺(tái)工作站,就是一臺(tái)PC機(jī),單片機(jī)通過(guò)外部串行接口與控制臺(tái)工作站交換信息。各個(gè)區(qū)域機(jī)分布在不同的地理位置上,獨(dú)立地執(zhí)行一個(gè)完整的任務(wù)。在本文系統(tǒng)中,一個(gè)區(qū)域機(jī)通過(guò)一種專(zhuān)門(mén)設(shè)計(jì)的探測(cè)器總線可以連接感煙、感光、感溫等各種火警探測(cè)器,還可以借助適配器控制諸如噴水閥、卷簾門(mén)等各種消防設(shè)備以及各種聲光報(bào)警設(shè)備,探測(cè)器總線上的設(shè)備通稱(chēng)為前端設(shè)備。利用CAN通信技術(shù)將區(qū)域機(jī)聯(lián)網(wǎng),管理人員在集中機(jī)上就可以觀察各個(gè)部分的情況,便于管理和檢測(cè),隨時(shí)可以了解到各區(qū)域機(jī)運(yùn)行的是否正常,有無(wú)報(bào)警發(fā)生,也可以使各個(gè)區(qū)域機(jī)通過(guò)信息交互,實(shí)現(xiàn)資源共享,聯(lián)防控制。每個(gè)區(qū)域機(jī)都是一個(gè)獨(dú)立的基本報(bào)警控制單元,其功能與單獨(dú)使用時(shí)的情況完全一樣,它們從本區(qū)域機(jī)的探測(cè)器上采集數(shù)據(jù),如有警情出現(xiàn),在啟動(dòng)本區(qū)的有關(guān)消防設(shè)備的同時(shí),通過(guò)CAN總線將報(bào)警信號(hào)傳送給集中機(jī),集中機(jī)再?zèng)Q定需要起動(dòng)的由其它區(qū)域機(jī)管轄的有關(guān)消防設(shè)備,并通過(guò)CAN總線發(fā)出聯(lián)動(dòng)命令。另外,由于CAN總線是基于報(bào)文的,總線上的節(jié)點(diǎn)可以做到即插即用,因而系統(tǒng)的可擴(kuò)展性比較好;并且,增刪CAN總線上除集中機(jī)以外的任何一個(gè)節(jié)點(diǎn),不會(huì)對(duì)其它的節(jié)點(diǎn)造成任何影響。
圖1中的MCP2510是Microchip公司為簡(jiǎn)化CAN總線的接口應(yīng)用而專(zhuān)門(mén)設(shè)計(jì)的一種獨(dú)立CAN控制器芯片【3】,支持 CAN協(xié)議2.0A/2.0B,最大可編程波特率為1Mbps;MCP2551是Microchip公司生產(chǎn)的可容錯(cuò)的高速CAN總線收發(fā)器芯片【4】,支持1Mbps的運(yùn)行速率,可連接高達(dá)112個(gè)節(jié)點(diǎn),適合12V和24V系統(tǒng),管腳特性與MCP2510完全兼容。
2 硬件電路與SPI接口技術(shù)
圖2是本文系統(tǒng)節(jié)點(diǎn)進(jìn)行CAN通信的硬件電路圖,在原理圖中,總線控制器MCP2510與總線收發(fā)器MCP2551直接相連,因?yàn)樗鼈兊墓苣_是完全兼容的,另外,考慮到系統(tǒng)總線速率比較低,所以使MCP2551的斜率電阻輸入引腳RS懸空,選擇最小斜率,這樣,既可將RFI抑制到最小,又可簡(jiǎn)化線路設(shè)計(jì)。下面重點(diǎn)說(shuō)明一下MCP2510與AT89C51的接口技術(shù)。
[align=center]
圖2 節(jié)點(diǎn)進(jìn)行CAN通信的硬件接口電路[/align]
MCP2510面向單片機(jī)有1個(gè)高速SPI接口(5Mhz),該接口由片選控制輸入CS、移位脈沖輸入SCK、串行數(shù)據(jù)輸入S I和輸出SO等4個(gè)引腳組成。AT89C51不具備標(biāo)準(zhǔn)的SPI接口,但是,可以利用UART接口與SPI接口通信。圖3為AT89C51的UART接口工作在方式0,即移位寄存器方式時(shí)的工作時(shí)序圖【2】。AT89C51的UART有4種工作方式,按方式0工作時(shí),串行數(shù)據(jù)從RXD輸入或輸出,TXD輸出移位脈沖,每次發(fā)送或接收8位數(shù)據(jù),波特率固定為時(shí)鐘頻率的1/12,即1個(gè)位周期對(duì)應(yīng)1個(gè)機(jī)器周期,1個(gè)機(jī)器周期由12個(gè)時(shí)鐘周期組成,等分為6個(gè)狀態(tài)(S1~S6),每個(gè)狀態(tài)又等分為2個(gè)相位P1、P2,因此1個(gè)機(jī)器周期的12個(gè)時(shí)鐘周期可記為S1P1、S1P2、S2P1、……、S6P2。TXD輸出的移位脈沖在每個(gè)機(jī)器周期的S3、S4和S5期間為低電平,而在其余時(shí)間為高電平。發(fā)送時(shí),每個(gè)機(jī)器周期的S6P2輸出數(shù)據(jù),數(shù)據(jù)有效時(shí)間完全覆蓋了TXD輸出脈沖的負(fù)半周,顯然,無(wú)論是在TXD的上升沿,還是下降沿,外設(shè)都可從RXD輸入有效數(shù)據(jù)。接收時(shí),每個(gè)機(jī)器周期的S5P2輸入數(shù)據(jù),顯然,外設(shè)如果在TXD的下降沿輸出數(shù)據(jù),單片機(jī)就可接收到有效數(shù)據(jù)。因?yàn)镸CP2510的SPI接口是在SCK的上升沿輸入數(shù)據(jù),在SCK的下降沿輸出數(shù)據(jù),所以,在電路圖中,可以將TXD直接作為SCK的輸入信號(hào)。MCP2510的SPI接口在讀過(guò)程中,首先接收單片機(jī)發(fā)出的讀命令和地址,這時(shí),輸出信號(hào)線SO處于高祖態(tài),之后,在輸出數(shù)據(jù)時(shí),輸入信號(hào)線SI的狀態(tài)可為任意值。而在寫(xiě)過(guò)程中,SO始終處于高阻態(tài)。一個(gè)寫(xiě)過(guò)程或讀過(guò)程的啟動(dòng)或結(jié)束,都是由片選信號(hào)CS控制的。根據(jù)SPI接口的這一工作機(jī)理,在電路圖中,將MCP2510的SI和SO連接在一起,形成一個(gè)雙向信號(hào)線,再與AT89C51的準(zhǔn)雙向數(shù)據(jù)線RXD連接在一起,實(shí)驗(yàn)結(jié)果證明,MCP2510與AT89C51的這種連接方式是完全正確的。因?yàn)樵趩纹瑱C(jī)應(yīng)用領(lǐng)域,51系列單片機(jī)一直是主流產(chǎn)品,所以將其應(yīng)用于CAN總線系統(tǒng),無(wú)疑可以降低成本,縮短開(kāi)發(fā)周期。
為了實(shí)現(xiàn)與MCP2510的SPI接口交互,單片機(jī)的UART接口選擇方式0,采用12MHz晶振作為單片機(jī)的時(shí)鐘頻率,在方式0下,波特率固定為1Mbps。在圖2所示的硬件電路的支持下,AT89C51就可按照普通移位寄存器的方式與MCP2510進(jìn)行數(shù)據(jù)交互,對(duì)MCP2510進(jìn)行寫(xiě)操作和讀操作的匯編語(yǔ)言子程序從略。值得指出的是,因?yàn)镾PI傳輸數(shù)據(jù)的順序是先高位后低位,與UART傳輸數(shù)據(jù)的順序相反,因此,編寫(xiě)單片機(jī)與MCP2510的接口程序時(shí),對(duì)MCP2510的控制字、狀態(tài)字以及寄存器地址,要進(jìn)行二進(jìn)制到排處理。例如,MCP2510的接收緩沖寄存器RXB0的首地址是01010110B,單片機(jī)讀其中的內(nèi)容時(shí),寫(xiě)入單片機(jī)的串口緩沖寄存器SBUF的地址值應(yīng)該是01101010B。
3 MCP2510初始化
MCP2510的初始化包括設(shè)定可編程引腳功能、總線波特率以及接收過(guò)濾器與屏蔽器,以下主要介紹總線波特率以及接收過(guò)濾器與屏蔽器的初始化。
3.1 波特率初始化
MCP2510內(nèi)含的波特率發(fā)生器由可編程預(yù)分頻器、固定2分頻器和位定時(shí)器級(jí)連而成,它使設(shè)計(jì)者可以方便地選擇所需要的任何波特率。在位定時(shí)器中,MCP2510將一個(gè)位周期依次分割為同步段、傳播段、相位緩沖段1和相位緩沖段2等4個(gè)時(shí)間段,每個(gè)時(shí)間段的長(zhǎng)度都是輸入信號(hào)周期TQ的整數(shù)倍,其中同步段固定為1TQ,其余3個(gè)時(shí)間段的長(zhǎng)度都是可編程的。所謂波特率初始化,就是設(shè)置可編程預(yù)分頻器和位定時(shí)器各可編程時(shí)間段的值,使其滿足波特率的需要。
根據(jù)CAN技術(shù)協(xié)議,波特率為1Mbps時(shí),通信距離為40m,波特率為5Kbps時(shí),通信距離最遠(yuǎn)可以達(dá)到10Km【1】??紤]到本文系統(tǒng)既可用作一個(gè)高層樓宇的火災(zāi)報(bào)警控制網(wǎng)絡(luò),又可用作一個(gè)單位內(nèi)部多個(gè)倉(cāng)庫(kù)、車(chē)間等的火災(zāi)報(bào)警控制網(wǎng)絡(luò),所以通信距離應(yīng)該在數(shù)千米以上,而所要傳輸?shù)臄?shù)據(jù)量不大,故可以選擇較低的波特率。在實(shí)際應(yīng)用中,筆者選擇波特率為8Kbps。
本文系統(tǒng)選擇12Mhz晶體振蕩器為MCP2510提供時(shí)鐘信號(hào)。根據(jù)位定時(shí)器中各個(gè)時(shí)間段的長(zhǎng)度必須滿足的約束條件,初始化傳播段寄存器PRSEG=3,相位緩沖段1寄存器PHSEG1=4,相位緩沖段2寄存器PHSEG2=4;然后初始化預(yù)分頻器BRP=49。從而可得總分頻系數(shù)為(49+1)×2×[1+(3+1)+(4+1)+(4+1)]=1500,最終獲得8Kbps的波特率。
3.2 過(guò)濾器與屏蔽器初始化
MCP2510具有完善的總線爭(zhēng)用功能,可用于分布式系統(tǒng),但是,在火災(zāi)報(bào)警控制系統(tǒng)中,因?yàn)榧袡C(jī)擔(dān)負(fù)著對(duì)區(qū)域機(jī)的監(jiān)管任務(wù),所以本文系統(tǒng)采用了集中-分散控制方式,集中機(jī)不斷地巡回查詢(xún)區(qū)域機(jī),在工作臺(tái)上隨時(shí)反映區(qū)域機(jī)工作的情況,為工作人員提供維護(hù)設(shè)備的依據(jù)。
MCP2510支持標(biāo)準(zhǔn)幀、擴(kuò)展幀和遠(yuǎn)程幀,數(shù)據(jù)段長(zhǎng)度為0-8個(gè)字節(jié)。器件對(duì)CAN總線上的數(shù)據(jù)接收是通過(guò)2個(gè)接收緩沖器、6個(gè)接收過(guò)濾器和2個(gè)接收屏蔽器的組合來(lái)實(shí)現(xiàn)的。CAN總線上的幀只有至少滿足一個(gè)接收過(guò)濾器的條件才可被接收。為了說(shuō)明過(guò)濾器與屏蔽器的初始化方法,這里首先介紹報(bào)文幀。本文系統(tǒng)只使用標(biāo)準(zhǔn)數(shù)據(jù)幀進(jìn)行數(shù)據(jù)傳輸。標(biāo)準(zhǔn)數(shù)據(jù)幀的長(zhǎng)度為44+8n位,其中11位ID段在本文系統(tǒng)中被分為兩部分,高7位用來(lái)表示區(qū)域機(jī)的邏輯地址碼,整個(gè)系統(tǒng)允許接入的區(qū)域機(jī)最多為50個(gè),低4位用來(lái)表示報(bào)文類(lèi)型碼。集中機(jī)發(fā)送的報(bào)文幀如表1所示,區(qū)域機(jī)發(fā)送的報(bào)文幀如表2所示。8n位數(shù)據(jù)段可有可無(wú),在表1中,只有選呼聯(lián)動(dòng)報(bào)文含有數(shù)據(jù)段,表示請(qǐng)求聯(lián)動(dòng)的設(shè)備號(hào),在表2中,只有請(qǐng)求點(diǎn)名報(bào)文不含數(shù)據(jù)段,其余報(bào)文必須至少含有1個(gè)字節(jié)數(shù)據(jù),用來(lái)表示區(qū)域機(jī)的邏輯地址碼,其余數(shù)據(jù)用來(lái)表示故障、報(bào)警的探測(cè)器號(hào)和設(shè)備號(hào),或區(qū)域機(jī)配置。
表1:集中機(jī)發(fā)送的報(bào)文幀
表2:區(qū)域機(jī)發(fā)送的報(bào)文幀
表1中的xx xxxx表示集中機(jī)要訪問(wèn)的區(qū)域機(jī)的邏輯地址碼。表1的報(bào)文是發(fā)送給區(qū)域機(jī)的,表2的報(bào)文是發(fā)送給集中機(jī)的,報(bào)文能否被接收,要由MCP2510的過(guò)濾器來(lái)決定,因此,初始化時(shí),集中機(jī)按從上到下的順序?qū)⒈?中的數(shù)據(jù)依次寫(xiě)入MCP2510的過(guò)濾器RXF1~RXF5,區(qū)域機(jī)在用本機(jī)的邏輯地址碼代替表1中的xx xxxx之后,也按從上到下的順序?qū)⒈?中的數(shù)據(jù)依次寫(xiě)入MCP2510的過(guò)濾器RXF1~RXF5,未曾用到的過(guò)濾器RXF0被設(shè)置為全“1”,使其不接收總線上的任何有效報(bào)文。初始化時(shí),在區(qū)域機(jī)方面,將2個(gè)接收屏蔽器都設(shè)置為全“1”,在集中機(jī)方面,將接收屏蔽器RXM1設(shè)置為全“1”,而將RXM0設(shè)置為101 1011 1010B,表示除集中機(jī)的過(guò)濾器RXF1的SID9、SID6、SID2和SID0等4位外,過(guò)濾器的其余所有位都參與信息過(guò)濾,這是因?yàn)樯鲜?位與請(qǐng)求點(diǎn)名幀的ID碼在跳變位置上的隱性位相對(duì)應(yīng),而請(qǐng)求點(diǎn)名幀容許多個(gè)區(qū)域機(jī)同時(shí)發(fā)送,從而由傳輸延遲引起的碼間串?dāng)_,很可能使這些位的狀態(tài)不確定。
4 通信過(guò)程簡(jiǎn)介
集散型火災(zāi)報(bào)警控制系統(tǒng)的通信過(guò)程,也就是集中機(jī)對(duì)區(qū)域機(jī)循環(huán)進(jìn)行的點(diǎn)名和查詢(xún)過(guò)程。在點(diǎn)名階段,集中機(jī)發(fā)送廣播點(diǎn)名幀,區(qū)域機(jī)以請(qǐng)求點(diǎn)名幀響應(yīng),若接收到未被登錄的區(qū)域機(jī)發(fā)出的請(qǐng)求點(diǎn)名幀,集中機(jī)進(jìn)行選呼點(diǎn)名,區(qū)域機(jī)以配置幀響應(yīng);在查詢(xún)階段,集中機(jī)反復(fù)判斷有無(wú)自檢請(qǐng)求,若有自檢請(qǐng)求,則對(duì)區(qū)域機(jī)逐個(gè)選呼自檢,區(qū)域機(jī)以配置幀響應(yīng),自檢結(jié)束,繼續(xù)選呼查詢(xún),區(qū)域機(jī)以正常幀、或故障幀,或報(bào)警幀響應(yīng),在查詢(xún)中若接收到報(bào)警信號(hào),再根據(jù)需要發(fā)送選呼聯(lián)動(dòng)幀,區(qū)域機(jī)以正常幀確認(rèn)。
5 結(jié)束語(yǔ)
實(shí)驗(yàn)結(jié)果表明,因?yàn)镸CP2510具有完善的現(xiàn)場(chǎng)總線管理機(jī)制和面向單片機(jī)的SPI接口,一方面簡(jiǎn)化了系統(tǒng)的軟、硬件設(shè)計(jì),另一方面使節(jié)點(diǎn)控制器擺脫了對(duì)網(wǎng)絡(luò)通信的頻繁干預(yù),從而大大提高了系統(tǒng)的整體性能,與采用RS232等其它串行通信技術(shù)的集散型系統(tǒng)相比較,本文提出的基于CAN總線的集散型火災(zāi)報(bào)警控制系統(tǒng)具有較高的安全性、可靠性和實(shí)時(shí)性,可用于各種場(chǎng)合的火災(zāi)報(bào)警控制。
參考文獻(xiàn)
1 陽(yáng)憲惠,現(xiàn)場(chǎng)總線技術(shù)及其應(yīng)用,北京:清華大學(xué)出版社,2000.
2 張友德,飛利浦80C51系列單片機(jī)原理與應(yīng)用技術(shù)手冊(cè),北京,航空航天大學(xué)出版社,1992.
3 帶有SPITM接口的獨(dú)立CAN控制器MCP2510, Microchip 公司, 2004, http:// ww1.microchip.com/downloads/en/DeviceDoc/21291e_cn.pdf .
4 MCP2551 High-Speed CAN Transceiver Data Sheet, DS21667,Microchip Technology, Inc.