黃國兵,姚佳鑫,賈榮興,王 茜
1(西安工程大學 計算機科學學院,西安 710048)
2(國網(wǎng)陜西省電力公司 榆林供電公司,榆林 719000)
隨著物聯(lián)網(wǎng)技術(shù)和云計算技術(shù)的快速發(fā)展,工業(yè)企業(yè)的在線監(jiān)控系統(tǒng)也不斷引入新的技術(shù)手段,實現(xiàn)系統(tǒng)升級以擴展功能和提高系統(tǒng)性能.發(fā)電廠汽輪機振動信號在線監(jiān)測系統(tǒng)在發(fā)電廠進行振動信號監(jiān)測,再由專業(yè)的振動信號專家診斷中心進行振動故障的遠方分析,因此需要實現(xiàn)振動信號到診斷中心的數(shù)據(jù)轉(zhuǎn)儲[1].為了實現(xiàn)這一任務(wù),在診斷中心部署服務(wù)器系統(tǒng),并注冊專門網(wǎng)址,通過公共IP 網(wǎng)絡(luò)實現(xiàn)信息傳輸.這一方案的主要問題是IP 地址資源緊缺,一個診斷中心要對幾十座甚至上百座發(fā)電廠的振動信號進行檢測,只能分時對存在故障的電廠進行分析,嚴重影響了工作效率.為了實現(xiàn)振動信息故障診斷系統(tǒng)在線運行的目的,采用目前流行的云數(shù)據(jù)庫技術(shù)對其進行軟件維護升級,實現(xiàn)發(fā)電廠當?shù)貍鞲信c數(shù)據(jù)采集小主站和診斷中心主系統(tǒng)的振動信息轉(zhuǎn)儲,解決振動信息轉(zhuǎn)儲不暢的問題.云數(shù)據(jù)庫技術(shù)以其高可用性、較低的使用成本、易用性等特征,在企業(yè)數(shù)據(jù)庫信息管理方面得到了廣泛應(yīng)用[2-4].隨著云計算技術(shù)的涌現(xiàn)和推廣應(yīng)用,云存儲技術(shù)已經(jīng)進入人們的日常生活,如云廣電、云閃付等[5,6].這為振動信號的轉(zhuǎn)儲給出了新的思路.為了實現(xiàn)項目軟件升級,主要在原系統(tǒng)的基礎(chǔ)之上,重新構(gòu)建當?shù)乇O(jiān)控小主站的轉(zhuǎn)儲子系統(tǒng),并保證信息轉(zhuǎn)儲的整體性、及時性和安全性,從而達成振動信息轉(zhuǎn)儲性能保證的目的.
汽輪機振動信號在線監(jiān)測系統(tǒng)由振動信號監(jiān)測終端、當?shù)乇O(jiān)控小主站、公共數(shù)據(jù)傳輸網(wǎng)絡(luò)、專家診斷中心主系統(tǒng)4 部分組成,當?shù)乇O(jiān)控小主站負責收集監(jiān)測終端采集的數(shù)據(jù),并儲存于本地SQL Server 數(shù)據(jù)庫中[7],同時,小主站定時與診斷中心數(shù)據(jù)庫系統(tǒng)連接,將儲存的信息轉(zhuǎn)儲到診斷中心數(shù)據(jù)庫系統(tǒng),供專家診斷分析使用,如圖1所示.
圖1 汽輪機振動信號在線監(jiān)測系統(tǒng)連接圖
圖1所示的系統(tǒng)中,由于受IP 地址網(wǎng)絡(luò)資源的限制,發(fā)電廠當?shù)匦≈髡九c診斷中心數(shù)據(jù)庫系統(tǒng)通信一直是該系統(tǒng)運行的瓶頸.
汽輪機振動信號檢測系統(tǒng)需要存儲的信息主要包括3 類數(shù)據(jù):(1)瞬態(tài)數(shù)據(jù).從100 r/min 開始存儲數(shù)據(jù),轉(zhuǎn)速每變化△rpm存儲一組數(shù)據(jù),直至轉(zhuǎn)速達到3000 r/min.(2)穩(wěn)態(tài)數(shù)據(jù).轉(zhuǎn)速穩(wěn)定在3000 r/min 時開始存儲數(shù)據(jù),每△t存儲一組數(shù)據(jù).(3)報警和危機數(shù)據(jù).無論在瞬態(tài),還是在穩(wěn)態(tài)過程,當振動量超過ALARM-1 定值時,啟動告警超限存儲,包括振動儲波形和頻譜數(shù)據(jù).以當前振動數(shù)據(jù)為基準,振動量變化超過△c時,再次啟動超限存儲,依此類推.當振動量超過ALARM-2 時,啟動危機越限存儲,規(guī)則與告警越限相同.可見數(shù)據(jù)庫中有3 類數(shù)據(jù),用3 張表來存儲,數(shù)據(jù)信息均可看作一組字節(jié)流.數(shù)據(jù)庫表的格式如表1所示.
表1 振動信息數(shù)據(jù)庫表定義
表1中,信息類別字段區(qū)分了3 張不同的數(shù)據(jù)庫表.3 類數(shù)據(jù)表的格式一致,只是數(shù)據(jù)信息的長度、內(nèi)容和格式不一樣,為了提高數(shù)據(jù)存儲的效率,轉(zhuǎn)儲時,仍按3 張表分別轉(zhuǎn)儲.
由1.2 節(jié)所述,需要轉(zhuǎn)儲的振動信息都保存在數(shù)據(jù)信息字段中.根據(jù)項目需求,振動信息按組保存,每組32 個周期的采樣信號,每個周期采樣32 次,即1024 字節(jié).其次,開停機過程中,汽輪機轉(zhuǎn)速每變化20 r/min采樣1 組數(shù)據(jù),數(shù)據(jù)信息的大小由開停機的時間長度確定;穩(wěn)態(tài)運行時每4 s 采樣1 組數(shù)據(jù),每分鐘15 組數(shù)據(jù).第三,故障告警時,保存事故追憶信息,事故前后各90 組數(shù)據(jù),共計180 組數(shù)據(jù).信息轉(zhuǎn)儲時,啟停機瞬態(tài)數(shù)據(jù)和穩(wěn)態(tài)數(shù)據(jù)每1 分鐘轉(zhuǎn)儲1 次,故障告警時,告警記錄插入發(fā)送.考慮到云數(shù)據(jù)庫的存儲容量,拋在云端的瞬態(tài)和穩(wěn)態(tài)數(shù)據(jù)最多存放24 小時,過期刪除.故障告警數(shù)據(jù)(即事件信息)保存最新20 個事件,即3600組數(shù)據(jù),超出部分自動刪除.由此可見,瞬態(tài)和穩(wěn)態(tài)數(shù)據(jù)的信息字段長度一般為15 K 字節(jié),故障告警數(shù)據(jù)的信息字段長度為180 K 字節(jié).
采用云數(shù)據(jù)庫技術(shù)實現(xiàn)信息轉(zhuǎn)儲時,可以從根本上解決因IP 資源不夠、公共網(wǎng)絡(luò)信息傳輸速度慢造成的通信不暢的問題.這是因為云數(shù)據(jù)庫上的信息分布保存,云計算的并行處理能力強大,與云端的網(wǎng)絡(luò)通信的通信效率高.
云數(shù)據(jù)庫的類型包括關(guān)系型數(shù)據(jù)庫和非關(guān)系型數(shù)據(jù)庫兩種[8],結(jié)合項目具體應(yīng)用需求,選擇非關(guān)系型數(shù)據(jù)庫來實現(xiàn)本應(yīng)用的功能.本項目需要轉(zhuǎn)儲的信息為表1所示的3 張振動信息表,信息之間的關(guān)系簡單,且關(guān)系型數(shù)據(jù)庫租用價格也遠高于非關(guān)系型.在非關(guān)系型數(shù)據(jù)庫中,選擇了云數(shù)據(jù)庫MongoDB 版[9,10].MongoDB基于高可靠存儲引擎技術(shù)設(shè)計,滿足本應(yīng)用的需求.
信息轉(zhuǎn)儲的關(guān)鍵在于振動信息的完整性和可追溯性[11],防止網(wǎng)絡(luò)通信終端或轉(zhuǎn)儲任務(wù)軟件異常造成信息漏傳.為此,數(shù)據(jù)轉(zhuǎn)儲任務(wù)需要自動檢測本地和云端數(shù)據(jù)庫表的同步狀態(tài),來決定下一步所需要開展的轉(zhuǎn)儲業(yè)務(wù).數(shù)據(jù)轉(zhuǎn)儲業(yè)務(wù)包括正常信息轉(zhuǎn)儲和信息追補兩種,在二者信息同步時正常轉(zhuǎn)儲,否則對不同步的信息進行追補,以達到信息轉(zhuǎn)儲完整性的目的.為此,需要在云端創(chuàng)建一張信息轉(zhuǎn)儲的進度表,與本地系統(tǒng)信息生成的狀態(tài)表進行比對,實現(xiàn)信息轉(zhuǎn)儲的同步.此外,支持診斷中心系統(tǒng)下達的人工召喚命令,允許診斷中心人工召喚指定開始時間和結(jié)束時間的任何一張表的數(shù)據(jù)信息.進度表包括電廠編號、機組編號、業(yè)務(wù)類型、信息表類型、已完成的信息轉(zhuǎn)儲時間點等字段;召喚命令表包括電廠編號、機組編號、信息表類型、命令下達時間、開始時間和結(jié)束時間.進度表中,信息表類型表征瞬態(tài)、穩(wěn)態(tài)和事件3 種信息,這3 種信息各自獨立進行上傳,其中事件信息為插入上傳;業(yè)務(wù)類型字段用于區(qū)分周期轉(zhuǎn)儲、追補信息和人工召喚.轉(zhuǎn)儲任務(wù)則根據(jù)這兩張表的內(nèi)容進行轉(zhuǎn)儲業(yè)務(wù)調(diào)度,并對這兩張表進行更新維護,如圖2所示.
為了實現(xiàn)信息轉(zhuǎn)儲的有序進行,應(yīng)用軟件創(chuàng)建了一個專門的轉(zhuǎn)儲線程實現(xiàn)圖2所示的業(yè)務(wù).轉(zhuǎn)儲線程依據(jù)進度表按時序調(diào)度振動信息上傳業(yè)務(wù).如果召喚命令表中有命令需要處理,則在進度表中插入人工召喚業(yè)務(wù)的記錄;如果有故障告警信息,則插入傳送;如果檢測到有信息漏傳的情況,則在進度表中添加追補業(yè)務(wù)的記錄.進度表中的人工召喚業(yè)務(wù)和追補業(yè)務(wù)一旦完成,進度表中對應(yīng)的記錄自動刪除.周期業(yè)務(wù)每30 s上傳一次,與先前軟件的上傳周期一致.為了提高轉(zhuǎn)儲業(yè)務(wù)的效率,轉(zhuǎn)儲線程每次完成一個時間點需要上傳的所有信息,例如:瞬態(tài)、穩(wěn)態(tài)和事件3 種信息在同一時間點都有信息上傳的需求,則連續(xù)完成所有需要上傳的信息.周期業(yè)務(wù)每30 s 根據(jù)時間是否到達啟動一次上傳,而人工召喚和追補信息的業(yè)務(wù)需要連續(xù)上傳,因此線程每0.5 s 啟動一次,檢查是否有非周期性業(yè)務(wù),如果有,則進行一個時間點信息的上傳.每次操作完成都進行一次進度表操作,確保轉(zhuǎn)儲業(yè)務(wù)的連續(xù)性.
圖2所示的轉(zhuǎn)儲線程中,為了防止因當?shù)乇O(jiān)控系統(tǒng)運行異常造成信息流程失步,進度表保存在云端數(shù)據(jù)庫中,轉(zhuǎn)儲軟件運行時本地內(nèi)存保存該進度表的拷貝,每次操作完成之后都進行進度表核實.
圖2 振動信息轉(zhuǎn)儲線程的流程框圖
轉(zhuǎn)儲軟件負責與云數(shù)據(jù)庫通信的維護,軟件設(shè)計一個狀態(tài)變量顯示與云數(shù)據(jù)庫的通信狀態(tài),一旦上傳失敗,云訪問狀態(tài)黃色降級顯示,連續(xù)10 次通信失敗,則生成云數(shù)據(jù)庫訪問失敗的告警事件,并紅色顯示;其間如果信息上傳成功,則自動恢復(fù)云訪問狀態(tài)正常的綠色顯示.這樣轉(zhuǎn)儲軟件既能監(jiān)視云數(shù)據(jù)庫訪問的狀態(tài),也不會因為偶爾的訪問失敗而產(chǎn)生太多的無用日志信息,造成系統(tǒng)維護人員的視覺疲勞.
為了實現(xiàn)基于云數(shù)據(jù)庫的技術(shù)轉(zhuǎn)儲,振動信息專家診斷中心部署了集團客戶VPDN 業(yè)務(wù)網(wǎng)絡(luò),可以高速訪問云數(shù)據(jù)庫,各發(fā)電廠則部署了專門的4G 路由器,從而實現(xiàn)了發(fā)電廠和診斷中心的4G LTE 通信網(wǎng)絡(luò)[12],以保證云數(shù)據(jù)庫的訪問速度.
基于4G LTE 的路由器上行速度可達50 M,下行速度可達100 M[13],而廠站端下主站周期上傳的業(yè)務(wù)為15K 字節(jié)/分鐘,故障告警時有180 K 字節(jié)的數(shù)據(jù)信息需要插入傳送,約1.44 M 位,網(wǎng)絡(luò)通信不存在瓶頸.并且云數(shù)據(jù)庫的并行處理能力強大,訪問效率高[14,15],數(shù)據(jù)庫訪問延遲小,可滿足振動信息轉(zhuǎn)儲的及時性需求.
在軟件編程調(diào)試中,能發(fā)現(xiàn)基于4G LTE 通信網(wǎng)絡(luò)和云數(shù)據(jù)庫訪問的速度很快,不存在信息轉(zhuǎn)儲不及時的問題.由此可見,基于云數(shù)據(jù)庫技術(shù)的數(shù)據(jù)轉(zhuǎn)儲完全能保證振動信息在線監(jiān)測系統(tǒng)網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)募皶r性.
根據(jù)項目技術(shù)規(guī)范書,采用公共網(wǎng)絡(luò)資源進行信息轉(zhuǎn)儲需進行安全加密.在先前所實現(xiàn)的系統(tǒng)中,振動信息字段進行了最簡單的加/解密處理,即加/減0x33的處理方法,只是讓網(wǎng)絡(luò)監(jiān)聽者不能直接閱讀振動信息的內(nèi)容.盡管云數(shù)據(jù)庫的信息安全等級很高[16],但是信息轉(zhuǎn)儲的用戶也不希望把自己的生產(chǎn)信息明碼存放在其中.考慮到轉(zhuǎn)儲信息需要進行加密處理,加密算法也不能過于復(fù)雜,復(fù)雜的加解密算法會影響信息轉(zhuǎn)儲的效率.經(jīng)過權(quán)衡選擇,最后選用了QQ 文件傳輸?shù)腡EA(Tiny Encryption Algorithm)算法[17].TEA 是一種對稱的分組密碼算法,其明文和密文的長度為64 位,私有密鑰的長度為128 位,采用黃金分割率delta調(diào)節(jié)每輪迭代的加密計算,抗差分分析能力強,安全性好[18].而且TEA 的計算復(fù)雜度低,適用于信息轉(zhuǎn)儲時的加/解密要求.
根據(jù)TEA 算法的原理[18],設(shè)sum為0,delta為0x9E3779B9,加密算法公式為式(1)~式(3):
相應(yīng)地,解密算法的公式為式(4)~式(6):
式(1)~式(6)中,k0~k3為128 位密鑰,式(2)~式(3)中V0~V1的初值為待加密的64 位數(shù)據(jù),式(4)~式(5)中V0~V1的初值為待解密的64 位數(shù)據(jù).
由于振動信息字段的長度以KB 為單位,也不一定是8 字節(jié)的整數(shù)倍,這里選用文獻[17]中的填充算法和交織算法實現(xiàn)全字段的加/解密處理.軟件實現(xiàn)時,設(shè)計好TEA 算法類,并實現(xiàn)加密和解密交織函數(shù)接口,調(diào)用這兩個函數(shù)即可對振動信息字段的加密和解密處理.由于表1中其它字段要用于信息檢索,對信息安全無影響,因此這些字段不作加密處理.
振動信號轉(zhuǎn)儲系統(tǒng)的MongoDB 云數(shù)據(jù)庫采用了ReplicaSet+Sharding 集群部署方式.根據(jù)應(yīng)用的需要,云數(shù)據(jù)庫中已經(jīng)統(tǒng)一創(chuàng)建了數(shù)據(jù)庫和數(shù)據(jù)集合表,這里只需要對指定庫表中的記錄進行訪問,即可實現(xiàn)振動信息記錄的傳輸.根據(jù)云數(shù)據(jù)庫MongoDB 的數(shù)據(jù)手冊,使用了其中query、update 和delete 等命令函數(shù)實現(xiàn)數(shù)據(jù)庫記錄的訪問.其中update 實現(xiàn)記錄按key 值插入和更新,query 用于信息查詢,delete 用于刪除已執(zhí)行完成的人工召喚命令.結(jié)合數(shù)據(jù)手冊和應(yīng)用案例[19],將接口訪問命令封裝成專門的MongoDB 接口類,實現(xiàn)具體的訪問操作.
在完成項目軟件設(shè)計編程之后,在實驗室對所設(shè)計軟件的功能和性能指標進行了測試和驗證.
(1)測試環(huán)境.采用一臺PC 服務(wù)器運行圖1所示的當?shù)乇O(jiān)控系統(tǒng)軟件,并使用該軟件把現(xiàn)場運行時產(chǎn)生的數(shù)據(jù)模擬汽輪機運行,形成數(shù)據(jù)源.該PC 服務(wù)器采用電信寬帶接入公網(wǎng),與租用的百度云MongoDB 版云數(shù)據(jù)庫通信,進行信息轉(zhuǎn)儲.利用項目組其它成員開發(fā)的診斷中心服務(wù)器振動信息下載軟件,檢查云中數(shù)據(jù)信息記錄是否正確,并模擬下達人工召喚命令.
(2)測試內(nèi)容.檢查轉(zhuǎn)儲軟件能否正確完成周期上傳、追補上傳和人工召喚上傳的業(yè)務(wù).
(3)測試方法和過程.①模擬軟件連續(xù)運行3 天,在72 小時內(nèi)模擬3 次開停機,300 次振動事件,按時序生成瞬態(tài)、穩(wěn)態(tài)和事件3 種信息;②轉(zhuǎn)儲軟件隨模擬軟件并列運行,每天檢測一次上傳信息是否正確、完整.③中斷網(wǎng)絡(luò)連接或轉(zhuǎn)儲軟件退出一段時間后再啟動運行,檢測轉(zhuǎn)儲軟件是否自動產(chǎn)生追補業(yè)務(wù),并完成漏傳信息的追補上傳.④模擬下達人工數(shù)據(jù)召喚,檢測轉(zhuǎn)儲軟件是否產(chǎn)生人工上傳業(yè)務(wù),并將人工召喚的信息上傳.⑤觀測主界面自動刷新顯示的進度表,觀測轉(zhuǎn)儲軟件運行的狀態(tài)是否和預(yù)期一致.
(4)測試結(jié)果.①轉(zhuǎn)儲軟件72 小時運行,模擬生成的數(shù)據(jù)都正確傳至云數(shù)據(jù)庫中;②軟件運行過程中,如果發(fā)生數(shù)據(jù)信息漏傳的問題,能夠自動將漏傳的信息追補至云數(shù)據(jù)庫中;③軟件能正確執(zhí)行上位系統(tǒng)下達的召喚命令,將指定的信息上傳至云數(shù)據(jù)庫中;④軟件運行過程中主界面顯示的進度狀態(tài)與預(yù)期一致.
檢測結(jié)果表明,所設(shè)計的轉(zhuǎn)儲軟件的各項功能和性能指標都滿足技術(shù)規(guī)范書的要求,項目研究和產(chǎn)品開發(fā)達到了預(yù)期目的.
針對一款振動信號在線監(jiān)測系統(tǒng)數(shù)據(jù)采集子系統(tǒng)信息上傳不暢的問題,采用云數(shù)據(jù)庫技術(shù)實現(xiàn)了振動信息從發(fā)電廠當?shù)乇O(jiān)測系統(tǒng)到診斷中心數(shù)據(jù)信息轉(zhuǎn)儲的業(yè)務(wù).使用非關(guān)系型云數(shù)據(jù)庫實現(xiàn)信息遷移轉(zhuǎn)儲,在不破壞現(xiàn)有架構(gòu)的基礎(chǔ)上替換原系統(tǒng)應(yīng)用軟件中的數(shù)據(jù)轉(zhuǎn)儲子系統(tǒng).為保證基于云數(shù)據(jù)庫技術(shù)解決方案中振動信息轉(zhuǎn)儲的性能,主要從3 個方面進行了專門考量:(1)為了確保信息轉(zhuǎn)儲的完整性,軟件設(shè)計了轉(zhuǎn)儲線程自動調(diào)度周期上傳、漏傳追補和人工召喚3 種業(yè)務(wù)的運行,將儲存在當?shù)乇O(jiān)控系統(tǒng)中的瞬態(tài)、穩(wěn)態(tài)和事件3 種振動信息完整地上傳至云數(shù)據(jù)庫中;(2)針對振動信息轉(zhuǎn)儲的及時性,從信息轉(zhuǎn)儲的容量和為實現(xiàn)信息轉(zhuǎn)儲部署的通信網(wǎng)絡(luò)兩個方面進行了分析,表明系統(tǒng)升級后信息轉(zhuǎn)儲的及時性能得到保證;(3)為了保障振動信息轉(zhuǎn)儲的安全性,采用TEA 算法對振動信息字段進行了加密處理.實驗室測試的結(jié)果表明,基于與數(shù)據(jù)庫技術(shù)的振動信息遷移轉(zhuǎn)儲功能正確,振動信息轉(zhuǎn)儲的完整性、及時性和安全性3 個性能指標也得到了有效保證.下一步將在發(fā)電廠當?shù)乇O(jiān)測小主站中部署所設(shè)計的軟件,并在現(xiàn)場運行的過程中進一步完善.