(江蘇省駱運(yùn)水利工程管理處 宿遷 223800)
在水利的水文管理系統(tǒng)中,水文數(shù)據(jù)的測(cè)量、報(bào)告屬于工作的重點(diǎn)。本設(shè)計(jì)旨在提供一整套水文數(shù)據(jù)采集物聯(lián)網(wǎng),將傳統(tǒng)的主要依賴人工采集、報(bào)告的方式改為利用物聯(lián)網(wǎng)的方式,實(shí)現(xiàn)將系統(tǒng)內(nèi)的各個(gè)聯(lián)網(wǎng)節(jié)點(diǎn)的水文數(shù)據(jù)首先實(shí)時(shí)傳輸?shù)焦芾硖幖刂行?,然后通過(guò)移動(dòng)數(shù)據(jù)專網(wǎng)接入全省統(tǒng)一的水文自動(dòng)測(cè)報(bào)系統(tǒng)平臺(tái)。
水文自動(dòng)測(cè)報(bào)系統(tǒng)平臺(tái)將原來(lái)比較分散的采集方式,通過(guò)網(wǎng)絡(luò)進(jìn)行連接,并且采用統(tǒng)一的后臺(tái)服務(wù)器,將各個(gè)數(shù)據(jù)采集器上面的數(shù)據(jù)進(jìn)行集中處理,見(jiàn)圖1。
水文自動(dòng)測(cè)報(bào)系統(tǒng)平臺(tái)屬于智慧水利的重要組成部分,為水利的精準(zhǔn)管理提供了重要的數(shù)據(jù)支撐。本系統(tǒng)設(shè)計(jì)包括以下兩個(gè)重要的組成部分:水文數(shù)據(jù)采集器、水文數(shù)據(jù)后臺(tái)管理。
2.1.1 硬件設(shè)計(jì)
水文數(shù)據(jù)采集器(DAQ Box,下稱采集器)包括:傳感器、采集器、傳輸模塊等。采用NXP 公司的工業(yè)級(jí)32 位Cortex-A7 處理器i.MX6ul 作為主控芯片,主頻高達(dá)528MHz,無(wú)論在穩(wěn)定性、可靠性還是處理速度,都能完全滿足系統(tǒng)需求。外圍配備256MB DDR3、512MB NandFlash/4G eMMC,在滿足系統(tǒng)穩(wěn)定運(yùn)行的同時(shí),留有足夠的擴(kuò)展空間。具有10/100Mbps 自適應(yīng)網(wǎng)絡(luò),方便和本地以太網(wǎng)連接。內(nèi)置北斗導(dǎo)航模塊,采集位置信息以及和后臺(tái)管理系統(tǒng)保持時(shí)間同步。通過(guò)4G 通信模塊保證數(shù)據(jù)能實(shí)時(shí)傳輸?shù)郊刂行牡臄?shù)據(jù)服務(wù)器。采用WIFI/BT模塊方便手機(jī)等設(shè)備的本地連接,實(shí)現(xiàn)在現(xiàn)場(chǎng)使用手機(jī)APP 軟件上報(bào)數(shù)據(jù)。使用ZigBee 通信模塊,實(shí)現(xiàn)同一采集器下多個(gè)測(cè)控點(diǎn)的數(shù)據(jù)無(wú)線采集功能。水文數(shù)據(jù)采集器硬件框圖見(jiàn)圖2。
圖 1 水文數(shù)據(jù)采集物聯(lián)網(wǎng)系統(tǒng)示意圖
2.1.2 軟件設(shè)計(jì)
數(shù)據(jù)采集器使用的是Linux 3.14 系統(tǒng),文件系統(tǒng)部分采用了Busybox1.4, ubifs 的文件格式,應(yīng)用軟件使用QT4.8.5 來(lái)設(shè)計(jì)。
應(yīng)用軟件的模塊主要包括:水文傳感器數(shù)據(jù)采集上報(bào)、網(wǎng)絡(luò)管理、軟件版本升級(jí)等。
DAQ Box 采集通道設(shè)計(jì)分為模擬、數(shù)字采集方式。通過(guò)這些采集通道,能連接包括雨量、水位、流量、風(fēng)向、風(fēng)速、溫度、濕度等各類型水文數(shù)據(jù)傳感器。將這些數(shù)據(jù)采集后,統(tǒng)一量化,采用相關(guān)的通信協(xié)議,將具體的數(shù)據(jù)發(fā)送到數(shù)據(jù)處理服務(wù)器(DPS 服務(wù)器)。
網(wǎng)路管理模塊主要用來(lái)管理當(dāng)前DAQ Box 設(shè)備的網(wǎng)絡(luò)連接狀態(tài)。它需要保證設(shè)備在有多種連接方式的情況下,至少有一種網(wǎng)絡(luò)連接方式是穩(wěn)定、可靠的。如果發(fā)生斷網(wǎng)情況,需將網(wǎng)絡(luò)狀態(tài)通知到負(fù)載均衡服務(wù)器(LBS 服務(wù)器)。
由于DAQ Box 的軟件版本在使用過(guò)程中,可能存在升級(jí)的要求,所以在DAQ Box端設(shè)計(jì)了遠(yuǎn)程升級(jí)。DAQ Box 端的遠(yuǎn)程升級(jí)是由管理后臺(tái)主動(dòng)發(fā)起,DAQ Box 端響應(yīng),可以分為自動(dòng)升級(jí)和手動(dòng)升級(jí):自動(dòng)升級(jí)是在后臺(tái)管理中存放最新版本的DAQ Box 的固件,然后系統(tǒng)自動(dòng)輪詢當(dāng)前所有在系統(tǒng)中注冊(cè)的DAQ Box的版本,低于最新版本的則開(kāi)始升級(jí);手動(dòng)升級(jí)為后臺(tái)管理者主動(dòng)點(diǎn)擊DAQ Box 的升級(jí)選項(xiàng)。
水文數(shù)據(jù)物聯(lián)網(wǎng)的管理系統(tǒng)運(yùn)行在Windows Server 操作系統(tǒng)之上,支持Windows Server 2008 及以上版本,需要Oracle 11g 版本的數(shù)據(jù)庫(kù)客戶端運(yùn)行時(shí)環(huán)境支持。管理系統(tǒng)是水文物聯(lián)網(wǎng)系統(tǒng)的重要結(jié)點(diǎn),也是整個(gè)系統(tǒng)的核心組成部分。它位于前端設(shè)備——水文數(shù)據(jù)采集盒子(DAQ Box)和后臺(tái)業(yè)務(wù)系統(tǒng)——數(shù)據(jù)查詢上報(bào)系統(tǒng)之間,為雙方提供數(shù)據(jù)交互服務(wù)。水文數(shù)據(jù)后臺(tái)管理系統(tǒng)包括兩個(gè)部分:
(1)負(fù)載均衡服務(wù),Load Balancing Server(LBS)。主要實(shí)現(xiàn)負(fù)載均衡功能,負(fù)責(zé)為設(shè)備分配設(shè)備管理服務(wù)器。通過(guò)數(shù)據(jù)庫(kù)查詢數(shù)據(jù)處理服務(wù)器的負(fù)載情況,選擇最合適此設(shè)備的數(shù)據(jù)處理服務(wù)器分配給請(qǐng)求的設(shè)備,實(shí)現(xiàn)負(fù)載均衡。
(2)數(shù)據(jù)處理服務(wù),Data Process Server(DPS)。負(fù)責(zé)對(duì)DAQ Box 設(shè)備進(jìn)行配置管理,如向DAQ Box下發(fā)配置、命令,接收數(shù)據(jù)上報(bào)的設(shè)備信息、告警、響應(yīng)和請(qǐng)求等常規(guī)數(shù)據(jù)。定時(shí)查詢數(shù)據(jù)庫(kù)中的命令表,若命令表不為空,則獲取命令下發(fā)到對(duì)應(yīng)的設(shè)備。中轉(zhuǎn)設(shè)備上報(bào)的實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)到WEB 服務(wù)器。采集設(shè)備上報(bào)的告警數(shù)據(jù),保存到數(shù)據(jù)庫(kù)并轉(zhuǎn)發(fā)到WEB 服務(wù)器。定時(shí)按照水文測(cè)報(bào)統(tǒng)一平臺(tái)的數(shù)據(jù)格式上報(bào)水文數(shù)據(jù)。
圖2 水文數(shù)據(jù)采集器硬件框圖
整個(gè)系統(tǒng)的軟件框圖見(jiàn)圖3。
圖3 水文數(shù)據(jù)采集物聯(lián)網(wǎng)系統(tǒng)框圖
上面兩部分的軟件均以控制臺(tái)的形式獨(dú)立運(yùn)行,具體部署時(shí)可以將兩套軟件運(yùn)行在同一臺(tái)服務(wù)器上面,作為兩個(gè)程序進(jìn)程。亦可以根據(jù)系統(tǒng)接入的DAQ Box 的數(shù)量的具體需求,將LBS 和DPS 分開(kāi)使用。如果有大量的DAQ Box 要求接入管理,可以使用多臺(tái)DPS服務(wù)器來(lái)分別處理DAQ Box的數(shù)據(jù),這樣設(shè)計(jì)帶來(lái)了組網(wǎng)方便,在項(xiàng)目實(shí)施的初期,投入也相對(duì)較少,能節(jié)約成本。
在實(shí)際工作中,將兩個(gè)服務(wù)軟件分別運(yùn)行在兩臺(tái)服務(wù)器上,采用這種組網(wǎng)方式,將兩臺(tái)服務(wù)器分別稱為負(fù)載均衡服務(wù)器以及數(shù)據(jù)處理服務(wù)器。
負(fù)載均衡服務(wù)器(端口:16681)<——>水文數(shù)據(jù)采集器(DAQ Box)
負(fù)載均衡服務(wù)器(端口:16692)<——>數(shù)據(jù)處理服務(wù)器(DPS)
負(fù)載均衡服務(wù)器的程序在操作系統(tǒng)啟動(dòng)后自動(dòng)運(yùn)行,開(kāi)始實(shí)現(xiàn)負(fù)載均衡的處理,具體實(shí)現(xiàn)步驟如下:
(1)監(jiān)聽(tīng)設(shè)備端(DAQ Box)的連接請(qǐng)求,接受設(shè)備的連接請(qǐng)求。
(2)接收DAQ Box 端獲取DPS 服務(wù)器的地址信息的請(qǐng)求。1)通過(guò)本地存儲(chǔ)的DAQ Box 列表信息,如果不存在,則進(jìn)行本地?cái)?shù)據(jù)DAQ Box 設(shè)備列表和數(shù)據(jù)庫(kù)同步,如果數(shù)據(jù)庫(kù)中也沒(méi)有配置該DAQ Box,則認(rèn)為非法接入,告警;2)獲取最適合此DAQ Box設(shè)備的DPS 服務(wù)器的地址信息回應(yīng)給設(shè)備;3)最適合此設(shè)備的服務(wù)器按照如下優(yōu)先級(jí)排序:a.手動(dòng)配置,通過(guò)手動(dòng)設(shè)置將某臺(tái)DAQ Box 配在某服務(wù)器上。b.舊設(shè)備,使用上次已經(jīng)分配的服務(wù)。c.新設(shè)備,在服務(wù)器負(fù)載允許范圍內(nèi),選擇邏輯劃分一致的服務(wù)器分配給設(shè)備,比如在同一河流的、同一處管理所內(nèi)。
(3)完成DPS 服務(wù)器分配后,LBS 將相應(yīng)的分配的DPS 服務(wù)器地址發(fā)送給DAQ Box 后,DAQ Box設(shè)備主動(dòng)斷開(kāi)與LBS 服務(wù)器的連接。
(4)如果所有DPS 服務(wù)器即將或已達(dá)到滿負(fù)荷,進(jìn)行告警。
(5)在數(shù)據(jù)庫(kù)中存儲(chǔ)DPS 服務(wù)器進(jìn)程的配置信息(服務(wù)進(jìn)程ID,IP 地址,端口,最大允許連接數(shù),當(dāng)前已經(jīng)連接數(shù)),當(dāng)所有的DPS 服務(wù)器都達(dá)到最大連接數(shù),上報(bào)告警。
(6)處理設(shè)備上報(bào)的DPS 服務(wù)器不能連接的告警;如果設(shè)備多次連接分配的DPS 服務(wù)器失敗后,向LBS 服務(wù)器發(fā)送告警,這個(gè)功能需要DAQ Box 端的嵌入軟件同步實(shí)現(xiàn)。
(7)當(dāng)接收到(6)所示的告警后,寫入數(shù)據(jù)庫(kù)告警表,同時(shí)設(shè)置此DPS 服務(wù)器狀態(tài)為異常(后臺(tái)管理人員看到告警后,修復(fù)對(duì)應(yīng)的服務(wù)器后,需要重新設(shè)置此服務(wù)器狀態(tài),否則分配服務(wù)器會(huì)始終認(rèn)為此服務(wù)異常,而不為其分配設(shè)備),然后重新為設(shè)備分配其他的DPS 服務(wù)器。
(8)連接異常的設(shè)備,由LBS 服務(wù)器來(lái)進(jìn)行告警。LBS 服務(wù)器定時(shí)查詢本地DAQ Box 列表(要定時(shí)與數(shù)據(jù)庫(kù)同步,差異更新,時(shí)間間隔為1s)中安裝狀態(tài)為“正常監(jiān)控”的DAQ Box 是否已經(jīng)向分配服務(wù)器發(fā)起過(guò)申請(qǐng),如果沒(méi)有則告警。
(9)負(fù)責(zé)對(duì)連接的DAQ Box 設(shè)備進(jìn)行驗(yàn)證,如果是非法license 設(shè)備接入,則拒絕為其分配DPS 服務(wù)器地址,如果是重復(fù)license 多次接入,進(jìn)行告警。
數(shù)據(jù)處理服務(wù)器(端口:16688)<——>水文數(shù)據(jù)采集器(DAQ Box)
具體的實(shí)現(xiàn)方式如下:
(1)監(jiān)聽(tīng)DAQ Box設(shè)備端的連接,接受連接請(qǐng)求。
(2)維護(hù)與DAQ Box 設(shè)備端的長(zhǎng)連接。
(3)向DAQ 設(shè)備轉(zhuǎn)發(fā)命令,處理設(shè)備響應(yīng)(實(shí)時(shí)監(jiān)控開(kāi)啟、結(jié)束命令,重分配命令,重啟命令,版本升級(jí))。
(4)接收DAQ 設(shè)備上報(bào)的告警,將告警存入數(shù)據(jù)庫(kù)中。未來(lái)得及存數(shù)據(jù)庫(kù)的告警,一定要及時(shí)備份在本地(特別是在收到重啟命令前),如果是收到退出命令,告警等數(shù)據(jù)未完全存入數(shù)據(jù)庫(kù),則嘗試一段時(shí)間存數(shù)據(jù)庫(kù),如果存完則安全退出,否則,將未存完的數(shù)據(jù)保存在本地磁盤(系統(tǒng)事先確定的文件或其他方式),待系統(tǒng)重啟時(shí),獲取本地磁盤上次未存完的數(shù)據(jù),存入數(shù)據(jù)庫(kù)(注意重復(fù)數(shù)據(jù)的處理)。
(5)接收DAQ 設(shè)備其他請(qǐng)求、命令,進(jìn)行處理。
(6)DPS 服務(wù)器對(duì)連接的DAQ 設(shè)備合法性進(jìn)行驗(yàn)證,拒絕非法license 的DAQ 設(shè)備連接。
(7)監(jiān)控自身負(fù)載情況,寫入數(shù)據(jù)庫(kù),同時(shí)通知LBS 服務(wù)器。
(8)如果達(dá)到或超過(guò)最大負(fù)載,可以通過(guò)配置為拒絕模式,拒絕新設(shè)備的接入。
江蘇省駱運(yùn)水利工程管理處的水文測(cè)控站總計(jì)17 個(gè),分布于駱馬湖周邊及中運(yùn)河、徐洪河、六塘河、新沂河上,該系統(tǒng)開(kāi)發(fā)完成后,實(shí)際運(yùn)行性能穩(wěn)定可靠,使用維護(hù)方便,滿足了駱運(yùn)管理處的水文數(shù)據(jù)采集測(cè)報(bào)要求。同時(shí),該系統(tǒng)不僅適用于中大流域水情數(shù)據(jù)的采集,而且適用于氣象、地震、海洋、森林防火等不同部門的數(shù)據(jù)采集工作■