教学工作的资源分享

基于改进BP神经网络的模拟电路故障诊断研究

招生简章

招生简章

第28卷第9期兵员自动化Vol. 28,No. 9

2009年9月ordnanceindustryautomationsep.2009

71

doi :10.3969/j.ISSN.1006-1576.2009.09.025

基于改进BP神经网络的模拟电路故障诊断研究

张铮、杨宣访

(海军工程大学电气信息工程学院,湖北武汉430033 ) )。

摘要:根据BP神经网络的特点,提出了BP神经网络的改进方法,并以某负反馈放大器为例,采用改进后的BP

对网络进行故障诊断,步骤包括故障特征向量提取、原始数据归一化处理、BP网络设计与训练。 结果,那么

MATLAB7.1中利用神经网络工具箱函数进行仿真,可以有效地进行故障识别,改善神经网络结构,提高故障诊断精度

和速度。

关键词:故障诊断; 模拟电路; 神经网络

中图分类号: TP18; TP277文献识别代码: a

researchofanalogcircuitfaultdiagnosisbasedonmodifiedbpneuralnetwork

张瑞,杨宣坊

(schoolofelectricinformationengineering,Navy University of Engineering,Wuhan 430033,China )

abstract 3360 putforwardanimprovedmethodforbpneuralnetworkrelyingonitscharacter,and taking a certain negative

of feedback amplifier as an example,usingimprovedbpnetworkprogressfaultdiagnosis,and the steps includes: fault

feature vector extracting,originaldatanormalizationdealing,bpnetworkdesignandtraining.resultshowedthatitcan

检测故障诊断,improvenetworkstructureandincreasefaultdiagnosisprecisionandvelocityusingfunctionof

neuralnetworktoolboxinmatlab 7.1 simulation。

keywords :故障诊断; 模拟计数; 空网络

引言0

模拟电路故障诊断是根据测量数据判断电路状态

状态不好。 BP神经网络具有并行计算、自我

记忆和自学习等特点适用于模拟电路的故障诊断。

但是,收敛速度慢,容易陷入局部极小值,存在隐藏层节

因为在选择方面依靠经验公式等缺点,所以对其进行改善,获得利益

用改进的BP神经网络进行模拟电路故障诊断。

1 BP网络的改进

标准的BP网络收敛速度慢,容易陷入

存在部极小值、隐藏层节点难以确定等缺点,在应用中,

BP算法不合适。 改进BP算法的途径有两种。

一种是采用启发式学习算法,只要有动量梯度下降法

自适应学习速度梯度下降法等。 二是基于数值

共轭梯度法、高斯牛顿法等最优理论的算法

以及Levenberg-Marquardt的优化方法等。 这些改善方法

可以用MATLAB神经网络工具箱函数实现。

BP网络隐层神经元数目的选择非常复杂。

如果隐层神经元过少,则可以诱导网络精度变差,节点过多

学习时间太长,误差不一定是最佳的,也会导致容错

性能差,无法识别新样品等问题。 但是如果BP网络被隐藏起来

如果包含层的神经元数量可以自由调整,则为1个3层的BP

网络可以近似为任意非线性映射。 通过隐层神经元

通过对可变数量BP网络的误差比较,可以确定最佳隐藏

层神经元的数量。 此网络的输入层和输出层的数量为

1、隐藏层数经验公式1 n nma=,(n输)

神经元数量; m是输出神经元数; a是1-10之间的

常数)进行估计,BP网络的设计和步骤如下。

P=-1:0.1:1; %输入

t=[-0.9602-0.5770-0.07290.37710.6405.6600.4609 ]

0.1336 -0.2013 -0.4344 -0.4474…

- 0.5000-0.3930-0.16470.09880.30720.3960.34490.1816

-0.0312 -0.2189 -0.3201];

s=3:8; 设置%隐藏层节点数

res=1:6;

for i=1:6;

net=newff(minmax(p ),[s ) I ),1 ),{'tansig ',' purelin'},' trainlm ' ); %

网络培训

net.trainParam.epochs=2000;

net.trainParam.goal=0.001;

LP.lr=0.01;

net=train(net,p,t );

y=sim(net,p );

error=y-T;

RES(I )=norm(error );

结束

在多输入、多输出BP网络中,在网络训练时,

受理日期: 2009-03-10; 修订日期: 2009-04-10

