蒲博文,趙 毅
(1.中國電建集團西北勘測設計研究院有限公司,西安 710065;2.陜西鎮安抽水蓄能有限公司,西安 710000)
當前水情測報系統在中國水利水電工程的建設過程中有著廣泛的應用,在工程防洪度汛過程中發揮著重要作用。服務于小流域的水情測報系統大都結構較為簡單且規模較小,遙測站網規模大多在幾個到十幾個不等,配置的作業軟件功能單一,雖然實現了雨水情數據自動采集、傳輸和處理,但中心站仍然主要靠人工查詢來獲取數據,獲取數據后,還需進行手動處理,才能對外發布,這種模式下遇到暴雨洪水極端天氣很難做出快速反應。
近年來極端天頻繁發生,短歷時和局部強降雨出現的次數也逐漸增多,這個現象在小流域上表現的更為突出。由于小流域面積小,匯流時間短,強降雨形成的洪水大多峰高量大且預見期短,嚴重影響工程汛期建設安全,甚至危及人民生命財產安全。因此,在防汛值班過程中,工作人員需要在機房24 h連續值守監控雨水情數據,工作量大、效率低、極大的浪費人力物力。
為此已有不少水文工作者提出了很多解決方案[1-9],比如通過短信、電話進行預警信息推送[1,2,5],這兩種方式雖在一定程度上提高了工作效率,但是在遙測站較多時,純文字和語音方式不夠直觀,在汛期高密度的雨水情數據和預警信息推送下,發送短信和電話通知的成本也將大大增加。
為了更好的解決這個問題,本文以位于陜南的在建鎮安抽水蓄能電站為例,依托電站已有水情測報系統數據庫,采用C/S架構開發了一款基于VB.NET編程語言的windows桌面應用程序[11],通過程序界面對雨水情數據直觀展示和實時更新,通過設定雨量、水位(流量)預警閾值進行自動聲音、文字報警[6-9],實現預警信息快速發布。
程序的運行主要依靠水情數據庫的支持,當業務模塊給程序下達指令后,程序通過服務器與數據庫連接并獲取數據,之后程序通過自動計算、預警閾值分析對比得到結果,最后將結果顯示在前端UI界面。程序為用戶提供直觀的人機交互平臺,啟動后完全自動化運行,有效減少了工作人員的頻繁操作,降低了工作強度,增加防汛過程中的反應時間,大幅提升工作效率。程序結構模式見圖1。

圖1 程序結構模式
程序在滿足數據監控和預警的基礎上,結合電站施工期的防汛要求和系統日常運維要求,還增加了數據查詢、水情日、周報和通信監控等模塊,程序主界面見圖2。

圖2 程序主界面
登錄模塊通過驗證用戶賬號、密碼和類型,來決定是否能進入程序主界面,同時針對不同類型的用戶,在主界面所擁有的權限也有所區別。
程序配置模塊主要包括數據庫配置和參數配置兩部分,數據庫配置方便了程序在水情測報系統局域網和外網的使用,在外網端口開放的情況下,外網PC也可以安裝程序進行遠程監控,方便調度指揮中心和施工單位的防汛值班人員獲取信息。
程序主界面即數據監控模塊,在數據庫已配置且驗證連接成功后,按下啟動按鈕開啟實時監控。啟動后會顯示包括雨情、水情以及氣象數據在內的所有實時數據,并且對雨情、水情數據二次加工以顯示不同時段降雨和水位變化趨勢。在程序參數設置中工作人員可自定義設置自動獲取數據頻率,最高可設置為每1 min獲取一次數據。
支持查詢遙測站任意時段的歷史數據,并有圖表顯示,同時支持查詢到的數據導出到Excel表格。模塊界面見圖3。

圖3 數據查詢模塊
能自動查詢系統內遙測站最近24 h數據,通過圖表展示,并每5 min進行一次更新。模塊界面見圖4。

