主要内容gydF4y2Ba

基于自编码器和小波的异常检测gydF4y2Ba

这个例子展示了如何使用小波特征来检测直流系统中的电弧故障。为了直流配电系统的安全运行,识别由老化、磨损或啮齿动物咬伤导致的电线绝缘恶化所引起的电弧故障和故障前信号是很重要的。这些电弧故障会导致微电网的冲击、火灾和系统故障。与交流配电系统中的故障信号不同,这些故障前电弧闪光信号很难识别,因为它们不会产生触发断路器的显著功率。因此,这些信号可以在系统中存在数小时而不被检测到。gydF4y2Ba

研究了小波变换在电弧故障检测中的应用gydF4y2Ba[1]gydF4y2Ba.本例遵循该工作中详细描述的特征提取过程,包括使用Daubechies滤波负载信号gydF4y2Badb4gydF4y2Ba小波和归一化。此外,利用正常条件下的信号特征训练的自编码器用于检测负载信号中的电弧故障。示例文件夹中提供了用于生成故障信号的直流电弧模型和用于检测电弧故障的预训练网络。由于训练网络进行较大信号的电弧检测需要相当长的模拟时间,在本例中我们只报告检测结果。gydF4y2Ba

培训和测试设置gydF4y2Ba

使用Simulink®模型生成的负载信号来训练自动编码器gydF4y2BaDCNoArcgydF4y2Ba在正常情况下,即无电弧故障。该模型gydF4y2BaDCNoArcgydF4y2Ba使用Simscape™Electrical™Specialized Power Systems库中的组件构建。gydF4y2Ba

图1:gydF4y2BaDCNoArcgydF4y2Ba正常情况下产生负载信号的模型。gydF4y2Ba

电压源使用以下参数建模:gydF4y2Ba

  • 交流谐波源1:gydF4y2Ba交流电压10v,频率120hzgydF4y2Ba

  • 交流谐波源2:gydF4y2Ba交流电压20v,频率2000hzgydF4y2Ba

  • 直流电压源:gydF4y2Ba1000 VgydF4y2Ba

在模型中gydF4y2BaDCArcModelFinalgydF4y2Ba我们在每个负载支路中增加了电弧故障产生。该模型采用Cassie电弧模型合成电弧故障。电弧模型像理想电导一样工作,直到电弧在接触分离时间点燃。gydF4y2Ba

图2:gydF4y2BaDCArcModelFinalgydF4y2Ba电弧故障负载信号的产生模型。gydF4y2Ba

Cassie电弧模型是合成电弧生成中研究最多的黑箱模型之一。模型由以下微分方程描述:gydF4y2Ba

