基于能量流的风电机组异常运行状态预警软件设计
2019-05-16李林鑫刘德顺覃事刚
李林鑫 刘德顺 覃事刚 张 帆
1(湖南科技大学机电工程学院 湖南 湘潭 411201)2(中南大学机电工程学院 湖南 长沙 410083)
0 引 言
近年来,通过对风电SCADA系统提供的大量数据进行分析,来对风电机组运行状态识别、故障诊断与预警已经成为了一个研究热点[1]。一方面,采用历史SCADA数据建立研究对象的正常运行状态模型,来对比此后某一段时间的数据变化,实现异常检测。针对风电机组叶片[2]、齿轮箱[3-4]、发电机轴承[5]等关键部件或子系统开展运行状态识别与异常预警。Kusiak等[6]采用霍特林T2统计方法,对风电机组的有功功率运行数据进行分析,以此来识别整机的运行状态。另一方面,基于历史SCADA数据建立研究对象的正常运行状态预测模型,来对比实际运行状态数据变化,实现异常检测。Schlechtingen等[7]采用自适应神经模糊推理系统对风电SCADA数据进行处理,从而实现对风力发电机运行状态的监测。孟玲霞等[8]基于流行学习的预警方法、张少敏等[9]基于Storm实时流数据处理和Spark内存批处理技术,对风电机组齿轮箱故障预警进行研究。郭慧东等[10]提出了基于SCADA数据利用LSSVM与GMM相结合的风电机组变桨系统劣化状态在线识别方案。梁颖等[11]提出了基于回归预测模型和SCADA系统相配合的在线评估方案。
本文根据能量流概念对风电机组进行系统划分[12],通过分析风电机组各个子系统输入输出参数之间的关系,建立风电机组运行状态健康指标,进而利用跨平台型良好的Qt开发软件来实现对风电机组异常运行状态预警的软件设计。
1 基于能量流参数关系在线预警原理
1.1 能量流分析
风电机组作为一种复杂机电系统,根据其内部能量传递关系,可以将其分为风能吸收环节、叶片机械能传递环节、发电机电能转换环节以及变频变流环节。根据这四个环节将风电机组划分四个前后关联的子系统。如图1所示,气流带动风力发电机叶轮转动,风能转换成叶轮系统转动的机械能,然后通过轮毂与发电机的连接机构将机械能传递给发电机转子,切割磁力线,产生电能,最后再经由变频器将电能传输到电网。图中虚线区域表示风电机组内部能量流变化,每个子系统的输入输出参数与前后子系统的输入输出参数相关联,对每个子系统的相关信息进行分析,即可获得风电机组当前的运行状态。在本软件设计中,叶轮系统、传动系统、发电机系统以及变频器系统为四个基本子系统,在这四个基本子系统之下还可以根据实际采集到的SCADA数据进行细分,如:在变桨风力发电机中,叶轮系统中还包括变桨系统等辅助子系统。
图1 风电机组能量流示意图
根据风电机组能量流动方向确定每个子系统对应的SCADA输入输出参数,表1展示了基本子系统与其对应的主要输入输出参数。对这些输入输出参数之间关系建模,以此来描述风电机组及其子系统运行状态。在表1中还可以看到每个中间子系统的输入输出变量都具有承前启后的特性,即上一个子系统的输出参数作为下一个子系统的输入参数。
表1 子系统名称及其主要输入输出参数
本软件按照能量流理论将风电机组划分为四个子系统后,通过计算子系统的运行状态健康指标,并分析其变化阈值,从而实现风电机组运行状态的在线预警。
1.2 风电机组运行状态预警模型
风电机组运行状态预警大致分为状态识别与预警两个步骤。首先需要对风电机组运行状态进行识别,提出风电机组运行状态健康指标,然后根据健康指标进行统计分析,计算阈值,实现风电机组运行状态预警。
对于实际风电机组及其各个子系统来说,其包含的输入输出参数之间的关系是复杂的,但都可以采用多项式逼近的方法来表示每个子系统中输入输出参数之间的关系。这样,某输入x与输出y之间的关系可以表示为:
y=a0+a1x+a2x2+…+anxn
(1)
式中:n为多项式阶数,a0、a1、a2、…、an为常系数。
对于风电机组及其子系统,基于SCADA参数历史数据应用最小二乘法,可以计算出式(1)中的系数a0、a1、a2、…、an,根据SCADA参数当前数据可以计算出模型系数记作b0、b1、b2、…、bn,于是,可以得到风电机组及其子系统运行状态健康指标[13]:
(2)
式中:xmax、xmin为当前数据集中,输入变量x的最大值与最小值。这里,健康指标C表示风电机组某个时刻的数据集计算出来的运行模型相对于正常运行时刻的数据集计算出来的标准运行模型的差异。健康指标C的值越大,说明该时刻运行状态相对于正常运行状态差异越大,发生异常的可能性越大;C的值越小,说明该时刻运行状态相对于正常运行状态差异越小,发生异常的可能性越小,即运行正常的可能性越大。
由于风速具有很强的随机性,风电机组运行状态也表现出随机性,其健康指标C实际上是一个随机变量。各个时刻的健康指标组成新的数据集Dc={C1,C2,…,Cn},并具有一定的随机分布规律。采用核密度估计法对其进行处理,构造其密度函数,一维核密度估计函数的一般式为:
(3)
式中:K(x)为核函数;n为数据集Dc中数据量;h为核密度函数的带宽。带宽h的取值影响着核密度估计的精确度,如果h太小或太大都会对计算结果产生剧烈影响。
选择高斯核函数,则可以对数据集Dc统计分析得到核密度估计函数为:
(4)
式中:最优带宽hopt的计算公式为:
(5)
(6)
2 在线预警软件的设计与实现
2.1 应用场景
现代大型风电机组大多装配了相应的SCADA系统,对风电机组进行状态监控。信息收集与储存是其核心业务,而在风电机组运行状态报警方面,对风电机组各子系统的物理联系缺乏有效分析与解释,导致SCADA系统只能在故障发生时给出报警信息,而无法提前预警以避免事故发生。利用SCADA系统提供的大量历史数据,对风电机组运行状态进行分析是本软件的主要功能。本软件应用架构如图2所示,通过访问SCADA系统服务器的数据库获取实时数据进行分析。
图2 预警软件在SCADA系统中的应用构架
在核心业务模块中,给出了一个风电机组实时阈值计算方法,让原本固定不变的阈值随SCADA数据的变化而变化。除了访问SCADA系统服务器数据库以外,本软件完全独立于SCADA系统本身进行独立的风电机组运行状态预警。即对于不同的SCADA系统,只要正确设置其数据存储格式,都可以通过本软件进行访问分析。
成功连接数据库后,软件会自动读取SCADA数据,并将数据传递给软件的其余部件,通过人机交互接口显示当前数据变化。作为一个基于SCADA数据的在线预警软件,本软件不需要在运行电脑上额外配置环境变量,不需要增加任何物理设备,对于风电机组维护成本的影响几乎为零。
2.2 软件结构
软件结构如图3所示,可以看出,本软件分为数据准备层、数据操作层、绘图操作层与辅助功能层等四个层次。
图3 软件结构图
数据准备层:本层为数据访问模块,具备软件外部数据访问以及软件内部数据分流功能。首先,访问SCADA服务器中的数据库作为本软件的数据来源,以驱动软件内置各子系统的数学模型;然后将读取到的SCADA数据按照软件不同功能模块传输给绘图操作层、数据操作层。
数据操作层:本层包含两个数据处理模块:一个是基于能量流参数关系的风电机组运行状态健康指标计算模块;另一个是基于统计学的非参数核密度估计的阈值计算模块。通过接收来自数据准备层的数据后进行计算分析。首先计算实时风电机组运行状态指标值,传输给绘图操作层以及运行状态指标实时阈值分析模块,在运行状态指标实时阈值分析模块中,进行实时阈值分析,新读取的数据与实时更新的历史数据集阈值进行对比,其对比结果同样传递给绘图操作层。
绘图操作层:从数据准备层与数据操作层获取数据信号,根据实时的数据信号绘制实时图像,包含基本数据图表与状态数据图表两个绘图模块。基本数据图表模块由主界面基本参数绘图与鼠标点击参数绘图模块组成;状态数据图表框架由实时运行状态健康指标绘制模块、实时健康指标阈值绘制模块与预警状态绘图模块三部分组成。其中主界面基本绘图模块为软件主界面基本参数实时显示,而鼠标点击参数绘图则是将本软件所分析的各个参数单独绘制成图,便于运维人员在阅读数据的同时,更直观掌握当前风电机组参数变化情况。状态数据图表框架中包含的三个模块是本软件设计的核心内容,它们反映了当前风电机组实时运行状态、实时阈值变化以及风电机组是否处于预警状态。当风电机组运行状态指标突破健康指标阈值时,预警状态绘图模块将根据绘图策略更改当前主界面显示状态,提醒工作人员注意风电机组运行状态。
辅助功能层:作为人机交互层,本层的设计以便于工作人员随时查看风电机组运行状态预警记录为目的,设计了预警日志输出模块、参数设置模块以及运行状态提醒模块。当本软件监测到风电机组可能存在异常运行状态时,预警日志模块就会在软件主界面打印一条预警事件的记录,工作人员随时可以通过主界面了解风电机组的预警情况。该模块还提供了日志文档功能,可以将预警日志输出到文本文档,保存至工作人员指定目录下。对于不同风电机组,其初始模型参数必然有所差异,因此,利用参数设置模块对不同风电机组的初始运行状态模型参数进行设置。运行状态提醒模块是本软件层的最后一个模块,当风电机组运行状态出现异常预警时,从无异常状态切换至异常,与异常预警消失后,从异常提醒状态恢复到无异常状态。
2.3 基于Qt的软件模型算法实现
Qt作为一个集成开发环境,为开发人员提供了丰富的类库以及其特有的信号与槽机制[14],易实现风电机组运行状态数据的在线分析,并输出预警结果。本软件在数据分析过程中包含了一个时间窗口模型与两个数据处理方法。
2.3.1时间窗口模型
为了实现数据的实时更新,引入一个滑动时间窗口模型来实现对获取到的数据建立一个动态数据集D,如图4所示。
图4 滑动时间窗口模型
图4中,n表示数据集D的时间宽度,不同的SCADA系统提供的数据采样频次不同。本文采用的SCADA系统数据采样频率为每秒一次,因此数据集宽度n在数值上与时间计数相同,即数据集D包含n个元素,就表示数据集D包含n秒钟的数据,D(ti-1)表示ti-1时刻的数据集,Δd表示n个时间单位后新增加的数据子集。此滑动时间窗口模型的具体算法设计详见算法1。
算法1Sliding Time Window Model(d)
输入:当前时刻待分析SCADA数据;
输出:动态数据集D;
{//start algorithm
步骤1初始化数据集基本参数
int n;
//设置窗宽;
new QVector
//初始化
QVector容器D用于存储数据;
D< //将数据d传递给D; 步骤2控制数据集大小 while(D.size()>=n){ //当D的大小达到窗宽n时,开始循环; D.removefirst(); //移除D中第一个元素。 …; } //end while; } //end algorithm; 在算法1所示的时间窗口模型实现过程中,利用while循环可以保证动态数据集的大小固定,当数据集大小达到时间窗口设定值时,删除第一个数据,同时新进的数据存入数据集的末尾。基于时间窗口模型,可以实现风电机组运行状态健康指标与预警阈值实时动态分析。 2.3.2风电机组运行状态健康指标算法 第1节已经讨论了关于风电机组运行状态健康指标的计算方法,在计算健康指标的过程中,包含了风电机组实时运行状态建模,以及实时健康指标计算两部分。首先利用最小二乘多项式拟合来求解风电机组实时运行状态模型的参数,然后根据式(2)计算健康指标,具体算法设计详见算法2。 算法2Healthy Criterion algorithm(x,y) 输入:目标子系统原始输入输出参数SCADA数据; 输出:目标子系统运行状态健康指标C; { //start algorithm; 步骤1初始化数据集基本参数 new QVector new QVector CriterionCalculation(int n, B[n], x, y) { //n为拟合阶次;length为时间窗宽; //B[n]为标准多项式拟合参数b0, b1, b2, …, bn; X< Y< //输入数据传递给X、Y; while(X.size()>=length;){ X.removefirst(); Y.removefirst(); 步骤2利用最小二乘法计算式中参数; LeastSquares(X,Y,n){ …; return A[n]; }; //A=(a0, a1, …, an) 步骤3根据式计算风电机组运行状态健康指标C; calculationC(A[n],B[n]){ …; return C; } } //end while; } //end CriterionCalculation(); } //end algorithm; 在算法2的自定义函数calculationC(A[n],B[n])中,根据式(2)计算风电机组运行状态健康指标时,采用Romberg积分算法[15]来解决其中的积分问题。Romberg算法是建立在Simpson公式、Newton-Cotes公式基础上的一种加速积分算法。利用Richardson外推加速收敛技术,使该算法可以在不增加计算量的前提下提高误差精度。 2.3.3风电机组运行状态预警阈值算法 利用统计学中非参数估计原理,可以对算法2计算出来的风电机组健康指标C进行阈值计算。在这一部分中,要实现风电机组运行状态预警阈值的实时分析。首先,收集实时健康指标C,建立一个动态数据集;其次,根据式(4)与式(5)计算健康指标C的密度函数;最后,根据式(6)计算阈值。这部分算法详见算法3。基于算法3,软件可以完成实时预警阈值的计算,返回预警阈值所需要的参数,再根据式(6)便可以计算出随SCADA数据变化的风电机组运行状态的预警阈值。 算法3Warning Threshold algorithm(c) 输入:待分析风电机组运行状态健康指标C; 输出:实时风电机组预警阈值Cth; { //start algorithm; 步骤1初始化数据基本参数 QVector ThresholdCalculation(double c, int length){ //c为实时健康指标值;length为时间窗宽; 步骤2输入数据传递给C; C< while(C.size()>=length; ){ C.removefirst(); 步骤3根据式中最优带宽hopt; OptimalBandwidth(C){ …; return h; }; 步骤4计算数据集的数字特征 NumericalCharacteris(){ NuclearDensity(C,h){ …; //根据式进行核密度估计分析; }; …; return Cmean、S、Sigma; } //Cmean、S分别运行状态健康指标 //数据集的期望与标准差; //sigma为核密度估计标准差; …; return Cth; //根据式计算预警阈值Cth; } //end while; } //end ThresholdCalculation(); } //end algorithm; 基于时间窗口模型、风电机组运行状态健康指标算法与预警阈值算法,可以实现一个完整数据处理周期。本软件设计的风电机组运行状态预警流程如图5所示。 图5 预警流程图 在图5中,SCADA数据从开始出发,首先计算出某个风电机组及其子系统输入输出参数关系的运行状态健康指标C,再根据健康指标C的值进行实时统计分析并计算预警阈值Cth,然后做出判断。若满足判定条件,即无异常预警,直接进入下一轮计算,若不满足判定条件,则给出预警提醒,再继续下一个周期的分析。 本软件采用Qt creator开发软件,版本号为5.10.1,操作系统环境为Windows 10。以某风电场2 MW直驱式风电机组的SCADA系统数据为监测对象,提取风电机组SCADA系统4天运行数据进行在线监测模拟。首先将SCADA数据导入服务器数据库,运行本软件并配置好各子系统标准模型参数,如图6所示,点击确定生效。然后连接数据库,模拟在线监测过程。其中A0、A1分别对应正常运行状态下的多项式回归模型参数。 图6 叶轮子系统参数设置 图7展示了当风电机组正常运行时,在软件主界面中可以看到实时功率曲线稳定在额定功率附近,总体运行状态进度条也与其余子系统进度条一样,处于一个常规的状态。而当软件检测出风电机组即将偏离正常运行状态时风电机组运行状态进度条数值将不断增长,并且在软件主界面显示预警消息,如图8所示。 图7 运行状态主界面(非预警状态) 图8 运行状态主界面(预警状态) 从图8中可以看出,叶轮系统出现异常运行状态预警,其预警进度条预警状态值已经达到92%。而风电机组总体运行状态进度条仍然处于“非常好”的状态,说明风电机组总体的运行状态与子系统运行状态不一定完全相同,即风电机组子系统出现异常时风电机组整体运行状态并不一定会同时出现异常。由于一个输入输出参数关系代表着一个子系统或者零部件运行状态模型,所以基于参数关系的预警也就提供了发生异常的零部件方面的信息,这有利于针对性的维护。 在软件运行过程中,工作人员可以通过点击主界面中各个系统对应的状态进度条查看当风电机组运行状态健康指标与实时预警阈值的变化。图9显示了风电机组风速与功率之间健康指标以及其预警阈值的变化,横坐标表示当前时刻到过去360 s的时间跨度,纵坐标表示风电机组运行状态健康指标与预警阈值的变化范围。 图9 总体运行状态评估指标与阈值 风力发电机运行状态预警的实时性对于风电机组预警十分关键,本文所设计实时在线预警软件重点在于构建一个实时预警的基本框架,让使用者更加方便快捷地阅读风电机组的实时运行状态。本文注重风电机组运行状态的时效性与整体性,将原本相对独立的各项SCADA参数按照能量流理论进行系统分类,并整理出对应的输入输出参数,有利于用户通过预警信息迅速查找异常零部件。将软件的数据操作设计成独立的数据操作模块,有利于引入不同的状态预警数学模型,且有较强的扩展性。3 实例分析
4 结 语