圖4 數據查詢模塊
用于監控遙測站傳送到中心站的數據量和實時電壓等狀態數據,通過設定好的數據缺失和電壓閾值等參數來判斷遙測站運行情況,模塊界面通過流域模型圖顯示各遙測站位置、實時數據和風險處置建議,該模塊有助于運維管理人員快速查看并掌握系統運行狀態,當發生故障時能及早發現并處置,進而保證系統在暴雨期間的運行可靠性。模塊界面見圖5。

圖5 通信監控模塊
這兩個模塊打開后默認顯示經過程序計算加工過的過去1 d、1周的雨水情信息,同時通過日期選擇功能可以查詢過去任意1 d、1周的信息。模塊界面見圖6。

圖6 水情日報模塊
程序開發采用微軟公司的Visual Studio2019開發軟件,利用VB.NET設計語言在Framework4.5框架基礎上完成開發,VB.NET是完全面向對象的編程語言,其中包含了大量windows控件模塊,使得程序設計較為簡單,且具有強大的數據庫訪問功能,非常適合該程序開發。
程序實現數據監控和預警等一系列功能的關鍵點在于數據獲取,只有在獲取準確的數據后才能進行其它功能的開發和實現。所以連接并訪問水情數據庫對整個程序來說是最重要的一步,該電站水情測報系統數據庫采用微軟公司SQL Server2012數據庫來存儲和管理各類型數據。ADO.NET[12]是一組包含在.NET框架中的類庫,用于.NET應用程序各種數據存儲之間的通信。以下簡單展示VB.NET編程語言結合ADO.NET類庫實現連接數據庫并執行查詢的代碼:

Imports System.Data.SqlClient '申明名稱空間(實現對SQL Sever7.0及以上版本數據庫程序訪問)Dim cn As SqlConnection '定義連接對象Dim da As SqlDataAdapter '定義DataAdapterDim ds As DataSet '定義DataSetDim cnStr As String ="Data Source=" & 數據源 & ";Initial Catalog=" & 數據庫 & ";Integrated Security=False;User ID=" & 用戶名 & ";Password=" & 密碼 & ";" '定義連接數據庫的字符串cn = New SqlConnection(cnStr) '實例化數據庫連接對象cn.Open() '打開連接報文查詢 = "select count(PointID) from dbo.RealAppData where PointID=" & Point-ID(i) & " and DataTime between '" &DateAdd("h", -24, 當前時間) & "' and '" & 當前時間 & "'" '數據庫查詢條件da = New SqlDataAdapter(報文查詢, cn) '新的數據適配實例ds = New DataSet() '新的數據集da.Fill(ds, "RealAppData") '將數據適配器查詢到的數據寫入數據集cn.Close() '關閉連接
數據庫連接成功后就可以按需查詢數據,也可根據入庫數據量來判斷是否缺失數據,還可根據入庫的遙測站狀態參數來判斷遙測是否故障。獲取數據后再將數據按照需要的格式進行計算加工,讓其顯示在程序界面上,最后增加定時查詢功能即可實現數據自動化更新。
預警指標[10]確定是實現預警的重要環節,指標過高或過低都會影響預警功能的發揮,因此指標的合理性對預警功能是否發揮作用有很大影響。預警指標主要有雨量指標和水位指標,一般按照兩項指標相結合來設置,結合水情測報系統歷史的實測水位資料設定水位指標,結合國家暴雨應急響應標準和工程設計暴雨標準設定雨量指標。
為了使預警更人性化,程序設置3個選項,分別為開始降雨報警、水位超閾報警和達到響應報警,選中選項才會報警,報警會通過語音播報和底部狀態欄同步展示,這么做的目的是實現按需報警。比如某次降雨很大,起初3個選項全部勾選,當開始降雨后通過報警消息值班人員已經進入值班狀態,就沒必要再報警提醒開始降雨了,可以關閉此選項,同理當水位已經超閾值或降雨量已經到達啟動防汛應急響應的指標,觸發報警后也可以關閉選項,使得報警不那么頻繁。
通過以上功能已經實現了雨水情數據實時監控和預警,但還未涉及信息的發布,隨著社會經濟水平的日益進步,智能手機越來越普及,由此興起的微信、QQ等即時通信軟件使用越來越廣泛,在鎮安抽水蓄能電站應用過程中程序借助電站參建各方的微信防汛工作群,將實時數據和預警信息自動截圖發布到微信群中,實現了雨水情數據和預警信息的快速發布和共享,程序截圖數據相比短信和電話播報,具有簡明直觀,便于查看的特點,同時還省去以短信、電話為媒介傳遞信息的高昂費用。
鎮安抽水蓄能電站工程所在的月河流域位于陜南暴雨中心,汛期經常發生短歷時強降雨,壩址以上流域面積181 km2,由于陜南植被較好,土壤含水量較高易飽和,因此發生強降雨時雨水會快速順著坡面、溝壑匯入主河槽,形成的洪水峰高量大且預見期短,給工程防洪度汛增加了很大難度。
該程序于2020年汛前初步完成開發,2020年汛期開始試用,從試用結果來看,基本實現了實時雨水情監控和預警的既定目標,自動化運行有效緩解了值班人員的工作壓力,提升了工作效率,程序的通信情況監控功能也為運維人員檢查系統運行工況提供了快速通道,數據查詢、實時過程線和日報、周報模塊也給值班人員查閱不同信息提供了便利。但也暴露了一些問題,由于最初設計時未引入多線程運行方式[13],在多界面同時打開時有概率出現運行重疊,造成程序卡頓報錯。對暴露的問題,在汛后也及時完成升級消缺。
2021年汛期陜南雨水充沛,月河流域暴雨頻發,平時流量在1~5 m3/s的月河多次發生洪峰超過100 m3/s洪水,其中以8月22日6時32分出現的320.3 m3/s的洪峰為最大,在這場洪水中該程序長時間以高強度運行,逐小時滾動發布實時雨水情信息,在數據觸發預警閾值時自動報警并發布預警信息,電站綜合調度指揮中心根據預警信息在8月22日凌晨3點啟動防汛四級應急響應,安排施工單位撤離河道沿線人員機械,同時組織應急搶險隊伍進入待命狀態。得益于預警及時和調度指揮中心決策果斷,整場洪水過程中除一些臨時道路和防護設施被沖毀外,用于工程建設的機械設備和人員均無損傷。
2021年月河共發生16場洪水,對電站攔沙壩及擋水壩等施工產生了嚴重影響,在整個防汛過程中該程序均及時準確的提供了雨水情信息和預警信息,綜合調度指揮中心多次根據預警信息調整施工計劃,安排人員和機械設備撤離,使工程受洪水影響的損失降到最低,程序發揮的作用也得到參建各方認可。
(1) 程序通過設置監控頻率和預警閾值,實現了雨水情信息自動監控和預警,達到了緩解值班人員工作壓力、減輕工作量、提升工作效率的目的。
(2) 程序的通信監控模塊為系統故障排查提供了快速通道,實現了系統運行狀態一鍵掌握,提升了運維管理人員的工作效率。
(3) 程序的信息發布模塊打破常規,創新性的與即時通訊軟件相結合,在實現數據信息快速發布和共享的基礎上省去了短信、電話發布信息的高昂費用,取得了顯著的經濟效益。
(4) 程序的數據查詢、日報、周報等模塊讓程序功能更為全面,實現了一專多能,提高了程序滿足不同場景下業務需求的能力。
(5) 程序開發過程中,以安裝簡便、占用內存小、運行時低CPU占用率、能在不同性能Windows設備上部署為目標,通過反復調試驗證,在長時間運行下,程序持續保持穩定流暢、不卡頓,達到了適用性廣、可靠性高的效果。
現在該程序已成為陜西省鎮安抽水蓄能電站水情測報系統不可或缺的一部分,在電站防汛過程中發揮著重要作用。同時該程序也為其它小流域水情測報系統的自動化改造提供了新思路,并成功在其他電站推廣使用,后續該程序還將結合工程實際繼續探索優化,使之在水情測報系統中發揮更大的作用。