呂銀華,肖天華,干興園,張
(1.浙江中辰城市應(yīng)急服務(wù)管理有限公司,浙江 杭州 310030;2.杭州電子科技大學(xué),浙江 杭州 310053)
隨著我國(guó)經(jīng)濟(jì)水平的提高,個(gè)體和私營(yíng)經(jīng)濟(jì)逐漸成為推動(dòng)經(jīng)濟(jì)社會(huì)發(fā)展的重要力量[1],但有些企業(yè)為了節(jié)約生產(chǎn)成本,將住宿、生產(chǎn)、經(jīng)營(yíng)等功能混合在一起。這種場(chǎng)所面積小、成本低、經(jīng)營(yíng)方式靈活,但火災(zāi)隱患十分突出[2],如建筑物耐火等級(jí)不高、電氣線路私拉亂接、生產(chǎn)生活設(shè)備較多且功率較高,極易發(fā)生火災(zāi)。這也使得人們開始關(guān)注電氣火災(zāi)預(yù)警系統(tǒng)。然而,傳統(tǒng)的電氣火災(zāi)預(yù)警系統(tǒng)僅檢測(cè)導(dǎo)線溫度和剩余電流的大小,忽略了電氣線路過(guò)載帶來(lái)的火災(zāi)隱患。同時(shí)電氣火災(zāi)客戶終端僅能顯示監(jiān)測(cè)數(shù)據(jù),難以及時(shí)和準(zhǔn)確地反映電氣火災(zāi)隱患發(fā)生的位置,用戶無(wú)法通過(guò)客戶端遠(yuǎn)程關(guān)閉電源總開關(guān)來(lái)防止電氣火災(zāi)的發(fā)生;而且傳統(tǒng)的電氣火災(zāi)監(jiān)控終端使用C/S架構(gòu)模式,需要為不同的操作系統(tǒng)開發(fā)不同的客戶端,會(huì)使代碼冗雜、可讀性和可維護(hù)性下降。文獻(xiàn)[3]提出了采用建筑設(shè)計(jì)圖的方式監(jiān)控,發(fā)生火災(zāi)隱患時(shí)根據(jù)傳感器的編號(hào)信息在2D總覽圖中標(biāo)紅,解決了傳統(tǒng)客戶端無(wú)法反映火災(zāi)隱患發(fā)生位置的問(wèn)題。但是對(duì)于大多數(shù)人來(lái)說(shuō),建筑設(shè)計(jì)圖晦澀難懂,提高了軟件使用的門檻??紤]到上述問(wèn)題,本文提出了一種基于前后端分離技術(shù)的三維電氣火災(zāi)預(yù)警系統(tǒng),即通過(guò)前后端分離技術(shù)將前端和后端分別部署在不同的服務(wù)器上,前端通過(guò)WebGL技術(shù)實(shí)時(shí)在瀏覽器中渲染3D畫面,后端再通過(guò)Ajax技術(shù)從服務(wù)器獲取數(shù)據(jù)顯示在HTML上,運(yùn)行效率得到大幅提高。用戶無(wú)需安裝客戶端程序就可以通過(guò)瀏覽器實(shí)時(shí)監(jiān)控當(dāng)前各個(gè)區(qū)域電流、電壓、剩余電流等用電數(shù)據(jù)信息;當(dāng)發(fā)生電氣火災(zāi)隱患時(shí),用戶可以在3D可視化界面中定位電氣隱患位置并遠(yuǎn)程關(guān)閉電源總開關(guān),大大降低電氣火災(zāi)隱患預(yù)警和處理的難度,給人們預(yù)防電氣火災(zāi)的發(fā)生帶來(lái)極大的便利。
電氣火災(zāi)預(yù)警系統(tǒng)主要由電氣火災(zāi)監(jiān)控終端、以太網(wǎng)通信模塊、服務(wù)器端和監(jiān)控平臺(tái)這四個(gè)部分組成[4]。
電氣火災(zāi)監(jiān)控終端通過(guò)傳感器采集用電安全原始數(shù)據(jù),并實(shí)時(shí)處理采集到的數(shù)據(jù),然后將處理好的數(shù)據(jù)發(fā)送給以太網(wǎng)通信模塊。以太網(wǎng)通信模塊通過(guò)網(wǎng)絡(luò)將數(shù)據(jù)包上傳到后端服務(wù)器[5]。后端服務(wù)器收到數(shù)據(jù)包后進(jìn)行解析,并將解析后的用電安全數(shù)據(jù)按照類別和日期存入數(shù)據(jù)庫(kù),實(shí)時(shí)刷新數(shù)據(jù)庫(kù)中的數(shù)據(jù),并保留歷史數(shù)據(jù),方便用戶查看過(guò)去的用電安全信息;同時(shí)進(jìn)行數(shù)據(jù)處理,分析潛在的火災(zāi)隱患,發(fā)現(xiàn)隱患及時(shí)推送到監(jiān)控平臺(tái)。監(jiān)控平臺(tái)通過(guò)HTTP協(xié)議JSON格式的方式實(shí)時(shí)讀取后端服務(wù)器傳來(lái)的用電安全數(shù)據(jù),并將用電安全數(shù)據(jù)實(shí)時(shí)渲染到3D場(chǎng)景上,方便用戶及時(shí)查看[6]。監(jiān)控平臺(tái)若收到火災(zāi)隱患信息,則及時(shí)報(bào)警,提醒工作人員及時(shí)處理,將電氣火災(zāi)消滅在萌芽之中。圖1為電氣火災(zāi)預(yù)警系統(tǒng)的整體架構(gòu)。
圖1 電氣火災(zāi)預(yù)警系統(tǒng)架構(gòu)圖
電氣火災(zāi)監(jiān)控終端由電源模塊、探測(cè)器主控制器模塊、傳感器模塊、485通信模塊、以太網(wǎng)通信模塊、存儲(chǔ)模塊、繼電器控制模塊這7個(gè)部分組成[7]。電氣火災(zāi)監(jiān)控終端的硬件框圖如圖2所示。
圖2 電氣火災(zāi)監(jiān)控終端硬件框圖
本系統(tǒng)的主控芯片采用的是ST(意法半導(dǎo)體)公司的STM32F407ZGT6芯片。它是一款基于ARM Cortex-M內(nèi)核的32位微處理器[8],存儲(chǔ)器容量高達(dá)192 KB,工作溫度-40~85 ℃,主時(shí)鐘頻率最高可達(dá)168 MHz,滿足本系統(tǒng)的運(yùn)算需要。
為了提高電氣火災(zāi)預(yù)警的準(zhǔn)確性,本系統(tǒng)在傳統(tǒng)預(yù)警系統(tǒng)用到的溫度和剩余電流傳感器的基礎(chǔ)上,增加了3種傳感器,分別為:電流傳感器、電壓傳感器、功率傳感器。
2.2.1 電流傳感器
電流傳感器是可以用來(lái)偵測(cè)導(dǎo)線內(nèi)電流的裝置,并且產(chǎn)生與電流成比例的電壓信號(hào)[9]。本系統(tǒng)使用的是開環(huán)式霍爾電流傳感器?;魻栯娏鱾鞲衅鳒y(cè)量電流無(wú)需斷開電路,套在線路外面即可測(cè)出電流大小,使用方便、安全。
2.2.2 電壓傳感器
電壓傳感器是指能夠檢測(cè)被測(cè)電壓并轉(zhuǎn)換成可用輸出信號(hào)的傳感器。本系統(tǒng)使用的是霍爾電壓傳感器。
2.2.3 功率傳感器
功率傳感器是一種能將被測(cè)有功功率和無(wú)功功率轉(zhuǎn)換成直流電流或電壓輸出的儀器。本系統(tǒng)使用功率傳感器來(lái)測(cè)量電氣線路總線上的有功功率和無(wú)功功率值。當(dāng)功率超過(guò)線路可承受最大功率時(shí),發(fā)出火災(zāi)隱患預(yù)警,提醒用戶關(guān)閉同時(shí)使用的大功率用電器。
本系統(tǒng)需要用到兩個(gè)通信模塊,分別為RS 485通信模塊和以太網(wǎng)通信模塊。
2.3.1 RS 485通信模塊
RS 485總線是一種常見的串行總線標(biāo)準(zhǔn),采用平衡發(fā)送與差分接收的方式,在遠(yuǎn)距離通信上應(yīng)用最為廣泛[10]。本系統(tǒng)使用RS 485傳感器數(shù)據(jù)采集模塊與各種傳感器相連,將采集到的數(shù)據(jù)轉(zhuǎn)化成RS 485協(xié)議數(shù)據(jù),再通過(guò)RS 485總線傳輸?shù)街骺匦酒M(jìn)行解析。
RS 485總線傳輸距離遠(yuǎn)且抗干擾能力強(qiáng),而且只需要一個(gè)RS 485端口,就可以監(jiān)控多個(gè)傳感器的模擬信號(hào),適合用于火災(zāi)監(jiān)控領(lǐng)域。
2.3.2 以太網(wǎng)通信模塊
為了保證傳感器信號(hào)響應(yīng)速度,本系統(tǒng)采用以太網(wǎng)傳輸模式進(jìn)行傳輸。以太網(wǎng)通信模塊由以太網(wǎng)芯片W5500、網(wǎng)絡(luò)變壓器HY601680和RJ 45模塊組成[11]。W5500通過(guò)SPI(外設(shè)串行接口)方式與主控制器進(jìn)行通信,實(shí)時(shí)接收傳感器數(shù)據(jù)。W5500通過(guò)網(wǎng)絡(luò)變壓器HY601680與RJ 45模塊相連,將從主控制器接收到的傳感器數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳輸?shù)椒?wù)器主機(jī)上,進(jìn)行數(shù)據(jù)解包和火災(zāi)預(yù)警。
本系統(tǒng)分別采用AT24C256芯片和W25Q256FVFIG芯片作為E2PROM存儲(chǔ)器和FLASH存儲(chǔ)器。其中,E2PROM存儲(chǔ)器用來(lái)存儲(chǔ)主控制器和傳感器的參數(shù)信息,包括每條485總線的設(shè)備地址和通信參數(shù)等。FLASH存儲(chǔ)器用來(lái)作為主控制器的數(shù)據(jù)緩沖區(qū),接收傳感器采集的實(shí)時(shí)數(shù)據(jù)并保存起來(lái),等待下一步發(fā)送。
電源是整個(gè)系統(tǒng)最重要的部分,電源模塊的好壞直接決定系統(tǒng)能否正常工作,稍有不慎就會(huì)燒毀芯片和傳感器,甚至電源模塊爆炸起火,造成巨大損失。為了保證系統(tǒng)供電穩(wěn)定,本系統(tǒng)采用海凌科電子有限公司的穩(wěn)壓AC-DC電源模塊HLK-PM01。該模塊采用220 V交流電供電,通過(guò)內(nèi)部變壓器降壓,整流輸出5 V直流電壓,再通過(guò)LDO(低壓差線性穩(wěn)壓器)電路降壓至3.3 V,為主控制器和其他芯片提供穩(wěn)定的工作電壓。
繼電器是一種電子控制器件,通常用于自動(dòng)控制電路中,是利用低電壓、弱電流電路間接地控制高電壓、強(qiáng)電流電路的一種開關(guān)[12]。傳統(tǒng)的電氣火災(zāi)預(yù)警系統(tǒng)無(wú)法通過(guò)上位機(jī)直接切斷電氣隱患位置的電源。本系統(tǒng)為了解決這個(gè)問(wèn)題,采用網(wǎng)絡(luò)繼電器控制模塊,通過(guò)WiFi與服務(wù)器相連,遠(yuǎn)程控制設(shè)備電源的通斷。當(dāng)發(fā)生電氣火災(zāi)隱患時(shí),用戶可以通過(guò)監(jiān)控平臺(tái)直接切斷設(shè)備電源,方便用戶及時(shí)處理,有效避免火災(zāi)的發(fā)生。
電氣火災(zāi)預(yù)警系統(tǒng)的軟件設(shè)計(jì)由主控制器程序設(shè)計(jì)和電氣火災(zāi)監(jiān)控平臺(tái)設(shè)計(jì)這兩部分組成。其中,主控制器程序以C++語(yǔ)言作為開發(fā)語(yǔ)言,通過(guò)Keil編程實(shí)現(xiàn)傳感器和控制器的各部分功能。電氣火災(zāi)監(jiān)控平臺(tái)分為前端部分和后端部分,前端部分在ThingJS在線開發(fā)平臺(tái)上使用JavaScript進(jìn)行設(shè)計(jì),后端部分使用Spring Boot框架來(lái)做服務(wù)端,并使用MySQL實(shí)現(xiàn)數(shù)據(jù)庫(kù)讀寫和調(diào)用,最后使用Vue和Element-UI框架實(shí)現(xiàn)電氣火災(zāi)監(jiān)控管理后臺(tái)。
主控制器程序的設(shè)計(jì)思路是根據(jù)不同模塊的功能單獨(dú)設(shè)計(jì)各個(gè)模塊,并封裝成子函數(shù),供主函數(shù)調(diào)用來(lái)實(shí)現(xiàn)系統(tǒng)各部分功能。主控制器程序工作流程如下。
3.1.1 系統(tǒng)初始化
系統(tǒng)上電后,首先初始化定時(shí)器、SPI、FLASH、E2PROM、485總線模塊、以太網(wǎng)模塊等。然后從E2PROM存儲(chǔ)器中讀取設(shè)備IP地址、傳感器類型、傳感器數(shù)量、傳感器校準(zhǔn)值等系統(tǒng)參數(shù),為系統(tǒng)正常運(yùn)行做好準(zhǔn)備。
3.1.2 傳感器數(shù)據(jù)采集
根據(jù)不同傳感器485總線地址的不同,主控制器依序向各個(gè)傳感器發(fā)送數(shù)據(jù)查詢指令,傳感器的中斷程序接收到數(shù)據(jù)查詢指令后,向主控制器發(fā)送當(dāng)前傳感器數(shù)據(jù)。通過(guò)這樣的方式,主控制器就可以完成傳感器數(shù)據(jù)采集,進(jìn)入數(shù)據(jù)處理階段。
3.1.3 傳感器數(shù)據(jù)處理
傳感器數(shù)據(jù)采集部分往往會(huì)遇到信號(hào)干擾的情況,因此系統(tǒng)將對(duì)采集的傳感器數(shù)據(jù)進(jìn)行處理。系統(tǒng)將每10個(gè)傳感器數(shù)據(jù)采樣值進(jìn)行冒泡排序,去掉最大和最小值,排除干擾,然后取平均,存入FLASH存儲(chǔ)器中,等待下一步上傳。
3.1.4 傳感器數(shù)據(jù)上傳
主控制器通過(guò)以太網(wǎng)控制器W5500與服務(wù)器進(jìn)行通信。主控制器通過(guò)SPI總線與W5500模塊相連。當(dāng)需要發(fā)送數(shù)據(jù)時(shí),主控制器將待發(fā)送的數(shù)據(jù)寫入到W5500的發(fā)送緩沖區(qū),執(zhí)行待發(fā)送命令,將數(shù)據(jù)通過(guò)RJ 45模塊上傳至服務(wù)器中,完成數(shù)據(jù)上傳過(guò)程[13]。系統(tǒng)主控制器程序流程如圖3所示。
圖3 系統(tǒng)主控制器程序流程
3.2.1 前端功能設(shè)計(jì)
電氣火災(zāi)監(jiān)控平臺(tái)前端部分主要實(shí)現(xiàn)用電安全信息監(jiān)控,可實(shí)時(shí)顯示各區(qū)域的電流、電壓、剩余電流、導(dǎo)線溫度及總線功率值,實(shí)時(shí)渲染3D畫面,并提供總線開關(guān),便于工作人員準(zhǔn)確定位火災(zāi)隱患發(fā)生的位置并及時(shí)切斷電路。
本文采用物聯(lián)網(wǎng)可視化PaaS開發(fā)平臺(tái)ThingJS,使用當(dāng)今最熱門的JavaScript語(yǔ)言進(jìn)行開發(fā)。ThingJS平臺(tái)輕松集成3D可視化界面,極大地降低了3D界面開發(fā)的成本[14]。ThingJS基于HTML5和WebGL技術(shù),可以很方便地在主流瀏覽器上進(jìn)行瀏覽和調(diào)試,同時(shí)支持PC和移動(dòng)設(shè)備,具有較好的兼容性[15]。
電氣火災(zāi)監(jiān)控平臺(tái)使用CamBuilder客戶端完成火災(zāi)監(jiān)控區(qū)域3D場(chǎng)景的搭建,并將場(chǎng)景導(dǎo)出上傳至ThingJS平臺(tái),進(jìn)行在線開發(fā)。在ThingJS平臺(tái)上,首先加載上傳的場(chǎng)景文件,代碼如下:
其中url為場(chǎng)景的地址。然后在監(jiān)控區(qū)域設(shè)置物體頂牌UIAnchor。UIAnchor將顯示各個(gè)監(jiān)測(cè)點(diǎn)的電流、電壓、剩余電流等監(jiān)控?cái)?shù)據(jù)并“掛接”到3D監(jiān)控區(qū)域上,使之隨物體移動(dòng),代碼如下:
本系統(tǒng)使用WebSocket協(xié)議進(jìn)行數(shù)據(jù)對(duì)接,并與UIAnchor面板進(jìn)行數(shù)據(jù)綁定,代碼如下:
同時(shí)增加總開關(guān)按鈕,通過(guò)WebSocket協(xié)議遠(yuǎn)程控制網(wǎng)絡(luò)繼電器模塊的通斷。當(dāng)平臺(tái)接收到報(bào)警信息時(shí),將對(duì)應(yīng)監(jiān)測(cè)點(diǎn)標(biāo)紅,并觸發(fā)alert()彈窗,提醒用戶及時(shí)處理,代碼如下:
3.2.2 后端功能設(shè)計(jì)
電氣火災(zāi)監(jiān)控平臺(tái)后端部分使用Spring Boot框架進(jìn)行開發(fā),通過(guò)以太網(wǎng)通信方式與主控制器進(jìn)行數(shù)據(jù)交互,接收主控制器發(fā)來(lái)的傳感器數(shù)據(jù),匯總信息并存入MySQL數(shù)據(jù)庫(kù)中。同時(shí)服務(wù)器端還會(huì)將接收到的傳感器數(shù)據(jù)與數(shù)據(jù)庫(kù)中存儲(chǔ)的閾值進(jìn)行比較,一旦傳感器數(shù)據(jù)大于閾值,則計(jì)數(shù)器加1;如果傳感器數(shù)據(jù)連續(xù)5次均超過(guò)閾值,則記錄報(bào)警信息,同時(shí)將傳感器數(shù)據(jù)和報(bào)警信息推送到前端。數(shù)據(jù)庫(kù)還包括用戶表,用于存放用戶ID、密碼及管理員賬號(hào)信息。
3.2.3 服務(wù)器部署
前端部分在線開發(fā)完成后,下載ThingJS離線部署包,部署到1號(hào)服務(wù)器運(yùn)行。后端部分部署到2號(hào)服務(wù)器,啟動(dòng)Spring Boot應(yīng)用。前端部分通過(guò)axios請(qǐng)求后端接口,代碼如下:
請(qǐng)求成功后即可將數(shù)據(jù)動(dòng)態(tài)加載到頁(yè)面。ThingJS和Spring Boot應(yīng)用數(shù)據(jù)交互流程如圖4所示。
圖4 ThingJS和Spring Boot應(yīng)用數(shù)據(jù)交互流程
為了驗(yàn)證本系統(tǒng)方案能否滿足實(shí)際生產(chǎn)生活需要,能否有效預(yù)防電氣火災(zāi)事故的發(fā)生,本章進(jìn)行系統(tǒng)性能測(cè)試。選用高精度交流電源、電水壺和電吹風(fēng)等試驗(yàn)裝置測(cè)試本平臺(tái)用電安全監(jiān)控和報(bào)警功能能否正常工作,試驗(yàn)平臺(tái)如圖5所示。將各試驗(yàn)裝置與本系統(tǒng)各個(gè)傳感器相連,首先模擬系統(tǒng)正常運(yùn)行的情況,電氣火災(zāi)預(yù)警平臺(tái)會(huì)顯示各個(gè)區(qū)域的用電安全信息及電源總開關(guān),平臺(tái)左上角可以隱藏監(jiān)控面板,如圖6所示。
圖5 電氣火災(zāi)試驗(yàn)平臺(tái)
圖6 電氣火災(zāi)監(jiān)控平臺(tái)
調(diào)節(jié)交流電源的電流旋鈕,使輸出電流為50 A,模擬發(fā)生線路過(guò)載的情況。如圖7所示,隱患所在區(qū)域會(huì)變成紅色,同時(shí)警報(bào)響起,監(jiān)控面板顯示火災(zāi)隱患類型,提醒用戶及時(shí)處理。
圖7 發(fā)生火災(zāi)隱患時(shí)的監(jiān)控平臺(tái)
以管理員身份登錄電氣火災(zāi)監(jiān)控管理后臺(tái),可查看電氣運(yùn)行異常日志、操作日志、服務(wù)器性能監(jiān)控及用戶賬號(hào)管理,電氣火災(zāi)監(jiān)控管理后臺(tái)如圖8所示。
圖8 電氣火災(zāi)監(jiān)控管理后臺(tái)
基于前后端分離技術(shù)的三維電氣火災(zāi)預(yù)警系統(tǒng),提高了系統(tǒng)開發(fā)效率,并且利用物聯(lián)網(wǎng)技術(shù)實(shí)現(xiàn)了對(duì)可能引發(fā)電氣火災(zāi)的電流、電壓、溫度、剩余電流、功率等數(shù)據(jù)進(jìn)行實(shí)時(shí)采集和數(shù)據(jù)分析;在3D可視化界面上實(shí)現(xiàn)了用電安全信息的遠(yuǎn)程實(shí)時(shí)監(jiān)控和電氣火災(zāi)隱患的實(shí)時(shí)預(yù)警,精確定位火災(zāi)隱患的位置,將電氣火災(zāi)消滅在萌芽之中,保護(hù)了人民的生命財(cái)產(chǎn)安全,具有較大的現(xiàn)實(shí)意義和應(yīng)用價(jià)值。
物聯(lián)網(wǎng)技術(shù)2021年11期