叶进*1,朱健1,卢泉2,李陶深1,常生强,屈国旺
(1.广西大学计算机与电子信息学院, 广西南宁530004;2.广西大学电气工程学院, 广西南宁530004; 3.石家庄科林电气股份有限公司, 石家庄050222)
近年来,能源危机的威胁使得我国的新能源产业得到了疾速的发展,太阳能作为新型能源的代表,其具备无污染、可再生、可持续等天然优点,使得太阳能光伏发电技术得到大力的推广,但是由于自身和外部环境因素的综合影响,光伏发电设施在工作的过程中难免也会出现问题。由于发电环境的多变性,发电系统每天的发电量都不同,很多家庭光伏发电的用户并不知道自己的发电设备是否发生故障,为了保障用户的最大化收益,对故障光伏发电站的检测成为系统销售公司最为关心的问题。
目前, 故障光伏发电站检测的方法主要有基于红外图像检测分析法[1-2]、基于电路结构分析法[3-7]、基于电气测量对比分析法[8-13]以及基于智能检测分析法。
其中智能检测分析法主要有基于决策树、高斯过程以及神经网络[14-15]等方法。
Zhao等[16]使用基于决策树的故障检测方法实现对光伏阵列故障的诊断,主要是通过测量光伏阵列的电压、电流、光伏阵列工作温度以及太阳辐照度等数据,对这些数据进行数据处理,并标上标签,然后再对这些带标签的数据进行训练,得到一个分类模型,将待检测数据输入该分类模型从而实现对光伏阵列故障进行诊断。
徐瑞东等[17]使用基于高斯过程的方法,主要是对光伏阵列的工作状态用二进制码来表示,然后将其转换为整数,再构建故障定位模型,对采集到的历史光伏发电电压、电流等发电数据进行高斯过程的回归训练;再将当前的实时发电数据输入训练好的回归器中,即可实现对光伏阵列的故障诊断和定位。
Chouay等[18]提出一种基于I-V特征分析和人工神经网络(ANN)的诊断方法。通过构建和训练人工神经网络,将光伏阵列的属性特征值输入到训练好的神经网络中,可以识别出8种不同类型的故障。
本文提出的基于DBSCAN聚类算法的光伏发电站故障检测模型主要是利用改进的DBSCAN算法对电站进行聚类,将相同发电环境内的电站聚为一类,然后将每一类内的每一座电站的单位发电量与该类内电站的平均单位发电量作比较,若该电站的单位发电量低于该类单位发电量的平均值的20 %,则判定该电站为潜在故障电站。实验通过对石家庄科林电气有限公司提供的1 700座电站数据作测试,该方法将其中的23座故障电站检测出21座,故障电站检测正确率为95.45 %,召回率高达91.3 %。
目前绝大部分光伏系统故障诊断的方法都是采用比较法进行诊断的,基于红外图像分析法是将故障时的热成像与正常状态下的热成像作比较;基于电气测量法是将测量得到的I-V曲线与理论曲线进行比较;基于智能检测方法的过程也是将测量到的数据与历史故障数据进行比较。
本文采用的方法也是比较法,但是与上面几种方法比较的参数不一样,主要是将统计到的每一类电站的单位发电量均值与周边相同环境中的发电站的单位发电量作比较。本文提出的模型构建流程如图1所示。
图1 模型流程图Fig.1 Flow chart of model
基于DBSCAN聚类算法的故障光伏发电站检测模型对输入变量十分敏感,用尽可能少的输入变量使得模型蕴含的信息最大,合理的选择输入变量可以提高模型对故障检测的准确度。
单位光伏发电量的多少与电站所处的发电环境、光强以及光伏发电设备的温度等有关。通过对电站的地理位置检测,将一定地理位置区域内的环境视为相同环境,与周边相同环境的发电站发电情况作比较,通过电站地理位置的经度(L)和纬度(D)检测发电站,所以电站地理位置的经度(L)和纬度(D)是两个非常重要的输入变量。
通过比较电站的单位发电量(UGC)来判断电站是否发生故障,单位发电量=发电量/装机容量,即发电量(P)和装机容量(C)也是两个不可或缺的输入变量。当单位发电量过低时,可以判断该电站出现了老化或者光伏阵列存在遮阴问题。
图2 光伏组件衰减曲线Fig.2 Photovoltaic module attenuation curve
光伏发电站的工作周期大约为25 a,发电设备的工作效率、性能都将逐渐降低,发电量也随之减少。造成这种结果主要的原因是器件自然老化、设备的质量下降、组件表面的尘土以及组件间的电路结构等[19]。文献[20]指出:光伏阵列组件在第一年大约衰减3 %,之后24 a的衰减呈线性递减,第25年大约衰减至80 %。图2显示了某公司的光伏组件的损耗率衰减曲线。通过调查分析发现不同型号的光伏组件在相同年限内的损耗差别不是很明显,但是随着使用时间的增加光伏组件的损耗对电站的发电量影响较大,根据光伏组件出厂时给定的损耗率衰减曲线,可以计算出光伏组件的发电效率,可以依据发电效率的高低来判断该组件是否发生故障;所以电站投入使用的时间也是一个重要的输入变量,根据使用的时间(T)计算电站的损耗率Att=f(T)。
通过经纬度检测电站的位置,光伏阵列的单位发电量通过发电量和装机容量来确定,光伏发电量随着光伏组件效率及性能的逐渐降低而逐年递减,需要根据电站投入使用的时间来计算电站的损耗率。所以选择经度(L)、纬度(D)、发电量(P)、装机容量(C)以及电站投入使用时间(T)作为输入变量。
DBSCAN聚类算法[21]是一种基于密度进行聚类的算法,主要是将一定密度的对象聚成一簇,使得同一簇内对象间的特征尽可能相似,不同簇间对象的差异性最大。 本文提出的基于DBSCAN聚类算法的故障光伏发电站检测模型对于聚类的结果有严格的要求,高质量的聚类结果能够提高故障检测的准确率。但是原始的DBSCAN算法对数据集的密度比较敏感,对密度不均匀的数据聚类效果较差,主要原因是DBSCAN聚类算法定义了Eps和MinPts两个全局参数,Eps邻域在该检测模型是指电站以Eps为半径的区域,MinPts相当于在Eps领域内的发电站的数量,这两个参数的取值直接决定了算法聚类结果的好坏。原始的DBSCAN算法对于这两个值的选取主要依赖于人工的干预,实施过程较为麻烦且不能保证聚类的质量,为了能够选择合适的Eps和MinPts来提高聚类的质量,进而提高模型对故障光伏发电站检测的准确率,为此需要对DBSCAN算法进行改进,所以本文提出了一种自适应的算法(adaptive density-base spatial clustering of applications with noise,A-DBSCAN),主要是为了提高算法的聚类质量,使得聚类的效果更好,从而提高故障光伏发电站检测的准确率。
A-DBSCAN聚类算法参数Eps、MinPts的确定[22-23]。利用欧几里德距离公式计算样本集合中所有对象之间的距离,确定对象间的欧式距离分布矩阵DISTn×n,如公式(1)所示:
DISTn×n= {dist(i,j)|1≤i≤n,1≤j≤n},
(1)
图3 KNN分布Fig.3 KNN distribution
其中,n代表样本集合中数据对象的个数,dist(i,j)为对象i和对象j之间的欧式距离,将DISTn×n中每一行的值从小到大进行排序,行排序好之后再对每一列的值进行同样排序,排序的结果为KNN分布,如图3所示。
根据图3的曲线可以看出,每一条曲线到最后都会急剧上升,寻找合适的曲线,找到急剧上升的拐点即可得到参数Eps,为了得到曲线的拐点,可以利用多项式对distk曲线进行拟合,多项式拟合公式如式(2)所示。
f(x) =ax4+bx3+cx2+dx+e,
(2)
接着对多项式拟合曲线进行求解,即可求得曲线的拐点,得到Eps值后,再对MinPts求值,MinPts为每个对象在Eps邻域内对象数量的数学期望值,计算公式如式(3)所示:
(3)
式中:Pi为在点i的Eps邻域内对象的数量。
为了保证聚类的质量,依次对distk(k=1,2,3…,n)曲线开始进行多项式拟合,得到相应的Eps值和MinPts值,再对样本集合进行聚类,使用轮廓系数(轮廓系数取值范围为-1到1,值越大表示聚类质量越高)来判断聚类结果质量的好坏,如果distk+1曲线得到的参数聚类结果质量比distk曲线的高,则继续对distk+2曲线进行拟合,将聚类结果质量与distk+1曲线的作比较;如果distk+1到distk+m(m为常量)曲线得到的参数聚类结果质量比distk曲线的低,则判定拟合distk曲线得到的参数聚类结果质量最好,这样能够既可以找到高质量的聚类结果,也能很好的控制曲线的拟合次数,从而提高算法的效率。
为了验证A-DBSCAN算法的有效性,使用了3组UCI中的数据Iris、Wine、Glass对改进算法进行测试验证,本算法在Windows 10系统和Matlab环境下运行,PC机硬件配置:Intel(R) Core(TM) i7-7700 CPU,8GB内存,1T硬盘。测试结果如表1所示。
表1 实验比较Tab.1 Experiment of comparisons
从表1的结果来看,改进后的A-DBSCAN算法在时间性能要差于传统的DBSCAN算法,因为改进后的A-DBSCAN算法既要对距离分布矩阵进行排列,也要对distk曲线进行拟合、求解,同时还要计算轮廓系数来判断聚类质量,因此算法的效率稍低,但是算法的聚类质量得到了提升,以牺牲时间来换取聚类的质量。
在正常工作的光伏发电站中,系统在前三年的发电量大约减少5 %,25年后减少大约20 %。根据此现象得出,在正常使用的年限内,如果发电系统没有发生故障,则电站的单位发电量和相同环境中的其他发电站的单位发电量相差不会超过20 %,如果电站的单位发电量低于出厂时的80 %,即在相同环境下,当电站的单位发电量比相同环境中的电站平均单位发电量低20 %时,则认为该电站出现异常,判定该电站为故障电站。
模型流程如下:
①根据电站的经度(L)、纬度(D),利用改进后的A-DBSCAN算法对电站按照地理位置进行聚类,将所有的电站分成不同的簇,同一簇中的电站视为在相同环境下工作的电站;
②计算每个电站的单位发电量UGC:
(4)
以及电站的损耗率Att:
Att=f(T)。
(5)
③对同一簇中的发电量求均值AveUGCk:
(6)
其中:k为簇的标号,n为每一簇的数量,同时对每个簇中电站的单位发电量进行判断,如果:
UGCki/Att<0.8×AveUGCk,
(7)
则将该电站标记为故障电站。其中UGCki为第k个簇中第i座电站的单位发电量。
④如果电站是噪声点,则判断在Eps邻域内是否还有其他电站,如果有,则求它们单位发电量的均值,加以判断;如果没有,则忽略。
光伏发电站故障检测模型主要是发现发生故障的发电站,利用DBSCAN聚类算法可以将相同发电环境下的发电站划分为一簇,通过比较相同发电环境下发电站的单位发电量来判断发电站是否发生故障,即相同发电环境下发电站的单位发电量接近,如果发电站的单位发电量低于该类的平均单位发电量的阈值,则判断该发电站发生故障。通过实验对此模型进行检验。
石家庄科林电气股份有限公司一直大力推广分布式光伏发电系统,主要提供居民屋顶、楼房屋顶和企业屋顶等光顾发电解决方案,目前接入科林光伏发电系统的发电站遍布全国各地,总共有16 104座,总装机容量高达174 154 kW。为了检验该方法的有效性,本文利用科林电气公司提供2018年2月份某一天河北省内其中1 700座光伏发电站的数据集进行了测试,该数据集中包括发电站的经度、纬度、装机容量、投入使用时间以及发电情况和运行状况等数据,这1 700座电站分布在河北省的各个地方。根据石家庄科林电气股份有限公司提供的电站监测数据,可以实现对电站的实时监控。实验中故障的发电站数量为23座。本文使用Matlab平台对该故障检测模型进行试验测试,根据发电站的经、纬度对发电站进行聚类,再通过式(4)~(7)对电站的运行状态进行计算诊断,诊断的结果如图4所示:
图4 故障电站分布Fig.4 Fault power station distribution
对这1 700座电站数据进行了测试,其中有23座电站为目标故障电站。从实验结果来看,该模型将这1 700座电站分为了43个类,相邻不同颜色的簇为一类,同一簇内的电站代表在同一地理位置区域内的电站,同一地理位置区域所在的外界发电环境相同,即每一簇代表一种外界发电环境。图4中每一个○和*都代表一座电站,所有的○都代表正常的电站,有2座故障电站没有找出来,也包含在其中;红色的*代表已经找到的故障电站,故障电站的单位发电量要比同一类电站的单位发电量要低20 %以上。该模型将电站总共分成了43个类,即有43种不同环境中的发电站,对每一类的单位发电量求均值,将每一类中的每座电站的单位发电量与均值作比较,实验总共检测出22座故障电站,检测正确率为95.45 %,召回率为91.3 %。通过实验初步验证该方法的有效性,改进的DBSCAN聚类算法能够很好的对相同环境的光伏发电站进行聚类,从而实现对故障电站的判断。
本文提出了一种改进的自适应A-DBSCAN聚类算法的故障光伏发电站检测的方法,可以实现对异常光伏发电站的监测以及检测。Eps与MinPts的取值决定了DBSCAN聚类算法聚类质量,为了能够选择合适的Eps和MinPts,提高聚类的质量,通过改进的A-DBSCAN算法可以自适应确定全局参数Eps与MinPts,提高聚类的准确度,初步实验结果表明此方法能有效的对故障电站进行检测,并且具有较高的准确性。该方法的实现不需要额外的设备支持,可以实现实时在线实施测试。维护人员接收到故障警报后,可以快速对故障电站检测,及时通知用户对设备进行故障检测与维护。