毕业论文——基于网络的虚拟仪器测试系统.doc

上传人:滴答 文档编号:1254749 上传时间:2019-01-19 格式:DOC 页数:56 大小:335.50KB
下载 相关 举报
毕业论文——基于网络的虚拟仪器测试系统.doc_第1页
第1页 / 共56页
毕业论文——基于网络的虚拟仪器测试系统.doc_第2页
第2页 / 共56页
毕业论文——基于网络的虚拟仪器测试系统.doc_第3页
第3页 / 共56页
毕业论文——基于网络的虚拟仪器测试系统.doc_第4页
第4页 / 共56页
毕业论文——基于网络的虚拟仪器测试系统.doc_第5页
第5页 / 共56页
点击查看更多>>
资源描述

1、1引 言著名科学家门捷列夫说:“没有测量,就没有科学” 。测量科学的先驱凯尔文又说,一个事物你如果能够测量它,并且能用数字来表达它,你对它就有了深刻的了解;但如果你不知道如何测量它,且不能用数字表达它,那么你的知识可能就是贫瘠的,是不令人满意的。测量是知识的起点,也是你进入科学殿堂的开端。1 基于网络的虚拟仪器测试系统1.1 概述随着计算机技术、通信技术与仪器技术的不断发展,使得虚拟仪器得到了进一步发展,虚拟仪器将计算机资源与仪器硬件、数字信号处理技术结合,把厂家定义仪器功能的方式转变为由用户自己定义仪器功能。用户可根据测试的需要,自己设计所需要的仪器系统,利用一种或多种功能的通用模块,调用不

2、同功能的软件模块,组成不同的仪器功能。在虚拟仪器中,计算机成为仪器的一部分,使得计算机可以得到充分发挥。除了仪器的输入、输出、数据处理分析、结果显示由计算机完成外,还可组成计算机网络。一个大的复杂的测试系统往往系统的测量、输入、输出、结果分析分布在不同的地理位置,仅用一台计算机并不能胜任测试任务,需要由分布在不同地理位置的若干计算机共同完成整个测试任务。计算机网络技术、总线技术的发展,乃至Internet 网的发展拓展了虚拟仪器测试系统的应用范围。利用网络技术将分散在不同地理位置不同功能的测试设备联系在一起,使昂贵的硬件设备、软件在网络内得以共享,减少了设备重复投资。一台计算机采集的数据可以立

3、即传输到另一台处理分析机上进行处理分析,分析后的结果可被执行机构、设计师查询使用,使数据采集、传输、处理分析成为一体,容易实现实时采集、实时监测。重要的数据实行多机备份,提高了系统的可靠性。对于有些危险的、环境恶劣的不适合人员操作的数据采集工作可实行远程采集,将采集的数据放在服务器中供用户使用。1.2 虚拟仪器网络测试系统设计虚拟仪器网络测试系统的设计需从虚拟仪器和网络技术两方面考虑。1.2.1 虚拟仪器部分分析测试系统的要求和系统的功能,根据系统功能的要求,在软件和硬件之间进行优化选择,从而确定仪器所必需的硬件模块,以便用最少的模块实现仪器的最佳功能。根据应用情况与实际的条件选择基于计算机的

4、虚拟仪器的仪器模块(VXI 总线、PCI 总线、PXI 总线、GPIB 仪器) ,包括示波器、信号调理电路、万用表、信号源等模块。硬件确定以后,主要确定软件功能模块,哪些仪器功能由软件实现,将软件功能划分为相对独立的模块。然后选择易于编写的图形化的软件平台。2Virsual C+6.0 是一种面向对象的通用的功能强大的程序设计语言,提供集成性及可视化用户界面,采用面向对象的程序设计方法,它具有底层操作功能,也具有数据库开发功能,编程灵活,因此也是编程人员常选用的编程语言,我也用 VC+编写了虚拟仪器平台,可以组建虚拟信号发生器、虚拟示波器、数据采集。1.2.2 网络结构设计根据测试系统各部分所

5、处的地理位置和覆盖的范围不同可构建局域网、城域网、广域网。一个大的复杂的测试系统由各个子系统组成,每个子系统一般在一个单位的小范围内,因此可建立局域网,然后将每个局域网互联,形成企业测量系统。由于Internet 网的发展,一些公用的数据还可以通过 Internet 网将测量数据发布到网上供网上用户使用,可建立测量发布系统。对于有些危险的、环境恶劣的不适合人员操作的数据采集工作可实行远程采集。由于网络测试中每个测试点担任不同的测试任务,为了减少不必要的重复工作,通过网络实现资源共享,同时要减轻服务器与各节点的数据传输,提高网络系统性能,因此服务器和各个节点以及各节点之间协同工作显得尤为重要。基

