寧志強,陶元芳
(1.山西工程技術(shù)學院 機電系,山西 陽泉 045000; 2.太原科技大學 機械工程學院,山西 太原 030024)
近年來,國內(nèi)外學者將人工智能的理論和方法用于故障診斷,發(fā)展智能化的診斷方法,故障診斷專家系統(tǒng)成為設(shè)備故障診斷的研究熱點.三一重工起重機研究院結(jié)合故障樹理論,開發(fā)了汽車起重機故障診斷專家系統(tǒng),實現(xiàn)對電磁閥、傳感器等零部件故障診斷.東南大學設(shè)備監(jiān)控與故障診斷研究所研究了基于Web的工程機械故障診斷專家系統(tǒng)設(shè)計與實現(xiàn)[1].由于語音識別系統(tǒng)復雜性的原因,多數(shù)故障診斷專家系統(tǒng)采用文字交互,而沒有通過語音人機交互.智能語音交互是基于語音輸入的新一代交互模式,通過人機語音問答就可以得到反饋結(jié)果.本文借助訊飛語音輸入法豐富的功能,結(jié)合人工智能專家系統(tǒng)技術(shù),提出了適合語音交互的故障診斷模式,以構(gòu)建語音、圖片和文字多種輔助診斷結(jié)合的專家系統(tǒng).并通過推土機語音交互故障診斷專家系統(tǒng)的實現(xiàn),驗證智能語音交互的可行性.
當機械維修人員的眼或手已經(jīng)被占用的情況下,難以再通過鼠標和鍵盤查詢計算機,最好的辦法就是增加人與計算機的語音交互功能.隨著計算機小型化,平板電腦價格越來越便宜,語音交互故障診斷專家系統(tǒng)可運行于Windows平板電腦上,方便維修人員在狹窄空間攜帶和使用.
機械故障診斷流程樹,是指將某種機械常見的診斷流程以樹形圖逐層表示出來,當機械遇到故障時,以一定策略對樹狀圖進行搜索的方法.在進行故障分析時,按故障診斷樹,由樹的根部以樹枝狀逐層搜索故障原因,通過逐層向下搜索出所有可能的故障原因,按此方式一直追溯到引起系統(tǒng)發(fā)生故障的全部原因(底事件)以及解決方案.圖1為柴油機故障診斷流程圖.如柴油機故障診斷時,常用的一種診斷模式為:從根節(jié)點“柴油機機油消耗過大”開始,依次經(jīng)過“檢查油底殼及潤滑系統(tǒng)機件和管道有無漏油”逐層搜索,最終到達“氣缸上油,檢查活塞環(huán)和氣缸間隙”.這種診斷方式為逐級診斷.
圖1 柴油機機油消耗過大診斷流程圖Fig.1 Diesel engine diagnostic flow chart forconsuming diesel oil excessively
另外一種在實踐中常用到的診斷模式為跨級診斷,即在“柴油機機油消耗過大”條件下,維修人員觀察到“加油口冒煙”,由這兩個條件就可以判定到“氣缸上油,檢查活塞環(huán)和氣缸間隙”,而不需要逐級診斷.
綜上所述,故障診斷具有兩種模式,若采用字母來代替故障現(xiàn)象以簡化樹狀結(jié)構(gòu),如圖2所示.
圖2 故障診斷流程樹一般形式Fig.2 Process tree of fault diagnosis
(1) 模式1:選定樹狀結(jié)構(gòu)頭節(jié)點逐層展開,判斷故障原因.選定頭結(jié)點A,自動載入輔助推理條件B,C和D,供用戶選擇.用戶從B,C和D中選擇一個輔助診斷條件,如C,A和C節(jié)點作為推理條件,推理結(jié)果為C.再次推理結(jié)果,自動搜索載入輔助推理條件,載入G和H,用戶選擇G,C和G共同組成推理條件,進行推理,得到推理結(jié)果為E.再次載入自動輔助診斷條件,載入K,選擇K,推理條件E與K再次推理得到推理結(jié)果J.
當用戶從B,C和D中選擇一個輔助診斷條件時,用戶需要對系統(tǒng)陳述的事實給予肯定或否定回答,系統(tǒng)首先語音提示B.如果B的陳述滿足事實,則用戶對其肯定回答“是”,此時系統(tǒng)不再陳述C和D,而是向用戶詢問是否滿足其子節(jié)點I,即縱向搜索.如果用戶對B進行否定,則系統(tǒng)向用戶詢問是否滿足C事實和D事實,此時即平行搜索.
(2) 模式2:根據(jù)用戶輸入故障征兆,進行文本相似度比較,有目標地選定并展開節(jié)點.以文字形式輸入故障征兆,調(diào)用最長公共字符串比較算法,計算與文字故障征兆最接近的故障診斷樹節(jié)點,如搜索到最相似的節(jié)點為K,以A,K為推理條件進行推理,推理結(jié)果為J.如用戶發(fā)現(xiàn)調(diào)壓彈簧異常,則語音輸入“調(diào)壓彈簧異?!钡任淖?系統(tǒng)采用字符比較算法,檢測到診斷流程樹中某個節(jié)點“調(diào)壓彈簧損壞”,此時跳過了其他節(jié)點的搜索,并以節(jié)點“調(diào)壓彈簧損壞”作為下一步推理條件.
專家系統(tǒng)應同時具有語音交互和鼠標鍵盤操作軟件功能.語音交互功能的基礎(chǔ)建立在鼠標鍵盤操作功能上,語音人機交互實質(zhì)是通過語音輸入法(如訊飛語音輸入法)識別人的聲音轉(zhuǎn)化為編輯框中的文字,文字中若存在特定關(guān)鍵詞如“檢索” “執(zhí)行” “正確”等,程序檢測到編輯框有文字變動時,通過VC中OnChangeEdit消息響應函數(shù),執(zhí)行鼠標鍵盤操作時相應的按鈕函數(shù).
當檢索與故障征兆最相似節(jié)點時,采用關(guān)鍵詞匹配,如VC中CSTring類find函數(shù),只可以檢測一個長字符串中的子字符串,如“變速箱有異響”,用find函數(shù)可以檢測到“異響”或“變速箱”,但“變速箱異響”這個故障征兆卻不是“變速箱有異響”的一個子字符串,因此不能用find函數(shù)檢測.在口語中往往出現(xiàn)這種不是子字符串,但卻極其相近的詞句.因此,本文推土機故障診斷專家系統(tǒng)考慮采用Needleman/Wunsch算法來計算語音故障征兆和診斷流程樹最相似的節(jié)點,以便進行故障跨級診斷.
由多個故障現(xiàn)象匹配,以決定最終故障原因,可借助專家系統(tǒng)技術(shù)實現(xiàn).專家系統(tǒng)的優(yōu)點主要為:① 擅長符號推理,因此適合故障診斷;② 實現(xiàn)知識與算法的完全分離,能夠?qū)崿F(xiàn)對知識庫的管理,包括對已有知識內(nèi)容的修改、刪除及新知識的增加,使之可以實現(xiàn)知識庫的知識獲取、擴展功能,這種擴展不需要編譯連接,沒有編程基礎(chǔ)也可實現(xiàn)擴展[2].專家系統(tǒng)結(jié)構(gòu)如圖3所示.
圖3 專家系統(tǒng)結(jié)構(gòu)圖解Fig.3 Structure of expert system
專家系統(tǒng)的核心是推理機.推理機的任務是要控制規(guī)則不斷與動態(tài)數(shù)據(jù)庫的事實匹配,匹配成功則觸發(fā)相應的規(guī)則,通過執(zhí)行規(guī)則動作,修改動態(tài)數(shù)據(jù)庫的事實,經(jīng)過不斷的推理,推導出結(jié)果[3].
在故障診斷型專家系統(tǒng)中,根據(jù)用戶提供的故障征兆對故障診斷樹逐層進行搜索.對故障診斷樹的當前訪問層主要進行廣度優(yōu)先搜索,搜索過程采用正反向混合推理的方法,對當前層的訪問節(jié)點與用戶提供的故障征兆進行比較匹配.若當前層的某些節(jié)點與故障征兆相一致,那么節(jié)點就是目標節(jié)點,接下來進行深度優(yōu)先搜索策略,生成下一層子節(jié)點,重復此過程對這些子節(jié)點做正反向混合推理來搜索、比較和匹配.
推理機制算法的程序框圖如圖4所示,局部事實列表如下:
(current節(jié)點)表達下一層節(jié)點的生成方向;
(compare節(jié)點yes或no)表示當前層各節(jié)點和故障征兆的匹配情況,yes表示匹配,no表示不匹配;
(1ayer節(jié)點父節(jié)點)當前搜索層的某個節(jié)點以及這個節(jié)點的父節(jié)點;
(feedback節(jié)點)用于生成輔助推理條件[4].計算機根據(jù)用戶提供的故障征兆作出推理,需進一步向用戶反饋是否可能具有某些其他故障征兆,以供用戶進行選擇.即當搜索到某節(jié)點時,并且該節(jié)點的下一層有多個節(jié)點,即有多個推理方向(圖2中E和F)可以供用戶選擇,這時提取下一層節(jié)點的父節(jié)點(如G和H),并把這些父節(jié)點(G和H)作為用戶輔助推理條件,反饋到界面以便根據(jù)實際情況進行選擇.
訊飛語音輸入法是一款輸入軟件,能實現(xiàn)語音轉(zhuǎn)換為文字的功能,大大提升輸入速度.其主要優(yōu)點為支持方言語音輸入,如支持四川話、河南話、東北話、天津話、湖南(長沙)話、江蘇(南京)話、山西(太原)話、上海話等方言識別,語音識別率超過95%,并支持Windows PC平臺.訊飛語音輸入法可一鍵開啟連續(xù)語音識別輸入,如圖5所示.
文本比較模塊可用于當用戶輸入故障征兆關(guān)鍵字時,在知識庫中進行模糊比較,更容易使推理過程快捷.Needleman/Wunsch算法用于比較用戶輸入的采集到的故障征兆和存儲在知識庫中故障信息的最大相似值,LCS(A,B)表示字符串A和字符串B的最長公共子串的長度.
例如,當用戶輸入A=“發(fā)動機排出藍色煙霧”,而保存在知識庫中信息分別為:
B=“排藍色煙霧”,LCS(A,B)=5;
C=“排白色煙霧”,LCS(A,C)=4;
圖4 專家系統(tǒng)推理機流程圖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根據(jù)以上公式計算A,B兩個字符串的相似程度,其中A=“GGATCGA”,B=“GAATTCAGTTA”.運算矩陣如表1所示,其右下角的數(shù)值代表共同字符串長度6.
表1 Needleman/Wunsch算法運算矩陣Tab.1 Matrix of Needleman/Wunsch algorithm
由于許多無法避免的因素,有時工程機械會出現(xiàn)各種各樣的故障,導致降低或失去其預定的功能,從而造成事故.本文推土機故障診斷專家系統(tǒng)推理機借助CLIPS和VC++6.0結(jié)合來實現(xiàn).CLIPS是由美國國家航天局約翰遜空間中心推出的專家系統(tǒng)開發(fā)工具,主要特點為該軟件具有通用性:與已有的多種編程語言易于集成,同VC++等高級程序設(shè)計語言均有接口,為用戶提供了方便;運行速度很快;能進行不確定性推理.但CLIPS基于DOS操作系統(tǒng),故其界面不友好.與CLIPS相比,VC++的MFC界面更能滿足工程需求.將VC++和CLIPS結(jié)合可以優(yōu)勢互補[5].Needleman/Wunsch算法采用VC編程較為方便.
語音交互專家系統(tǒng)需借助VC++編輯框顯示訊飛語音輸入法識別得到的文字,VC的OnChangeEdit消息響應函數(shù)可以根據(jù)文字變化啟動不同的按鈕命令,取代鼠標操作.本文推土機故障診斷專家系統(tǒng)算法框圖如圖6所示.
企業(yè)在以往故障診斷和維修實踐中積累的圖片,存儲在知識庫中.尤其是高效利用以往維修過程的照片,提供直觀的維修經(jīng)驗.在軟件圖片區(qū)會根據(jù)每一步推理結(jié)果動態(tài)插入與之相關(guān)的指導性圖片,如故障現(xiàn)象圖片、檢測方法指導圖片、維修工具圖片.各種圖片名稱分別與故障診斷樹各個節(jié)點名稱一致,當搜索到某個節(jié)點時更新相應名稱圖片.圖7為推土機故障診斷專家系統(tǒng)軟件界面,圖片區(qū)位于右上角位置.
本文專家系統(tǒng)推理機采用CLIPS來編程實現(xiàn).專家系統(tǒng)推理機流程圖如圖6所示.CLIPS可以實現(xiàn)規(guī)則和框架知識表達方式.CLIPS知識與算法完全分離,知識擴展不需要編譯連接,因此沒有編程基礎(chǔ)也可實現(xiàn)擴展,維修工人也可修改知識庫.
在CLIPS中,知識表示技術(shù)的一個常用方法是產(chǎn)生式規(guī)則.產(chǎn)生式規(guī)則描述知識是采用IF…THEN形式,IF(前件事實),THEN(后件).假如規(guī)則滿足了特定前件事實,即此時規(guī)則的模式匹配條件滿足,然后執(zhí)行后件命令[6].
CLIPS適合框架式知識表示方式.因故障診斷樹是具有層次樹狀結(jié)構(gòu),適合采用框架式表達方式來描述.框架的特點是具有層次性和繼承性,框架可以表達相關(guān)對象的復雜關(guān)系.框架表示法的結(jié)構(gòu)為:一個框架由幾個槽組成,每個槽又分為幾個側(cè)面.如(node(name“檢測油位高度”)(node1“油箱油位較低”)(node2“油箱油位正?!?)是CLIPS框架式表示形式.“檢測油位高度”是頭結(jié)點,兩個子結(jié)點分別為“油箱油位較低”和“油箱油位正常”.
CLIPS與VC++交互方式分為直接嵌入方式、加載動態(tài)鏈接庫方式、包裝類方式等[7].
3.3.1文本文件作為交互中介對樹節(jié)點搜索的局限性
常用的CLIPS和VC++的交互方式,為由CLIPS輸出到后綴名為txt的文本文件中再由VC++讀取文本文件中的內(nèi)容輸出到MFC界面.同時由VC++的MFC界面向CLIPS中輸入命令時,也要先保存到后綴名為txt的文本文件中.當對故障診斷樹進行搜索時,文本文件作為交互中介有一定的局限性.由VC++的MFC界面向CLIPS中輸入命令時,使用函數(shù)(load-facts
圖6 推土機故障診斷專家系統(tǒng)程序框圖Fig.6 Structure of bulldozer fault diagnosis expert system based on intelligent voice interaction
3.3.2改進的CLIPS與VC++事實交互方法
將CLIPS動態(tài)鏈接庫嵌入到VC++中可以直接從CLIPS推理機事實列表中提取事實.本文采用從動態(tài)鏈接庫中調(diào)用事實添加函數(shù)和事實槽值讀取函數(shù)的交互方法.CLIPS.dll和CLIPS.lib中重要函數(shù)[7]如下:
(1) Void *GetNextFact(newFact):指向事實的指針的函數(shù);
(2) int GetFactSlot(newFact,"x",&theValue):識別是否為所需事實的函數(shù)[8];
(3) DOToString(theValue):從結(jié)構(gòu)體中讀取字符型槽值.
MFC與CLIPS交互步驟如下:
(1) 初始化:InitializeEnvironment();
(2) 載入:Load();
(3) 添加事實:AssertString(temp);
(4) 推理:Run(-1l);
(5) 調(diào)用得到下一個事實地址:Void *Get NextFact(newFact);
(6) int GetFactSlot(newFact,"x",& the Value);根據(jù)指向事實的指針newFact,槽名x,取得槽值.
圖7 語音交互故障診斷專家系統(tǒng)軟件界面Fig.7 Software interface of bulldozer fault diagnosis expert system
語音人機交互時,專家系統(tǒng)向用戶提供語音形式的信息指導.將推理中的文字信息轉(zhuǎn)換為語音,可以采用微軟的C++文字轉(zhuǎn)聲音接口來實現(xiàn).主要步驟如下:
(1) 下載開發(fā)包.從微軟的官網(wǎng)上下載開發(fā)包,下載地址如下:
http://www.microsoft.com/en-us/download/details.aspx?id=10121.下載3個關(guān)鍵的程序:SpeechSDK51.exe,msttss22L.exe,SpeechSDK51-LangPack.exe.
(2) 安裝sdk.分別將下載的3個安裝包解壓安裝就可以了(記住安裝目錄).
(3) 環(huán)境配置.將Microsoft Speech SDK中的頭文件目錄和庫文件目錄添加到開發(fā)環(huán)境中.
(4) 添加如下程序代碼:
#include
::CoInitialize(NULL);//初始化語音環(huán)境
ISpVoice * pSpVoice = NULL;//初始化語音變量
pSpVoice->Speak(L"語音故障診斷專家系統(tǒng)",SPF_DEFAULT,NULL);//執(zhí)行語音變量的Speek函數(shù).
pSpVoice->Release();//釋放語音變量
::CoUninitialize();//釋放語音環(huán)境
打開訊飛語音輸入法,切換到語音連續(xù)識別狀態(tài),將光標定位在語音識別框中,即將語音識別為文字并顯示在文本識別框內(nèi),以推土機變矩器高溫推土無力的故障原因咨詢?yōu)槔?軟件界面如圖7所示.
在逐級診斷模式下,用戶語音說出只要包含“添加故障”的任何一句話都可以鎖定故障分析樹的頭結(jié)點,此時系統(tǒng)語音提示“開始診斷推土機,變矩器高溫推土無力”,用戶語音回答包含“繼續(xù)”或“正確”等肯定字符的語句將會沿著診斷流程樹搜索,系統(tǒng)語音先詢問“請檢查冷卻液溫度,冷卻液溫度正常”,用戶需要對系統(tǒng)陳述的事實給予肯定或否定回答,即如果溫度不正常,用戶否定計算機的陳述回答,即用戶回答“錯誤”或“不對”,用戶否定時,系統(tǒng)會繼續(xù)提出不同的陳述事實,即語音描述“冷卻液溫度在高溫狀態(tài)”,用戶回答“正確”等,當用戶對某一事實肯定時,就會將其作為故障征兆添加到推理其作為下一步推理條件,不斷地向故障診斷樹深處進行搜索,直到無節(jié)點為止.
在跨級診斷模式下,用戶語音說出只要包含“添加故障”的任何一句話都可以鎖定故障分析樹的頭結(jié)點,若用戶直接觀察到調(diào)壓彈簧異常,則沒有必要進行逐級步驟搜索,用戶語音說出包含“調(diào)壓彈簧故障”和“查詢”兩個字符串的語句,就可以調(diào)用Needleman/Wunsch算法進行字符串比較,比較結(jié)果搜索到兩個輔助推理條件“調(diào)壓彈簧失效”和“調(diào)壓彈簧沒有失效”,系統(tǒng)首先提出事實“調(diào)壓彈簧失效”,用戶對這一陳述進行肯定或否定語音判斷,肯定回答則會選擇該節(jié)點作為下一步推理條件,否定回答會提出另一陳述事實即“調(diào)壓彈簧沒有失效”以供用戶選擇.
本文嘗試將專家系統(tǒng)和語音輸入法結(jié)合構(gòu)建故障診斷專家系統(tǒng),以達到對維修人員、相關(guān)專業(yè)學生的指導和幫助.智能語音交互故障診斷專家系統(tǒng)通過語音與計算機進行互動問答,解放了維修人員的雙手,可提高維修效率,維修人員可通過語音修改更新知識庫,方便快捷,便于維修經(jīng)驗的傳承,企業(yè)不會因為員工離職而流失寶貴經(jīng)驗.
參考文獻:
[1] 王丁磊.基于神經(jīng)網(wǎng)絡(luò)的塔式起重機電氣設(shè)備故障診斷系統(tǒng)[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] 蔡自興.高級專家系統(tǒng)[M].北京:科學出版社,2005.
CAI Z X.Senior expert system[M].Beijing:Science Press,2005.
[3] 賈拉塔諾.專家系統(tǒng)原理和編程[M].北京:機械工業(yè)出版社,2010.
GIARRATANC G.Expert systems principles and programming[M].Beijing:China Machine Press,2010.
[4] 吳堅.基于CLIPS的數(shù)控機床故障診斷專家系統(tǒng)[D].南寧:廣西大學,2008.
WU J.The CNC machine faults diagnosis expert system base on CLIPS[M].Nanning:Guangxi University,2008.
[5] 寧志強,陶元芳.基于CLIPS橋機起升機構(gòu)設(shè)計型專家系統(tǒng)[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.