基金项目:国家自然科学基金资助(50677069 )。

简介:张铮(1977-),男,湖北人,海军工程大学硕士研究生,从事电路故障诊断研究。

兵卒自动化

72

迎新生的欢迎词

迎新生的欢迎词

2 BP网络在模拟电路故障诊断中应用

BP网络应用于电路故障诊断的有几种电路

将典型的故障样本送入神经网络,使其具有判断能力,

变成故障识别系统。 工作步骤如下。

1 )确定待测电路的故障组,确定待测电路

故障集和状态特征参数采用电路仿真或实验的方法

方法获取电路每个故障状态的状态特征数据并进行筛选

在选择和归一化处理后构建训练样本集。

2 )设计和训练BP神经网络。 根据需要和经验

设计神经网络的结构、参数、训练算法。 然后进行训练

练习样本集的样本并训练网络,就完成了学习的过程。

3 )一般采用三层BP神经网络,输入层节点数

与电路状态特征参数维数相同,输出层节点数是可能的

也可以与电路测定对象故障类别数相同,小于测定对象故障类别

另一个数(通过编码指示应对故障)。

如果在实际诊断时对被检查电路施加相同的测试激励

测定的实际状态特征参数被输入训练好的BP神经

所述网络的输出可以指示适当的故障状态。

3诊断病例与仿真

现以某负反馈放大器为例,采用改进的BP

进行网络故障诊断,电路如图1所示。

500k

3.3F

5k

VOFF=0 R9

VAMPL=0.1

FREQ=50kHz

R1

V6

C5

v

R8

9k

1n

R7

1k

R6

3k

R2

1k

R3

10k

R4

2k

12v直流

0

V1

_

C3

1F

Q2N2222

out2

Q2N2222

Q1

出局5

out4

R5

0.5k

C1

1F

Q2

0

v

out3

v

v

out1 C2

图1故障诊断电路

3.1故障特征向量提取

分析电路图时,可以看到R2、R3、R4、R8是打开的

因为路、Q1和Q2发生故障对电路的危害程度很大

在模拟时选择几种故障类型作为诊断对象。 选择五个

测试点电压(out1~out5)是BP网络的输入信号,

通过PSpice仿真,对电路进行直流扫描和蒙特卡罗

分析。 Q1仅模拟发射极和集电极短路。 是的

晶体管故障模型的建立可参考文献[7]。 最后,选择

分析诊断了6种故障类型,分别将故障模式

二维码作为神经网络的输出。 表1为测试数据。

表1电路原始测试数据

节点电压

电路状态Vout1 Vout2 Vout3 Vout4 Vout5类别编码

Y0 (无故障)8. 58412.74080.59232.07771.6584000

y1(r2开路)0. 01502.74080.00392.07770.0110001

y2(r3开路)8. 58415.916 e-090.592313.96 e-091.6584010

y3(r4开路)8. 5841.31840.59230.62871.6584001

Y4(R7开路)8. 58412.76920.592311.95501.6584010

Y5(R8开路)8. 60402.74089.487 e-242.07771.70760101

Y6 ) Q1C-E极短短路(3.91202.74081.3972 ) 2.0777 ) 3.9120010

3.2原始数据规范化处理

由于系统是非线性的,BP网络的初始值相对于训练

练习是否为局部最小和收敛影响很大,同时,

各故障状态下测定值与正常电路电压值之差发生变化

因为范围很广,所以需要对输入样本进行归一化。 好的

使用正态分布函数2 () ) xaFXe=对输入样本进行

标准化,得到各故障状态下测试点的实测电压

Vout1~Vout5是电路没有故障状态下的成员资格。 回去

一体化处理后的数据如表2所示。

3.3 BP网络设计和培训

表2归一化处理后的数据

号码Y0 Y1 Y2 Y3 Y4 Y5 Y6

1x1. 0000.00001.00001.00000.99960.0000

2x 1.00001.0000.00050.13220.99921.00001.0000

3x 1.00000.70741.00001.00001.00000.70410.5232

x 1.00001.0000.01330.12250.00001.00001.0000

故障

征兆

x 51.0000.06631.00001.00001.00000.99760.0062

BP网时,闭区间内的连续信

数均可由单隐层BP网络逼近,即一个三层BP网络

