基于神经网络的引信电路故障诊断方法
2019-11-08杨文忠王东丽丁立波
杨文忠,王东丽,李 环,丁立波,张 合
(1.中国运载火箭技术研究院, 北京 100076; 2.南京理工大学 智能弹药技术国防重点学科实验室, 南京 210094)
随着科技的发展,现代战争对武器系统的可靠性提出了越来越高的要求,其中武器系统的维护与检修尤为重要。对于引信电路,特别是小口径空炸引信电路由于其技术复杂、电路器件密集度高,很难利用常规设备进行人工检修。因此,分析引信电路故障产生机理,掌握故障规律,建立配套的智能故障诊断系统是十分必要的。
模拟电路故障诊断技术自20世纪60年代开始研究以来,取得了不少成就,也提出了很多方法[1]。在众多的方法中,如果使用参数识别方法,常规解决方案需要大量的计算;如果使用故障字典方法,需要大量的故障模拟条件[2-3]。虽然多年来提出的诊断方法较多,但付诸实践的方法还较少,未取得突破性的进展,模拟电路故障诊断之所以难以取得突破性的进展,是由于其输入输出都是连续量、难以作简单的量化、故障模型复杂、元件的参数具有很大的离散型、以及广泛存在的非线性及反馈回路等原因,使得模拟电路难以像数字电路一样提出系统而有效的诊断方法,这刚好给神经网络在该领域的发展提供了锲机[4]。人工神经网络技术代表了一种新的方法体系,它以强有力的学习和并行处理能力为故障诊断提供了全新的理论方法和实现手段[5]。并且以非线性并行分布处理为主流的神经网络理论的发展,为专家系统的研究开辟了崭新的途径,即解决了专家系统存在的各种问题,还可以利用神经网络系统的学习功能、联想记忆功能、分布式并行信息处理功能解决专家系统中的知识表示、获取和并行推理等问题[6]。因此,将神经网络与专家系统相结合,发挥各自的优点进行引信电路的故障诊断是一种新的途径,且能有效提升生产和试验中批量引信电路的检测效率及检测可靠性。
1 空炸引信原理及电路故障分析
本故障诊断系统的对象是小口径计转数空炸引信,计转数空炸引信是近几年发展起来的一种以弹丸的自转周期为计数脉冲的新型可编程智能电子引信,相比传统的定时空炸引信,计转数空炸引信只需使用计转数传感器就能实现弹丸速度的精确测量,而无需在炮口安装测速装置,这使得基于计转数的空炸引信结构简单,性能可靠;目前国内外计转数技术研究主要以实现“精确定距起爆”为目标,其精确的炸点控制能力使空炸弹药在杀伤隐蔽有生力量和城市巷战等场合的作战效能成倍提高[7-8]。本小口径计转数空炸引信工作原理框图如图1。
图1 小口径计转数空炸引信工作原理框图
根据上述引信工作原理结合原理框图,本引信电路主要由引信电源模块、地磁测试模块、无线装定模块、控制器模块及发火电路模块组成。经大量引信电路测试,发现本引信电路故障出现位置集中在以上几个主要模块当中,且类型较为确定。在电源模块中的故障主要有储能电容电压和稳压系统输出端电压异常;地磁测速模块中的故障主要有地磁传感器输出参数、运算放大器初级输出参数及次级输出参数异常;发火模块中主要是单片机输出发火信号异常、发火储能电容充电电压不足及发火脉冲幅值异常。
2 样本数据
2.1 故障样本集数据采集
本文故障诊断系统的故障样本数据采集条件是:① 引信电路工作正常;② 稳压模块输出故障;③ 地磁传感器故障;④ 运算放大器故障;⑤ 发火电路故障。在各状态下采集5组数据,并取5组数据平均值作为原始样本数据,如表1所示。表1中样本号1表示引信电路正常工作时的参数,样本号2表示稳压模块输出故障时的电路参数,样本号3表示地磁传感器故障时的电路参数,样本号4表示运算放大器故障时的电路参数,样本号5表示发火电路故障时的电路参数。
表1 各状态实验数据取平均值后的数据
2.2 数据归一化处理
在训练神经网络前一般需要对数据进行预处理,广泛采用的预处理方法是归一化处理,数据归一化,就是将数据映射到[0,1]或[-1,1]区间或更小的区间,数据归一化处理的原因一般有以下几个方面:
1)输入数据的单位不一样,有些数据的范围可能特别大,导致的结果是神经网络收敛慢,训练时间长。
2)数据范围大的输入在模式分类中的作用可能会偏大,而数据范围小的输入作用就可能会偏小。
3) 由于神经网络输出层的激活函数的值域是有限制的,因此需要将网络训练的目标数据映射到激活函数的值域。
本文采用一种简单而快速的归一化算法即线性转换算法,在[0,1]区间内线性转换的算法为
Y=(X-Min)/(Max-Min)
(1)
其中: Min为X的最小值;Max为X的最大值;输入向量为X;归一化后的输出向量为Y。上式将数据归一化到[0,1]区间。
因此,对表1中的原始样本数据进行归一化处理,处理后的结果如表2所示。
表2 数据归一化后的故障样本
3 神经网络专家系统
3.1 三层BP模型及算法流程
BP网络是一个前向多层网络,它利用误差反向传播算法对网络进行训练,是一种从输出到输入具有反馈连接的神经网络;反向传播网络具有很强的学习能力,结构简单、可塑性强、且数学意义明确、学习算法步骤分明,因此在函数逼近、模式识别等方面得到了广泛的应用。本文故障诊断系统选用典型三层BP神经网络,其网络模型如图2。
图2 三层BP网络模型
综合以上采集的数据,该BP网络有10个输入层神经元,5个输出神经元即诊断系统有5个故障模式;对于隐含层的选择较为复杂,隐含层神经元过少,网络不能识别之前未学习的样本,鲁棒性差;隐含层神经元过多学习时间长,诊断误差很难达到最小,因此,需要选择较为合适的隐含层神经元数。按照文献 介绍,隐含层神经元数目的选择可按照式(2)计算:
(2)
式中:n1为输入层神经元数;n2为隐含层神经元数;n3为输出层神经元数;将n1=10,n3=5代入式(2)中,可计算出隐含层神经元数n2=13。
BP网络的学习过程包括正向传播和反向传播。当正向传播时,输入的样本信息从输入层经过隐含层单元一层一层进行处理,通过所有的隐含层之后,则传向输出层,在逐层处理的过程中,每一层神经元的状态只影响下一层神经元的状态,在输出层把现行输出和期望输出进行比较,如果在输出层的误差大于期望误差,则信号进行反向传播,将误差信号按原来正向传播的通路反向传回,并对每个隐含层的各个神经元的权系数进行修改,这种过程不断迭代,最后使得信号误差达到允许的误差范围之内。因此BP算法的实质是求取误差函数的最小值问题,这种算法采用非线性规划中的最速下降方法,按误差函数的负梯度方向修改权系数。
结合本空炸引信电路故障模式,其故障诊断过程分为以下几个步骤:
1)采集所需样本数据,将训练样本做归一化处理;
2)以储能电容电压、稳压模块输出、地磁信号幅值、地磁信号周期、运放一级输出、运放二级输出、发火信号电平、碰炸发火信号负脉冲幅值、空炸发火信号负脉冲幅值、发火电容电压这十个归一化处理后的参数作为样本输入,以诊断结果二进制编码作为样本输出;
3)通过对样本的学习建立诊断模型;
4)反复训练网络得到期望的误差;
5)对未知故障数据进行诊断。
3.2 神经网络训练
利用Matlab神经网络工具箱进行神经网络的训练及性能验证,神经网络的输入就是特征量的提取,因此采用上面采集的经过归一化处理的数据,网络的输入向量范围为[0,1],以矩阵形式保存后输入;神经网络的输出即为本引信电路的6种故障模式,采用如下二进制形式来表示输出:
引信电路正常:(1,0,0,0,0)
地磁传感器故障:(0,1,0,0,0)
运算放大器故障:(0,0,1,0,0)
稳压模块故障:(0,0,0,1,0)
发火电路故障:(0,0,0,0,1)
隐含层神经元数目的选择在上面已经介绍了;传递函数是BP网络的重要组成部分,传递函数必须是连续可微的,因此,隐含层神经元的传输函数采用S型双曲正切函数tansig,输出层神经元传递函数采用S型对数函数logsig,因为logsig函数返回值位于区[0,1]中,正好满足网络的输出要求。
网络训练函数采用traingdx函数,该函数是自适应调整学习速率附加动量因子梯度下降反向传播算法训练函数,网络训练过程是一个不断修改权值和阈值的过程,通过调整,使网络的输出误差达到最小[9-10]。
其他相关网络配置参数如表3所示。
表3 网络配置参数
综合以上数据,神经网络的样本输入P和目标输出T分别为:
P1=[1.001.000.990.991.000.99
0.950.960.980.98];
P2=[1.000.990.001.000.680.54
0.960.970.970.99];
P3=[1.000.990.980.970.850.01
1.000.920.970.99];
P4=[1.000.000.990.000.000.00
0.971.001.001.00];
P5=[1.001.001.000.990.991.00
0.000.000.000.00];
T1=[10000]; T2=[01000];
T3=[00100]; T4=[00010];
T5=[00001];
P=[P1;P2;P3;P4;P5];
T=[T1;T2;T3;T4;T5];
创建BP神经网络:
BPnet=newff(minmax(P),[13,5],{′logsig′,′logsig′},′traingdx′,′learngdm′);
net.trainParam.epochs=2000;
net.trainParam.goal=0.001;
net.trainParam.show=10;
net.trainParam.lr=0.05;
BPnet=train(BPnet,P,T);
经过网络循环训练279次后,网络性能达到要求,其误差曲线如图3所示。
图3 BP网络训练误差曲线
3.3 神经网络诊断性能验证
网络训练成功后,专家系统就完成了知识获取的过程,利用学习样本对神经网络的训练结果进行验证,选取稳压模块故障样本、地磁传感器故障样本及运算放大器故障样本进行验证,其样本数据(1号为稳压模块故障、2号为地磁传感器故障、3号为运算放大器故障)和归一化数据结果分别如表4和表5所示。
表4 样本数据
表5 归一化数据
1) 用1号样本验证网络:
Pnew1=[1.0 0.0 0.95 0.00 0.00 0.00 0.98 0.70 1.00 0.99];
Anewn1=sim(bpnet,Pnew1);
display(Anewn1);
验证结果:
Anewn1=[0.0003 0.0012 0.0561 0.7798 0.1937];
2) 用2号样本验证网络:
Pnew2=[1.0 1.0 0.00 0.99 0.62 0.60 0.94 1.00 0.62 0.99];
Anewn2=sim(bpnet,Pnew2);
display(Anewn2);
验证结果:
Anewn2=[0.010 5 0.996 2 0.000 4 0.000 4 0.000 0];
3) 用3号样本验证网络:
Pnew3=[0.0 1.0 1.00 0.99 1.000.00 1.00 0.97 0.92 0.99];
Anewn3=sim(bpnet,Pnew1);
display(Anewn3);
验证结果:
Anewn3=[0.063 7 0.000 0 0.798 3 0.005 0 0.039 4];
对以上3个输入样本结果进行整理后结果如表6所示,其对应的神经网络期望输出如表7所示。按照欧式范数理论,3个样本的诊断误差分别为0.220 2、0.003 8、0.201 7,误差都很小,将验证结果与神经网络期望输出进行对比,该神经网络的故障判断率为100%;因此,该神经网络可以满足本引信电路的故障诊断要求。
表6 验证结果
表7 神经网络期望输出
3.4 结果转化
该神经网络的输出结果是二进制的数值形式,但测试人员通过测试系统人机交互界面看到的结果并不是二进制数值形式;该神经网络输出结果的数值转化成知识的规则是:输出结果10000表示无故障即引信电路正常;输出结果是01000表示地磁传感器出现故障;输出结果是00100表示运算放大器出现故障;输出结果是00010表示稳压模块出现故障;输出结果是00001表示发火电路出现故障。
4 结论
利用神经网络专家系统实现了引信电路的故障诊断,显著提高了批量引信电路的测试效率及故障诊断可靠性。该方法通过建立三层神经网络诊断模型,结合了神经网络和专家系统各自的优点,利用Matlab选择合适参数进行网络训练,验证结果表明诊断结果可靠有效。该方法配合自动测试系统应用时,能达到更好的效果。