江務學 王志明
摘要:為提高虛擬實驗室設計中的遠程數(shù)據(jù)庫訪問的有效性,分析了LabView訪問遠程數(shù)據(jù)庫方法的特點和不足,提出了Lab SQL工具包和ADO技術的集成應用策略。結合一個網(wǎng)絡虛擬實驗室的應用開發(fā),給出了基于LabSQL的數(shù)據(jù)庫訪問步驟和虛擬實驗室的設計過程。該策略及設計具有較高的實用價值。
關鍵詞: 虛擬儀器; LabVIEW; 遠程數(shù)據(jù)庫; LabSQL; ADO
中圖分類號:TP391文獻標志碼:A 文章編號:1006-8228(2012)05-32-03
Research on strategy and application of access to remote database based on LabVIEW
Jiang Wuxue, Wang Zhiming
(Dongguan Polytechnic, Dongguan, Guangdong 523808, China)
Abstract: To improve the effective of access to remote database in the design of virtual laboratory, this paper analyzes the characteristics and insufficiency of access to remote database method based on LabView, presents the integrated application strategy of the LabSQL toolkits and ADO. Combined with a virtual laboratory application development, based on LabSQL database access steps and virtual laboratory design process is given, and has great practical value.
Key words: virtual instruments; LabVIEW; remotedatabase; LabSQL; ADO
0 引言
虛擬儀器(VI-Virtual Instrument)是指通過應用程序將通用計算機與功能化硬件結合起來的計算機系統(tǒng),用戶可通過友好的圖形界面來操作這臺計算機,就像在操作自己定義、自己設計的一臺單個儀器一樣。
LabVIEW是當前虛擬儀器的主要開發(fā)工具之一,是由NI(National Instruments)公司開發(fā)的一種高效的圖形化編程工具, 是一個集開發(fā)、調試和運行于一體的數(shù)據(jù)采集和儀器控制軟件,目前通用的最新版本為LabVIEW2011。LabVIEW集成了與滿足GPIB、VXI、RS-232和RS-485協(xié)議的硬件及數(shù)據(jù)采集卡通訊的全部功能,還內置了便于應用TCP/IP、ActiveX等軟件標準的庫函數(shù),是一個功能強大且靈活的軟件。通過LabVIEW可以方便地建立適應個性化需求的虛擬測量和控制儀器,其圖形化的界面使得編程及使用過程形象而生動。目前,LabVIEW在數(shù)據(jù)采集及分析、儀器和控制、測試測量及過程監(jiān)控和控制等領域中的應用越來越廣泛。其中,數(shù)據(jù)的存儲、分析所涉及到的數(shù)據(jù)庫讀寫操作是一個重要環(huán)節(jié),現(xiàn)有的LabVIEW版本中還沒有提供與通用數(shù)據(jù)庫直接接口的方法[1]。這一問題一般會考慮采用以下幾種方法解決。
⑴ 采用其他編程語言編寫動態(tài)鏈接庫DLL訪問數(shù)據(jù)庫,并在LabVIEW中調用此DLL與數(shù)據(jù)庫連接。
⑵ 利用中間文件存取數(shù)據(jù),先將數(shù)據(jù)存入文件中,在一定的時刻或者需要時再將數(shù)據(jù)導入到數(shù)據(jù)庫中。這種方法實現(xiàn)比較簡單,但是需要單獨的軟件對數(shù)據(jù)文件導入導出。
⑶ LabVIEW中包含了大量的ActiveX對象,包括ADO(ActiveX Data Objects)接口的各種對象,可以利用ADO的接口進行數(shù)據(jù)庫的訪問。
⑷ 使用NI公司的SQL ToolKit for LabVIEW附加工具包與數(shù)據(jù)庫連接[2]。
這些方法中,第一種方法的工作量較大,第二種方法不能對數(shù)據(jù)進行實時的存取,第三種方法通用性和靈活性欠佳,而第四種方法需單獨購買該工具包,價格昂貴,成本過高。針對上述四種方法的不足,本文采用Premise Development公司的Chris Roth和Jeffrey Travis開發(fā)的免費LabVIEW數(shù)據(jù)庫支持工具VI—LabSQL來完善整個系統(tǒng)的數(shù)據(jù)庫功能,將復雜的底層ADO及SQL操作封裝成一系列的LabSQL VIs。LabSQL的優(yōu)點是易于理解,使用簡單,只需進行簡單的編程,就可以在LabVIEW中實現(xiàn)數(shù)據(jù)庫訪問。利用LabSQL幾乎可以訪問任何類型的數(shù)據(jù)庫且易于實現(xiàn)。
1 基于LabSQL的遠程數(shù)據(jù)庫訪問的步驟
一般而言,對遠程數(shù)據(jù)庫的操作有以下幾步。
⑴ 在服務器上建立網(wǎng)絡數(shù)據(jù)庫
選擇一種客戶/服務器體系結構的數(shù)據(jù)庫軟件,分別安裝在客戶端和服務器端。
⑵ 連接數(shù)據(jù)庫
應用程序是通過“連接”訪問數(shù)據(jù)源的,連接是交換數(shù)據(jù)所必需的環(huán)境。所以,創(chuàng)建“Connection”對象是所有數(shù)據(jù)庫操作的必需的一個步驟。
⑶ 執(zhí)行SQL指令
通過已經(jīng)建立的連接發(fā)出的SQL指令可以用某種方式來操作數(shù)據(jù)源。Microsoft ADO的Command對象,Connection對象以及Recordset對象都提供有執(zhí)行SQL指令的方法,可依據(jù)具體情況具體選擇對象。
⑷ 處理結果
檢索到的數(shù)據(jù)通過各種需要的算法加以處理。
⑸ 關閉連接
執(zhí)行完任務后,必須切斷與數(shù)據(jù)庫資源的連接,釋放任何屬于連接的資源,關閉任何從屬對象。否則將導致服務器資源浪費并影響服務器性能[3]。
Oracle?是以高級結構化查詢語言(SQL)為基礎的大型關系數(shù)據(jù)庫,是目前最流行的客戶/服務器(CLIENT/SERVER)體系結構的數(shù)據(jù)庫之一,也是目前技術比較領先、應用非常廣泛的一個商業(yè)數(shù)據(jù)庫產(chǎn)品。?所以我們選擇Oracle來搭建所需的網(wǎng)絡數(shù)據(jù)庫。
在運行LabVIEW程序的應用程序服務器上,設已經(jīng)安裝了Oracle客戶端,已連接到數(shù)據(jù)庫服務器上的遠程數(shù)據(jù)庫,通過Windows控制面板中管理工具里面的“數(shù)據(jù)源 (ODBC)”來創(chuàng)建ODBC數(shù)據(jù)源,設置系統(tǒng)DSN(數(shù)據(jù)源名稱)為loginoracle,驅動程序選擇Microsoft ODBC for Oracle,設置成功后客戶端就可以像訪問本地數(shù)據(jù)庫一樣訪問遠程數(shù)據(jù)庫了[4]。
2 基于LabSQL虛擬實驗室的應用開發(fā)
我們建立了一個校園網(wǎng)虛擬實驗室,將過程控制實驗室的液位過程控制實驗搬到了網(wǎng)站上,學習者可以遠程監(jiān)視并控制其運行狀態(tài),進行不受時空限制的個性化學習。但是實驗裝置并不是隨時打開的,我們需要將它的歷史狀態(tài)保存在數(shù)據(jù)庫中,以便在未打開裝置的情況下通過歷史數(shù)據(jù)顯示數(shù)據(jù)采集曲線,因此在數(shù)據(jù)庫服務器上建了一個Waveform表,將液位高度數(shù)據(jù)和控制器輸出電壓數(shù)據(jù)保存在其中,就可對這個表進行相關的操作。
2.1 本實驗裝置的工作原理
過程控制實驗室引進英國FeedBack公司開發(fā)的PROCON(PROcess CONtroller)38系列綜合實驗裝置,它是處理過程控制問題一個完整的組合裝置,包括相關的硬件過程控制裝置,監(jiān)視器和接口設備,一個工業(yè)標準控制器,并且附帶指導手冊和軟件。我們用LabVIEW2011軟件取代PROCON 38系列系統(tǒng)的工業(yè)標準控制器,搭建自己的控制平臺。選用的芯片和設備分別是:一塊I/V轉換芯片RCV420,一塊V/I轉換芯片XTR110,一塊NI公司出產(chǎn)的PCI-6014E系列數(shù)據(jù)采集卡和一臺微機。
PROCON38系列系統(tǒng)水箱的浮子式液位計采集到的0-5V電壓液位信號被過程接口(PI)轉換為一個4-20毫安的電流信號,通過一個I/V轉換電路將其還原成0-5V的電壓信號,用NI公司的PCI-6014數(shù)據(jù)采集卡采集電壓信號,經(jīng)控制算法的處理后再通過該數(shù)據(jù)采集卡輸出0-5V的電壓控制信號,接著通過一個V/I轉換電路轉換成4-20毫安的電流信號,控制伺服閥的開閉、4毫安時閥門全閉、20毫安時閥門全開,通過控制進水量來控制水箱中的液位。文中采用PID控制實現(xiàn)控制算法,直接調用仿真工具箱里的PID工具包[5]。程序框圖如圖1所示。
圖1液位過程控制實驗程序框圖
2.2 虛擬實驗室的的開發(fā)過程
訪問數(shù)據(jù)庫信息的第一步是與數(shù)據(jù)庫建立連接,LabSQL中的Connection VIs就能夠實現(xiàn)這個目的.首先利用ADO Connection Create.vi創(chuàng)建一個Connection對象,然后利用ADO Connection Open.vi建立與數(shù)據(jù)庫的連接。但是ADO Connection Open.vi只能設置DSN,而網(wǎng)絡數(shù)據(jù)庫為了安全起見都設置有用戶名和密碼,所以要打開遠程數(shù)據(jù)庫不能使用LabSQL中的ADO Connection Open.vi,而要用ADO接口對象進行再開發(fā)。具體過程如下:
從控制模板的Application Control子模板中調用Invoke Node結點,在點右鍵彈出的菜單中選擇Select Class,再在順次閃出的菜單里選擇ActiveX,最后選定其中的ADODB._Connection,然后選擇其方法(Method)為Open,最終在程序框圖中顯示的圖標如圖2所示。
圖2打開數(shù)據(jù)庫連接的Invoke Node結點
這樣,通過在ConnectionString中設置DSN,在UserID中設置用戶名,在Password中設置密碼,就可對一個遠程數(shù)據(jù)庫進行象本地數(shù)據(jù)庫一樣的數(shù)據(jù)操作了。
接下來是執(zhí)行SQL指令LabSQL中的Connection VIs里有一個ADO Connection Execute.vi,它可以執(zhí)行SQL命令,檢索數(shù)據(jù)庫以及對數(shù)據(jù)庫進行添加、更新、刪除操作,它的CommandText端子傳送的就是命令文本,通常是SQL語句,它返回的是一個記錄集(Recorderset)對象。
如果需要處理相關數(shù)據(jù),可利用SQL Fetch Data(GetString).vi獲得查詢結果,處理后送到前面板中的示波器或者其它儀器或表格加以顯示。本文只介紹數(shù)據(jù)的存儲過程,所以沒有涉及此步驟[6]。
最后,用ADO Connection Close.vi關閉與數(shù)據(jù)庫之間的連接。
在前面板中的ConnectionString中輸入“DSN=loginoracle”,在UserID中輸入遠程數(shù)據(jù)庫的登錄用戶名,在Password中輸入密碼,并設為默認值,然后將它們在前面板上隱藏。設置了各個參數(shù)后就可點擊程序“啟動”按鈕。液位過程控制實驗程序的運行結果如圖3所示。
圖3液位過程控制實驗程序運行結果
在程序運行的時候,參數(shù)設置和其他無關的按鈕都在前面板隱藏起來,停止采樣后則將示波器隱藏,然后再將參數(shù)設置及復位等其他按鈕顯示出來。前面板顯示如圖3.3之結果的同時,在后臺的程序中當前的兩組波形數(shù)據(jù)已經(jīng)由當前本地的應用程序服務器傳遞給了數(shù)據(jù)庫服務器。
在裝置未打開時,我們可通過訪問Waveform數(shù)據(jù)表,將波形的數(shù)據(jù)取出,顯示其歷史工作狀態(tài),這樣無論實驗裝置是否打開,學習者都能看到如圖3所示的裝置運行時的波形圖。
3 結束語
在LabVIEW環(huán)境下,利用LabSQL工具包實現(xiàn)數(shù)據(jù)庫的管理,在很大程度上減輕了編程的工作量,這是一種很有效的遠程數(shù)據(jù)庫訪問的方法。再結合LabVIEW中的ADO接口對象,就能夠實現(xiàn)對Oracle網(wǎng)絡數(shù)據(jù)庫的各種操作。實踐證明,該實驗室不僅實現(xiàn)了所需功能,而且在速度、穩(wěn)定和效率上均具有良好的性能。
參考文獻:
[1] 楊樂平,李海濤,趙勇等.LabVIEW高級程序設計[M].北京清華大學出
版社,2003.
[2] 李建文,劉篤喜,朱名銓.基于ADO技術的LabVIEW訪問數(shù)據(jù)庫的方
法[J].自動化儀表,2003.24(9):15~17
[3] Chen X Z,Chen C,Qi H. Design of a kind of single neuron PID
adaptive controller based on expert[C]/ / Proceedings of the 7th International Conference on Electronic Measurement & Instruments. Beijing: International Academic Publishers,2005:216~220
[4] 齊虹,周文濱,陳沖等.利用LabVIEW實現(xiàn)的虛擬網(wǎng)絡實驗室及其虛
擬實驗[J].福州大學學報(自然科學版),2010.38(2):237~250
[5] 楊靜. 基于LabVIEW的電工電子網(wǎng)絡虛擬實驗室研究與開發(fā)[J].實
驗室研究與探索,2011.30(2):74~77
[6] 江務學.基于LabVIEW 的校園網(wǎng)虛擬實驗室的開發(fā)[J].浙江萬里學
院學報,2005.18(4):51~54