DIAGstar一种用于测试的智能故障诊断专家工具软件

这里介绍一种具备智能诊断功能的自动测试诊断专家,详细地描述了其设计思想以及与传统诊断软件的比较,采用了先进的诊断思想,将并行工程工具集和神经网络诊断方法用于自动故障诊断,开发出的测试诊断专家软件(称为DIAGstarTM诊断之星),能够方便嵌入各种测试系统软件开发中,可显著提高TPS开发效率、缩短TPS开发时间、降低TPS开发难度等。

1、基于模型推理诊断的概述

在测试工程中一个最富有意义的革新是Giordano公司的自动并行工程工具集(CETS)。它包括一个实时工具和一个开发工具。实时工具,即“诊断专家”,它使自动诊断无缝与任何一个测试环境结合。开发工具,即“诊断框架构建者”,帮助工程师准备实时诊断知识库。

“诊断专家”的诊断方法不同于传统的诊断方法。它是先进行测量、数据采集和判断所测量是否在允许的范围内,然后“诊断专家”将根据接受到的所有信息动态地、快速地对其进行解释。它充分利用了像“最小覆盖集”算法这样的人工智能算法来解释由测试结果生成的“事件锥”。这些推理技术提供了快速、精确和灵活的诊断,并能分离出多种故障。

2、传统诊断方式的比较

为了比较传统故障诊断和基于模型的故障诊断的区别,必须从TPS编程开始分析。众所周知,测试程序是由一系列端到端的功能性测试(由输出引脚测量)写成的,它确保系统的操作正确可靠。诊断部分可用两种方法来处理。第一种是在端到端的功能性测试后,进入诊断程序。另一种是,测试一旦失败,就转入一个结构化的诊断程序去隔离故障到所需的级别。

随着系统复杂性的增加,对逻辑路径的理解有时超过了人脑的思维。测试程序变得带有扩展分支和跳转的很长的子程序。一个独立的单元测试的改变将会影响整个程序的代码。很多情况下,诊断程序在整个程序中被重复使用。这些程序的开发和维护极大地造成了测试软件的高价和很差的移植性。

3、“诊断专家”的原理

用“诊断专家”进行诊断,实现了无需诊断流程图且面向对象的诊断能力。这种技术的影响是很大的,节省了整个TPS费用的30%~40%。这种新的模式使许多功能成为可能:测试程序的维护、历史数据的存储和使用、在各种平台(包括便携式)上的移植和更新等。

“诊断仿真器”可以帮助诊断软件开发。在测试程序开发中,“诊断仿真器”能够完成测试点的选择、故障分离概率的评估和这些概率有效性的验证。测试和诊断是独立分开的,这些编程工具是用于测试程序的编写。在编程的过程中,测试工程师必须为被测的每个响应值定义Pass/Fail(P/F)标准,且对于每个测量参数将测试结果转化为P(Pass)或F(Fail)。该功能是用一简单的高级语言子程序来实现的,它接收测量测试结果,并能连接容许值作为输入和输出的“P/F”的特征。

“诊断专家”能够在诊断对象运行时实现故障隔离。为了让诊断与测试程序结合,采用了一个单“WHILE”循环:当有能进一步隔离故障的测试时,要求“诊断专家”执行下一个最优测试,运行该测试并将测试结果送入“诊断专家”。

另外,为了减少TPS开发时间和费用,基于模型的诊断推理方法对于设计的改变更新方便并可以进行故障仿真。

在整个测试过程中,“诊断专家”是主要的创新。为了支持嵌入式和离线的应用,“实时诊断专家”设计能用于多种主机平台。这种全新的故障诊断模式将诊断逻辑和测试结果结合起来进行故障隔离。

在基于Windows框架下,测试对象可以通过Windows动态连接库(DLL)和“诊断专家”进行通信,实现故障诊断的功能。作为一个通用的诊断子程序,它还可为任何一个基于Windows的软件服务,通过DLL实现和“诊断专家”的通信。不仅如此,可以推广到任一操作系统:DOS、Unix、X-Windows、VMS等,也包括任一测试软件开发环境:LabVIEW、CVI、HPVEE、和ATLAS等。

既然“诊断专家”可以作为一个独立的模块随时调用,那么编程者就能够用任何一种方法来实现诊断功能,只要该方法与测试程序结构和思想一致。

4、“诊断专家”的控制模式

下面介绍三个的例子,代表三种不同的应用“诊断专家”的方法。

一、GO/NOGO控制模式

