虚拟仪器网络测试系统设计
虚拟仪器网络测试系统的设计需从虚拟仪器和网络技术两方面考虑。
1.2.1虚拟仪器部分
分析测试系统的要求和系统的功能,根据系统功能的要求,在软件和硬件之间进行优化选择,从而确定仪器所必需的硬件模块,以便用最少的模块实现仪器的最佳功能。根据应用情况与实际的条件选择基于计算机的虚拟仪器的仪器模块(VXI总线、PCI总线、PXI总线、GPIB仪器),包括示波器、信号调理电路、万用表、信号源等模块。
硬件确定以后,主要确定软件功能模块,哪些仪器功能由软件实现,将软件功能划分为相对独立的模块。然后选择易于编写的图形化的软件平台。
Virsual C++6.0是一种面向对象的通用的功能强大的程序设计语言,提供集成性及可视化用户界面,采用面向对象的程序设计方法,它具有底层操作功能,也具有数据库开发功能,编程灵活,因此也是编程人员常选用的编程语言,我也用VC++编写了虚拟仪器平台,可以组建虚拟信号发生器、虚拟示波器、数据采集。
1.2.2网络结构设计
根据测试系统各部分所处的地理位置和覆盖的范围不同可构建局域网、城域网、广域网。一个大的复杂的测试系统由各个子系统组成,每个子系统一般在一个单位的小范围内,因此可建立局域网,然后将每个局域网互联,形成企业测量系统。由于Internet网的发展,一些公用的数据还可以通过Internet网将测量数据发布到网上供网上用户使用,可建立测量发布系统。对于有些危险的、环境恶劣的不适合人员操作的数据采集工作可实行远程采集。
由于网络测试中每个测试点担任不同的测试任务,为了减少不必要的重复工作,通过网络实现资源共享,同时要减轻服务器与各节点的数据传输,提高网络系统性能,因此服务器和各个节点以及各节点之间协同工作显得尤为重要。基于Client/Server模式的分布式计算、分布式处理系统是解决这个问题的最好选择。基于C/S模式,将系统功能分解到各个节点,各个节点有机配合,用户在自己的终端上就可以观察到从服务器中获取的数据和处理结果。在C/S中,分客户机(Client)程序和服务器(Sewer)程序。客户机程序和服务器程序可以运行在一台计算机中,也可运行在两台或多台计算机中,Client程序与Server程序相互协同处理,一个测试系统由一个或承担不同任务的多个客户机与一个或多个服务器组成。客户机是用户与系统的交互接口,提供一个用户界面,完成用户命令与数据的输入,显示服务器送回的结果。服务器接受客户机提出的申请,完成所要求的操作并将结果传送给用户。在一个测试系统中,根据任务不同,每个服务器和客户机承担的任务也不同,例如可划分为采集、数据处理分析、输出、监控。一台计算机采集外部数据,将采集的数据存储并传输给另一台计算机,它就是服务器,另外它又需要得到远地计算机的数据,这时它又成为客户机。C/S模式是一种开放式系统的协同处理工作模式。
设计C/S模式时应首先分析系统所要达到的指标和功能要求,在此基础上,把系统划分为各个相对独立的模块,分配到各个计算机上,每个计算机执行不同的功能,能在客户机上完成的独立任务就不要放在服务器上,以减低服务器的工作量。第二,要保证数据在服务器和客户机、客户机间可靠的传输。设计时需考虑网络的带宽要满足传输要求,并减少网络数据传输量。Agilent IO库允许通过LAN进行仪器的控制操作。使用标准的LAN接口,计算机可以不要特殊的仪器接口就可以实现对仪器的控制。LAN软件使用计算机的C/S模式,这种模式使得应用程序(客户)可以不用执行所有的工作,相反,客户机可以向另一台仪器(服务器)发出某种请求。与可控仪器或器件相连的LAN服务器,一旦完成仪器或器件的请求,LAN服务器会反馈信息给客户机。反馈的信息包括数据和状态等表明操作是否成功的信息。例如网关在LAN软件(客户机支持)和器件支持的仪器接口之间扮演一个服务器的角色。
毕业设计结论
本毕业设计课题是基于LAN的VXI自动测试系统,通过局域网实现对仪器的远程控制和操作。其原理是通过Agilent 的IO库之一visa实现SCPI指令的发送和数据的接收,而基于消息基的各种仪器接收计算机发送过来的SCPI指令,并通过仪器本身的CPU进行指令的翻译执行来响应用户指令,并将数据送到总线、缓冲区或内存以供计算机的读取做进一步的处理。虚拟仪器自动测试系统具有广阔的发展前景。
该虚拟仪器软件通过不断地进行实验和调试,基本能实现函数信号发生器、示波器和万用表简单的功能。在函数信号发生器模块上,能实现几种基本波形和几种调制方式的实现;示波器能实现简单的显示操作和数据的测量;万用表同样能实现基本参数的测量,并且三个模块可以相互的利用资源。比如,通过函数信号发生器模块来发出一个特定的信号,接着通过示波器进行读取和显示测量或通过万用表进行相关参数更精确的测量,三个模块在测试系统中是比较常用的:函数信号发生器提供各种信号供使用、示波器能对外部信号进行显示和简单的测量以及万用表来实现对各种参数的较为准确的测量。
在三个模块的调试过程中,遇到了许多问题:数据如何的传递问题、窗口图像的如何的进行及时的刷新问题、三个模块在进入之前,如何来识别问题、如何使用全局的变量来实现统一的资源会话的建立和关闭问题、示波器的波形的绘画问题以及数据的读取和处理问题等等,还有许许多多的问题在毕业设计之前,没有遇到过。不过在老师同学还有自己的努力下(还有论坛朋友的建议与帮助),一个一个的将问题解决。
由于时间比较的紧,需要完成的模块比较的多,所以在模块设计的许多地方,都没有考虑周全,比如,对用户的输入没有进行合理的判断处理,用户可以输出任意的字符,这个显然是不合理的;又如对于一个频率很高的波形的产生,需要用户自己输入以Hz为单位的数字,所以会输入比较大的数据,如果能够改变频率的单位,从而可以减少用户的输入和一些不必要的错误,所有这些都是需要进一步完善的地方。希望各位老师能给予谅解!