新聞中心

        EEPW首頁 > 測試測量 > 設計應用 > 基于DataSocket技術的LabVIEW遠程測控

        基于DataSocket技術的LabVIEW遠程測控

        作者: 時間:2017-01-06 來源:網絡 收藏
        DataSocket技術基于TCP/IP協議并對其進行高度封裝,能在測試測量過程中實現服務器與多用戶的實時數據交換與共享,而用戶不必關心程序底層的細節。本文分析DataSocket的內部組成及利用URL進行資源定位的方式,詳細討論基于DataSocket的LabVIEW遠程測控方法。通過局域網開發的典型應用實現網絡測控數據的實時發布與讀取。隨著測控系統的網絡化,其應用前景將越來越廣闊。


        1、LabVIEW及其網絡通信

        LabVIEW是NI(National Instruments)公司具有革命性的圖形化虛擬儀器開發環境,它內置信號采集、測量分析與數據顯示功能,集開發、調試、運行于一體,目前版本為LabVIEW 7.1。LabVIEW 51及以后的版本充分考慮測控系統的網絡化要求,集成各種通信協議,提供豐富的網絡化組件。

        使用LabVIEW實現網絡通信有4種方法:①無須具體協議的遠程桌面連接;②使用DataSocket技術進行網絡通信;③現成實時發布測控程序的網頁,異地使用瀏覽器(如Internet Explorer,Netscape Communicator等)進行監控;④使用TCP、DDP等傳輸控制協議編程進行網絡通信。

        測試數據在網上的發布和共享是遠程測控系統工程應用的關鍵技術之一。雖然現存的TCP/IP和DDE(動態數據交換)等多種技術可以實現應用程序間的數據共享,但大多數使用起來并不方便,開發效率不高,甚至不能滿足數據實時傳輸的需求,日益廣泛和復雜的網絡應用勢必需要大量的編程工作。DataSocket專為測量數據的實時傳送而涉及,是虛擬儀器涉及過程中面向網絡測控的技術擴展,能簡化系統開發過程,滿足正確傳輸,實時通信和網絡安全的涉及要求,特別適合于遠程數據采集、監控和數據共享等應用程序的開發。

        2、DataSocket技術

        DataSocket機遇Microsoft的COM和ActiveX技術,源于TCP/IP協議并對其進行高度封裝,面向測量和自動化應用,用于共享和發布實時數據,是一種易用的高性能數據交換編程接口。它能有效地支持本地計算機上不同應用程序對特定數據地同時應用,以及網絡上不同計算機地多個應用程序之間的數據交互,實現跨及其、跨語言、跨進程的實時數據共享。用戶只需要知道數據源和數據宿及需要交換的數據就可以直接進行高層應用程序的開發,實現高速數據傳輸,而不必關心底層的實現細節,從而簡化通信程序的編寫過程,提高編程效率。

        2.1 DataSocket邏輯構成

        本文引用地址:http://www.104case.com/article/201701/337108.htm

        DataSocket包括DataSocket Server Manager(以下簡稱Manager),DataSocket Server和DataSocket API一部分。

        Manager是一個獨立運行的程序,主要功能有:設置DataSocket Server連接的客戶端程序的最大數目和創建數據項的最大數目:創建用戶組和用戶;設置用戶創建和讀寫數據項的權限;限制身份不明的客戶對服務器進行訪問和攻擊。例如,將Manager中的Default Reader設置為everyhost,則網中的每臺客戶計算機都可以讀取服務器上的數據。Manager對DataSocket Server 的配置必須在本地計算機上進行,而不能遠程配置或通過運行程序來配置。

        DataSocket Server 是一個必須運行在服務器端的程序,負責監管Manager中所設定的具有各種權限的用戶組和客戶端程序之間的數據交換。DataSocket Server通過內部數據自描述格式對TCP/IP進行優化和管理,簡化Internet通信方式,提供自由的數據傳輸,可以直接傳送虛擬儀器程序所采集到的布爾型、數字型、字符串型、數組型和波形等常用類型的數據。它可以和測控應用程序安裝在同一臺計算機上,也可以分裝在不同的計算機上,以便用防火墻進行隔離來增加整個系統的安全性。DataSocket Server不會占用測控計算機CPU的工作時間,測控應用程序可以運行得更快。使用DataSocket技術進行通信時服務器和客戶端得計算機上筆形都進行DataSocket Server。

        DataSocket API提供獨立的接口,用于不同的語言平臺內部多種數據類型的通讀。在LabVIEW中,DataSocket API被制作成ActiveX控件和一系列功能VI(Virtual Instrument),用戶可以方便地使用。一般由服務器進行數據采集,根據需要將測量地數據寫入DataSocket 數據公共區,然后客戶端通過網絡充數據公共區讀取所需地測量數據。

        2.2 DataSocket 資源定位

        DataSocket 對外提升資源定位接口和功能調用接口,通過同意資源定位符(URL)對數據的傳輸目的地進行定位,讀數據時為源地址,寫數據時為宿地址。在資源定位符中標明數據的傳輸協議、網絡計算機標志和數據緩沖區變量。DataSocket支持多種數據傳送協議,不同的URL前綴表示不同的協議或數據類型。主要包括:(1)dstp(DataSocket Transfer Protocol):DataSocket 的專門通信協議,可以傳輸各種類型的數據,當使用這個協議時,VI與DataSocket Server連接,用戶必須為數據提供一個附加到URL的標識Tag,DataSocket連接利用Tag在DataSocket Server上為一個特殊的數據項目指定地址,目前應用虛擬儀器技術組建的測量網絡大多采用該協議;(2)http(Hyper Text Transfer Protocol,超文本傳輸協議);(3)ftp(File Transfer Protocol,文件傳輸協議);(4)opc (OLE for Process Control,操作計劃和控制);特別為實時產生的數據而涉及,例如工業自動化操作而產生的數據。要使用該協議,必須首先運行一個OPC Server;(5)fieldpoint,logos,lookout:分別為NI FieldPoint 模塊,LabVIEW數據記錄與監控(DSC)模塊及NI Lookout模塊的通信協議;(6)file(local file servers,本地文件服務器);可提供一個到包含數據的本地文件或網絡文件的連接。

        3、DataSocket網絡通信實現途徑

        在LabVIEW中運用DataSocket技術實現網絡通信有兩種途徑:前面板控件屬性直接連接和利用DataSocket VI編程。

        3.1 前面板控件直接連接

        LabVIEW為每一前面板控件都設定一個DataSocket Connection屬性,利用它可以實現不同計算機上相對應得兩個甚至多個同類型控件之間的DataSocket通信。通過規定URL和控件連接方式就可以在本地和遠程進行實時無誤差的數據發布(Publish)和讀取(Subscribe)。

        連接方式中的Publish和Subscribe方式為雙向傳輸提供方便,兩臺計算機中的任何一臺都可以控制另外一臺計算機的控件數值。例如,要將本地波形顯示器(Waveform Graph)的數據與網絡中的其他計算機共享,可在本地波形顯示器的DataSocket Connection屬性對話框中指定URL,并選擇Publish連接方式,異地波形顯示器的DataSocket Connection對話框中URL應符合以下格式:dstp://servernamecom/waveformdata,其中servername com是本地計算機的網址,它可以是計算機名、IP地址或計算機域名:waveformdata是數據的名稱標識(tag),用以區別不同的DataSocket連接。這樣兩異地控件就建立連接。運行兩程序,當控件右上角的方框層綠色時,標明數據發送或接收得到正確連接,本地控件的數據就可實時地傳動到異地控件中;當方框呈紅色時,表明數據與DataSocket Server連接失敗。

        3.2 DataSocket功能函數

        利用控件屬性直接連接實現汪凌數據傳輸居庸無需編程、簡單易用地特點,但缺點時數據不透明,在客戶端處理服務器傳入的數據,就必須利用DataSocket函數庫提供的VI。DataSocket函數庫包含有ReadHE Write等功能節點。Read節點用于充服務器的數據公共區下載數據;Write節點用于把數據寫入服務器的數據公共區。DataSocket在讀數據文件時,支持text,txt,wave和dsd等格式;在寫數據文件時,支持text和dsd等格式。

        要寫入數據公共區的數據類型必須與數據公共區設定的數據類型一致。當有多個不同類型數據需要寫入時,可以多次發送和讀取或開辟多個相應類型的數據公共區,也可以利用功能函數Variant把多個不同類型數據轉換變為Variant類型而寫入一個數據公共區。當有多個相同類型的數據先后寫入數據公共區時,后寫入的數據會覆蓋前一個寫入的數據。


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 长海县| 南宁市| 临泉县| 包头市| 马鞍山市| 静海县| 霍林郭勒市| 嘉义市| 通州市| 灵宝市| 榆社县| 台湾省| 阳城县| 油尖旺区| 开化县| 瑞安市| 灵寿县| 台湾省| 惠东县| 彭州市| 青阳县| 洪泽县| 伊宁市| 重庆市| 武义县| 都江堰市| 桂东县| 阿巴嘎旗| 克拉玛依市| 德钦县| 兴和县| 巴塘县| 体育| 临武县| 大姚县| 博客| 鄂尔多斯市| 台山市| 茂名市| 元阳县| 泽普县|