0 引言
隨著電子技術(shù)和計(jì)算機(jī)自動(dòng)控制技術(shù)的引入,報(bào)警設(shè)施的自動(dòng)化、智能化水平在不斷提高。同時(shí),隨著高層建筑和大型綜合性建筑的增加,使報(bào)警系統(tǒng)更加復(fù)雜化和立體化,對(duì)報(bào)警系統(tǒng)提出了多功能性,即不單是防盜,還包括防火,有害氣體報(bào)警等一系列的要求。準(zhǔn)確、及時(shí)地獲取報(bào)警信息和記錄報(bào)警信息,有助于安防人員做出快速的反應(yīng),減少損失,也為日后分析原因提供了依據(jù)。當(dāng)前的圖形報(bào)警系統(tǒng)主要有以下幾種類型:一種是由分區(qū)控制器、報(bào)警器、總控制器等報(bào)警模塊組成的多級(jí)式報(bào)警系統(tǒng),PC機(jī)主要與總控制器進(jìn)行連接,只是負(fù)責(zé)報(bào)表、打印、顯示等功能;另一種是以視頻監(jiān)控為主的,通過(guò)捕捉處理圖像進(jìn)行報(bào)警,有專用的主機(jī)和設(shè)備,雖然功能強(qiáng)大,但是價(jià)格昂貴。根據(jù)上述背景情況,以PC機(jī)作為主控機(jī),開發(fā)了一款圖形報(bào)警系統(tǒng)。
LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是實(shí)驗(yàn)室虛擬儀器集成開發(fā)平臺(tái)的簡(jiǎn)稱,它是目前國(guó)際上應(yīng)用最廣泛的虛擬儀器開發(fā)環(huán)境之一,它具有工業(yè)標(biāo)準(zhǔn)的圖形化編程工具,主要用于開發(fā)測(cè)試、測(cè)量、和控制系統(tǒng)。LabVIEW和傳統(tǒng)的編程語(yǔ)言有很多相似之處,如:數(shù)據(jù)類型、數(shù)據(jù)運(yùn)算、控制結(jié)構(gòu)等,但是LabVIEW采用圖形語(yǔ)言進(jìn)行編程,使編程更靈活、方便。本系統(tǒng)上位機(jī)軟件采用LabVIEW進(jìn)行編寫,可降低開發(fā)難度,縮短開發(fā)周期,并可以根據(jù)用戶的需要對(duì)系統(tǒng)做出快速的更改。
1 系統(tǒng)構(gòu)成
報(bào)警系統(tǒng)主要由硬件部分和軟件部分組成。硬件部分包括各種類型的傳感器、防區(qū)模塊、USB/RS-485轉(zhuǎn)接器、PC機(jī)及通信電纜;軟件部分主要是利用LabVIEW開發(fā)的圖形報(bào)警軟件。防區(qū)模塊主要由AT89C2051單片機(jī)、SN75176,總線收發(fā)器和地址編碼器組成。傳感器正常工作時(shí)I/O口是低電平,當(dāng)有警情時(shí)產(chǎn)生高電平。I/O口接收到報(bào)警信號(hào)后,把產(chǎn)生警情的傳感器的地址碼通過(guò)SN75176總線收發(fā)器經(jīng)過(guò)報(bào)警總線發(fā)送到上位機(jī)。報(bào)警總線包括兩條RS485數(shù)據(jù)線和兩條電源線。使用USB/RS485轉(zhuǎn)接器使系統(tǒng)既擁有了USB,總線較強(qiáng)的擴(kuò)展能力,又具有RS485總線較遠(yuǎn)的傳輸距離。當(dāng)上位機(jī)接收到防區(qū)模塊發(fā)送的地址碼后,將該地址碼傳入ACCESS數(shù)據(jù)庫(kù),由數(shù)據(jù)庫(kù)中得到該地址碼所對(duì)應(yīng)的傳感器的詳細(xì)信息,然后以圖形、文字、聲音三種方式進(jìn)行報(bào)警。記錄模塊對(duì)該次報(bào)警進(jìn)行記錄,以便于今后的查詢。
2 軟件設(shè)計(jì)
2.1 數(shù)據(jù)庫(kù)連接
Access數(shù)據(jù)庫(kù)是一個(gè)關(guān)系型數(shù)據(jù)管理系統(tǒng),具有數(shù)據(jù)庫(kù)小巧,系統(tǒng)資源占用少,與Windows兼容性好的優(yōu)點(diǎn),可以根據(jù)用戶定義的關(guān)系存儲(chǔ)、處理和管理數(shù)據(jù)信息。它由許多基本的表組成,用來(lái)存放不同的信息,同時(shí)可對(duì)表間的關(guān)系進(jìn)行設(shè)計(jì)。LabVIEW提供了豐富的外部程序接口,如ActiveX和.NET,所以可以通過(guò)AD0、DA0、AD0.NET等方法與數(shù)據(jù)庫(kù)進(jìn)行連接。采用LabSQL來(lái)進(jìn)行LabVIEW和Access數(shù)據(jù)庫(kù)的連接,LabSQL,是一個(gè)通過(guò)AD0開源的數(shù)據(jù)庫(kù)訪問工具,可以當(dāng)作普通的VI進(jìn)行調(diào)用。Access數(shù)據(jù)庫(kù)中的監(jiān)控點(diǎn)信息表由以下字段組成:傳感器地址碼、傳感器類型、傳感器所在樓層、傳感器所在區(qū)域、傳感器標(biāo)示、傳感器坐標(biāo)(X坐標(biāo),Y坐標(biāo))。報(bào)警信息記錄表由傳感器地址碼、類型、報(bào)警時(shí)間、報(bào)警日期等字段組成。管理人員權(quán)限表由人員編號(hào)、登陸記錄、權(quán)限代碼等字段組成。當(dāng)產(chǎn)生報(bào)警信息時(shí),防區(qū)模塊會(huì)把產(chǎn)生警情的傳感器的地址碼發(fā)送到PC機(jī)。系統(tǒng)接收到該地址碼后,首先通過(guò)ADO Connection Create.vi與ADO建立連接,然后通過(guò)ADO Connection Open.vi打開DSN,DSN由ConnectionString指定。利用ConcatenateStrings字符串合成功能把地址碼組合成完整的SQL查詢語(yǔ)句。ADO SQL execute.vi通過(guò)該查詢語(yǔ)句,可以得到該傳感器的詳細(xì)信息。
2.2 圖形報(bào)警
圖形報(bào)警的主要功能是實(shí)現(xiàn)平面圖在屏幕上的顯示,并提示報(bào)警點(diǎn)?,F(xiàn)有的圖形報(bào)警系統(tǒng)普遍采用兩種方法,一種是程序內(nèi)建的繪圖程序,這種方法的優(yōu)點(diǎn)是不依靠其他繪圖軟件,使用方便,但是繪圖能力較弱,地圖效果不好。第二種是建立與其他專業(yè)的繪圖軟件(如:AUTOCAD)的連接,這種方法雖然可以得到高質(zhì)量的地圖,但是用戶很難獨(dú)自完成地圖,也不便于以后對(duì)地圖的更改。而本系統(tǒng)不再對(duì)繪圖軟件進(jìn)行限制,用戶可以使用任意的繪圖軟件進(jìn)行地圖的描繪,只要最后把圖片保存為JPG或者BMP的圖片格式,并釋放到指定位置,系統(tǒng)就會(huì)自動(dòng)調(diào)用地圖文件。
報(bào)警點(diǎn)在地圖顯示為一個(gè)閃爍的圓點(diǎn),對(duì)于圓的繪制采用了Bresenham算法生成圓弧,圓心位于原點(diǎn)的圓有四條對(duì)稱軸x=0,y=0,x=y,x=-y,則利用圓的對(duì)稱性可減少計(jì)算量。若已知圓弧上一點(diǎn)(x,y),則可以得到其關(guān)于四條對(duì)稱軸的其他7個(gè)點(diǎn),這種性質(zhì)稱為圓的八對(duì)稱性。因此只要掃描轉(zhuǎn)換八分之一圓弧,就可以求出整個(gè)圓弧的像素集。Bresenham算法產(chǎn)生八分之一圓弧的遞推公式為:[nextpage]
當(dāng)查詢完該地址的詳細(xì)信息后,ADO SQL execute.vi將查詢后的結(jié)果以數(shù)組形式輸出。通過(guò)Index Array索引數(shù)組功能,可以獲得該地址碼所對(duì)應(yīng)的地圖文件名稱。然后通過(guò)Concatenate Strings字符串合成功能形成相對(duì)路徑,配合基路徑后就可以通過(guò)build path創(chuàng)建出完整的路徑。Read JPEG Fjle.vi通過(guò)該路徑可以讀取地圖文件,并將該地圖文件以圖像數(shù)據(jù)的形式傳送到Draw FlattendedPixmap.vi。同時(shí),Index Array索引數(shù)組功能也獲得了傳感器的坐標(biāo),但是由于得到的結(jié)果是字符串,所以要通過(guò)Decimal string To Number先轉(zhuǎn)換成數(shù)字,通過(guò)Bundle捆綁后傳送到Draw Flattended Pixmap.vi。然后采用公式節(jié)點(diǎn)實(shí)現(xiàn)Bresenham算法后通過(guò)DrawFlattended Pixmap.vi實(shí)現(xiàn)報(bào)警點(diǎn)的圖形顯示。
2.3 通信模塊
通信模塊主要負(fù)責(zé)上位機(jī)和防區(qū)模塊之間的通信。通信模塊通過(guò)巡更檢查的方式對(duì)防區(qū)模塊進(jìn)行呼叫,防區(qū)模塊如果正常工作且沒有警情發(fā)生時(shí),防區(qū)模塊給上位機(jī)一個(gè)應(yīng)答,上位機(jī)收到該應(yīng)答后繼續(xù)呼叫下一防區(qū)模塊。如過(guò)有警情發(fā)生,防區(qū)模塊則把產(chǎn)生警情探頭的地址碼發(fā)送到上位機(jī)。如果防區(qū)模塊在規(guī)定時(shí)間內(nèi)無(wú)應(yīng)答,則通信模塊重復(fù)呼叫一次,仍無(wú)應(yīng)答,則產(chǎn)生故障報(bào)警,并繼續(xù)呼叫下一防區(qū)模塊。通信模塊可以根據(jù)傳輸距離靈活設(shè)置傳輸速度,默認(rèn)狀態(tài)下傳輸速率設(shè)置為1200波特率,在這個(gè)速度下傳輸距離可達(dá)到2公里左右。
2.4 記錄模塊
記錄模塊主要負(fù)責(zé)對(duì)報(bào)警信息的記錄的存儲(chǔ),并且能夠查詢和打印。報(bào)警信息的記錄包括報(bào)警探頭的ID、位置、類型和報(bào)警的日期和時(shí)間。存儲(chǔ)功能主要把報(bào)警記錄保存入數(shù)據(jù)庫(kù)或者是Excel文件,以便于日后的查詢和統(tǒng)計(jì),操作員可以對(duì)數(shù)據(jù)查看和打印,但是不具有對(duì)數(shù)據(jù)進(jìn)行更改的權(quán)限。打印功能通過(guò)打印機(jī)實(shí)現(xiàn)。
當(dāng)產(chǎn)生報(bào)警信息時(shí),GetData/Time In Sermonds.vi獲得當(dāng)前的日期和時(shí)間,通過(guò)Format Data/Timestring.vi把時(shí)間按照指定的格式進(jìn)行顯示,然后通過(guò)Build Array.vi把時(shí)間和其他信息通過(guò)數(shù)組進(jìn)行顯示。
3 結(jié)束語(yǔ)
圖形報(bào)警系統(tǒng)為安防人員提供了一種圖形化操作界面,有利于安防人員準(zhǔn)確、直觀地進(jìn)行監(jiān)控,并可以迅速做出判斷、減少損失。采用LabVIEW進(jìn)行開發(fā),降低了工作量,并且使程序靈活,有利于以后根據(jù)用戶的要求進(jìn)行修改。采用PC機(jī)作為控制機(jī)簡(jiǎn)化了系統(tǒng)結(jié)構(gòu),降低了成本,而且對(duì)于PC機(jī)的性能要求不高,便于賓館學(xué)校等場(chǎng)所的使用。