1、引言
随着计算机技术、通信技术与仪器技术的深入发展和结合,使得虚拟仪器得到了进一步发展,虚拟仪器将计算机资源与仪器硬件、数字信号处理技术结合,把厂家定义仪器功能的方式转变为由用户自己定义仪器功能。用户可根据测试的需要,自己设计所需要的仪器系统,利用一种或多种功能的通用模块,调用不同功能的软件模块,组成不同的仪器功能。在虚拟仪器中,计算机成为仪器的一部分,使得计算机可以得到充分发挥。除了仪器的输入、输出、数据处理分析、结果显示由计算机完成外,还可组成计算机网络。一个大的复杂的测试系统往往系统的测量、输入、输出、结果分析分布在不同的地理位置,仅用一台计算机并不能胜任测试任务,需要由分布在不同地理位置的若干计算机共同完成整个测试任务。计算机网络技术、总线技术与数据库技术的发展,乃至Internet网的发展拓展了虚拟仪器测试系统的应用范围。利用网络技术将分散在不同地理位置不同功能的测试设备联系在一起,使昂贵的硬件设备、软件在网络内得以共享,减少了设备重复投资。一台计算机采集的数据可以立即传输到另一台处理分析机上进行处理分析,分析后的结果可被执行机构、设计师查询使用,使数据采集、传输、处理分析成为一体,容易实现实时采集、实时监测。重要的数据实行多机备份,提高了系统的可靠性。对于有些危险的、环境恶劣的不适合人员操作的数据采集工作可实行远程采集,将采集的数据放在服务器中供用户使用。虚拟仪器与计算机网络结合实现仪器的远程教学,学生通过网络学习仪器、操作仪器,这也是我们学校实验室建设的目标。虚拟仪器计算机网络化在测试系统中具有广泛的应用前景。
2、虚拟仪器网络测试系统设计
虚拟仪器网络测试系统的设计需从虚拟仪器和网络技术两方面考虑。
(1)虚拟仪器部分
分析测试系统的要求和系统的功能,根据系统功能的要求,在软件和硬件之间进行优化选择,从而确定仪器所必需的硬件模块,以便用最少的模块实现仪器的最佳功能。根据应用情况与实际的条件选择基于计算机的虚拟仪器的仪器模块(VXI总线、PCI总线、PXI总线、GPIB仪器),包括传感器、信号调理电路、DAQ数据采集、信号源等模块。
硬件确定以后,主要确定软件功能模块,哪些仪器功能由软件实现,将软件功能划分为相对独立的模块。然后选择易于编写的图形化的软件平台。LabVIEW平台是一种图形化编程环境,提供了虚拟仪器的控件、丰富的数据处理分析函数、仪器驱动程序及数据库工具软件包,LabVIEW提供的SQL、DataSocket软件都是容易建立网络化测试环境的软件包。采用LabVIEW编写虚拟仪器软件简化了程序设计,提高了效率。我们利用LabVIEW和NI的数据采集卡实现了数据采集、虚拟示波器、虚拟信号发生器。
Virsual C++是一种面向对象的通用的功能强大的程序设计语言,提供集成性及可视化用户界面,采用面向对象的程序设计方法,它具有底层操作功能,也具有数据库开发功能,编程灵活,因此也是编程人员常选用的编程语言,我们也用VC++编写了虚拟仪器平台,可以组建示波器、频谱分析仪,信号发生器。现在我们计划用VC编写数据库软件,实现网络化虚拟仪器。
(2)网络结构设计
根据测试系统各部分所处的地理位置和覆盖的范围不同可构建局域网、城域网、广域网。一个大的复杂的测试系统由各个子系统组成,如一个航空白动测试系统,一个火炮测试系统,要对其进行环境测试、温度测试、振动测试,还有电子系统、通信系统的测试等等,每个子系统一般在一个单位的小范围内,因此可建立局域网,然后将每个局域网互联,形成企业测量系统。由于Internet网的发展,一些公用的数据还可以通过Internet网将测量数据发布到网上供网上用户使用,可建立测量发布系统。对于有些危险的、环境恶劣的不适合人员操作的数据采集工作可实行远程采集。
由于网络测试中每个测试点担任不同的测试任务,为了减少不必要的重复工作,通过网络实现资源共享,同时要减轻服务器与各节点的数据传输,提高网络系统性能,因此服务器和各个节点以及各节点之间协同工作显得尤为重要。基于Client/Server模式的分布式计算、分布式处理系统是解决这个问题的最好选择。基于C/S模式,将系统功能分解到各个节点,各个节点有机配合,用户在自己的终端上就可以观察到从服务器中获取的数据和处理结果。在C/S中,分客户机(Client)程序和服务器(Sewer)程序。客户机程序和服务器程序可以运行在一台计算机中,也可运行在两台或多台计算机中,Client程序与Sewer程序相互协同处理,一个测试系统由一个或承担不同任务的多个客户机与一个或多个服务器组成。客户机是用户与系统的交互接口,提供一个用户界面,完成用户命令与数据的输入,显示服务器送回的结果。服务器接受客户机提出的申请,完成所要求的操作并将结果传送给用户。在一个测试系统中,根据任务不同,每个服务器和客户机承担的任务也不同,例如可划分为采集、数据处理分析、输出、监控。一台计算机采集外部数据,将来集的数据存储并传输给另一台计算机,它就是服务器,另外它又需要得到远地计算机的数据,这时它又成为客户机。C/S模式是一种开放式系统的协同处理工作模式。
设计C/S模式时应首先分析系统所要达到的指标和功能要求,在此基础上,把系统划分为各个相对独立的模块,分配到各个计算机上,每个计算机执行不同的功能,能在客户机上完成的独立任务就不要放在服务器上,以减低服务器的工作量。第二,要保证数据在服务器和客户机、客户机间可靠的传输。设计时需考虑网络的带宽要满足传输要求,并减少网络数据传输量。其次主要考虑的一个主要方面是选择服务器类型。C/S模式中一种最基本的服务类型就是数据库服务器,还有事务处理服务器、应用服务器、对象服务器类型。如图1-4
数据库服务器中,客户机使用一条SQL命令将服务请求发给数据库服务器,数据库将范围服务结果传给客户机。事务处理服务器把完成一项较为复杂的数据处理过程作为一项事务来对待,用一组SQL命令表示事务处理过程,服务器执行完这组命令后将结果返回客户机。应用服务器用来控制一台信息、图象或电子邮件显示设备,控制电子公告牌、具有下载能力的处理机。对象服务器的应用程序是作为一种通信对象的结构来设计的,即客户机对象和服务器对象。客户机对象用一个对象请求来代理它与服务器对象之间的所有通信任务。客户机对象请求代理在服务器上找到对应的服务器对象,并将结果返回客户机。
在测试系统中,可以设计具有采集服务的采集服务器,进行数据处理分析的服务器、服务器类型可以是数据库服务器,监控服务器、信息发布数据显示等采用应用服务器、对象服务器。根据实际情况选择合适的服务器类型对提高网络测试系统的效率很重要。 网络系统的安全性和可靠性在设计时必须要考虑的一个重要问题,这也是网络系统的热门话题,在此不再叙述。
(3)软件开发方法
由于测试系统各个节点的任务不同,所连接的数据库管理系统不一定相同,因此测试系统一般希望不依赖数据库管理系统。所以数据库的开发常采用ODBC方式,ODBC是一个数据库访问的标准接口,可以通过这个接口访问不同类的数据库,基本上可用于所有的关系数据库。不管测试数据库是哪一种关系数据库,只要有相应类型数据库的ODBC驱动程序,就可访问数据库。ODBC API包括以下组件:
① 测试应用程序;
②驱动程序管理器:根据应用程序的需要装载ODBC驱动程序。
③ODBC驱动程序:向指定的数据源提交SQL语句,向应用程序传送返回结果。
④数据源:用户要访问的数据、DBMS及操作系统。
LabVIEW提供了。DBC、SQL、DataSocket开发工具,采用这些工具编程将提高编程效率。DataSocket是NI公司推出的一种面向测量和自动化工程的网上实时数据交换的编程技术。它包括DS Sewer Manager,DS Sewer和DS函数库这几个工具软件,以及DSIP协议,通用资源定位符URL和文件格式等技术规范,它能大大简化Internet网上计算机之间的测控数据交换的编程工作。DS也可以用子一台计算机内或局域网中多个应用程序之间的数据交换。DS函数库包含Open,read,writedose等函数,DS技术可在C 语言、VB和LabVIEW等多种开发环境中使用。在远程数据交换中可考虑采用DataSocket软件。
若虚拟仪器软件采用的是VC编写的,用户对VC比较熟悉时,可用VC++开发数据库,VC提供了多种访问数据库的方法:ODBC、MFC ODBC、DAO、OLE DB、ADO等。这些技术各有特点。
ODBC可以访问所有的关系数据库,不能访问对象数据库和其他非关系数据库,因此对于高层的数据库应用技术可采用如6C ODBC。MFC ODBC是VC提供的面向对象数据库类,MFC ODBC类封装了ODBC API,提供了面向对象的数据库类,ODBC类主要有Cdatabase,Crecordset,CrecordView等。使用Cdatabase对象类连接数据库,Crecordset类可以对数据库记录查找、排序、添加、删除、更新等操作。CrecordVIew类用来显示文档,使用这些类编写程序大大简化了应用程序的编写。
DAO(数据库访问对象)是VC提供的一种通过程序代码创建和操纵本地的数据库和远地的数据,管理数据库中的对象或结构的机制。DA0支持两种不同的数据库环境,一种是使用Micsoft Jet数据库引擎来访问Micosoft Jet数据库数据、Micosoft Jet连接的ODBC数据库数据等。一种是ODBC Direct工作区,即直接访问一个ODBC数据库,可通过ODBC访问数据库服务器,无须装载Micosoft Jet数据库引擎。利用DAO技术,我们可以访问从txt文件直到大型后台数据库的多种数据库格式。