李森娟,張 萍,岳大為,王秋富
(河北工業大學人工智能與數據科學學院,天津 300130)
風電機組通常地處氣候惡劣的海上、丘陵等地區,受到地理位置、天氣、時間等多種因素的限制,其定期維護和故障檢修的成本較高,約占整個風電行業生產總值的10%~15%,而海上風電機組更是達到了20%~35%[1-3]。為了使風能成為更經濟的能源來源,需要最大限度地提高風電場的經濟效益,對于風電場來說降低運行和維護成本是至關重要的。風電場SCADA系統實現對運行設備的監視、數據采集以及報警等功能,了解機組的運行狀態,及時發現故障并提前對相關故障進行處理,從而提高運營效率,降低運維成本[4-5]。
利用振動信號對風電機組進行故障預測時主要針對風電機組中的發電機、齒輪箱、塔筒等機械傳動與支撐部件,通過振動特征量的時頻域分析方法可以獲取相關部件的劣化程度[6]。同樣考慮到風電機組在運行過程中受到風速、溫度、機械等不確定性因素的影響,風電機組的振動特征容易受到各種噪聲的干擾,近年來,利用SCADA數據進行風電機組的故障預測研究越來越多。文獻[7]對SCADA數據預處理(4分位法剔除異常數據等),對齒輪箱特征因素進行相關性分析,利用統計過程控制原理(Statistical Process Control,SPC)分析殘差,最終對齒輪箱的異常狀態進行預測。但是,此模型在風電機組齒輪箱正常工作狀態下才具有較高的預測精度,而且沒有推廣到整機的狀態評估。文獻[8]采用基于互信息的動態特征矩陣描述風電機組的動態特性,通過加權k近鄰同時考慮動態特征矩陣中的特征貢獻率與累計互信息的影響,利用動態閾值計算降低運行狀態突變造成的誤報。但是所提方法只是對變槳系統能夠準確進行故障信息的檢測。文獻[9]根據風力發電機正常運行時采集的SCADA數據,利用非線性狀態估計技術(Nonlinear State Eatimation Technique,NSET)建立了齒輪箱振動、發電機振動和主軸承振動三種振動模型,幫助檢測早期故障。文獻[10]基于模糊粗糙集理論建立變槳系統特征參數約簡的數學模型,再利用實際運行數據訓練經粒子群優化的支持向量機,從而獲得高精度診斷模型,對變槳角度故障進行診斷實驗。在這些故障診斷和預測模型研究中,僅以風電機組主要部件作為研究對象,并沒有對整機進行分析。綜上所述,本文選取關鍵特征參數建立故障診斷模型,進而對風電機組進行故障預測具有重要意義。
SVM是一類線性分類器,通過構造分隔超平面,將樣本數據分為兩個類別[11]。對于線性不可分的樣本數據,SVM通過將原始數據映射到更高的維度,從而使其線性可分。假設樣本數據表示如下
(x1,y1),(x2,y2),…,(xi,yi)
xi∈Rn,yi∈{-1,1}
i=1,2,…,l
(1)
式中:xi和yi分別為樣本空間向量和類別標志;R為訓練樣本總數;n為樣本空間維數。分類超平面為w·x+b=0,如圖1所示,其中R1和R2分別為x的第一維和第二維的取值;w為最優超平面的法向量;b為偏置。
以線性可分的情況為例進行分析,將最優超平面的求解問題轉化為約束優化問題,見式(2)

(2)
對式(2)進行求解,把構建最優超平面的問題轉化為對偶二次規劃問題,結果見式(3)。

s.t.0≤ai≤C
ai≥0;i=1,2,…
(3)

圖1 最佳超平面
最終的最優分類面函數表示為

(4)
模型的參數選擇是影響模型應用效果的重要因素,為了避免模型過擬合從而提高模型對于測試集數據的預測精度,也就是模型的泛化能力,因此,常用K折交叉驗證(K-fold Cross Validation)方法評價模型的泛化能力。K折交叉驗證方法將數據集等比例劃分成K份,以其中K-1份數據訓練,剩余一份數據驗證得到精度指標,如此訓練K次并取各次指標的平均值作為交叉驗證模型的指標[12]。
網格搜索也叫窮舉搜索,即遍歷整個訓練數據集。該方法通過遍歷給定的參數組合對所需訓練的模型進行優化[13-14]。使用網格搜索算法尋找模型最佳參數可以防止模型過擬合或欠擬合。網格搜索算法在實際應用的過程中一般需要配合分類算法進行使用,目的是對分類算法的參數進行尋優。
風電場SCADA系統能對風電機組功能進行現場或遠程控制,并通過收集數據,對風電機組的運行情況進行分析和報告。文中的數據來自一臺3MW的直驅式風電機組,從風電機組SCADA系統采集到三個獨立的數據集:“運行”數據、“狀態”數據和“警告”數據,包含從2014年5月至2015年4月,共11個月的數據,每隔十分鐘采集一次。
1)運行數據:風電機組控制系統監控許多瞬時參數、功率特性、電氣設備中的各種電流和電壓、以及發電機軸承和轉子等部件的溫度。采集這些數據10分鐘的平均值、最小值和最大值,將其存儲在具有相應時間戳的SCADA系統中,部分數據如表1所示。該數據用于訓練分類器,并根據過濾器進行標記,初始運行數據包含大約45000個數據點。

