基于LabWIEW數(shù)控機(jī)床遠(yuǎn)程測控系統(tǒng)的網(wǎng)絡(luò)通信關(guān)鍵技術(shù)研究
4.1 B/S結(jié)構(gòu)與C/S結(jié)構(gòu)的比較
本文引用地址:http://butianyuan.cn/article/201612/333243.htm本文提出的基于Internet組建網(wǎng)絡(luò)化測控系統(tǒng)目前主要有兩種基本的模式:C/S和B/S模式,性能和功能場合上各有自己的優(yōu)缺點(diǎn),現(xiàn)做如下分析對比。
?。?)C/S模式:(客戶/服務(wù)器模式)
C/S模式模型是網(wǎng)絡(luò)通信中常用的一種模型,通常集散控制系統(tǒng)多采用這種結(jié)構(gòu),它一般有多個客戶端來采集數(shù)據(jù),而且通常有一個服務(wù)器來充當(dāng)數(shù)據(jù)庫的角色,客戶端通過通信協(xié)議把測試數(shù)據(jù)寫入遠(yuǎn)程服務(wù)器數(shù)據(jù)庫。這種模型的設(shè)計包括兩個方面:客戶端采集程序和遠(yuǎn)程發(fā)布的程序設(shè)計以及客戶端數(shù)據(jù)的接收程序的設(shè)計。在LabVIEW環(huán)境下,專門為測試數(shù)據(jù)的安全快速的傳輸設(shè)置了DSTP協(xié)議。
C/S模式的優(yōu)點(diǎn):
?、儆捎诳蛻舳藢崿F(xiàn)與服務(wù)器的直接相連,沒有中間環(huán)節(jié),因此響應(yīng)速度快。
②操作界面漂亮、形式多樣,可以充分滿足客戶自身的個性化要求。
?、跜/S結(jié)構(gòu)的管理信息系統(tǒng)具有較強(qiáng)的事務(wù)處理能力,能實現(xiàn)復(fù)雜的業(yè)務(wù)流程。
C/S模式的缺點(diǎn):
?、傩枰獙iT的客戶端安裝程序,分布功能弱,針對點(diǎn)多面廣且不具備網(wǎng)絡(luò)條件的用戶群體,不能夠?qū)崿F(xiàn)快速部署安裝和配置。
?、诩嫒菪圆睿瑢τ诓煌拈_發(fā)工具,具有較大的局限性。若采用不同工具,需要重新改寫程序。
?、坶_發(fā)成本較高,需要具有一定專業(yè)水準(zhǔn)的技術(shù)人員才能完成。
(2)B/S模式:(瀏覽器/服務(wù)器模式)
B/S模型是為了方便用戶在Web下發(fā)布數(shù)據(jù)。通常用戶端只需要安裝一個瀏覽器,直接訪問該測控網(wǎng)站的地址,就可以監(jiān)視遠(yuǎn)程測控點(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):
?、倬哂蟹植夹蕴攸c(diǎn),可以隨時隨地進(jìn)行查詢、瀏覽等業(yè)務(wù)處理。
?、跇I(yè)務(wù)擴(kuò)展簡單方便,通過增加網(wǎng)頁即可增加服務(wù)器功能。
?、劬S護(hù)簡單方便,只需要改變網(wǎng)頁,即可實現(xiàn)所有用戶的同步更新。
?、荛_發(fā)簡單,共享性強(qiáng)。
B/S模式的缺點(diǎn):
?、賯€性化特點(diǎn)明顯降低,無法實現(xiàn)具有個性化的功能要求。
?、诓僮魇且允髽?biāo)為最基本的操作方式,無法滿足快速操作的要求。
③頁面動態(tài)刷新,響應(yīng)速度明顯降低。
?、軣o法實現(xiàn)分頁顯示,給數(shù)據(jù)庫訪問造成較大的壓力。
?、莨δ苋趸?,難以實現(xiàn)傳統(tǒng)模式下的特殊功能要求。
綜上所述,B/S模式建立在廣域網(wǎng)上,面向不同的用戶群,分散地域,這是C/S模式無法作到的。與操作系統(tǒng)平臺關(guān)系最小。C/S模式多是建立的 Window平臺上,表現(xiàn)方法有限,對程序員普遍要求較高,B/S模式建立在瀏覽器上,有更加豐富和生動的表現(xiàn)方式與用戶交流。。并且大部分難度減低,降低開發(fā)成本。鑒于兩種結(jié)構(gòu)模式優(yōu)缺點(diǎn)性能的比較和筆者的論文實現(xiàn)難以上考慮,本文的遠(yuǎn)程測控系統(tǒng)采用B/S模式。
4.2 LabVIEW實現(xiàn)網(wǎng)絡(luò)通信的方法研究
數(shù)控機(jī)床遠(yuǎn)程測控系統(tǒng)有多種實現(xiàn)網(wǎng)絡(luò)通信的方法。
其中,基于虛擬儀器LabVIEW實現(xiàn)網(wǎng)絡(luò)通信有四大類方法:
(1)使用網(wǎng)絡(luò)通信協(xié)議編程實現(xiàn)網(wǎng)絡(luò)通信,可以使用的通信協(xié)議類型包括TCP/IP協(xié)議、UDP、串口通信協(xié)議、無線網(wǎng)絡(luò)協(xié)議、Socket等;
?。?)使用基于TCP/IP的數(shù)據(jù)傳輸協(xié)議DSTP的DataSocket技術(shù)實現(xiàn)網(wǎng)絡(luò)通信;
?。?)使用共享變量實現(xiàn)網(wǎng)絡(luò)通信;
?。?)通過遠(yuǎn)程訪問來實現(xiàn)網(wǎng)絡(luò)通信。
本節(jié)將簡單地分析了各種方法的優(yōu)缺點(diǎn)及應(yīng)用場合。
4.2.1 TCP與UDP通信技術(shù)
TCP與UDP,這些協(xié)議在絕大多數(shù)計算機(jī)上都有安裝,因此他們的使用更為普遍,但是正是由于這些協(xié)議更加基礎(chǔ),因此針對它們的編程要更加復(fù)雜,用戶需要考慮如何建立連接、分配端口號、進(jìn)行地址轉(zhuǎn)換等。LabVIEW為用戶提供了封裝好的VI函數(shù),大大簡化了TCP與UDP編程。
網(wǎng)絡(luò)通信協(xié)議是網(wǎng)絡(luò)中傳遞、管理信息的一些規(guī)范,是計算機(jī)之間相互通信需要共同遵守的一些規(guī)則。網(wǎng)絡(luò)通信協(xié)議通常被分為多個層次,每一層完成一定的功能,通信在對應(yīng)的層次之間進(jìn)行。LabVIEW中支持的通信協(xié)議類型包括TCP/IP、UDP、串口通信協(xié)議、無線網(wǎng)絡(luò)協(xié)議和郵件傳輸協(xié)議。TCP/IP協(xié)議體系是目前最成功,使用最頻繁的Internet協(xié)議,有著良好的實用性和開放性。它定義了網(wǎng)絡(luò)層的網(wǎng)際互連協(xié)議IP,傳輸層的傳輸控制協(xié)議TCP、用戶數(shù)據(jù)協(xié)議UDP等。
選擇采用C/S模式網(wǎng)絡(luò)應(yīng)用構(gòu)架時,網(wǎng)絡(luò)通信利用Socket編程。Socket是TCP/IP協(xié)議傳輸所提供的接口,一般對于軟件開發(fā)主要使用兩種類型的套接字:
?。?)流式套接字
流式套接字為應(yīng)用程序提供可靠的通信連接和無邊界限制的雙向數(shù)據(jù)流,能夠提供有序、無重復(fù)的傳輸,適用于處理大量數(shù)據(jù),并適用于要求得到響應(yīng)的應(yīng)用程序。流式套接字是基于直接連接的,建立在TCP基礎(chǔ)上。TCP三次握手——使用TCP協(xié)議的流程圖如圖4.2所示
?。?)數(shù)據(jù)報套接字
支持雙向數(shù)據(jù)流動,但不能保證數(shù)據(jù)的順序和不重復(fù)性,同時也不十分可靠。數(shù)據(jù)報是無連接的,由UDP(用戶數(shù)據(jù)報協(xié)議)支持,幾乎是直接建立在IP層上,傳輸速度比較快。UDP即用戶數(shù)據(jù)報協(xié)議,它是一種無連接協(xié)議,因此不需要像TCP那樣通過三次握手來建立一個連接。同時,一個UDP應(yīng)用可同時作為應(yīng)用的客戶端或服務(wù)器端。由于UDP協(xié)議并不需要建立一個明確的連接,因此建立UDP應(yīng)用要比建立TCP應(yīng)用簡單得多。它比TCP協(xié)議更為高效,也能更好地解決實時性的問題。使用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地址和端口號。*/
};
struct sockaddr_in
{
short int sa_family; /*地址族*/
unsigned short int sin_port; /*端口號*/
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ò)的底層實現(xiàn)。在設(shè)計上采用C/S(客戶端/服務(wù)器)通信模式,VI程序分為兩部分:處理主機(jī)工作在Server模式,完成數(shù)據(jù)接收,并提供數(shù)據(jù)的相關(guān)處理;數(shù)據(jù)點(diǎn)計算機(jī)工作于Client模式,實現(xiàn)數(shù)據(jù)傳送。TCP傳輸數(shù)據(jù)過程如下:首先由發(fā)送端發(fā)送連接請求,接收端偵聽到請求后回復(fù)并建立連接,然后開始傳輸,數(shù)據(jù)傳輸完成后關(guān)閉連接,傳輸過程結(jié)束。
(3)利用TCP協(xié)議通信實例
以下通過C/S(客戶端/服務(wù)器)通信模式實現(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個正弦信號數(shù)據(jù),用兩個“TCP Write”節(jié)點(diǎn)來發(fā)送數(shù)據(jù),第一個節(jié)點(diǎn)用來發(fā)送波形數(shù)據(jù)的長度,第二個節(jié)點(diǎn)發(fā)送波形數(shù)據(jù),最后,用“TCP Close Connection”節(jié)點(diǎn)結(jié)束連接。程序框圖如圖4.4所示:
在客戶端,用“TCP Open Connection”節(jié)點(diǎn)打開TCP連接,用兩個“TCP Read”節(jié)點(diǎn)讀取數(shù)據(jù),第一個節(jié)點(diǎn)接收波形長度作為第二個節(jié)點(diǎn)的輸入,第二個節(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中實現(xiàn)網(wǎng)絡(luò)通信的最簡單方法就是DataSocket.由于DataSocket可以應(yīng)用于任何編程環(huán)境,而且支持多種協(xié)議(PSP、 DSTP、OPC、LOOKOUT、HTTP、FTP和文件訪問)。DataSocket是一種編程技術(shù),它簡化了網(wǎng)絡(luò)計算機(jī)之間尤其是現(xiàn)場數(shù)據(jù)的交換。 DataSocket技術(shù)是一種面向測控領(lǐng)域的網(wǎng)上實時數(shù)據(jù)交換編程技術(shù),DataSocket技術(shù)基于Microsoft的COM和ActiveX技術(shù),對TCP/IP協(xié)議進(jìn)行高度封裝,它包括了通用資源定位符URL (UNIform Resource Locator)和文件格式等技術(shù)規(guī)范。它能大大簡化Internet網(wǎng)上計算機(jī)之間測控數(shù)據(jù)交換的編程工作。DataSocket也可用于一臺計算機(jī)內(nèi)或局域網(wǎng)中多個應(yīng)用程序之間的數(shù)據(jù)交換,DataSocket的體系結(jié)構(gòu)如圖所示。
?。?)DataSocket邏輯構(gòu)成DataSocket包括DataSocket Server Manager(以下簡Manager),DataSocket Server和DataSocket API一部分。
Manager是一個獨(dú)立運(yùn)行的程序,主要功能有:設(shè)置DataSocket Server連接的客戶端程序的最大數(shù)目和創(chuàng)建數(shù)據(jù)項的最大數(shù)目:創(chuàng)建用戶組和用戶;設(shè)置用戶創(chuàng)建和讀寫數(shù)據(jù)項的權(quán)限;限制身份不明的客戶對服務(wù)器進(jìn)行訪問和攻擊。例如,將Manager中的Default Reader設(shè)置為everyhost,則網(wǎng)中的每臺客戶計算機(jī)都可以讀取服務(wù)器上的數(shù)據(jù)。Manager對DataSocket Server的配置必須在本地計算機(jī)上進(jìn)行,而不能遠(yuǎn)程配置或通過運(yùn)行程序來配置。
DataSocket Server是一個必須運(yùn)行在服務(wù)器端的程序,負(fù)責(zé)監(jiān)管Manager中所設(shè)定的具有各種權(quán)限的用戶組和客戶端程序之間的數(shù)據(jù)交換。DataSocket Server通過內(nèi)部數(shù)據(jù)自描述格式對TCP/IP進(jìn)行優(yōu)化和管理,簡化Internet.通信方式,提供自由的數(shù)據(jù)傳輸,可以直接傳送虛擬儀器程序所采集到的布爾型、數(shù)字型、字符串型、數(shù)組型和波形等常用類型的數(shù)據(jù)。它可以和測控應(yīng)用程序安裝在同一臺計算機(jī)上,也可以分裝在不同的計算機(jī)上,以便用防火墻進(jìn)行隔離來增加整個系統(tǒng)的安全性。DataSocket Server不會占用測控計算機(jī)CPU的工作時間,測控應(yīng)用程序可以運(yùn)行得更快。
DataSocket API提供獨(dú)立的接口,用于不同的語言平臺內(nèi)部多種數(shù)據(jù)類型的通讀。在LabVIEW中,DataSocket API被制作成ActiveX控件和一系列功能VI(Virtual Instrument),用戶可以方便地使用。一般由服務(wù)器進(jìn)行數(shù)據(jù)采集,根據(jù)需要將測量地數(shù)據(jù)寫入DataSocket數(shù)據(jù)公共區(qū),然后客戶端通過網(wǎng)絡(luò)充數(shù)據(jù)公共區(qū)讀取所需地測量數(shù)據(jù)。DataSocket API包含有Open、Read、Write和Close等函數(shù),其中的Read和Write函數(shù)又分為單個或數(shù)組形式的字符串型、布爾型、數(shù)值型和波形等多種類型。DataSocket技術(shù)可在C語言、VB和LabVIEW等多種開發(fā)環(huán)境中應(yīng)用。
?。?)DataSocket資源定位
DataSocket對外提升資源定位接口和功能調(diào)用接口,通過同意資源定位符(URL)對數(shù)據(jù)的傳輸目的地進(jìn)行定位,讀數(shù)據(jù)時為源地址,寫數(shù)據(jù)時為宿地址。在資源定位符中標(biāo)明數(shù)據(jù)的傳輸協(xié)議、網(wǎng)絡(luò)計算機(jī)標(biāo)志和數(shù)據(jù)緩沖區(qū)變量。DataSocket支持多種數(shù)據(jù)傳送協(xié)議,不同的URL前綴表示不同的協(xié)議或數(shù)據(jù)類型。主要包括:
?、貲STP(DataSocket Transfer Protocol):DataSocket的專門通信協(xié)議,可以傳輸各種類型的數(shù)據(jù),當(dāng)使用這個協(xié)議時,VI與DataSocket Server連接,用戶必須為數(shù)據(jù)提供一個附加到URL的標(biāo)識Tag,DataSocket連接利用Tag在DataSocket Server上為一個特殊的數(shù)據(jù)項目指定地址,目前應(yīng)用虛擬儀器技術(shù)組建的測量網(wǎng)絡(luò)大多采用該協(xié)議;
?、贖TTP(Hyper Text Transfer Protocol,超文本傳輸協(xié)議);
③FTP(File Transfer Protocol,文件傳輸協(xié)議);
?、躉PC(OLE for Process Control,操作計劃和控制);特別為實時產(chǎn)生的數(shù)據(jù)而涉及,例如工業(yè)自動化操作而產(chǎn)生的數(shù)據(jù)。要使用該協(xié)議,須首先運(yùn)行OPC Server;
?、軫ieldpoint,Logos,Lookout:分別為NI FieldPoint模塊,LabVIEW數(shù)據(jù)記錄與監(jiān)控(DSC)模塊及NI Lookout模塊的通信協(xié)議;
?、轋ile(local file servers,本地文件服務(wù)器);可提供一個到包含數(shù)據(jù)的本地文件或網(wǎng)絡(luò)文件的連接。
(3)DataSocket網(wǎng)絡(luò)通信實現(xiàn)途徑
在LabVIEW中運(yùn)用DataSocket技術(shù)實現(xiàn)網(wǎng)絡(luò)通信有兩種途徑:前面板控件屬性直接連接和利用DataSocket VI編程。具體實現(xiàn)方式見下圖4.8所示:
用DataSocket在數(shù)據(jù)發(fā)送端首先形成具有一定規(guī)律的數(shù)據(jù)流,再用DataSocket控件的寫操作把這些數(shù)據(jù)傳輸?shù)紻ataSocket服務(wù)器,在各客戶端用讀操作從服務(wù)器獲取數(shù)據(jù)流,然后對數(shù)據(jù)流進(jìn)行解析并恢復(fù)為原始信息在客戶端形成的響應(yīng)。這樣就實現(xiàn)協(xié)同工作的基本流程。整個應(yīng)用分成“寫”和 “讀”兩個模塊。
寫模塊的核心時DataSocket write vi.它在工作前需要用戶指定數(shù)據(jù)宿的URL地址。
VI每次從上一步程序接收數(shù)據(jù)后形成數(shù)據(jù)包并送到目標(biāo)地址。在數(shù)據(jù)傳送過程中,寫端計算機(jī)的DataSocket Server會實時監(jiān)視網(wǎng)絡(luò)連接和數(shù)據(jù)傳送情況。“寫”模塊選擇條件為“True”時的程序,詳見圖4.8.
讀模塊起核心作用的時DataSocket Read vi,其數(shù)據(jù)源的URL地址須與數(shù)據(jù)宿的URL地址相同,要注意接收的數(shù)據(jù)類型與寫端輸出的數(shù)據(jù)類型一致。讀端計算機(jī)也會運(yùn)行DataSocket Server來監(jiān)視網(wǎng)絡(luò)接收和數(shù)據(jù)接收情況。“讀”模塊程序詳見圖4.9.
有時網(wǎng)絡(luò)擁塞會使數(shù)據(jù)傳送周期變長,可以在程序的循環(huán)中設(shè)置等待時間(ms),本應(yīng)用寫端和讀端分別設(shè)計為1000和100.在實際現(xiàn)場應(yīng)用時,應(yīng)盡量有專用的傳送線路,一面網(wǎng)絡(luò)擁塞時發(fā)生數(shù)據(jù)丟失。DataSocket Server讀取的數(shù)據(jù)可以做進(jìn)一步的處理,并存儲起來以供調(diào)用。
評論