DataSocket技术基于TCP/IP协议并对其进行高度封装,能在测试测量过程中实现服务器与多用户的实时数据交换与共享,而用户不必关心程序底层的细节。本文分析DataSocket的内部组成及利用URL进行资源定位的方式,详细讨论基于DataSocket的㎜abVIEW远程测控方法。通过局域网开发的典型应用实现网络测控数据的实时发布与读取。随着测控系统的网络化,其应用前景将越来越广阔。
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类型而写入一个数据公共区。当有多个相同类型的数据先后写入数据公共区时,后写入的数据会覆盖前一个写入的数据。 [p]
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