新聞中心

EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 在LabVIEW中利用ActiveX技術(shù)訪問數(shù)據(jù)庫

在LabVIEW中利用ActiveX技術(shù)訪問數(shù)據(jù)庫

作者: 時間:2011-11-05 來源:網(wǎng)絡(luò) 收藏
1 引言
虛擬儀器(VI—Virtual Instrumentation)是指通過應(yīng)用程序?qū)⑼ㄓ糜嬎銠C(jī)與功能化硬件結(jié)合起來,用戶可通過友好的圖形界面來操作這臺計算機(jī),就像在操作自己定義、自己設(shè)計的一臺單個儀器一樣,從而完成對被測試量的采集、分析、判斷、顯示、數(shù)據(jù)存儲等。
是當(dāng)前虛擬儀器的主要開發(fā)工具之一,它是NI(National Instruments)公司開發(fā)的一種高效的圖形化編程工具,是一個標(biāo)準(zhǔn)的數(shù)據(jù)采集和儀器控制軟件,它集開發(fā)、調(diào)試和運行于一體,目前通用的最新版本為7.0。集成了與滿足GPIB、VXI、RS-232和RS-485協(xié)議的硬件及數(shù)據(jù)采集卡通訊的全部功能。它還內(nèi)置了便于應(yīng)用TCP/IP、ActiveX等軟件標(biāo)準(zhǔn)的庫函數(shù)。這是一個功能強(qiáng)大且靈活的軟件。利用它可以方便地建立自己的虛擬測量和控制儀器,其圖形化的界面使得編程及使用過程都生動有趣。隨著LabVIEW越來越多地用于數(shù)據(jù)采集及分析、儀器和控制、測試測量及過程監(jiān)控和控制等領(lǐng)域,對測量數(shù)據(jù)進(jìn)行存儲、分析是一個關(guān)鍵環(huán)節(jié),這其中要涉及到對測量數(shù)據(jù)的讀寫操作?,F(xiàn)有的Lab- VIEW版本中還沒有提供與通用數(shù)據(jù)庫直接接口的方法[1],這一問題可以采用以下幾種辦法解決:
1)采用其他編程語言編寫動態(tài)鏈接庫DLL訪問數(shù)據(jù)庫,并在LabVIEW中調(diào)用此DLL與數(shù)據(jù)庫進(jìn)行連接;
2)利用中間文件存取數(shù)據(jù),先將數(shù)據(jù)存入文件中,在一定的時刻或者需要時再將數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中。這種方法實現(xiàn)比較簡單,但是需要單獨的軟件對數(shù)據(jù)文件導(dǎo)入導(dǎo)出;
3)LabVIEW中包含了大量的ActiveX對象,其中包含了ADO(ActiveX Data Obiects)接口的各種對象,可以利用ADO的接口進(jìn)行數(shù)據(jù)庫的訪問;
4)使用NI公司的SQL ToolKit for LabVIEW附加工具包與數(shù)據(jù)庫連接;[2]
第一種方法的工作量較大;第二種方法不能對數(shù)據(jù)進(jìn)行實時的存??;第三種方法通用性和靈活性欠佳;而第四種方法該工具包需單獨購買且價格昂貴。為了解決上述這些問題,我們采用Premise Development公司的Chris Roth和Jeffrey Travis開發(fā)的免費的LabVIEW數(shù)據(jù)庫支持VI—LabSQL來完善整個系統(tǒng)的數(shù)據(jù)庫功能。它將復(fù)雜的底層 ADO及SQL操作封裝成一系列的LabsQL VIs, LabSQL的優(yōu)點是易于理解,不熟悉SQL語言的用戶也可以很容易地使用,只需進(jìn)行簡單的編程,就可以在LabVIEW中實現(xiàn)數(shù)據(jù)庫訪問。利用 LabSQL幾乎可以訪問任何類型的數(shù)據(jù)庫,簡單易用。另外,Microsoft ADO控件具有遠(yuǎn)程數(shù)據(jù)庫訪問的功能,但是LabSQL并沒有開發(fā)這一部分,要在LabVIEW中實現(xiàn)遠(yuǎn)程數(shù)據(jù)庫的訪問,還需再結(jié)合LabVIEW中包含的ADO接口對象進(jìn)行再開發(fā)。
2 訪問遠(yuǎn)程數(shù)據(jù)庫的步驟
一般而言,對遠(yuǎn)程數(shù)據(jù)庫的操作有以下幾步。
1)在服務(wù)器上建立網(wǎng)絡(luò)數(shù)據(jù)庫:
選擇一種客戶/月艮務(wù)器體系結(jié)構(gòu)的數(shù)據(jù)庫軟件,分別安裝在客戶端和服務(wù)器端。
2)連接數(shù)據(jù)庫:
應(yīng)用程序是通過“連接”訪問數(shù)據(jù)源,連接是交換數(shù)據(jù)所必需的環(huán)境。所以,創(chuàng)建“Connection”對象是所有數(shù)據(jù)庫操作的必需的第一步驟。
3)執(zhí)行SQL指令:
通過已經(jīng)建立的連接發(fā)出的SQL指令可以用某種方式來操作數(shù)據(jù)源。Microsoft ADO的Com mand對象,Connection對象以及Recordset對象都提供有執(zhí)行SQL指令的方法,依據(jù)具體情況具體選擇對象。
4)處理結(jié)果:
檢索到的數(shù)據(jù)有需要加以處理的則通過各種需要的算法加以處理。
5)關(guān)閉連接:
執(zhí)行完任務(wù)后,必需切斷與數(shù)據(jù)庫資源的連接,釋放任何屬于連接的資源,關(guān)閉任何從屬對象,因為它使用了服務(wù)器的資源,如果不釋放的話將導(dǎo)致服務(wù)器資源浪費并影響服務(wù)器性能[3]。
Oracle是以高級結(jié)構(gòu)化查詢語言(SQL)為基礎(chǔ)的大型關(guān)系數(shù)據(jù)庫,通俗地講它是用方便邏輯管理的語言操縱大量有規(guī)律數(shù)據(jù)的集合,是目前最流行的客戶/服務(wù)器(CLIENT/SERVER)體系結(jié)構(gòu)的數(shù)據(jù)庫之一,也是目前技術(shù)比較領(lǐng)先、應(yīng)用非常廣泛的一個商業(yè)數(shù)據(jù)庫產(chǎn)品。所以我們選擇Oracle來搭建所需的網(wǎng)絡(luò)數(shù)據(jù)庫。數(shù)據(jù)庫管理大部分是對數(shù)據(jù)的查詢、插入、修改和刪除等操作的綜合應(yīng)用。
在運行LabVIEW程序的應(yīng)用程序服務(wù)器上,假設(shè)已經(jīng)安裝了Oracle客戶端,并連接數(shù)據(jù)庫服務(wù)器上的遠(yuǎn)程數(shù)據(jù)庫成功,通過Windows控制面板中管理工具里面的“數(shù)據(jù)源(ODBC)”來創(chuàng)建 ODBC數(shù)據(jù)源,設(shè)置系統(tǒng)DSN(數(shù)據(jù)源名稱)為loginoracle,驅(qū)動程序選擇Microsoft ODBC for Oracle。設(shè)置成功后我們就可以像訪問本地數(shù)據(jù)庫一樣訪問遠(yuǎn)程數(shù)據(jù)庫了。
3 應(yīng)用實例
以下,我們就結(jié)合一個具體的應(yīng)用實例說明如何在LabVIEW環(huán)境中實現(xiàn)對遠(yuǎn)程Oracle數(shù)據(jù)庫的訪問。
我們建立了一個校園網(wǎng)虛擬實驗室,將我??刂葡档倪^程控制實驗室的液位過程控制實驗搬到了網(wǎng)站上,學(xué)生和老師在宿舍就可以遠(yuǎn)程監(jiān)視并控制其運行狀態(tài),但是實驗裝置并不是隨時打開的,我們需要將它的歷史狀態(tài)保存在數(shù)據(jù)庫中,以便在未打開裝置的情況下通過歷史數(shù)據(jù)顯示數(shù)據(jù)采集曲線,因此我們在數(shù)據(jù)庫服務(wù)器上建了一個Wave-form表,將液位高度數(shù)據(jù)和控制器輸出電壓數(shù)據(jù)保存在其中,我們就對這個表進(jìn)行相關(guān)的操作。
先簡要介紹一下本實驗裝置的工作原理。
過程控制實驗室引進(jìn)英國FeedBack公司開發(fā)的PROCON(PROcess CONtroller)38系列綜合實驗裝置,它是處理過程控制問題一個完整的組合程序。它包括相關(guān)的硬件過程控制裝置,監(jiān)視器和接口設(shè)備,一個工業(yè)標(biāo)準(zhǔn)控制器,并且附帶指導(dǎo)手冊和軟件。在本課題中我們用LabVIEW7.0軟件取代PROCON 38系列系統(tǒng)的工業(yè)標(biāo)準(zhǔn)控制器,搭建自己的控制平臺。我們選用了一塊I/V轉(zhuǎn)換芯片RCV420,一塊V/I轉(zhuǎn)換芯片XTRll0,一塊NI公司出產(chǎn)的PCI-6014E系列數(shù)據(jù)采集卡和一臺微機(jī)。
PROCON38系列系統(tǒng)水箱的浮子式液位計采集到的0 - 5V電壓液位信號被過程接口(PI)轉(zhuǎn)換為一個4 - 20毫安的電流信號,我們通過一個I/V轉(zhuǎn)換電路將其還原成0—5V的電壓信號,用NI公司的PCI - 6014數(shù)據(jù)采集卡采集進(jìn)來,進(jìn)行控制算法的處理后再通過該數(shù)據(jù)采集卡輸出0 - 5V的電壓控制信號,接著通過一個V/I轉(zhuǎn)換電路轉(zhuǎn)換成4- 20毫安的電流信號,控制伺服閥的開閉,4毫安時閥門全閉,20毫安時閥門全開,通過控制進(jìn)水量來控制水箱中的液位。控制算法我們采用的是 PID控制,直接調(diào)用仿真工具箱里的PID工具包。具體程序設(shè)計如下面程序框圖2所示。
訪問數(shù)據(jù)庫信息的第一步應(yīng)該是與數(shù)據(jù)庫建立連接,LabSQL中的Connection VIs就能夠?qū)崿F(xiàn)這個目的,首先利用ADO Connection Create.vi創(chuàng)建一個Connection對象,然后利用ADO Connection Open.vi建立與數(shù)據(jù)庫的連接。但是ADO Connec tion Open.vi只能設(shè)置DSN,而網(wǎng)絡(luò)數(shù)據(jù)庫為了安全起見都設(shè)置有用戶名和密碼,所以要打開遠(yuǎn)程數(shù)據(jù)庫不能使用LabsQL中的ADO Connection Open.vi,而要用ADO接口對象再開發(fā)。具體操作如下:
從控制模板的Application Control子模板中調(diào)用Invoke Node結(jié)點,在點右鍵彈出的菜單中選擇 Select Class,再在順次閃出的菜單里選擇ActiveX,最后選定其中的ADODB.-Connection,然后選擇其方法(Method)為Open,最終在程序框圖中顯示的圖標(biāo)如圖1所示。


