APP下载

航空发动机故障诊断系统设计与实现

2014-08-30张俊红马文朋李林洁

计算机工程与应用 2014年16期
关键词:调用故障诊断组件

张俊红,马文朋,李林洁,刘 昱

ZHANG Junhong,MA Wenpeng,LILinjie,LIU Yu

天津大学 内燃机燃烧学国家重点实验室,天津 300072

State Key Laboratory of Engines,Tianjin University,Tianjin 300072,China

1 引言

随着民用航空事业的发展,飞行安全性和经济性越来越受到重视,航空发动机是飞机的心脏,结构复杂、工作环境恶劣,是机械行业中故障率最高、维护工作量最大的系统,其工作状态的好坏直接影响飞行安全。据NASA统计资料表明,民航领域的发动机故障占飞机所有机械故障的三分之一;另外一项关于发动机直接运行成本的统计显示,维护费用占34%。因此,进行航空发动机状态监测与故障诊断具有重要意义。

我国的航空发动机故障诊断研究还处于起步阶段,国内尚未出现成熟的商业化的航空发动机故障诊断系统,但在相关方法、技术及系统开发的研究上也出现了一些成果。应勇[1]设计了航空发动机监控系统的硬件电路,讨论了航空发动机状态信号的多种处理方法,并利用LabWindows/CVI开发平台和C语言,开发了一套航空发动机故障信号分析处理软件。马业鹏[2]利用经典和现代数字信号处理方法,在LabVIEW开发平台上,结合MATLAB和C语言,开发出了航空发动机振动的状态监测和故障诊断系统。以上系统拥有较强的信号处理功能,但在故障模式识别上较为薄弱。

本文基于航空发动机振动信号,利用LabVIEW虚拟仪器开发平台,通过其外部接口调用MATLAB和C语言程序,设计了一套航空发动机故障诊断系统。该系统由数据采集、信号处理与特征提取、故障模式识别、故障数据库管理等模块组成,其中数据采集由LabVIEW调用动态链接库驱动TST-5912数据采集仪实现;故障模式识别由LabVIEW利用ActiveX自动化技术调用MATLAB编译的支持向量机COM组件实现;故障数据库管理由LabVIEW通过数据库连接工具包访问Microsoft Access数据库实现。其中故障模式识别模块是该系统的核心。最后在航空发动机转子实验台进行故障诊断实验,对该系统的性能进行了测试。

2 支持向量机故障诊断模型

支持向量机(Support Vector Machine,SVM)[3]是建立在统计学习理论基础上的一种通用机器学习方法,在解决小样本、非线性、高维问题中有诸多优势,具有良好的泛化能力,在模式识别等领域取得了广泛应用[4-5]。由于航空发动机故障样本不易获取,故障征兆与故障原因之间的关系复杂,鉴于SVM的优势,该系统选择SVM作为故障诊断模型。

给定训练样本集 S={(yi,xi)}(i=1,2,…,l),其中,每个样本点表示为xi∈RN,yi∈{-1,1}为其分类标识。SVM的基本思想是将输入空间映射到高维特征空间,并在高维特征空间构造最优分类超平面。令z=φ(x)表示样本从输入空间RN到高维特征空间Z的映射。

引入惩罚因子C和松弛因子ξi,C表示对样本被错分的惩罚程度,ξi(ξi≥0)表示样本 xi的错分误差,支持向量机的最优分类面问题为如下优化问题:

将该问题转化为如下拉格朗日对偶问题:

问题(2)的最优解αˉ满足Karush-Kuhn-Tucker(KKT)条件:

根据二次规划方法求得问题(2)的解αˉ,再根据KKT条件求得偏置bˉ,则可得SVM的决策函数:

引入核函数 K(xi,xj)=替高维特征空间Z的内积计算以降低计算复杂度。目前常用的核函数有多项式核、径向基函数(Radial Basis Function,RBF)核、Sigmoid核。文献[6]的研究表明,SVM的性能与核函数的类型关系不大,而核函数的参数与惩罚因子是影响SVM性能的主要因素。RBF核函数具有高度非线性,且只有一个可控参数,因而被普遍采用。RBF核函数的形式为:

本文设计了遗传算法、粒子群算法、遗传粒子群算法等多种算法对核参数g和惩罚因子C进行优化以满足不同情况的需要,并在MATLAB R2009a(7.8)环境下编制了故障诊断模型的M程序。

3 航空发动机故障诊断系统设计

在工程应用领域,LabVIEW和MATLAB是两种常用的语言,LabVIEW在用户图形界面设计、数据采集、硬件控制等方面有独特的优势,但对复杂算法的支持能力有限,而MATLAB具有强大的数据运算功能。本文结合两者的优势,进行航空发动机故障诊断系统设计,利用LabVIEW设计用户图形界面和数据采集等程序,利用MATLAB设计故障模式识别程序并通过LabVIEW的接口供其调用。

3.1 数据采集

在利用LabVIEW进行数据采集之前,必须先实现数采设备在LabVIEW下的驱动[7]。LabVIEW为NI公司的数采卡提供了配套的驱动程序与函数库,但不支持第三方数采卡。为了在LabVIEW平台中使用该系统的数采设备(TST-5912),编制了TST-5912的动态链接库(DLL)驱动程序,利用LabVIEW的调用库函数节点(CLFN)调用DLL中的函数进行数据采集。调用DLL进行数据采集有诸多优势:DLL是在应用程序运行时被装入和链接的,使用DLL可以实现多个应用程序之间代码和资源的共享,可以提高内存使用率;DLL独立于编程语言,可以使用多种语言(Visual C++、C++Builder、Visual Basic等)编制DLL。本文采用Visual C++6.0编制了该DLL。

将CLFN放置在流程图中,双击打开配置对话框,配置DLL的文件名、被调用函数的名称及调用方式、函数的返回类型、函数的参数及类型等信息,即可完成对DLL的调用。辅以其他函数和控件,完成数据采集模块的设计。数据采集的流程图和操作界面分别如图1和图2。选用12个时域参数和3个频域参数作为故障特征,如表1所示。

图1 数据采集流程图

图2 数据采集操作界面

3.2 信号处理与特征提取

航空发动机的振动信号中含有丰富的能够反映其运行状态的有用信息,但也混有大量噪声和干扰。为了消除和减少噪声及干扰的影响,提取有用信息,首先对其进行剔除异常点、零均值化、消除趋势项、滤波等预处理。

信号处理的另一项重要内容是从振动信号中提取出能够反映系统状态分类本质的特征向量,为后续的故障模式识别做准备。航空发动机发生故障时,其振动信号在时域的峰值和概率分布将会发生变化;信号的频率成分,不同频率成分的能量,以及频谱的主能量谱峰位置也会发生变化,可以作为判断其状态的依据。本系统

3.3 故障模式识别

故障模式识别模块采用LabVIEW和MATLAB混合编程的方法实现。在LabVIEW中调用MATLAB程序有以下几种常见方法[8-9]:利用MathScript节点;使用ActiveX函数模块;利用ActiveX自动化技术调用MATLAB编译的COM组件;使用CLFN调用M文件转换成的DLL。前两种方法不能脱离MATLAB编程环境,不利于独立应用程序的开发,运行效率低,而且操作不够灵活;最后一种方法需要借助其他方法或语言实现LabVIEW和MATLAB之间的数据转换和传递,编程较为繁琐。采用COM组件技术实现二者的混合编程。

MATLAB R2007a(7.4)及以后的版本中提供了Deployment Tool,帮助用户将用M语言开发的算法自动快速地转换成独立的COM组件,该组件可被任何支持COM的语言调用。把M文件编译为COM组件,需要借助外部编译器,需先进行MATLAB编译环境的设置,在MATLAB的命令窗口中输入mex-setup和mbuild-setup,选择Microsoft Visual Studio 6.0作为外部编译器。

使用Deployment Tool创建COM组件的过程一般为四个步骤:新建工程、添加M文件和MEX文件、编译生成组件、打包和发布组件。以SVM主程序svc.m为例,创建COM组件的过程如下:

表1 故障特征参数

(1)打开Deployment Tool,选择Create a new deployment project→MATLAB Builder NE→Generic COM Component,输入要创建的COM组件的名称(svm)和位置。

(2)选择Project→Add Files添加svc.m和其他必要的M文件和MEX文件。

(3)选择Tools→Build创建组件。

(4)选择Tools→Package即可打包发布组件。

编译打包完成后,svm文件夹下distrib文件夹中会生成相应的svm_1_0.dll文件和svm_pkg.exe自解压文件。DLL文件会自动注册到系统中,将自解压文件发布到其他计算机,运行即可实现DLL的安装和COM组件的注册。需要注意的是注册后不能改变DLL的存储路径或删除,否则将找不到注册组件;使用MATLAB工具箱函数时,需要将工具箱函数的源M文件添加在工程中;为了在没有安装MATLAB的目标机上使用COM组件,需要在打包时将MATLAB Compiler Runtime(MCR)打包在内。

在LabVIEW中调用上面生成的COM组件,需进行以下操作:

(1)调用Automation Open函数,右击选择Select ActiveX Class→Browse,在列表中选择 svm 1.0 Type Library Version 1.0,将 svm_1_0.dll的 Refnum 添加到LabVIEW程序中。

(2)调用Invoke Node并连接Refnum,在Method中选择svc。方法中的nargout参数表示函数输出参数的个数,若方法无输出,则无此参数。nargout的值与输出参数个数不等时,LabVIEW将反馈错误信息。输出参数的左端定义部分不用处理,赋值常量即可;右端输出结果的类型为变体型,需要通过Variant to Data节点将变体型数据转换成LabVIEW可以处理和显示的数据类型。需要注意的是,数据转换前必须清楚函数输出变量的类型,选择错误的类型标识,LabVIEW将报错;当函数输出矩阵类型时,必须将其转换成LabVIEW下的2D Array类型,即使其本应是一维数组,否则也会报错。本例中svc的输出变量为字符串和一维数组,处理方式如图3所示。输入参数可以直接输入对应的数据类型,LabVIEW会将其自动转换成变体型以满足COM组件的输入要求。

图3 LabVIEW调用COM组件流程图

(3)调用完成后用Close Automation函数关闭Refnum。

3.4 故障数据库管理

故障诊断系统需要采集大量的信息,将发动机的运行状态和故障信息存入数据库,可以方便地对数据进行管理和维护。在比较几种LabVIEW访问数据库方法[10]的基础上,系统选用Microsoft Access作为数据库管理系统,采用NI公司的数据库连接工具包对Access进行访问、操作和管理。

使用LabVIEW访问数据库之前,需先建立其与数据库的连接,该系统以字符串的形式输入连接信息。使用此方法可以通过一些路径获取函数和字符串函数将数据库的实时位置提供给数据库操作函数,避免数据库文件的位置发生变化时重新配置连接,从而可以提高程序的可移植性和灵活性。

故障数据库包含信号的故障特征、故障类型等信息,是故障诊断的依据和基础,需要保证其正确性及实效性。本文开发的故障数据库管理系统能够及时添加数据、按用户要求查询数据、对数据进行修改和更新、删除过期和无用的数据。以查询数据为例,说明故障数据库管理系统的设计过程和操作。

查询数据程序设计包括以下几个步骤:

(1)利用DB Tools Open Connection.vi建立与数据库的连接。

(2)利用DB Tools Execute Query.vi通过SQL数据查询语句SELECT查询数据库,例如查询故障诊断数据表中峰值大于0.2的记录,SQL语句为:“select*from 故障诊断数据表where峰值>0.2”。

(3)利用DB Tools Fetch Recordset Data.vi获取查询结果并输出显示。

(4)利用DB Tools Free Object.vi释放对象,并用DB Tools Close Connection.vi断开连接。

为简便操作,在程序中嵌入部分SQL语句,用户只需输入需要查询的数据条件(峰值>0.2)即可。查询数据的操作界面如图4。

图4 查询数据操作界面

4 故障诊断实验

