吳剛,施建禮,焦吉祥
(1. 海軍潛艇學(xué)院,山東青島266042;2. 中國(guó)人民解放軍92196 部隊(duì),山東青島266042)
LabSQL 是一個(gè)源代碼開(kāi)放的、多數(shù)據(jù)庫(kù)、跨平臺(tái)的LabVIEW 數(shù)據(jù)庫(kù)訪問(wèn)工具包,支持Windows 操作系統(tǒng)中任何基于ODBC 的數(shù)據(jù)庫(kù),包括Access、SQL Server、Oracle、Pervasive 等,其優(yōu)點(diǎn)是易于理解、操作簡(jiǎn)單,開(kāi)發(fā)人員進(jìn)行簡(jiǎn)單的編程,就可以在LabVIEW 中實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)[1-2]。
目前,由于虛擬儀器技術(shù)的迅猛發(fā)展,基于LabVIEW 平臺(tái)構(gòu)建數(shù)據(jù)采集與分析系統(tǒng)已經(jīng)成為設(shè)備狀態(tài)監(jiān)測(cè)的重要途徑[3-4],且根據(jù)采集樣本進(jìn)行智能的、實(shí)時(shí)的故障診斷已經(jīng)越來(lái)越受到重視,因此如何在統(tǒng)一的LabVIEW 平臺(tái)下建立基于LabSQL 技術(shù)的故障診斷系統(tǒng),是實(shí)現(xiàn)設(shè)備狀態(tài)監(jiān)測(cè)與故障診斷相融合的關(guān)鍵環(huán)節(jié)。作者根據(jù)此思想對(duì)采用LabSQL 技術(shù)進(jìn)行故障診斷系統(tǒng)構(gòu)建進(jìn)行了研究。
LabSQL 是利用Microsoft ADO 和SQL 語(yǔ)言來(lái)完成數(shù)據(jù)庫(kù)訪問(wèn)的LabVIEW 數(shù)據(jù)庫(kù)訪問(wèn)工具包,它將復(fù)雜的底層ADO 及SQL 操作封裝成一系列的LabSQL VIs,用戶(hù)只需要了解各個(gè)VIs 的接口及其所實(shí)現(xiàn)的功能就可以實(shí)現(xiàn)所有的數(shù)據(jù)庫(kù)操作,簡(jiǎn)單易用。LabSQL VIs 按照功能可以分為4 類(lèi),即[5]:
(1)Command VIs。LabSQL 包含10 個(gè)Command VIs,用于完成一些列的基本ADO 操作;
(2)Connection VIs。LabSQL 包含10 個(gè)Connection VIs,用于管理LabVIEW 與數(shù)據(jù)庫(kù)之間的連接;
(3)Recordset VIs。LabSQL 包含22 個(gè)Recordset VIs,用于對(duì)數(shù)據(jù)庫(kù)中的記錄進(jìn)行各種操作;
(4)Top Level VIs。用于對(duì)前3 類(lèi)LabSQL VIs 的某些功能進(jìn)行封裝,屬于頂層LabSQL 應(yīng)用。
故障診斷系統(tǒng)包括數(shù)據(jù)庫(kù)及其管理模塊、知識(shí)庫(kù)及知識(shí)獲取模塊、推理機(jī)模塊、解釋機(jī)構(gòu)模塊和人機(jī)接口模塊五大部分,基本結(jié)構(gòu)如圖1 所示。
圖1 故障診斷系統(tǒng)基本結(jié)構(gòu)
其基本原理是從知識(shí)庫(kù)獲取故障推理的相應(yīng)知識(shí),從數(shù)據(jù)庫(kù)獲取故障推理的相應(yīng)推理規(guī)則,綜合以后通過(guò)推理機(jī)進(jìn)行推理,然后通過(guò)解釋機(jī)構(gòu)向用戶(hù)顯示便于識(shí)別的信息。
從故障診斷系統(tǒng)的基本結(jié)構(gòu)不難看出,故障診斷的過(guò)程實(shí)際上是一個(gè)對(duì)知識(shí)庫(kù)、數(shù)據(jù)庫(kù)等進(jìn)行查詢(xún)控制的過(guò)程,由此可見(jiàn),推理機(jī)模塊的設(shè)計(jì)是實(shí)現(xiàn)故障診斷的關(guān)鍵環(huán)節(jié)。
推理機(jī)模塊主要作用是在故障診斷系統(tǒng)軟件查詢(xún)指令的作用下,根據(jù)相應(yīng)的查詢(xún)參數(shù)在數(shù)據(jù)庫(kù)中查詢(xún)相關(guān)記錄,并通過(guò)系統(tǒng)軟件的顯示功能予以顯示,其基本流程如圖2 所示。
圖2 推理機(jī)模塊流程圖
圖2中的查詢(xún)程序?qū)嶋H就是對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn)和查詢(xún)的程序語(yǔ)言,在LabVIEW 平臺(tái)下,該程序語(yǔ)言可以用LabSQL 工具進(jìn)行開(kāi)發(fā)。
圖2 所示的流程圖中包括了故障診斷系統(tǒng)數(shù)據(jù)庫(kù)的3 個(gè)表,即故障表(FaultTable)、規(guī)則表(RuleTable)和原因表(ReasonTable)。這3 個(gè)表記錄的數(shù)據(jù)主要結(jié)構(gòu)如表1 所示。
表1 數(shù)據(jù)庫(kù)記錄主要結(jié)構(gòu)
其基本思路是根據(jù)故障內(nèi)容查詢(xún)故障表,確定故障編號(hào);再根據(jù)故障編號(hào)查詢(xún)故障規(guī)則表,確定相應(yīng)的原因編號(hào)和規(guī)則內(nèi)容;最后根據(jù)原因編號(hào)查詢(xún)故障原因表,確定相應(yīng)的故障原因,并根據(jù)最終原因標(biāo)識(shí)的有無(wú)判斷顯示最終故障原因還是繼續(xù)進(jìn)行故障原因的推理查詢(xún)。
由上所述,可以看到,推理機(jī)模塊的核心便是對(duì)數(shù)據(jù)庫(kù)中的故障表、規(guī)則表和原因表的查詢(xún)控制。采用LabSQL 工具進(jìn)行開(kāi)發(fā)時(shí),主要用到表2 所示的函數(shù)節(jié)點(diǎn)。
表2 LabSQL 函數(shù)節(jié)點(diǎn)及功能
主要步驟包括:
(1)建立與數(shù)據(jù)庫(kù)的連接。首先利用ADO Connection Create. vi 創(chuàng)建Connection 對(duì)象,然后利用ADO Connection Open. vi 建立與數(shù)據(jù)庫(kù)的連接。在建立的連接中,需要指定連接數(shù)據(jù)庫(kù)名稱(chēng),如“FaultDiag”。
(2)建立與記錄集的連接。首先利用
ADO Recordset Create. vi 創(chuàng)建Recordset 對(duì)象,然后利用ADO Recordset Open. vi 打開(kāi)Recordset 對(duì)象,同時(shí)利用SQL 對(duì)故障表進(jìn)行查詢(xún),查詢(xún)命令為“Select * From FaultTable”。
(3)查找故障記錄并獲取故障編號(hào)。首先利用ADO Recordset Find. vi 根據(jù)故障現(xiàn)象查詢(xún)故障表,獲取故障記錄,然后利用ADO Recordset Get Item. vi 獲取故障編號(hào)。
(4)查找推理規(guī)則記錄并獲取故障原因編號(hào)。首先利用ADO Recordset Find. vi 根據(jù)故障編號(hào)查詢(xún)規(guī)則表,獲取規(guī)則記錄,然后利用ADO Recordset Get Item. vi 獲取故障原因編號(hào)。
(5)查找故障原因記錄并獲取最終原因標(biāo)識(shí)。首先利用ADO Recordset Find. vi 根據(jù)故障原因編號(hào)查詢(xún)?cè)虮?,獲取原因記錄,然后利用ADO Recordset Get Item. vi 獲取最終原因標(biāo)識(shí),如果是最終原因,則進(jìn)行顯示;否則返回第(3)步,繼續(xù)進(jìn)行故障推理。
(6)關(guān)閉對(duì)記錄集和數(shù)據(jù)庫(kù)的連接。分別利用ADO Recordset Close. vi 和ADO Connection Close. vi 關(guān)閉對(duì)記錄集和數(shù)據(jù)庫(kù)的連接。
對(duì)在統(tǒng)一的LabVIEW 平臺(tái)下如何使用LabSQL 工具進(jìn)行故障診斷系統(tǒng)的開(kāi)發(fā)進(jìn)行了研究,通過(guò)LabSQL 的函數(shù)節(jié)點(diǎn)可以可靠地對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪問(wèn),解決故障診斷系統(tǒng)中故障推理的過(guò)程,能夠很好地與LabVIEW 平臺(tái)下采集到的數(shù)據(jù)有效融合,實(shí)現(xiàn)基于設(shè)備實(shí)時(shí)狀態(tài)的故障診斷。
【1】彭漢國(guó),艾瑞東,王明方,等.基于LabVIEW 的數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)[J].艦船電子工程,2009(8):151 -154.
【2】尹仁平,劉剛,汪立新,等. LabVIEW 中的數(shù)據(jù)庫(kù)訪問(wèn)[J].計(jì)算機(jī)測(cè)量,2006(3):51 -52.
【3】張捍東,紀(jì)文志.數(shù)據(jù)采集系統(tǒng)中的LabVIEW 數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)[J].工業(yè)儀表與自動(dòng)化裝置,2009(4):63 -66.
【4】姜志保,鄭波. 基于LabVIEW 的引信密封性測(cè)試中的Access 數(shù)據(jù)庫(kù)訪問(wèn)[J].電氣自動(dòng)化,2008(5):48 -49.
【5】楊樂(lè)平,李海濤,趙勇,等. LabVIEW 高級(jí)程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2007.