
毕业设计论文-基于网络的虚拟仪器测试系统(含代码).docx
56页引 言著名科学家门捷列夫说:“没有测量,就没有科学”测量科学的先驱凯尔文又说, 一个事物你如果能够测量它,并且能用数字来表达它,你对它就有了深刻的了解;但如 果你不知道如何测量它,且不能用数字表达它,那么你的知识可能就是贫瘠的,是不令 人满意的测量是知识的起点,也是你进入科学殿堂的开端1基于网络的虚拟仪器测试系统1.1概述随着计算机技术、通信技术与仪器技术的不断发展,使得虚拟仪器得到了进一步发 展,虚拟仪器将计算机资源与仪器硬件、数字信号处理技术结合,把厂家定义仪器功能 的方式转变为由用户自己定义仪器功能用户可根据测试的需要,自己设计所需要的仪 器系统,利用一种或多种功能的通用模块,调用不同功能的软件模块,组成不同的仪器 功能在虚拟仪器中,计算机成为仪器的一部分,使得计算机可以得到充分发挥除了 仪器的输入、输出、数据处理分析、结果显示由计算机完成外,还可组成计算机网络 一个大的复杂的测试系统往往系统的测量、输入、输出、结果分析分布在不同的地理位 置,仅用一台计算机并不能胜任测试任务,需要由分布在不同地理位置的若干计算机共 同完成整个测试任务计算机网络技术、总线技术的发展,乃至Internet网的发展拓 展了虚拟仪器测试系统的应用范围。
利用网络技术将分散在不同地理位置不同功能的测 试设备联系在一起,使昂贵的硬件设备、软件在网络内得以共享,减少了设备重复投资 一台计算机采集的数据可以立即传输到另一台处理分析机上进行处理分析,分析后的结 果可被执行机构、设计师查询使用,使数据采集、传输、处理分析成为一体,容易实现 实时采集、实时监测重要的数据实行多机备份,提高了系统的可靠性对于有些危险 的、环境恶劣的不适合人员操作的数据采集工作可实行远程采集,将采集的数据放在服 务器中供用户使用1.2虚拟仪器网络测试系统设计虚拟仪器网络测试系统的设计需从虚拟仪器和网络技术两方面考虑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 10库允许通过LAN进行仪器的控制操作使用标准的LAN接口,计算机可 以不要特殊的仪器接口就可以实现对仪器的控制LAN软件使用计算机的C/S模式,这 种模式使得应用程序(客户)可以不用执行所有的工作,相反,客户机可以向另一台仪 器(服务器)发出某种请求。
与可控仪器或器件相连的LAN服务器,一旦完成仪器或器 件的请求,LAN服务器会反馈信息给客户机反馈的信息包括数据和状态等表明操作是 否成功的信息例如网关在LAN软件(客户机支持)和器件支持的仪器接口之间扮演一 个服务器的角色基本结构如图:图1TLAN软件结构:该结构中,包含了 LAN客户软件和LAN软件(TCP/IP)(用于访问服务器 —gateway)网关包含了 LAN服务器软件,LAN (TCP/IP)软件以及用于和客户机通讯 和控制仪器的仪器驱动软件1. 2. 3软件设计与硬件结构相对应,软件结构可分为网络测控系统控制主模块,是系统控制的中枢, 连接和控制各子模块;虚拟信号源、虚拟万用表和虚拟示波器等模块,是控制相应台式 仪器,使其完全能处于远程虚拟控制状态,给测控对象提供激励信号,并监视受控对象 输出特性变化;虚拟VXI仪器和信号调理模块是控制SCXI和VXI硬件模块仪器进行模 拟量数据采集与开关量对象控制,包括数据处理;图象采集模块,包括采集现场景物视 频图象和有形对象的图象采集.与图象处理;网络通信模块承担不同总线模块与主模块 之间的数据传输与通信,也是实现本测控系统与远程用户之间的控制与数据传送。
每个 虚拟仪器模块内部都封装了对应仪器状态控制命令集、数据采集命令集、数据处理模型 以及通信协议等处理子模块下面的第三章至第五章介绍的就是函数信号发生器、示波器以及万用表模块的设计 和具体的编程下面让我们先来了解一下VC++6. 0开发工具和Agilent VISA库2开发工具和Agi lent VISA库介绍Visual C++6.0是一套功能强大面向对象的且具有集成编辑器及编译器的编程语 言开发平台今天我们所使用的许多应用软件,大部分是利用C语言来进行编写的 Visual C++6.0没有很复杂的开发界面,给用户的开发以很大的灵活性2.1 Visual C++6. 0 的特点在众多的程序语言中,Visual C++6.0是具有编辑和编译的集成开发环境通过 Visual C++6.0的编辑功能,可以方便的设计程序它的编辑功能可以随时让我们了解 到程序的结构、流程以及对象的成员,而完成程序设计之后,也不必经过复杂的编译程 序,而且给出的错误警告可以很方便的进行定位操作,这给程序设计人员以方便2.2 IDE的集成开发环境界面IDE就是Integrated Development Enviroment的缩写,是将程序代码的编写 (editor)、编译(Comp订er)、执行(execution)以及纠错(debug)等功能汇集一身的 单一整合性的界面,提供程序开发过程所需要的相关或扩展服务,让用户只需要通过此 环境便可以轻松完成程序工程。
2.3 Agi lent VISA 纵览VISA是Agilent I0库的一个部分Agilent I0库由两个部分组成:VISA和SICL Agilent VISA是根据VXIpp系统联盟的规定设计的,它允许由不同的厂商开发的软件能 在同一个系统中运行如果你想在你的应用程序中使用VXIpp仪器驱动或者是想是自己开发的I0应用软 件或仪器驱动能符合VXIpp的标准,就需要使用VISA如果你使用新的仪器或开发I0 应用程序以及仪器驱动的话,也应该使用VISAAgilent VISA是一个I0库,可以用来开发符合VXIpp标准的I0应用软件和仪器 的驱动使用VISA开发的应用软件和仪器驱动可以在使用VISA I0库的VXIpp主机上 运行因此,不同厂商开发的应用软件可以在同一个系统中运行32位版本的VISA能在Windows 95 98 Me以及NT和2000中使用C,C++和 Visual Basic在这些系统中都被支持对与 Windows, VISA 支持 GPIB、VXI、GPIB-VXL Serial(RS-232)以及局域网 接口在Windows NT中,对VXI接口支持的VISA仅能运行在Agilent嵌入式的VXI 控制器产品中。
一台网络计算机能够通过网络访问配置VISA地址譬如GPIB接口地址 上的仪器2.4 VISA 编程在VISA的编程中需要了解VISA的一些机制:VISA的资源和属性、会话使用、 发送I/O命令、使用事件与句柄、捕抓错误等等VISA资源:在VISA中,任何VISA可以提供通讯的器件(如电压表)都可以定义为 一种资源对于一个完善的VISA系统,VISA定义完全符合VXI即插即用联盟的规范的六 种资源类可以被执行VISAM性:属性是和各种资源或会话相关联的你可以使用属性来决定资源或会 话的状态或设置资源或会话为指定的状态譬如,你可以通过viGetAttribute函数来读取指定会话、事件、查找列表的属性的状态 有只读和读写的属性通过使用viSetAttribute函数来修改指定的会话、事件或查找列 表的读写属性传递给viGetAttribute函数的指针必须指向那个属性的准确类型:ViUIntl6, Vilnt32, 等等譬如,当读取一个返回ViUIntl6值的属性的状态时,你必须声明那个属性的变量 和使用它来存储返回的数值如果ViString被返回,你必须分配一个数组和传递那个数 组的指针给那个返回的数值。
对于C和C++程序,你必须在每一个文件的开始处添加包含VISA调用函数visa, h头文 件:#include “visa, h”这个头文件包含了VISA函数的原型的声明和所有VISA的常量和 错误代码的定义Visa, h头文件也包含了visatype, h头文件该visatype, h头文件对VISA的所有类型进行了定义VISA的各种类型贯穿了整个VISA, 对函数中用到的数据进行类型定义而关于会话,会话其实是一个通讯通道会话必须在默认的资源管理器中被首先 打开,接着是你将会使用的每一种资源首先,你必须通过默认资源管理器的 viOpenDefaultRM函数来建立一个会话这个函数的第一次调用用来初始化默认的资源 管理器并返回该资源管理器会话的会话你仅需要打开默认资源管理器一次就可以了 然而,后来的对viOpenDefaultRM函数的调用则返回同样的默认资源管理器资源的唯一 的会话。