可以完成任何n维到m维的映射。 BP网络的失败

内层将归一化处理后数据X1~X5作为输入层输出

层选择4个神经元,隐层单元数基于BP网络改进

方法:选择12个神经单元代入BP网络训练。

完整的MATLAB程序如下。

p=[ 1.00001.00001.00001.00001.00001.00000;

张铮,等:基于改进BP神经网络的模拟电路故障诊断研究

73

0.0000.70741.0000.0663;

1.0000 0.0005 1.0000 0.0133 1.0000;

1.0000 0.1322 1.0000 0.1225 1.0000;

1.0000 0.9992 1.0000 0 1.0000;

0.99961.0000.7041.0000.9976;

0.0000.52321.0000.0062; ();

%输入示例:

t=[0 0 0 0; 0 0 0 1; 0(1) 0; 001; 0 1 0 0; 0 1 0 1; 0 1 1 0; ();

职中

职中

net=newff(minmax(p ),[ 12,4 ],{'tansig ',' logsig'},' trainlm ' );

%BP网络建立

net.trainParam.epochs=20000; %训练次数

net.trainParam.goal=0.00001; %设置训练误差

LP.lr=0.001; 设置%学习速率

net=train(net,p,t ); %互联网培训

%测试数据

ptest=[ 0.95810.99920.87420.01471.0000; 0.9996 1.0000

0.7041 1.0000 0.9976;

0.1278 0.9855 0.5232 0.8788 0.0062; ();

y1=sim(net,ptest );

输入测试数据,利用BP网络进行故障诊断,

结果如表3所示。

表3测试结果

测试示例的实际输出期望输出

0.95810.99920.87420.01471.0000.00020.9990.00010.0100010

0.99961.0000.7041.0000.99760.0000.9984.00080.99610101

0.12780.98550.52320.87880.00620.00010.99050.99570.0081010

经过培训,可以断定互联网是完全令人满意的

故障诊断要求的。

4结束语

结果表明,该方法具有较强的学习、泛化和适应性

根据能力,可以改进神经网络的结构,提高故障诊断的精度

速度再快一点。 改善BP算法的训练精度比BP方法更值得一提

高,对输入模式有抗干扰能力,健壮性也很好。

参考文献:

[1]田景文,高美娟.人工神经网络算法研究与应用[M] .

北京:北京理工大学出版社,2006

[2]杨宣访,方华京.模拟电路故障诊断的神经网络方法综合

前述[J] .计算机测量与控制,2006,14 (5) : 564-566。

[3]宋晓娟,等.基于BP网络改进算法的模拟电路故障诊断

断[J] .甘肃科学学报,2008,20 (1) : 99-101 .

[4] vanolitovski.analoguelectroniccircuitdiagnosis

basedonanns [ j ].microelectronicreliability 2006,

46 )3) : 1382-1391。

[5]汪建民. Pspice电路设计与应用[M] .北京:国防工业出

出版社,2003年。

[6]葛哲学、孙志强、神经网络理论与MATLAB R2007实

现[M] .北京:电子工业出版社,2007年。

[7]蔡金燕,单甘霖,等.电子装备故障诊断[M] .石家庄:

武器工程学院,2004年

********************************。

(接第70页)

计算过零率、短时间能量、端点检测主程序

因为篇幅很长,所以只需要出示用c语言写的算法版,直接

或将c语言版改写为DSP版以提高执行效率。

计算一帧过零率的算法如下。

zcr=0;

for(intI=0; izcr_threshold )

zcr;

}

if(word_length0) )

zcr_buf[word_length-1]=zcr;

计算1帧的短时间能量的算法如下。

amp=0.0;

for(intI=0; i0 ) ) )。

amp_buf[word_length-1]=amp;

端点检测的主要算法如下。

if(flag_word_start ) )为

{

//语音检查结束

if(amp=amp_low||zcr=zcr_low )

silence_time=0; //还没结束

返回;

if (word _ length=amp _ high|| zcr=zcr _ high )

flag_word_start=true;

else

flag_word_start=false;

}

3结论

该方法通过调试,效果较好。 用户是

需求提取输入信号的不同特征值并将其应用于系统。

参考文献:

[1]何强,何英. matlab扩展编程[M] .北京:电子工业出版

公司,2002,6 (1)。

北京:科学出版社,2008(7)。

标签

Tag