《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > Win CE平臺下嵌入式故障診斷專家的設(shè)計
Win CE平臺下嵌入式故障診斷專家的設(shè)計
來源:電子技術(shù)應(yīng)用2011年第8期
姜 濤,,周西峰,,郭前崗
(南京郵電大學(xué) 自動化學(xué)院,,江蘇 南京210003)
摘要: 針對高科技產(chǎn)品專業(yè)性強,、系統(tǒng)結(jié)構(gòu)復(fù)雜,、故障分析困難等問題,,本設(shè)計以故障診斷的理論和方法為基礎(chǔ),提出了一種基于專家系統(tǒng)的故障診斷設(shè)計方案,。設(shè)計構(gòu)造了故障診斷專家系統(tǒng)的整體框架,探討了專家系統(tǒng)中知識庫的建立,、推理機制以及人機界面設(shè)計等問題,。
中圖分類號: TP391.5
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2011)08-0036-03
An embedded fault diagnosis expert system based on WinCE platform
Jiang Tao,,Zhou Xifeng,Guo Qian′gang
Automation College, Nanjing University of Posts and Telecommunications,,Nanjing 210003,,China
Abstract: For the reasons that high-tech products are highly professional,system structures are of great complexity and the failure analysis is difficult, according to relevant theories and methods of fault diagnosis the design puts forward a proposal based on expert system. Paper forms a framework of the fault diagnosis system, and discusses the establishment of fault library, reasoning mechanism and interaction interface.
Key words : expert system,;embedded WinCE,;SQLite;serial communications


    當(dāng)各種設(shè)備應(yīng)用與管理系統(tǒng)發(fā)生故障時,,準(zhǔn)確而快速地進(jìn)行故障診斷定位,,對于系統(tǒng)的恢復(fù),具有十分重要意義,。然而,,由于系統(tǒng)結(jié)構(gòu)復(fù)雜,導(dǎo)致設(shè)備故障的原因很多,,在現(xiàn)場分析,、判斷和處理故障時,往往依賴于維修人員對設(shè)備機理的把握程度和經(jīng)驗,,導(dǎo)致故障定位不準(zhǔn),,維修時間較長,。故采用故障樹分析法建立檢測引導(dǎo)系統(tǒng),以此來引導(dǎo)維修人員以專家的思維模式對設(shè)備進(jìn)行檢測修理,,提高經(jīng)濟性和可靠性,。這種檢測引導(dǎo)系統(tǒng)即為專家系統(tǒng)。本文以串口通信故障檢測為例,,設(shè)計了一種嵌入式專家系統(tǒng),,結(jié)合嵌入式WinCE以及SQLite,達(dá)到引導(dǎo)檢測的目的,。
1 系統(tǒng)架構(gòu)
1.1 專家系統(tǒng)簡介

    專家系統(tǒng)(ES)是人工智能領(lǐng)域最活躍和最廣泛的領(lǐng)域之一[1],。自從1965 年第一個專家系統(tǒng)Dendral 在美國斯坦福大學(xué)問世以來,經(jīng)過40年的開發(fā),,各種專家系統(tǒng)已遍布各個專業(yè)領(lǐng)域,。目前,專家系統(tǒng)得到了更廣泛的應(yīng)用,,并在應(yīng)用開發(fā)中得到進(jìn)一步發(fā)展,。所謂專家系統(tǒng)就是使用人類專家推理的計算機模型來處理現(xiàn)實世界中需要專家作出解釋的復(fù)雜問題,在沒有專家參與的情況下得出與專家相同的結(jié)論,。簡言之,,專家系統(tǒng)可視作“知識庫”和“推理機”的結(jié)合,知識庫是專家的知識在計算機中的映射,,推理機是利用知識進(jìn)行推理的能力在計算機中的映射,,構(gòu)造專家系統(tǒng)的難點也在于這兩個方面。