6、于 Client/Server模式的分布式计算、分布式处理系统是解决这个问题的最好选择。基于 C/S 模式,将系统功能分解到各个节点,各个节点有机配合,用户在自己的终端上就可以观察到从服务器中获取的数据和处理结果。在 C/S 中,分客户机(Client)程序和服务器(Sewer)程序。客户机程序和服务器程序可以运行在一台计算机中,也可运行在两台或多台计算机中,Client 程序与 Server 程序相互协同处理,一个测试系统由一个或承担不同任务的多个客户机与一个或多个服务器组成。客户机是用户与系统的交互接口,提供一个用户界面,完成用户命令与数据的输入,显示服务器送回的结果。服务器接受客户机提出

7、的申请,完成所要求的操作并将结果传送给用户。在一个测试系统中,根据任务不同,每个服务器和客户机承担的任务也不同,例如可划分为采集、数据处理分析、输出、监控。一台计算机采集外部数据,将采集的数据存储并传输给另一台计算机,它就是服务器,另外它又需要得到远地计算机的数据,这时它又成为客户机。C/S 模式是一种开放式系统的协同处理工作模式。设计 C/S 模式时应首先分析系统所要达到的指标和功能要求,在此基础上,把系统划分为各个相对独立的模块,分配到各个计算机上,每个计算机执行不同的功能,能在客户机上完成的独立任务就不要放在服务器上,以减低服务器的工作量。第二,要保证数据在服务器和客户机、客户机间可靠的

8、传输。设计时需考虑网络的带宽要满足传输要求,并减少网络数据传输量。Agilent IO 库允许通过 LAN 进行仪器的控制操作。使用标准的 LAN 接口,计算机可以不要特殊的仪器接口就可以实现对仪器的控制。LAN 软件使用计算机的 C/S 模式,这种模式使得应用程序(客户)可以不用执行所有的工作,相反,客户机可以向另一台仪器(服务器)发出某种请求。与可控仪器或器件相连的 LAN 服务器,一旦完成仪3器或器件的请求,LAN 服务器会反馈信息给客户机。反馈的信息包括数据和状态等表明操作是否成功的信息。例如网关在 LAN 软件(客户机支持)和器件支持的仪器接口之间扮演一个服务器的角色。基本结构如图:

9、图 11LAN 软件结构:该结构中,包含了 LAN 客户软件和 LAN 软件(TCP/IP) (用于访问服务器gateway) 。网关包含了 LAN 服务器软件,LAN(TCP/IP)软件以及用于和客户机通讯和控制仪器的仪器驱动软件。4图 121.2.3 软件设计与硬件结构相对应,软件结构可分为网络测控系统控制主模块,是系统控制的中枢,连接和控制各子模块;虚拟信号源、虚拟万用表和虚拟示波器等模块,是控制相应台式仪器,使其完全能处于远程虚拟控制状态,给测控对象提供激励信号,并监视受控对象输出特性变化;虚拟 VXI 仪器和信号调理模块是控制 SCXI 和 VXI 硬件模块仪器进行模拟量数据采集与开

10、关量对象控制,包括数据处理;图象采集模块,包括采集现场景物视频图象和有形对象的图象采集.与图象处理;网络通信模块承担不同总线模块与主模块之间的数据传输与通信,也是实现本测控系统与远程用户之间的控制与数据传送。每个虚拟仪器模块内部都封装了对应仪器状态控制命令集、数据采集命令集、数据处理模型以及通信协议等处理子模块。下面的第三章至第五章介绍的就是函数信号发生器、示波器以及万用表模块的设计和具体的编程。下面让我们先来了解一下 VC+6.0 开发工具和 Agilent VISA 库。2 开发工具和 Agilent VISA库介绍Visual C+6.0 是一套功能强大面向对象的且具有集成编辑器及编译器

