劉 志 李園喜 季旭東
(91550部隊3分隊 遼寧 大連 116023)
通信網(wǎng)絡(luò)中虛擬儀器系統(tǒng)的應(yīng)用研究
劉 志 李園喜 季旭東
(91550部隊3分隊 遼寧 大連 116023)
根據(jù)遠程分布式測試要求的需要,基于網(wǎng)絡(luò)通信應(yīng)用,研究將虛擬儀器系統(tǒng)中UDP協(xié)議的靈活性與TCP協(xié)議的可靠性結(jié)合,開發(fā)適應(yīng)復(fù)雜惡劣網(wǎng)絡(luò)環(huán)境的實用網(wǎng)絡(luò)通信技術(shù)。
網(wǎng)絡(luò)通信;UDP協(xié)議;TCP協(xié)議;虛擬系統(tǒng)
近年來隨著靶場通信網(wǎng)絡(luò)的日益完善,基于光纖、衛(wèi)通和微波的各種局域網(wǎng)、廣域網(wǎng)得到了頻繁的應(yīng)用,與此相應(yīng)廣域信息共享的需求日益增長,遠程分布式測試的要求越來越多的被提出,例如設(shè)備故障的遠程診斷,各類過程的遠程監(jiān)控等。而隨著計算機網(wǎng)絡(luò)技術(shù)和通信技術(shù)的快速發(fā)展,虛擬儀器系統(tǒng)正以其低廉的成本、靈活的組合方式和強大的功能在各個領(lǐng)域得到廣泛應(yīng)用。本文對以LabVIEW為代表的虛擬儀器平臺在網(wǎng)絡(luò)通信中的應(yīng)用進行了研究,力圖找出適應(yīng)復(fù)雜惡劣的網(wǎng)絡(luò)環(huán)境和各種測試系統(tǒng)的個性化要求的高質(zhì)量遠程測試系統(tǒng)。
2.1 高效的網(wǎng)絡(luò)通信技術(shù)
LabVIEW作為目前最流行的虛擬儀器開發(fā)平臺,為構(gòu)建遠程測試系統(tǒng)提供了多種強大的功能和方便靈活的工具。其中DataSocket是一種建立在TCP/IP協(xié)議的基礎(chǔ)之上,但是專門為滿足測試與自動化的需求而設(shè)計的網(wǎng)絡(luò)通信技術(shù)。使用DataSocket技術(shù)傳輸數(shù)據(jù)不用進行復(fù)雜的底層TCP編程,就可以通過計算機網(wǎng)絡(luò)以自己特有編碼格式向多個遠程的終端同時廣播現(xiàn)場的各種類型的測量數(shù)據(jù)。這樣極大的提高了測試系統(tǒng)開發(fā)效率。
DataSocket由DataSocket API和DataSocket Server兩部分組成。使用DataSocket傳輸數(shù)據(jù)的過程如圖1所示。
圖1 DataSocket傳輸數(shù)據(jù)過程
數(shù)據(jù)發(fā)布程序和數(shù)據(jù)訂戶程序都是DataSocket Server的客戶,DataSocket Server是一個小巧的獨立運行的程序,傳輸數(shù)據(jù)的程序中使用DataSocket API與DataSocket Server通訊。DataSocket API提供了一個用于多樣編程語言、多種數(shù)據(jù)類型通訊的單一的接口,在LabVIEW中DataSocket API的形式是一組函數(shù)。發(fā)布數(shù)據(jù)的程序用DataSocket Write函數(shù)向URL指定的位置寫數(shù)據(jù),接收數(shù)據(jù)的程序用DataSocket Read函數(shù)從URL指定的位置讀取數(shù)據(jù)。
使用DataSocket協(xié)議傳輸數(shù)據(jù),在默認情況下DataSocket Server只向數(shù)據(jù)訂戶發(fā)布最新的數(shù)據(jù),當發(fā)布數(shù)據(jù)的客戶比接收數(shù)據(jù)的客戶運行快,則將有一些數(shù)據(jù)還沒有讀取就被覆蓋掉。如果每一個數(shù)據(jù)對于客戶都很重要的話,就應(yīng)該使用數(shù)據(jù)緩沖區(qū)的方法傳輸數(shù)據(jù)。使用數(shù)據(jù)緩沖區(qū)讀數(shù)據(jù)的客戶端程序圖形代碼如圖2所示。
圖2 DataSocket使用緩沖區(qū)讀數(shù)據(jù)程序圖形代碼
程序中DataSocket Open函數(shù)根據(jù)DataSocket Select URL函數(shù)輸入的URL建立一個DataSocket連接,并將連接參考號connection ID輸出,這個連接將一直保持到使用DataSocket Close函數(shù)將連接關(guān)閉或程序停止。DataSocket Open函數(shù)的模式參數(shù)mode選為BufferedRead。連接參考號到屬性節(jié)點時,屬性節(jié)點的類名稱變?yōu)镈ataSocket。程序中兩個屬性節(jié)點分別用于緩沖區(qū)設(shè)置和緩沖區(qū)診斷。DataSocket Read函數(shù)根據(jù)connection ID指定的網(wǎng)絡(luò)連接接收數(shù)據(jù)。
2.2 UDP網(wǎng)絡(luò)通信協(xié)議的應(yīng)用
盡管LabVIEW提供了高效、易用的DataSocket網(wǎng)絡(luò)技術(shù),但是在需要對網(wǎng)絡(luò)功能進行更多的控制和跨越操作系統(tǒng)平臺傳輸數(shù)據(jù)時它也有一定的局限性。例如接收遠程終端設(shè)備的數(shù)據(jù)、網(wǎng)絡(luò)經(jīng)常發(fā)生擁塞需要及時自動恢復(fù)連接、默認的3015端口被其它通信程序占用必須更改端口等情況下就不便使用DataSocket。因此LabVIEW也支持許多底層的網(wǎng)絡(luò)協(xié)議,例如TCP、IP、UDP等。
UDP具有更高的性能,但是不能保證數(shù)據(jù)可靠傳輸。在可靠性不是非常重要的應(yīng)用,例如傳輸數(shù)據(jù)頻率很快,少量數(shù)據(jù)丟失無關(guān)緊要時,使用UDP協(xié)議。UDP讀回的每個數(shù)據(jù)包包含數(shù)據(jù)源地址和端口,因此一次讀到的數(shù)據(jù)不會來自兩個不同的寫數(shù)據(jù)操作。
圖4 使用UDP協(xié)議傳輸數(shù)據(jù)的程序圖形代碼
圖4的程序是使用UDP協(xié)議傳送數(shù)據(jù)的例子,圖中(a)是發(fā)送數(shù)據(jù)的程序圖形代碼,(b)是接收數(shù)據(jù)的程序圖形代碼。
UDP Open函數(shù)為指定的端口打開一個UDP套接字;UDP Write函數(shù)向遠程UDP套接字寫數(shù)據(jù);UDP Read函數(shù)從UDP套接字讀取一個數(shù)據(jù)包;UDP Close函數(shù)關(guān)閉UDP套接字。
2.3 TCP/IP網(wǎng)絡(luò)通信協(xié)議的應(yīng)用
與UDP協(xié)議不同,TCP是一種可靠的基于連接的服務(wù)。圖3的程序是使用TCP通信協(xié)議傳輸數(shù)據(jù)的例子,圖中(a)是發(fā)送數(shù)據(jù)的程序圖形代碼,(b)是接收數(shù)據(jù)的程序圖形代碼。
圖3 使用TCP協(xié)議傳輸數(shù)據(jù)的程序圖形代碼
TCP Listen函數(shù)創(chuàng)建一個TCP收聽者,等待指定端口的TCP網(wǎng)絡(luò)連接,用connection ID參數(shù)輸出網(wǎng)絡(luò)連接參考號。后面的函數(shù)用connection ID的值執(zhí)行特定連接的任務(wù)。Sine Pattern函數(shù)產(chǎn)生一個周期的正弦波數(shù)據(jù)。Type Cast函數(shù)將x參數(shù)連接的數(shù)據(jù)轉(zhuǎn)換為type參數(shù)的類型,type參數(shù)的默認值是字符串。String Length函數(shù)返回字符串長度,首先寫入TCP 網(wǎng)絡(luò)連接,以便確定網(wǎng)絡(luò)傳輸?shù)淖止?jié)數(shù)。TCP Write函數(shù)按照connection ID將data in參數(shù)連接的數(shù)據(jù)寫入TCP 網(wǎng)絡(luò)連接。TCP Write函數(shù)在這個程序中第二次被調(diào)用時將實際數(shù)據(jù)寫入TCP連接。TCP Close 函數(shù)在程序結(jié)束時關(guān)閉connection ID指向的連接。
Open Connection函數(shù)按照連接的IP地址和端口號參數(shù)建立一個TCP連接,連接成功后返回連接標識connection ID。TCP Read函數(shù)按照byte to read參數(shù)指定的字節(jié)數(shù)和connection ID 參數(shù)給定的TCP連接接收數(shù)據(jù)。TCP Read函數(shù)讀取的數(shù)據(jù)經(jīng)過Type Cast函數(shù)轉(zhuǎn)換為整型數(shù),作為第二次調(diào)用TCP Read函數(shù)時的byte to read參數(shù),讀出全部數(shù)據(jù)。
工程實際中測試系統(tǒng)的數(shù)據(jù)傳輸經(jīng)常要跨越集線器、交換機、路由器等各種網(wǎng)絡(luò)設(shè)備,經(jīng)過電纜、光纜、微波甚至衛(wèi)星等傳輸介質(zhì),被各種網(wǎng)絡(luò)管理軟件轉(zhuǎn)發(fā)、過濾、檢驗、分配,這個過程及其復(fù)雜;而且在網(wǎng)絡(luò)上同時承載著管理系統(tǒng)、各種信息查詢、甚至某些情況下的個人娛樂等大量數(shù)據(jù)傳輸。這樣給遠程測試應(yīng)用程序的可靠性、頑強性和通信速度帶來極大的考驗。為了適應(yīng)復(fù)雜的現(xiàn)場的需求,必須整合TCP協(xié)議和UDP協(xié)議的技術(shù)優(yōu)勢,開發(fā)實用的通信程序。
圖5(a)所示的服務(wù)器程序啟動后,在網(wǎng)絡(luò)上監(jiān)聽TCP連接的請求。連接建立后,即應(yīng)用TCP協(xié)議向客戶端發(fā)送數(shù)據(jù)。同時打開一個UDP套接字,接收來自客戶端的確認信息ack。一旦網(wǎng)絡(luò)出現(xiàn)故障,收不到確認信息,立即斷開TCP連接,并重新進入TCP連接監(jiān)聽狀態(tài)。
圖5(b)所示的客戶端程序啟動后,首先建立TCP連接,然后應(yīng)用TCP協(xié)議接收數(shù)據(jù)。如果正常接收數(shù)據(jù),則每次向服務(wù)器端發(fā)送一個確認信息;如果收不到數(shù)據(jù)就斷開原來TCP連接,重新建立一個TCP連接。
這種雙向通信的服務(wù)器/客戶端模式,不同于TCP協(xié)議本身的數(shù)據(jù)傳輸確認機制。TCP協(xié)議在傳輸數(shù)據(jù)時,一個數(shù)據(jù)包發(fā)送不到目的地會反復(fù)地重發(fā)。這在正常情況下避免了數(shù)據(jù)的丟失;但是在網(wǎng)絡(luò)出現(xiàn)異常時程序就會陷入停滯;并且在網(wǎng)絡(luò)恢復(fù)正常后程序不具備“自愈”的能力。
采用TCP協(xié)議與UDP協(xié)議混合編程,在網(wǎng)絡(luò)正常時利用TCP協(xié)議的可靠性,保證數(shù)據(jù)正確傳輸;在網(wǎng)絡(luò)異常時發(fā)揮UDP協(xié)議的靈活性,保證通信及時恢復(fù)。這種通信方式在跨越多網(wǎng)段的企業(yè)局域網(wǎng)和CDMA(Code Division Multiple Access碼分多址)無線移動公網(wǎng)上經(jīng)過長期應(yīng)用,保證了數(shù)據(jù)順暢傳輸,測試系統(tǒng)正常運行。
圖5 TCP和UDP協(xié)議聯(lián)合應(yīng)用的通信程序圖形代碼
采用虛擬儀器開發(fā)遠程測控系統(tǒng),需要根據(jù)根據(jù)不同的測試對象,兼顧數(shù)據(jù)傳輸可靠性的要求和網(wǎng)絡(luò)的實際狀況,靈活選擇網(wǎng)絡(luò)通信協(xié)議和數(shù)據(jù)傳輸方案。在良好的網(wǎng)絡(luò)環(huán)境下DataSocket是一種高效率、易于應(yīng)用的網(wǎng)絡(luò)通信技術(shù);某些特定的情況需要采用TCP協(xié)議或UDP協(xié)議編程;而當網(wǎng)絡(luò)環(huán)境復(fù)雜惡劣時,本文提出的用TCP協(xié)議傳輸數(shù)據(jù),用UDP協(xié)議進行通信保障的方法,是滿足工程實踐嚴格要求的優(yōu)化的網(wǎng)絡(luò)通信技術(shù)。
[1]戴爾晗,孫海安。基于LabVIEW的IP網(wǎng)絡(luò)管理[J].國外電子測量技術(shù),2005年第24卷第12期.
[2] Using LabVIEW with TCP/IP and UDP, USA National Instruments corporation, March 2004.
[3]馬時來.計算機網(wǎng)絡(luò)實用技術(shù)教程[M].北京:清華大學出版社 2003年.
[4] 馮冬芹,廖智軍,金建祥等.基于以太網(wǎng)的工業(yè)控制網(wǎng)絡(luò)實時通信模型研究[J].儀器儀表學報,2005年第26卷第9期
[5]喬毅,張濤,唐明新等.由嵌入式網(wǎng)關(guān)實現(xiàn)控制網(wǎng)絡(luò)與信息網(wǎng)絡(luò)的集成[J].儀器儀表學報,2005年第26卷第12期
[6] 李亞軍 計算機測控系統(tǒng)設(shè)計與應(yīng)用 北京:機械工業(yè)出版社,2004年
Research in the Application of Virtual Instrument System for Network
LIU Zhi, LI Yuan-xi, JI Xu-dong. (91550 Troops 3Unit, Liaoning Province, Dalian 116023, China)
According to the needs of remote distributed testing requirements, based on network communication application, the research will be of the UDP protocol in virtual instrument system flexibility and the reliability of TCP protocol, developed to adapt to the complex of the network environment, the network communication technique.
Network communication; UDP protocol; TCP protocol; The virtual system
TN914.3
A
1009-5624-(2016)02-0026-03