吳剛,施建禮,焦吉祥
(1. 海軍潛艇學院,山東青島266042;2. 中國人民解放軍92196 部隊,山東青島266042)
LabSQL 是一個源代碼開放的、多數據庫、跨平臺的LabVIEW 數據庫訪問工具包,支持Windows 操作系統中任何基于ODBC 的數據庫,包括Access、SQL Server、Oracle、Pervasive 等,其優點是易于理解、操作簡單,開發人員進行簡單的編程,就可以在LabVIEW 中實現對數據庫的訪問[1-2]。
目前,由于虛擬儀器技術的迅猛發展,基于LabVIEW 平臺構建數據采集與分析系統已經成為設備狀態監測的重要途徑[3-4],且根據采集樣本進行智能的、實時的故障診斷已經越來越受到重視,因此如何在統一的LabVIEW 平臺下建立基于LabSQL 技術的故障診斷系統,是實現設備狀態監測與故障診斷相融合的關鍵環節。作者根據此思想對采用LabSQL 技術進行故障診斷系統構建進行了研究。
LabSQL 是利用Microsoft ADO 和SQL 語言來完成數據庫訪問的LabVIEW 數據庫訪問工具包,它將復雜的底層ADO 及SQL 操作封裝成一系列的LabSQL VIs,用戶只需要了解各個VIs 的接口及其所實現的功能就可以實現所有的數據庫操作,簡單易用。LabSQL VIs 按照功能可以分為4 類,即[5]:
(1)Command VIs。LabSQL 包含10 個Command VIs,用于完成一些列的基本ADO 操作;
(2)Connection VIs。LabSQL 包含10 個Connection VIs,用于管理LabVIEW 與數據庫之間的連接;
(3)Recordset VIs。LabSQL 包含22 個Recordset VIs,用于對數據庫中的記錄進行各種操作;
(4)Top Level VIs。用于對前3 類LabSQL VIs 的某些功能進行封裝,屬于頂層LabSQL 應用。
故障診斷系統包括數據庫及其管理模塊、知識庫及知識獲取模塊、推理機模塊、解釋機構模塊和人機接口模塊五大部分,基本結構如圖1 所示。

圖1 故障診斷系統基本結構
其基本原理是從知識庫獲取故障推理的相應知識,從數據庫獲取故障推理的相應推理規則,綜合以后通過推理機進行推理,然后通過解釋機構向用戶顯示便于識別的信息。
從故障診斷系統的基本結構不難看出,故障診斷的過程實際上是一個對知識庫、數據庫等進行查詢控制的過程,由此可見,推理機模塊的設計是實現故障診斷的關鍵環節。
推理機模塊主要作用是在故障診斷系統軟件查詢指令的作用下,根據相應的查詢參數在數據庫中查詢相關記錄,并通過系統軟件的顯示功能予以顯示,其基本流程如圖2 所示。

圖2 推理機模塊流程圖
圖2中的查詢程序實際就是對數據庫進行訪問和查詢的程序語言,在LabVIEW 平臺下,該程序語言可以用LabSQL 工具進行開發。
圖2 所示的流程圖中包括了故障診斷系統數據庫的3 個表,即故障表(FaultTable)、規則表(RuleTable)和原因表(ReasonTable)。這3 個表記錄的數據主要結構如表1 所示。

表1 數據庫記錄主要結構
其基本思路是根據故障內容查詢故障表,確定故障編號;再根據故障編號查詢故障規則表,確定相應的原因編號和規則內容;最后根據原因編號查詢故障原因表,確定相應的故障原因,并根據最終原因標識的有無判斷顯示最終故障原因還是繼續進行故障原因的推理查詢。
由上所述,可以看到,推理機模塊的核心便是對數據庫中的故障表、規則表和原因表的查詢控制。采用LabSQL 工具進行開發時,主要用到表2 所示的函數節點。

表2 LabSQL 函數節點及功能
主要步驟包括:
(1)建立與數據庫的連接。首先利用ADO Connection Create. vi 創建Connection 對象,然后利用ADO Connection Open. vi 建立與數據庫的連接。在建立的連接中,需要指定連接數據庫名稱,如“FaultDiag”。
(2)建立與記錄集的連接。首先利用
ADO Recordset Create. vi 創建Recordset 對象,然后利用ADO Recordset Open. vi 打開Recordset 對象,同時利用SQL 對故障表進行查詢,查詢命令為“Select * From FaultTable”。
(3)查找故障記錄并獲取故障編號。首先利用ADO Recordset Find. vi 根據故障現象查詢故障表,獲取故障記錄,然后利用ADO Recordset Get Item. vi 獲取故障編號。
(4)查找推理規則記錄并獲取故障原因編號。首先利用ADO Recordset Find. vi 根據故障編號查詢規則表,獲取規則記錄,然后利用ADO Recordset Get Item. vi 獲取故障原因編號。
(5)查找故障原因記錄并獲取最終原因標識。首先利用ADO Recordset Find. vi 根據故障原因編號查詢原因表,獲取原因記錄,然后利用ADO Recordset Get Item. vi 獲取最終原因標識,如果是最終原因,則進行顯示;否則返回第(3)步,繼續進行故障推理。
(6)關閉對記錄集和數據庫的連接。分別利用ADO Recordset Close. vi 和ADO Connection Close. vi 關閉對記錄集和數據庫的連接。
對在統一的LabVIEW 平臺下如何使用LabSQL 工具進行故障診斷系統的開發進行了研究,通過LabSQL 的函數節點可以可靠地對數據庫進行訪問,解決故障診斷系統中故障推理的過程,能夠很好地與LabVIEW 平臺下采集到的數據有效融合,實現基于設備實時狀態的故障診斷。
【1】彭漢國,艾瑞東,王明方,等.基于LabVIEW 的數據庫訪問技術[J].艦船電子工程,2009(8):151 -154.
【2】尹仁平,劉剛,汪立新,等. LabVIEW 中的數據庫訪問[J].計算機測量,2006(3):51 -52.
【3】張捍東,紀文志.數據采集系統中的LabVIEW 數據庫訪問技術[J].工業儀表與自動化裝置,2009(4):63 -66.
【4】姜志保,鄭波. 基于LabVIEW 的引信密封性測試中的Access 數據庫訪問[J].電氣自動化,2008(5):48 -49.
【5】楊樂平,李海濤,趙勇,等. LabVIEW 高級程序設計[M].北京:清華大學出版社,2007.