?

一種復雜系統的快速故障診斷方法

2016-11-23 10:02楊國振
計算機測量與控制 2016年5期
關鍵詞:控件代碼結論

楊國振,蘇 健

(1.裝甲兵工程學院 控制工程系,北京 100072;2.裝甲兵工程學院 信息工程系,北京 100072)

一種復雜系統的快速故障診斷方法

楊國振1,蘇健2

(1.裝甲兵工程學院控制工程系,北京100072;2.裝甲兵工程學院信息工程系,北京100072)

針對復雜系統故障診斷效率低,通用性、擴展性差等問題,提出并實現了一種基于靈巧故障樹的快速故障診斷方法,首先通過診斷節點生成算法建立故障診斷樹的關系,然后運用數據庫技術對知識庫進行處理,最后采用圖形界面實現人機交互;該方法將故障樹、數據庫和虛擬界面進行融合設計,實現了故障的快速診斷和推理的動態更新,并在多型火炮控制系統的故障診斷中得到應用,取得了重大效益。

靈巧故障診斷樹;快速診斷;診斷節點;ACCESS數據庫

0 引言

現有的故障診斷方法可劃分為基于解析模型的方法、基于信號處理的方法和基于知識的方法[1]?;谥R的方法是目前研究和應用的熱點,當對象的數學模型難以獲得,且無法得到輸入輸出信號時,多采用該方法[2]?;谥R的方法又包括神經網絡法、模式識別法、模糊推理法、故障樹分析法、專家系統法、粗糙集法和事例推理法等,它們都有各自適用的情形,前人也已作出了大量研究]。

針對實際系統,在分析和掌握該系統的故障現象及其對應的故障機理后,為提高故障診斷效率,可采用故障診斷樹分析法,但目前基于該方法所開發設計的故障診斷軟件較少。

本文運用故障診斷樹分析法原理,基于Labwindows CVI樹控件,開發設計了相應的故障診斷軟件。該軟件可應用于裝甲車輛炮控系統、汽車發動系統、自動控制系統等諸多復雜控制系統的快速故障診斷,以確定故障部位,進行故障定位。

1 總體思路

故障診斷樹分析法是一種圖形演繹法,包括矩形事件、菱形事件和圓角矩形事件三類事件符號,矩形事件為頂事件,代表故障現象節點,菱形事件為中間事件,代表測試判斷節點,圓角矩形事件為底事件,代表故障源節點。每個菱形事件有測試結果為真和測試結果為假兩個分支,事件之間通過有向連接線表示邏輯層次關系。故障診斷樹是由故障現象與故障原因之間的測試結果驅動的,上一步的測試結果直接驅動下一步的測試內容。本方法中,將故障診斷樹由圖形表示法轉化為文字表示法,通過設計相應的文本字段來對應矩形事件、菱形事件和圓角矩形事件。

實現快速故障診斷的總體思路為:首先建立知識庫,將復雜系統的故障現象及故障原因以故障診斷樹的形式進行存儲;然后借助Labwindows CVI樹控件,將故障診斷樹直觀地顯示給用戶,指導故障診斷。用戶既可查看完整的故障診斷流程,實現基于故障診斷樹的單步故障診斷;又可對故障診斷樹進行增加、刪除和修改節點等操作,根據實際情形修改和完善故障診斷樹,這相當于一個專家系統。涉及到的關鍵技術有ACCESS數據庫通信技術,Labwindows CVI樹控件操作技術,以及實現故障診斷樹各類操作的算法。

2 實現步驟

快速故障診斷的具體實現步驟如圖1所示。

圖1 復雜系統快速故障診斷軟件實現步驟

2.1梳理系統故障診斷樹

故障診斷樹分析法是實現快速故障診斷的基礎,我們首先需要依據專家知識和實踐經驗,列舉系統可能存在的故障現象,并逐步分析產生各故障現象的原因,以及其中的邏輯關系,梳理出系統的故障診斷樹,建立知識庫。

2.2生成診斷節點,建立知識庫

梳理出系統的故障診斷樹后,根據其中的邏輯關系,編寫診斷節點代碼,并錄入ACCESS數據庫,故障診斷樹是以文本的形式存儲在ACCESS數據庫中的。

為實現功能,我們設計數據庫GZZDS.mdb,包含兩類數據表,一類是故障現象總表,命名為“gzxxzb”,另一類是各故障現象對應的故障診斷樹存儲表,命名規則為“table”+“故障現象序號”。

