王茁霖
(遼寧西北供水有限責任公司,遼寧 沈陽 110000)
水利工程安全對下游居民的正常生產、生活有重要的影響。隨著計算機技術的發展,大壩安全管理信息化建設已經成為現實。利用現代計算機技術,對大壩安全運行狀態進行監測,同時,進行數據處理、分析。通過搭建信息化平臺,可降低水庫安全管理工作的難度,遠程實現大壩管控。目前,已有較多的水利工程搭建了信息化管理平臺,如:瑪納斯河流域灌區、都江堰灌區、黃壁莊水庫、淇河盤石頭水庫、雙塔水庫[1]等。各項水利樞紐在近期改造、建設過程中,均引入了“信息化”、“智慧化”監測系統,建設完成后,實現了水利工程安全自動化監測,險情預警等功能,有效保障了水利工程的正常運行[2-4]。針對目前水電站大壩安全監測存在數據不能實時計算分析、展示,長期運行產生大量數據難以管理且需要投入大量人力計算分析等問題,設計基于Flask框架的大壩監測數據自動化處理系統,為大壩監測數據分析提供接口,實現數據查詢、計算、繪圖、實時監控及數據、圖形遠程展示等功能。
Flask 屬 于 微 框 架(micro-framework),基 于Python開發并且依賴jinja2模板和Werkzeug WSGI服務,框架十分輕量,更新時依賴比較少,數據處理速度快。Werkzeug是Socket服務端,用于接收HTTP請求并對請求進行預處理,然后觸發Flask框架。交互的內容比較簡單時只需要開發人員基于Flask框架提供的功能對請求進行相應的處理,并返回給用戶;如果返回的數據內容結構復雜程度高,需要通過jinja2模板兩步操作實現數據的傳送即:先將融合了數據的模板預先渲染處理,接著將渲染完成的字符串返回給瀏覽器[5,6]。
從Web程序的一般流程來看,當客戶端想要獲取動態資源時,這個時候就會發起一個HTTP請求(比如用瀏覽器訪問一個URL),此時Web應用程序就會在服務器后臺進行相應的業務處理(比如對數據庫進行操作或是進行一些計算操作等),取出用戶需要的數據,生成相應的HTTP響應(如果訪問的是靜態資源 ,服務器則會直接返回用戶所需的資源,不會進行業務處理)。整個處理工程如圖1所示。

圖1 處理流程圖
在實際的應用中,不同的請求可能會調用相同的處理邏輯。這里有著相同業務處理邏輯的HTTP請求可以用同一類URL來標識,接著在后臺定義一個獲取URL函數,用來獲取請求中相應的數據,此外還需要建立URL和函數之間的一一對應關系。這就是Web開發中所謂的路由分發,如圖 2所示:

圖2 多相同請求處理流程
HTML (Hyper Text Markup Language)指的是超文本標記語言,瀏覽器網頁上所有的顯示內容都是通過一系列HTML標簽進行描述。它包括一系列標簽如文本段落標簽(<p>)、圖片標簽(<img>)、標題標簽(<h1><h2><h3><h4>)等。通過這些標簽可以將網絡上的文檔格式統一,使分散的Internet資源連接為一個邏輯整體,被認為是互聯網的核心技術之一。HTML5是最新一代的HTML語言標準,語法特征更加明顯,對原有的功能進行調整和修改,通過對新需求的分析,融合進了其他的標簽,如畫布標簽(<canvas>),本文監測數據的顯示便是基于畫布標簽,這一標準為所有開發人員提供標準化工作基礎。此外,HTML5提高了網絡服務應用的輕便性和獨立性,減少了插件依賴。
系統的軟件設計采用B/S架構,B/S是一種以Web技術為基礎的新型的MIS(Management Information Systems)系統平臺模式。基于C/S架構用戶需要在本地計算機上安裝專門的客戶端程序,軟件分布功能弱,無法實現快速部署安裝和配置。B/S架構優點在于無需安裝應用程序,而只需安裝通用的瀏覽器軟件;安裝過程更加簡便、網絡結構更加靈活。
考慮到系統的移植性和跨平臺性,本系統選擇IntelliJ IDEA的J2EE( Java2 Platform Enterprise Edition)平臺,使用IDEA作為B/S模式的開發工具。J2EE是一個適用于企業級計算的支持多層、分布式應用的平臺,它具有安全性、可移植性、健壯性、多層次結構等特點,能夠通過JDBC方便連接各類數據庫,調用各類接口。根據目前網頁平臺制作的流程,選用開發環境及開發工具如表 1所示。