11、的编程语言开发平台。今天我们所使用的许多应用软件,大部分是利用 C 语言来进行编写的。Visual C+6.0 没有很复杂的开发界面,给用户的开发以很大的灵活性。2.1 Visual C+6.0的特点在众多的程序语言中,Visual C+6.0 是具有编辑和编译的集成开发环境。通过 Visual C+6.0 的编辑功能,可以方便的设计程序。它的编辑功能可以随时让我们了解到程序的结构、流程以及对象的成员,而完成程序设计之后,也不必经过复杂的编译程序,而且给出的错误警告可以很方便的进行定位操作,这给程序设计人员以方便。2.2 IDE 的集成开发环境界面IDE 就是 Integrated Devel

12、opment Enviroment 的缩写,是将程序代码的编写(editor) 、编译(Compiler) 、执行(execution)以及纠错(debug)等功能汇集一身的单一整合性的界面,提供程序开发过程所需要的相关或扩展服务,让用户只需要通过此环境便可以轻松完成程序工程。2.3 Agilent VISA纵览VISA 是 Agilent IO 库的一个部分。Agilent IO 库由两个部分组成:VISA 和SICL。Agilent VISA 是根据 VXIpp 系统联盟的规定设计的,它允许由不同的厂商开发的软件能在同一个系统中运行。如果你想在你的应用程序中使用 VXIpp 仪器驱动或者是

13、想是自己开发的 IO 应用软件或仪器驱动能符合 VXIpp 的标准,就需要使用 VISA。如果你使用新的仪器或开发IO 应用程序以及仪器驱动的话,也应该使用 VISA。Agilent VISA 是一个 IO 库,可以用来开发符合 VXIpp 标准的 IO 应用软件和仪5器的驱动。使用 VISA 开发的应用软件和仪器驱动可以在使用 VISA IO 库的 VXIpp 主机上运行。因此,不同厂商开发的应用软件可以在同一个系统中运行。32 位版本的 VISA 能在 Windows 95 98 Me 以及 NT 和 2000 中使用。C,C+和Visual Basic 在这些系统中都被支持。对与 Win

14、dows,VISA 支持 GPIB、VXI 、GPIB-VXI、Serial(RS-232) 以及局域网接口。在 Windows NT 中,对 VXI 接口支持的 VISA 仅能运行在 Agilent 嵌入式的 VXI控制器产品中。一台网络计算机能够通过网络访问配置 VISA 地址譬如 GPIB 接口地址上的仪器。2.4 VISA 编程在 VISA 的编程中需要了解 VISA 的一些机制: VISA 的资源和属性、会话使用、发送I/O命令、使用事件与句柄、捕抓错误等等。VISA资源:在VISA中,任何VISA可以提供通讯的器件(如电压表)都可以定义为一种资源。对于一个完善的VISA系统,VIS

15、A定义完全符合VXI即插即用联盟的规范的六种资源类可以被执行。VISA属性: 属性是和各种资源或会话相关联的。你可以使用属性来决定资源或会话的状态或设置资源或会话为指定的状态。譬如,你可以通过viGetAttribute函数来读取指定会话、事件、查找列表的属性的状态。有只读和读写的属性。通过使用viSetAttribute函数来修改指定的会话、事件或查找列表的读写属性。传递给viGetAttribute函数的指针必须指向那个属性的准确类型:ViUInt16,ViInt32,等等。譬如,当读取一个返回ViUInt16值的属性的状态时,你必须声明那个属性的变量和使用它来存储返回的数值。如果ViSt

16、ring被返回,你必须分配一个数组和传递那个数组的指针给那个返回的数值。对于C和C+程序,你必须在每一个文件的开始处添加包含VISA调用函数visa.h头文件:#include “visa.h”这个头文件包含了VISA函数的原型的声明和所有VISA的常量和错误代码的定义。Visa.h头文件也包含了visatype.h头文件。该visatype.h头文件对VISA的所有类型进行了定义。VISA的各种类型贯穿了整个VISA,对函数中用到的数据进行类型定义。而关于会话,会话其实是一个通讯通道。会话必须在默认的资源管理器中被首先打开,接着是你将会使用的每一种资源。首先,你必须通过默认资源管理器的viO

17、penDefaultRM函数来建立一个会话。这个函数的第一次调用用来初始化默认的资源管理器并返回该资源管理器会话的会话。你仅需要打开默认资源管理器一次就可以了。然而,后来的对viOpenDefaultRM函数的调用则返回同样的默认资源管理器资源的唯一的会话。接下来,你利用 viOpen 函数对指定的资源打开一个会话。而在退出程序的时候需要多6打开的会话进行关闭操作,在关闭每一个会话时,必须调用 viClose 函数以释放掉分配给该会话的数据资源。你如果关闭默认的资源管理器会话,则所有被该会话打开的会话将会被关闭。当你为一个器件建立一个通讯会话时,通过使用 VISA 的 I/O 程序来启动与该器