故障現象總表存儲了被診斷系統或設備內的全部故障現象,包括數字字段“ID”和文本字段“gzxx”,前者是故障現象依次排列的序號,后者是對各故障現象的具體文字性描述。

故障診斷樹存儲表的個數由故障現象總表中的故障現象總數決定,每個表包括數字字段“ID”、數字字段“層次”、文本字段“內容”和數字字段“類型”?!癐D”字段代表當前記錄的序號;故障診斷樹的層次結構關系通過“層次”字段識別,它的命名規則為:表的首行記錄代表故障現象,“層次”是 “0”,自第2行開始是展開的故障診斷樹,第1個判斷節點的 “層次”是“1”,結論為真的節點“層次”是“10”,為假的節點“層次”是“11”,依次類推,后一層節點“層次”是前一判斷節點“層次”值尾部添加“1”或者加“0”,當結論為真時,添加“1”,反之加“0”;“內容”字段是對應故障診斷樹每一步的具體操作提示,或為判斷節點,或為結論節點;“類型”字段包含“0”、“1”和“2”3種,該表的首行記錄是故障現象,“類型”為“0”,其余記錄若是判斷節點,“類型”為“1”,若是結論節點,“類型”為“2”。舉例說明某故障診斷樹的存儲,如圖2所示。2

圖2 某故障診斷樹的存儲

.3建立Labwindows CVI軟件平臺與數據庫的通信連接

將節點代碼錄入ACCESS數據庫后,通過SQL Toolkit工具實現Labwindows CVI軟件平臺與數據庫的通信交互[9],繼而實現后續功能,包含以下幾個步驟。

1)建立數據庫連接:

sprintf(strDataSource,"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s","GZZDS.mdb");

db Handle=DBConnect(str DataSource);

2)激活SQL語句:

db Table=DBActivateSQL(db Handle,"SELECT*FROM gzxxzb");

3)處理SQL語句:

DBBindColChar(db Table,3,256,neirong,&dbstatus[0],"")將字符型字段綁定到變量中;

DBBindColInt(db Table,4,&leixing,&leixingstatus)將整型字段綁定到變量中;

resCode=DBCreateRecord(db Table)創建一條記錄;

resCode=DBPutRecord(db Table)將當前記錄存儲到數據庫中;

resCode=DBDeleteRecord(db Table)刪除當前記錄;

DBFetchRandom(db Handle,numberlist)隨機讀取數據;

number=DBNumber Of Records(db Table)返回表中記錄的總數;

4)與數據庫斷開連接:

resCode=DBDisconnect(db Handle)。

2.4故障診斷樹顯示及故障診斷推理

基于Labwindows CVI中的樹狀控件和已經建立好的數據表,針對某一故障現象,既可完整地展示出故障診斷樹,給予操作人員清晰直觀的認識;也可以根據每一步的測試結果逐一顯示故障診斷樹,實現故障診斷推理。

Labwindows CVI的樹控件提供了一組分級項目列表,可清晰地分層顯示故障診斷樹,常用的函數有:向控件中插入項目(Insert ListItem,可以選擇插入故障診斷樹的同級分支或者子分支)、刪除項目(DeleteListItem)等[9]。

故障診斷推理的難點在于如何將故障診斷樹存儲表中的內容以符合Labwindows CVI樹控件操作規則的形式分層展現出來,分析如下:

1)故障診斷樹中“層次”為“0”的記錄代表故障現象,“層次”為“1”的記錄表示第1個判斷節點,除這兩條記錄外,其余記錄都是前一判斷節點的“是”與“否”兩個分支,兩兩配對存在。

2)構造一維層次代碼數組cengciarray[],由“1”開始,將表中所有“層次”值存入該數組中,并通過冒泡法對該數組排序,這樣任一判斷節點的兩個結論分支是前后相連的。

3)構造二維數組indexarray[m][n],第一維用于標記當前元素的序號m,indexarray[m][0]用于保存元素的層次代碼,indexarray[m][1]用于保存當前元素所處故障診斷樹中的位置,我們稱之為索引代碼。規定indexarray[0][0]=1,indexarray[0][1]=0,表明indexarray[m][n]的首元素是層次代碼為1的記錄,且該元素的索引代碼為0。

4)確定每一條記錄的索引代碼,該值是不斷動態變化的,具體方法如下。

