黃國兵,姚佳鑫,賈榮興,王 茜
1(西安工程大學 計算機科學學院,西安 710048)
2(國網陜西省電力公司 榆林供電公司,榆林 719000)
隨著物聯網技術和云計算技術的快速發展,工業企業的在線監控系統也不斷引入新的技術手段,實現系統升級以擴展功能和提高系統性能.發電廠汽輪機振動信號在線監測系統在發電廠進行振動信號監測,再由專業的振動信號專家診斷中心進行振動故障的遠方分析,因此需要實現振動信號到診斷中心的數據轉儲[1].為了實現這一任務,在診斷中心部署服務器系統,并注冊專門網址,通過公共IP 網絡實現信息傳輸.這一方案的主要問題是IP 地址資源緊缺,一個診斷中心要對幾十座甚至上百座發電廠的振動信號進行檢測,只能分時對存在故障的電廠進行分析,嚴重影響了工作效率.為了實現振動信息故障診斷系統在線運行的目的,采用目前流行的云數據庫技術對其進行軟件維護升級,實現發電廠當地傳感與數據采集小主站和診斷中心主系統的振動信息轉儲,解決振動信息轉儲不暢的問題.云數據庫技術以其高可用性、較低的使用成本、易用性等特征,在企業數據庫信息管理方面得到了廣泛應用[2-4].隨著云計算技術的涌現和推廣應用,云存儲技術已經進入人們的日常生活,如云廣電、云閃付等[5,6].這為振動信號的轉儲給出了新的思路.為了實現項目軟件升級,主要在原系統的基礎之上,重新構建當地監控小主站的轉儲子系統,并保證信息轉儲的整體性、及時性和安全性,從而達成振動信息轉儲性能保證的目的.
汽輪機振動信號在線監測系統由振動信號監測終端、當地監控小主站、公共數據傳輸網絡、專家診斷中心主系統4 部分組成,當地監控小主站負責收集監測終端采集的數據,并儲存于本地SQL Server 數據庫中[7],同時,小主站定時與診斷中心數據庫系統連接,將儲存的信息轉儲到診斷中心數據庫系統,供專家診斷分析使用,如圖1所示.

圖1 汽輪機振動信號在線監測系統連接圖
圖1所示的系統中,由于受IP 地址網絡資源的限制,發電廠當地小主站與診斷中心數據庫系統通信一直是該系統運行的瓶頸.
汽輪機振動信號檢測系統需要存儲的信息主要包括3 類數據:(1)瞬態數據.從100 r/min 開始存儲數據,轉速每變化△rpm存儲一組數據,直至轉速達到3000 r/min.(2)穩態數據.轉速穩定在3000 r/min 時開始存儲數據,每△t存儲一組數據.(3)報警和危機數據.無論在瞬態,還是在穩態過程,當振動量超過ALARM-1 定值時,啟動告警超限存儲,包括振動儲波形和頻譜數據.以當前振動數據為基準,振動量變化超過△c時,再次啟動超限存儲,依此類推.當振動量超過ALARM-2 時,啟動危機越限存儲,規則與告警越限相同.可見數據庫中有3 類數據,用3 張表來存儲,數據信息均可看作一組字節流.數據庫表的格式如表1所示.

