1、基于LabVIEW的虚拟仪器设计,自动化学院 控制工程系 王辉,第10章 数据采集与仪器控制,10.1 数据采集 10.1.1 数据采集系统的构成 10.2 仪器控制,10.1 数据采集,数据采集(Data AcQuisition,DAQ)是指从传感器和其它待测设备等模拟或数字被测单元中自动采集信息的过程。 数据采集系统是结合基于计算机的测量软硬件产品来实现灵活的、用户自定义的测量系统。 一个完整的DAQ系统包括传感器或变换器、信号调理设备、数据采集和分析硬件、计算机、驱动程序和应用软件等。,10.1.1 数据采集系统的构成,典型的基于PC的数据采集(DAQ)系统,10.1.1 数据采集系统的
2、构成,1. 传感器和变换器 传感器感应物理信息并生成可测量的电信号。 例如热电偶、电阻式测温计(RTD)、热敏电阻器和IC传感器可以把温度转变为ADC可测量的模拟信号。,10.1.1 数据采集系统的构成,2. 信号调理 从传感器得到的信号可能会很微弱,或者含有大量噪声,或者是非线性的等等,这种信号在进入采集卡之前必须经过信号调理。 信号调理的方法主要包括放大、衰减、隔离、多路复用、滤波、激励、冷端补偿等,10.1.1 数据采集系统的构成,3. 数据采集设备 通过信号调理后的信号就可以与数据采集设备连接了。通常情况下数据采集设备是一个数据采集卡,与计算机的连接可以采用多种方式。 NI的数据采集设
3、备支持的总线类型包括PCI、PCI Express、PXI、PCMCIA、USB、CompactFlash、Ethernet以及火线等各种总线。 数据采集卡的功能包括模拟输入、模拟输出、数字I/O、触发采集和定时I/O。,10.1.1 数据采集系统的构成,4. PC与软件 软件使PC与数据采集硬件形成了一个完整的数据采集、分析和显示系统。 软件分为驱动程序和上层应用程序。 驱动程序可以直接对数据采集硬件的寄存器编程,管理数据采集硬件的操作并把它和处理器中断、DMA和内存这样的计算机资源结合在一起。驱动程序隐藏了复杂的硬件底层编程细节,为用户提供容易理解的接口。一般来说,硬件厂商在卖出硬件的同时
4、也会提供驱动程序。 上层应用程序用来完成数据的分析,存储和显示等。LabVIEW就是一个极佳的开发上层应用程序的开发平台。,10.1.2 NI-DAQmx,NI-DAQmx是LabVIEW 7.0以来新增的DAQ软件。它包括支持200多种NI数据采集设备的驱动,并提供相应的VI函数。 此外它还包括Measurement & Automation Explorer(MAX)、数据采集助理(DAQ Assistant)以及VI Logger数据记录软件。通过这些工具并结合LabVIEW可以节省大量的系统配置、开发和记录数据的时间。,安装驱动,10.1.2 NI-DAQmx,1. Measureme
5、nt & Automation Explorer (MAX) 快速检测及配置所有硬件 通过测试面板验证硬件的运作状况 实施简便、交互式的测量 给/通道命名,创建一个新的通道配置文件(1),配置通道的设置和测试,10.1.2 NI-DAQmx,举例:通过MAX配置串口属性,10.1.2 NI-DAQmx,测试串口操作,10.1.2 NI-DAQmx,2. DAQ助手(DAQ Assistant) DAQ助手提供了一个对话框式的向导用于测量任务的配置、测试和自动代码生成。配合Express VI,通过DAQ Assistant可以在数分钟内搭建一个专业的数据获取系统。,10.1.2 NI-DAQm
6、x,配置虚拟通道,10.1.2 NI-DAQmx,自动生成代码,10.2 仪器控制简介,仪器控制是指通过PC上的软件远程控制总线上的一台或多台仪器。 它比单纯的数据采集要复杂的多。它需要将仪器或设备与计算机连接起来协同工作,同时还可以根据需要延伸和拓展仪器的功能。 通过计算机强大的数据处理、分析、显示和存储能力,可以极大的扩充仪器的功能,这就是虚拟仪器的基本含义。,10.2 仪器控制简介,一个完整的仪器控制系统除了包括计算机和仪器外,还必须建立仪器与计算机的通路以及上层应用程序。 通路包括总线和针对不同仪器的驱动程序 上层应用程序用于发送控制命令、仪器的控制面板显示以及数据的采集、处理、分析、
7、显示和存储等。,10.2 仪器控制简介,基于LabVIEW的仪器控制系统构架,10.3 选择合适的总线,在开发一个测量系统时,选择正确的总线与选择一个具有合适采样速率和分辨率的设备一样重要。 硬件总线可以影响测量的性能、系统搭建时间和便携性等。,10.3 选择合适的总线,独立总线,用于架式和堆式仪器的通信。独立总线包括T&M专用总线(如GPIB)和PC标准总线(如串行总线RS-232、以太网、USB、无线和IEEE 1394)。一些独立总线可用作其他独立总线的中介,如USB到GPIB的转换器。 模块化总线,将接口总线合并到仪器中。模块化总线包括PCI、PCI Express、VXI和PXI。这
8、些总线也可用作为不包括该总线的PC增加一个独立总线的中介,如PCI-GPIB控制卡。,10.3.1 独立总线,1. GPIB 通用接口总线(GPIBGeneral Purpose Interface Bus)是独立仪器上一种最通用的I/O接口。GPIB是专为测试测量和仪器控制应用设计的。 GPIB是一种数字的、8位并行通信接口,数据传输速率高达8M字节/秒。该总线可为一个系统控制器提供多达15台仪器连接,连线长度小于20米。 PC本身很少带有GPIB。实际上,用户通常使用一个插卡(如PCI-GPIB)或一个外部转换器(如GPIB-USB)在自己的PC中增加GPIB仪器控制功能。,10.3.1
9、独立总线,2. 串行总线(RS-232和RS-485) RS-232是串行通信规范,是传统意义上的“串行”总线的最为常见的规范。 RS-232也是一个相对较慢的接口,典型的数据速率低于20k字节/秒,虽然有些产品能够达到更高的数据吞吐量。 由于RS-232连线长度最长只能达到15米,而且只能点对点通讯,不适合工业现场应用。因此出现了RS-485来解决这些问题,它采用差分的信号传输方式,最长距离可以达到1200米。 PC上都不带RS-485的接口,因此在接入电脑前需要通过485-232转换器或485-USB转换器才能接入PC。,10.3.1 独立总线,3. USB 通用串行总线(USB-Univ
10、ersal Serial Bus)的设计主要用于将PC的外围设备(如键盘、鼠标、扫描仪和移动硬盘等)连接到PC。 USB是一项即插即用技术 最初的USB1.1规范定义了两种数据传输模式和速度:低速模式(Low-Speed)(最大吞吐量可达1.5Mbits/s或200Kbytes/s)和全速模式(Full-Speed)(最大吞吐量可达12Mbits/s或1.5Mbytes/s)。最新的USB规范USB 2.0完全后向兼容低速和全速设备,同时也定义了一种新的高速模式(Hi-Speed),该模式下数据传输速率高达480Mbits/s。,10.3.1 独立总线,4. 以太网 5. CAN 6. IEE
11、E1394(火线) 7. 无线,10.3.2 模块化总线,1. PCI PCI总线是当今使用最广泛的计算机内部总线之一。 一般的计算机都有3个或更多的PCI插槽。PCI提供了高速的传输,理论带宽达到1056Mbits/s。,10.3.2 模块化总线,2. PCI Express 当PC应用需要更大量带宽时,PCI总线在许多情况下达到了其物理极限。 基本物理层由用作一个发送对和一个接收对的一对单工通道构成。每个方向的最初速率2.5Gbits/s为该方向提供了一个200MBytes/s的通信信道,这接近标准PCI数据速率的四倍。 类似PCI,PCI Express的典型应用不是直接用于仪器控制,而
12、是作为外围总线将GPIB设备连接到PC以用于仪器控制。但由于其很高的速率,PCI Express可用作模块化仪器的通信总线。此外,PCI Express还支持热交换和热插拔功能。,10.3.2 模块化总线,3. PXI/CompactPCI PXI将PCI电气总线特性与坚固的、模块化的、欧洲卡机械封装的CompactPCI相结合,并增加了专门的同步总线和关键的软件特性,从而能够承受常常存在于工业应用中的恶劣环境。这使得PXI成为一个高性能的、低成本的、适用测量和自动化系统的布置平台。,10.3.2 模块化总线,4. VXI 5. PCMCIA,10.4 仪器驱动程序,计算机与仪器进行通讯的方式
13、有两种 一种是基于寄存器的通信方式, 另一种是基于消息的通信方式。 具体采用哪种方式由仪器本身决定。,10.4 仪器驱动程序,一个仪器驱动程序是一个包括高层函数的库,这些高层函数支持控制某个仪器或某个仪器簇。一个仪器驱动程序是一个软件例程集合,该集合对应于一个计划的操作,如配置仪器、从仪器读取、向仪器写入和触发仪器等。它将底层的通信命令或寄存器配置等封装起来,用户只需要调用封装好的函数库就能轻松实现对应于该仪器的任何功能。,10.4 仪器驱动程序,为了满足仪器控制和测试应用不同需求,存在两种不同类型的仪器驱动程序: 即插即用驱动程序 可互换的虚拟仪器(IVI)驱动程序 直接I/O,10.4 仪
14、器驱动程序,IVI、Plug&Play和Direct I/O三种方式比较,10.4.1 可编程仪器标准命令SCPI,对于采用基于消息的通信方式,理论上来说消息的格式可以任意。不同的仪器可以采用不同的消息解析方式,譬如仪器A发送“A”表示读回仪器名称,仪器B可以发送“B”表示读回仪器名称。 SCPI联盟推出了可编程仪器标准命令SCPI(Standard Commands for Programmable Instruments)旨在规范一套标准的命令集。该命令集只是一个规范,和硬件无关。无论是基于GPIB,串口还是VXI的任何仪器都可以采用符合SCPI标准的命令集。,10.4.1 可编程仪器标准
15、命令SCPI,SCPI命令与编程语言无关。LabVIEW提供的MAX和仪器I/O助手都可以向指定仪器发送命令。,10.4.1 可编程仪器标准命令SCPI,例如Tektronix TDS220示波器的SCPI命令集的例子: (1)*IDN?返回仪器标识,采用IEEE 4810.2标记法; (2)CH:PRObe?查询通道x的探头衰减; (3)HARDCopy:FORMat BMP设置硬拷贝格式为BMP格式。,10.4.2 VISA,虚拟仪器软件架构(VISAVirtual Instruments Software Architecture)的目的是通过减少系统的建立时间来提高效率。 随着仪器类型
16、的不断增加和测试系统复杂化的提高,人们不希望为每一种硬件接口都要编写不同的程序,因此I/O接口无关性对于I/O控制软件来说变得至关重要。,10.4.2 VISA,通过VISA用户能与大多数仪器总线连接,包括GPIB、USB、串口、PXI、VXI和以太网。而无论底层是何种硬件接口,用户只需要面对统一的编程接口VISA,10.4.2 VISA,VISA函数面板,10.4.2 VISA,通过VISA读写GPIB设备,通过VISA读写串口设备,10.4.2 VISA,在VISA Advanced面板下有更多的VISA高级函数。此外,为了更细节的控制譬如GPIB,串口和USB等接口,LabVIEW还提供
17、了基于VISA的高级控制函数。这些函数在Instrument I/O面板下都能找到。 譬如Instrument I/O-Serial面板下提供的串口配置函数可以对串口进行详细的配置,譬如超时时间、波特率、数据位和奇偶校验等。,10.4.2 VISA,10.4.3 IVI可互换的虚拟仪器驱动程序,虽然VISA实现了程序与硬件接口的不相关性,但是并没有实现仪器的可交换性。 IVI驱动程序是更为复杂的仪器驱动程序,它的特点在于为那些需要可互换性、状态缓存或仪器仿真的更为复杂的测试应用提高了性能和灵活性。 IVI驱动是NI测试系统中一个完整的组件。它基于VISA并被集成在NI提供的应用程序开发环境中。
18、,10.4.3 IVI可互换的虚拟仪器驱动程序,IVI构架将传统的仪器驱动程序分为两部分: 仪器专用驱动 通用类驱动,10.4.3 IVI可互换的虚拟仪器驱动程序,IVI整体构架,10.4.3 IVI可互换的虚拟仪器驱动程序,IVI仪器驱动技术具有如下优点: 高性能 仪器仿真能力 仪器互换能力 开发灵活性,10.4.3 IVI可互换的虚拟仪器驱动程序,目前为止,IVI基金会已经制定了八类仪器规范(IVI基金会的目标是支持某一确定类仪器中95%的仪器),基本上涵盖了测试系统中常用的仪器类型。 IVI示波器类(ScopeIVI Oscilloscope) IVI数字万用表类(DMMIVI Digi
19、tal Multimeter) IVI函数发生器类(FGenIVI Function Generator) IVI直流电源类(DC Pwr SupplyIVI DC Power Supply) IVI开关类(SwitchIVI Switch) IVI功率计类(Power MeterIVI Power Meter) IVI射频信号发生器类(RF Sig GenIVI RF Signal Generator) IVI频谱分析仪类(Spec AnIVI Spectrum Analyzer),10.4.3 IVI可互换的虚拟仪器驱动程序,IVI仪器驱动函数面板,10.4.3 IVI可互换的虚拟仪器驱动
20、程序,举例:通过IVI示波器类驱动写一个仿真示波器程序,10.4.3 IVI可互换的虚拟仪器驱动程序,通过IVI仪器驱动实现的示波器界面,10.5 直接I/O(Direct I/O),如果没有仪器的VISA或IVI驱动可得,那么你就需要利用集成至软件开发环境中的交互式、直接I/O功能。,10.5.1仪器I/O助手(Instrument I/O Assistant),仪器I/O助手提供了一个用户界面来交互式地向一个设备写入命令、读取设备以及指定如何将响应解析成与应用相关的格式。,10.5.1仪器I/O助手(Instrument I/O Assistant),读取数据并解析,10.5.1仪器I/O
21、助手(Instrument I/O Assistant),通过仪器I/O助手实现的测试程序,10.5.2 Port I/O,仪器I/O助手是针对基于消息格式通信的仪器。对于基于寄存器通信格式的仪器,你只需要向指定的寄存器地址写入数据或读出数据。 LabVIEW提供了两个简单的Port I/O函数用于读写寄存器端口。,10.5.2 Port I/O,通过Port I/O函数读写LPT并口,10.5.3 NI Spy调试驱动的好帮手,10.6 与第三方硬件连接,LabVIEW拥有灵活的通讯方式以实现与第三方硬件连接 动态链接库(DLL) TCP/IP DataSocket OPC 共享变量 ActiveX DDE .net .,小试身手,1. 什么是数据采集?数据采集系统的基本组成部分有哪些?每一部分的主要作用是什么? 2. 仪器控制和数据采集有何区别? 3. 比较各种独立总线的最大传输距离与最大传输速率。,小试身手,4. VISA和IVI的区别是什么? 5.利用IVI驱动编写一个类似书中图14.25所示的仿真示波器。 6. LabVIEW有哪些方式能与第三方硬件连接? 7. 利用你目前手边所拥有的能与计算机通讯的设备,结合本章所学的知识,实现LabVIEW与该设备通讯。,