1)初步計算每條記錄的索引代碼?!笆恰苯Y論節點的索引代碼由它的判斷節點的索引代碼“+1”,“否”結論節點的索引代碼由它的判斷節點的索引代碼“+2”,層次代碼除以10后取整得到與其相關的判斷節點。

例如:由數組cengciarray[]中層次代碼為1的元素開始,該元素表示故障診斷樹的首個判斷節點,它的索引代碼為0,它的兩個結論分支的索引代碼分別是1和2,將它們的層次代碼和索引代碼存入數組indexarray[m][n]中。

2)對索引代碼進行修正。從indexarray[m][n]的首元素開始循環遍歷該數組,如果某個元素的索引代碼等于它后面元素的索引代碼,則該元素的索引代碼加2,其余元素的索引代碼保持不變。

3)不斷重復第一步、第二步,直至獲得cengciarray[]數組中所有元素的索引代碼,并依次存入indexarray[m][n]數組中。

通過以上算法,可將任一故障診斷樹存儲表中的記錄按照故障診斷樹的層次關系存儲在數組indexarray[m][n]中。以圖1的存儲表為例,確定indexarray[m][n]中數值的具體步驟如表1~5所示。

表1 indexarray[m][n]中數值確定步驟一

表2 indexarray[m][n]中數值確定步驟二

表3 indexarray[m][n]中數值確定步驟三

表4 indexarray[m][n]中數值確定步驟四

表5 indexarray[m][n]中數值確定步驟五

5)完整展示故障診斷樹。依據indexarray[m][1]中數值由小到大的順序,借助Labwindows CVI樹控件操作函數,依次顯示數據表中的各條記錄。

6)故障診斷推理。故障診斷推理是由判斷節點的測試結果驅動的,通過故障診斷樹存儲表中各條記錄的層次代碼實現該功能。假設當前判斷節點的層次代碼為cengci,單步診斷選擇“是”結論時,樹控件顯示層次代碼為cengci*10的那條記錄,選擇“否”結論時,顯示層次代碼為cengci*10+1的記錄。最終,通過當前節點的類型代碼判斷單步診斷是否完畢,當該值為“2”時,表明得到故障結論,診斷過程結束。

2.5故障診斷節點的編輯

由于知識經驗的不準確或不完備,我們先前梳理的故障診斷樹可能存在錯誤,這時允許操作人員對故障診斷節點進行編輯,即對數據表中存儲的記錄進行修改。

操作人員可修改、增加或刪除故障診斷樹的節點,在Labwindows CVI平臺中,首先通過Get CtrlIndex函數獲得樹控件的焦點,即需要進行操作的節點,再基于indexarray[m][n]數組的索引代碼實現對故障診斷樹存儲表的識別,繼而對存儲表進行修改、增加或刪除操作。應注意,增加節點時,首先將所選擇的結論節點類型改為判斷節點,然后為判斷節點成對添加“是”與“否”兩個結論節點;刪除節點時,是刪除所選節點的所有后續節點。

2.6故障結論存儲與顯示

故障診斷推理結束后,可存儲故障結論,并能與數據庫實現交互通信,讀取歷史數據。當選擇某故障現象后,可顯示出該故障現象發生的總次數及其對應各故障原因的次數。這一功能是通過設計數據表“gzxxcc”實現的,具體方法類似于2.2中對數據表進行的相關操作,此處不再贅述。

3 故障診斷應用實例

3.1軟件界面設計

故障診斷軟件包括主界面、故障診斷界面以及與診斷節點操作相關的界面,可實現以下具體功能:

1)故障現象選擇。進入程序主界面后,顯示出系統所有可能存在的故障現象。選擇某個故障現象,點擊“開始”,進入故障診斷界面,該界面將故障現象和首個判斷節點自動顯示出來。

2)查看流程。點擊“查看流程”,可將該故障診斷樹直觀全面地顯示。

3)單步診斷。點擊“單步診斷”,根據故障診斷樹的提示,選擇判斷節點的結論“是”或“否”,并可通過“返回”按鈕回到上一步,最終彈出“注意”對話框,提示故障診斷完畢,得到結論。

4)修改節點。選擇某節點,點擊“修改節點”,可對節點的類型或內容進行修改。

5)增加節點。選擇某結論節點,點擊“增加節點”,自動將該節點變為判斷節點,并可以成對添加它的“是”與“否”結論節點。

6)刪除節點。選擇某節點后,點擊“刪除節點”,即可刪除后續所有節點。

