本篇是參考http://www.designnews.com.cn/Article/html/2006-08/20068140912163.htm的文章,
使用的軟體是LabVIEW8.2, 測試的程式為DS Write.vi與DS Read.vi,
我們把DS write.vi當是Server端, 而DS Read.vi為Client端, DS Read.vi與DS Write.vi可在同一台或不同台電腦上執行,
本篇操作環境為區域網路, Server端的DS write.vi使用有線網路的桌上型電腦, Client端的DS Read.vi使用的是有無線網路功能的筆記型電腦, 

首先, 如果是要在同一台電腦上執行DS write.vi與DS Read.vi, 把這兩個程式打開, 不做任何修改執行即可


如果是要在不同的電腦上執行, 需要知道DS write.vi 端電腦的IP, 然後將localhost用DS write.vi 端電腦的IP取代即可





以下是參考文章內容, 為了清晰與更新起見, 文中的圖我以LabVIEW8.2中的範例截圖取代


[參考文章內容]

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邏輯構成 
       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類型而寫入一個資料公共區。當有多個相同類型的資料先後寫入資料公共區時,後寫入的資料會覆蓋前一個寫入的資料。 


       4
、典型程式設計 
      
以下時採用正弦波發生器作為信號源,通過局域網組成測量網路,實現不同閘道間資料傳送的典型程式設計。
      
DataSocket在資料發送端首先形成具有一定規律的資料流程,再用DataSocket控制項的寫操作把這些資料傳輸到DataSocket伺服器,在各用戶端用讀操作從伺服器獲取資料流程,然後對資料流程進行解析並恢復為原始資訊在用戶端形成的回應。這樣就實現協同工作的基本流程。整個應用分成兩個模組。 
      
寫模組的核心時DataSocket write vi。它在工作前需要用戶指定資料宿的URL位址。VI每次從上一步程式接收資料後形成資料包並送到目標位址。在資料傳送過程中,寫端電腦的DataSocket Server會即時監視網路連接和資料傳送情況。寫模組選擇條件為“True”時的程式(見圖1)。


圖1 寫資料框圖程式

       讀模組起核心作用的時DataSocket Read vi,其資料源的URL位址須與資料宿的URL位址相同,要注意接收的資料類型與寫端輸出的資料類型一致。讀端電腦也會運行DataSocket Server來監視網路接收和資料接收情況。讀模組程式(見圖2)。 


圖2 讀數據框圖程式

       有時網路擁塞會使資料傳送週期變長,可以在程式的迴圈中設置等待時間(ms),本應用寫端和讀端分別設計為100和50。在實際現場應用時,應儘量有專用的傳送線路,一面網路擁塞時發生資料丟失。DataSocket Server讀取的資料可以做進一步的處理,並存儲起來以供調用。
寫端和讀端的波形資料監視視窗(見圖3)。 


圖3 網路測試結果

       5、遠端測控通信安全 
       LabVIEW不但提供強大的網路通信服務,而且也提供一定的網路安全服務。運用DataSocket技術實現網路通信時,LabVIEW通過Manager對用戶和用戶組讀寫許可權的設置來實現網路通信的安全控制,但這樣的基本通信安全保證對於遠端分散式測控系統顯得並不完備,應根據不同的安全要求採取相應措施。 
       對網路安全要求一般的系統,可專門指定一台電腦作為伺服器,並通過防火牆與Interner相連。測控端將測試資料寫入伺服器,用戶端通過防火牆訪問伺服器獲得所需的測試資料。防火牆可以有效地防止非授權用戶的訪問,強制資料流程只能從特定的安全點流向Internet。由於測控端和伺服器時分離的,即使安全防護失效也只會影響伺服器而不能影響測控端和用戶端。對安全有特殊要求的系統,則應採用專用網路,並對資料進行加密。
       6、結語 
       DataSocket技術隱藏網路傳輸細節,能方便地實現測試終端和現場儀器之間地資料交換,同時滿足即時性、安全性地指標要求。目前DataSocket在10M網路中的傳輸速率可達到640Kb/s。對於中頻以下的資料獲取系統,可以達到很好的傳輸效果。隨著網路技術的飛速發展和網路通道容量的不斷擴大,測控系統的網路化已經成為現代測量與自動化應用的發展趨勢。依靠DataSocket和網路技術,人們將能更有效地控制遠端儀器設備,設置在任何地方進行資料獲取、分析、處理和顯示,並利用各地專家地優勢,獲得正確的測量、控制和診斷結果。
       參考文獻
[1] National Instruments, DataSocket T echinical Overview [M],Texas:National Instruments, 1998
[2] 楊樂平,李海濤,趙勇等. LabVIEW高級程式設計[M],北京;清華大學出版社,2003.
[3] National Instruments, LabVIEW Help[M],Texas:National Instruments,2003.
[4] National Instruments, LabVIEW User Manutal[M], Texas:National Instruments,2003.


arrow
arrow
    全站熱搜

    fishark 發表在 痞客邦 留言(0) 人氣()