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