<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于LabWIEW數(shù)控機(jī)床遠(yuǎn)程測(cè)控系統(tǒng)的網(wǎng)絡(luò)通信關(guān)鍵技術(shù)研究

          基于LabWIEW數(shù)控機(jī)床遠(yuǎn)程測(cè)控系統(tǒng)的網(wǎng)絡(luò)通信關(guān)鍵技術(shù)研究

          作者: 時(shí)間:2016-12-23 來源:網(wǎng)絡(luò) 收藏
            基于Internet組建數(shù)控機(jī)床網(wǎng)絡(luò)測(cè)控系統(tǒng)目前主要有兩種基本的模式:C/S和B/S模式。兩種通信模式各有自己的優(yōu)缺點(diǎn),本章將對(duì)兩種結(jié)構(gòu)進(jìn)行詳細(xì)的比較。同時(shí)在LabVIEW環(huán)境下實(shí)現(xiàn)網(wǎng)絡(luò)通信的也有多種方式,在本章中會(huì)做一一比較。數(shù)據(jù)的存儲(chǔ)與訪問也是實(shí)現(xiàn)遠(yuǎn)程測(cè)控系統(tǒng)的關(guān)鍵,在本章最后會(huì)進(jìn)行 Web數(shù)據(jù)庫的設(shè)計(jì)和LabVIEW平臺(tái)下實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)庫的訪問技術(shù)方面的分析與研究。

            4.1 B/S結(jié)構(gòu)與C/S結(jié)構(gòu)的比較

          本文引用地址:http://www.ex-cimer.com/article/201612/333243.htm

            本文提出的基于Internet組建網(wǎng)絡(luò)化測(cè)控系統(tǒng)目前主要有兩種基本的模式:C/S和B/S模式,性能和功能場(chǎng)合上各有自己的優(yōu)缺點(diǎn),現(xiàn)做如下分析對(duì)比。

           ?。?)C/S模式:(客戶/服務(wù)器模式)

            C/S模式模型是網(wǎng)絡(luò)通信中常用的一種模型,通常集散控制系統(tǒng)多采用這種結(jié)構(gòu),它一般有多個(gè)客戶端來采集數(shù)據(jù),而且通常有一個(gè)服務(wù)器來充當(dāng)數(shù)據(jù)庫的角色,客戶端通過通信協(xié)議把測(cè)試數(shù)據(jù)寫入遠(yuǎn)程服務(wù)器數(shù)據(jù)庫。這種模型的設(shè)計(jì)包括兩個(gè)方面:客戶端采集程序和遠(yuǎn)程發(fā)布的程序設(shè)計(jì)以及客戶端數(shù)據(jù)的接收程序的設(shè)計(jì)。在LabVIEW環(huán)境下,專門為測(cè)試數(shù)據(jù)的安全快速的傳輸設(shè)置了DSTP協(xié)議。

            C/S模式的優(yōu)點(diǎn):

           ?、儆捎诳蛻舳藢?shí)現(xiàn)與服務(wù)器的直接相連,沒有中間環(huán)節(jié),因此響應(yīng)速度快。

           ?、诓僮鹘缑嫫痢⑿问蕉鄻?,可以充分滿足客戶自身的個(gè)性化要求。

           ?、跜/S結(jié)構(gòu)的管理信息系統(tǒng)具有較強(qiáng)的事務(wù)處理能力,能實(shí)現(xiàn)復(fù)雜的業(yè)務(wù)流程。

            C/S模式的缺點(diǎn):

           ?、傩枰獙iT的客戶端安裝程序,分布功能弱,針對(duì)點(diǎn)多面廣且不具備網(wǎng)絡(luò)條件的用戶群體,不能夠?qū)崿F(xiàn)快速部署安裝和配置。

           ?、诩嫒菪圆?,對(duì)于不同的開發(fā)工具,具有較大的局限性。若采用不同工具,需要重新改寫程序。

           ?、坶_發(fā)成本較高,需要具有一定專業(yè)水準(zhǔn)的技術(shù)人員才能完成。

           ?。?)B/S模式:(瀏覽器/服務(wù)器模式)

            B/S模型是為了方便用戶在Web下發(fā)布數(shù)據(jù)。通常用戶端只需要安裝一個(gè)瀏覽器,直接訪問該測(cè)控網(wǎng)站的地址,就可以監(jiān)視遠(yuǎn)程測(cè)控點(diǎn)的數(shù)據(jù)變化情況。它的主要工作就是在服務(wù)器端程序的開發(fā),不存在客戶端程序的開發(fā)和維護(hù)。在B/S模式下,一般采用HTTP協(xié)議。B/S組網(wǎng)模式的網(wǎng)絡(luò)化虛擬儀器如圖4.1所示。

            

            B/S模式的優(yōu)點(diǎn):

            ①具有分布性特點(diǎn),可以隨時(shí)隨地進(jìn)行查詢、瀏覽等業(yè)務(wù)處理。

           ?、跇I(yè)務(wù)擴(kuò)展簡單方便,通過增加網(wǎng)頁即可增加服務(wù)器功能。

            ③維護(hù)簡單方便,只需要改變網(wǎng)頁,即可實(shí)現(xiàn)所有用戶的同步更新。

            ④開發(fā)簡單,共享性強(qiáng)。

            B/S模式的缺點(diǎn):

           ?、賯€(gè)性化特點(diǎn)明顯降低,無法實(shí)現(xiàn)具有個(gè)性化的功能要求。

            ②操作是以鼠標(biāo)為最基本的操作方式,無法滿足快速操作的要求。

            ③頁面動(dòng)態(tài)刷新,響應(yīng)速度明顯降低。

           ?、軣o法實(shí)現(xiàn)分頁顯示,給數(shù)據(jù)庫訪問造成較大的壓力。

           ?、莨δ苋趸?,難以實(shí)現(xiàn)傳統(tǒng)模式下的特殊功能要求。

            綜上所述,B/S模式建立在廣域網(wǎng)上,面向不同的用戶群,分散地域,這是C/S模式無法作到的。與操作系統(tǒng)平臺(tái)關(guān)系最小。C/S模式多是建立的 Window平臺(tái)上,表現(xiàn)方法有限,對(duì)程序員普遍要求較高,B/S模式建立在瀏覽器上,有更加豐富和生動(dòng)的表現(xiàn)方式與用戶交流。。并且大部分難度減低,降低開發(fā)成本。鑒于兩種結(jié)構(gòu)模式優(yōu)缺點(diǎn)性能的比較和筆者的論文實(shí)現(xiàn)難以上考慮,本文的遠(yuǎn)程測(cè)控系統(tǒng)采用B/S模式。

            4.2 LabVIEW實(shí)現(xiàn)網(wǎng)絡(luò)通信的方法研究

            數(shù)控機(jī)床遠(yuǎn)程測(cè)控系統(tǒng)有多種實(shí)現(xiàn)網(wǎng)絡(luò)通信的方法。

            其中,基于虛擬儀器LabVIEW實(shí)現(xiàn)網(wǎng)絡(luò)通信有四大類方法:

           ?。?)使用網(wǎng)絡(luò)通信協(xié)議編程實(shí)現(xiàn)網(wǎng)絡(luò)通信,可以使用的通信協(xié)議類型包括TCP/IP協(xié)議、UDP、串口通信協(xié)議、無線網(wǎng)絡(luò)協(xié)議、Socket等;

           ?。?)使用基于TCP/IP的數(shù)據(jù)傳輸協(xié)議DSTP的DataSocket技術(shù)實(shí)現(xiàn)網(wǎng)絡(luò)通信;

           ?。?)使用共享變量實(shí)現(xiàn)網(wǎng)絡(luò)通信;

           ?。?)通過遠(yuǎn)程訪問來實(shí)現(xiàn)網(wǎng)絡(luò)通信。

            本節(jié)將簡單地分析了各種方法的優(yōu)缺點(diǎn)及應(yīng)用場(chǎng)合。

            4.2.1 TCP與UDP通信技術(shù)

            TCP與UDP,這些協(xié)議在絕大多數(shù)計(jì)算機(jī)上都有安裝,因此他們的使用更為普遍,但是正是由于這些協(xié)議更加基礎(chǔ),因此針對(duì)它們的編程要更加復(fù)雜,用戶需要考慮如何建立連接、分配端口號(hào)、進(jìn)行地址轉(zhuǎn)換等。LabVIEW為用戶提供了封裝好的VI函數(shù),大大簡化了TCP與UDP編程。

            網(wǎng)絡(luò)通信協(xié)議是網(wǎng)絡(luò)中傳遞、管理信息的一些規(guī)范,是計(jì)算機(jī)之間相互通信需要共同遵守的一些規(guī)則。網(wǎng)絡(luò)通信協(xié)議通常被分為多個(gè)層次,每一層完成一定的功能,通信在對(duì)應(yīng)的層次之間進(jìn)行。LabVIEW中支持的通信協(xié)議類型包括TCP/IP、UDP、串口通信協(xié)議、無線網(wǎng)絡(luò)協(xié)議和郵件傳輸協(xié)議。TCP/IP協(xié)議體系是目前最成功,使用最頻繁的Internet協(xié)議,有著良好的實(shí)用性和開放性。它定義了網(wǎng)絡(luò)層的網(wǎng)際互連協(xié)議IP,傳輸層的傳輸控制協(xié)議TCP、用戶數(shù)據(jù)協(xié)議UDP等。

            選擇采用C/S模式網(wǎng)絡(luò)應(yīng)用構(gòu)架時(shí),網(wǎng)絡(luò)通信利用Socket編程。Socket是TCP/IP協(xié)議傳輸所提供的接口,一般對(duì)于軟件開發(fā)主要使用兩種類型的套接字:

           ?。?)流式套接字

            流式套接字為應(yīng)用程序提供可靠的通信連接和無邊界限制的雙向數(shù)據(jù)流,能夠提供有序、無重復(fù)的傳輸,適用于處理大量數(shù)據(jù),并適用于要求得到響應(yīng)的應(yīng)用程序。流式套接字是基于直接連接的,建立在TCP基礎(chǔ)上。TCP三次握手——使用TCP協(xié)議的流程圖如圖4.2所示

            

            

           ?。?)數(shù)據(jù)報(bào)套接字

            支持雙向數(shù)據(jù)流動(dòng),但不能保證數(shù)據(jù)的順序和不重復(fù)性,同時(shí)也不十分可靠。數(shù)據(jù)報(bào)是無連接的,由UDP(用戶數(shù)據(jù)報(bào)協(xié)議)支持,幾乎是直接建立在IP層上,傳輸速度比較快。UDP即用戶數(shù)據(jù)報(bào)協(xié)議,它是一種無連接協(xié)議,因此不需要像TCP那樣通過三次握手來建立一個(gè)連接。同時(shí),一個(gè)UDP應(yīng)用可同時(shí)作為應(yīng)用的客戶端或服務(wù)器端。由于UDP協(xié)議并不需要建立一個(gè)明確的連接,因此建立UDP應(yīng)用要比建立TCP應(yīng)用簡單得多。它比TCP協(xié)議更為高效,也能更好地解決實(shí)時(shí)性的問題。使用UDP協(xié)議的流程圖如圖4.3所示。

            

            其中Socket信息數(shù)據(jù)結(jié)構(gòu)程序如下:

            struct sockaddr

            {

            unsigned short sa_family; /*地址族*/

            char sa_data[14]; /*14字節(jié)的協(xié)議地址,包含該socket的IP地址和端口號(hào)。*/

            };

            struct sockaddr_in

            {

            short int sa_family; /*地址族*/

            unsigned short int sin_port; /*端口號(hào)*/

            struct in_addr sin_addr; /*IP地址*/

            unsigned char sin_zero[8]; /*填充0以保持與struct sockaddr同樣大小*/

            };

            LabVIEW中為網(wǎng)絡(luò)通訊提供了基于TCP/UDP的通訊函數(shù)供用戶調(diào)用。這樣用戶可直接調(diào)用TCP模塊中已發(fā)布的TCP VI及相關(guān)的子VI來完成流程的編寫,而無需過多考慮網(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ù)傳送。TCP傳輸數(shù)據(jù)過程如下:首先由發(fā)送端發(fā)送連接請(qǐng)求,接收端偵聽到請(qǐng)求后回復(fù)并建立連接,然后開始傳輸,數(shù)據(jù)傳輸完成后關(guān)閉連接,傳輸過程結(jié)束。

            (3)利用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)來發(fā)送數(shù)據(jù),第一個(gè)節(jié)點(diǎn)用來發(fā)送波形數(shù)據(jù)的長度,第二個(gè)節(jié)點(diǎn)發(fā)送波形數(shù)據(jù),最后,用“TCP Close Connection”節(jié)點(diǎn)結(jié)束連接。程序框圖如圖4.4所示:

            

            在客戶端,用“TCP Open Connection”節(jié)點(diǎn)打開TCP連接,用兩個(gè)“TCP Read”節(jié)點(diǎn)讀取數(shù)據(jù),第一個(gè)節(jié)點(diǎn)接收波形長度作為第二個(gè)節(jié)點(diǎn)的輸入,第二個(gè)節(jié)點(diǎn)接收波形數(shù)據(jù),最后,用“TCP Close Connection”節(jié)點(diǎn)結(jié)束連接。程序框圖如圖4.5所示:

            

            運(yùn)行TCP客戶端程序,顯示結(jié)果如下圖4.6所示。

            


            4.2.2 DataSocket技術(shù)

            在LabVIEW中實(shí)現(xiàn)網(wǎng)絡(luò)通信的最簡單方法就是DataSocket.由于DataSocket可以應(yīng)用于任何編程環(huán)境,而且支持多種協(xié)議(PSP、 DSTP、OPC、LOOKOUT、HTTP、FTP和文件訪問)。DataSocket是一種編程技術(shù),它簡化了網(wǎng)絡(luò)計(jì)算機(jī)之間尤其是現(xiàn)場(chǎng)數(shù)據(jù)的交換。 DataSocket技術(shù)是一種面向測(cè)控領(lǐng)域的網(wǎng)上實(shí)時(shí)數(shù)據(jù)交換編程技術(shù),DataSocket技術(shù)基于Microsoft的COM和ActiveX技術(shù),對(duì)TCP/IP協(xié)議進(jìn)行高度封裝,它包括了通用資源定位符URL (UNIform Resource Locator)和文件格式等技術(shù)規(guī)范。它能大大簡化Internet網(wǎng)上計(jì)算機(jī)之間測(cè)控?cái)?shù)據(jù)交換的編程工作。DataSocket也可用于一臺(tái)計(jì)算機(jī)內(nèi)或局域網(wǎng)中多個(gè)應(yīng)用程序之間的數(shù)據(jù)交換,DataSocket的體系結(jié)構(gòu)如圖所示。

            

           ?。?)DataSocket邏輯構(gòu)成DataSocket包括DataSocket Server Manager(以下簡Manager),DataSocket Server和DataSocket API一部分。

            Manager是一個(gè)獨(dú)立運(yùn)行的程序,主要功能有:設(shè)置DataSocket Server連接的客戶端程序的最大數(shù)目和創(chuàng)建數(shù)據(jù)項(xiàng)的最大數(shù)目:創(chuàng)建用戶組和用戶;設(shè)置用戶創(chuàng)建和讀寫數(shù)據(jù)項(xiàng)的權(quán)限;限制身份不明的客戶對(duì)服務(wù)器進(jìn)行訪問和攻擊。例如,將Manager中的Default Reader設(shè)置為everyhost,則網(wǎng)中的每臺(tái)客戶計(jì)算機(jī)都可以讀取服務(wù)器上的數(shù)據(jù)。Manager對(duì)DataSocket Server的配置必須在本地計(jì)算機(jī)上進(jìn)行,而不能遠(yuǎn)程配置或通過運(yùn)行程序來配置。

            DataSocket Server是一個(gè)必須運(yùn)行在服務(wù)器端的程序,負(fù)責(zé)監(jiān)管Manager中所設(shè)定的具有各種權(quán)限的用戶組和客戶端程序之間的數(shù)據(jù)交換。DataSocket Server通過內(nèi)部數(shù)據(jù)自描述格式對(duì)TCP/IP進(jìn)行優(yōu)化和管理,簡化Internet.通信方式,提供自由的數(shù)據(jù)傳輸,可以直接傳送虛擬儀器程序所采集到的布爾型、數(shù)字型、字符串型、數(shù)組型和波形等常用類型的數(shù)據(jù)。它可以和測(cè)控應(yīng)用程序安裝在同一臺(tái)計(jì)算機(jī)上,也可以分裝在不同的計(jì)算機(jī)上,以便用防火墻進(jìn)行隔離來增加整個(gè)系統(tǒng)的安全性。DataSocket Server不會(huì)占用測(cè)控計(jì)算機(jī)CPU的工作時(shí)間,測(cè)控應(yīng)用程序可以運(yùn)行得更快。

            DataSocket API提供獨(dú)立的接口,用于不同的語言平臺(tái)內(nèi)部多種數(shù)據(jù)類型的通讀。在LabVIEW中,DataSocket API被制作成ActiveX控件和一系列功能VI(Virtual Instrument),用戶可以方便地使用。一般由服務(wù)器進(jìn)行數(shù)據(jù)采集,根據(jù)需要將測(cè)量地?cái)?shù)據(jù)寫入DataSocket數(shù)據(jù)公共區(qū),然后客戶端通過網(wǎng)絡(luò)充數(shù)據(jù)公共區(qū)讀取所需地測(cè)量數(shù)據(jù)。DataSocket API包含有Open、Read、Write和Close等函數(shù),其中的Read和Write函數(shù)又分為單個(gè)或數(shù)組形式的字符串型、布爾型、數(shù)值型和波形等多種類型。DataSocket技術(shù)可在C語言、VB和LabVIEW等多種開發(fā)環(huán)境中應(yīng)用。

           ?。?)DataSocket資源定位

            DataSocket對(duì)外提升資源定位接口和功能調(diào)用接口,通過同意資源定位符(URL)對(duì)數(shù)據(jù)的傳輸目的地進(jìn)行定位,讀數(shù)據(jù)時(shí)為源地址,寫數(shù)據(jù)時(shí)為宿地址。在資源定位符中標(biāo)明數(shù)據(jù)的傳輸協(xié)議、網(wǎng)絡(luò)計(jì)算機(jī)標(biāo)志和數(shù)據(jù)緩沖區(qū)變量。DataSocket支持多種數(shù)據(jù)傳送協(xié)議,不同的URL前綴表示不同的協(xié)議或數(shù)據(jù)類型。主要包括:

            ①DSTP(DataSocket Transfer Protocol):DataSocket的專門通信協(xié)議,可以傳輸各種類型的數(shù)據(jù),當(dāng)使用這個(gè)協(xié)議時(shí),VI與DataSocket Server連接,用戶必須為數(shù)據(jù)提供一個(gè)附加到URL的標(biāo)識(shí)Tag,DataSocket連接利用Tag在DataSocket Server上為一個(gè)特殊的數(shù)據(jù)項(xiàng)目指定地址,目前應(yīng)用虛擬儀器技術(shù)組建的測(cè)量網(wǎng)絡(luò)大多采用該協(xié)議;

           ?、贖TTP(Hyper Text Transfer Protocol,超文本傳輸協(xié)議);

            ③FTP(File Transfer Protocol,文件傳輸協(xié)議);

           ?、躉PC(OLE for Process Control,操作計(jì)劃和控制);特別為實(shí)時(shí)產(chǎn)生的數(shù)據(jù)而涉及,例如工業(yè)自動(dòng)化操作而產(chǎn)生的數(shù)據(jù)。要使用該協(xié)議,須首先運(yùn)行OPC Server;

           ?、軫ieldpoint,Logos,Lookout:分別為NI FieldPoint模塊,LabVIEW數(shù)據(jù)記錄與監(jiān)控(DSC)模塊及NI Lookout模塊的通信協(xié)議;

            ⑥File(local file servers,本地文件服務(wù)器);可提供一個(gè)到包含數(shù)據(jù)的本地文件或網(wǎng)絡(luò)文件的連接。

           ?。?)DataSocket網(wǎng)絡(luò)通信實(shí)現(xiàn)途徑

            在LabVIEW中運(yùn)用DataSocket技術(shù)實(shí)現(xiàn)網(wǎng)絡(luò)通信有兩種途徑:前面板控件屬性直接連接和利用DataSocket VI編程。具體實(shí)現(xiàn)方式見下圖4.8所示:

            用DataSocket在數(shù)據(jù)發(fā)送端首先形成具有一定規(guī)律的數(shù)據(jù)流,再用DataSocket控件的寫操作把這些數(shù)據(jù)傳輸?shù)紻ataSocket服務(wù)器,在各客戶端用讀操作從服務(wù)器獲取數(shù)據(jù)流,然后對(duì)數(shù)據(jù)流進(jìn)行解析并恢復(fù)為原始信息在客戶端形成的響應(yīng)。這樣就實(shí)現(xiàn)協(xié)同工作的基本流程。整個(gè)應(yīng)用分成“寫”和 “讀”兩個(gè)模塊。

            寫模塊的核心時(shí)DataSocket write vi.它在工作前需要用戶指定數(shù)據(jù)宿的URL地址。

            VI每次從上一步程序接收數(shù)據(jù)后形成數(shù)據(jù)包并送到目標(biāo)地址。在數(shù)據(jù)傳送過程中,寫端計(jì)算機(jī)的DataSocket Server會(huì)實(shí)時(shí)監(jiān)視網(wǎng)絡(luò)連接和數(shù)據(jù)傳送情況。“寫”模塊選擇條件為“True”時(shí)的程序,詳見圖4.8.

            

            讀模塊起核心作用的時(shí)DataSocket Read vi,其數(shù)據(jù)源的URL地址須與數(shù)據(jù)宿的URL地址相同,要注意接收的數(shù)據(jù)類型與寫端輸出的數(shù)據(jù)類型一致。讀端計(jì)算機(jī)也會(huì)運(yùn)行DataSocket Server來監(jiān)視網(wǎng)絡(luò)接收和數(shù)據(jù)接收情況。“讀”模塊程序詳見圖4.9.

            

            有時(shí)網(wǎng)絡(luò)擁塞會(huì)使數(shù)據(jù)傳送周期變長,可以在程序的循環(huán)中設(shè)置等待時(shí)間(ms),本應(yīng)用寫端和讀端分別設(shè)計(jì)為1000和100.在實(shí)際現(xiàn)場(chǎng)應(yīng)用時(shí),應(yīng)盡量有專用的傳送線路,一面網(wǎng)絡(luò)擁塞時(shí)發(fā)生數(shù)據(jù)丟失。DataSocket Server讀取的數(shù)據(jù)可以做進(jìn)一步的處理,并存儲(chǔ)起來以供調(diào)用。




          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();