摘 要:闡述了在NI LabView平臺(tái)上結(jié)合TCP/IP協(xié)議進(jìn)行數(shù)據(jù)傳輸?shù)墓ぷ鞣椒?,并給出對(duì)工業(yè)現(xiàn)場數(shù)據(jù)采集傳送與監(jiān)控的仿真實(shí)例。
關(guān)鍵詞:TCP/IP;虛擬儀器;LabView
1、引言
在現(xiàn)代儀器系統(tǒng)中,計(jì)算機(jī)已經(jīng)與儀器結(jié)合得非常緊密,已成為整個(gè)系統(tǒng)的核心,許多傳統(tǒng)儀器正在逐漸被計(jì)算機(jī)部分、甚至全部取代。粗略地說這種結(jié)合有兩種方式:一種是將計(jì)算機(jī)裝入儀器;另一種方式是將儀器裝入計(jì)算機(jī),即以通用的計(jì)算機(jī)硬件及操作系統(tǒng)為依托,實(shí)現(xiàn)各種儀器功能。虛擬儀器主要是指這種方式,其實(shí)質(zhì)就是一個(gè)按照儀器需求組織的數(shù)據(jù)采集系統(tǒng)。美國NI公司的LabVIEW就是目前在這一領(lǐng)域內(nèi)使用較為廣泛的計(jì)算機(jī)語言。
隨著計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展,虛擬儀器與Internet技術(shù)的結(jié)合為虛擬儀器網(wǎng)絡(luò)化、工業(yè)現(xiàn)場遠(yuǎn)程測控提供了更好的實(shí)現(xiàn)平臺(tái)[1]。本文介紹在LabView開發(fā)平臺(tái)上結(jié)合TCP/IP技術(shù)實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)采集傳輸系統(tǒng)。
2、LabView簡介
LabView廣泛應(yīng)用于數(shù)據(jù)采集與控制、信號(hào)處理以及數(shù)據(jù)表達(dá)等方面,它提供了一種全新的編程方法,即對(duì)軟件對(duì)象“虛擬儀器(VI)”進(jìn)行圖形化的組合操作[2] [3]。LabView程序的執(zhí)行順序是按數(shù)據(jù)流的方式確定的,可以實(shí)現(xiàn)多任務(wù)的并行。
LabView的程序由前面板(frontpanel)和流程圖(blockdiagram)兩部分組成,整個(gè)程序是基于多線程的設(shè)計(jì),前面板和流程圖各占用一個(gè)線程。前面板是LabView程序的圖形用戶接口,此接口集成了用戶輸入,并顯示程序的輸出,相當(dāng)于傳統(tǒng)儀器的面板。流程圖包含虛擬儀器程序的圖形化源代碼,編程控制和定義在前面板上的輸入和輸出功能。在虛擬儀器設(shè)計(jì)中,從控制模板中選取所需的控制及顯示對(duì)象構(gòu)建出儀器的操作面板;在功能模板中選取適當(dāng)?shù)墓δ苣K并進(jìn)行必要的連接與設(shè)置,制作控制流程圖,完成所設(shè)計(jì)儀器應(yīng)具有的功能,程序的模塊化與層次化更為直觀。
3、TCP技術(shù)
TCP/IP協(xié)議體系是目前最成功、使用最頻繁的Intranet/Internet協(xié)議[5]。作為一個(gè)流行的工業(yè)標(biāo)準(zhǔn),TCP/IP技術(shù)有著良好的實(shí)用性和開放性。它定義了網(wǎng)絡(luò)層的網(wǎng)際互連協(xié)議IP,傳輸層的傳輸控制協(xié)議TCP、用戶數(shù)據(jù)協(xié)議UDP,等等?;赥CP/IP技術(shù)可以架構(gòu)各種Web服務(wù),如郵件傳輸SMTP、文件傳輸FTP,以及利用超文本傳輸協(xié)議HTTP實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁發(fā)布[5]和網(wǎng)絡(luò)瀏覽。
在數(shù)據(jù)傳輸中,TCP/IP網(wǎng)絡(luò)通過提供通用網(wǎng)絡(luò)服務(wù),使得具體網(wǎng)絡(luò)技術(shù)對(duì)用戶或應(yīng)用程序透明,從而將具體通信問題從網(wǎng)絡(luò)細(xì)節(jié)中解放出來,使網(wǎng)絡(luò)應(yīng)用更加靈活方便。體現(xiàn)到Labview應(yīng)用中,我們可以直接調(diào)用TCP模塊完成流程編寫,而無需過多考慮網(wǎng)絡(luò)的底層實(shí)現(xiàn)。
協(xié)議結(jié)構(gòu)上,TCP/IP體系利用基于無連接傳輸?shù)腎P協(xié)議,具體表現(xiàn)為IP地址,來區(qū)分網(wǎng)絡(luò)中不同的數(shù)據(jù)站點(diǎn)。同時(shí)提供了兩種傳輸方式:傳輸控制協(xié)議(TCP)為典型的傳輸大量數(shù)據(jù)或需要接收數(shù)據(jù)許可的應(yīng)用程序提供面向連接和可靠的通信;用戶數(shù)據(jù)協(xié)議(UDP)提供無連接的通信,典型的即時(shí)傳輸少量數(shù)據(jù)的應(yīng)用程序使用UDP。
根據(jù)IP協(xié)議內(nèi)容和TCP的報(bào)文格式(圖1),數(shù)據(jù)傳輸需確定各主機(jī)的IP地址及通信的源端口號(hào)、目標(biāo)端口號(hào),也即通常所稱套接字Socket,從而實(shí)現(xiàn)端口對(duì)端口基礎(chǔ)上的面向連接的數(shù)據(jù)通信。
相對(duì)于其他網(wǎng)絡(luò)協(xié)議,TCP/IP這種端對(duì)端的傳輸具有兩大優(yōu)點(diǎn)。第一, TCP/IP跟其它協(xié)議相比,顯得簡潔清晰。利用通用接口,實(shí)現(xiàn)方便。第二,TCP/IP的效率相當(dāng)高。TCP/IP的IP協(xié)議是“盡力傳遞”方式,只有TCP層為保證傳輸可靠性而做必要的工作,這樣的工作模式在物理網(wǎng)絡(luò)可靠的環(huán)境下傳輸效率相當(dāng)高,同時(shí)TCP實(shí)現(xiàn)的端對(duì)端連接也有效的保證了傳輸?shù)恼_率。
本文利用TCP、IP協(xié)議實(shí)現(xiàn)各數(shù)據(jù)采集點(diǎn)與處理主機(jī)的連接。
4、Labview中TCP傳輸?shù)膶?shí)現(xiàn)
在Labview中可以利用已發(fā)布的TCP VI及相關(guān)子例程設(shè)計(jì)實(shí)現(xiàn)TCP通信[4]。此前需要在通信的計(jì)算機(jī)正確安裝TCP/IP協(xié)議簇。在已接入Internet/Intranet的Windows/Unix系統(tǒng)中,TCP/IP協(xié)議是內(nèi)置的;若是新接入的計(jì)算機(jī)系統(tǒng),須確保TCP/IP正確的安裝和設(shè)置,同時(shí)保證通信所需的源端口/目標(biāo)端口開放。
由于實(shí)現(xiàn)的是把各數(shù)據(jù)點(diǎn)的數(shù)據(jù)匯總到處理主機(jī),設(shè)計(jì)上采用服務(wù)器/客戶端通信模式,VI程序分成兩部分:處理主機(jī)工作在Server模式,完成數(shù)據(jù)接受,并提供接口用于數(shù)據(jù)的相關(guān)后續(xù)處理;數(shù)據(jù)點(diǎn)計(jì)算機(jī)工作于Client模式,實(shí)現(xiàn)數(shù)據(jù)傳送。
設(shè)計(jì)其工作模式:
?。?) Server主機(jī)處于工作狀態(tài),并監(jiān)聽通信端口,等待Client發(fā)送的連接請(qǐng)求;
?。?) Client計(jì)算機(jī)開啟TCP連接;
?。?) Server主機(jī)響應(yīng)并建立數(shù)據(jù)傳輸通道;
(4) 連接過程判斷網(wǎng)絡(luò)錯(cuò)誤,若有則中斷連接;
(5) 數(shù)據(jù)傳輸,利用VI模塊TCP read/write完成;
?。?) 傳輸完畢中斷連接。
設(shè)計(jì)過程調(diào)用到LabView提供基于TCP連接的VI函數(shù)模塊如圖2所示,可以在blockdiagram中直接應(yīng)用。
以下為根據(jù)此工作模式設(shè)計(jì)的數(shù)據(jù)傳輸實(shí)例。為通用起見,Client端所用數(shù)據(jù)為正弦波發(fā)生器產(chǎn)生。通信過程引入錯(cuò)誤檢測機(jī)制,可以對(duì)傳輸過程的錯(cuò)誤進(jìn)行判斷,方便管理,也可以針對(duì)不同應(yīng)用屏蔽相關(guān)網(wǎng)絡(luò)錯(cuò)誤。
[align=center]
(圖3 Server 端流程圖)
(圖4 Client端流程圖)[/align]
從工作情況看,Server端能夠正確接收Client端的數(shù)據(jù)并能實(shí)時(shí)輸出,工作延時(shí)只受網(wǎng)絡(luò)條件影響,說明本方法成功實(shí)現(xiàn)數(shù)據(jù)TCP傳送,完全可以應(yīng)用到分布式的現(xiàn)場監(jiān)控中。
[align=center]
(圖5 Client工作過程面板顯示)
(圖6 Server工作過程面板顯示)[/align]
5、總結(jié)
在遠(yuǎn)程測控中,由于存在數(shù)據(jù)采集點(diǎn)多級(jí)分散,數(shù)據(jù)的采集與傳輸通常需要專用的網(wǎng)絡(luò),花費(fèi)較大。本方法利用現(xiàn)存的Intranet/Internet網(wǎng)絡(luò)可以有效提高資源的使用率、削減應(yīng)用成本,而實(shí)現(xiàn)采用面向連接的傳輸模式,更能保證數(shù)據(jù)傳送的正確性。由于采用開放性的協(xié)議,應(yīng)用中可以利用LabView的內(nèi)嵌的Web Server發(fā)布[3],方便各地工程師了解處理結(jié)果。
參考文獻(xiàn):
1、 VI技術(shù)在遠(yuǎn)程教育中的應(yīng)用,[J/OL]http://www.haitai.com.cn/cn_zh/download/soft/VI2.doc
2、 劉君華,基于LabView的虛擬儀器設(shè)計(jì),電子工業(yè)出版社[M],2003
3、 NI Corp,LabView User Manual [M],USA,1998
4、 NI Corp,Using LabVIEW with TCP/IP and UDP [M],2003
5、 Andrew S. Tanenbaum,《計(jì)算機(jī)網(wǎng)絡(luò)(第三版)》[M],清華大學(xué)出版社,2002