王茁霖
(遼寧西北供水有限責(zé)任公司,遼寧 沈陽(yáng) 110000)
水利工程安全對(duì)下游居民的正常生產(chǎn)、生活有重要的影響。隨著計(jì)算機(jī)技術(shù)的發(fā)展,大壩安全管理信息化建設(shè)已經(jīng)成為現(xiàn)實(shí)。利用現(xiàn)代計(jì)算機(jī)技術(shù),對(duì)大壩安全運(yùn)行狀態(tài)進(jìn)行監(jiān)測(cè),同時(shí),進(jìn)行數(shù)據(jù)處理、分析。通過(guò)搭建信息化平臺(tái),可降低水庫(kù)安全管理工作的難度,遠(yuǎn)程實(shí)現(xiàn)大壩管控。目前,已有較多的水利工程搭建了信息化管理平臺(tái),如:瑪納斯河流域灌區(qū)、都江堰灌區(qū)、黃壁莊水庫(kù)、淇河盤石頭水庫(kù)、雙塔水庫(kù)[1]等。各項(xiàng)水利樞紐在近期改造、建設(shè)過(guò)程中,均引入了“信息化”、“智慧化”監(jiān)測(cè)系統(tǒng),建設(shè)完成后,實(shí)現(xiàn)了水利工程安全自動(dòng)化監(jiān)測(cè),險(xiǎn)情預(yù)警等功能,有效保障了水利工程的正常運(yùn)行[2-4]。針對(duì)目前水電站大壩安全監(jiān)測(cè)存在數(shù)據(jù)不能實(shí)時(shí)計(jì)算分析、展示,長(zhǎng)期運(yùn)行產(chǎn)生大量數(shù)據(jù)難以管理且需要投入大量人力計(jì)算分析等問(wèn)題,設(shè)計(jì)基于Flask框架的大壩監(jiān)測(cè)數(shù)據(jù)自動(dòng)化處理系統(tǒng),為大壩監(jiān)測(cè)數(shù)據(jù)分析提供接口,實(shí)現(xiàn)數(shù)據(jù)查詢、計(jì)算、繪圖、實(shí)時(shí)監(jiān)控及數(shù)據(jù)、圖形遠(yuǎn)程展示等功能。
Flask 屬 于 微 框 架(micro-framework),基 于Python開(kāi)發(fā)并且依賴jinja2模板和Werkzeug WSGI服務(wù),框架十分輕量,更新時(shí)依賴比較少,數(shù)據(jù)處理速度快。Werkzeug是Socket服務(wù)端,用于接收HTTP請(qǐng)求并對(duì)請(qǐng)求進(jìn)行預(yù)處理,然后觸發(fā)Flask框架。交互的內(nèi)容比較簡(jiǎn)單時(shí)只需要開(kāi)發(fā)人員基于Flask框架提供的功能對(duì)請(qǐng)求進(jìn)行相應(yīng)的處理,并返回給用戶;如果返回的數(shù)據(jù)內(nèi)容結(jié)構(gòu)復(fù)雜程度高,需要通過(guò)jinja2模板兩步操作實(shí)現(xiàn)數(shù)據(jù)的傳送即:先將融合了數(shù)據(jù)的模板預(yù)先渲染處理,接著將渲染完成的字符串返回給瀏覽器[5,6]。
從Web程序的一般流程來(lái)看,當(dāng)客戶端想要獲取動(dòng)態(tài)資源時(shí),這個(gè)時(shí)候就會(huì)發(fā)起一個(gè)HTTP請(qǐng)求(比如用瀏覽器訪問(wèn)一個(gè)URL),此時(shí)Web應(yīng)用程序就會(huì)在服務(wù)器后臺(tái)進(jìn)行相應(yīng)的業(yè)務(wù)處理(比如對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作或是進(jìn)行一些計(jì)算操作等),取出用戶需要的數(shù)據(jù),生成相應(yīng)的HTTP響應(yīng)(如果訪問(wèn)的是靜態(tài)資源 ,服務(wù)器則會(huì)直接返回用戶所需的資源,不會(huì)進(jìn)行業(yè)務(wù)處理)。整個(gè)處理工程如圖1所示。
圖1 處理流程圖
在實(shí)際的應(yīng)用中,不同的請(qǐng)求可能會(huì)調(diào)用相同的處理邏輯。這里有著相同業(yè)務(wù)處理邏輯的HTTP請(qǐng)求可以用同一類URL來(lái)標(biāo)識(shí),接著在后臺(tái)定義一個(gè)獲取URL函數(shù),用來(lái)獲取請(qǐng)求中相應(yīng)的數(shù)據(jù),此外還需要建立URL和函數(shù)之間的一一對(duì)應(yīng)關(guān)系。這就是Web開(kāi)發(fā)中所謂的路由分發(fā),如圖 2所示:
圖2 多相同請(qǐng)求處理流程
HTML (Hyper Text Markup Language)指的是超文本標(biāo)記語(yǔ)言,瀏覽器網(wǎng)頁(yè)上所有的顯示內(nèi)容都是通過(guò)一系列HTML標(biāo)簽進(jìn)行描述。它包括一系列標(biāo)簽如文本段落標(biāo)簽(<p>)、圖片標(biāo)簽(<img>)、標(biāo)題標(biāo)簽(<h1><h2><h3><h4>)等。通過(guò)這些標(biāo)簽可以將網(wǎng)絡(luò)上的文檔格式統(tǒng)一,使分散的Internet資源連接為一個(gè)邏輯整體,被認(rèn)為是互聯(lián)網(wǎng)的核心技術(shù)之一。HTML5是最新一代的HTML語(yǔ)言標(biāo)準(zhǔn),語(yǔ)法特征更加明顯,對(duì)原有的功能進(jìn)行調(diào)整和修改,通過(guò)對(duì)新需求的分析,融合進(jìn)了其他的標(biāo)簽,如畫布標(biāo)簽(<canvas>),本文監(jiān)測(cè)數(shù)據(jù)的顯示便是基于畫布標(biāo)簽,這一標(biāo)準(zhǔn)為所有開(kāi)發(fā)人員提供標(biāo)準(zhǔn)化工作基礎(chǔ)。此外,HTML5提高了網(wǎng)絡(luò)服務(wù)應(yīng)用的輕便性和獨(dú)立性,減少了插件依賴。
系統(tǒng)的軟件設(shè)計(jì)采用B/S架構(gòu),B/S是一種以Web技術(shù)為基礎(chǔ)的新型的MIS(Management Information Systems)系統(tǒng)平臺(tái)模式?;贑/S架構(gòu)用戶需要在本地計(jì)算機(jī)上安裝專門的客戶端程序,軟件分布功能弱,無(wú)法實(shí)現(xiàn)快速部署安裝和配置。B/S架構(gòu)優(yōu)點(diǎn)在于無(wú)需安裝應(yīng)用程序,而只需安裝通用的瀏覽器軟件;安裝過(guò)程更加簡(jiǎn)便、網(wǎng)絡(luò)結(jié)構(gòu)更加靈活。
考慮到系統(tǒng)的移植性和跨平臺(tái)性,本系統(tǒng)選擇IntelliJ IDEA的J2EE( Java2 Platform Enterprise Edition)平臺(tái),使用IDEA作為B/S模式的開(kāi)發(fā)工具。J2EE是一個(gè)適用于企業(yè)級(jí)計(jì)算的支持多層、分布式應(yīng)用的平臺(tái),它具有安全性、可移植性、健壯性、多層次結(jié)構(gòu)等特點(diǎn),能夠通過(guò)JDBC方便連接各類數(shù)據(jù)庫(kù),調(diào)用各類接口。根據(jù)目前網(wǎng)頁(yè)平臺(tái)制作的流程,選用開(kāi)發(fā)環(huán)境及開(kāi)發(fā)工具如表 1所示。
表1 開(kāi)發(fā)環(huán)境表
根據(jù)大壩監(jiān)測(cè)數(shù)據(jù)自動(dòng)化處理系統(tǒng)的應(yīng)用需求,通過(guò)對(duì)需求分析和業(yè)務(wù)設(shè)計(jì)分析,進(jìn)行全方位闡述系統(tǒng)的功能設(shè)計(jì)。
3.1.1 數(shù)據(jù)來(lái)源
某實(shí)際工程在建設(shè)早期沒(méi)有在壩體內(nèi)部安裝監(jiān)測(cè)儀器,隨著工程運(yùn)行時(shí)間的不斷增加,運(yùn)行管理人員通過(guò)人工觀測(cè)方式來(lái)掌握工程的運(yùn)行狀態(tài)已逐漸顯得力不從心。因此逐步轉(zhuǎn)向自動(dòng)化監(jiān)測(cè)。從工程自動(dòng)化監(jiān)測(cè)改造之初,通過(guò)對(duì)監(jiān)測(cè)儀器的布置,接口的設(shè)置,數(shù)據(jù)存儲(chǔ)格式設(shè)計(jì),前臺(tái)頁(yè)面功能設(shè)計(jì)等實(shí)現(xiàn)監(jiān)測(cè)數(shù)據(jù)采集、存儲(chǔ)、處理及可視化展示。
3.1.2 數(shù)據(jù)存儲(chǔ)
傳統(tǒng)的數(shù)據(jù)分析是人工在Excel軟件中對(duì)數(shù)據(jù)進(jìn)行計(jì)算分析繪圖處理,在多張表格之間進(jìn)行數(shù)據(jù)復(fù)制粘貼與索引,相當(dāng)麻煩而且容易出錯(cuò)。
本文采用的網(wǎng)頁(yè)端讀取數(shù)據(jù),不涉及到人工對(duì)數(shù)據(jù)的處理。在監(jiān)測(cè)儀器的埋設(shè)過(guò)程中,將監(jiān)測(cè)儀器的接口與數(shù)據(jù)讀取程序的接口進(jìn)行對(duì)接,遠(yuǎn)程設(shè)置儀器的數(shù)據(jù)讀取間隔時(shí)間,監(jiān)測(cè)儀器讀取完監(jiān)測(cè)數(shù)據(jù)后,將讀取的監(jiān)測(cè)數(shù)據(jù)以預(yù)先擬定好的數(shù)據(jù)結(jié)構(gòu)以文本文件(.txt)形式存放到計(jì)算機(jī)相應(yīng)位置。首次讀取數(shù)據(jù)時(shí)將生成相應(yīng)名稱的數(shù)據(jù)文件,當(dāng)不斷讀取新數(shù)據(jù)時(shí)程序會(huì)將最新的數(shù)據(jù)不斷追加到相應(yīng)的數(shù)據(jù)文件中生成最新數(shù)據(jù)文件[7,8]。
本系統(tǒng)不涉及后臺(tái)數(shù)據(jù)庫(kù),開(kāi)發(fā)周期簡(jiǎn)短,便捷迅速。數(shù)據(jù)讀取首先要從本地讀取txt文件,然后將讀取出的字符進(jìn)行處理,生成對(duì)應(yīng)字符的數(shù)值,然后做進(jìn)一步處理,圖3為文件讀取流程。
圖3 文件讀取流程
監(jiān)測(cè)數(shù)據(jù)是評(píng)價(jià)大壩運(yùn)行狀況的可靠依據(jù),實(shí)時(shí)并能夠遠(yuǎn)程在線展示監(jiān)測(cè)數(shù)據(jù)意義十分重要。依據(jù)監(jiān)測(cè)數(shù)據(jù)的時(shí)間序列將監(jiān)測(cè)數(shù)據(jù)顯示在表格內(nèi),具體步驟為:把讀取完成后截取的數(shù)據(jù)由字符轉(zhuǎn)變成數(shù)值;遍歷轉(zhuǎn)換完成后的列表;將列表里的數(shù)值與時(shí)間和測(cè)控單元號(hào)進(jìn)行字符拼接;將拼接完成的字符添加到表格內(nèi)形成規(guī)整、可視化的數(shù)據(jù)格式。圖4為監(jiān)測(cè)數(shù)據(jù)在頁(yè)面上的展示圖。
圖形展示相對(duì)比數(shù)據(jù)展示更加直觀,更能把握監(jiān)測(cè)數(shù)據(jù)的走勢(shì),這對(duì)于掌握大壩運(yùn)行狀況十分重要。
3.4.1 單測(cè)點(diǎn)全時(shí)段顯示
大壩的各壩段并不是單獨(dú)獨(dú)立存在的,一個(gè)壩段的變化反應(yīng)的是壩體整體的變化,因此單個(gè)測(cè)點(diǎn)的全時(shí)段監(jiān)測(cè)數(shù)據(jù)對(duì)于掌握單個(gè)監(jiān)測(cè)儀器所對(duì)應(yīng)的位置處數(shù)據(jù)變化至關(guān)重要,數(shù)據(jù)的時(shí)間前后對(duì)比對(duì)掌握大壩整體運(yùn)行狀態(tài)十分重要。圖5為單測(cè)點(diǎn)全時(shí)段的監(jiān)測(cè)數(shù)據(jù)時(shí)程圖。
圖4 監(jiān)測(cè)數(shù)據(jù)
圖5 單測(cè)點(diǎn)全時(shí)段監(jiān)測(cè)數(shù)據(jù)
3.4.2 多測(cè)點(diǎn)全時(shí)段顯示
單測(cè)點(diǎn)監(jiān)測(cè)數(shù)據(jù)的顯示只能反應(yīng)當(dāng)前監(jiān)測(cè)儀器處的相關(guān)監(jiān)測(cè)數(shù)據(jù)變化,我們需要多個(gè)儀器進(jìn)行空間對(duì)比才能更加直觀的得出監(jiān)測(cè)數(shù)據(jù)的變化進(jìn)而得出壩體運(yùn)行狀況,例如順河向位移分析,我們需要將所有壩段內(nèi)同一高程的監(jiān)測(cè)儀器所監(jiān)測(cè)得到的數(shù)據(jù)進(jìn)行對(duì)比,這樣才能反應(yīng)出大壩順河向的整體位移情況,圖6為多測(cè)點(diǎn)全時(shí)段監(jiān)測(cè)數(shù)據(jù)圖。
圖6 多測(cè)點(diǎn)全時(shí)段監(jiān)測(cè)數(shù)據(jù)
3.4.3 報(bào)警信息展示
展示監(jiān)測(cè)數(shù)據(jù)的目的是為了得到大壩運(yùn)行的狀況,大壩良好的運(yùn)行狀況對(duì)應(yīng)著合理的監(jiān)測(cè)數(shù)據(jù)范圍??梢灶A(yù)先設(shè)置好大壩運(yùn)行良好的監(jiān)測(cè)數(shù)據(jù)范圍,通過(guò)自動(dòng)化的數(shù)據(jù)計(jì)算判斷出哪些數(shù)據(jù)是異常或者超標(biāo),進(jìn)而自動(dòng)判斷出壩體的監(jiān)測(cè)儀器出現(xiàn)問(wèn)題或者大壩的某個(gè)部位出現(xiàn)問(wèn)題,然后做出相應(yīng)處理措施。
系統(tǒng)采用的是Flask框架開(kāi)發(fā)模式,既不需要上傳數(shù)據(jù),保證了數(shù)據(jù)的可靠性、安全性,又極大的提高了數(shù)據(jù)的處理效率,簡(jiǎn)化了管理的復(fù)雜度,節(jié)省了大量人力物力成本;同時(shí)數(shù)據(jù)的實(shí)時(shí)展示、警報(bào)設(shè)置便于對(duì)大壩的安全狀況做出更加客觀、專業(yè)的評(píng)價(jià),實(shí)現(xiàn)了監(jiān)測(cè)數(shù)據(jù)的可視化及大壩安全監(jiān)測(cè)管理的信息化和網(wǎng)絡(luò)化。但是對(duì)于不同廠站間的數(shù)據(jù)借鑒、對(duì)比與傳輸和整個(gè)流域內(nèi)工程監(jiān)測(cè)數(shù)據(jù)的智能管控還難以實(shí)現(xiàn),數(shù)據(jù)孤島現(xiàn)象等還有待進(jìn)一步研究。