表1 10min運行數據
2)狀態數據:風電機組有許多正常運行狀態。當風電機組處于異?;蚬收线\行時,也有大量的狀態。這些都是由狀態信息記錄,包含在“狀態”數據中。狀態數據被分成兩個不同的組:Wind Energy Conversion(WEC)狀態數據和Remote Terminal Unit(RTU)狀態數據。WEC狀態數據對應于與風電機組本身直接相關的狀態信息,而RTU狀態數據對應于與電網連接點處的功率控制數據,即有功和無功功率設定點。每次WEC或RTU狀態改變時,都會生成一個新的帶時間戳的狀態信息。因此,直到產生下一個狀態信息前,認為風電機組在一個狀態下運行。每個風電機組狀態都有與之相關的“主狀態”和“子狀態”代碼。WEC狀態信息部分數據示例如表2所示。RTU狀態數據幾乎只處理有功或無功功率設定值。

表2 WEC狀態數據
3)警告數據:風電機組上的“警告”數據大多對應于風電機組的一般信息,通常與風電機組運行或安全沒有直接關系,如表3所示。這些“警告”信息以與狀態信息相同的方式標記時間戳。有時,警告信息對應于風電機組上潛在的發展中的故障;如果警告持續一定的時間,并且沒有被風電機組操作員或控制系統清除,就會產生故障并且生成新的狀態信息。因此,在分析中可以忽略警告消息,因為信息是由狀態信息捕獲的。

表3 WEC警告數據
為了準確地訓練分類器,正確地標記數據是很重要的。在文中,使用三個類型的分類:故障/無故障:樣本被分類為故障或無故障;故障診斷:樣本被分類為特定故障或無故障;以及故障預測,也就是在故障發生前一小時將數據分類為特定故障。這是通過將初始運行數據分成標記的“無故障”、“所有故障”、“特定故障”和“故障預測”數據集來實現的。接下來解釋了標記數據的過程。
無故障數據集:對于三個類型的分類,需要一個通用的“無故障”數據集,包括標明的無故障操作。為了實現這一點,對完整的10分鐘操作數據進行篩選。首先,選擇對應于標明操作的WEC狀態代碼,這些代碼是“0 : 0——運行中的風電機組”、“2 : 1——風速過低”和“3 : 12——風速過高”。接下來,過濾掉與功率輸出被削減的RTU狀態相對應的所有操作數據。此時,僅留下一個狀態,“0 : 0——RTU正在運行”。最后,過濾掉對應于單個特定警告消息的數據(主警告代碼“230——功率限制(10h)”)。經過以上三個階段的篩選,無故障數據包含大約28000個點的10分鐘運行數據。

圖2 功率曲線
風電機組的功率和風速之間理想的關系如圖2所示,顯示了在輪轂高度風速的風電機組功率輸出。為了驗證“無故障”數據集中僅包括風電機組處于正常運行時的數據,繪制了過濾數據的功率曲線,以檢查其是否符合標準形狀,如圖3所示,利用文獻[15]所述的一種濾除功率曲線異常的算法標示正常操作的估計界限之外的數據點。圖中所有數據點顯示了在不進行任何過濾之前從操作數據產生的功率曲線,紅色的點是算法標記為異常的點,大約有4000個這樣的點。黑色的點顯示了篩選的無故障數據集,經過三步篩選過程后,仍然有大約400個點,算法將其識別為異常。由于這些數據在整個無故障數據集中所占的比例不到1%,而且在實際中,風電機組數據總是包含噪聲,因此決定將這些數據包含在無故障數據中。

圖3 標記的功率曲線
所有故障數據集:為了對故障/無故障數據進行分類,還需要生成一組標記的故障數據。為此,列出了經常發生的故障,對于這些故障,選擇了帶有與故障對應的代碼的狀態信息。接下來,使用風電機組狀態開始之前600秒和結束之后600秒的時間戳來對應相關的10分鐘運行數據。表4總結了包括的故障,其中,故障頻率指的是每個故障的具體實例,而不是與其相關聯的運行數據的數據點的數量。電纜故障指的是風電機組的供電電纜故障,勵磁故障指的是發電機勵磁系統的故障,電源故障指的是風電機組的供電電源故障,冷卻故障指的是風電機組的空氣循環和內部溫度循環故障,發電機故障指的是發電機溫度過高。
特定故障數據集:對于特定故障與所有故障使用相同的方法,但這次對表4中的每個故障代碼使用單一狀態代碼。同樣,每個故障狀態開始之前600秒和結束之后600秒的時間戳用于對應相應的10分鐘運行數據。
故障預測數據集:為了預測特定的故障,故障分類的時間戳被擴展到不同的時間段,分別取自特定故障前的10、20、30、60、120和360分鐘。這意味著導致特定故障的運行數據點也包含在該故障類別中。

