基于BP神经网络的虚拟故障诊断的实现*
2014-11-23
(海军工程大学电子工程学院 武汉 430033)
1 引言
目前,军事通信装备呈现出集成度更高和造价更加昂贵的特点。传统的装备维修保障训练以实装训练为主,面临人才培训周期长、训练经费高、装备损耗严重和受环境和条件的限制等问题。虚拟故障诊断采用虚拟仿真技术构建装备训练平台,使受训人员能够在虚拟的环境中接受装备维修保障训练,有效解决了上述问题[1]。设备故障诊断技术起源于美国,20世纪60年代末70年代初在美国、英国等国家取得较大发展。我国从20世纪80年代中期开始研究设备故障诊断技术,如今已形成高校、研究所及工厂的梯队式研究、开发和应用模式[2]。虚拟故障诊断技术将虚拟现实技术与故障诊断技术相结合,在虚拟的环境中模拟故障诊断的整个过程,从而实现故障维修训练的目的。当前,电子设备故障诊断系统已能够实现电路板级的故障诊断,但是,元件级故障检测极其复杂,主要依靠人工测量,凭经验判决,准确性、稳定性和效率都难以保证,给日常的装备保障维修带来不便[3]。本系统将虚拟仿真技术应用于元件级故障诊断,以Delphi为系统平台开发可视化界面,构建电路板的三维模型,运用Multisim 仿真工具完成电路仿真和故障模拟,生成故障数据库[4],经过BP 神经网络的计算得到故障诊断结果,实现了电子设备元件级故障诊断。
2 系统设计
电子设备的虚拟故障诊断系统要求既能向受训者展示各电路板的三维模型和拆装过程,与受训者进行交互,又要根据测量的信号,进行故障诊断,找出故障点,指导受训者完成故障诊断与维修。整个过程的实现,要综合运用虚拟仿真、电路仿真与故障模拟、故障诊断和可视化界面开发等技术。BP神经网络是一种并行结构的信号处理网络,具有自适应性、自学习能力和容错性,能够较好地解决电子设备元件级故障诊断的问题[5]。考虑到Delphi强大的可视化界面开发能力,整个系统以Delphi为开发平台[6]。系统设计框图如图1所示。
图1 系统设计框图
3 系统实现
3.1 电路仿真与故障模拟
通过电路仿真进行故障诊断可以用图2所示框图[7]来表示。
图2 仿真电路故障诊断框图
该框图由测试信号发生器、待测电路、标准电路和比较分析器四个模块构成,测试信号发生器产生电路的标准输入信号,标准电路认为是没有故障的正常电路,待测电路是对标准电路设置某一故障后得到的电路。测试信号同时输入给待测电路和标准电路,通过比较测试点的信号波形,就可以得到故障信号以及发生故障的元件。
某型通信设备的电源模块由整流电路、稳压电路、滤波电路和保护电路等构成[8]。根据实际使用和故障诊断经验,确定电路关键点,作为仿真测量的节点[9]。系统以Multisim 作为电路仿真工具,通过对标准电路设置特定类型故障(如三极管基极和集电极短路)得到待测电路,仿真待测电路和标准电路,得到各测量节点的电压,连同故障类型和故障元件编号一起存入数据库,就可以构成该故障的所有特征信息。
3.2 BP神经网络的实现
3.2.1 BP神经网络的基本原理
BP神经网络由输入层(Input Layer)、隐含层(Hidden Layer)和输出层(Output Layer)构成,输入层、输出层节点(同神经元)个数分别由输入矢量、输出矢量的维数决定。隐含层节点个数的确定,目前还没有统一、准确的方法,可以参考以下三个公式[2]:
式中n,h,m分别代表输入层、隐含层和输出层节点数,a为1~10之间的常数。M为样本数,当i>h时,
三层BP神经网络的一般结构如图3所示。
图3 三层BP神经网络结构图
设神经网络的输入、输出矢量分别为x=(x1,x2,…,xn)T,y=(y1,y2,…,ym)T。自隐含层开始,从神经元j到i的连接权值为wij(输入层连接权值规定为1),第u层(u=1代表隐含层,u=2代表输出层)的神经元个数为Nu,第u层第k个神经元的权值向量写为,k=1,2,…,Nu。第u层第k个神经元的输出记为,状态记为,那么
在给定输入样本[X,Y]后,BP 神经网络的权值将按照使式(8)目标误差函数的值达到最小的方向进行调整。
式(8)中,Y为网络期望的输出,为网络的实际输出且,W是网络的权值矩阵。利用梯度下降最优化算法,权值向量的修正量由式(9)确定:
其中,输出层的由式(10)得出
对于隐含层:
上述方法就是BP 算法[2],体现了数据正向传递、误差反向传播的过程。对于给定的训练样本,按照上述方法反复训练神经网络来调整权值,直到网络实际输出与期望输出之间的误差在允许的范围内为止。
3.2.2 BP神经网络的Matlab实现
Matlab神经网络工具箱nnet(Neural Network Toolbox)提供了丰富的神经网络实现函数,有图形用户界面函数,神经网络创建、训练和仿真函数,绘图函数以及Simulink支持。
BP神经网络的Matlab实现主要用到以下三个函数:
newff(·):BP神经网络创建函数;
train(·):网络训练函数;
sim(·):使用网络进行仿真。
BP神经网络的Matlab实现程序流程图如图4所示。
3.3 Matlab与Delphi的混合编程
Matlab能快速实现数值计算、信号处理和图形分析等功能,编程效率高。Delphi使用全新的可视化编程环境,在工程开发中可以方便高效地实现人机交互、数据采集和端口操作等功能。但是,Delphi在数值计算和图形分析方面,其编程效率远远低于Matlab。因此,Matlab 和Delphi混合编程,优势互补,能为系统的实现提供更简单高效的途径。
目前应用较多的是利用COM 接口实现Matlab与Delphi的混合编程。在较早版本的Matlab中,用户可以利用COM tool命令启动COM Builder的图形用户界面,然后通过添加类和函数文件,再进行相关的设置就可以生成COM 组件文件。但是,新版本的Matlab 软件已不再提供COM tool,取而代之的是Deploy Project工具[10]。
图4 BP神经网络的Matlab程序流程图
系统以Matlab R2011a为开发工具。混合编程的过程可概括为:配置编译环境、新建COM 工程、添加类和方法,最后编译完成。
这里,类名决定了导入Delphi的组件的名称,方法可以是Matlab的函数文件,其一般格式如下:
function
[y1,y2,…,yn]=func(x1,x2,…,xn)
…
y=f(x1,x2,…,xn);
这里定义了一个函数func。
编译完成后,工程文件夹下将会生成两个文件夹distrib和src,distrib文件夹,里面存放的是动态链接库形式的COM 组件File_name_1_0.dll,1_0代表版本信息。
在使用组件之前,必须对组件进行注册。Matlab在编译完成之后会自动对组件进行注册。在Delphi中安装此组件,编写以下程序[11]实现COM组件的调用。
上述程序中,COM_Name是被调用组件的名称,func是该组件的方法。
3.4 系统实例
电路展示(V)菜单用于展示被测电路板的模型。通过故障模拟菜单可以选择不同类型的故障,这些故障数据事先已存储在数据库中。建立BP神经网络,设置好网络参数,输入故障数据矢量,系统能完成故障诊断,并定位故障点(元件),给出故障原因,生成维修策略。可以对系统进行性能分析,包括神经网络的性能分析和维修策略的分析。
4 结语
本系统基于BP神经网络的故障诊断方法,利用虚拟现实技术、电路仿真技术、BP 神经网络的Matlab实现以及Delphi的可视化开发技术,实现了某型通信设备的虚拟故障诊断系统的设计。本系统能够有效解决有关故障维修人员在培训中遇到实际问题。经验证,该系统能够可靠运行,具有实际价值。
[1]赵经成,付战平,钟小平,等.虚拟仿真训练系统设计与实践[M].北京:国防工业出版社,2008:25-28.
[2]夏虹,刘永阔,谢春丽.设备故障诊断技术[M].哈尔滨:哈尔滨工业大学出版社,2010:180-203.
[3]张琪,侯加林,闫银发,等.基于虚拟仪器的电路板故障检测与诊断系统的研究[J].电子测量与仪器学报,2011,25(2):135-140.
[4]常高祥,徐晓刚,王建国.虚拟维修训练系统中数据库的应用[J].工程图学学报,2010(5):157-162.
[5]陈斌,王高山,杨林辉.基于BP神经网络的复杂电子设备实时故障诊断专家系统[J].海军工程大学学报,2004,16(5):105-108.
[6]李渊,陈斌,杨路刚.基于EON 的通信装备虚拟维修系统的设计[J].通信技术,2013,46(1):95-97.
[7]何力.虚拟实验系统中仿真电路故障诊断的研究与实现[D].武汉:华中科技大学,2004.
[8]吕志军,高俊,关建新.基于高速DSP的跳频通信系统设计[J].信息安全与通信保密,2006(8):97-99.
[9]朱大奇,于盛林,陈小平.基于故障树分析及虚拟仪器的电子部件故障诊断系统[J].仪器仪表学报,2002,23(1):16-19.
[10]宋广东,刘统玉,王晶,等.基于COM 组件的VB 与Matlab混合编程实现振动信号处理[J].山东科学,2010,23(1):32-35.
[11]胡劲松,周方洁.基于COM 的Matlab与Delphi混合编程研究[J].计算机应用研究,2005(1):165-166.