关键词: 虚拟仪器;远程网络;测控技术;一致性;DataSocket
1 前言
随着网络技术的引入,虚拟仪器技术渐渐向网络化方向发展,很多测试任务也提出了远程测试的要求。于是,网络化的虚拟仪器成了虚拟仪器技术的一个发展方向。虚拟仪器技术与网络技术的结合及其在测控领域中的应用,是对传统测控方式的一场革命。应用LabVIEW作为虚拟仪器软件开发平台,为开发高性能的计算机测控系统提供了极大的便利。测控方式的网络化,是未来测控技术发展的必然趋势,通过建立分布式网络测控系统,能够充分利用现有资源和网络带来的种种好处,实现各种资源最有效合理的配置。应用分布网络测控,可以进行多点测量,多点分析处理。这样既可以充分发挥服务器控制测试仪器的接口能力,又能发挥客户机数据处理能力,而且便于系统的扩展。
2 远程测控的实现
2.1 远程测控系统的组成
根据远程测控数据流量状况及不同的测试需求可采用基于Client/Server(简写为C/S)和Browser/Server(简写为B/S)两种网络模型组建远程测试系统。本课题采了C/S模式,其适合数据传送量大的情况,而且具有效率高,数据可靠完整、兼容性强等特点。远程测控系统结构图如图4.9所示。其中测控服务器作为测量发布节点,主要完成数据采集、数据发布以及将采集的数据存储到数据库服务器中的功能。Web服务器主要提供基本的网站功能,客户端通过访问该网站,可以获得数据库服务器中的实时作业信息和历史数据。另外,客户端利用虚拟仪器应用程序建立与服务器端的网络通信,监测和控制服务器端的作业,接收来自服务器端的作业数据,并进行数据分析处理、数据处理结果的存储与显示、生成数据报表以及数据或波形打印等。
图一:远程测控系统结构图
2.2 基于C/S模式的DataSocket技术
在基于计算机的远程测控中,虽然目前已经有TCP/IP、DDE等多种用于两个应用程序之间共享数据的技术,但这些技术都不是用于实时数据(Live Data)传输的。只有DataSocket(DS)是一项在测量和自动化应用中用于共享和发布实时数据的技术。DataSocket技术是一种简单易用的网络数据通信技术,它封装了TCP/IP编程细节(如选择端口号、定义协议、创建连接、字节流处理、错误处理等),使测试工程师不用了解底层的网络编程技术,就可以方便的搭建网络化虚拟仪器测试系统。
LabView开发环境安装后就会在Windows的程序菜单中增加National Instruments DataSocket条目,包括DS 的两个组件Datasocket Server Manager和 DataSocket Server。其中,DataSocket Server是一个小巧、独立运行的程序,利用DS技术传输数据必须在发布数据的机器上打开DataSocket Server。发布数据的程序通过它进行数据输出;输入数据的程序找到它才能接收数据。DataSocket Server的面板如图4.10,其显示了主机zhangtianyi.workgroup当前连接到DS上的任务数和已经发送的数据包数。Datasocket Server Manager和 DataSocket Server主要功能是设置DS Server可连接的客户数目和可创建的数据项目数、设置用户权限、预定义数据项等。
图 二:DS服务器面板
DataSocket API提供了一个用于多样编程语言、多种数据类型通讯的单一接口,它在LabView中的形式之一是两个函数DataSocket Read 和DataSocket Write。发布数据时用DataSocket Write函数自动地将用户数据转化为在网络上传递的字节流,接收数据时用DataSocket Read将字节流还原到它原始的形式。
DS传递数据的3个部分,即发布数据程序、DS服务器和接收数据的程序,可以放在同一台机器上,但更有普遍意义的是将发布数据程序和DS服务器放在一台机器上,将其作为测控服务器,而接收数据的程序在另一台机器上运行,将其作为客户机。本课题便是采用了后者的方案来实现远程测控的。由测控服务器首先进行数据采集,然后把采集到的数据发布到DataSocketServer中,客户端便可以同步地从DataSocket Server中接收数据,这样可保证客户端数据与原始实验数据的一致性。应用DataSocket技术进行实时数据传输的框图例程如图三所示。
图 三:DataSocket的数据发布和数据接收程序框图(左为发布右为接收)
利用DataSocket技术实现网络化测控具有许多优越性。突出的一点就是安全性高。利用DataSocket ServerManager可以设定客户端连接数目、数据项数目,创建用户组和用户,设置用户读/写以及创建数据项的权限(未设定权限的用户对服务器不可访问)。另外,DataSocket传输数据的端口使用3015,此端口已经通过IANA(Internet地址分配机构)注册为DSTP协议专用端口,因此可以在防火墙外部的计算机上运行DataSocket服务器,同时可保证在防火墙内部的计算机上安全地运行数据发布等应用程序DataSocket传输的数据本身包含很小的头文件,因此,数据传输速度快,适合于在网络上大量实时数据的传输。
3 数据传送与接收的一致性问题
在进行信号的采集时,采集的各数据跟时间是密切相关的,因此,时间信息及其它相关信息需要和采集的实时数据一起进行传递。可以采取在发布端发送多个数据项的方法解决,即把实时数据、时间、及其他信息分别建立各自的数据项,之后经采集服务器端的DataSocket Publisher分别发布给DataSocket Server,再由客户端分别接收。但经测试发现,会产生伪数据现象。为保证客户端接收数据的一致性,采用数据属性方法,把时间等信息作为数据属性同实时数据绑定后再进行数据发布。这样在服务器和客户端之间传递的是实时数据、时间等内容的绑定整体,所有的传递信息同时到达数据接收端,之后再由接收端利用数据属性来提取相应的数据。采用这种措施后即使传输过程中出现数据丢失现象,丢失的也只能是绑定的数据包,并不会对下次传来的数据产生影响,实验的伪数据就不会产生了,从而避免了因某一项数据丢失而无法匹配或匹配错误情况的发生。
测控服务器端在采集、分析的同时,要求客户端能够正确、同步地实时显示测试结果。如果仅用DataSocket中的DataSocket Write.vi和 DataSocket Read.vi来简单实现,往往会出现以下问题:发送数据和接受的数据并不同步,并且会接收到许多的无用数据,如DataSocket Read.vi中出现Timeout提示,会再次返回上一次的接收数据或读不到数据,返回“0”值等,这些都是与测控过程无关的伪数据,反而导致接收端显示的混乱。为解决这个问题,即要保证客户端接收数据的一致性,可采用上面提出的数据属性方法,把标识号与实时数据绑定、打包后后再进行数据发布。具体是将每个数据包分为两项:数据项和属性项,分别存放采集数值和本次发送的标记—序号Q,然后发包给DataSocket;接收方也建立一个接收标记—序号P(初值与序号Q同),由于每个包都有一个唯一的序号,因此接收方每次读到数据包时,只按序号P与序号Q的一致性来判断是否接收包并存放到显示数组中,之后将序号P自动加1(即预置为下一个接收包的序号)为下次传送做准备。如果某次从DataSocket Read.vi中返回的数据包中序号Q为0或其它值,就会与当前序号P中的值不一致,表明此数据包无效,客户端不予接收并循环等待读取下一个数据包。图四为程序流程:
图 四:收发数据流程
4 创新点总结
本文的创新点是提出了一种基于虚拟仪器的远程网络测控系统实现方案,详细分析了远程测控系统的总体框架和实现技术。并且随着网络技术的引入,虚拟仪器技术渐渐向网络化方向发展,很多测试任务也提出了远程测试的要求。网络化的虚拟仪器已经成为虚拟仪器技术的一个发展方向。课题采用基于C/S模式的DataSocket技术,解决了数据传送与接收的一致性问题,实现了虚拟仪器的的远程测控功能。
参考文献:
1 王承 何志伟 基于虚拟仪器的网络化自动测试系统的构架及实现[J] 电子技术应用 2002
2 武安河,周利莉编著.Windows设备驱动程序(VxD 与WDM)开发实务[M].电子工业出版社,2001
3 石傅强 赵德永等LabVIEW6.1编程技术实用教程[M] 中国铁道出版社 2000
4 龚崇权. 基于现场总线技术的虚拟仪器开发[J],微计算机信息,2006,2-1:177-178