在GO/NOGO控制模式中,应用软件首先执行所有的GO/NOGO功能测试。在程序结束后,任一测试失败,用户方便地调用“诊断专家”并传递给所有的测试结果,“诊断专家”输出一个模糊组或执行下一个最佳的测试,供用户选择。这种模式对短的GO/NOGO测试程序有利,其中每个测试都不需要大量的时间和很长的测试代码。

二、“诊断专家”控制模式

在“诊断专家”控制模式中,“诊断专家”决定运行什么测试。在此模式中,用户在进行测试之前首先初始化“诊断专家”,接着用户发布一个DLL函数,调用“诊断专家”来确定第一个被执行的测试。“诊断专家”输出故障判断结果。可能是一故障模糊组或某一故障元件,也可能是没有进一步的测试将故障范围缩小了。这时用户可以对模糊故障组进行下一个最佳测试。

三、混合控制模式

混合控制模式是上述两种测试模式的组合。客户将以GO/NO-GO控制模式开始,如果一个故障发生,将执行所有的GO/NO-GO测试,客户将启动“诊断专家”,并以“诊断专家”控制模式运行。这种模式既可以在GO/NO-GO测试中发现第一个故障就将停止,也可以立即运行所有的GO/NO-GO测试。混合控制模式无论是对长的还是短的测试序列都有利。短的测试在程序的顶端执行。如果它们第一次测试失败,“诊断专家”将减少作出故障输出所需的测试数目和测试时间。

5、“诊断专家”的软件结构

“诊断专家”的软件结构是一个服务器的软件结构。“诊断专家”为任一用户程序提供诊断服务,它充当一个服务器完成诊断功能。当适当地接入用户程序,“诊断专家”的函数可以看作用户程序中的子程序库。

在Windows中,“诊断专家”软件被编译为动态连接库(DLL)。它是真正的诊断服务器,能给用户程序提供诊断服务。客户程序可以是测试程序(如用LabWindows CVI、LabVIEW、ATEasy和HP-VEE等编写的)或是介于“诊断专家”和测试程序之间的一个独立的程序。

例如,在LabWindows CVI中,“诊断专家”的DLL函数作为虚拟仪器的一个系列被调用,并且能够很容易地运用前面所讨论的灵活的测试策略。

5.1神经网络故障诊断的实现5.1.1程序设计的特点

根据测试诊断和网络设置的要求,所编制的程序应具有如下一些特点:

户使用界面友好。程序的设置界面应具有简洁直观、便于操作等特点。程序运行能反映误差大小和曲线,并输出最后诊断结果。

数据管理清晰。如果网络的训练令人满意,达到误差要求,程序自动将其结构参数,即网络层数、各层神经元数和权值、阈值及相应的参数保存下来,以便在进行故障诊断时,重新生成网络完成诊断功能。另外,故障训练样本库和故障解释库均以DBF的文件形式保存的,比较清晰直观。利用ODBC和SQL语言实现数据库的连接和操作,速度快且方便。

程序运行速度快。编程中在遇到大量数据处理时,避免使用很大的数组,均采用指针型变量存储数据,这样提高了程序的运行速度。对于开辟的内存空间,在不使用时及时关闭,有效地防止了系统的内存泄漏,使程序运行越来越慢。

5.1.2程序设计的功能

程序可以设置神经网络的结构参数、要求的训练总误差和单个样本误差、最大循环次数、网络学习率和动态项系数等。软件还考虑到初始权值对整个网络训练收敛的影响,程序中对训练达到最大循环次数但未能满足误差时,采取了重新初始化初始权值,在给定的初始化次数下,尽量使训练达到满意的要求。

进行神经网络学习时,必须首先点击“连接数据库”按钮,选择学习样本库。当学习成功后,程序自动将相关的神经网络参数、输出结果和误差存入相应的文件中。

选择“启动故障诊断”菜单进行故障诊断时,必须首先选择神经网络结构参数文件和权值文件,以此来重构诊断网络,然后点击“开始问诊”按钮,弹出对话框,选择问诊项目名称,点击“问诊结果”按钮,在窗口栏中显示诊断结果,程序提示是否保存诊断结果。“问诊结束”按钮用以恢复各按钮和清除窗口。点击“误差曲线”按钮弹出绘制误差曲线的误差文件选择对话框,选择后出现误差曲线显示窗口。在误差显示窗口中,显示出总循环次数和最小误差,有针对曲线的“删除”和“重绘”按钮以及针对窗口的“关闭”按钮,另外,鼠标可以在曲线上任意滑动,曲线右上角实时显示此时的循环次数和总误差。