18、件的通讯。VISA 提供了格式化和非格式化的程序。 格式化 I/O 将对格式化字符下的混合数据类型进行转换。数据被存在数据缓冲器中,因此是接口的通讯得到最大的优化。 非格式化 I/O 口向一个器件发送或接收原始数据。通过非格式化 I/O,数据并不进行格式化或相应的转换。因此,如果要求格式化数据,它必须通过用户自己来定义。事件是那些需要你的应用程序关注的特指事件。事件类型包括服务请求,中断和硬件触发。事件不会被传递,除非相应的事件被启用。注意:VISA 不能回调 VB 函数。因此,你只能使用函数 ViEnableEvent 来使用队列机制。在 VB 中不能安装 VISA 事件句柄。当事件发生时,

19、有两种方式来接收通知消息:函数回调法和队列法当一个事件需要立即相应时,可以使用回调函数法。使用回调函数法来接收事发生时的通知消息。当使能事件发生时,安装的事件句柄会被调用。可以使用函数viInstallHandler 安装事件句柄,而使用函数 viEnableEvent 来启动一个或多个事件。VISA 允许应用程序在同一个会话中对一种事件类型安装多个句柄。多个句柄可以通过多次调用函数 viInstallHandler 来安装。每次调用添加到前面的句柄列表中。如果一个事件类型被安装了多个句柄,当指定的事件发生时,每一个句柄会被调用。VISA 指出,句柄的调用的顺序是后进先出的顺序。当需要安装句柄

20、时,使用下面的函数:viInstallHandler(vi, eventType, handler, userHandle);当你的应用程序捕需要及时相应时,队列法通常被使用。为了使用队列法来接收事件发生时的通知消息,步骤如下: 使用函数viEnableEvent来使能一个或多个事件。 当准备查询时,使用函数viWaitOnEvent来检查队列事件。如果指定的事件发生,事件信息将会被取得,程序立即返回。如果指定的事件没有发生,应用程序挂起直至指定的事件发生或指定的超时时间到来。73 函数信号发生器3.1 Agilent 33250A 80 MHz 函数/ 任意波形发生器介绍Agilent Te

21、chnologies 33250A 是高性能的 80 MHz 复合函数发生器,其具有内置任意波形和脉冲功能函数发生器,其80MHz带宽能适应各种各样的应用要求,它具有各种内置信号、自定义的任意波形和脉冲能力,能帮助您验证设计,检验新的构想。直接数字合成技术能获得稳定、精确和低失真的输出信号。Agilent 33250A能提供您需要的所有波形,其输出频率更高达80MHz。标准输出包括正弦波、方波、斜波、噪声波、sin(x)/x、真流和其它波形。当标准信号还不能满足您的要求时,33250A可简化生成任意波形的过程,并赠强这些自定义信号的性能。现在通过达200MSa/s的采样率,12bit分辨率和6

22、4K点的存储器深度,您可建立无限多种信号,以精确适应您的应用要求。同时具备工作台特性和系统特性是满足您目前及未来测试需求的多用途解决方案Agilent Technologies 33250A 的特点如下: 10 个标准波形 内置的 12 位 200 MSa/s 任意波形功能 具有可调边沿时间的精确脉冲波形功能 LCD 彩色显示器可提供数字和图形视图 易用的旋钮和数字小键盘 仪器状态存储器用户可自定义名称 带有防滑支脚的便携式耐用机箱灵活的系统特性 四个可下载的 64K 点任意波形存储器 GPIB (IEEE-488) 接口和 RS-232 接口为标准配置 SCPI 可编程仪器的标准命令兼容Ag

23、ilent Technologies 33250A 函数/ 任意波形发生器的技术参数如下:波形 标准波形正弦波、方波、斜波、脉冲、噪声、SIN(x)/x,指数上升和下降、心律波、真流电压 波形长度 164K 点非易失性存储器 4 个波形(每一个汉形 164K 点)幅度分辨率 12bit任意波形采样率 200MSa/s 频率特性8正弦波 1Hz80MHz 白噪声 50MHz 带宽 方波 1Hz80MHz 分辨率 1Hz,除脉冲为 5 个字 三角波 1Hz1MHz 准确度 0.3ppm,(18) 斜波 500Hz50MHz THD(dc20kHz) #include /这里是头文件,因为需要使用V

