駱東松,曾錫安,武曉峰
(蘭州理工大學(xué) 電氣工程與信息工程學(xué)院,蘭州730050)
生態(tài)流量是河流生態(tài)系統(tǒng)的一項重要指標(biāo),水電站通過下泄一定流量來保證下游生態(tài)流量需求的過程稱為生態(tài)放流。由于生態(tài)放流是維持下游河流生態(tài)功能的基本途徑[1],同時可能影響水電站的經(jīng)濟效益,因此對生態(tài)放流過程的監(jiān)控是監(jiān)督水電站生態(tài)運行情況、保障下游河流生態(tài)功能不可缺少的技術(shù)手段。
結(jié)合水電站決策管理與生態(tài)保護需求,目前生態(tài)放流監(jiān)控系統(tǒng)在以下幾個方面還具有一定的局限性:
監(jiān)測指標(biāo)單一例如洮河某已建水電站生態(tài)放流系統(tǒng)僅監(jiān)測流量一項指標(biāo)[2]。而生態(tài)放流監(jiān)控系統(tǒng)一般還需要監(jiān)測流量、流速、水位、水溫等多項參數(shù)才足以表征河流生態(tài)系統(tǒng)健康狀況。
監(jiān)督不規(guī)范水電站需將生態(tài)放流實時數(shù)據(jù)上傳監(jiān)管部門接受監(jiān)督,但監(jiān)管部門得到的數(shù)據(jù)往往已經(jīng)過電站各軟件系統(tǒng)間的多層轉(zhuǎn)發(fā)和處理,數(shù)據(jù)實時性差、可信度低。
信息不共享生態(tài)放流實際監(jiān)測數(shù)據(jù)通常僅由建設(shè)單位掌握,一般單位和個人很難獲取相關(guān)信息,不利于對水電站生態(tài)運行情況的監(jiān)督及對河流生態(tài)的研究。
因此,本文針對張掖市某水電站的實際情況,在傳統(tǒng)生態(tài)放流遠(yuǎn)程監(jiān)控系統(tǒng)的基礎(chǔ)上,設(shè)計了多參數(shù)監(jiān)測、生態(tài)放流數(shù)據(jù)實時上傳監(jiān)管部門、監(jiān)測數(shù)據(jù)互聯(lián)網(wǎng)共享等功能的新型水電站生態(tài)放流遠(yuǎn)程監(jiān)控系統(tǒng)。
生態(tài)放流遠(yuǎn)程監(jiān)控系統(tǒng)包括執(zhí)行器/傳感器、PLC(可編程邏輯控制器)、HMI(人機界面)、生態(tài)放流主機等部分。本文結(jié)合張掖市某水電站的實際需求,增加生態(tài)放流數(shù)據(jù)實時上傳監(jiān)管部門、網(wǎng)站發(fā)布等功能,系統(tǒng)總體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)Fig.1 Overall structure of the system
傳感器采集的信息通過PLC上傳至HMI和生態(tài)放流主機。監(jiān)控系統(tǒng)的控制指令通過PLC下發(fā)至執(zhí)行器。HMI架設(shè)在閘門操作室,實現(xiàn)系統(tǒng)的本地監(jiān)控。在值班室生態(tài)放流主機中安裝遠(yuǎn)程監(jiān)控軟件,監(jiān)測數(shù)據(jù)一方面實時上傳監(jiān)管部門,另一方面存入遠(yuǎn)程數(shù)據(jù)庫。以數(shù)據(jù)庫為支撐,在Web服務(wù)器中開發(fā)生態(tài)放流遠(yuǎn)程監(jiān)測系統(tǒng)網(wǎng)頁,并將網(wǎng)頁發(fā)布至互聯(lián)網(wǎng),實現(xiàn)水電站生態(tài)放流數(shù)據(jù)共享。
硬件系統(tǒng)主要功能是采集生態(tài)放流必要參數(shù),調(diào)節(jié)控制閘門開度。
生態(tài)放流參數(shù)包括水溫、水位、閘門開度、流量、流速等。
水溫、水位、閘門開度數(shù)據(jù)采集分別通過溫度傳感器、超聲波液位計、閘位計將相應(yīng)信號轉(zhuǎn)換為4~20 mA標(biāo)準(zhǔn)電流信號,作為PLC的3路模擬信號輸入,上位軟件通過代碼進行A/D轉(zhuǎn)換,顯示水溫、水位、閘門開度數(shù)據(jù)。A/D轉(zhuǎn)換公式如下:
式中,A為傳感器測量值;A0、Am分別為傳感器最低量程和最高量程;D為4~20 mA標(biāo)準(zhǔn)電信號A/D轉(zhuǎn)換后的數(shù)值;D0、Dm分別為4~20 mA標(biāo)準(zhǔn)電信號A/D轉(zhuǎn)換后的最小數(shù)值和最大數(shù)值。
流量的測量方式多樣[3-4],本文根據(jù)該水電站的實際情況,選擇在生態(tài)放流閘門出水口安裝DXLSX-1多普勒超聲波流量計。該流量計可測量流量、流速等參數(shù),并提供RS485接口,支持Modbus協(xié)議。數(shù)據(jù)的傳輸采用命令應(yīng)答方式,上位機發(fā)出命令,流量計做出相應(yīng)的回答,最后由上位機監(jiān)控軟件參照協(xié)議地址解析流量、流速數(shù)據(jù)。
控制器選用西門子S7-1200系列PLC,CPU型號1212C,具有集成的PROFINET接口,可以完全兼容工業(yè)以太網(wǎng)。生態(tài)放流主機、HMI和PLC之間通過以太網(wǎng)連接,上位機可直接向PLC發(fā)送指令。PLC接收上位機發(fā)送的指令并通過臺達B系列VFD045B43A變頻器控制卷揚機將閘門上升或下降一定距離,從而控制閘門開度。
生態(tài)放流遠(yuǎn)程監(jiān)控系統(tǒng)包括人機界面、生態(tài)放流主機、Web服務(wù)器三套軟件,系統(tǒng)軟件功能模塊如圖2所示。
圖2 系統(tǒng)軟件功能模塊Fig.2 Software function module of the system
公共功能模塊有:用戶管理模塊、數(shù)據(jù)管理模塊、信息監(jiān)測模塊、報警顯示模塊、控制模塊。用戶管理模塊主要負(fù)責(zé)識別用戶登錄信息和權(quán)限劃分;數(shù)據(jù)管理模塊負(fù)責(zé)數(shù)據(jù)的查詢、分析、存儲,并具有生成臺賬、打印報表功能;信息監(jiān)測模塊通過曲線和數(shù)據(jù)的方式顯示生態(tài)放流的流量、流速、水溫、水位、累計流量等信息;報警顯示模塊根據(jù)設(shè)置的流量、水溫、水位限值進行越限報警,并通過提示框和語音提示用戶;控制模塊通過監(jiān)控軟件與PLC控制器的數(shù)據(jù)通訊,發(fā)送遠(yuǎn)程命令實現(xiàn)現(xiàn)場設(shè)備的遠(yuǎn)程控制。
另外,生態(tài)放流主機具有數(shù)據(jù)上傳模塊,可將實時數(shù)據(jù)上傳至政府監(jiān)管部門;Web服務(wù)器具有網(wǎng)頁發(fā)布模塊,可實現(xiàn)數(shù)據(jù)的發(fā)布共享,提供移動端監(jiān)測服務(wù)。
使用編程軟件組態(tài)、編程,并通過對數(shù)據(jù)庫的增、刪、查、改操作可實現(xiàn)信息監(jiān)測模塊、報警顯示模塊、控制模塊、用戶管理模塊、數(shù)據(jù)管理模塊等公共功能模塊。本節(jié)主要介紹數(shù)據(jù)上傳模塊及網(wǎng)頁發(fā)布模塊。
生態(tài)放流數(shù)據(jù)監(jiān)督機制如圖3所示。數(shù)據(jù)庫服務(wù)器架設(shè)在監(jiān)管部門,生態(tài)放流主機通過VPN(虛擬專用網(wǎng)絡(luò))與監(jiān)管部門進行加密通訊,生態(tài)放流實時數(shù)據(jù)上傳至數(shù)據(jù)庫服務(wù)器,監(jiān)管平臺通過訪問內(nèi)部數(shù)據(jù)庫對水電站生態(tài)放流過程進行監(jiān)督。
圖3 生態(tài)放流數(shù)據(jù)監(jiān)督機制Fig.3 Ecological flow release data monitoring mechanism
生態(tài)放流實時數(shù)據(jù)的上傳采用HTTP協(xié)議,通過URL(統(tǒng)一資源定位符)攜帶一定數(shù)據(jù)格式的參數(shù)傳輸至數(shù)據(jù)庫服務(wù)器,數(shù)據(jù)庫服務(wù)器接收數(shù)據(jù)并返回結(jié)果,數(shù)據(jù)上傳完成。
3.1.1 數(shù)據(jù)格式選擇
選擇合適的數(shù)據(jù)交互格式對數(shù)據(jù)傳輸效率、代碼編寫和維護有重要意義。數(shù)據(jù)交互通用格式包含XML和JSON。XML與JSON性能對比[5-6]如表1所示,XML數(shù)據(jù)體積大,傳輸占帶寬,代碼復(fù)雜不易維護,因此采用JSON數(shù)據(jù)交互格式。
表1 XML與JSON性能對比Tab.1 XML and JSON performance comparison
JSON是一種輕量級的數(shù)據(jù)傳輸格式,基于JavaScript語言的一個子集,易于開發(fā)者編碼和機器解析。JSON有兩種結(jié)構(gòu)類型:
對象 無序的Name/Value集合,如圖4所示。以左大括號開始,右大括號結(jié)束,中間是無序鍵值對,鍵為string,值為value(包含任意的JSON數(shù)據(jù)類型,下同),鍵值對之間用逗號分隔。例如:{flow:4,speed:7}。
圖4 JSON對象結(jié)構(gòu)圖Fig.4 JSON object structure diagram
數(shù)組 有序的Value集合,如圖5所示。以左中括號開始,右中括號結(jié)束,中間是有序Value值,Value 值之間用逗號分隔。 例如:{4,7}。
圖5 JSON數(shù)組結(jié)構(gòu)圖Fig.5 JSON array structure diagram
3.1.2 數(shù)據(jù)上傳監(jiān)管部門功能實現(xiàn)
生態(tài)放流主機與數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)交互流程如圖6所示。將對象中存儲的生態(tài)放流數(shù)據(jù)轉(zhuǎn)換為JSON格式,通過URL攜帶數(shù)據(jù)的傳值方式,訪問數(shù)據(jù)庫服務(wù)器后臺指定程序,后臺程序解析數(shù)據(jù)并返回解析結(jié)果,解析成功即存入數(shù)據(jù)庫中。
圖6 生態(tài)放流主機與數(shù)據(jù)庫服務(wù)器數(shù)據(jù)交互流程Fig.6 Process of data exchange betweenecological flow release host and database server
使用微軟的WebBrowser控件實現(xiàn)生態(tài)放流主機與數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)交互。WebBrowser可以將控件導(dǎo)航到指定的URL,并通過Navigate方法將后臺程序處理后返回碼加載到WebBrowser控件中。關(guān)鍵代碼如下:
生態(tài)放流數(shù)據(jù)上傳監(jiān)管部門界面如圖7所示。
圖7 生態(tài)放流數(shù)據(jù)上傳監(jiān)管部門界面Fig.7 Interface of ecological flow release data uploading regulatory authority
生態(tài)放流遠(yuǎn)程監(jiān)測系統(tǒng)網(wǎng)頁基于ASP.NET設(shè)計,采用MVC模式將程序分為模型(Model)、視圖(View)、控制器(Controller)3 層。 模型層負(fù)責(zé)后臺數(shù)據(jù)庫數(shù)據(jù)存??;視圖層為前端頁面,主要使用HTML、CSS和JavaScript技術(shù)搭建,為瀏覽器提供良好的應(yīng)用交互;控制器層負(fù)責(zé)前端和后臺的信息交互。生態(tài)放流遠(yuǎn)程監(jiān)測系統(tǒng)網(wǎng)頁數(shù)據(jù)共享界面如圖8所示。
圖8 網(wǎng)頁數(shù)據(jù)共享界面Fig.8 Interface of data sharing on webpage
本節(jié)主要研究控制器層的信息交互過程??刂破鲗拥男畔⒔换ナ侵竁eb瀏覽器與服務(wù)器之間的交互,關(guān)鍵技術(shù)包括通信協(xié)議的選擇和實現(xiàn)。
3.2.1 瀏覽器與服務(wù)器通信協(xié)議方案選擇
Web瀏覽器與服務(wù)器的雙向通信機制主要有HTTP協(xié)議和WebSocket協(xié)議。HTTP與WebSocket性能對比[7-8]如表2所示,WebSocket在可實現(xiàn)全雙工通信,數(shù)據(jù)傳輸實時性好,服務(wù)器與客戶端可以相互聯(lián)系,連接效率更高。因此本節(jié)選擇WebSocket協(xié)議實現(xiàn)瀏覽器與服務(wù)器信息交互。
表2 HTTP與WebSocket性能對比Tab.2 HTTP and WebSocket performance comparison
3.2.2 WebSocket實現(xiàn)
WebSocket是建立在TCP傳輸層協(xié)議上的應(yīng)用層協(xié)議,協(xié)議分為握手和數(shù)據(jù)傳輸兩部分。通信程序流程如圖9所示。
首先,服務(wù)端創(chuàng)建套接字,監(jiān)聽端口,等待客戶端的握手請求。
其次,客戶端打包握手信息,通過HTTP協(xié)議發(fā)送握手信息,請求升級為WebSocket協(xié)議。其中,握手信息包含瀏覽器隨機生成的一串base64碼校驗信息、需要的服務(wù)和協(xié)議版本號。服務(wù)端接收握手信息并進行處理,同意升級后通過HTTP協(xié)議返回響應(yīng)。其中,返回的響應(yīng)中包含另一串base64碼和使用的服務(wù)??蛻舳舜_認(rèn)響應(yīng),雙向通信通道建立,握手完成。
圖9 WebSocket通信程序流程Fig.9 WebSocket communication programming process
最后,服務(wù)端和客戶端通過WebSocket協(xié)議進行全雙工通信,實現(xiàn)數(shù)據(jù)發(fā)送、接收、解析等數(shù)據(jù)傳輸部分。.NET框架下的Sockets類中提供了Web-Socket協(xié)議的常用方法,包括數(shù)據(jù)發(fā)送send()、數(shù)據(jù)接收receive()。數(shù)據(jù)解析程序需要用戶自己編寫。
WebSocket協(xié)議使用了特定格式的數(shù)據(jù)幀[9],結(jié)構(gòu)為“數(shù)據(jù)幀+消息體”,數(shù)據(jù)幀包含消息體的類型、密碼、長度等信息,消息體是協(xié)議傳輸?shù)男畔ⅰ?/p>
數(shù)據(jù)解析程序流程如圖10所示,先由FIN位判斷數(shù)據(jù)是否接收完畢,由opcode位確定消息體數(shù)據(jù)類型,由MASK位判斷有無掩碼,若有則讀取Masking-key位的掩碼,并進行掩碼處理,若無則直接處理。由Payload-len位判斷消息體長度,然后提取消息并進行UTF8解碼,數(shù)據(jù)解析完畢。
本文針對一般生態(tài)放流遠(yuǎn)程監(jiān)控系統(tǒng)的不足,在傳統(tǒng)遠(yuǎn)程監(jiān)控系統(tǒng)的基礎(chǔ)上增加了多參數(shù)監(jiān)測、數(shù)據(jù)交互、數(shù)據(jù)上傳、網(wǎng)頁信息共享等功能,設(shè)計了一種新型的水電站生態(tài)放流遠(yuǎn)程監(jiān)控系統(tǒng)。該系統(tǒng)可實時監(jiān)測水溫、水位、閘門開度、流量、流速等多個指標(biāo);實現(xiàn)了客戶端瀏覽器與Web服務(wù)器的數(shù)據(jù)交互功能;完成了生態(tài)放流數(shù)據(jù)實時上傳監(jiān)管部門的要求;開發(fā)了生態(tài)放流遠(yuǎn)程監(jiān)測系統(tǒng)網(wǎng)頁,實現(xiàn)網(wǎng)頁信息共享。系統(tǒng)功能完備,為生態(tài)放流過程提供了全方位的監(jiān)督管理機制,為水電站的綜合決策管理提供了寶貴的數(shù)據(jù)支持。該系統(tǒng)目前應(yīng)用于張掖市某水電站,實時運行情況良好。
圖10 WebSocket數(shù)據(jù)解析程序流程Fig.10 WebSocket data analysis programming process