表1 振動信息數據庫表定義
表1中,信息類別字段區分了3 張不同的數據庫表.3 類數據表的格式一致,只是數據信息的長度、內容和格式不一樣,為了提高數據存儲的效率,轉儲時,仍按3 張表分別轉儲.
由1.2 節所述,需要轉儲的振動信息都保存在數據信息字段中.根據項目需求,振動信息按組保存,每組32 個周期的采樣信號,每個周期采樣32 次,即1024 字節.其次,開停機過程中,汽輪機轉速每變化20 r/min采樣1 組數據,數據信息的大小由開停機的時間長度確定;穩態運行時每4 s 采樣1 組數據,每分鐘15 組數據.第三,故障告警時,保存事故追憶信息,事故前后各90 組數據,共計180 組數據.信息轉儲時,啟停機瞬態數據和穩態數據每1 分鐘轉儲1 次,故障告警時,告警記錄插入發送.考慮到云數據庫的存儲容量,拋在云端的瞬態和穩態數據最多存放24 小時,過期刪除.故障告警數據(即事件信息)保存最新20 個事件,即3600組數據,超出部分自動刪除.由此可見,瞬態和穩態數據的信息字段長度一般為15 K 字節,故障告警數據的信息字段長度為180 K 字節.
采用云數據庫技術實現信息轉儲時,可以從根本上解決因IP 資源不夠、公共網絡信息傳輸速度慢造成的通信不暢的問題.這是因為云數據庫上的信息分布保存,云計算的并行處理能力強大,與云端的網絡通信的通信效率高.
云數據庫的類型包括關系型數據庫和非關系型數據庫兩種[8],結合項目具體應用需求,選擇非關系型數據庫來實現本應用的功能.本項目需要轉儲的信息為表1所示的3 張振動信息表,信息之間的關系簡單,且關系型數據庫租用價格也遠高于非關系型.在非關系型數據庫中,選擇了云數據庫MongoDB 版[9,10].MongoDB基于高可靠存儲引擎技術設計,滿足本應用的需求.
信息轉儲的關鍵在于振動信息的完整性和可追溯性[11],防止網絡通信終端或轉儲任務軟件異常造成信息漏傳.為此,數據轉儲任務需要自動檢測本地和云端數據庫表的同步狀態,來決定下一步所需要開展的轉儲業務.數據轉儲業務包括正常信息轉儲和信息追補兩種,在二者信息同步時正常轉儲,否則對不同步的信息進行追補,以達到信息轉儲完整性的目的.為此,需要在云端創建一張信息轉儲的進度表,與本地系統信息生成的狀態表進行比對,實現信息轉儲的同步.此外,支持診斷中心系統下達的人工召喚命令,允許診斷中心人工召喚指定開始時間和結束時間的任何一張表的數據信息.進度表包括電廠編號、機組編號、業務類型、信息表類型、已完成的信息轉儲時間點等字段;召喚命令表包括電廠編號、機組編號、信息表類型、命令下達時間、開始時間和結束時間.進度表中,信息表類型表征瞬態、穩態和事件3 種信息,這3 種信息各自獨立進行上傳,其中事件信息為插入上傳;業務類型字段用于區分周期轉儲、追補信息和人工召喚.轉儲任務則根據這兩張表的內容進行轉儲業務調度,并對這兩張表進行更新維護,如圖2所示.
為了實現信息轉儲的有序進行,應用軟件創建了一個專門的轉儲線程實現圖2所示的業務.轉儲線程依據進度表按時序調度振動信息上傳業務.如果召喚命令表中有命令需要處理,則在進度表中插入人工召喚業務的記錄;如果有故障告警信息,則插入傳送;如果檢測到有信息漏傳的情況,則在進度表中添加追補業務的記錄.進度表中的人工召喚業務和追補業務一旦完成,進度表中對應的記錄自動刪除.周期業務每30 s上傳一次,與先前軟件的上傳周期一致.為了提高轉儲業務的效率,轉儲線程每次完成一個時間點需要上傳的所有信息,例如:瞬態、穩態和事件3 種信息在同一時間點都有信息上傳的需求,則連續完成所有需要上傳的信息.周期業務每30 s 根據時間是否到達啟動一次上傳,而人工召喚和追補信息的業務需要連續上傳,因此線程每0.5 s 啟動一次,檢查是否有非周期性業務,如果有,則進行一個時間點信息的上傳.每次操作完成都進行一次進度表操作,確保轉儲業務的連續性.
圖2所示的轉儲線程中,為了防止因當地監控系統運行異常造成信息流程失步,進度表保存在云端數據庫中,轉儲軟件運行時本地內存保存該進度表的拷貝,每次操作完成之后都進行進度表核實.

圖2 振動信息轉儲線程的流程框圖
轉儲軟件負責與云數據庫通信的維護,軟件設計一個狀態變量顯示與云數據庫的通信狀態,一旦上傳失敗,云訪問狀態黃色降級顯示,連續10 次通信失敗,則生成云數據庫訪問失敗的告警事件,并紅色顯示;其間如果信息上傳成功,則自動恢復云訪問狀態正常的綠色顯示.這樣轉儲軟件既能監視云數據庫訪問的狀態,也不會因為偶爾的訪問失敗而產生太多的無用日志信息,造成系統維護人員的視覺疲勞.
為了實現基于云數據庫的技術轉儲,振動信息專家診斷中心部署了集團客戶VPDN 業務網絡,可以高速訪問云數據庫,各發電廠則部署了專門的4G 路由器,從而實現了發電廠和診斷中心的4G LTE 通信網絡[12],以保證云數據庫的訪問速度.
基于4G LTE 的路由器上行速度可達50 M,下行速度可達100 M[13],而廠站端下主站周期上傳的業務為15K 字節/分鐘,故障告警時有180 K 字節的數據信息需要插入傳送,約1.44 M 位,網絡通信不存在瓶頸.并且云數據庫的并行處理能力強大,訪問效率高[14,15],數據庫訪問延遲小,可滿足振動信息轉儲的及時性需求.
在軟件編程調試中,能發現基于4G LTE 通信網絡和云數據庫訪問的速度很快,不存在信息轉儲不及時的問題.由此可見,基于云數據庫技術的數據轉儲完全能保證振動信息在線監測系統網絡數據傳輸的及時性.
根據項目技術規范書,采用公共網絡資源進行信息轉儲需進行安全加密.在先前所實現的系統中,振動信息字段進行了最簡單的加/解密處理,即加/減0x33的處理方法,只是讓網絡監聽者不能直接閱讀振動信息的內容.盡管云數據庫的信息安全等級很高[16],但是信息轉儲的用戶也不希望把自己的生產信息明碼存放在其中.考慮到轉儲信息需要進行加密處理,加密算法也不能過于復雜,復雜的加解密算法會影響信息轉儲的效率.經過權衡選擇,最后選用了QQ 文件傳輸的TEA(Tiny Encryption Algorithm)算法[17].TEA 是一種對稱的分組密碼算法,其明文和密文的長度為64 位,私有密鑰的長度為128 位,采用黃金分割率delta調節每輪迭代的加密計算,抗差分分析能力強,安全性好[18].而且TEA 的計算復雜度低,適用于信息轉儲時的加/解密要求.
根據TEA 算法的原理[18],設sum為0,delta為0x9E3779B9,加密算法公式為式(1)~式(3):

