黃艷庭,谷玉海,王菊遠
(北京信息科技大學現代測控技術教育部重點實驗室,北京 100192)
風電機組Web實時監測系統要對風電機組的振動、溫度、轉速等各種數據進行實時監測,功能復雜,數據的實時傳輸量大。而傳統監測系統的通信主要是通過輪詢的方式不斷地向服務器發送請求,但是會導致請求過于頻繁,使服務器的負載壓力過大;但是如果通信間隔過長,則無法保證信息的實時性。為了改進這種通信方式,設計了基于WebSocket的風電機組Web實時監測系統,數據服務器通過TCP/IP通信獲取高速同步采集系統采集的監測數據,并通過Go語言提供的Channel消息通信機制建立數據服務器與Web服務器之間的數據傳輸,確保了數據顯示的實時性。在瀏覽器端實現對采集數據的實時在線監測、處理、分析和診斷,對準確了解風電機組設備實時狀況及延長設備壽命具有重要意義。
系統總體結構如圖1所示,針對分布在各地的風電機組設備,監控中心的主服務器與高速同步采集卡建立基于TCP/IP協議的數據連接。在系統中,高速同步采集卡將數據實時傳輸給數據服務器,數據服務器一方面將數據保存在Postgre數據庫內,另一方面通過Channel消息機制將數據傳輸給Web服務器,客戶端在調用JavaScript后使WebSocket建立與Web服務器的實時數據連接,實現數據的實時交互,最后通過HTML5和Echarts將信息顯示在瀏覽器上。由于系統的各個模塊的功能各不相同,完全獨立,各個模塊之間采用接口進行數據交互,保證了系統運行的可靠性。

圖1 系統總體結構
WebSocket是一種建立在HTML5基礎上的由單個TCP連接實現全雙工通信技術方式。在WebSocket API中,瀏覽器與Web服務器之間只需完成一次握手動作,就可以在兩者之間建立一條高速數據傳輸通道。為建立一個高速WebSocket數據通信。首先,瀏覽器端向Web服務器端發起一條HTTP連接請求,這個連接與普通的HTTP連接請求不同,發出的連接中具有一條附加信息,附加信息中的“Upgrade:WebSocket”表代表本條信息是一個申請協議升級的 HTTP信息。Web服務器端在接收到請求后,首先處理附加信息,在處理后產生應答信息,并將產生的應答信息發送到瀏覽器端,由此瀏覽器端與Web服務器端就成功的建立了一條基于WebSocket方式的快速數據傳輸通道。瀏覽器端和Web服務器端就可以通過這個WebSocket數據傳輸通道隨時進行數據傳輸(圖2),而且這條通信連接將會一直持續保持連接,除非瀏覽器端與Web服務器端中的一方主動將數據通信關閉。

圖2 WebSocket連接
JavaScript實現WebSocket連接的核心代碼如下。



數據服務器主要實現同Web服務器的數據實時交互,采用以Go語言為核心的Beego框架搭建的平臺,在系統運行最初階段首先建立同Web服務器端的通信連接。Go語言提供的消息通信機制被稱為Channel,它類似于單雙向數據管道(Pipe),用戶可以使用Channel在兩個或多個線程之間傳遞消息。對于在線程間傳輸大量數據的應用,可以使用異步Channel,從而達到消息隊列的效果(圖3)。異步Channel就是給Channel設定一個Buffer值。在Buffer未寫滿的情況下,不阻塞發送操作;在Buffer未讀完之前,不阻塞接收操作。

圖3 線程間通信示意
為能夠實現信息的遠程快速傳送要求,系統設計了基于TCP協議的自定義數據傳輸協議,遠程數據采集系統首先按自定義傳輸協議將數據打包,然后根據TCP協議將數據包發送到系統數據服務器。數據幀格式定義如表1所示,采用16進制數字的0xAA0x55代表數據的數據頭,表示一幀數據的基本信息;數據包類型表示采集的數據類型為數據采集結果包或者數據采集參數數據包;數據包的最大采樣長度為65 536,其中包含AA55的字節長度;采樣時間表示一幀數據開始采集的時間;采樣頻率代表監測數據的采樣頻率;起始通道代表和結束通道分別代表一幀數據中數據采集系統的開始通道和結束通道。
將數據庫布置在各個數據服務器上,由不同的IP地址進行區分。由監測系統的設計要求建立系統的數據庫數據的存儲結構。存儲的數據主要包括主軸轉速、電機轉速、風速、溫度等數據,由于采集的監測數據非常大,數據庫存儲的信息很就可以達到TB數量級。
根據PostgreSQL數據庫的特點,把需要儲存的監測數據先進行縱向劃分,然后進行橫向劃分。縱向劃分是把采集到的機組數據保存在不同的數據庫中,每個數據庫存儲設定數量的監測信息,同時建立一個風場整體信息數據庫用來保存風場全部監測數據。橫向劃分將同一數據庫中每一機組的數據信息依據采集時間的不同存儲在不同的數據表內。劃分之后的各子數據庫和監測信息存儲表整體設計和數據信息存儲表結構如圖4所示。將同一機組的不同監測位置采集的實時在線監測信息保存在風場整體信息數據庫的實時數據表內,同時將監測到的各機組數據保存在數據庫的相關歷史數據表內。

表1 數據幀格式
為驗證監測系統的性能,利用構建的綜合試驗臺模擬風機齒輪箱的工作平臺,進行數據采集及故障診斷分析并在前端瀏覽器實現實時顯示及頻譜分析。圖5為模擬單臺機組的運行監測狀態;圖6為模擬單臺機組實時振動波形圖。
根據以上論述設計的基于Websocket技術的風電機組Web實時在線監測系統,它是根據目前風電機組監測系統中普遍存在的數據傳輸速度慢、功能單一的缺陷和弊端中開發的一套管理系統,經過多次測試,效果良好,工作性能穩定、可靠,完全滿足設計需要。

圖4 各子數據庫和監測信息存儲表整體設計

圖5 模擬單臺機組的運行監測狀態

圖6 模擬單臺機組實時振動波形圖