为测试本文设计的航空发动机故障诊断系统的性能,在航空发动机转子实验台上进行了故障诊断实验。该实验台由转子试验器、安装台架、电机、基础平台和润滑系统等组成,如图5所示。转子试验器由某航空发动机设计研究所设计制造,外形与发动机核心机的机匣一致,尺寸缩小三倍;内部结构作了必要简化,支承形式简化为0-2-0式,多级压气机与涡轮简化为单级盘片结构,叶片简化为斜置平面形状,取消了火焰筒,采用电机驱动,最大工作转速为7 000 r/m。该实验台可模拟航空发动机转子不平衡、不对中、碰摩及各种滚动轴承故障。断精度,且高于未优化的模型,能够满足工程需要,同时也验证了优化的有效性。

图6 故障诊断操作界面

图5 航空发动机转子实验台

本文进行了正常状态、转子不平衡、不对中、碰摩、不平衡-碰摩耦合、轴承内圈故障、外圈故障、滚动体故障等八种状态下的数据采集和故障诊断实验,在轴承座和两端机匣上安装三向加速度传感器来采集转子的振动信号,经信号处理及特征提取后,形成故障诊断样本,如表2。将样本输入故障模式识别模块,选择合适的参数和优化算法,进行故障诊断模型训练与测试,每种算法下重复十次实验取平均,结果如表3。为研究优化算法的效果,对未优化的故障诊断模型进行了训练与测试,结果也见于表3。最后将训练好的模型用于故障诊断,操作界面如图6。

表2 故障诊断样本

表3 故障诊断结果

由故障诊断结果可见,针对该实验获取的样本,采用四种算法优化的支持向量机都达到了较高的故障诊

5 结束语

本文基于支持向量机模型,利用LabVIEW、MATLAB和C语言混合编程,设计了一套融数据采集、信号处理与特征提取、故障模式识别和故障数据库管理为一体的航空发动机故障诊断系统。应用该系统在航空发动机转子实验台上进行故障诊断实验,对转子几种典型故障的诊断结果表明该系统拥有较高的故障诊断精度。该系统的设计为研制商业化的航空发动机故障诊断系统提供了可行思路,并为后续研究奠定了基础。

[1]应勇.航空发动机故障监控系统设计与方法研究[D].西安:西北工业大学,2007.

[2]马业鹏.基于LabVIEW的航空发动机振动状态监测及故障诊断系统设计[D].沈阳:沈阳航空工业学院,2007.

[3]Vapnik V N.An overview of statistical learning theory[J].IEEE Transactions on Neural Networks,1999,10(5):988-999.

[4]Xian G M,Zeng B Q.An intelligent fault diagnosis method based on wavelet packer analysis and hybrid support vector machine[J].Expert Systems with Applications,2009,36(10):12131-12136.

[5]Konar P,Chattopadhyay P.Bearing fault detection of induction motor using wavelet and Support Vector Machines(SVMs)[J].Applied Soft Computing,2011,11(6):4203-4211.

[6]Vapnik V N.The nature of statistical learning theory[M].New York:Springer-Verlag,1995.

[7]杨忠仁,饶程,邹建,等.基于LabVIEW数据采集系统[J].重庆大学学报,2004,27(2):32-35.

[8]李沈,李森,刘俊磊,等.LABVIEW和MATLAB混合编程方法研究及其在柴油机故障诊断中的应用[J].仪表技术与传感器,2007(1):22-25.

[9]王禹林,熊振华,丁汉.LabVIEW与MATLAB的无缝集成[J].计算机应用,2006,26(3):695-698.

[10]唐亚鹏,侯媛彬.基于LabVIEW的实践教学平台与Access数据库的开发[J].计算机技术与发展,2011,21(5):219-222.

猜你喜欢

调用故障诊断组件
无人机智能巡检在光伏电站组件诊断中的应用
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
基于系统调用的恶意软件检测技术研究
因果图定性分析法及其在故障诊断中的应用
风起新一代光伏组件膜层:SSG纳米自清洁膜层
基于LCD和排列熵的滚动轴承故障诊断
高速泵的故障诊断