許愛強(qiáng),李 佳,陳育良,王小華
(1.海軍航空工程學(xué)院 科研部,山東 煙臺 264001;2.海軍航空工程學(xué)院研究生管理大隊,山東 煙臺 264001;3.兵器科學(xué)與技術(shù)系,山東 煙臺 264001)
在信息化時代全面到來的今天,網(wǎng)絡(luò)已經(jīng)與人們的日常生活和工作密不可分,人們利用局域網(wǎng)和國際互聯(lián)網(wǎng)這種廉價高效的手段得到了大量有價值的信息和數(shù)據(jù)。對于測量自動化領(lǐng)域的研究人員來說,同樣如此。人們希望通過Web瀏覽器遠(yuǎn)程控制現(xiàn)場的測試儀器和對象,以提高交互性、方便性和實時性。這樣就可以在最短的時間內(nèi)調(diào)動故障診斷資源,對機(jī)器系統(tǒng)故障作出快速、及時、準(zhǔn)確的診斷,從而解決維修時間長、成本高的問題。文中主要對美國NI公司DataSocket技術(shù)在遠(yuǎn)程測試與診斷系統(tǒng)中的應(yīng)用進(jìn)行了研究[1]。
DataSocket是美國NI公司提供的一個網(wǎng)絡(luò)測控系統(tǒng)開發(fā)工具,借助它可以在不同的應(yīng)用程序和數(shù)據(jù)源之間共享數(shù)據(jù)。DataSocket可以訪問本地文件以及FTTP和FTP服務(wù)器上的數(shù)據(jù)。DataSocket為底層通信協(xié)議提供了統(tǒng)一的API函數(shù)。編程人員無需為不同的數(shù)據(jù)格式和通信協(xié)議編寫具體的程序代碼。
DataSocket使用一種增強(qiáng)數(shù)據(jù)類型來交換儀器類型的數(shù)據(jù),這種數(shù)據(jù)類型包括數(shù)據(jù)特性(如采樣率、操作者姓名、時間及采樣精度等)和實際測試數(shù)據(jù)。
DataSocket用類似于Web的統(tǒng)一資源定位器(URL)定位數(shù)據(jù)源,URL不同的前綴表示了不同的數(shù)據(jù)類型,F(xiàn)ILE表示本地文件,HTTP為超文本傳輸資源,F(xiàn)TP為文件傳輸協(xié)議,OPC表示訪問的資源是 OPC服務(wù)器,DSTP(DataSocket Transfer Protocol)則說明數(shù)據(jù)來自DataSocket服務(wù)器的實時數(shù)據(jù)[2]。圖1描述了DataSocket的體系結(jié)構(gòu)。
圖1 DataSocket體系結(jié)構(gòu)圖Fig.1 Structure diagram of DataSocket
由圖可以看出,對于采用DataSocket技術(shù)的遠(yuǎn)程測試系統(tǒng),其客戶端可以是用戶瀏覽器、LabWindows/CVI和LabVIEW平臺軟件。DataSocket技術(shù)有如下特點[2]:
1)良好的安全性 DataSocket技術(shù)提供了兩種方法保證數(shù)據(jù)傳輸?shù)陌踩裕篋ataSocket服務(wù)器管理程序允許用戶設(shè)定是否有權(quán)限在DataSocket服務(wù)器上讀、寫以及創(chuàng)建項目的計算機(jī)。此外,DataSocket技術(shù)使用TCP/IP 3015端口傳輸數(shù)據(jù),此端口已通過IANA(Internet地址分配機(jī)構(gòu))注冊為DSTP協(xié)議專用端口,因此用戶可以在防火墻外部的計算機(jī)上運行DataSocket服務(wù)器,同時可保證在防火墻內(nèi)部的計算機(jī)上安全地運行應(yīng)用程序。
2)傳輸速度快 DataSocket本身包含很小的頭文件,在10M的以太網(wǎng)內(nèi),其傳輸速度可達(dá)到320Kb/s。由于DataSocket建立在TCP/IP的頂層,當(dāng)通過Internet傳輸數(shù)據(jù)時,傳輸速度要受到網(wǎng)絡(luò)帶寬和網(wǎng)絡(luò)流量等因素的影響,其中網(wǎng)絡(luò)帶寬是最主要的因素,只要能提供一定的帶寬,就能滿足遠(yuǎn)程測控所要求的實時性。
3)用于動態(tài)數(shù)據(jù)傳輸 雖然有多種技術(shù)都支持在不同的應(yīng)用之間共享數(shù)據(jù),包括TCP/IP、DDE等,但這些工具中的大部分都不是用來傳輸動態(tài)數(shù)據(jù)的,而DataSocket技術(shù)是專門用來在測量與自動化應(yīng)用中傳輸或發(fā)布動態(tài)數(shù)據(jù)的。
DataSocket由DataSocket API和DataSocket Server兩部分組成。DataSocket API提供了多語言訪問、多種數(shù)據(jù)類型的單一接口[3]。DataSocket Server通過管理TCP/IP通信為用戶提供并簡化Internet通信。采用DataSocket Server發(fā)布數(shù)據(jù)需要3個部分:發(fā)布者、服務(wù)器和接收者。發(fā)布者和接收者都是客戶端,發(fā)布者用于發(fā)布數(shù)據(jù),接收者用于接收數(shù)據(jù)。一個DataSocket Server最多可以支持1 000個接收者和發(fā)布者。在DataSocket Server Manager中可以定義最大連接數(shù)、最大數(shù)據(jù)對象個數(shù),以及哪些計算機(jī)可以作為數(shù)據(jù)發(fā)布者,哪些計算機(jī)可以作為數(shù)據(jù)接收者,這也就規(guī)定了數(shù)據(jù)訪問的權(quán)限。DataSocket服務(wù)器和服務(wù)器管理器的界面如圖2和圖3所示。
圖2 DataSocket服務(wù)器圖Fig.2 DataSocket Server
DataSocket API包括 4 個基本 動作:open、read、write 、close,用它們可以從HTTP服務(wù)器、FTP服務(wù)器、OPC服務(wù)器、DST服務(wù)器和本地文件獲取數(shù)據(jù)[5]。
DataSocket支持 5 種訪問模式(AccessMode ):Read/Write、ReadAutoUpdate/WriteAutoUpdate、ReadWriteAutoUpdate,其中前兩個引發(fā)單次操作,此時用DS_Update函數(shù)可以再次引發(fā)底層的讀或者寫操作。它通過檢測數(shù)據(jù)是否更新,來控制讀寫操作是否執(zhí)行,從而實現(xiàn)同步效果。后三種模式是在數(shù)據(jù)發(fā)生變化時自動引發(fā)讀/寫操作。DataSocket以數(shù)據(jù)特性的形式同時傳輸多種參數(shù),它可以包括采樣率、操作者姓名、時間、數(shù)據(jù)量等信息。DataSocket通過統(tǒng)一資源定位URL來定位數(shù)據(jù)源和目標(biāo),它支持幾種URL前綴方式,以下是幾個符合DataSocket規(guī)定的URL的實例[4-6]:
圖3 DataSocket服務(wù)器管理器Fig.3 DataSocket Server Manager
1)“dstp://localhost/data1.txt”;
2)“dstp://202.116.30.13/data2”;
3)“http//www.natinst.com/DataSocket/chirp.dsd”;
4)“ftp//ftp.natinst.com/support/datasocket/tone.wave”。
這些實例中第1部分定義了傳輸協(xié)議,第2部分為主機(jī)名或主機(jī)的IP地址,第部分為存儲傳輸數(shù)據(jù)所在區(qū)域的名稱,該名稱由傳輸雙方自行定義。
現(xiàn)在以一個具體的應(yīng)用實例說明如何使用DataSocket來實現(xiàn)遠(yuǎn)程測控的方法。為了簡單起見,本例中只介紹多種參數(shù)的傳輸和實時接收并顯示。數(shù)據(jù)的寫入者是一個遠(yuǎn)程測試儀器,該儀器采集被測裝備的指標(biāo)參數(shù)并傳入上位機(jī),在上位機(jī)的虛擬儀器面板上進(jìn)行相關(guān)運算和顯示,如圖4所示。當(dāng)參數(shù)值發(fā)生變化時,會自動寫入到DataSocket服務(wù)器,而網(wǎng)絡(luò)上的其他測試人員(即與其連接的客戶端)可以同步看到這個值的變化,就如身在測試現(xiàn)場一樣。遠(yuǎn)程客戶端虛擬儀器面板及顯示情況如圖5所示。
圖4 參數(shù)的采集和發(fā)送Fig.4 Parameters of the acquisition and delivery
圖5 參數(shù)的接收和同步顯示Fig.5 Receive and display parameters simultaneously
從圖4和圖5上可以看出,該系統(tǒng)同時傳遞6組數(shù)據(jù)(2個波形、3個參數(shù)和1個人工輸入數(shù)據(jù))。其中一個以主值形式,其余都以屬性形式,通過DataSocket函數(shù)面板的write函數(shù)寫入DataSocket Server。URL為負(fù)責(zé)數(shù)據(jù)采集的計算機(jī)IP地址,在運行程序前必須先打開DataSocket Server,否則會報錯。實現(xiàn)此傳輸功能的部分程序代碼為:
位于客戶端的DataSocket數(shù)據(jù)讀取和數(shù)據(jù)寫入過程相似,只要把write函數(shù)換成read函數(shù),URL不變。不設(shè)置讀取的數(shù)據(jù)類型時,顯示控件為變體類型;設(shè)置數(shù)據(jù)類型時,讀取的數(shù)據(jù)類型必須與發(fā)送的數(shù)據(jù)類型一致,例如發(fā)送的數(shù)據(jù)類型為數(shù)組,則讀取的標(biāo)準(zhǔn)格式同樣為數(shù)組,如把讀取的格式定為字符串則將讀不到任何信息。但可以通過其他函數(shù)把讀取的數(shù)組轉(zhuǎn)換為字符串,以便后面的程序方便使用。實現(xiàn)該接收功能的部分程序代碼為:
實際應(yīng)用證明整個系統(tǒng)運作良好,多參數(shù)、多類型、實時數(shù)據(jù)傳輸并顯示等期望功能均已實現(xiàn)。數(shù)據(jù)準(zhǔn)確可靠,獲取方式靈活方便。系統(tǒng)使用DataSocket技術(shù),實現(xiàn)了診斷中心客戶端遠(yuǎn)程獲取測試端的各種類型參數(shù),并大大簡化了數(shù)據(jù)通信程序的開發(fā)。使用Lab/WindowsCVI界面化編程,整個系統(tǒng)的構(gòu)建極其方便和直觀。
[1]宋宇峰.LabWindowsCVI逐步深入開發(fā)實例[M].北京:機(jī)械工業(yè)出版社,2003.
[2]劉君華,白鵬,湯曉君.基于LabWindowsCVI的虛擬儀器設(shè)計[M].北京:電子工業(yè)出版社,2003.
[3]LIU Yan,DataSocket technology and its application in remote data transmission measurement[C]//The Eighth International Conference on Electronic Measurement and Instruments,2007,16(1):7-15.
[4]寇小明,楊高科,杜麗.DataSocket技術(shù)及其應(yīng)用[J].測控技術(shù),2002(12):15-19.
KOU Xiao-ming, YANG Gao-ke, DU Li.DataSocket technology and its applications[J].Measurement and Control Technology,2002(12):15-19.
[5]蔡繼軍,張彥斌,薛德慶,等.DataSocket在網(wǎng)絡(luò)化通信中的應(yīng)用[J].網(wǎng)絡(luò)信息技術(shù),2005(24):18-23.
CAIJi-jun, ZHANG Yan-bin, XUE De-qing, etal.DataSocketin network communicationsapplications[J].DataSocket in Network Communications Applications,2005(24):18-23.
[6]袁海華,劉仕華,董雪琴.基于Internet的FW遠(yuǎn)程故障診斷系統(tǒng)[J].玻璃鋼/復(fù)合材料,2002(1):26-28.
YUAN Hai-hua, LIU Shi-hua, DONG Xue-qin.Internetbased remote fault diagnosis system FW[J].FRP/Composite Materials,2002(1):26-28.