labview實(shí)現(xiàn)網(wǎng)絡(luò)通信方法與實(shí)例
點(diǎn)擊學(xué)習(xí)>>《龍哥手把手教你學(xué)LabVIEW視覺設(shè)計(jì)》視頻教程
網(wǎng)絡(luò)通信介紹:
網(wǎng)絡(luò)是用物理鏈路將各個(gè)孤立的工作站或主機(jī)相連在一起,組成數(shù)據(jù)鏈路,從而達(dá)到資源共享和通信的目的。通信是人與人之間通過某種媒體進(jìn)行的信息交流與傳遞。網(wǎng)絡(luò)通信是通過網(wǎng)絡(luò)將各個(gè)孤立的設(shè)備進(jìn)行連接,通過信息交換實(shí)現(xiàn)人與人,人與計(jì)算機(jī),計(jì)算機(jī)與計(jì)算機(jī)之間的通信。
網(wǎng)絡(luò)通信中最重要的就是網(wǎng)絡(luò)通信協(xié)議。當(dāng)今網(wǎng)絡(luò)協(xié)議有很多,局域網(wǎng)中最常用的有三個(gè)網(wǎng)絡(luò)協(xié)議:MICROSOFT的NETBEUI、NOVELL的IPX/SPX和TCP/IP協(xié)議。應(yīng)根據(jù)需要來(lái)選擇合適的網(wǎng)絡(luò)協(xié)議。
網(wǎng)絡(luò)通信的工作原理:
TCP/IP協(xié)議的數(shù)據(jù)傳輸過程: TCP/IP協(xié)議所采用的通信方式是分組交換方式。所謂分組交換,簡(jiǎn)單說就是數(shù)據(jù) 在傳輸時(shí)分成若干段,每個(gè)數(shù)據(jù)段稱為一個(gè)數(shù)據(jù)包,TCP/IP協(xié)議的基本傳輸單位是數(shù) 據(jù)包,TCP/IP協(xié)議主要包括兩個(gè)主要的協(xié)議,即TCP協(xié)議和IP協(xié)議,這兩個(gè)協(xié)議可以 聯(lián)合使用,也可以與其他協(xié)議聯(lián)合使用,它們?cè)跀?shù)據(jù)傳輸過程中主要完成以下功能:
1)首先由TCP協(xié)議把數(shù)據(jù)分成若干數(shù)據(jù)包,給每個(gè)數(shù)據(jù)包寫上序號(hào),以便接收端 把數(shù)據(jù)還原成原來(lái)的格式。
2)IP協(xié)議給每個(gè)數(shù)據(jù)包寫上發(fā)送主機(jī)和接收主機(jī)的地址,一旦寫上的源地址和目 的地址,數(shù)據(jù)包就可以在物理網(wǎng)上傳送數(shù)據(jù)了。IP協(xié)議還具有利用路由算法進(jìn)行路 由選擇的功能。
3)這些數(shù)據(jù)包可以通過不同的傳輸途徑(路由)進(jìn)行傳輸,由于路徑不同,加上其 它的原因,可能出現(xiàn)順序顛倒、數(shù)據(jù)丟失、數(shù)據(jù)失真甚至重復(fù)的現(xiàn)象。這些問題都 由TCP協(xié)議來(lái)處理,它具有檢查和處理錯(cuò)誤的功能, 必要時(shí)還可以請(qǐng)求發(fā)送端重發(fā)。 簡(jiǎn)言之,IP協(xié)議負(fù)責(zé)數(shù)據(jù)的傳輸,而TCP協(xié)議負(fù)責(zé)數(shù)據(jù)的可靠傳
labview實(shí)現(xiàn)網(wǎng)絡(luò)通信
1 TCP通信技術(shù)
網(wǎng)絡(luò)通信協(xié)議是網(wǎng)絡(luò)中傳遞、管理信息的一些規(guī)范,是計(jì)算機(jī)之間相互通信需要共同遵守的一些規(guī)則[1]。網(wǎng)絡(luò)通信協(xié)議通常被分為多個(gè)層次,每一層完成一定的功能,通信在對(duì)應(yīng)的層次之間進(jìn)行。LabVIEW中支持的通信協(xié)議類型包括TCP/IP、UDP、串口通信協(xié)議、無(wú)線網(wǎng)絡(luò)協(xié)議和郵件傳輸協(xié)議。TCP/IP協(xié)議體系是目前最成功, 使用最頻繁的Internet協(xié)議,有著良好的實(shí)用性和開放性。它定義了網(wǎng)絡(luò)層的網(wǎng)際互連協(xié)議IP,傳輸層的傳輸控制協(xié)議TCP、用戶數(shù)據(jù)協(xié)議UDP等。
LabVIEW中為網(wǎng)絡(luò)通訊提供了基于TCP/UDP的通訊函數(shù)供用戶調(diào)用。這樣用戶可直接調(diào)用TCP模塊中已發(fā)布的TCP VI及相關(guān)的子VI來(lái)完成流程的編寫,而無(wú)需過多考慮網(wǎng)絡(luò)的底層實(shí)現(xiàn)。在設(shè)計(jì)上采用C/S(客戶端/服務(wù)器)通信模式,VI程序分為兩部分:處理主機(jī)工作在Server模式,完成數(shù)據(jù)接收,并提供數(shù)據(jù)的相關(guān)處理;數(shù)據(jù)點(diǎn)計(jì)算機(jī)工作于Client模式,實(shí)現(xiàn)數(shù)據(jù)傳送[5]。TCP傳輸數(shù)據(jù)過程如下:首先由發(fā)送端發(fā)送連接請(qǐng)求,接收端偵聽到請(qǐng)求后回復(fù)并建立連接,然后開始傳輸,數(shù)據(jù)傳輸完成后關(guān)閉連接,傳輸過程結(jié)束。
2 利用TCP協(xié)議通信實(shí)例
以下通過C/S(客戶端/服務(wù)器)通信模式實(shí)現(xiàn)的數(shù)據(jù)傳輸模式。
在服務(wù)器端,用“TCP Create Listener”節(jié)點(diǎn)創(chuàng)建偵聽,“TCP Wait on Listener”節(jié)點(diǎn)等待客戶機(jī)連接,通過循環(huán)產(chǎn)生100個(gè)正弦信號(hào)數(shù)據(jù),用兩個(gè)“TCP Write”節(jié)點(diǎn)來(lái)發(fā)送數(shù)據(jù),第一個(gè)節(jié)點(diǎn)用來(lái)發(fā)送波形數(shù)據(jù)的長(zhǎng)度,第二個(gè)節(jié)點(diǎn)發(fā)送波形數(shù)據(jù),最后,用“TCP Close Connection”節(jié)點(diǎn)結(jié)束連接。程序框圖如圖1所示:
圖1 TCP服務(wù)器端程序框圖
在客戶端,用“TCP Open Connection”節(jié)點(diǎn)打開TCP連接,用兩個(gè)“TCP Read”節(jié)點(diǎn)讀取數(shù)據(jù),第一個(gè)節(jié)點(diǎn)接收波形長(zhǎng)度作為第二個(gè)節(jié)點(diǎn)的輸入,第二個(gè)節(jié)點(diǎn)接收波形數(shù)據(jù),最后,用“TCP Close Connection”節(jié)點(diǎn)結(jié)束連接。程序框圖如圖2所示:
圖2 TCP客戶端程序框圖
運(yùn)行程序,結(jié)果如下圖3、4:
圖3 服務(wù)器端顯示結(jié)果
圖4 客戶端顯示結(jié)果
3 DataSocket技術(shù)通信
3.1 DataSocket技術(shù)
DataSocket技術(shù)是一種面向測(cè)控領(lǐng)域的網(wǎng)上實(shí)時(shí)數(shù)據(jù)交換編程技術(shù)[9],DataSocket技術(shù)基于Microsoft的COM和ActiveX技術(shù),對(duì)TCP/IP協(xié)議進(jìn)行高度封裝,它包括了DataSocket Server Manager、DataSocket Server和DataSocket API這幾個(gè)工具軟件,以及DSTP (DataSocket Transfer Protocol)協(xié)議、通用資源定位符URL (Uniform. Resource Locator)和文件格式等技術(shù)規(guī)范。它能大大簡(jiǎn)化Internet網(wǎng)上計(jì)算機(jī)之間測(cè)控?cái)?shù)據(jù)交換的編程工作。同時(shí),DataSocket也可用于一臺(tái)計(jì)算機(jī)內(nèi)或局域網(wǎng)中多個(gè)應(yīng)用程序之間的數(shù)據(jù)交換。
DataSocket Server Manager是一個(gè)獨(dú)立運(yùn)行的應(yīng)用程序,它的主要功能是設(shè)置DataSocket Server可連接的客戶端程序的最大數(shù)目和可創(chuàng)建的數(shù)據(jù)項(xiàng)的最大數(shù)目,設(shè)置用戶和用戶組,設(shè)置用戶可創(chuàng)建數(shù)據(jù)項(xiàng)和讀寫數(shù)據(jù)項(xiàng)的權(quán)限,未經(jīng)授權(quán)的用戶不能在DataSocket Server上創(chuàng)建或讀寫數(shù)據(jù)項(xiàng),數(shù)據(jù)項(xiàng)實(shí)際上是DataSocket Server中的數(shù)據(jù)文件。DataSocket Server也是一個(gè)獨(dú)立運(yùn)行的應(yīng)用程序,它能為用戶解決大部分網(wǎng)絡(luò)通信方面的問題,它負(fù)責(zé)監(jiān)管Manager中所設(shè)定的各種權(quán)限的用戶組和客戶端程序之間的數(shù)據(jù)交換,自動(dòng)處理底層的網(wǎng)絡(luò)連接及客戶程序之間的數(shù)據(jù)交換,使網(wǎng)絡(luò)連接對(duì)客戶端保持透明。DataSocket Server與測(cè)控應(yīng)用程序可安裝在同一臺(tái)計(jì)算機(jī)上,也可以分裝在不同計(jì)算機(jī)上,后一種方法可增加整個(gè)系統(tǒng)的安全性,因?yàn)閮膳_(tái)計(jì)算機(jī)之間可用防火墻加以隔離,而且,DataSocket Server程序不會(huì)占用測(cè)控計(jì)算機(jī)CPU的工作時(shí)間,從而使測(cè)控應(yīng)用程序可以運(yùn)行得更快。
DataSocket API 包含有Open 、Read、Write和Close等函數(shù),其中的Read和Write函數(shù)又分為單個(gè)或數(shù)組形式的字符串型、布爾型、數(shù)值型和波形等多種類型。DataSocket技術(shù)可在C語(yǔ)言、VB和LabVIEW等多種開發(fā)環(huán)境中應(yīng)用,因此,這些函數(shù)有不同的形式,它們?cè)贑語(yǔ)言中是函數(shù),在VB中是ActiveX控件,而在LabVIEW中則是功能模塊,DataSocket的ActiveX控件還可以應(yīng)用在VC、EXCEL、網(wǎng)頁(yè)和其他支持ActiveX技術(shù)的環(huán)境中。
3.2 利用DataSocket技術(shù)通信實(shí)例
以下通過DataSocket C/S模式實(shí)現(xiàn)數(shù)據(jù)的遠(yuǎn)程傳輸。
在服務(wù)器端對(duì)DataSocket Server Manager進(jìn)行設(shè)置,也可采用默認(rèn)值。然后運(yùn)行應(yīng)用程序DataSocket Server,打開DataSocket Server。和上例一樣通過循環(huán)產(chǎn)生100個(gè)正弦信號(hào)數(shù)據(jù),利用DataSocket Write節(jié)點(diǎn)將數(shù)據(jù)發(fā)送到dstp格式指定的連接中。程序框圖如圖5所示:
圖5 DataSocket服務(wù)器端程序框圖
在客戶端,使用DataSocket Read節(jié)點(diǎn)將數(shù)據(jù)從指定的地址讀取數(shù)據(jù),并顯示波形。程序框圖如圖6所示:
圖6 DataSocket客戶端程序框圖
運(yùn)行程序,結(jié)果和圖3、4結(jié)果類似,波形相同,只是連接輸入格式不一樣。
4 共享變量通信
4.1 共享變量
共享變量是繼DataSocket技術(shù)之后LabView為簡(jiǎn)化網(wǎng)絡(luò)編程邁出的又一大步。通過共享變量,用戶無(wú)需編程就可以在不同計(jì)算機(jī)之間方便的實(shí)現(xiàn)數(shù)據(jù)的共享。用戶無(wú)需了解任何的底層復(fù)雜的網(wǎng)絡(luò)通信,就能輕松地實(shí)現(xiàn)數(shù)據(jù)交換。用戶建立和使用共享變量就如同操作全局變量一樣方便。
4.2 利用共享變量通信實(shí)例
以下通過C/S(客戶端/服務(wù)器)通信模式實(shí)現(xiàn)數(shù)據(jù)的傳輸模式。
由于共享變量只能存在于工程項(xiàng)目中,建立一個(gè)共享變量之前先得建立一個(gè)工程,然后在工程目錄下選擇New︱Variable選項(xiàng),然后根據(jù)提示一步一步即可完成設(shè)置,但需要注意的是要實(shí)現(xiàn)網(wǎng)絡(luò)通信變量類型必須選擇為“Network-Published”。這里在服務(wù)器中創(chuàng)建一個(gè)名為Server_Variable的共享變量,同樣在客戶端建立一個(gè)名為Client_Variable的變量,兩變量其數(shù)據(jù)和變量類型一致,都為一維數(shù)組雙精度和網(wǎng)絡(luò)發(fā)布類型。在客戶端其程序框圖如圖7所示:
圖7 共享變量服務(wù)器端程序框圖
在客戶端只需把共享變量Client_Variable的Bind to Source設(shè)置為服務(wù)器中的Server_Variable即可,將其拖入程序框圖。建立的程序框圖如圖8所示:
圖8 共享變量客戶端程序框圖
運(yùn)行程序,結(jié)果如圖3、4。
5 遠(yuǎn)程訪問
5.1 遠(yuǎn)程訪問技術(shù)
在LabVIEW中,實(shí)現(xiàn)遠(yuǎn)程訪問的方式有兩種:遠(yuǎn)程面板控制和客戶端瀏覽器訪問,且在實(shí)施這兩種訪問之前都需要對(duì)服務(wù)器進(jìn)行配置。
配置服務(wù)器包括3部分:服務(wù)器目錄與日志配置、客戶端可見VI配置和客戶端訪問權(quán)限配置。在LabVIEW中選擇 “工具→選項(xiàng)”即可打開參數(shù)配置框,左側(cè)分別可見“Web服務(wù)器:配置”、“Web服務(wù)器:瀏覽器訪問”。其中“Web服務(wù)器:配置”是用來(lái)配置服務(wù)器目錄和日志屬性、“Web服務(wù)器:可見VI”用來(lái)配置服務(wù)器根目錄下可見的VI程序,也即對(duì)客戶端可操作的VI程序?!癢eb服務(wù)器:瀏覽器訪問”用來(lái)設(shè)置客戶端的訪問權(quán)限。完成服務(wù)器配置以后,即可以選擇遠(yuǎn)程控制面板或?yàn)g覽器方式訪問服務(wù)器、對(duì)服務(wù)器進(jìn)行交互遠(yuǎn)程操作等。
5.2 利用瀏覽器訪問通信實(shí)例
通過客戶端瀏覽器訪問時(shí),首先需要在服務(wù)器端發(fā)布網(wǎng)頁(yè),然后才能從客戶端訪問,以實(shí)現(xiàn)遠(yuǎn)程通信。
在服務(wù)器端發(fā)布網(wǎng)頁(yè)。在LabVIEW中選擇“工具→Web發(fā)布工具。。?!贝蜷_“Web發(fā)布工具欄”,分別對(duì)其設(shè)置,最后確定即可,如圖9所示:
圖9 Web發(fā)布工具
在客戶端通過網(wǎng)頁(yè)瀏覽器訪問服務(wù)器訪問的頁(yè)面。這樣通過Web頁(yè)面的發(fā)布就可實(shí)現(xiàn)網(wǎng)絡(luò)的通信,且用戶可與發(fā)布的前面板進(jìn)行交互式操作,使用戶可以通過Internet操作儀器設(shè)備。
非常好我支持^.^
(41) 12.8%
不好我反對(duì)
(279) 87.2%
相關(guān)閱讀:
- [電子說] LabVIEW中PID控制的的高級(jí)功能 2023-10-24
- [電子說] LabVIEW子VI設(shè)計(jì)—多態(tài)VI與自適應(yīng)VI 2023-10-23
- [PLC/PAC] PLC就是邏輯控制嗎?PLC的網(wǎng)絡(luò)通信怎么樣? 2023-10-20
- [電子說] 800G OSFP SR8:數(shù)據(jù)中心的高速傳輸與節(jié)能解決方案 2023-10-19
- [電子說] LabVIEW批量讀寫三菱PLC數(shù)據(jù)如何實(shí)現(xiàn)呢? 2023-10-17
- [電子說] 太陽(yáng)能語(yǔ)音監(jiān)控桿:打造智能安防新時(shí)代 2023-10-16
- [電子說] 千兆光模塊和萬(wàn)兆光模塊的區(qū)別? 2023-10-16
- [電子說] Python環(huán)境搭建和LabVIEW中的調(diào)用 2023-10-13
( 發(fā)表人:辰光 )