表1 開發環境表
根據大壩監測數據自動化處理系統的應用需求,通過對需求分析和業務設計分析,進行全方位闡述系統的功能設計。
3.1.1 數據來源
某實際工程在建設早期沒有在壩體內部安裝監測儀器,隨著工程運行時間的不斷增加,運行管理人員通過人工觀測方式來掌握工程的運行狀態已逐漸顯得力不從心。因此逐步轉向自動化監測。從工程自動化監測改造之初,通過對監測儀器的布置,接口的設置,數據存儲格式設計,前臺頁面功能設計等實現監測數據采集、存儲、處理及可視化展示。
3.1.2 數據存儲
傳統的數據分析是人工在Excel軟件中對數據進行計算分析繪圖處理,在多張表格之間進行數據復制粘貼與索引,相當麻煩而且容易出錯。
本文采用的網頁端讀取數據,不涉及到人工對數據的處理。在監測儀器的埋設過程中,將監測儀器的接口與數據讀取程序的接口進行對接,遠程設置儀器的數據讀取間隔時間,監測儀器讀取完監測數據后,將讀取的監測數據以預先擬定好的數據結構以文本文件(.txt)形式存放到計算機相應位置。首次讀取數據時將生成相應名稱的數據文件,當不斷讀取新數據時程序會將最新的數據不斷追加到相應的數據文件中生成最新數據文件[7,8]。
本系統不涉及后臺數據庫,開發周期簡短,便捷迅速。數據讀取首先要從本地讀取txt文件,然后將讀取出的字符進行處理,生成對應字符的數值,然后做進一步處理,圖3為文件讀取流程。

圖3 文件讀取流程
監測數據是評價大壩運行狀況的可靠依據,實時并能夠遠程在線展示監測數據意義十分重要。依據監測數據的時間序列將監測數據顯示在表格內,具體步驟為:把讀取完成后截取的數據由字符轉變成數值;遍歷轉換完成后的列表;將列表里的數值與時間和測控單元號進行字符拼接;將拼接完成的字符添加到表格內形成規整、可視化的數據格式。圖4為監測數據在頁面上的展示圖。
圖形展示相對比數據展示更加直觀,更能把握監測數據的走勢,這對于掌握大壩運行狀況十分重要。
3.4.1 單測點全時段顯示
大壩的各壩段并不是單獨獨立存在的,一個壩段的變化反應的是壩體整體的變化,因此單個測點的全時段監測數據對于掌握單個監測儀器所對應的位置處數據變化至關重要,數據的時間前后對比對掌握大壩整體運行狀態十分重要。圖5為單測點全時段的監測數據時程圖。

圖4 監測數據

圖5 單測點全時段監測數據
3.4.2 多測點全時段顯示
單測點監測數據的顯示只能反應當前監測儀器處的相關監測數據變化,我們需要多個儀器進行空間對比才能更加直觀的得出監測數據的變化進而得出壩體運行狀況,例如順河向位移分析,我們需要將所有壩段內同一高程的監測儀器所監測得到的數據進行對比,這樣才能反應出大壩順河向的整體位移情況,圖6為多測點全時段監測數據圖。

圖6 多測點全時段監測數據
3.4.3 報警信息展示
展示監測數據的目的是為了得到大壩運行的狀況,大壩良好的運行狀況對應著合理的監測數據范圍。可以預先設置好大壩運行良好的監測數據范圍,通過自動化的數據計算判斷出哪些數據是異常或者超標,進而自動判斷出壩體的監測儀器出現問題或者大壩的某個部位出現問題,然后做出相應處理措施。
系統采用的是Flask框架開發模式,既不需要上傳數據,保證了數據的可靠性、安全性,又極大的提高了數據的處理效率,簡化了管理的復雜度,節省了大量人力物力成本;同時數據的實時展示、警報設置便于對大壩的安全狀況做出更加客觀、專業的評價,實現了監測數據的可視化及大壩安全監測管理的信息化和網絡化。但是對于不同廠站間的數據借鑒、對比與傳輸和整個流域內工程監測數據的智能管控還難以實現,數據孤島現象等還有待進一步研究。