时间:2024-12-21
宁志强,陶元芳
(1.山西工程技术学院 机电系,山西 阳泉 045000; 2.太原科技大学 机械工程学院,山西 太原 030024)
近年来,国内外学者将人工智能的理论和方法用于故障诊断,发展智能化的诊断方法,故障诊断专家系统成为设备故障诊断的研究热点.三一重工起重机研究院结合故障树理论,开发了汽车起重机故障诊断专家系统,实现对电磁阀、传感器等零部件故障诊断.东南大学设备监控与故障诊断研究所研究了基于Web的工程机械故障诊断专家系统设计与实现[1].由于语音识别系统复杂性的原因,多数故障诊断专家系统采用文字交互,而没有通过语音人机交互.智能语音交互是基于语音输入的新一代交互模式,通过人机语音问答就可以得到反馈结果.本文借助讯飞语音输入法丰富的功能,结合人工智能专家系统技术,提出了适合语音交互的故障诊断模式,以构建语音、图片和文字多种辅助诊断结合的专家系统.并通过推土机语音交互故障诊断专家系统的实现,验证智能语音交互的可行性.
当机械维修人员的眼或手已经被占用的情况下,难以再通过鼠标和键盘查询计算机,最好的办法就是增加人与计算机的语音交互功能.随着计算机小型化,平板电脑价格越来越便宜,语音交互故障诊断专家系统可运行于Windows平板电脑上,方便维修人员在狭窄空间携带和使用.
机械故障诊断流程树,是指将某种机械常见的诊断流程以树形图逐层表示出来,当机械遇到故障时,以一定策略对树状图进行搜索的方法.在进行故障分析时,按故障诊断树,由树的根部以树枝状逐层搜索故障原因,通过逐层向下搜索出所有可能的故障原因,按此方式一直追溯到引起系统发生故障的全部原因(底事件)以及解决方案.图1为柴油机故障诊断流程图.如柴油机故障诊断时,常用的一种诊断模式为:从根节点“柴油机机油消耗过大”开始,依次经过“检查油底壳及润滑系统机件和管道有无漏油”逐层搜索,最终到达“气缸上油,检查活塞环和气缸间隙”.这种诊断方式为逐级诊断.
图1 柴油机机油消耗过大诊断流程图Fig.1 Diesel engine diagnostic flow chart forconsuming diesel oil excessively
另外一种在实践中常用到的诊断模式为跨级诊断,即在“柴油机机油消耗过大”条件下,维修人员观察到“加油口冒烟”,由这两个条件就可以判定到“气缸上油,检查活塞环和气缸间隙”,而不需要逐级诊断.
综上所述,故障诊断具有两种模式,若采用字母来代替故障现象以简化树状结构,如图2所示.
图2 故障诊断流程树一般形式Fig.2 Process tree of fault diagnosis
(1) 模式1:选定树状结构头节点逐层展开,判断故障原因.选定头结点A,自动载入辅助推理条件B,C和D,供用户选择.用户从B,C和D中选择一个辅助诊断条件,如C,A和C节点作为推理条件,推理结果为C.再次推理结果,自动搜索载入辅助推理条件,载入G和H,用户选择G,C和G共同组成推理条件,进行推理,得到推理结果为E.再次载入自动辅助诊断条件,载入K,选择K,推理条件E与K再次推理得到推理结果J.
当用户从B,C和D中选择一个辅助诊断条件时,用户需要对系统陈述的事实给予肯定或否定回答,系统首先语音提示B.如果B的陈述满足事实,则用户对其肯定回答“是”,此时系统不再陈述C和D,而是向用户询问是否满足其子节点I,即纵向搜索.如果用户对B进行否定,则系统向用户询问是否满足C事实和D事实,此时即平行搜索.
(2) 模式2:根据用户输入故障征兆,进行文本相似度比较,有目标地选定并展开节点.以文字形式输入故障征兆,调用最长公共字符串比较算法,计算与文字故障征兆最接近的故障诊断树节点,如搜索到最相似的节点为K,以A,K为推理条件进行推理,推理结果为J.如用户发现调压弹簧异常,则语音输入“调压弹簧异常”等文字,系统采用字符比较算法,检测到诊断流程树中某个节点“调压弹簧损坏”,此时跳过了其他节点的搜索,并以节点“调压弹簧损坏”作为下一步推理条件.
专家系统应同时具有语音交互和鼠标键盘操作软件功能.语音交互功能的基础建立在鼠标键盘操作功能上,语音人机交互实质是通过语音输入法(如讯飞语音输入法)识别人的声音转化为编辑框中的文字,文字中若存在特定关键词如“检索” “执行” “正确”等,程序检测到编辑框有文字变动时,通过VC中OnChangeEdit消息响应函数,执行鼠标键盘操作时相应的按钮函数.
当检索与故障征兆最相似节点时,采用关键词匹配,如VC中CSTring类find函数,只可以检测一个长字符串中的子字符串,如“变速箱有异响”,用find函数可以检测到“异响”或“变速箱”,但“变速箱异响”这个故障征兆却不是“变速箱有异响”的一个子字符串,因此不能用find函数检测.在口语中往往出现这种不是子字符串,但却极其相近的词句.因此,本文推土机故障诊断专家系统考虑采用Needleman/Wunsch算法来计算语音故障征兆和诊断流程树最相似的节点,以便进行故障跨级诊断.
由多个故障现象匹配,以决定最终故障原因,可借助专家系统技术实现.专家系统的优点主要为:① 擅长符号推理,因此适合故障诊断;② 实现知识与算法的完全分离,能够实现对知识库的管理,包括对已有知识内容的修改、删除及新知识的增加,使之可以实现知识库的知识获取、扩展功能,这种扩展不需要编译连接,没有编程基础也可实现扩展[2].专家系统结构如图3所示.
图3 专家系统结构图解Fig.3 Structure of expert system
专家系统的核心是推理机.推理机的任务是要控制规则不断与动态数据库的事实匹配,匹配成功则触发相应的规则,通过执行规则动作,修改动态数据库的事实,经过不断的推理,推导出结果[3].
在故障诊断型专家系统中,根据用户提供的故障征兆对故障诊断树逐层进行搜索.对故障诊断树的当前访问层主要进行广度优先搜索,搜索过程采用正反向混合推理的方法,对当前层的访问节点与用户提供的故障征兆进行比较匹配.若当前层的某些节点与故障征兆相一致,那么节点就是目标节点,接下来进行深度优先搜索策略,生成下一层子节点,重复此过程对这些子节点做正反向混合推理来搜索、比较和匹配.
推理机制算法的程序框图如图4所示,局部事实列表如下:
(current节点)表达下一层节点的生成方向;
(compare节点yes或no)表示当前层各节点和故障征兆的匹配情况,yes表示匹配,no表示不匹配;
(1ayer节点父节点)当前搜索层的某个节点以及这个节点的父节点;
(feedback节点)用于生成辅助推理条件[4].计算机根据用户提供的故障征兆作出推理,需进一步向用户反馈是否可能具有某些其他故障征兆,以供用户进行选择.即当搜索到某节点时,并且该节点的下一层有多个节点,即有多个推理方向(图2中E和F)可以供用户选择,这时提取下一层节点的父节点(如G和H),并把这些父节点(G和H)作为用户辅助推理条件,反馈到界面以便根据实际情况进行选择.
讯飞语音输入法是一款输入软件,能实现语音转换为文字的功能,大大提升输入速度.其主要优点为支持方言语音输入,如支持四川话、河南话、东北话、天津话、湖南(长沙)话、江苏(南京)话、山西(太原)话、上海话等方言识别,语音识别率超过95%,并支持Windows PC平台.讯飞语音输入法可一键开启连续语音识别输入,如图5所示.
文本比较模块可用于当用户输入故障征兆关键字时,在知识库中进行模糊比较,更容易使推理过程快捷.Needleman/Wunsch算法用于比较用户输入的采集到的故障征兆和存储在知识库中故障信息的最大相似值,LCS(A,B)表示字符串A和字符串B的最长公共子串的长度.
例如,当用户输入A=“发动机排出蓝色烟雾”,而保存在知识库中信息分别为:
B=“排蓝色烟雾”,LCS(A,B)=5;
C=“排白色烟雾”,LCS(A,C)=4;
图4 专家系统推理机流程图Fig.4 Structure of expert system inference engine
图5 讯飞语音输入法Fig.5 iFlytek Input
D=“排灰色烟雾”,LCS(A,D)=4.
可知,用户提供的信息A与B最接近:
A=a1,a2,…,aN,表示A是由a1,a2,…,aN这N个字符组成;
B=b1,b2,…,bM,表示B是由b1,b2,…,bM这M个字符组成.
定义LCS(i,j)=LCS(a1,a2,…,ai,b1,b2,…,bj),其中0≤i≤N,0≤j≤M.
若ai=bj,则LCS(i,j)=LCS(i-1,j-1)+1;若ai≠bj,则LCS(i,j)=max(LCS(i-1,j-1),LCS(i-1,j),LCS(i,j-1)).表1根据以上公式计算A,B两个字符串的相似程度,其中A=“GGATCGA”,B=“GAATTCAGTTA”.运算矩阵如表1所示,其右下角的数值代表共同字符串长度6.
表1 Needleman/Wunsch算法运算矩阵Tab.1 Matrix of Needleman/Wunsch algorithm
由于许多无法避免的因素,有时工程机械会出现各种各样的故障,导致降低或失去其预定的功能,从而造成事故.本文推土机故障诊断专家系统推理机借助CLIPS和VC++6.0结合来实现.CLIPS是由美国国家航天局约翰逊空间中心推出的专家系统开发工具,主要特点为该软件具有通用性:与已有的多种编程语言易于集成,同VC++等高级程序设计语言均有接口,为用户提供了方便;运行速度很快;能进行不确定性推理.但CLIPS基于DOS操作系统,故其界面不友好.与CLIPS相比,VC++的MFC界面更能满足工程需求.将VC++和CLIPS结合可以优势互补[5].Needleman/Wunsch算法采用VC编程较为方便.
语音交互专家系统需借助VC++编辑框显示讯飞语音输入法识别得到的文字,VC的OnChangeEdit消息响应函数可以根据文字变化启动不同的按钮命令,取代鼠标操作.本文推土机故障诊断专家系统算法框图如图6所示.
企业在以往故障诊断和维修实践中积累的图片,存储在知识库中.尤其是高效利用以往维修过程的照片,提供直观的维修经验.在软件图片区会根据每一步推理结果动态插入与之相关的指导性图片,如故障现象图片、检测方法指导图片、维修工具图片.各种图片名称分别与故障诊断树各个节点名称一致,当搜索到某个节点时更新相应名称图片.图7为推土机故障诊断专家系统软件界面,图片区位于右上角位置.
本文专家系统推理机采用CLIPS来编程实现.专家系统推理机流程图如图6所示.CLIPS可以实现规则和框架知识表达方式.CLIPS知识与算法完全分离,知识扩展不需要编译连接,因此没有编程基础也可实现扩展,维修工人也可修改知识库.
在CLIPS中,知识表示技术的一个常用方法是产生式规则.产生式规则描述知识是采用IF…THEN形式,IF(前件事实),THEN(后件).假如规则满足了特定前件事实,即此时规则的模式匹配条件满足,然后执行后件命令[6].
CLIPS适合框架式知识表示方式.因故障诊断树是具有层次树状结构,适合采用框架式表达方式来描述.框架的特点是具有层次性和继承性,框架可以表达相关对象的复杂关系.框架表示法的结构为:一个框架由几个槽组成,每个槽又分为几个侧面.如(node(name“检测油位高度”)(node1“油箱油位较低”)(node2“油箱油位正常”))是CLIPS框架式表示形式.“检测油位高度”是头结点,两个子结点分别为“油箱油位较低”和“油箱油位正常”.
CLIPS与VC++交互方式分为直接嵌入方式、加载动态链接库方式、包装类方式等[7].
3.3.1文本文件作为交互中介对树节点搜索的局限性
常用的CLIPS和VC++的交互方式,为由CLIPS输出到后缀名为txt的文本文件中再由VC++读取文本文件中的内容输出到MFC界面.同时由VC++的MFC界面向CLIPS中输入命令时,也要先保存到后缀名为txt的文本文件中.当对故障诊断树进行搜索时,文本文件作为交互中介有一定的局限性.由VC++的MFC界面向CLIPS中输入命令时,使用函数(load-facts
图6 推土机故障诊断专家系统程序框图Fig.6 Structure of bulldozer fault diagnosis expert system based on intelligent voice interaction
3.3.2改进的CLIPS与VC++事实交互方法
将CLIPS动态链接库嵌入到VC++中可以直接从CLIPS推理机事实列表中提取事实.本文采用从动态链接库中调用事实添加函数和事实槽值读取函数的交互方法.CLIPS.dll和CLIPS.lib中重要函数[7]如下:
(1) Void *GetNextFact(newFact):指向事实的指针的函数;
(2) int GetFactSlot(newFact,"x",&theValue):识别是否为所需事实的函数[8];
(3) DOToString(theValue):从结构体中读取字符型槽值.
MFC与CLIPS交互步骤如下:
(1) 初始化:InitializeEnvironment();
(2) 载入:Load();
(3) 添加事实:AssertString(temp);
(4) 推理:Run(-1l);
(5) 调用得到下一个事实地址:Void *Get NextFact(newFact);
(6) int GetFactSlot(newFact,"x",& the Value);根据指向事实的指针newFact,槽名x,取得槽值.
图7 语音交互故障诊断专家系统软件界面Fig.7 Software interface of bulldozer fault diagnosis expert system
语音人机交互时,专家系统向用户提供语音形式的信息指导.将推理中的文字信息转换为语音,可以采用微软的C++文字转声音接口来实现.主要步骤如下:
(1) 下载开发包.从微软的官网上下载开发包,下载地址如下:
http://www.microsoft.com/en-us/download/details.aspx?id=10121.下载3个关键的程序:SpeechSDK51.exe,msttss22L.exe,SpeechSDK51-LangPack.exe.
(2) 安装sdk.分别将下载的3个安装包解压安装就可以了(记住安装目录).
(3) 环境配置.将Microsoft Speech SDK中的头文件目录和库文件目录添加到开发环境中.
(4) 添加如下程序代码:
#include
::CoInitialize(NULL);//初始化语音环境
ISpVoice * pSpVoice = NULL;//初始化语音变量
pSpVoice->Speak(L"语音故障诊断专家系统",SPF_DEFAULT,NULL);//执行语音变量的Speek函数.
pSpVoice->Release();//释放语音变量
::CoUninitialize();//释放语音环境
打开讯飞语音输入法,切换到语音连续识别状态,将光标定位在语音识别框中,即将语音识别为文字并显示在文本识别框内,以推土机变矩器高温推土无力的故障原因咨询为例.软件界面如图7所示.
在逐级诊断模式下,用户语音说出只要包含“添加故障”的任何一句话都可以锁定故障分析树的头结点,此时系统语音提示“开始诊断推土机,变矩器高温推土无力”,用户语音回答包含“继续”或“正确”等肯定字符的语句将会沿着诊断流程树搜索,系统语音先询问“请检查冷却液温度,冷却液温度正常”,用户需要对系统陈述的事实给予肯定或否定回答,即如果温度不正常,用户否定计算机的陈述回答,即用户回答“错误”或“不对”,用户否定时,系统会继续提出不同的陈述事实,即语音描述“冷却液温度在高温状态”,用户回答“正确”等,当用户对某一事实肯定时,就会将其作为故障征兆添加到推理其作为下一步推理条件,不断地向故障诊断树深处进行搜索,直到无节点为止.
在跨级诊断模式下,用户语音说出只要包含“添加故障”的任何一句话都可以锁定故障分析树的头结点,若用户直接观察到调压弹簧异常,则没有必要进行逐级步骤搜索,用户语音说出包含“调压弹簧故障”和“查询”两个字符串的语句,就可以调用Needleman/Wunsch算法进行字符串比较,比较结果搜索到两个辅助推理条件“调压弹簧失效”和“调压弹簧没有失效”,系统首先提出事实“调压弹簧失效”,用户对这一陈述进行肯定或否定语音判断,肯定回答则会选择该节点作为下一步推理条件,否定回答会提出另一陈述事实即“调压弹簧没有失效”以供用户选择.
本文尝试将专家系统和语音输入法结合构建故障诊断专家系统,以达到对维修人员、相关专业学生的指导和帮助.智能语音交互故障诊断专家系统通过语音与计算机进行互动问答,解放了维修人员的双手,可提高维修效率,维修人员可通过语音修改更新知识库,方便快捷,便于维修经验的传承,企业不会因为员工离职而流失宝贵经验.
参考文献:
[1] 王丁磊.基于神经网络的塔式起重机电气设备故障诊断系统[J].起重运输机械,2010(3):83-86.
WANG D L.Fault diagnosis system of tower crane electrical equipment based on neural network[J].Hoisting and Conveying Machinery,2010(3):83-86.
[2] 蔡自兴.高级专家系统[M].北京:科学出版社,2005.
CAI Z X.Senior expert system[M].Beijing:Science Press,2005.
[3] 贾拉塔诺.专家系统原理和编程[M].北京:机械工业出版社,2010.
GIARRATANC G.Expert systems principles and programming[M].Beijing:China Machine Press,2010.
[4] 吴坚.基于CLIPS的数控机床故障诊断专家系统[D].南宁:广西大学,2008.
WU J.The CNC machine faults diagnosis expert system base on CLIPS[M].Nanning:Guangxi University,2008.
[5] 宁志强,陶元芳.基于CLIPS桥机起升机构设计型专家系统[J].中国工程机械学报,2013(5):425-431.
NING Z Q,TAO Y F.Design expert system for hoisting mechanism of CLIPS-based quay cranes[J].Chinese Journal of Construction Machinery,2013(5):425-431.
[6] 尹朝庆.人工智能方法与应用[M].武汉:华中科技大学出版社,2007.
YIN C Q.Methods and applications of AI[M].Wuhan:Huazhong University of Science and Technology Press,2007.
[7] National Aeronautics and Space Administration.CLIPS advanced programming guide[M/OL].[2008-03-22].http://www.ghgcorp.com/clips/CLIPS.html.
[8] National Aeronautics and Space Administration.CLIPS basic programming guide[M/OL].[2008-03-22].http://www.ghgcorp.com/clips/CLIPS.html.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!