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