LabVIEW環(huán)境下遠程資源共享及Dat Socket實現(xiàn)
摘要:簡要介紹了LabVIEW中的TCP、RDA、瀏覽器和DataSocket四種網(wǎng)絡(luò)通信方式及其原理,重點分析了利用DataSocket技術(shù)實現(xiàn)遠程資源共享的兩種方法,在對這兩種方法進行綜合的基礎(chǔ)上,提出了一種多客戶端同時遠程共享資源的設(shè)計方案。實驗結(jié)果證明,該方案能在一定程度上滿足實際應(yīng)用需求。
關(guān)鍵詞:LabVIEW;遠程共享;DataSocket
0 引言
與傳統(tǒng)儀器相比,虛擬儀器的一個顯著特點就是儀器功能由用戶基于計算機通過軟件進行定義。而隨著計算機互聯(lián)網(wǎng)的普及,虛擬儀器的網(wǎng)絡(luò)化也應(yīng)運而生。將虛擬儀器技術(shù)與網(wǎng)絡(luò)技術(shù)相結(jié)合,構(gòu)成遠程虛擬測控系統(tǒng),是當(dāng)前虛擬儀器一個非常重要的發(fā)展方向。
在虛擬儀器軟件平臺LabVIEW中,提供了TCP、RDA、瀏覽器和DataSocket四種網(wǎng)絡(luò)通信方式,根據(jù)實際的應(yīng)用需求,基于這些基本方式設(shè)計具體的網(wǎng)絡(luò)互聯(lián)方案,就可以達到遠程測試、控制和資源共享的目的。
1 LabVIEW中的幾種常用通信方式
LabVIEW中幾種常用通信方式有: (1)TCP方式,TCP/IP協(xié)議在LabVIEW的應(yīng)用主要是傳輸層,包含了UDP和TCP兩個協(xié)議,兩個協(xié)議都有相應(yīng)的功能函數(shù)。由于UDP協(xié)議可靠性比較差,因此人們在更多場合使用TCP。利用TCP協(xié)議我們可以采用服務(wù)器/客戶機模式進行通信。在用TCP節(jié)點進行通信時,服務(wù)器程序和客戶機程序都要指定相同的網(wǎng)絡(luò)通信端口。 (2)RDA方式,NI公司提供了遠程設(shè)備訪問服務(wù)器RDA(remote device access)Server,這樣可以實現(xiàn)對遠程數(shù)據(jù)采集卡的訪問。用戶可以用MAX(measure&automation explorer)來進行遠程采集卡的設(shè)置。設(shè)置完成后,異地的數(shù)據(jù)采集卡就成了本地機的虛擬數(shù)據(jù)采集卡,并且被分配有相應(yīng)的設(shè)備號。(3)瀏覽器方式,瀏覽器方式也是一種基于TCP協(xié)議的通訊方式,與直接使用底層的TCP函數(shù)相比,用戶使用瀏覽器方式時不需要編程,只需設(shè)定網(wǎng)絡(luò)通信參數(shù),就可以直觀并且方便地使用瀏覽器進行遠程監(jiān)視。
以上三種方式適合單臺客戶機訪問遠程帶有采集卡的服務(wù)器,但是當(dāng)有多臺客戶機訪問同一個采集卡時,必須在服務(wù)器端增加任務(wù)管理程序或者通過申請控制權(quán)等方式來對多客戶的請求進行處理。最重要的,如果多客戶機要從同一個遠程采集卡在同一時間獲取實時數(shù)據(jù),這三種方式是無法實現(xiàn)的。下面介紹第四種方式: (4)DataSocket技術(shù),DataSocket(DS)包括了DS server Manager、 DS Server和DS函數(shù)庫等工具,以及數(shù)據(jù)傳輸協(xié)議DSTP(DataSocket TraFISfer Protoco1)、統(tǒng)一資源定位符URL(uniform Resource Locator)和文件格式等技術(shù)規(guī)范。利用這些工具,可大大簡化網(wǎng)絡(luò)中計算機之間數(shù)據(jù)交換的編程工作。在LabVIEW中,所有的控件都增加了一個叫做DataSocket Connection URL的特殊屬性,利用這個屬性可以實現(xiàn)不同計算機上相對應(yīng)的兩個或者多個同類型控件之間的DataSocket通信。如果為不同計算機中的兩個類型相同的LabVIEW控件設(shè)置相同的DataSocket Connection URL地址,那么,這兩個控件就由DataSocket連接起來,這兩個控件的值就會完全保持同步。其中,一個控件發(fā)生了變化,另一個控件也會發(fā)生同樣的變化。
2 利用DataSocket技術(shù)實現(xiàn)資源遠程共享
2.1 利用DS技術(shù)實現(xiàn)采集卡共享的兩種方法
數(shù)據(jù)采集卡是數(shù)據(jù)采集系統(tǒng)中重要的硬件之一,在有些場合,例如教學(xué)實驗室,如果每臺計算機都配備一塊采集卡,則代價較高,因此可以考慮借助DS技術(shù)實現(xiàn)數(shù)據(jù)采集卡的共享,即多臺計算機共享一臺計算機(服務(wù)器)上的采集卡。硬件接線原理圖如圖l所示,用戶不必在每臺客戶機上都配備數(shù)據(jù)采集卡,只需在服務(wù)器上配置采集卡即可,這樣可以充分利用資源,節(jié)省費用。數(shù)據(jù)采集卡共享程序可以用于連接位于一個局域網(wǎng)內(nèi)的計算機組。
利用DS技術(shù)實現(xiàn)數(shù)據(jù)采集卡共享的基本思想是,利用DS Server進行客戶機和服務(wù)器之間的信息交換和傳遞,將服務(wù)器上采集卡采集到的數(shù)據(jù)傳給客戶機。考慮到不同的用戶對共享要求可能不同,可以嘗試兩種方法。
1)方法l是考慮只在服務(wù)器上配置數(shù)據(jù)采集程序。首先設(shè)計一個輸入輸出數(shù)據(jù)格式的規(guī)范,用戶在客戶端按約定的格式填寫表格,發(fā)給服務(wù)器,服務(wù)器完成采集任務(wù)后,將采到的數(shù)據(jù)再按約定的格式返回客戶端。在服務(wù)器端設(shè)計一個管理程序,對客戶機的請求進行管理,然后按照順序由服務(wù)器執(zhí)行相應(yīng)的數(shù)據(jù)采集。每次采集完成后,將數(shù)據(jù)發(fā)送給DS Server,客戶機可以從DSServer中讀取采集到的數(shù)據(jù)。
此方法的優(yōu)點是客戶機不調(diào)用任何有關(guān)數(shù)據(jù)采集的程序,因而客戶機上不必安裝有關(guān)采集卡設(shè)置的程序。其局限性在于,不同的采集程序需要的采集參數(shù)不同,而且采集數(shù)據(jù)后得到的數(shù)據(jù)格式有可能不同,這就需要對不同的采集函數(shù)設(shè)計相應(yīng)的客戶機程序。這時客戶機程序和服務(wù)器程序的設(shè)計將會過于復(fù)雜。
2)方法2是在NI公司提供的RDA的基礎(chǔ)上,想辦法在服務(wù)器上增加一個任務(wù)排隊管理程序,使虛擬采集卡可以被多個用戶共享,該方案比較直接,在客戶端不需要開發(fā)過多的新程序,但有一定難度。用戶可以利用Measurement Artomation Explorer 來進行遠程采集卡的設(shè)置,設(shè)置完成后,在本地機上就會出現(xiàn)一塊虛擬的數(shù)據(jù)采集卡,并且分配有相應(yīng)的設(shè)備號。為了避免多個客戶機同時訪問同一個遠程采集卡時發(fā)生沖突,導(dǎo)致程序出錯,必須考慮在服務(wù)器端增加任務(wù)管理程序,以對客戶機的請求進行管理,這樣就可避免多個客戶機同時訪問一個遠程采集卡時發(fā)生的沖突。
此方法由于使用了RDA Server,與方法1相比具有更大的實用性,用戶只需要在原來設(shè)計的程序外面添加建立連接或者結(jié)束連接的子程序,就可以把在本機運行的采集程序改為使用遠程采集卡時的程序。但是此方法也并不滿足多客戶同時從服務(wù)器獲取采集數(shù)據(jù)的需求,而且這種任務(wù)管理機制的程序設(shè)計也使用戶增加了額外編程負擔(dān)。
2.2 利用DS技術(shù)實現(xiàn)多客戶同時共享數(shù)據(jù)采集卡的設(shè)計方案
綜合以上兩種方法的優(yōu)點,保留虛擬采集卡等思想,同時針對其缺點,利用DataSocket提供的DataSocketConnection URL特殊屬性,結(jié)合實際需要分別在服務(wù)端和多個客戶端設(shè)計非常簡單的程序來滿足多客戶的同時
需求。其設(shè)計思想如下:在帶有采集卡的服務(wù)端進行數(shù)據(jù)采集,可以利用DataSocket函數(shù)把采集到的數(shù)據(jù)寫入到DataSocket服務(wù)器;在客戶端,同樣利用DataSocket函數(shù)從服務(wù)器實時的讀取采集卡采集到的數(shù)據(jù),而且這些數(shù)據(jù)可以根據(jù)具體需要直接作為客戶端不同程序的輸入數(shù)據(jù)。這樣,相同的數(shù)據(jù),客戶端可以設(shè)計不同的程序?qū)ζ溥M行處理,從而及時得到所需要的不同結(jié)果。這種方案的關(guān)鍵是使用DataSocket Connection URL特殊屬性把控件的值連接并同步起來。如前所述:如果為不同計算機中的兩個類型相同的 LabVIEW控件設(shè)置相同的DataSocket Connection URL地址,那么,這兩個控件就由DataSocket連接起來,這兩個控件的值就會完全保持同步。
下面以一個實驗為例進行簡要說明。實驗中,按既定的輸入值得到相對應(yīng)的一組實測數(shù)據(jù),要求把這兩組數(shù)據(jù)進行不同階次的曲線擬合,從而分析不同擬合階次對擬合效果的影響,最后對輸入數(shù)據(jù)和實測數(shù)據(jù)在實驗的基礎(chǔ)上進行合理的擬合分析。程序的前面板和流程圖如圖2所示。
在程序流程圖中,DSTP(DataSocket Transfer Protoco1)是數(shù)據(jù)套接傳輸協(xié)議,這是數(shù)據(jù)套接自身的協(xié)議,用戶必須為數(shù)據(jù)提供附在URL中的命名標簽和數(shù)據(jù)項定址。兩組數(shù)據(jù)經(jīng)過變體后通過函數(shù)寫入服務(wù)器;在客戶端,變體后的數(shù)據(jù)通過函數(shù)讀取出來可以根據(jù)用戶需要進行一系列處理,兩組數(shù)據(jù)在服務(wù)器和客戶機上是完全同步的。通過實驗可以證明:數(shù)據(jù)在服務(wù)器和多臺客戶機上都是同步的,客戶機之間也不存在競爭。
在程序運行的前面板圖中,可以看到服務(wù)器端對輸入數(shù)據(jù)和實測數(shù)據(jù)進行了分析處理;同時,客戶端對從服務(wù)器讀取的數(shù)據(jù)進行了不同處理,客戶端可以根據(jù)自己需要輸入不同的階次,由于階次不一樣,每個客戶端的擬合圖、擬合系數(shù)以及方差均不一樣。服務(wù)器和多個客戶端只共享一個數(shù)據(jù)采集卡,從數(shù)據(jù)采集卡得到相同的數(shù)據(jù)后,每個客戶端和服務(wù)器都可以同時對數(shù)據(jù)進行不同的處理,用戶還可以設(shè)計其他程序(比如直線擬合、數(shù)值插值等)對這組數(shù)據(jù)進行同步處理。
這種方案的優(yōu)點在于通過設(shè)置相同的DataSocket Connection URL地址把控件的值完全保持同步,從而為多客戶提供實時的數(shù)據(jù)。該方案的另一個優(yōu)點是服務(wù)器與客戶端的程序設(shè)計非常簡單,用戶可以把更多的精力集中在工程設(shè)計本身。此方案同時也為學(xué)校構(gòu)建經(jīng)濟型網(wǎng)絡(luò)虛擬實驗室提供了很好的思路。
本方案雖然解決了多客戶同時對數(shù)據(jù)需求的問題,但客戶端只能接受和處理數(shù)據(jù),如果想控制服務(wù)器,可能還得借助其它方式去實現(xiàn)(比如通過瀏覽器方式去申請控制權(quán)等),限于篇幅,本文沒有進一步展開敘述。
3 展望
本文只在虛擬儀器的網(wǎng)絡(luò)化方面進行了初步的嘗試,還沒有涉及到LabVIEW對數(shù)據(jù)庫的訪問和控制等方面。如果能進一步將虛擬儀器技術(shù)、網(wǎng)絡(luò)技術(shù)和數(shù)據(jù)庫技術(shù)結(jié)合起來,那么遠程虛擬測試系統(tǒng)將會有更廣闊的應(yīng)用前景。