基于改进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)。