24、ISA的数据类型和函数void main () ViSession defaultRM, vi;/变量的声明char buf 256 = 0;viOpenDefaultRM(/打开地址为22的GPIB器件viOpen(defaultRM, “GPIB0:22:INSTR“,VI_NULL,VI_NULL,viPrintf(vi, “*RSTn“);/初始化器件viPrintf(vi, “*IDN?n“);/查询器件的型号viScanf(vi, “%t“, buf);/读取结果printf(“Instrument identification string: %sn“, buf);/打印结果vi

25、Close(vi);/关闭会话viClose(defaultRM);这里涉及到了5个VISA函数:viOpenDefaultRM,viOpen,viPrintf,viScanf,viClose。在我后来的编程过程中,也基本上就用到了这几个函数的功能。viOpen函数的功能是建立一个指定器件的会话的通道,而会话具有一个标识,该标识可以被VISA库的其他函数进行调用。这个函数很重要,因为你如果需要跟一个器件通讯,就必须通过该函数来进行会话的建立。函数viOpenDefaultRM用来打开默认资源管理器的会话,必须是第一个打开。这个函数初始化资源管理器,并返回该会话的指针。以供其他函数使用。而函数v

26、iPrintf和viScanf这两个函数在用的编程中的比例是最多的,我发送SCPI指令就是通过这两个函数来进行的。函数viClose是用于关闭每一个会话的。当你关闭一个会话时,所有为会话分配的数据结构都会被释放掉。当你使用这个函数关闭默认资源管理器时,所有通过该会话打开的其他会话将会被关闭。通过阅读VISA手册,懂得如何配置VC参数从而可以正常的进行操作。利用VISA来进行编程,需要链接VISA库VISA32.LIB。对VC编译器配置如下:选择Project-Settings并选择C/C+按钮,从类型列表中选择Code Generation,从运行库列表中选择Multi-Threaded us

27、ing DLL。(VISA在WIN32环境下需要这些配置)选择Project-Settings点击link按钮并添加visa32.lib库到Object/Library Modules列表中。换一种方法是,直接添加库到你的工程文件夹中。头文件和库文件的搜索路径也可以进行更改:选择Tools-Options点击Directories按钮,就可以对头文件和库文件的路径进行更改了。在VISA中也学习了几个接口的编程。VISA支持三种接口来访问GPIB和VXI仪器:GPIB,VXI和GPIB-VXI。通过这三种接口可以对GPIB和VXI器件进行编程。当你使用GPIB-VXI或VXI接口直接访问VXI主

28、机时。你必须知道你所要进行的编程的仪器时基于10消息基还是寄存器基的VXI器件。消息基的VXI器件拥有自己的处理器来识别高级的命令,譬如,SCPI(可编程仪器标准命令)。当使用VISA时,你利用VISA的输出函数来发送SCPI命令。接着,消息基器件就会解释SCPI命令。在这种情况下,就可以使用VISA的格式化IO或非格式化IO含糊来对消息基器件进行编程。如果消息基器件有共享内存,可以通过对寄存器的PEEK和POKE操作来访问器件的共享内存。VISA提供两个不同的方法对寄存器进行编程:高级内存函数或低级内存函数。而寄存器基的VXI器件没有处理器来处理高级的命令。因此,只有通过寄存器的PEEK和P

29、OKE命令直接对器件的寄存器进行编程。VISA提供了两种不同的方法来对寄存器基的器件进行编程:高级内存函数低级内存函数。下面是一个关于GPIB接口的示意图:一台装有多个GPIB卡(PCI和ISA)的PC机和通过GPIB电缆与GPIB卡相连的多台GPIB仪器组成。PC机和仪器之间的通讯是通过GPIB卡和GPIB电缆来实现的。如下所示:图31如下面的例子:GPIB接口系统由装由两个82350GPIB卡的PC机和三台GPIB仪器通过GPIB电缆进行连接。通过IO组件对GPIB卡1和2分别配置一个VISA名字GPIB0和GPIB1。这样VISA库就可以对其进行寻址操作了,如下图:图32而其他的接口类型的配置与连接也是大同小异。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。