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