相應地,解密算法的公式為式(4)~式(6):


式(1)~式(6)中,k0~k3為128 位密鑰,式(2)~式(3)中V0~V1的初值為待加密的64 位數據,式(4)~式(5)中V0~V1的初值為待解密的64 位數據.
由于振動信息字段的長度以KB 為單位,也不一定是8 字節的整數倍,這里選用文獻[17]中的填充算法和交織算法實現全字段的加/解密處理.軟件實現時,設計好TEA 算法類,并實現加密和解密交織函數接口,調用這兩個函數即可對振動信息字段的加密和解密處理.由于表1中其它字段要用于信息檢索,對信息安全無影響,因此這些字段不作加密處理.
振動信號轉儲系統的MongoDB 云數據庫采用了ReplicaSet+Sharding 集群部署方式.根據應用的需要,云數據庫中已經統一創建了數據庫和數據集合表,這里只需要對指定庫表中的記錄進行訪問,即可實現振動信息記錄的傳輸.根據云數據庫MongoDB 的數據手冊,使用了其中query、update 和delete 等命令函數實現數據庫記錄的訪問.其中update 實現記錄按key 值插入和更新,query 用于信息查詢,delete 用于刪除已執行完成的人工召喚命令.結合數據手冊和應用案例[19],將接口訪問命令封裝成專門的MongoDB 接口類,實現具體的訪問操作.
在完成項目軟件設計編程之后,在實驗室對所設計軟件的功能和性能指標進行了測試和驗證.
(1)測試環境.采用一臺PC 服務器運行圖1所示的當地監控系統軟件,并使用該軟件把現場運行時產生的數據模擬汽輪機運行,形成數據源.該PC 服務器采用電信寬帶接入公網,與租用的百度云MongoDB 版云數據庫通信,進行信息轉儲.利用項目組其它成員開發的診斷中心服務器振動信息下載軟件,檢查云中數據信息記錄是否正確,并模擬下達人工召喚命令.
(2)測試內容.檢查轉儲軟件能否正確完成周期上傳、追補上傳和人工召喚上傳的業務.
(3)測試方法和過程.①模擬軟件連續運行3 天,在72 小時內模擬3 次開停機,300 次振動事件,按時序生成瞬態、穩態和事件3 種信息;②轉儲軟件隨模擬軟件并列運行,每天檢測一次上傳信息是否正確、完整.③中斷網絡連接或轉儲軟件退出一段時間后再啟動運行,檢測轉儲軟件是否自動產生追補業務,并完成漏傳信息的追補上傳.④模擬下達人工數據召喚,檢測轉儲軟件是否產生人工上傳業務,并將人工召喚的信息上傳.⑤觀測主界面自動刷新顯示的進度表,觀測轉儲軟件運行的狀態是否和預期一致.
(4)測試結果.①轉儲軟件72 小時運行,模擬生成的數據都正確傳至云數據庫中;②軟件運行過程中,如果發生數據信息漏傳的問題,能夠自動將漏傳的信息追補至云數據庫中;③軟件能正確執行上位系統下達的召喚命令,將指定的信息上傳至云數據庫中;④軟件運行過程中主界面顯示的進度狀態與預期一致.
檢測結果表明,所設計的轉儲軟件的各項功能和性能指標都滿足技術規范書的要求,項目研究和產品開發達到了預期目的.
針對一款振動信號在線監測系統數據采集子系統信息上傳不暢的問題,采用云數據庫技術實現了振動信息從發電廠當地監測系統到診斷中心數據信息轉儲的業務.使用非關系型云數據庫實現信息遷移轉儲,在不破壞現有架構的基礎上替換原系統應用軟件中的數據轉儲子系統.為保證基于云數據庫技術解決方案中振動信息轉儲的性能,主要從3 個方面進行了專門考量:(1)為了確保信息轉儲的完整性,軟件設計了轉儲線程自動調度周期上傳、漏傳追補和人工召喚3 種業務的運行,將儲存在當地監控系統中的瞬態、穩態和事件3 種振動信息完整地上傳至云數據庫中;(2)針對振動信息轉儲的及時性,從信息轉儲的容量和為實現信息轉儲部署的通信網絡兩個方面進行了分析,表明系統升級后信息轉儲的及時性能得到保證;(3)為了保障振動信息轉儲的安全性,采用TEA 算法對振動信息字段進行了加密處理.實驗室測試的結果表明,基于與數據庫技術的振動信息遷移轉儲功能正確,振動信息轉儲的完整性、及時性和安全性3 個性能指標也得到了有效保證.下一步將在發電廠當地監測小主站中部署所設計的軟件,并在現場運行的過程中進一步完善.