(中海石油(中國)有限公司 秦皇島32-6/渤中作業(yè)公司,天津 300459)
浮式生產(chǎn)儲油卸油裝置(FPSO)設(shè)備運營狀態(tài)的可靠性及穩(wěn)定性直接影響到海工平臺的財產(chǎn)安全,甚至危及到船員生命安全,故需要對該設(shè)備配套狀態(tài)監(jiān)測及故障診斷系統(tǒng)。因設(shè)備復(fù)雜,傳感器監(jiān)測數(shù)據(jù)類型較多,設(shè)備的單一故障往往需要多傳感器數(shù)據(jù)進行融合,而這時典型多輸入單輸出的模式識別問題,目前用于解決該問題的故障診斷方法最主流的就是基于神經(jīng)網(wǎng)絡(luò)的人工智能故障診斷方法。將人工智能理論和方法應(yīng)用于故障診斷,發(fā)展智能化故障診斷技術(shù),是設(shè)備故障診斷的一條新的途徑,也是研究最多、應(yīng)用最廣的一類智能型診斷技術(shù)。本文將設(shè)計及開發(fā)一套基于BP神經(jīng)網(wǎng)絡(luò)故障診斷[1-4]專家系統(tǒng),實現(xiàn)智能故障診斷,并在FPSO原油外輸系統(tǒng)上進行驗證。
圖1 基于LabVIEW的FPSO原油外輸設(shè)備遠程智能診斷系統(tǒng)總體架構(gòu)
基于LabVIEW的FPSO原油外輸設(shè)備遠程智能診斷系統(tǒng)總體架構(gòu)見圖1。目標FPSO原油外輸設(shè)備位于近海區(qū)域,設(shè)備狀態(tài)特征信號通過3G/4G模塊上傳至企業(yè)內(nèi)部監(jiān)控中心,并存儲到Oracle數(shù)據(jù)庫中。第三方應(yīng)用程序LabVIEW,通過數(shù)據(jù)庫訪問工具集LabVIEW database toolkit實現(xiàn)對數(shù)據(jù)庫的數(shù)據(jù)讀寫操作;同時利用Matlab script接口,實現(xiàn)LabVIEW與Matlab的雙向數(shù)據(jù)交互。
LabVIEW將從數(shù)據(jù)庫讀取到的數(shù)據(jù)傳給Matlab,Matlab調(diào)用BP神經(jīng)網(wǎng)絡(luò)診斷算法,對傳感器數(shù)據(jù)進行分析診斷,并輸出診斷結(jié)果到LabVIEW軟件。LabVIEW將診斷結(jié)果同Oracle數(shù)據(jù)庫中的診斷知識庫進行對比,給出相應(yīng)的故障模式、故障原因及解決措施。
為了保證遠程通信的速度、穩(wěn)定性及可操作性,在傳輸同等數(shù)據(jù)量情況下,需選擇占用帶寬最小的通訊協(xié)議,考慮現(xiàn)場端設(shè)備及LabVIEW遠程監(jiān)控系統(tǒng)特性,最終選擇采用基于TCP/IP的socket通信協(xié)議,見圖2。
圖2 基于C/S架構(gòu)LabVIEW遠程監(jiān)控系統(tǒng)
同時為了保證遠程監(jiān)控系統(tǒng)的開放性,所有遠程傳輸?shù)玫降臄?shù)據(jù)都統(tǒng)一存放到關(guān)系數(shù)據(jù)庫oracle 11g R2中,方便監(jiān)控中心其他系統(tǒng)(如虛擬仿真系統(tǒng))對遠程狀態(tài)數(shù)據(jù)的訪問。
采用兩層BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)用于故障診斷,網(wǎng)絡(luò)結(jié)構(gòu)中隱含層采用tan-sigmoid激勵函數(shù),輸出層采用log-simoid激勵函數(shù)。其中網(wǎng)絡(luò)輸入層神經(jīng)元個數(shù)等于輸入變量數(shù)量,輸出層神經(jīng)元個數(shù)等于故障模式數(shù)量。見圖3。
選取樣本并對其訓練,以得到診斷系統(tǒng)知識庫(以網(wǎng)絡(luò)閥值和權(quán)值形式存在),診斷網(wǎng)絡(luò)的樣本訓練流程大致過程為:讀取樣本數(shù)據(jù),并進行歸一化處理,因診斷BP神經(jīng)網(wǎng)絡(luò)第一層的激勵函數(shù)為雙曲正切Tan-Sigmoid函數(shù),該函數(shù)輸出范圍為[-1,1],故歸一化區(qū)間取[-1,1];根據(jù)輸入、輸出向量中變量個數(shù),選取合適的網(wǎng)購結(jié)構(gòu)及參數(shù),并初始化網(wǎng)絡(luò)參數(shù);將歸一化的輸入向量代入網(wǎng)絡(luò),計算輸出結(jié)果,并與預(yù)期結(jié)果對比,計算偏差;將計算偏差與設(shè)定偏差對比,看是否到達收斂條件,若不收斂,則調(diào)整權(quán)值繼續(xù)計算,直到收斂,網(wǎng)絡(luò)收斂后,輸入測試數(shù)據(jù)進行測試,并進行故障類型判斷。
以原油外輸系統(tǒng)卡銷裝置故障診斷子模塊為例,該診斷模塊6個輸入變量:壓力MP11、壓力MP12、壓力MP19、壓力MP20、流量V3、流量V4;4種故障模式:換向閥0311-4故障、減壓閥0314-4故障、液壓鎖0315-3故障、管線0331-4故障。針對該診斷模塊的BP神經(jīng)網(wǎng)絡(luò)模塊參數(shù)設(shè)置見表1。
表1 BP神經(jīng)網(wǎng)絡(luò)參數(shù)設(shè)置
對故障模式進行編碼,將其表示成計算機能夠識別的模式,見表2。
表2 ESD閥故障故障模式編碼
Matlab2014a中BP神經(jīng)網(wǎng)絡(luò)默認采用Widrow-Nguyen即W-N法進行網(wǎng)絡(luò)權(quán)值初始化,同時樣本的訓練模式默認為批處理模式。因目前沒有被監(jiān)測系統(tǒng)實際故障數(shù)據(jù),故暫時采用模擬的樣本數(shù)據(jù)來對診斷算法的正確性進行驗證。卡銷裝置故障診斷模塊中,模擬的傳感器樣本數(shù)據(jù)見表3。
利用構(gòu)建的2層BP神經(jīng)網(wǎng)絡(luò)對以上樣本進行訓練,訓練結(jié)束后,Matlab2014a彈出訓練結(jié)果見圖4。
從圖4中可以直觀看到前面設(shè)置好的網(wǎng)絡(luò)結(jié)構(gòu)和算法參數(shù),可以看到性能參數(shù)均方誤差的初始值為0.46,結(jié)束值為9.44×10-7,小于設(shè)定的目標值1.0×10-6,在迭代65次后,誤差水平就達到了預(yù)期要求,滿足訓練指標。
網(wǎng)絡(luò)訓練性能變化見圖5,可以清楚看到,訓練誤差隨著迭代次數(shù)增加而減小的過程,最終達到設(shè)定的目標誤差,停止網(wǎng)絡(luò)訓練。
圖4 BP神經(jīng)網(wǎng)絡(luò)訓練效果示意
圖5 訓練網(wǎng)絡(luò)性能變化曲線
同時網(wǎng)絡(luò)訓練過程中,參數(shù)的狀態(tài)變化見圖6,可以看到,滿足要求。
圖6 網(wǎng)絡(luò)訓練狀態(tài)參數(shù)變化過程
因沒有實際傳感器采集數(shù)據(jù),故采樣仿真數(shù)據(jù),模擬輸入傳感器采集數(shù)據(jù),來驗證診斷系統(tǒng)的可行性及可靠性。采用表4所示的6組模擬數(shù)據(jù)對診斷網(wǎng)絡(luò)進行驗證。
任何時仿真數(shù)據(jù)在輸入到診斷網(wǎng)絡(luò)之前,都有進行與網(wǎng)絡(luò)訓練時相同的歸一化處理,想輸入向量歸一化到區(qū)間[-1,1]。處理程序為
%在線采集數(shù)據(jù)的歸一化處理,處理方式同樣本數(shù)據(jù)處理方式完全相同
p_test=mapminmax(′apply′,sample_verify,PS);
其中:sample_verify為傳感器采集數(shù)據(jù)輸入向量矩陣,PS為網(wǎng)絡(luò)訓練時用到的歸一化處理方法,′apply′為采用相同處理方式。
對表4中的測試數(shù)據(jù)代入訓練好的神經(jīng)網(wǎng)絡(luò),可得神經(jīng)網(wǎng)絡(luò)的檢測結(jié)果,見表5。
表5 測試數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)診斷輸出
由表5的診斷結(jié)果可知,神經(jīng)網(wǎng)絡(luò)準確的識別了卡銷裝置不同的運行狀態(tài),診斷效果良好。
利用Matlab與LabVIEW混合編程來實現(xiàn)外輸設(shè)備診斷系統(tǒng)的設(shè)計。在LabVIEW開發(fā)平臺上直接使用Matlab的神經(jīng)網(wǎng)絡(luò)工具箱。常用的混合編程方法是使用Matlab語言節(jié)點,即Matlab Script節(jié)點。這種方法實現(xiàn)簡單且實現(xiàn)方式靈活多變,打開被調(diào)用的Matlab腳本程序的速度也快,且能滿足多輸入多輸出。LabVIEW向Matlab script腳本傳遞字符變量過程舉列見圖7。
圖7 LabVIEW向Matlab script腳本傳遞字符變量過程
LabVIEW想將輸入層到隱含層傳遞函數(shù)名稱如tansig傳遞給Matlab script腳本,通過調(diào)節(jié)結(jié)構(gòu),將不同的函數(shù)名轉(zhuǎn)成相應(yīng)數(shù)字,并在Matlab script腳本中,將對于數(shù)字還原成對于函數(shù)名。而數(shù)字變量可以通過在Matlab script左邊框中增加輸入節(jié)點進行傳遞,如圖7中的隱含層神經(jīng)元變量lay1_size。同理可以對其他需要傳遞的參數(shù)進行操作。LabVIEW中神經(jīng)網(wǎng)絡(luò)學習界面見圖8,其參數(shù)傳遞方法前面已經(jīng)介紹。
圖8 神經(jīng)網(wǎng)絡(luò)學習界面
圖8界面對應(yīng)的最終LabVIEW程序框圖見圖9,左邊為前面板需要向腳本傳遞的參數(shù),右邊為診斷結(jié)果,通過一個二維數(shù)組保存診斷結(jié)果,見圖10,該結(jié)果相當于將表5結(jié)果輸出到LabVIEW前面板界面上。
對某一故障模式,采用二進制編碼表示故障類型,期望的理想輸出是0或1。顯然,仿真結(jié)果不可能是期望的絕對0或1,所以需要對結(jié)果進行判斷,即把神經(jīng)網(wǎng)絡(luò)仿真獲得的結(jié)果通過判斷處理,整定到0或1。因此,提出判別區(qū)間的方法。對于輸出結(jié)果,取一個判別區(qū)間,將仿真結(jié)果與判別區(qū)間比較,確定其歸于0或1。如(0.1,0.9):當仿真結(jié)果小于0.1(如0.051 8),則判斷其為0;而當仿真結(jié)果大于0.9(如0.918),則判斷其為1;此外,對于處于[0.1,0.9]區(qū)間內(nèi)的數(shù)據(jù)判斷為0.5(認為該仿真結(jié)果無意義,拒判)。可以看出,當這個判別區(qū)間越靠近0和1,則判斷準確率越高,同時可能拒判的幾率也越大;當判別區(qū)間越遠離0和1,則判斷的準確性降低,但同時好處是判為無意義結(jié)果的幾率變小,可以根據(jù)具體情況選擇。
圖9 LabVIEW通過對Matlab調(diào)用實現(xiàn)診斷神經(jīng)網(wǎng)絡(luò)
圖10 網(wǎng)絡(luò)診斷結(jié)果輸出到前面板二維數(shù)組中
根據(jù)以上區(qū)間判別標準,將網(wǎng)絡(luò)的數(shù)值輸出與故障信息進行對應(yīng),軟件界面實現(xiàn)見圖11。
設(shè)計基于LabVIEW的FPSO原油外輸設(shè)備遠程智能診斷系統(tǒng),并實現(xiàn)了仿真驗證。采集軟件模擬實際工況輸出模擬輸出傳感器數(shù)據(jù),并以TCP通信方式遠程上傳到企業(yè)內(nèi)部監(jiān)控中心數(shù)據(jù)庫。LabVIEW利用math script節(jié)點調(diào)用Matlab,實現(xiàn)對采集數(shù)據(jù)的學習與診斷,并鍵診斷結(jié)果存放于數(shù)據(jù)庫中。監(jiān)測系統(tǒng)即可實現(xiàn)常規(guī)監(jiān)測報警功能,還可自主開展基于神經(jīng)網(wǎng)絡(luò)的故障診斷功能,為后續(xù)產(chǎn)品健康監(jiān)測系統(tǒng)提供了樣本參考與技術(shù)支持。