這樣,通過在ConnectionString中設(shè)置DSN,在UserID中設(shè)置用戶名,在Password中設(shè)置密碼,就可對一個遠(yuǎn)程數(shù)據(jù)庫進(jìn)行象本地數(shù)據(jù)庫一樣的數(shù)據(jù)操作了。
接下來是執(zhí)行SQL指令:LabSQL中的Con nection VIs里有一個ADO Connection Execute.vi,它可以執(zhí)行SQL命令,檢索數(shù)據(jù)庫以及對數(shù)據(jù)庫進(jìn)行添加、更新、刪除操作,它的CommandText端子傳送的就是命令文本,通常是SQL語句,它返回的是一個記錄集(Recorderset)對象。
如果需要處理相關(guān)數(shù)據(jù),可利用sQL Fetch Data(GetString).vi獲得查詢結(jié)果,加以處理并送到前面板中的示波器或者其它儀器或表格加以顯示。本例中只介紹數(shù)據(jù)的存儲過程,所以沒有涉及此步驟。
最后,用ADO Connection Close.vi關(guān)閉與數(shù)據(jù)庫之間的連接。
整個實現(xiàn)數(shù)據(jù)采集和數(shù)據(jù)庫操作的框圖程序如圖2所示。


這只是完整程序的一部分,其它部分還包括前面板上其它主要按鈕的事件處理程序。這里就不一一列舉了。
在前面板中的ConnectionString中輸入“DSN=loginoracle”,在UserlD中輸入遠(yuǎn)程數(shù)據(jù)庫的登錄用戶名,在Password中輸入密碼,并設(shè)為默認(rèn)值,然后將它們在前面板上隱藏。
設(shè)置了各個參數(shù)后點擊“啟動”按鈕,程序的運行結(jié)果如圖3所示。


在程序運行的時候,參數(shù)設(shè)置和其它無關(guān)的按鈕都在前面板隱藏起來,停止采樣后則將示波器隱藏,然后再將參數(shù)設(shè)置及復(fù)位等其它按鈕顯示出來。前面板顯示如圖3之結(jié)果的同時,在后臺的程序中當(dāng)前的兩組波形數(shù)據(jù)已經(jīng)由當(dāng)前本地的應(yīng)用程序服務(wù)器傳遞給了數(shù)據(jù)庫服務(wù)器。
在裝置未打開時,我們可通過訪問Waveform數(shù)據(jù)表,將波形的數(shù)據(jù)取出,顯示其歷史工作狀態(tài),這樣無論實驗裝置是否打開,學(xué)生都能看到如圖3所示的裝置運行時的波形圖。

pid控制相關(guān)文章:pid控制原理


液位計相關(guān)文章:磁翻板液位計原理




關(guān)鍵詞: LabVIEW ActiveX技術(shù)

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