基于LabVIEW的數(shù)控機(jī)床網(wǎng)絡(luò)測控系統(tǒng)--網(wǎng)絡(luò)通信關(guān)鍵技術(shù)研究 (一)
4.2.2 DataSocket技術(shù)
本文引用地址:http://m.butianyuan.cn/article/270596.htm在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)場數(shù)據(jù)的交換。DataSocket技術(shù)是一種面向測控領(lǐng)域的網(wǎng)上實(shí)時(shí)數(shù)據(jù)交換編程技術(shù),DataSocket技術(shù)基于Microsoft的COM和ActiveX技術(shù),對TCP/IP協(xié)議進(jìn)行高度封裝,它包括了通用資源定位符URL (UNIform Resource Locator)和文件格式等技術(shù)規(guī)范。它能大大簡化Internet網(wǎng)上計(jì)算機(jī)之間測控?cái)?shù)據(jù)交換的編程工作。DataSocket也可用于一臺計(jì)算機(jī)內(nèi)或局域網(wǎng)中多個應(yīng)用程序之間的數(shù)據(jù)交換,DataSocket的體系結(jié)構(gòu)如圖所示。
(1)DataSocket邏輯構(gòu)成DataSocket包括DataSocket Server Manager(以下簡Manager),DataSocket Server和DataSocket API一部分。
Manager是一個獨(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)限;限制身份不明的客戶對服務(wù)器進(jìn)行訪問和攻擊。例如,將Manager中的Default Reader設(shè)置為everyhost,則網(wǎng)中的每臺客戶計(jì)算機(jī)都可以讀取服務(wù)器上的數(shù)據(jù)。Manager對DataSocket Server的配置必須在本地計(jì)算機(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ì)算機(jī)上,以便用防火墻進(jìn)行隔離來增加整個系統(tǒng)的安全性。DataSocket Server不會占用測控計(jì)算機(jī)CPU的工作時(shí)間,測控應(yīng)用程序可以運(yùn)行得更快。
DataSocket API提供獨(dú)立的接口,用于不同的語言平臺內(nèi)部多種數(shù)據(jù)類型的通讀。在LabVIEW中,DataSocket API被制作成ActiveX控件和一系列功能VI(Virtual Instrument),用戶可以方便地使用。一般由服務(wù)器進(jìn)行數(shù)據(jù)采集,根據(jù)需要將測量地?cái)?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)用。
(2)DataSocket資源定位
DataSocket對外提升資源定位接口和功能調(diào)用接口,通過同意資源定位符(URL)對數(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ù)類型。主要包括:
?、貲STP(DataSocket Transfer Protocol):DataSocket的專門通信協(xié)議,可以傳輸各種類型的數(shù)據(jù),當(dāng)使用這個協(xié)議時(shí),VI與DataSocket Server連接,用戶必須為數(shù)據(jù)提供一個附加到URL的標(biāo)識Tag,DataSocket連接利用Tag在DataSocket Server上為一個特殊的數(shù)據(jù)項(xiàng)目指定地址,目前應(yīng)用虛擬儀器技術(shù)組建的測量網(wǎng)絡(luò)大多采用該協(xié)議;
?、贖TTP(Hyper Text Transfer Protocol,超文本傳輸協(xié)議);
?、跢TP(File Transfer Protocol,文件傳輸協(xié)議);
?、躉PC(OLE for Process Control,操作計(jì)劃和控制);特別為實(shí)時(shí)產(chǎn)生的數(shù)據(jù)而涉及,例如工業(yè)自動化操作而產(chǎn)生的數(shù)據(jù)。要使用該協(xié)議,須首先運(yùn)行OPC Server;
⑤Fieldpoint,Logos,Lookout:分別為NI FieldPoint模塊,LabVIEW數(shù)據(jù)記錄與監(jiān)控(DSC)模塊及NI Lookout模塊的通信協(xié)議;
⑥File(local file servers,本地文件服務(wù)器);可提供一個到包含數(shù)據(jù)的本地文件或網(wǎng)絡(luò)文件的連接。
(3)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ù)流,然后對數(shù)據(jù)流進(jìn)行解析并恢復(fù)為原始信息在客戶端形成的響應(yīng)。這樣就實(shí)現(xiàn)協(xié)同工作的基本流程。整個應(yīng)用分成“寫”和“讀”兩個模塊。
寫模塊的核心時(shí)DataSocket write vi.它在工作前需要用戶指定數(shù)據(jù)宿的URL地址。
VI每次從上一步程序接收數(shù)據(jù)后形成數(shù)據(jù)包并送到目標(biāo)地址。在數(shù)據(jù)傳送過程中,寫端計(jì)算機(jī)的DataSocket Server會實(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ī)也會運(yùn)行DataSocket Server來監(jiān)視網(wǎng)絡(luò)接收和數(shù)據(jù)接收情況。“讀”模塊程序詳見圖4.9.
有時(shí)網(wǎng)絡(luò)擁塞會使數(shù)據(jù)傳送周期變長,可以在程序的循環(huán)中設(shè)置等待時(shí)間(ms),本應(yīng)用寫端和讀端分別設(shè)計(jì)為1000和100.在實(shí)際現(xiàn)場應(yīng)用時(shí),應(yīng)盡量有專用的傳送線路,一面網(wǎng)絡(luò)擁塞時(shí)發(fā)生數(shù)據(jù)丟失。DataSocket Server讀取的數(shù)據(jù)可以做進(jìn)一步的處理,并存儲起來以供調(diào)用。
tcp/ip相關(guān)文章:tcp/ip是什么
數(shù)字通信相關(guān)文章:數(shù)字通信原理
通信相關(guān)文章:通信原理
評論