黃艷庭,谷玉海,王菊遠(yuǎn)
(北京信息科技大學(xué)現(xiàn)代測(cè)控技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室,北京 100192)
風(fēng)電機(jī)組Web實(shí)時(shí)監(jiān)測(cè)系統(tǒng)要對(duì)風(fēng)電機(jī)組的振動(dòng)、溫度、轉(zhuǎn)速等各種數(shù)據(jù)進(jìn)行實(shí)時(shí)監(jiān)測(cè),功能復(fù)雜,數(shù)據(jù)的實(shí)時(shí)傳輸量大。而傳統(tǒng)監(jiān)測(cè)系統(tǒng)的通信主要是通過(guò)輪詢(xún)的方式不斷地向服務(wù)器發(fā)送請(qǐng)求,但是會(huì)導(dǎo)致請(qǐng)求過(guò)于頻繁,使服務(wù)器的負(fù)載壓力過(guò)大;但是如果通信間隔過(guò)長(zhǎng),則無(wú)法保證信息的實(shí)時(shí)性。為了改進(jìn)這種通信方式,設(shè)計(jì)了基于WebSocket的風(fēng)電機(jī)組Web實(shí)時(shí)監(jiān)測(cè)系統(tǒng),數(shù)據(jù)服務(wù)器通過(guò)TCP/IP通信獲取高速同步采集系統(tǒng)采集的監(jiān)測(cè)數(shù)據(jù),并通過(guò)Go語(yǔ)言提供的Channel消息通信機(jī)制建立數(shù)據(jù)服務(wù)器與Web服務(wù)器之間的數(shù)據(jù)傳輸,確保了數(shù)據(jù)顯示的實(shí)時(shí)性。在瀏覽器端實(shí)現(xiàn)對(duì)采集數(shù)據(jù)的實(shí)時(shí)在線(xiàn)監(jiān)測(cè)、處理、分析和診斷,對(duì)準(zhǔn)確了解風(fēng)電機(jī)組設(shè)備實(shí)時(shí)狀況及延長(zhǎng)設(shè)備壽命具有重要意義。
系統(tǒng)總體結(jié)構(gòu)如圖1所示,針對(duì)分布在各地的風(fēng)電機(jī)組設(shè)備,監(jiān)控中心的主服務(wù)器與高速同步采集卡建立基于TCP/IP協(xié)議的數(shù)據(jù)連接。在系統(tǒng)中,高速同步采集卡將數(shù)據(jù)實(shí)時(shí)傳輸給數(shù)據(jù)服務(wù)器,數(shù)據(jù)服務(wù)器一方面將數(shù)據(jù)保存在Postgre數(shù)據(jù)庫(kù)內(nèi),另一方面通過(guò)Channel消息機(jī)制將數(shù)據(jù)傳輸給Web服務(wù)器,客戶(hù)端在調(diào)用JavaScript后使WebSocket建立與Web服務(wù)器的實(shí)時(shí)數(shù)據(jù)連接,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)交互,最后通過(guò)HTML5和Echarts將信息顯示在瀏覽器上。由于系統(tǒng)的各個(gè)模塊的功能各不相同,完全獨(dú)立,各個(gè)模塊之間采用接口進(jìn)行數(shù)據(jù)交互,保證了系統(tǒng)運(yùn)行的可靠性。
圖1 系統(tǒng)總體結(jié)構(gòu)
WebSocket是一種建立在HTML5基礎(chǔ)上的由單個(gè)TCP連接實(shí)現(xiàn)全雙工通信技術(shù)方式。在WebSocket API中,瀏覽器與Web服務(wù)器之間只需完成一次握手動(dòng)作,就可以在兩者之間建立一條高速數(shù)據(jù)傳輸通道。為建立一個(gè)高速WebSocket數(shù)據(jù)通信。首先,瀏覽器端向Web服務(wù)器端發(fā)起一條HTTP連接請(qǐng)求,這個(gè)連接與普通的HTTP連接請(qǐng)求不同,發(fā)出的連接中具有一條附加信息,附加信息中的“Upgrade:WebSocket”表代表本條信息是一個(gè)申請(qǐng)協(xié)議升級(jí)的 HTTP信息。Web服務(wù)器端在接收到請(qǐng)求后,首先處理附加信息,在處理后產(chǎn)生應(yīng)答信息,并將產(chǎn)生的應(yīng)答信息發(fā)送到瀏覽器端,由此瀏覽器端與Web服務(wù)器端就成功的建立了一條基于WebSocket方式的快速數(shù)據(jù)傳輸通道。瀏覽器端和Web服務(wù)器端就可以通過(guò)這個(gè)WebSocket數(shù)據(jù)傳輸通道隨時(shí)進(jìn)行數(shù)據(jù)傳輸(圖2),而且這條通信連接將會(huì)一直持續(xù)保持連接,除非瀏覽器端與Web服務(wù)器端中的一方主動(dòng)將數(shù)據(jù)通信關(guān)閉。
圖2 WebSocket連接
JavaScript實(shí)現(xiàn)WebSocket連接的核心代碼如下。
數(shù)據(jù)服務(wù)器主要實(shí)現(xiàn)同Web服務(wù)器的數(shù)據(jù)實(shí)時(shí)交互,采用以Go語(yǔ)言為核心的Beego框架搭建的平臺(tái),在系統(tǒng)運(yùn)行最初階段首先建立同Web服務(wù)器端的通信連接。Go語(yǔ)言提供的消息通信機(jī)制被稱(chēng)為Channel,它類(lèi)似于單雙向數(shù)據(jù)管道(Pipe),用戶(hù)可以使用Channel在兩個(gè)或多個(gè)線(xiàn)程之間傳遞消息。對(duì)于在線(xiàn)程間傳輸大量數(shù)據(jù)的應(yīng)用,可以使用異步Channel,從而達(dá)到消息隊(duì)列的效果(圖3)。異步Channel就是給Channel設(shè)定一個(gè)Buffer值。在Buffer未寫(xiě)滿(mǎn)的情況下,不阻塞發(fā)送操作;在Buffer未讀完之前,不阻塞接收操作。
圖3 線(xiàn)程間通信示意
為能夠?qū)崿F(xiàn)信息的遠(yuǎn)程快速傳送要求,系統(tǒng)設(shè)計(jì)了基于TCP協(xié)議的自定義數(shù)據(jù)傳輸協(xié)議,遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)首先按自定義傳輸協(xié)議將數(shù)據(jù)打包,然后根據(jù)TCP協(xié)議將數(shù)據(jù)包發(fā)送到系統(tǒng)數(shù)據(jù)服務(wù)器。數(shù)據(jù)幀格式定義如表1所示,采用16進(jìn)制數(shù)字的0xAA0x55代表數(shù)據(jù)的數(shù)據(jù)頭,表示一幀數(shù)據(jù)的基本信息;數(shù)據(jù)包類(lèi)型表示采集的數(shù)據(jù)類(lèi)型為數(shù)據(jù)采集結(jié)果包或者數(shù)據(jù)采集參數(shù)數(shù)據(jù)包;數(shù)據(jù)包的最大采樣長(zhǎng)度為65 536,其中包含AA55的字節(jié)長(zhǎng)度;采樣時(shí)間表示一幀數(shù)據(jù)開(kāi)始采集的時(shí)間;采樣頻率代表監(jiān)測(cè)數(shù)據(jù)的采樣頻率;起始通道代表和結(jié)束通道分別代表一幀數(shù)據(jù)中數(shù)據(jù)采集系統(tǒng)的開(kāi)始通道和結(jié)束通道。
將數(shù)據(jù)庫(kù)布置在各個(gè)數(shù)據(jù)服務(wù)器上,由不同的IP地址進(jìn)行區(qū)分。由監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)要求建立系統(tǒng)的數(shù)據(jù)庫(kù)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。存儲(chǔ)的數(shù)據(jù)主要包括主軸轉(zhuǎn)速、電機(jī)轉(zhuǎn)速、風(fēng)速、溫度等數(shù)據(jù),由于采集的監(jiān)測(cè)數(shù)據(jù)非常大,數(shù)據(jù)庫(kù)存儲(chǔ)的信息很就可以達(dá)到TB數(shù)量級(jí)。
根據(jù)PostgreSQL數(shù)據(jù)庫(kù)的特點(diǎn),把需要儲(chǔ)存的監(jiān)測(cè)數(shù)據(jù)先進(jìn)行縱向劃分,然后進(jìn)行橫向劃分??v向劃分是把采集到的機(jī)組數(shù)據(jù)保存在不同的數(shù)據(jù)庫(kù)中,每個(gè)數(shù)據(jù)庫(kù)存儲(chǔ)設(shè)定數(shù)量的監(jiān)測(cè)信息,同時(shí)建立一個(gè)風(fēng)場(chǎng)整體信息數(shù)據(jù)庫(kù)用來(lái)保存風(fēng)場(chǎng)全部監(jiān)測(cè)數(shù)據(jù)。橫向劃分將同一數(shù)據(jù)庫(kù)中每一機(jī)組的數(shù)據(jù)信息依據(jù)采集時(shí)間的不同存儲(chǔ)在不同的數(shù)據(jù)表內(nèi)。劃分之后的各子數(shù)據(jù)庫(kù)和監(jiān)測(cè)信息存儲(chǔ)表整體設(shè)計(jì)和數(shù)據(jù)信息存儲(chǔ)表結(jié)構(gòu)如圖4所示。將同一機(jī)組的不同監(jiān)測(cè)位置采集的實(shí)時(shí)在線(xiàn)監(jiān)測(cè)信息保存在風(fēng)場(chǎng)整體信息數(shù)據(jù)庫(kù)的實(shí)時(shí)數(shù)據(jù)表內(nèi),同時(shí)將監(jiān)測(cè)到的各機(jī)組數(shù)據(jù)保存在數(shù)據(jù)庫(kù)的相關(guān)歷史數(shù)據(jù)表內(nèi)。
表1 數(shù)據(jù)幀格式
為驗(yàn)證監(jiān)測(cè)系統(tǒng)的性能,利用構(gòu)建的綜合試驗(yàn)臺(tái)模擬風(fēng)機(jī)齒輪箱的工作平臺(tái),進(jìn)行數(shù)據(jù)采集及故障診斷分析并在前端瀏覽器實(shí)現(xiàn)實(shí)時(shí)顯示及頻譜分析。圖5為模擬單臺(tái)機(jī)組的運(yùn)行監(jiān)測(cè)狀態(tài);圖6為模擬單臺(tái)機(jī)組實(shí)時(shí)振動(dòng)波形圖。
根據(jù)以上論述設(shè)計(jì)的基于Websocket技術(shù)的風(fēng)電機(jī)組Web實(shí)時(shí)在線(xiàn)監(jiān)測(cè)系統(tǒng),它是根據(jù)目前風(fēng)電機(jī)組監(jiān)測(cè)系統(tǒng)中普遍存在的數(shù)據(jù)傳輸速度慢、功能單一的缺陷和弊端中開(kāi)發(fā)的一套管理系統(tǒng),經(jīng)過(guò)多次測(cè)試,效果良好,工作性能穩(wěn)定、可靠,完全滿(mǎn)足設(shè)計(jì)需要。
圖4 各子數(shù)據(jù)庫(kù)和監(jiān)測(cè)信息存儲(chǔ)表整體設(shè)計(jì)
圖5 模擬單臺(tái)機(jī)組的運(yùn)行監(jiān)測(cè)狀態(tài)
圖6 模擬單臺(tái)機(jī)組實(shí)時(shí)振動(dòng)波形圖