王 硕, 贾 锋, 周 全, 符 杨
[1.教育部海上风电技术工程研究中心(上海电力大学), 上海 200090;2.国家电网上海市市南供电公司, 上海 200030]
我国风电行业正逐渐从大规模建设过渡到大规模运行阶段,受限于风电机组(Wind Turbine,WT)可及性差、运行环境恶劣、故障率高等特点,故障发生会导致长时间停机和运维成本增加等问题[1]。WT由许多大部件组成,如发电机、齿轮箱、变频器、偏航系统等。每个大部件又由许多子部件组成,而子部件往往是故障源头所在,不及时发现和处理可能导致故障恶化。WT配备有监控和数据采集(Suppervisory Control and Data Acquisition,SCADA)系统,用于监测运行状态,可报警故障和子部件故障代码[2]。SCADA报警基于实时WT运行状态,即只要监控值超过设定阈值就会发出报警信号[3]。由于SCADA故障报警相对于异常运行状态的滞后性[4],所以报警时故障通常严重且不可恢复[5]。现有WT故障预警方法分为非数据驱动和数据驱动两大类。非数据驱动类故障预警主要包括模型分析法、经验知识分析法与剩余寿命分析法等[6]。该类预警由于难以适应WT运行条件和成本效益问题,所以在实际应用推广中受限条件多。
随着大数据的发展,数据驱动类故障预警被广泛运用。文献[7]采用卷积神经网络(Convolutional Neural Network,CNN)和长短期网络提取SCADA数据空间和时间特征,进行基于特征融合的齿轮箱异常状态早期预警。文献[8]利用极限梯度提升算法,构建变桨系统变频器温度残差预警模型进行故障预警。上述方法只能实现大部件预警且应用于不同大部件时需重新建模,而故障代码或子部件预警对运维决策更具价值。
在精细部件故障预警方面,文献[9]使用门控循环单元神经网络获得WT前轴承温度残差特征,并结合振动信号时域和频域特征,建立基于极限梯度提升的特征融合前轴承故障辨识模型进行故障预警,但该方法仅能预警单一部件且需要振动信号。文献[10]使用麻雀搜索算法优化支持向量机惩罚因子和核函数参数,并使用优化后算法诊断精细部件故障,但该方法只能根据当前数据给出分类结果,严重依赖于核函数和惩罚函数,无法识别故障趋势在长时间内的演变。文献[11]使用多头注意力机制网络提取SCADA变量间相关性,用霍特林统计量进行两阶段异常分解,并基于两阶段异常因素识别故障位置及故障原因,降低了SCADA的误报率,但该方法并未就SCADA数据存在小样本标签数据问题进行研究。
针对直接预警WT故障代码(反映精细故障类型)面临的建模复杂、执行效率低、标签故障代码数据稀少等问题,本文提出了基于MTF-ResNet-ViT的两级级联故障预警方法。首先,为了在第1级实现多个大部件同时状态监测和故障预警,准确区分故障发生前不同大部件在不同阶段的早期故障特征,将SCADA数据转换为马尔可夫转移场(Markov Transition Field,MTF)图像,并通过残差网络(ResNet)挖掘潜在故障特征与大部件故障之间的联系,建立大部件故障预警模型。然后,为了解决有标签故障代码数据稀缺问题,第1级设有故障代码数据标签与扩充步骤。最后,为了充分挖掘有限数据量下不同维度SCADA数据时变特征,第2级利用数据灰度图像法与视觉变换器(Vision Transformer,ViT)建立模型,实现故障代码预警。
在WT运行过程中,大部分部件在正常和故障状态之间还存在随时间变化的潜在故障状态,即早期故障特征隐藏在SCADA数据中。二维图像化数据处理方法可以建立SCADA数据不同时间点间的联系,形成完整的图像来显示SCADA数据随时间变化的特征分布,有利于机器学习挖掘SCADA数据中的隐藏信息,从而在SCADA报警前的亚健康状态进行故障预警。
MTF可在保留SCADA数据时间相关性的同时将其转化成二维图像[12]。对SCADA数据X={X1,X2,X3,…,Xn}按分位数Q划分为Q个分位区后,用各分位区分位qj(j∈[1,Q])量化表示SCADA数据,即为矩阵M。其中,mij=p(qi→qj),表示分位数qi转移到分位数qj的转移概率。M具体表示为
(1)
(2)
(3)
式中:f(x)——激活函数;
Mj——l层中与l-1层特征图相连接的第j个特征图;
* ——卷积运算;
down(x)——采样函数。
ResNet可以用于图像分类,除了包括式(2)和式(3)的卷积与池化操作外,还可引入残差块解决CNN退化问题[13]。基于MTF-ResNet的SCADA数据特征提取如图1所示。其中,x为输入,H(x)为输出,即理想映射,残差F(x)表示H(x)与x之间的误差,ReLU为max(0,x)的激活函数,分位数Q为10。
图1 基于MTF-ResNet的SCADA数据特征提取
在模型建立前,需要对SCADA数据进行数据清洗,一般用风速-功率曲线区分正常运行点、停机点、异常运行点等[14]。清洗前后数据如图2所示。
图2 数据清洗前后的风速-功率曲线
基于MTF-ResNet的大部件故障预警与数据标签流程如图3所示。图3中,数据点采样间隔为10 min。
图3 基于MTF-ResNet的大部件故障预警与数据标签流程
故障预警离线部分将84维SCADA历史故障数据转换成MTF图像输入ResNet中,训练基于ResNet的故障预警模型。在实时故障预警部分,每产生新采样点数据时,都将新产生数据与前方短时间的历史数据转化成实时MTF图像输入到已经训练好的模型中,输出故障概率图。图3中“其他状态”表示所监测故障状态的其余状态,所有状态概率之和总是等于1。
为了保证故障预警精度,设置故障告警时间点需满足以下条件:一是当故障状态概率大于等于0.6时,此时间点可被选为故障告警起始观测点(图3中的A点),此时所监测的状态概率高于所有其他状态(考虑到故障概率的波动);二是起始观测点后12 h内状态概率增长应大于0.1,则将满足该条件第一个时间点选为故障告警点(图3中的B点),如果不满足第二个条件,则重复步骤,直至选出故障告警点为止。
对大部件预警后,结合风电场SCADA报警日志可实现故障代码数据标签与扩充,即将告警点B之后且超过B点阈值的SCADA数据标记为预警日志中该类型故障代码,从而在准确的前提下尽可能多地扩充标签数据。这些数据将用于第2级故障代码预警模型训练。
由于故障代码特征隐藏于不同维度的SCADA数据中,因此先将数据转换为时序灰度图,计算公式为
(4)
式中:xgray——灰度值表示形式;
x——数据原始值;
xmax——样本数据最大值;
xmin——样本数据最小值。
将SCADA数据映射到[0,255]区间形成标准灰度图像。ViT可通过图像分块处理、图像块嵌入与位置编码、转换编码器和全连接神经网络分类处理环节完成图像分类任务[15]。对于原始图像分辨率为(H,W)、通道数为C的图像x∈H×W×C,将其分成N个P×P×C图像块,此时图像被转化为序列输入xp∈N×(P2×C),转化后序列经过嵌入层E∈(P2×C)*D映射到D维度空间,同时添加类别信息xclass和位置编码Epos,构成嵌入输入向量z0。计算公式为
E∈(N+1)×D,Epos∈(N+1)×D
(5)
经过包括多头自注意力、跳跃连接和层规范化(Layer Normalization,LN)的多头自注意力层(Multi-head Self-attention,MSA)(可以重复L个)。计算公式为
(6)
经过包括多层感知器(Multilayer Perceptron,MP)、跳跃连接和层规范化的3个全连接神经网络。计算公式为
(7)
LN计算公式为
(8)
以一个分类头输出该时间点SCADA的故障代码类型概率。基于ViT的故障代码预警流程如图4所示。
图4 基于ViT的故障代码预警流程
本文分级故障预警方法总体流程包括离线故障预警模型训练和实时故障预警。风电机组精细级联故障预警方法流程如图5所示。
图5 风电机组精细级联故障预警方法流程
离线部分将历史数据转化为MTF图像后,训练基于ResNet两大部件故障预警模型(模型1),然后结合模型1结果和风电场报警日志以及1.2节数据筛选条件,进行故障代码标签与扩充,继而将标签后数据灰度图像化后,训练基于ViT的故障代码预警模型(模型2)。实时部分利用两级级联离线模型完成故障代码预警。
本文选取国内某海上风电场实际SCADA数据及SCADA系统故障报警日志进行验证分析。SCADA采样间隔为10 min,记录监测量共84维。将2012—2014年该海上风电场SCADA数据用于MTF-ResNet-ViT方法训练。表1为2012—2014年运行故障频次统计表。
表1 风电场故障频次统计
由表1可知,3年内偏航系统和变频器故障报警次数居前2位,且齿轮箱故障造成停机时间最长、影响最大[16]。为了验证所提方法的通用性,算例分析选取上述3种大部件故障及其下属故障代码实际故障案例进行验证分析。
本文使用Windows10系统Pyhon3.7,Intel®CoreTMi7-9750H CPU@2.60GHZ及RTX2060配置。第1级故障预警使用文献[17]的ResNet50算法,包含49个卷积层和1个全连接层[18]。第1级故障预警阶段训练样本为500个时间段,共42 000张图片,训练及计算时间5~7 h。第2级故障预警采用文献[15]的ViT-Base方法。第2级预警中故障代码4689,4096,3803在3年内初始有标签数据样本47个,经第1级故障预警对故障代码数据扩充及标签后,第2级故障代码预警阶段训练样本8 021个,每个样本包含84维度数据,训练及计算时间约2 h。
2014年3月19日,SCADA系统对18号风机变频器第2级过电流故障(故障代码4689)发出警报。变频器故障预警算例如图6所示。其中:图6(a)为采用模型1中的第1级算法对变频器故障进行预警;图6(b)为采用模型2中的第2级算法对变频器故障进行预警。第1次警报时间为5:50,即图6(a)中的数据点641和图6(b)中的数据点555。
图6 变频器故障预警算例分析
由图6(a)可知,大约在数据点180左右,变频器故障状态概率持续增加。使用1.2节故障预警标准可知,数据点230处的变频器故障概率达到0.6,在此后12 h故障概率增长超过0.1,因此可在数据点230处预警,即模型1相对于SCADA,提前约56.5 h预警变频器故障。由图6(b)可知,故障代码5183代表变频器存在错误状态,故障代码3799代表变频器未达到正常频率。变频器故障代码4689的概率在大约数据点100处开始持续增加,从数据点150后领先于代码5183、代码3799和其他状态。使用1.2节故障预警标准可知,数据点219处故障代码4689的概率达到0.6,在此后12 h故障概率增长超过0.1,符合1.2节中的故障预警标准,因此可在数据点291处告警故障代码4689。此外,变频器故障代码类型可在变频器故障预警后约12.5 h告警,即故障代码类型相对于SCADA,报警时间提前了约44 h。
2015年5月5日,SCADA系统对23号风机的齿轮箱轴承高于极限值(故障代码4096)发出警报。齿轮箱故障预警算例分析如图7所示。第1次警报时间为2:25,即图7(a)中数据点562和图7(b)中数据点785。
图7 齿轮箱故障预警算例分析
由图7(a)可知,数据点163处的齿轮箱故障概率达到0.6,在此后的12 h,故障概率增长超过0.1,因此可在数据点235处预警,即模型1可提前54.5 h实现齿轮箱故障预警。
由图7(b)可知,图中故障代码4100代表齿轮箱的进油压力低于极限值,故障代码4085代表齿轮箱冷却扇高速反馈不匹配。齿轮箱故障代码4096状态概率在大约数据点100后持续增加,在约数据点150后领先于代码4100、代码4085和其他状态。依据1.2节故障预警标准可知,数据点436处故障代码4096的概率达到0.6,在此后的12 h,故障概率增长超过0.1,因此可在数据点508处告警故障代码。此外,齿轮箱故障代码类型可在齿轮箱故障告警后约8.2 h预警,即故障代码类型相对于SCADA,报警时间提前了约46.3 h。
2015年12月9日,SCADA系统对7号风机的偏行控制机舱旋转超速事件(故障代码3803)发出警报。偏航系统故障预警算例分析如图8所示。第1次警报时间为11:30,即图8(a)中数据点645和图8(b)中数据点811。
图8 偏航系统故障预警算例分析
由图8(a)可知,在数据点150左右,偏航系统故障状态概率持续增加,在数据点200后均领先于变频器、齿轮箱和其他状态。依据1.2节中的故障预警标准可知,数据点229处偏航系统故障的概率达到0.6,在此后的12 h,故障概率增长超过0.1,因此可在数据点301处告警故障,即模型1可提前约57.3 h实现偏航系统故障预警。
由图8(b)可知,故障代码3816代表液压偏航刹车压力冗余传感器差异超出极限值,故障代码5119代表偏航定位超时。在数据点100左右,偏航系统故障代码3803状态概率持续增加,数据点220后均领先于代码3816、代码5119和其他状态。依据1.2节中的故障告警标准可知,数据点471处故障代码3803的概率达到0.6,在此后的12 h,故障概率增长超过0.1,因此可在数据点543处告警故障代码。此外,偏航系统故障代码类型可在偏航系统故障预警后约12.6 h预警,即故障代码类型相对于SCADA,报警时间提前了约44.7 h。
上述不同部件的算例分析均采用算法完全相同的故障预警模型,故障案例在训练之外的数据中随机选取,并覆盖了针对WT不同大部件及故障代码的验证。由此可知,本文方法具有一定的通用性。
采用上述相同故障场景和训练数据对文献[19]中的CycleGAN-RBF算法进行对比分析,结果如图9所示。由图9(a)可知,变频器故障概率在数据点410处首次达到0.6,但并不满足1.2节中12 h内增长超过0.1的条件,因此继续监测。在数据点448处变频器故障概率达到0.6,并在此后12 h故障概率增长超过0.1,即该算法预警时间相对于SCADA,提前40.5 h完成大部件预警,而本文MTF-ResNet-ViT方法则能提前44.0 h完成更精细故障代码预警。由图9(b)和图9(c)可知,CycleGAN-RBF方法无法实现故障代码数据标签,因此本文提出的方法在预警提前时间和精细度方面均具有优势。
图9 相同算例下文献[19]算法结果
本文通过对SCADA数据进行图像化预处理,在展现数据时间相关性的同时,保留故障类型间耦合特征,构建基于MTF-ResNet-ViT的故障级联预警模型,在预警大部件故障的同时,解决故障代码存在标签数据稀少的问题,从而有效进行更精细的WT故障代码类型预警。
算例分析表明,本文所提方法能够对WT大部件中的变频器、偏航系统和齿轮箱提前55 h左右实现故障预警,故障代码则可在对应故障大部件预警后的10~15 h实现准确判断,即早于SCADA系统40~45 h实现精细化故障代码预警。较同类算法,本文所提方法在预警时间和精细程度上均有一定的提升。本文提出的方法有助于风电场提前安排运维计划,减少因部件严重劣化而造成的重大损失。