dgydF4y2Ba ggydF4y2Ba dgydF4y2Ba tgydF4y2Ba =gydF4y2Ba ggydF4y2Ba τgydF4y2Ba (gydF4y2Ba ugydF4y2Ba 2gydF4y2Ba UgydF4y2Ba cgydF4y2Ba 2gydF4y2Ba -gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba

在哪里gydF4y2Ba

  • ggydF4y2Ba电弧的电导在西门子吗gydF4y2Ba

  • τgydF4y2Ba 弧时间是以秒为单位的常数吗gydF4y2Ba

  • ugydF4y2Ba电弧上的电压单位是伏特吗gydF4y2Ba

  • UgydF4y2Ba cgydF4y2Ba 恒弧电压是以伏特为单位的吗gydF4y2Ba

Cassie弧模型在Simulink®中使用以下参数值实现:gydF4y2Ba

  • 初始电导g(0)为1e4西门子gydF4y2Ba

  • 常数弧电压gydF4y2Ba UgydF4y2Ba cgydF4y2Ba = 100 VgydF4y2Ba

  • 弧时间常数为1.2e-6秒gydF4y2Ba

电弧模型的接触分离时间随机选取。所有参数已加载在gydF4y2BaPreLoadFcngydF4y2Ba回调的gydF4y2Ba模型属性gydF4y2Ba的gydF4y2Ba模型设置gydF4y2Ba选项卡。gydF4y2Ba

在接触分离时,通过数学卡西弧模型的电压下降了一些水平,并在剩余的模拟期间保持在该值。然而,在真实的电力系统支路中,电弧持续的时间间隔很小。为了确保Cassie电弧模型的电压能模拟真实电弧故障的行为,我们在每个模型之间使用一个开关来限制电弧时间。我们使用gydF4y2BaDCArcModelFinalgydF4y2Ba模型生成故障负载信号来测试自动编码器。gydF4y2Ba

为了同时检测所有负载支路的电弧故障,传感系统测量每个支路的负载电压。传感系统结合负载电压并将产生的信号发送到特征生成块。然后利用生成的特征,利用深度网络检测所有支路的电弧故障。gydF4y2Ba

使用自动编码器进行异常检测gydF4y2Ba

自动编码器用于检测信号中的异常。自动编码器训练的数据没有异常。因此,学习到的网络权值使无电弧故障的负载信号的重构误差最小化。通过对训练数据的重构误差的统计,可以选择异常检测块中的阈值,该阈值决定了自编码器的检测性能。当它遇到超过阈值的重构错误时,检测块声明异常的存在。在本例中,我们使用均方根误差(RMSE)作为重构误差的度量。gydF4y2Ba

在这个例子中,我们使用正常情况下的负载信号训练了两个自动编码器,没有电弧故障。利用原始负载信号作为训练数据,对自编码器进行训练。该编码器利用原始故障负载信号检测电弧故障。第二种自编码器采用小波特征进行训练。电弧故障检测是基于小波特征而非原始数据进行的。为了训练和测试网络,我们假设负载由10个随机选择电阻值的并联电阻支路组成。对于电弧故障信号的产生,我们在每个负载支路中加入一个Cassie电弧模型。模型的接触分离时间是这样的,它们在整个模拟期间被随机触发。就像在实时直流系统中,来自正常和故障状态的负载信号都添加了白噪声。gydF4y2Ba

特征提取gydF4y2Ba

利用离散小波变换(DWT)对信号进行滤波,并对基于小波的自编码器进行训练和测试。后gydF4y2Ba[1]gydF4y2Ba, DaubechiesgydF4y2Badb4gydF4y2Ba使用小波。gydF4y2Ba

下图是正常和故障条件下小波滤波后的负载信号。小波滤波后的故障信号捕获了电弧故障引起的变化。为了训练和测试的目的,小波滤波后的信号被分割成100个样本帧。gydF4y2Ba

图3:gydF4y2Ba正常情况下的原始负载信号和小波滤波信号。gydF4y2Ba

图4:gydF4y2Ba故障条件下的原始负载信号和小波滤波信号。gydF4y2Ba

模型训练gydF4y2Ba

在正常条件下,使用小波滤波的负载信号特征训练自动编码器。对于培训阶段,你有两个选择:gydF4y2Ba

  1. 训练自己的自动编码器,并将网络加载到预测块gydF4y2BaDCArcModelFinalgydF4y2Ba模型。gydF4y2Ba

  2. 使用gydF4y2BaDCArcModelFinalgydF4y2Ba中可用的预训练模型已预加载的gydF4y2BanetData.matgydF4y2Ba在示例文件夹中的文件。gydF4y2Ba

要训练你自己的自动编码器,你可以使用以下步骤。gydF4y2Ba

  • 首先,在正常运行条件下,使用gydF4y2BaDCNoArcgydF4y2Ba模型。使用以下命令加载、打开并运行模型。从仿真输出中提取负载信号。gydF4y2Ba

load_system (gydF4y2Ba“DCNoArc.slx”gydF4y2Ba);open_system (gydF4y2Ba“DCNoArc.slx”gydF4y2Ba);= sim卡(gydF4y2Ba“DCNoArc.slx”gydF4y2Ba);gydF4y2Ba%从模拟输出中提取正常负载信号gydF4y2Baxn = out.xn;gydF4y2Ba
  • 然后,从负载信号中提取小波滤波后的特征。您使用这些特性作为自动编码器的输入。gydF4y2Ba

训练数据:正常情况下的负载电压gydF4y2BafeatureDimension = 100;xn = sigresize (xn featureDimension);gydF4y2Ba%获得培训功能gydF4y2Batrnd4 = getDet (xn);trainData = getFeature(trnd4, featureDimension);gydF4y2Ba

使用以下网络层和训练选项对预训练的自动编码器进行训练。gydF4y2Ba

%创建网络层gydF4y2Balayers = [sequenceInputLayer(1,Name= .gydF4y2Ba“在”gydF4y2Ba) bilstmLayer(32名=gydF4y2Ba“bilstm1”gydF4y2Ba) reluLayer (Name =gydF4y2Ba“relu1”gydF4y2BaName =) bilstmLayer(16日gydF4y2Ba“bilstm2”gydF4y2Ba) reluLayer (Name =gydF4y2Ba“relu2”gydF4y2Ba) bilstmLayer(32名=gydF4y2Ba“bilstm3”gydF4y2Ba) reluLayer (Name =gydF4y2Ba“relu3”gydF4y2Ba) fullyConnectedLayer (Name =gydF4y2Ba“俱乐部”gydF4y2Ba) regressionLayer (Name =gydF4y2Ba“出”gydF4y2Ba));gydF4y2Ba%设置选项gydF4y2Ba选择= trainingOptions (gydF4y2Ba“亚当”gydF4y2Ba,gydF4y2Ba...gydF4y2BaMaxEpochs = 20,gydF4y2Ba...gydF4y2BaMiniBatchSize = 16,gydF4y2Ba...gydF4y2Ba情节=gydF4y2Ba“训练进步”gydF4y2Ba);gydF4y2Ba

训练步骤需要几分钟。如果你想训练网络,选择trainingFlag = "训练网络"。然后,可以将训练过的网络加载到gydF4y2Ba预测gydF4y2Ba中使用的深度学习工具箱™gydF4y2BaDCArcModelFinalgydF4y2Ba模型。gydF4y2Ba

trainingFlag =gydF4y2Ba“使用pretrained网络”gydF4y2Ba如果gydF4y2BatrainingFlag = =gydF4y2Ba“列车网络”gydF4y2Ba%培训网络gydF4y2Ba网= trainNetwork (trainData、trainData层,选择);保存(gydF4y2Ba“network.mat”gydF4y2Ba,gydF4y2Ba“净”gydF4y2Ba);gydF4y2Ba结束gydF4y2Ba

如果您想跳过训练步骤,可以运行gydF4y2BaDCArcModelFinalgydF4y2Ba模型加载预先训练的网络gydF4y2BanetDatagydF4y2Ba.mat用于检测负载信号中的电弧故障。gydF4y2Ba

trainingProgress.pnggydF4y2Ba

图5:gydF4y2Ba自动编码器的训练进度。gydF4y2Ba

图中是输入为训练数据时,自动编码器产生的重构误差的直方图。可以根据重构错误的统计信息来选择检测门限。例如,选择检测阈值为重构误差标准差的3倍。gydF4y2Ba

图6:gydF4y2Ba当输入是训练数据时,自动编码器产生的重构误差的直方图。gydF4y2Ba

基于自动编码器的异常检测模型gydF4y2Ba

的gydF4y2BaDCArcModelFinalgydF4y2Ba模型用于直流负载信号中电弧故障的实时检测。在运行模型之前,您必须在工作空间变量中以秒为单位指定模拟停止时间gydF4y2BatgydF4y2Ba.gydF4y2Ba

图7:gydF4y2BaDCArcModelFinalgydF4y2Ba用于电弧故障检测。gydF4y2Ba

第一个块在连续时间内产生带电弧故障的噪声直流负载信号。负载电压然后被转换成离散时间信号采样在20千赫gydF4y2Ba率转换gydF4y2BaDSP系统工具箱™中的块。然后将离散时间信号缓冲到gydF4y2BaLWTFeatureGengydF4y2Ba块,它在预处理后获得所需的四级细节投影。然后将细节投影分割为100个样本帧,这些样本帧是用于测试的特征gydF4y2Ba预测gydF4y2Ba块。的gydF4y2Ba预测gydF4y2Ba块已预加载使用正常情况下的负载信号预训练的网络。然后,异常检测块为每一帧计算均方根误差(RMSE),如果误差高于某个预定义的阈值,则声明存在弧故障。gydF4y2Ba

该图显示了使用小波滤波特征时网络预测的区域。该自编码器能够正确地检测到所有10个电弧故障区域。换句话说,在这种情况下,我们获得了100%的检测概率。gydF4y2Ba

图8:gydF4y2Ba基于小波滤波特征的自编码器检测性能。gydF4y2Ba

该图展示了原始数据训练的自动编码器(预训练网络包含在gydF4y2BanetDataRawgydF4y2Ba.mat)。当我们使用原始数据进行异常检测时,编码器能够正确识别10个区域中的7个。gydF4y2Ba

图9:gydF4y2Ba使用原始负载信号的自动编码器的检测性能。gydF4y2Ba

我们生成了一个50秒长的异常信号,包含40个电弧故障区域(该数据不包含在示例中)。当用原始信号训练的自编码器进行测试时,电弧区域以57.85%的检测概率被检测到。相比之下,经过小波滤波信号训练的自编码器能够检测到电弧故障区域,检测概率为97.52%。gydF4y2Ba

我们还研究了负载信号归一化对自动编码器故障检测性能的影响。为此,我们修改了自动编码器模型的序列输入层,使输入数据在通过输入层向前传播时进行归一化。为此,我们选择了“zscore”规范化。修改后的自动编码器层是:gydF4y2Ba

layers = [sequenceInputLayer(1,Name= .gydF4y2Ba“在”gydF4y2Ba归一化=gydF4y2Ba“zscore”gydF4y2Ba) bilstmLayer(32名=gydF4y2Ba“bilstm1”gydF4y2Ba) reluLayer (Name =gydF4y2Ba“relu1”gydF4y2BaName =) bilstmLayer(16日gydF4y2Ba“bilstm2”gydF4y2Ba) reluLayer (Name =gydF4y2Ba“relu2”gydF4y2Ba) bilstmLayer(32名=gydF4y2Ba“bilstm3”gydF4y2Ba) reluLayer (Name =gydF4y2Ba“relu3”gydF4y2Ba) fullyConnectedLayer (Name =gydF4y2Ba“俱乐部”gydF4y2Ba) regressionLayer (Name =gydF4y2Ba“出”gydF4y2Ba));gydF4y2Ba

与之前的实验设置相似,我们在正常条件下训练了一个用原始数据的自编码器和一个用小波滤波负载信号的自编码器。然后,我们对两种自动编码器的故障检测性能进行了监测。我们运行了5分钟的模拟。故障负载信号包括50个发生在随机时间实例的电弧故障。用原始数据训练的自动编码器实现了80%的检测概率。相比之下,用小波滤波信号训练的自编码器能够以96%的检测概率检测出电弧故障区域。gydF4y2Ba

总结gydF4y2Ba

在这个例子中,我们演示了如何使用自动编码器来识别直流系统中的电弧故障。正常条件下的原始负载信号和小波滤波后的负载信号都可以作为特征来训练自编码器。通过这些异常检测机制,可以及时发现电弧故障,保护直流系统免受故障的危害。gydF4y2Ba

参考文献gydF4y2Ba

[1]gydF4y2Ba王,詹,和罗伯特S.巴洛格。用小波变换分析直流配电系统的电弧故障和闪光信号。gydF4y2BaIEEE智能电网汇刊gydF4y2Ba6,不。4(2015年7月):1955-63。gydF4y2Bahttps://doi.org/10.1109/TSG.2015.2407868gydF4y2Ba

辅助函数gydF4y2Ba

getDetgydF4y2Ba-该函数得到经过小波滤波后的正常负载信号并进行归一化处理。gydF4y2Ba

函数gydF4y2Bad4 = getDet (x)gydF4y2Ba此函数仅用于支持小波中的示例gydF4y2Ba%的工具箱。它可能在未来的版本中被更改或删除。gydF4y2BaLS = liftingScheme(小波=gydF4y2Ba“db4”gydF4y2Ba);[ca4, cd4] =轻型(x = 4级LiftingScheme = LS);D4 = lwtcoef (cd4, ca4 LiftingScheme = LS, OutputType =gydF4y2Ba“投影”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba类型=gydF4y2Ba“细节”gydF4y2Ba);d4 =正常化(d4);gydF4y2Ba结束gydF4y2Ba

getFeaturegydF4y2Ba-该函数将小波滤波后的数据分割为尺寸featureDimension的特征。gydF4y2Ba

函数gydF4y2Bafeature = getFeature(x, sz)gydF4y2Ba此函数仅用于支持小波中的示例gydF4y2Ba%的工具箱。它可能在未来的版本中被更改或删除。gydF4y2Ban =地板(长度(x) /深圳);特点=细胞(n, 1);gydF4y2Ba为gydF4y2BaIi = 1:n c1 = 1+((Ii -1)*sz);c2 =深圳+ ((ii-1) * sz);印第安纳州= c1, c2;功能{2}= ' (x(印第安纳州,:));gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba

sigresizegydF4y2Ba-gydF4y2Ba该函数去除负载信号的暂态部分。gydF4y2Ba

函数gydF4y2Baxn = sigresize (x,深圳)gydF4y2Ba此函数仅用于支持小波中的示例gydF4y2Ba%的工具箱。它可能在未来的版本中被更改或删除。gydF4y2Ban =地板(长度(x) /深圳);如果= n *深圳;xn = 0(低频,1);xn(1:低频)= x(1:低频);gydF4y2Ba结束gydF4y2Ba

另请参阅gydF4y2Ba

功能gydF4y2Ba

对象gydF4y2Ba

相关的话题gydF4y2Ba

Baidu
map