宗原,嚴(yán)冬
(江蘇大學(xué) 江蘇 鎮(zhèn)江 212013)
隨著土木工程領(lǐng)域的發(fā)展以及大型結(jié)構(gòu)物搭建的日益普遍,我國已經(jīng)進(jìn)入了建筑結(jié)構(gòu)安全事故高發(fā)期,國內(nèi)結(jié)構(gòu)物失效的突發(fā)性和災(zāi)難性事故日益增多,而傳統(tǒng)的離線式結(jié)構(gòu)安全監(jiān)測型系統(tǒng)[1]是根據(jù)某一具體的結(jié)構(gòu)物進(jìn)行監(jiān)測,通過對該結(jié)構(gòu)物下傳感器數(shù)據(jù)采集[2]來監(jiān)控反應(yīng)結(jié)構(gòu)物狀態(tài)的數(shù)據(jù)(如:溫度、濕度、風(fēng)速風(fēng)向等)和在出現(xiàn)數(shù)據(jù)異常的時候產(chǎn)生對應(yīng)的數(shù)據(jù)預(yù)警。因此建立在線的結(jié)構(gòu)安全監(jiān)測機(jī)制已經(jīng)刻不容緩。
目前,國內(nèi)外已有一些基于Web的橋梁、尾礦庫[3]等結(jié)構(gòu)物的安全監(jiān)測系統(tǒng)的研究工作,其中大部分是基于歷史數(shù)據(jù)的展示,監(jiān)測系統(tǒng)只能應(yīng)用于單一結(jié)構(gòu)物且缺少對結(jié)構(gòu)物整體狀態(tài)的評估,整體系統(tǒng)的設(shè)計和上線運(yùn)行時間耗時較長,存在展示信息單一且系統(tǒng)不可重用等缺點(diǎn)。針對以上問題,本文提出了安全監(jiān)測云平臺的體系結(jié)構(gòu),在確保以往結(jié)構(gòu)物數(shù)據(jù)展示的基礎(chǔ)上,新增了監(jiān)測數(shù)據(jù)和告警的實(shí)時推送、結(jié)構(gòu)物整體的實(shí)時評分、用戶定制的數(shù)據(jù)報表以及基于Web的結(jié)構(gòu)物接入和配置功能,大大減少了結(jié)構(gòu)物接入的周期和工作量。
本文旨在搭建一個結(jié)構(gòu)安全監(jiān)測的云平臺來彌補(bǔ)傳統(tǒng)的監(jiān)測型網(wǎng)站[4]的不足,在該云平臺數(shù)據(jù)庫中預(yù)先配置各種類型結(jié)構(gòu)物需要的傳感器、監(jiān)測因素以及一些結(jié)構(gòu)參數(shù),并可以根據(jù)需要接入結(jié)構(gòu)物的類型進(jìn)行動態(tài)調(diào)整。該云平臺總體分為兩部分:1)用戶下所屬結(jié)構(gòu)物的數(shù)據(jù)展示分析,數(shù)據(jù)告警等;2)結(jié)構(gòu)物接入云平臺的詳細(xì)配置功能,接入完成后分配給對應(yīng)的用戶即可立即上線進(jìn)行安全監(jiān)測。針對整個云平臺的數(shù)據(jù)采集存儲和展示過程,本文提出了分層的安全監(jiān)測系統(tǒng)體系結(jié)構(gòu),數(shù)據(jù)接入層將底層傳感器的數(shù)據(jù)采集傳輸?shù)綌?shù)據(jù)庫,服務(wù)平臺層提供數(shù)據(jù)的存儲和持久化操作,并向外提供一些定制的數(shù)據(jù)接口,應(yīng)用層為用戶提供可視化的數(shù)據(jù)展示界面和結(jié)構(gòu)物接入的入口,使得用戶能夠在Web端查看到結(jié)構(gòu)物監(jiān)測歷史和實(shí)時數(shù)據(jù)[5]的曲線圖、表格等,同時還能查看結(jié)構(gòu)物傳感器分布的拓?fù)浣Y(jié)構(gòu)、管理傳感器節(jié)點(diǎn)[6]、接收數(shù)據(jù)告警等。
本文提出了分層的結(jié)構(gòu)安全監(jiān)測云平臺系統(tǒng),其體系結(jié)構(gòu)如圖1所示,由下到上可以分為:數(shù)據(jù)接入層、服務(wù)平臺層和應(yīng)用層。
圖1 云平臺體系結(jié)構(gòu)Fig.1 Cloud platform architecture
基于圖1的體系結(jié)構(gòu),構(gòu)建的結(jié)構(gòu)安全監(jiān)測云平臺的工作方式是:數(shù)據(jù)接入層中有大量的傳感器節(jié)點(diǎn),通過數(shù)據(jù)采集和發(fā)送模塊把數(shù)據(jù)上傳到網(wǎng)絡(luò)服務(wù)器,服務(wù)平臺層將采集到的數(shù)據(jù)存放到數(shù)據(jù)庫,并定制相應(yīng)的數(shù)據(jù)接口和一些進(jìn)程用于實(shí)時的評分和告警,最終應(yīng)用層通過向數(shù)據(jù)接口請求數(shù)據(jù),通過瀏覽器將數(shù)據(jù)合理展示出來。各個層次的具體說明如下:
數(shù)據(jù)接入層由傳感器和數(shù)據(jù)發(fā)送模塊DTU組成。常見的一些傳感器類型有:表面應(yīng)變計、加速度傳感器、溫濕度傳感器等。云平臺中不同的結(jié)構(gòu)物下配置不同數(shù)量和種類的傳感器節(jié)點(diǎn),傳感器接入到DTU上,由DTU將采集數(shù)據(jù)通過3G或者WIFI發(fā)送到服務(wù)平臺層。
在分層的結(jié)構(gòu)安全監(jiān)測云平臺中,服務(wù)平臺層是應(yīng)用層的數(shù)據(jù)支撐,上層Web端穩(wěn)定可靠的運(yùn)行離不開服務(wù)平臺層提供的數(shù)據(jù)接口和各種服務(wù)進(jìn)程。在本云平臺中,服務(wù)平臺層主要包括以下幾個模塊:數(shù)據(jù)接口、推送服務(wù)模塊、評分進(jìn)程、告警進(jìn)程。
1.2.1 數(shù)據(jù)接口
數(shù)據(jù)接口的主要任務(wù)是為Web端提供數(shù)據(jù)源,Web端將得到的數(shù)據(jù)以曲線圖、表格等多種形式展現(xiàn)給用戶。數(shù)據(jù)接口使用了ORM的數(shù)據(jù)持久化框架[7],通過NHibernate技術(shù)[8]將持久化類映射到SQL關(guān)系數(shù)據(jù)表結(jié)構(gòu),如圖2所示。
圖2 數(shù)據(jù)接口持久化框架Fig.2 Persistence framework of data interface
基于圖2的數(shù)據(jù)持久化框架,NHibernate通過創(chuàng)建持久化類來完成對象關(guān)系映射,再通過一系列XML映射文件,將持久化類與關(guān)系數(shù)據(jù)庫表一一對應(yīng)起來,從而實(shí)現(xiàn)系統(tǒng)業(yè)務(wù)數(shù)據(jù)的持久化。當(dāng)Web應(yīng)用通過數(shù)據(jù)接口訪問數(shù)據(jù)庫時,首先讀取NHibernate配置文件,再通過配置文件中找到持久化類的XML映射文件,根據(jù)該映射文件得到相應(yīng)的持久化類,從而可以對類進(jìn)行操作。最后將這些對類的操作封裝成Web API的數(shù)據(jù)接口,并對外發(fā)布成Web服務(wù),客戶端可以通過HTTP的GET和POST請求方式向數(shù)據(jù)接口請求數(shù)據(jù)或者提交表單,服務(wù)器根據(jù)請求的URL內(nèi)容操作持久化類來查找對應(yīng)的數(shù)據(jù)集,并以一種輕量級的數(shù)據(jù)交換格式JSON返回給客戶端。
ASP.NET Web API可以創(chuàng)建功能強(qiáng)大的數(shù)據(jù)接口,支持在瀏覽器或者移動客戶端中訪問,定義了默認(rèn)的路由機(jī)制通過查詢請求URL中的參數(shù)來定位資源,關(guān)鍵在于構(gòu)建易于理解且結(jié)構(gòu)良好的URL。Web API采用JSON作為返回數(shù)據(jù)的格式,因?yàn)镴SON較常見的XML格式更加輕量級,更易于閱讀和解析處理。如返回傳感器某段時間歷史數(shù)據(jù)的接口如下所示:
其中sensorID是傳感器編號,startDate和endData是查詢的起始時間和結(jié)束時間,返回的JSON格式的數(shù)據(jù)集如下所示:
服務(wù)平臺層的數(shù)據(jù)接口整體結(jié)構(gòu)如圖3所示,總體包括用戶、結(jié)構(gòu)物、告警、監(jiān)測因素、傳感器、采集設(shè)備、數(shù)據(jù)報表、系統(tǒng)日志等模塊。每個模塊都有對應(yīng)的增刪改查的數(shù)據(jù)接口。
1.2.2 推送服務(wù)模塊
在云平臺中,對于一些實(shí)時性要求比較高的功能,比如一些監(jiān)測因素數(shù)據(jù)的實(shí)時展示、告警的實(shí)時推送等,這些功能的實(shí)現(xiàn)都需要一種服務(wù)端向客服端主動發(fā)起通信的機(jī)制。
圖3 數(shù)據(jù)接口整體結(jié)構(gòu)Fig.3 Contents of data interface
在傳統(tǒng)的Web客戶端中,由于http協(xié)議本身是無狀態(tài),只能由客戶端主動發(fā)起連接。其中Ajax長輪詢是最常用的解決實(shí)時性展示需求的技術(shù),通過間隔不斷的異步Ajax請求去保持?jǐn)?shù)據(jù)刷新,但這也很大程度加重的服務(wù)器的負(fù)載。隨著HTML5技術(shù)的發(fā)展,出現(xiàn)了另一種實(shí)時通信機(jī)制:Web Socket。WebSocket是一種全雙工的雙向通信機(jī)制,可以在Web客戶端和服務(wù)器之間提供一種類似TCP socket的持續(xù)的、雙向的、有狀態(tài)的通信方式。推送服務(wù)模塊的整體框架如圖4所示。
圖4 推送服務(wù)模塊整體框架Fig.4 Overall framework of pushing service
基于圖4的框架結(jié)構(gòu),應(yīng)用程序建立一個實(shí)時連接需要向推動服務(wù)模塊發(fā)送訂閱請求,訂閱服務(wù)進(jìn)程將訂閱請求加入消息隊(duì)列MQ中,當(dāng)產(chǎn)生新數(shù)據(jù)時由推送服務(wù)通過Websocket向Web端推送數(shù)據(jù),產(chǎn)生新告警時推送給訂閱進(jìn)程,由短信模塊向用戶發(fā)送短信告警。推送結(jié)束后將該連接從MQ隊(duì)列中移除。
1.2.3 告警和評分進(jìn)程
告警進(jìn)程和評分進(jìn)程是作為服務(wù)平臺層的業(yè)務(wù)數(shù)據(jù)的支撐,其處理流程如圖5所示。告警進(jìn)程是根據(jù)傳感器的采集數(shù)據(jù)所在的閾值范圍來判斷是否產(chǎn)生對應(yīng)的數(shù)據(jù)告警。評分進(jìn)程是通過結(jié)構(gòu)物下各個傳感器配置的閾值和權(quán)重分級計算出當(dāng)前結(jié)構(gòu)物的整體評分,并提供歷史評分和實(shí)時評分的查詢接口。評分規(guī)則按如下公式計算:
公式中:W是權(quán)重,S是評分,即結(jié)構(gòu)物下所有傳感器評分和對應(yīng)的權(quán)重乘積之和,其中傳感器的評分由配置的閾值范圍決定。
圖5 評分和告警處理流程Fig.5 Processing of rate and data alarm
在本文提出的結(jié)構(gòu)安全監(jiān)測云平臺體系結(jié)構(gòu)中,應(yīng)用層位于最上層,主要是基于Web的監(jiān)測數(shù)據(jù)展示和結(jié)構(gòu)物接入后臺管理。其主要功能結(jié)構(gòu)如圖6所示。
圖6 云平臺應(yīng)用層體系結(jié)構(gòu)Fig.6 Application layer architecture of cloud platform
圖6是云平臺應(yīng)用層的主要模塊劃分,數(shù)據(jù)展示和結(jié)構(gòu)物接入是應(yīng)用層的兩大模塊。其中數(shù)據(jù)展示模塊詳細(xì)說明如下:
1)系統(tǒng)主頁。該模塊主要展示用戶最關(guān)心的當(dāng)前結(jié)構(gòu)物的總體評分,可以反映出結(jié)構(gòu)物的實(shí)時健康狀態(tài)。拓?fù)鋱D是展示結(jié)構(gòu)物下傳感器的分布情況,并可以通過鼠標(biāo)懸浮事件查看各個傳感器的最新數(shù)據(jù)。
2)監(jiān)測項(xiàng)目數(shù)據(jù)展示。該模塊主要提供傳感器歷史和實(shí)時數(shù)據(jù)查詢功能,用戶選擇傳感器類型、節(jié)點(diǎn)、起始時間后,在Web端以曲線圖和表格的形式展示出傳感器數(shù)據(jù),其中繪制圖表時采用了開源的JS插件Highcharts。
3)GIS地圖展示。當(dāng)一個用戶下接入多個結(jié)構(gòu)物時,用GIS地圖模塊直觀地展示接入結(jié)構(gòu)物的位置信息,便于用戶在多個結(jié)構(gòu)物之間做切換。
4)告警管理。該模塊主要是查看當(dāng)前用戶下所屬結(jié)構(gòu)物產(chǎn)生的告警信息,并按照已處理和未處理分類,用戶可以通過確認(rèn)未處理告警將告警狀態(tài)置為已處理。此外,用戶還可以配置短信預(yù)警的接收人,當(dāng)系統(tǒng)產(chǎn)生新的告警時會以短信的方式通知接收人。
5)報表管理。系統(tǒng)會按結(jié)構(gòu)物、監(jiān)測因素生成對應(yīng)的數(shù)據(jù)報表,報表類型有年、月、日報表,用戶可以查看和下載。
結(jié)構(gòu)物接入模塊是可以快速將新的結(jié)構(gòu)物接入配置并上線監(jiān)測,其詳細(xì)說明如下:
1)結(jié)構(gòu)物管理。該模塊除了包含新增、修改、刪除結(jié)構(gòu)物的操作外,還包括對結(jié)構(gòu)物分配需要監(jiān)測的因素,配置對應(yīng)的傳感器組,然后對傳感器設(shè)置閾值和權(quán)重。
2)告警管理。不同于用戶下的告警管理模塊,該模塊是在后臺進(jìn)行告警過濾,將需要展示的告警下發(fā)給對應(yīng)的用戶,并可以設(shè)置告警產(chǎn)生的規(guī)則等。
3)報表管理。該模塊主要用于配置展示給用戶的報表模板。
4)用戶管理。該模板用于創(chuàng)建或刪除接入云平臺的用戶,用戶創(chuàng)建完成后可以將系統(tǒng)中的結(jié)構(gòu)物分配給用戶,用戶和結(jié)構(gòu)物之間是多對多的關(guān)系。
如上所述,借助服務(wù)平臺層提供的數(shù)據(jù)支撐,云平臺的應(yīng)用層提供給用戶數(shù)據(jù)展示、告警推送、后臺接入等功能,滿足了監(jiān)測數(shù)據(jù)的可視化、預(yù)警的實(shí)時推送和平臺接入入口等需求。
按照如圖1的體系結(jié)構(gòu)搭建結(jié)構(gòu)安全監(jiān)測云平臺系統(tǒng),傳感器采集的數(shù)據(jù)通過DTU傳輸?shù)椒?wù)平臺層,系統(tǒng)服務(wù)平臺層部署在一臺Windows Server 2008服務(wù)器上。其中數(shù)據(jù)接口和推送服務(wù)模塊都是由.NET技術(shù)實(shí)現(xiàn),數(shù)據(jù)庫采用SQL Server數(shù)據(jù)庫并使用了NHibernate數(shù)據(jù)持久化的技術(shù)。
Web端開發(fā)使用基于BootStrap的前端開源框架,數(shù)據(jù)繪圖等使用了Highcharts的開源插件,已在谷歌、火狐、IE等主流瀏覽器上測試運(yùn)行成功。如圖7所示,用戶選擇查詢的傳感器節(jié)點(diǎn)和時間段后,可以得到對應(yīng)歷史數(shù)據(jù)的趨勢圖,右邊的表格展示了數(shù)據(jù)的最值和傳感器的歷史告警、閾值等信息。如圖8所示,在結(jié)構(gòu)物接入管理頁面,用戶可以新增結(jié)構(gòu)物,結(jié)構(gòu)物的方案配置里包括結(jié)構(gòu)物監(jiān)測因素、傳感器、閾值權(quán)重的配置等。
本文以結(jié)構(gòu)安全監(jiān)測應(yīng)用為背景,提出了搭建一個分層的在線安全監(jiān)測的Web云平臺系統(tǒng),根據(jù)市場和用戶需求,實(shí)現(xiàn)了結(jié)構(gòu)物快速接入并上線運(yùn)行監(jiān)測的基本功能,給用戶提供了可視化的監(jiān)測界面。在后續(xù)工作中,可以根據(jù)不同結(jié)構(gòu)物展示的內(nèi)容差異,對云平臺進(jìn)行優(yōu)化以提高系統(tǒng)的可擴(kuò)展性,從而滿足各種應(yīng)用場景。
圖7 云平臺數(shù)據(jù)查詢運(yùn)行效果Fig.7 Operating results of cloud platform data query
圖8 云平臺結(jié)構(gòu)物管理運(yùn)行效果Fig.8 Operating results of cloud platform structure management
[1]WANG Hong-hui,TUO Xian-guo,ZHANG Gui-yu.Panzhi hua airport landslide and an emergeency monitoring and warning system based on the internet of things[J].Journal of Mountain Science,2013(5):873-884.
[2]LIU Xing,WU Zhong-ru,YANG Yang.Information fusion diagnosis and early-warning method for monitoring the longterm service safety of high dams[J].Journal of Zhejiang University-Science A (Applied Physics&Engineering),2012(9):687-699.
[3]王建國,李磊.基于ASP.NET的尾礦庫在線安全監(jiān)測系統(tǒng)設(shè)計[J].計算機(jī)與數(shù)字工程,2014(1):91-94.WANG Jianguo,LI Lei.Design of tailing pond online safety monitoring system based on ASP.NET[J].Computer&Digital Engineering,2014(1):91-94.
[4]張勇華.基于Web中間件的運(yùn)維管理系統(tǒng)的性能優(yōu)化方法研究與實(shí)踐[J].電信科學(xué),2011(11):147-154.ZHANG Yong-hua.Research and practice of middleware performance optimization based on Web EOMS[J].Telecommunications Science,2011(11):147-154.
[5]賀超波,陳啟買.基于Web的實(shí)時數(shù)據(jù)監(jiān)測系統(tǒng)的研究與實(shí)踐[J].計算機(jī)技術(shù)與發(fā)展,2011(3):200-204.HE Chao-bo,CHEN Qi-mai.Research and practice of realtime data monitoring system based on Web[J].Computer Technology And Development,2011(3):200-204.
[6]韓吉,周杰,杜景林.基于Android的氣象WSN監(jiān)測系統(tǒng)設(shè)計與實(shí)現(xiàn)[J].計算機(jī)工程與設(shè)計,2014(8):2709-2714.HAN Ji,ZHOU Jie,DU Jing-lin.Design and implementation of monitoring system for meteorology WSN based on Andriod[J].Computer Engineering and Design,2014(8):2709-2714.
[7]李杰.基于ORM的輕量級數(shù)據(jù)持久化技術(shù)研究及應(yīng)用[J].計算機(jī)科學(xué),2010(9):190-193.LIJie.Research and application oflightweightdata persistence technology based on ORM[J].Computer Science,2010(9):190-193.
[8]趙廣利.基于NHibernate的數(shù)據(jù)持久化方案 [J].計算機(jī)工程,2009,35(20):53-55.ZHAO Guang-li.Scheme of data persistence model based on NHibernate[J].Computer Engineering,2009,35(20):53-55.