漢字火災(zāi)樓層顯示器報(bào)警系統(tǒng)的解決方案
掃描二維碼
隨時(shí)隨地手機(jī)看文章
1 引言
火災(zāi)樓層顯示器作為火災(zāi)自動(dòng)報(bào)警系統(tǒng)的重要組成部分,是一種安裝在樓層或獨(dú)立防火區(qū)中的數(shù)字式火災(zāi)報(bào)警顯示裝置。它通過報(bào)警總線與火災(zāi)報(bào)警控制器相連,處理并顯示報(bào)警總線上的數(shù)據(jù)?;馂?zāi)樓層顯示器中的內(nèi)置單片機(jī)將接收到的總線信息進(jìn)行判斷、分析和處理,將報(bào)警的探測(cè)器地址編號(hào)轉(zhuǎn)換成相應(yīng)的火警地點(diǎn)信息(例如房間號(hào)和房間類型等),連同火警類型一道通過液晶顯示出來,同時(shí)發(fā)出聲光報(bào)警信號(hào),通知失火區(qū)域的人員。
目前國(guó)內(nèi)現(xiàn)有的火災(zāi)樓層顯示器大都以51單片機(jī)作為MCU。因?yàn)镽OM尋址空間所限,火災(zāi)樓層顯示器大都只能顯示火警所在樓層號(hào)和地址號(hào),無法以直觀的漢字信息提示情況各異的具體火警地點(diǎn)。如果將漢字信息通過總線分發(fā)到各個(gè)樓層顯示器,巨大的通訊量又會(huì)給火警系統(tǒng)總線帶來沉重負(fù)荷,導(dǎo)致整個(gè)火警系統(tǒng)效率低下,延誤火警上報(bào)時(shí)機(jī)。本文提出了一種基于CAN總線的大容量漢字火災(zāi)樓層顯示器,很好的解決了上述問題。
2 火災(zāi)報(bào)警系統(tǒng)總體功能描述
火災(zāi)報(bào)警控制系統(tǒng)中,中央火警控制器通過CAN總線和各個(gè)單元進(jìn)行實(shí)時(shí)通訊并完成各項(xiàng)控制和報(bào)警功能。單元是火災(zāi)探測(cè)器、手動(dòng)報(bào)警按鈕、輸入輸出模塊、樓層顯示器等設(shè)備的總稱。它們是系統(tǒng)終端,直接探測(cè)火災(zāi)信號(hào),并通過通道上報(bào)給控制器,同時(shí)接收由各種通道轉(zhuǎn)發(fā)控制器給單元的聯(lián)動(dòng)信息(啟動(dòng)輸入輸出模塊控制的滅火裝置)、顯示信息(樓層顯示器顯示火災(zāi)信息)等。通道是回路模塊、轉(zhuǎn)接模塊和總線控制盤等設(shè)備的總稱。它們是控制設(shè)備和終端的通道,是拓?fù)渚W(wǎng)絡(luò)構(gòu)成的中繼設(shè)備?;馂?zāi)報(bào)警控制系統(tǒng)的總體結(jié)構(gòu)和樓層顯示器在系統(tǒng)的中的位置如圖1所示。
圖1 火災(zāi)報(bào)警控制系統(tǒng)結(jié)構(gòu)及樓層顯示器所在位置顯示
3 系統(tǒng)功能及硬件描述
3.1 漢字樓層顯示器硬件設(shè)計(jì)方案
如圖2所示,漢字樓層顯示器包括單片機(jī)及其外圍電路,CAN總線模塊, FLASH存儲(chǔ)器,漢字液晶模塊,UART接口,以及燈和按鍵,蜂鳴器。單片機(jī)可通過UART接收PC上傳下來的漢字信息,存儲(chǔ)到FLASH中作為地址信息的查詢數(shù)據(jù)庫(kù)。通過CAN控制器MCP2510和CAN總線驅(qū)動(dòng)器 PCA82C250組成的CAN通信模塊和火災(zāi)報(bào)警控制器進(jìn)行CAN總線通信。如果有火警發(fā)生,單片機(jī)將記錄火警信息,查詢FLASH得到火警發(fā)生的漢字地址信息,并在漢字液晶上滾動(dòng)顯示火警和信息查詢結(jié)果。同時(shí),發(fā)生火警時(shí)還可通過查詢鍵快速查詢火警信息,通過蜂鳴器報(bào)警,通過消音鍵消音,并點(diǎn)亮發(fā)光二極管報(bào)警。未發(fā)生火警時(shí),通過自檢鍵自檢可以檢查各個(gè)功能是否能正常工作。
圖2 漢字樓層顯示器結(jié)構(gòu)框圖
3.2 FLASH存儲(chǔ)器電路設(shè)計(jì)
FLASH 選用的SST29SF040是SST公司推出的高速可編程閃存。它符合JEDEC標(biāo)準(zhǔn),具有512K×8 Bits的存儲(chǔ)結(jié)構(gòu);芯片擦除及寫入的時(shí)間快,整片擦除只需70毫秒,段擦除只需18毫秒,字編程寫入時(shí)間僅為14微秒;可靠性高,能夠重復(fù)寫100,000次,數(shù)據(jù)可以保存100年不丟失。
SST29SF040 的容量是512K Bytes,而51系列單片機(jī)的ROM直接尋址范圍是64K Bytes,如果不加以處理而直接使用,將會(huì)浪費(fèi)大量的存儲(chǔ)空間。我們使用了一種分頁(yè)存儲(chǔ)方式,使得FLASH存儲(chǔ)空間得以充分利用,大大擴(kuò)充了單片機(jī)ROM尋址范圍。按照每條漢字信息占用32個(gè)Bytes計(jì)算,理論上可以最大存儲(chǔ)16384條火警地址信息,足以應(yīng)付絕大多數(shù)復(fù)雜的工程環(huán)境。圖3為存儲(chǔ)器電路,最高位地址線A16-A18接單片機(jī)的P1.0-P1.2,因而 FLASH存儲(chǔ)器實(shí)現(xiàn)了8頁(yè),每頁(yè)64K的外部存儲(chǔ)結(jié)構(gòu)。在每次讀寫FLASH時(shí),將P1.0-P1.2賦不同的值即可實(shí)現(xiàn)不同的頁(yè)選。假設(shè)page為待選取的頁(yè)號(hào)變量(0-7),在Keil Cx51中通過下列語(yǔ)句即可實(shí)現(xiàn)讀寫前的選頁(yè)操作:P1 = (P1 & 0xf8) | page;
圖3 FLASH存儲(chǔ)器分頁(yè)存儲(chǔ)電路
3.3漢字液晶顯示模塊設(shè)計(jì)
我們選用金鵬電子公司的OJM2*8A漢字液晶模塊作為顯示設(shè)備。OJM2*8A中文液晶顯示模塊內(nèi)含GB 2312的15*15點(diǎn)陣國(guó)標(biāo)一、二級(jí)簡(jiǎn)體漢字和 8*8點(diǎn)陣及8*16點(diǎn)陣ASCII字符,用戶輸入GB2312區(qū)位碼或ASCII碼即可實(shí)現(xiàn)文本顯示。每個(gè)漢字的區(qū)位碼只占用兩個(gè)字節(jié),是原來漢字點(diǎn)陣所需存儲(chǔ)單元的1/16。
漢字液晶模塊接口協(xié)議為請(qǐng)求/應(yīng)答(REQ/BUSY)握手方式。應(yīng)答B(yǎng)USY高電平(BUSY =1)表示液晶模塊忙于內(nèi)部處理,不能接收用戶命令;BUSY低電平(BUSY =0)表示液晶模塊空閑,等待接收用戶命令。發(fā)送命令到液晶模塊可在BUSY =0后的任意時(shí)刻開始,先把用戶命令的當(dāng)前字節(jié)放到數(shù)據(jù)線上,接著發(fā)高電平REQ信號(hào)(REQ =1)通知液晶模塊處理當(dāng)前數(shù)據(jù)線上的命令或數(shù)據(jù)。液晶模塊在收到外部REQ高電平信號(hào)后立即讀取數(shù)據(jù)線上的命令或數(shù)據(jù),同時(shí)將應(yīng)答線BUSY 變?yōu)楦唠娖?,表明模塊已收到數(shù)據(jù)并正在忙于對(duì)此數(shù)據(jù)的內(nèi)部處理。此時(shí)用戶對(duì)模塊的寫操作已經(jīng)完成,用戶可以撤消數(shù)據(jù)線上的信號(hào)并可作模塊顯示以外的其他工作,也可不斷地查詢應(yīng)答線BUSY是否為低(BUSY=0 ?),如果BUSY=0,表明模塊對(duì)用戶的寫操作已經(jīng)執(zhí)行完畢,可以再送下一個(gè)數(shù)據(jù)。如向模塊發(fā)出一個(gè)完整的顯示漢字的命令,包括坐標(biāo)及漢字代碼在內(nèi)共需5個(gè)字節(jié)。模塊在接收到最后一個(gè)字節(jié)后才開始執(zhí)行整個(gè)命令的內(nèi)部操作,因此最后一個(gè)字節(jié)的應(yīng)答B(yǎng)USY 高電平(BUSY =1)持續(xù)時(shí)間較長(zhǎng)。對(duì)液晶模塊寫漢字時(shí)序圖如圖4所示。
圖4 對(duì)液晶模塊寫漢字時(shí)序圖
3.4 CAN總線通訊模塊設(shè)計(jì)
我們選擇Microchip公司的MCP2510CAN控制器和Philips公司的PCA82C250CAN收發(fā)器構(gòu)建CAN總線通訊模塊。 MCP2510支持CAN2.0A/B協(xié)議,可接收和發(fā)送2.0協(xié)議下的標(biāo)準(zhǔn)幀、擴(kuò)展幀和遠(yuǎn)程幀。MCP2510擁有三個(gè)發(fā)送緩沖區(qū)和兩個(gè)接收緩沖區(qū),可以進(jìn)行接收濾波和消息管理,防止過度發(fā)送和過度接收形成擁塞。其最大的優(yōu)點(diǎn)是擁有傳輸速率可達(dá)5Mb/S的SPI端口,節(jié)省MCU端口,提高通信速度。 Philips公司的82C250CAN總線收發(fā)器可與MPC2510無縫連接,它有高速模式,斜率控制模式和延時(shí)模式。經(jīng)過多次的實(shí)驗(yàn)證實(shí)其工作在斜率控制模式下最為穩(wěn)定,速度也能構(gòu)滿足系統(tǒng)10Kbps的傳輸速率。
圖5 CAN總線通信電路
CAN 總線通訊模塊電路如圖5所示,單片機(jī)通過I/O口直接和MCP2510的SPI口相連,用軟件模擬實(shí)現(xiàn)SPI接口協(xié)議。PCA82C250作為 MCP2510與物理CAN總線的接口。如果需要進(jìn)一步提高系統(tǒng)的抗干擾能力,可在MCP2510和PCA82C250之間加一個(gè)光電隔離器。
4 系統(tǒng)軟件設(shè)計(jì)
漢字樓層顯示器軟件功能主要是1.將串口發(fā)送下來的漢字信息文件寫入FLASH存儲(chǔ)。2.和火災(zāi)報(bào)警控制器進(jìn)行CAN通信,如果發(fā)現(xiàn)有火警信息,則查找FLASH中的漢字地址信息,予以顯示在漢字液晶上報(bào)警,如有多條火警信息,則滾動(dòng)顯示各條信息。
圖6 漢字樓層顯示器軟件流程圖
圖 6是漢字樓層顯示器軟件流程圖。用page(值為0-7)表示讀寫的FLASH頁(yè),用count(值為0-65535)表示每頁(yè)頁(yè)內(nèi)地址。其中 page0-page6用來存儲(chǔ)通過串口下載的漢字信息,page7用來存儲(chǔ)接收到的火警等動(dòng)態(tài)信息。一旦接收到新火警,即查詢FLASH中相應(yīng)的漢字信息,并在液晶上滾動(dòng)顯示。
為了快速定位所查詢的火警漢字地址信息,我們采用數(shù)組結(jié)構(gòu)存儲(chǔ)。盡管這樣會(huì)因?yàn)閷?shí)際火警地址不等長(zhǎng),而造成存儲(chǔ)中出現(xiàn)一些空地址,存儲(chǔ)效率不高,但是由于我們對(duì)數(shù)組的查找是一種可以直接定位的快速查找,不用采用鏈表之類的復(fù)雜數(shù)據(jù)結(jié)構(gòu),也避免了二分檢索之類復(fù)雜的搜索算法。對(duì)于單片機(jī)而言,實(shí)質(zhì)上是以比較小的空間為代價(jià)換來了比較高的時(shí)間效率,還是十分值得的。
5 結(jié)語(yǔ)
本文提出的基于CAN總線的大容量漢字火災(zāi)樓層顯示器,較好的解決了現(xiàn)有火災(zāi)樓層顯示器的缺陷。對(duì)大于51單片機(jī)ROM 64K尋址空間的數(shù)據(jù)存儲(chǔ)需求,采取分頁(yè)存儲(chǔ)的訪問方式可以很好的解決這個(gè)問題。通過在FLASH中存儲(chǔ)大容量數(shù)據(jù)信息,可以避免因?yàn)镃AN總線上通訊數(shù)據(jù)流量過大而導(dǎo)致火警不能及時(shí)傳達(dá),延誤報(bào)警時(shí)機(jī)。而且FLASH中的漢字信息可以通過串口在線擦寫,便于現(xiàn)場(chǎng)調(diào)試。目前產(chǎn)品已經(jīng)投入實(shí)用,用戶反應(yīng)運(yùn)行良好。