1.2 系統(tǒng)組成
    本文設(shè)計的智能專家系統(tǒng)包括用戶界面,、數(shù)據(jù)庫以及模塊化的程序,。應(yīng)用嵌入式數(shù)據(jù)庫SQLite來實現(xiàn)知識的存儲以及人機交互實現(xiàn)推理解釋。故障樹節(jié)點的所有信息均存儲在SQLite中,,并在數(shù)據(jù)庫中實現(xiàn)故障節(jié)點的邏輯關(guān)系以此取代推理機,,達(dá)到引導(dǎo)檢測的目的[2]。
1.3 系統(tǒng)工作機制
    專家系統(tǒng)的組織控制機構(gòu)(即推理機)根據(jù)當(dāng)前輸入數(shù)據(jù)來運行知識庫中的相應(yīng)知識,,按一定策略進(jìn)行推理,,以達(dá)到要求的目標(biāo)。本文專家系統(tǒng)中,,推理機根據(jù)用戶參與選擇后的故障信息,,在知識庫內(nèi)尋找能與之匹配的故障樹結(jié)點事件,每步推理都以用戶反饋信息為依據(jù),,沿故障樹脈絡(luò)進(jìn)行正向推理,,逐步縮小故障范圍,直至完成故障源定位。專家系統(tǒng)工作流程如圖1所示,。

2 專家?guī)煸O(shè)計
    故障樹分析FTA(Fault Tree Analysis)是一種演繹推理方法,, 將系統(tǒng)可能發(fā)生的故障和故障原因由總體到部分按樹狀逐漸細(xì)化的圖形演繹方法, 通過對故障樹的定性和定量分析,, 判明故障原因并可得出引發(fā)故障的相關(guān)因素的相關(guān)重要度[3],。故障樹是用于系統(tǒng)可靠性分析和故障診斷的一種圖形化故障模型,而基于規(guī)則的診斷專家系統(tǒng)的目標(biāo)是當(dāng)系統(tǒng)發(fā)生故障時綜合利用各種診斷信息,,根據(jù)知識庫中的規(guī)則,,通過推理確定系統(tǒng)的故障模式,推斷出故障部位和故障原因,,最后提出排除故障的方法和維修建議,。故障樹建立時,將最不希望發(fā)生的故障作為頂事件,; 位于故障樹底部,, 導(dǎo)致其他事件的、不可再分的原因事件為底事件,,其他事件都是中間事件,。各事件間相互關(guān)系通過“與”門、“或”門,、“非”門等邏輯門表示,。
2.1 SQLite移植
    從SQLite官方網(wǎng)站下載最新版本的SQLite,解壓獲得sqlite3.c,、sqlite3.h,、sqlite3ext.h三個源文件,還要下載一個基于Windows平臺的edll壓縮文檔,,解壓獲取sqlite3.def,最后下載一個支持命令行的版本文件,,解壓獲得sqlite3.exe,。然后生成工程:用VS2005新建DLL工程,選擇智能設(shè)備在定制WinCE生成的SDK(如mini2440-CE6-SDK),,把解壓出來的源文件加入工程中,。最后設(shè)置工程屬性后編譯:編譯后便可生成適合設(shè)備平臺的數(shù)據(jù)庫使用文件sqlite3.lib、sqlite3.dll,。以后只要把sqlite3.dll放到與工程相同的目錄下,,在工程鏈接的額外依賴中加入sqlite3.lib,然后在需要使用數(shù)據(jù)庫的源文件中加入include“sqlite3.h”,,SQLite數(shù)據(jù)庫就可以使用了,。
