<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

在LabVIEW中利用ActiveX技術(shù)訪(fǎng)問(wèn)數據庫

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


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


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


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

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


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




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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>