文昌俊,陈 立,黄一凡,陈 哲
(1 湖北工业大学机械工程学院,湖北 武汉 430068; 2 湖北省现代制造质量工程重点实验室,湖北 武汉 430068)
对装备进行测试性分析,可以提早发现冗余测试、不可测故障、隐含故障等,为后期装备故障诊断建立良好基础,从而节约测试时间与成本[1-3]。目前国外的测试性分析与设计系统主要有美国QSI公司的TEAMS软件和美国DSI公司的eXpress软件,但这两款软件在国内代理价格昂贵。为了解决测试性分析过程成本高的问题,马瑞萍[4]提出了一种基于故障-测试相关矩阵的测试性分析方法,并以杨鹏[5]数据为例,证明其测试性指标分析方法的可靠性。张巧炫[6]介绍了一套完整的测试性指标计算体系,并利用VC++6.0平台开发了测试性分析及辅助设计软件。丁昊[7]利用Visio进行二次开发并配合C#语言,设计出雷达发射机系统测试性建模与分析软件,该系统可进行测试性建模以及测试性分析。
以上研究均利用基础语言开发,对使用人员编程能力要求较高,在扩展系统功能时需要专业的开发人员进行编程开发,费时费力,其系统计算的各项测试性指标未进行界面设计。为此本文详细总结了测试性分析方法,提出了各项测试性指标分析过程,利用LabVIEW进行G语言图形编程,设计了基于D矩阵的测试性分析系统,通过实例证明,系统能高效、准确地完成测试性分析工作。
装备测试性是指装备能及时准确地确定其状态(可工作、不可工作或性能下降)。作为装备质量的特性之一,装备测试性存在于整个装备的生命周期,对装备的可靠性、维修性、综合保障、战备完好性、寿命周期都有极大的影响[8]。因此在装备设计完成后,需要在装备结构模型上添加多信号流图以及相关测试,建立多信号流图模型。测试性分析人员对多信号流图模型分析可得到故障F与测试T之间的关系,这个关系通常用D矩阵表示。D矩阵又称故障-测试相关矩阵,其具体表达形式如下[9-10]:
式中,矩阵元素dij是一个布尔变量,如果故障Fi能被测试Tj检测,则令dij= 1,否则令dij= 0。矩阵中列向量表示测试Tn能检测隔离的故障,描述了其检测隔离故障的能力;行向量表示故障Fm能被测试检测,描述故障Fm出现的征兆。
为了判断装备设计完成后装备的测试性水平,需要对其测试性进行分析,提前发现测试性设计中的不足,避免后期装备出现故障时检测不到故障或者隔离不到故障部件等问题。测试性主要指标有故障检测率(FDR)、故障隔离率(FIR),不可测故障、冗余测试、模糊组。以上指标常用于装备单故障分析,但实际情况下故障有时是多故障一起发生,因此还需要引入伪故障和隐含故障两个测试性指标。测试性分析过程如图1所示,各指标具体概念[11]及分析方法如下。
图 1 测试性分析流程
1)不可测故障 装备中所有测试不能检测到的故障,其表达式为Fi=∅,即在D矩阵中行向量元素全为0所对应的故障,则定义为不可测故障。
2)故障检测率 在规定的时间内,使用规定的方法所检测到被测装备的故障数与被测装备故障总数的比值。获取故障检测率方法是将D矩阵的全0行删除,得到新矩阵A,其故障检测率为矩阵A的行数Nn与D矩阵的行数Nj之比,表达式为:
γFD=Nn/Nj
3)模糊组 两个及两个以上的故障具有相同的故障特征无法区分,表达式为Fm=Fn,判断模糊组方法为矩阵A所在元素相同的行向量所对应的故障。
4)故障隔离率 在规定的时间内,使用规定的方法,正确隔离到不大于规定的可更换单元数的故障数,与此同一时间内所检测到的故障数的比值。获取故障隔离率方法是在新矩阵A的基础上将模糊组合并成一个行向量并获取新矩阵B,如果不存在模糊组,则直接将矩阵A赋值给矩阵B。故障隔离率为矩阵B的行数Nm与D矩阵所有故障对应的行数Nj之比, 表达式为:
γFI=Nm/Nj
5)冗余测试 两个及以上的测试特征相同,表达式为Tm=Tn(m≠n),判断冗余测试方法为B矩阵中元素相同的列向量所对应的测试。
6)隐含故障 同一时间内故障Fm和故障Fk同时发生时的故障特征。与故障Fm单独出现的故障特征一样,表示为Fk∨Fm=Fm(m≠k),即Fk是Fm的隐含故障。
7)伪故障 若故障Fk存在隐含故障集,隐含故障集中的某些故障同时发生时的故障征兆与故障Fk的故障征兆相同,则这些故障集称为伪故障集,用X表示,伪故障为X中故障数目最少的集合,即
∨∀fm∈XFm=Fk(fk∉X)
为了快速完成基于D矩阵的测试性分析,减少测试性分析成本及编程时间,避免进行二次开发时需要在基础语言编程中考虑变量、定义函数等问题,利用LabVIEW与MATLAB混合编程开发了装备测试性分析系统。系统由人机交互界面以及MATLABB数据处理两部分组成。
本文通过调用LabVIEW的显示控件,在其前面板中搭建人机交互界面,以此显示所需要的故障检测率、故障隔离率等测试性指标,同时系统通过MATLAB Script节点直接调用MATLAB程序,完成测试性分析,将分析得到的测试性指标传输至人机交互界面进行显示。装备测试性分析系统搭建步骤如下。
步骤一,利用LabVIEW搭建用户与数据管理模块。系统通过设定用户账号来保证实验数据安全,同时每一次测试性分析所获得的各项指标存储至数据管理模块,为后期测试性增长积累历史数据。
步骤二,利用MATLABB进行测试性分析。首先利用MATLAB中find函数判断D矩阵中不可测故障(行向量元素全为0)个数,记录这些行向量所对应的故障为不可测故障,将其在D矩阵中删除,删除不可测故障的D矩阵记录为A矩阵,并通过计算A矩阵行数与D矩阵行数之比获得故障检测率参数值(FDR)。其次,联合运用unique函数与splitapply函数得到矩阵A中各组相同行向量,将每组中相同的行向量定义为模糊组,并分别将这些模糊组中行向量合并为一个行向量,获得矩阵B,通过计算矩阵B行数与D矩阵行数之比获得故障隔离率参数值(FIR)。接着将B矩阵进行转置,得到B’矩阵,此时行向量对应测试,同上一步一样可以获得各组相同行向量,将这些相同行向量分别定义为冗余测试,并进行合并和转置获得矩阵C。随后由隐含故障的定义可知,将矩阵C中故障Fk所对应的行向量分别与其他故障Fm对应的行向量进行与运算,如果结果Fk∨Fm=Fm(m≠k),则定义Fk是Fm的隐含故障。最后在每一个Fk获得的隐含故障集中,将各隐含故障所对应的行向量分别进行遍历或运算,隐含故障集中不同故障同时出现的征兆(行向量或运算)与Fk行向量相同,将这些集合定义为伪故障集,集合中故障数量最少的集合定义为最小伪故障。
步骤三,利用LabVIEW搭建人机交互界面。将D矩阵数据存储在文档中,在LabVIEW程序框图面板中建立读取文档数据模块,并通过MATLABB Script节点调用步骤二中编写的程序进行测试性分析,得到故障检测率、故障隔离率、不可测故障、模糊组、冗余测试、隐含故障、伪故障具体测试性指标值。在LabVIEW前面板中按照各测试性指标数据类型选用合适的数据显示控件,依据单故障、多故障测试性指标分别建立具有友好度高的显示界面。装备测试性分析系统人机交互界面见图2。
图 2 测试性分析系统人机交互界面
为了验证系统处理数据的准确性,在搭建测试性分析系统后,采用文献[5]中导弹系统级D矩阵数据进行验证。其数据如表1所示。
表1 导弹系统级D矩阵
运行系统后,系统读取保存在文档中的导弹系统级D矩阵后,调用MATLABB进行单故障与多故障测试性分析。单故障测试性分析的主要参数有故障检测率、故障隔离率、不可测故障、模糊组、冗余测试。多故障测试性分析的主要参数有隐含故障与伪故障。
通过分析可知总故障数有32个,测试有22个,其中不可测故障为故障21、23、29、31,无冗余测试,有三组模糊组,分别为故障(10,18),故障(11,30),故障(13,16),故障检测率为87.5%,故障隔离率为78.1%,单故障数据测试性分析结果如图2左端所示。
由于隐含故障与伪故障数据较多,本文只展示具有隐含故障和伪故障这一部分数据(图3、4所示)。由图3可知,故障22为故障14、故障15的隐含故障,故障9、13、22、27为故障17的隐含故障。由图4可知,故障17、20、24具有伪故障,其中故障17的伪故障集有故障(9,27),故障(9,13,27),故障(9,13,22,27),故障17的最小伪故障为故障(9,27)。故障20的伪故障集有故障(12,19),故障(12,13,19),故障20的最小伪故障为故障(12,19)。故障24的伪故障集有故障(9,14,15),故障(9,13,14,15),故障(9,13,14,15,22),故障24的最小伪故障为故障(9,14,15)。通过对比文献[4]与文献[5]发现本系统分析方法正确,结果准确无误。
图 3 部分隐含故障数据
图 4 部分伪故障数据
本系统采用LabVIEW与MATLABB混合编程搭建了装备测试性分析系统,运用G语言进行图形化编程,通过直接调用LabVIEW前面板中各类数据显示控件,可以按照使用者需求快速建立友好的人机交互界面,避免了需要运用基础语言进行前端界面设计与编程,减少编程难度。同时在MATLABB中直接调用了其自身所含的各类函数进行测试性分析,避免重新进行函数编程,减少代码数量,降低了对测试性分析人员的编程要求,节约编程时间,提高了测试性分析效率。