可以在数据库管理菜单下选择启动Foxpro或记事本数据库引擎子菜单,可以打开相应的数据文件,便于数据库的管理。该菜单下还有可以删除数据文件的子菜单。

5.1.3神经网络程序设计和数据结构

一、调用外部功能模块

在程序设计中,有时必须建立一组应用程序的功能模块,以便程序员在其他应用程序中调用这些功能模块。还有一种情况,就是开发大型复杂的应用程序,需要两人或两人以上合作开发。那么可以将应用程序分成多个功能模块,每个人开发其中一部分,然后将各部分链接到应用程序中。但是每次对其中的功能模块进行任何修改时,都必须将该功能模块和应用程序重新集成调用。如果在每次修改模块后只需提供编译后的文件,事情就会变得简单多了。在Windows操作系统中一般采用以下办法来完成功能模块的分割:目标文件(*.obj)、静态库文件(*lib)和动态链接库文件(*.dll)。

目标文件和静态库文件比较类似可以在应用程序中直接链接,文件中包含了变量、函数定义和函数实现。动态库文件则不同,它需要代码或者导入库实现导入动态库文件中的函数。

二、静态库

静态库文件其实就是编译过的代码段,具有很强的通用性,可以在各种开发环境和应用程序中使用。在应用程序中通过链接的方法将静态库和其他代码编译到一起。静态库是最早的提供共享模块的方法之一,到现在为止最常见的开发模块的方法。当需要调用静态库时,只需将静态库文件和相应的头文件加入到相应的工程中即可。

三、动态连接库

Windows出现不久,Microsoft公司就引入了动态链接库(DLL)。动态链接库和静态链接库都是封装好的供其他应用程序调用的功能模块。两者的区别在于应用程序与库链接的差别。

使用静态库时,编译和链接工具在链接过程中就将静态库的内容链接到应用程序中,静态库中的功能模块成为执行文件的一部分。而使用动态链接库时,应用程序只有当运行时才链接到DLL的功能模块上,动态链接库在生成执行文件后仍是单独的文件。

在程序设计中,一般更倾向于用动态链接库而不是静态库,主要原因有:

将多个应用程序共同使用的模块独立成所有应用程序都可以共享的动态链接库,可以减小应用程序可执行文件的大小,节省了存储空间。

如果动态链接库的导出接口不变,修改和升级动态链接库中的功能模块就不必更新可执行的应用程序。

动态链接库可以支持任何其他的Windows编程语言,避免了应用静态库时出现的编译器兼容问题,使得动态链接库的得到更广泛的应用。

四、神经网络程序设计

第二节中讨论的“诊断专家”的三种控制模式,将它们编译成一个静态库文件MODE.LIB。将其加入到故障诊断应用程序工程文件中,即可实现三种不同控制模式的故障诊断。

“诊断专家”的三种控制模式,这里用神经网络来实现上述“诊断专家”的功能。Diag.dll实现了神经网络学习算法和内部信息处理功能,发布成动态链接库文件,形成一个“诊断专家”模块,更加方便地为诊断应用程序调用,它是神经网络故障诊断的核心。

“诊断专家”函数库DRIVER.FP,提供了网络学习、启动诊断、开始问诊、问诊结果和问诊结束各功能函数。FUNCTION.FP是对“诊断专家”(即神经网络)进行学习以及诊断的函数库。

这样,就建立了神经网络的“诊断专家”,也就是实现诊断功能的函数库。在进行应用诊断程序设计时,用户只需要把上述的静态库、动态链接库和相应的函数库添加到具体的工程文件中,就可以调用相应的故障诊断函数,从而编写出满足要求的故障诊断软件。

6运行结果和结论

软件设计采用软件工程的思想,开发出相应的“诊断专家”软件工具组件,为开发基于测试系统故障诊断软件带来了方便。实验表明,该软件的运行效果达到了Matlab等软件的要求,而且由于本软件的开发是直接用C语言编写的,运行速度要快于Matlab等商用软件。

由于程序可以对一些算法进行必要的修改和补充,并很容易地实现了对网络的各种参数数据进行存储,以及可以方便地对输入输出数据的格式和内容的修改;程序可以根据训练的情况选择网络的训练周期数、网络参数和学习算法(如BP算法、BP+动态项算法和BP+GA+动态项算法等),而且可以对各算法的参数进行设置,这就给神经网络的训练带来了极大的方便和灵活性,而这些功能在Matlab中是没有的。

总之,自主可控的故障诊断专家软件工具包可以方便扩展各种故障诊断方法,并能嵌入到各种通用测试系统TPS开发中。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171210G0EPVV00?refer=cp_1026

相关快讯

扫码关注云+社区