表4 常見故障
數據集被隨機打亂,分成訓練集和測試集,其中80%用于訓練,其余20%用于測試。因為原始操作數據集有60多個要素,所以僅選擇了30個特定要素的子集用于訓練。分析數據發現許多原始特征對應于風電機組上損壞的傳感器,例如,它們包含結冰或明顯不正確的值。然后,選擇最相關的剩余特征進行訓練。這些特征的一個子集,對應于風電機組中逆變器柜上的12個溫度傳感器,都具有非常相似的讀數。因此,決定將這些數據合并,并使用12個逆變器溫度的平均值和標準差,最終使用29個特征訓練支持向量機。因為一些特征,例如功率輸出具有從0到幾千的巨大范圍,而其它特征,例如溫度,范圍僅僅從0到幾十,因此對所有數據都進行歸一化處理,如式(5)所示

(5)
其中,xmin為樣本數據的最小值,xmax為樣本數據的最大值。
對用于訓練每個SVM的多個超參數進行參數網格搜索,以找到產生最佳結果的超參數。然后使用10折交叉驗證對這些超參數進行驗證。用于交叉驗證的評分標準是召回率的平均值。搜索的超參數是C:對損失值的懲罰系數,即相對誤差的寬容度;γ:定義了一個單獨的訓練例子以及使用的核有多大的影響。四種核函數分別是簡單線性核、徑向基(高斯)核、多項式核、Sigmoid核。參數選擇如表5所示。

表5 網格搜索中的超參數
原始數據嚴重失衡——無故障樣本比故障類樣本多一百多個,因此,使用SMOTE算法來減輕數據不平衡的影響。
模型的預測準確率一直是用來評估模型性能優劣的一種量化指標,而在文章中,風電機組的故障數據遠遠少于其健康數據,僅以預測準確率作為模型優劣的評判標準可能使得評估結果存在一定偏差。因此,文章使用混淆矩陣作為評判指標來衡量模型的預測效果?;煜仃囀且粋€簡單的方陣,用于展示分類器的預測結果——真正、真負、假正、假負的數量。對于類別數量不均衡的分類問題來說,文中采用準確率(Accuracy)、召回率(Recall)和F1 score作為性能指標。F1 score為精確率(Precision)和召回率的調和平均值。

(6)

(7)

(8)

(9)
式中,TP是真正性(即正確預測的故障樣本)的數量,FP是假正性,FN是假負性(即錯誤標記為無故障的故障樣本),TN是真負性。P代表Precision,R代表Recall。F1 score的取值范圍從0到1,1代表模型的輸出最好,0代表模型的輸出結果最差。
在表6中可以看到平衡訓練集情況下的超參數搜索的結果。

表6 網格搜索中的超參數
當在平衡集上訓練數據時,得到的混淆矩陣如圖4所示,圖中顏色的深淺代表了各個區域分布數量的多少。由混淆矩陣得到的結果可以計算得到表7,對所有故障集預測在準確率和召回率方面的性能相當高(分別為85%和95%)。高召回率意味著很少有遺漏的故障實例。然而,SVM精確率比較低,因此,F1不是很高。

圖4 混淆矩陣結果
對于在平衡集上訓練的特定故障集的預測,結果類似于所有故障集情況,除了在冷卻故障上顯示出非常差的全面性能。預測發電機故障顯示出最好的結果,精確率為87%,遠高于其它任何一項,召回率為100%,準確率為99%,以及0.93的F1 score。在很大程度上,精確率和召回率之間的權衡與故障/無故障集是一樣的。然而,在發電機故障的預測中看到了非常好的性能。

表7 模型的評估報告
當特定故障前的時間段從10分鐘延長到1小時時,在準確率和召回率方面仍顯示出良好的結果,結果見表8。

表8 模型的評估報告
文中考慮算法篩選特征導致解釋性差的特點,從風電機組特性出發,最終選擇29個特征,對故障進行三個類型的分類:區分故障/無故障運行,對特定故障進行分類,以及提前一小時預測特定故障,通過對SVM模型進行優化,得到一個效果更好的模型并選擇合適的評價指標對得到的模型進行評估。結果表明,一小時的預測結果在各個數據集上顯示出良好的結果,通過實時傳輸風電機組SCADA數據,能夠實現故障的在線監測,并及時安排維修人員排故,避免非計劃維修,在一定程度上實現風電機組的視情維修。