基于神经网络和混合编程的整流桥故障诊断研究
2011-07-03沈枫王孟莲梁树甜
沈枫 王孟莲,2 梁树甜
(1. 中国船舶重工集团公司第七一二研究所,武汉430064; 2. 武汉理工大学能源与动力工程学院,武汉430063)
1 整流桥故障诊断研究系统概述
如图 1所示,诊断研究系统由 4个部分组成:上位机监视模块、采集模块、时序模块及三相整流桥。其中三相整流桥为被诊断对象,诊断系统取其母线电压波形为诊断输入数据源;时序模块根据母线电压波形产生周期性方波脉冲,使得采集模块能采集一个完整周期内得母线电压数据;采集模块以一定的采集频率采集母线电压以及时序模块产生的周期性方波脉冲信号;上位机监视模块完成数据的选取、处理,进行神经网络的初始化、训练,最终实现故障诊断。
如图2所示,上位机监视模块由人机界面、样本管理模块、数据筛选模块、数据缓冲模块、采集访问模块、MATLAB访问模块以及神经网络等子模块组成。其中,神经网络采用三层 BP神经网络,用于诊断整流桥故障;采集访问模块异步获取采集模块采集的数据;采集访问模块和MATLAB访问模块屏蔽对采集模块、神经网络访问细节;数据缓冲模块缓冲采集访问模块获取的采集数据;数据筛选模块对采集数据进行筛选形成样本并向上提交个样本管理模块;样本管理模块管理神经网络所需样本;人机界面负责响应用户输入、显示采集数据及诊断结果。
图1 整流桥故障诊断研究系统体系结构
如图 3所示,人机界面主要分为两个部分:MATLAB操作区域及数据采集区,前者用于设置及显示样本信息、MATLAB执行结果信息,神经网络操作设置,后者用于设置采集参数,显示采集结果。
图2 上位机监控模块体系结构
图3 上位机监视模块人机界面
2 VC和MATLAB混合编程
MATLAB是由美国 MATHWORKS公司研发的数学软件,具有数值分析、矩阵运算、信号处理和图形显示等功能,其运算建立在向量数组和矩阵的基础上,界面友好、开放性强,成为科学研究、工程设计及众多学科领域应用最为广泛的工具之一。但 MATLAB是一种解释性语言,相比C/C++编译、连接生成的执行代码而言,其代码执行速度较慢。另外,MATLAB人机界面交互性较差。Visual C++是 Microsoft推出的集成开发环境,是目前应用最为广泛的基于Window平台的 C++集成开发环境。Visual C++除开发效率高,还可根据用户要求开发出丰富、友好的人机界面。
采用 Visual C++与 MATLAB混合编程来访问 MATLAB的常用方法有以下几种:调用MATLAB引擎、使用 mcc编译器、利用Matcom技术实现Visual C++对MATLAB函数的调用[2,,3,4]。
2.1 调用MATLAB引擎
MATLAB 引擎是基于 C/S(Client/Server)模式,结合 ActiveX自动化和 DDE技术实现Visual C++与 MATLAB之间的动态数据交换。采用Visual C++开发的应用程序是客户端,负责用户接口和MATLAB访问请求,MATLAB属于服务器端,向客户端提供访问服务,MATLAB引擎建立 Visual C++应用程序和 MATLAB之间的连接,完成数据动态交换。
2.2 使用mcc编译器
在 MATLAB中,能通过设置相应的编译器(如 C/C++编译器等),将 MATLAB中.m程序文件编译成与编译环境相对应的执行代码。因此,通过将MATLAB编译器设置为Visual C++的编译器,通过 mcc命令,MATLAB能将大部分的.m函数文件编译成动态链接库供 Visual C++调用。
2.3 利用 Matcom 实现 Visual C++与 MATLAB结合
Matcom是Mathworks公司推出的MATLAB到 C++的编译开发软件平台,其编译器可将MATLAB源代码译成同等功能的 C++代码。Matcom 的 C++矩阵库 Matrix<LIB>包含了六百多个经过测试的函数,包括线性代数、多项式处理、信号处理以及图像处理等方面。相比前两种混合编程方式,其最大优点在于可脱离MATLAB环境独立执行。
通过 MATLAB引擎方式来进行混合编程虽然需要 MATLAB环境,但是它可以充分利用MATLAB的功能,包括调用工具箱函数和图形函数,且成本较低,因此,本文主要利用这种方法进行访问MATLAB。
2.4 调用MATLAB引擎实现细节
表1 访问MATLAB常用函数
首先,在 Visual C++工程中,添加mclmcrrt.lib libmx.lib libmat.lib mclmcr.lib libmex.lib libeng.lib等库文件,在调用MATLAB引擎的编译单元中添加头文件 engine.h、mclmcr.h、mclcppclass.h及 matrix.h。
然后,通过调用以下几个 MATLAB引擎提供的函数来访问MATLAB,见表1。
3 BP神经网络设计
BP神经网络是指反向传播神经网络.它是应用最广泛、效果最好的神经网络之一。BP神经网络模拟人脑的学习过程,让网络存储变量之问非线性关系,通过大量样本数据训练,由输入层输入变量经隐含层逐层处理后向输出层传输,在反向传播过程中不断修正和检验变量之间的连接权重,包括输入层到隐含层的权重和隐含层到输出层的权重),达到一个理想的收敛后,得到输出变量[5]。然后将需测试的样本数据输入至该模型中,得到数据判断结果。
本文采用三层BP神经网络的结构为6-7—6,网络结构如图 4所示,其中隐层有 7个神经元,传递函数为tansig函数,输出层有6个神经元,传递函数为purelin函数。
以图4描述的三层BP神经网络为实验网络采集样本训练,最大训练次数取 8000,训练误差为10-5,信息更新速度为10。
图4 三层BP神经网络
图5 1号晶闸管故障采样波形
如图 5所示,采集电路产生周期性脉冲方波,每两个相邻的方波上升沿标识一个完整采样周期。采集模块在一个周期内取 20个采集数据点,每个数据点间隔时间相同。以此方式采集 6种不同晶闸管故障波形,组成一个 20×6样本矩阵作为神经网络的训练样本。
如图 6所示,神经网络训练短,收敛速度快,训练精度高。
4 故障诊断
采集3号晶闸管故障波形作为诊断输入,送入神经网络,诊断正确,依次采集其它晶闸管故障波形送入神经网络均诊断正确。
图6 BP神经网络训练结果
但调整到其他电压等级后,神经网络诊断准确率出现下降。再次送入对应电压等级的样本训练神经网络时,在达到同样的训练误差的情况下,收敛速度更快,如图7所示。经过训练后,神经网络诊断准确率得到提升。
综上分析研究发现,针对不同电压等级,采集足够的样本训练三层 BP神经网络,经过训练的神经网络诊断三相整流桥发生的晶闸管故障,其诊断的准确性较高,且再次训练神经网络收敛速度快,训练效果好。
图7 神经网络多次训练结果
5 结束语
[1]陈贤明, 吕宏水, 刘国华等. 三相整流桥 PFC电路拓扑的分析及控制. 电力电子, 2009, 6.
[2]苏金明, 刘宏, 刘波等. MATLAB高级编程. 北京:电子工业出版社, 2005年.
[3]刘维. 精通 MATLAB与 C/C++混合程序设计. 北京: 北京航空航天大学出版社, 2008.
[4]刘文涛, 孙文爱. VC++与MATLAB混合编程的研究与实现. 微计算机信息, 2008, 24(5-3): 257~258.
[5]楼顺天, 施阳编著. 基于 MATLAB的系统分析与设计――神经网络. 西安电子科技大学出版社.2000: 9~14.