2.2 故障樹的構(gòu)建
    基于故障樹的推理是指利用故障現(xiàn)象信息和故障樹節(jié)點間的邏輯關(guān)系進(jìn)行推理,利用異常節(jié)點作為推理的起始點,,利用輔助信息進(jìn)行假設(shè)排除,,最終確定故障原因,。在進(jìn)行故障診斷之前,系統(tǒng)要構(gòu)造故障樹,,故障樹的作用主要用于診斷過程的剪枝,,即縮小狀態(tài)空間的搜索范圍,以提高系統(tǒng)工作效率,。將數(shù)據(jù)庫中的所有規(guī)則組織成若干棵樹,,每棵樹的葉子節(jié)點對應(yīng)一個故障現(xiàn)象或輔助信息,非葉子節(jié)點對應(yīng)一個故障結(jié)論,,父節(jié)點與子節(jié)點的關(guān)系構(gòu)成規(guī)則,,在數(shù)據(jù)庫中記錄故障樹的根節(jié)點、節(jié)點層次,、節(jié)點關(guān)系,、葉子節(jié)點等信息。設(shè)置系統(tǒng)變量,,用于判斷系統(tǒng)是否進(jìn)行過規(guī)則更新操作,,在啟動系統(tǒng)、退出規(guī)則維護(hù)界面和調(diào)用故障診斷功能時都進(jìn)行判斷,,及時提示用戶進(jìn)行故障樹的更新處理[4],。
    串口無法通信或者通信過程中出現(xiàn)異常,就要對整體或者串口通信過程中的某個細(xì)節(jié)進(jìn)行故障診斷。串口通信的實現(xiàn)需要如下幾個模塊:數(shù)據(jù)發(fā)送模塊,、數(shù)據(jù)接收模塊,、物理鏈路、中央處理單元,、串口擴展板以及電源,。故障主要有數(shù)據(jù)發(fā)送模塊故障、接收模塊故障以及串口擴展板故障三部分,。在工作中,,無論哪部分模塊發(fā)生故障都將影響到整個通信過程。根據(jù)故障關(guān)系以及檢測經(jīng)驗設(shè)計圖2所示的串口通信故障樹,。

 

 

2.3 故障二叉樹的建立
    關(guān)系數(shù)據(jù)庫管理系統(tǒng)的優(yōu)勢在于存儲以二維數(shù)據(jù)表為模型的數(shù)據(jù)結(jié)構(gòu),。本文將故障樹壓縮存儲來降低檢索算法的時空復(fù)雜度。
    一般的樹形dp都有這樣的模型:f[x,,y]=min{f[x1][y1],,f[x2][y2],……f[xm][ym]}給每個兒子分配多少就需要枚舉了,,這種做法比較慢,。但是如果轉(zhuǎn)化為為二叉樹之后,dp模型一般都是這樣:f[x,y]=min{f[left[x],,y1],,f[right[x],y]},,則變?yōu)榻o一個兒子進(jìn)行分配就可以了,,而且轉(zhuǎn)化之后還有一個很有用的性質(zhì),即原樹和二叉樹的前序遍歷相同,,可以利用這個性質(zhì)進(jìn)行一些優(yōu)化,。而且在某些情況下,通過前序可以把樹形dp轉(zhuǎn)化為在線性表(如數(shù)組中的dp),,這樣許多轉(zhuǎn)移方程就可以繼續(xù)優(yōu)化,,所以在樹的算法中把樹轉(zhuǎn)化為某種線性序可以大大優(yōu)化模型,使其算法變得更簡單高效,。本著這種原則,,本專家系統(tǒng)設(shè)計的SQLite表如表1所示。建立表之前,,根據(jù)樹轉(zhuǎn)二叉樹的算法對每個故障現(xiàn)象進(jìn)行編號,,表1中,NODE代表節(jié)點號,;TEXT表示節(jié)點的故障現(xiàn)象,;YESTO、NOTO表示判斷后將要跳轉(zhuǎn)的節(jié)點,;NRANK表示節(jié)點等級,,根節(jié)點等級為0,過度節(jié)點等級為1,,當(dāng)節(jié)點等級為2(即葉子節(jié)點)時,,表示測試結(jié)束并給出是否保存結(jié)果的提示。

    WinCE下讀取數(shù)據(jù)庫信息對系統(tǒng)進(jìn)行專家診斷的核心代碼如下:
if(atoi(sqlite->GetTableData(1,5))!=2)    //保證在非葉子節(jié)
//點之間進(jìn)行跳轉(zhuǎn)
{
node = atoi(sqlite->GetTableData(node,3));//選擇YESTO
//跳轉(zhuǎn)到的節(jié)點
node = atoi(sqlite->GetTableData(node,4));//選擇NOTO
//跳轉(zhuǎn)到的節(jié)點
wsprintf(buff1, L"SELECT * from '%s' where NODE = %d ;",
table_name,node);//查詢數(shù)據(jù)庫
m_cap = sqlite->GetTableData(node,2);//讀取node節(jié)點的
//故障現(xiàn)象
GetDlgItem(IDC_TITLE)->SetWindowText(m_cap);
//把故障現(xiàn)象顯示出來
}
    檢測過程中,,通過人機交互遍歷故障二叉樹如圖3所示,。圖中二叉樹的每一個葉子節(jié)點都是一次檢測的結(jié)果,也就是故障的最終原因,,它們的等級即NRANK都是2。通過等級的判斷來確定是否是最終結(jié)果并提示保存,。
3 系統(tǒng)的實現(xiàn)
    本文以嵌入式操作系統(tǒng)Windows CE 和S3C2440A為開發(fā)環(huán)境,,應(yīng)用EVC++ 語言編寫、應(yīng)用程序和嵌入式數(shù)據(jù)庫SQLite,,開發(fā)了故障診斷專家系統(tǒng),,以串口通信故障檢測為例,介紹了基于故障樹分析法和專家規(guī)則的故障診斷專家系統(tǒng)的建立以及診斷過程。當(dāng)串口通信故障檢測開始時,,測試人員只需要根據(jù)故障現(xiàn)象的提示進(jìn)行是非判斷,,然后專家引導(dǎo)系統(tǒng)就會給出下一步的工作。系統(tǒng)工作流程圖如圖4所示,。

    專家系統(tǒng)運行的過程中,,系統(tǒng)首次查詢數(shù)據(jù)庫,把故障樹的根節(jié)點內(nèi)容顯示到提示信息,。檢測人員將提示故障現(xiàn)象正確與否的判斷反饋給專家系統(tǒng)進(jìn)行下一次數(shù)據(jù)庫查詢得到下一步的提示信息,。檢測人員參與之后的所有數(shù)據(jù)庫查詢工作都按照節(jié)點設(shè)計的邏輯進(jìn)行跳轉(zhuǎn),然后重復(fù)人機交互操作,,最后由專家系統(tǒng)給出確切答案,,并提示檢測人員對測試結(jié)果進(jìn)行保存。
    本文提出了一種基于二叉樹遍歷的檢測專家系統(tǒng)并給出了多叉樹轉(zhuǎn)化為二叉樹的方法,,在嵌入式WinCE平臺下將這種系統(tǒng)實現(xiàn)并在初步的實踐檢驗中取得良好效果,。以串口通信故障檢測為例,詳細(xì)地介紹了專家系統(tǒng)的建立過程以及工作原理,,采用體積較小的嵌入式數(shù)據(jù)庫SQLite以及WinCE友好的嵌入式人機交互界面和模塊化程序設(shè)計方式,,復(fù)用性好,可移植性高[5],。此系統(tǒng)模型廣泛適用于交通,、通信以及電力等設(shè)備的故障檢測,在故障樹的引導(dǎo)下進(jìn)行專家級檢測,。
參考文獻(xiàn)
[1] 蔡自興,,DURKIN J,龔濤.高級專家系統(tǒng):原理,、設(shè)計及應(yīng)用[M].北京:科學(xué)出版社,,2006.
[2] 潘玲琳.基于產(chǎn)生式規(guī)則的專家系統(tǒng)的研究實現(xiàn)[J].計算機技術(shù)與發(fā)展,2007(5).
[3] 邵延峰,,薛紅軍.故障樹分析法在系統(tǒng)故障診斷中的應(yīng)用[J].中國制造業(yè),,2007,36(1):72274.
[4] 朱大奇.電子設(shè)備故障診斷原理與實踐[M].北京:電子工業(yè)出版社,,2004.
[5] 莊宗輝,,薛毓強,連瑞紅.嵌入式數(shù)據(jù)庫SQLite在遠(yuǎn)程監(jiān)控系統(tǒng)中的應(yīng)用[J].現(xiàn)代電子技術(shù),,2007(8):62-64.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。