7)故障結論存儲與顯示。某單步診斷結束后,點擊所彈出對話框中的“OK”,可將當前故障診斷結果存入數據庫中。退到程序主界面后,在頁面左側選擇某故障現象,點擊“結論顯示”,會彈出新的界面,以顯示該故障現象發生的總次數及其對應各故障原因的次數。

3.2實例驗證

以某型裝甲車輛炮控系統出現“系統通電,電源指示燈不亮”的故障為例進行說明。針對該故障現象,可以查看完整的故障診斷樹如圖3所示,進行單步診斷時,依照提示,逐步進行,最終得到故障診斷結論為“電源電纜故障”,如圖4所示,達到了預期的效果。

4 結論

圖3 完整的故障診斷樹

圖4 單步診斷流程

本文提出了一種可應用于復雜系統的快速故障診斷方法,并開發設計了相應的故障診斷軟件,經實驗驗證,達到了預期的故障診斷效果。該方法具有以下優點:1)直觀形象,故障診斷樹通過簡單的二叉樹將系統間的邏輯關系清晰地表達出來,判斷節點與結論節點直觀形象地展現了故障及其發生的原因,便于維修人員理解接受;2)針對性強,故障診斷樹分層體現了與故障現象相關的測試點,不需要盲目地采集所有信號,針對性強;3)應用范圍廣,故障診斷樹分析法可適用于各個層級的故障診斷,針對不同層次的診斷對象,進行不同的分析研究;4)用途多樣,故障診斷樹建立后,不僅利于維修人員的診斷工作,還有助于設備的管理、維修和技術培訓。

[1]陸雪梅,尚群立.動態控制系統的故障診斷方法綜述[J].機電工程,2008,25(6):103-107.

[2]朱大奇,于盛林.基于知識的故障診斷方法綜述[J].安徽工業大學學報,2002,19(3):197-204.

[3]李光升,康洪銘,謝永成,等.基于BP神經網絡的裝甲車輛電源系統故障診斷方法研究[J].計算機測量與控制,2012,20(10):2719-2721.

[4]陳德道,安虎平,等.基于模糊故障樹的數控機床故障診斷方法[J].機床與液壓,2015,43(5):177-180.

[5]張雷,常天慶,朱斌,等.基于模糊推理的炮控系統性能評估與故障診斷[J].計算機測量與控制,2010,18(8):1815-1817.

[6]蘇健,陳玉強,陳軍偉,等.基于故障樹分析的火控系統故障診斷專家系統設計[J].計算機測量與控制,2013,21(11):3008-3010.

[7]許斌,周鳴岐.測試點優化及故障診斷樹生成技術[J].國外電子測量技術,2006,25(3):1519.

[8]鄭偉,馮富強,皮文靜,等.故障診斷樹生成技術研究與實裝驗證[J].裝備指揮技術學院學報,2012,23(1):119-122.

[9]王建新.Lab Windows/CVI虛擬儀器測試技術及工程應用[M].北京:化學工業出版社,2011.

A Fast Fault Diagnosis Method for Complex System

Yang Guozhen1,Su Jian2
(1.Department of Control Engineering,Academy of Armored Force Engineering,Beijing100072,China;2.Department of Information Engineering,Academy of Armored Force Engineering,Beijing100072,China)

For the efficiency of fault diagnosis in complex systems is low,and poor universality and expansibility,a fast fault diagnosis method is proposed and realized based on the smart fault diagnosis tree.The framework and relationship is built through the generation algotithm of diagnostic nodes,then the knowledge base is processed on data base,Human-Computer Interaction is realized by the graphical interface.To achieve the fast fault diagnosis and the dynamic data update,they are fused with the fault diagnosis tree、the data base and the Virtual Interface,the method is used for the fault diagnosis of several gun control systems,and it has great benefits.

smart fault diagnosis tree;fast fault diagnosis;diagnostic node;ACCESS database

1671-4598(2016)05-0008-04

10.16526/j.cnki.11-4762/tp.2016.05.003

TP306

A

2015-05-28;

2015-12-04。

楊國振(1977-),碩士研究生,主要從事武器系統工程方向的研究。

猜你喜歡
控件代碼結論
由一個簡單結論聯想到的數論題
立體幾何中的一個有用結論
基于.net的用戶定義驗證控件的應用分析
創世代碼
創世代碼
創世代碼
創世代碼
關于.net控件數組的探討
結論
基于嵌入式MINIGUI控件子類化技術的深入研究與應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合