MATLAB环境下数据驱动故障检测工具箱设计
2021-01-27郭锦平边若鹏
郭锦平,边若鹏
(海装北京局驻邯郸地区军事代表室,河北 邯郸 056002)
0 引 言
现代工业系统逐渐大型化、复杂化、综合化和智能化,故障诊断技术对监测系统正常运行、及时发现系统异常具有极其重要的意义。故障诊断过程主要包括[1-2]:故障检测、故障隔离和故障辨识。从上世纪70年代起,涌现出大量故障诊断技术,主要分为[3]:基于模型(Model-based)的故障诊断技术、基于知识(Knowledge-based)的故障诊断技术和数据驱动(Data-driven)故障诊断技术。随着信息处理和传感器技术的发展,数据驱动故障诊断技术得到了长足发展[1,4-8],其直接以监控数据为基础,利用多元统计和模式识别等方法进行数据分析,从而实现故障检测、隔离和辨识[1,4-7]。
随着故障诊断技术研究的不断深入,针对故障诊断系统的仿真平台设计与研究也日益广泛。然而,当前故障诊断仿真平台研究[9-10]主要是基于模型的故障诊断平台。本文结合数据驱动故障诊断技术,在MATLAB GUIDE平台下,设计一种基于数据驱动的故障检测工具箱,给出工具箱的设计原理和模块结构。所设计的工具箱可针对监测数据特点,选择相应的数据驱动故障检测方法,有效地提高故障检测率。
1 数据驱动故障检测基本原理和方法
1.1 数据驱动故障检测基本原理
对于给定的系统,数据驱动故障检测方法基于每个观测向量设定阈值(Threshold)。若系统观测变量超出阈值,则认为发生了故障。该方法称为极限值检测法。定义误报率和漏检率如下:
定义1给定统计量J和阈值Jth,f=0代表无故障,称条件概率:
FAR=P(J>Jth|f=0)
(1)
为误报率(False Alarms Rate, FAR)。
定义2给定统计量J和阈值Jth,f=0代表无故障,称条件概率:
MDR=P(J≤Jth|f≠0)
(2)
为漏检率(Missed Detection Rate, MDR)。
其中误报率就是统计学中第一类错误的概率,即显著性水平α。
一些典型正态标准差值[2]如表1所示。
表1 典型正态标准差值
1.2 数据驱动故障检测方法
对于给定的系统,数据驱动故障检测可以分为单变量检测和多变量检测。而极限值检测法在单变量统计检测中常用的有休哈特(Shewhart)控制图法、累积和(CUSUM)控制图法以及指数加权滑动平均(EWMA)控制图法。
1.2.1 休哈特控制图
休哈特控制图法是最典型的极限值检测法。取一组正态分布的数据如下:
(3)
其中,μ为期望值,σ为方差,那么x属于特定区间(即超出阈值的区间和置信区间)概率为:
(4)
(5)
1.2.2 累积和控制图
累积和控制图的设计思想是通过累加系统过程的小偏移量,提高检测过程灵敏度[11]。目前最常用的是V型模板法和列表法[12]。
CUSUM控制图有判定距H和V型模板的一侧边界斜率K这2个参数,其中:
(6)
在双边控制中,令SH(i)为第i个样本上单边累积和,SL(i)为第i个样本下单边累积和,则有:
SH(i)=max[0,xi-(μ0+K)+SH(i-1)]
(7)
SL(i)=max[0,(μ0-K)-xi+SL(i-1)]
(8)
其中,SH(0)=SL(0)=0,当某一个累积和为负值时,将其置为0;如果SH(i)≥H或者SL(i)≥H时,则此过程出现故障[13]。
1.2.3 加权滑动平均控制图法
加权滑动平均控制图法是基于单个观测值监测系统过程的微小漂移,其统计量是当前值与历史数据的加权平均,即:
(9)
E(zt)=μ
(10)
(11)
当t→时,有:
(12)
因此,EWMA控制图的控制限为:
(13)
当统计量超出控制限时,则判定发生故障。
1.2.4 多变量统计检测法
单变量检测法能直观地显示出故障情况,在一定程度上实现故障隔离。然而实际系统往往是多变量系统,单变量检测法会忽略变量之间相关性,产生的控制图还会占用大量空间。
为了克服单变量统计检测法的弊端,1947年霍特林[15](Hotelling)结合T2统计量使用多变量检测法实现故障检测,大大提高了灵敏度。
假设系统含m个观测变量,每个变量有N个观测值,T2统计量进行故障检测流程如图1所示。
图1 T2统计量故障检测流程图
1.2.5 主元分析法
主元分析法(Principle Component Analysis, PCA)基本思想如下:设系统过程可以由几个变量来表征出所有变量的信息,那么就可以利用这几个主元代替所有的过程变量[16-18]。对于主元数量的确定通常有累积贡献法和交叉检验法[19]。
主元分析故障检测法主要是基于Q统计量实现的,又称为平方预测误差统计量(Squared Prediction Error, SPE),代表某一时刻观测值对主元模型的偏离程度,故障检测流程如图2所示。
图2 PCA技术故障检测流程
2 工具箱实现方法
2.1 工具箱MATLAB环境
MATLAB是面向科学计算的高级编程语言,可以提供强大的数据处理能力和图像处理能力,能够满足许多工程上的测试分析需求。
MATLAB的GUI设计需要结合许多控件[20-21]。常用的控件主要包括用户界面控件、下拉菜单、内容菜单,其中用户界面控件是本文设计的数据驱动故障检测工具箱控件的核心,这里主要采用的控件及实现功能如表2所示。
表2 工具箱控件及功能
结合工具箱的功能模块和不同控件实现的不同功能在可视化界面上通过拖拽完成工具箱的界面设计,并设置控件属性来调整控件的大小位置。
2.2 基于工具箱的故障检测流程
通过对MATLAB GUI的设计,构建数据驱动故障检测工具箱。对于使用者而言,只需要导入数据,根据数据特点选定相应的故障检测方法和显著性水平即可实现数据驱动故障检测。使用MATLAB GUIDE编程性语言对每一个控件的Callback函数进行开发,结合MATLAB平台实现数据的图像可视化、故障检测以及故障检测结果的可视化。
2.3 工具箱结构与主要功能模块
数据驱动故障诊断工具箱的设计需要利用监测数据实现系统的故障检测[22-23]。工具箱结构如图3所示,其中数据导入、数据预处理模块主要是对正常数据、待监测数据进行导入和预处理;故障检测模块主要是根据需要选择显著性水平并对待检测系统进行故障检测。这些模块在功能上相互联系,在形式上相互独立。数据导入和数据预处理是故障检测模块的前提,故障检测模块是工具箱的核心部分,又可细分为如下3个模块:
图3 工具箱结构设计
1)显著性水平(参数)设置模块;
2)检测方法选择模块;
3)检测模块。
工具箱的可视化图形界面如图4所示。
图4 工具箱可视化图形界面
2.3.1 数据导入模块
数据导入模块是工具箱的基础模块之一。该模块利用MATLAB平台的数据读取函数将正常数据与待测数据赋予于相应的变量,之后显示到表格和图像中。通过浏览图像和表格可以对数据直观地了解,初步分析图像的趋势,为后续的数据预处理(趋势提取)做准备。
通过GUIDE设计出数据访问模块整体布局:2个Pushbutton控件位于模块上下2部分,分别进行离线数据导入和在线数据导入;2个Table控件分别置于Pushbutton下方,分别实现离线数据和在线数据的数字可视化;2个Axes控件分别置于2个Table右侧,分别实现离线数据和在线数据的图形可视化。
数据访问模块涉及的变量如下:
global normalData:代表离线数据;
global faultData:代表在线数据。
两者在整个工具箱中作为全局变量,进行后续的数据处理和故障诊断。
数据访问模块设计的函数如下:
uigetfile(filename,pathname):一方面,该函数可以自选路径导入相应的数据文件,作为normalData和faultData;另一方面,该函数可以直接调用MATLAB工作区的数据文件作为normalData和faultData。
2.3.2 数据预处理模块
数据预处理模块是工具箱的基础模块之二,通过MATLAB环境的统计学工具箱函数以及相应的数据处理函数进行数据预处理分析,并结合趋势提取函数将数据进行标准化和单位化,从而有利于提高故障检测性能。
本工具箱提供了3种不同的趋势提取方法,即中值平滑法、滑动平均法和加权滑动平均法,函数设计如下:
medfilt1(data,a):该函数实现数据的中值平滑,其中data为待处理数据,a为平滑阶数;
wma_data(data):该函数实现数据的移动加权平均趋势提取,其中data为待处理数据;
meansmooth_data(data):该函数实现数据的滑动平均趋势提取,其中data为待处理数据。
数据中心化是将原始数据与均值做差,将变量数据尺度统一化;数据单位化是将中心化的数据除以数据的标准差,其目的是消除量纲影响和变量自身变异大小和数值大小的影响,函数设计如下:
Data_mean(data):该函数实现数据中心化功能,其中data为原始数据,输出的结果为data_mean;
Data_var(data_mean):该函数实现数据标准化功能,其中data_mean为中心化数据结果,输出结果为data_var。
2.3.3 故障检测模块
故障检测模块是工具箱的核心模块。根据不同的监测数据,运用数据驱动故障检测的基本原理和相应的检测方法,结合正常状态下系统数据和MATLAB工具箱及函数对待测数据进行分析和故障检测。本模块又可以分为以下几个功能模块:
1)显著性水平选取模块。
该模块是故障检测的关键模块,直接关系到故障检测结果。根据数据特点,并结合对系统的要求设定显著性水平,使得故障检测结果尽可能准确。
变量定义如下:
global alphar:代表显著性水平,有0.0027、0.005、0.1、0.02、0.05这5个选项供用户选择;
global c_alphar:代表显著性水平对应下的正态标准差值,在选定alphar的值后会分别直接选定下列值:3.00、2.81、2.58、2.33、1.96。
2)检测方法选取模块。
检测方法选取模块是故障检测的核心模块。结合待测数据的趋势特征,选取合适的故障检测方法进行故障检测。函数设计如表3所示。
表3 故障检测函数表
3)故障检测显示模块。
故障检测显示模块是故障检测的重要模块。图4以可视化二维图像方式直观地显示出故障检测结果,其中曲线代表统计量,虚线代表阈值或者控制限。根据统计量和阈值的关系判断故障检测结果。
3 应用实例
以工业系统故障检测为应用实例,其中数据来源于田纳西-伊斯曼过程(Tennessee-Eastman Process, TEP)仿真系统。TEP系统主要包括41个观测变量和21种预设故障模式,本文将在第1种故障(进料比率A/C发生故障)下选取一个观测变量(总进料量)进行仿真验证。训练数据和测试数据仿真时间均为50 h,采样周期为0.01 h,共有5001列(样本数)50行(变量数)。
基于本文设计的故障检测工具箱,在显著性水平选取模块中,设定显著水平为α=0.05,分别利用Shewhart控制图、CUSUM控制图与EWMA控制图在故障1情况下进行检测,得到检测图如图5所示。
图5 单变量统计检测图
根据图1和图2检测流程分别计算T2统计量和Q统计量,并得到2种统计量的阈值:
=57.5169
(14)
(15)
得到多变量统计检测图,如图6所示。
图6 多变量统计监测图
通过计算得到T2统计量和Q统计量误报率和漏检率分别为:
FART2=4.7%, MDRT2=0
FARQ=2.5%, MDRQ=0
从上面的计算结果可知,该工具箱可以较灵敏地检测出系统故障。
4 结束语
本文研究并设计了一种基于数据驱动的故障检测工具箱,结合MATLAB GUIDE语言和数据驱动故障检测技术,进行了故障检测工具箱的可视化界面的设计,给出了工具箱的设计思想和实现方法。利用所设计的工具箱,对TEP系统数据进行了故障检测的仿真验证,可以看出单变量统计检测法能够判断出与故障变量相关的观测变量,确定故障所在,一定程度上实现故障隔离,但会产生大量控制图占用空间;多变量统计检测法能够直接判断出系统是否存在故障,灵敏度较高。本故障检测工具箱采用开放性设计框架,可以不断实现更多功能,包括故障隔离、故障辨识等,这也是下一步研究的主要方向。