分类: 嵌入式
2011-09-20 17:25:28
VI的概念
图1 VI的内部功能划分 |
应用程序将可选硬件(如GPIB、VXI、RS-232、DAQ板)和可重复用原码库函数等软件结合在一起,实现了仪器模块间的通信、定时与触发。原码库函数为用户构造自己的VI系统提供了基本的软件模块。由于VI的模块化、开放性和灵活性,以及软件是关键的特点,当用户的测试要求变化时,可以方便地由用户自己来增减硬、软件模块,或重新配置现有系统以满足新的测试要求。这样,当用户从一个项目转向另一个项目时,就能简单地构造出新的VI系统而不丢弃已有的硬件和软件资源。
关于 IVI
IVI Foundation 成立于 1998 年,目的是创建基于VXIplug&play 规范之上的仪器驱动标准,并提供各种额外特性(包括驱动 API 一致性、可互换性、仿真、状态高速缓存、多线程安全等)。这些特性帮助延长了使用 IVI 测试系统的寿命。IVI Foundation 定义了两种基本的架构和接口类型,即 IVI-C 和 IVI-COM。IVI-C 驱动程序基于现有的 VXIplug&play 规范和标准的 ANSI C 编程模型。IVI-COM 驱动程序基于微软公司的标准的 COM(Component Object Model,组件对象模型)技术。IVI 仪器驱动程序可在通用的开发环境中使用,包括NI公司的 LabVIEW 和 LabWindows/CVI、安捷伦公司的 VEE Pro,以及微软公司的Visual Basic、Visual C++ 和 Visual C# .NET。
IVI和VISA的关系
VISA是在不同的总线上作了一个统一的编程接口。IVI是在同类仪器,不同的产品间作了一个统一的编程接口。或者说为同类仪器的不同仪器驱动上作了一个统一的编程接口。
使用VISA接口编写的程序可以对不同的总线上(如GPIB,VXI,Serial和PXI)的仪器进行控制。但要求被控的仪器是同一厂商的同类仪器。即仪器的程控指令集是一样的。使用IVI接口编写的程序可以对同类仪器,但厂商不同,程控指令集不同的仪器进行控制。要求是
被控仪器支持IVI标准,提供IVI仪器驱动。如果从软件体系结构上由低向高的来排序,应该是:程控仪器->程控指令+VISA->仪器驱动->IVI->测试系统应用。
从二者的英文全名也可窥见一斑:
VISA: Virtual Instrument Software Architecture
IVI: Interchangeable Virtual Instrument
实现IVI-COM驱动程序
上面说到了IVI Foundation定义了两种基本的架构和接口类型,针对LabWindow和LabVIEW的IVI-C驱动程序的实现占据着主要地位,虽然IVI Foundation定义了IVI-COM驱动程序框架和接口函数,但实现的并不是很多,此次采用ATL技术实现了IVI-COM驱动程序,实际上实现了一个通用的函数库,方便不同的驱动程序开发者进行调用。
为了实现这样一个函数库,还需要VISA函数库,互换性原则的体现在对VIAS库中不同仪器控制命令的调用。IVI-Foundation对IVI-COM驱动程序的定义是比较详细的,例如有这样的定义:
COM Method Prototype
HRESULT SendSoftwareTrigger ();
定义了一个COM方法SendSoftwareTrigger,调用该函数发送一个软触发的三角波信号到设备上。在规范中详细的定义了每个接口类的类名、属性、方法以及参数说明,详细的接口定义文件可以参考规范中的IDL文件附件,有了这个IDL文件和接口说明,具有ATL技术背景的话,实现IVI-COM就不是问题了,又例如:
Data Type ViString
Access R
Applies to <capability>
Coercion None
High Level Functions
该列表定义了一个COM属性,其属性名为:Name ([in] LONG Index),返回值类型为ViString,输入参数为长整型,ViString数据类型和MFC中的CString类似。
限于篇幅这里不详细列出实现代码细节,具体的文档还可以参考以下网址:
虚拟仪器名词扫盲()
VIRTUAL INSTRUMENTS :虚拟仪器(其实VIRLTUAL 真实意思有一层与虚拟截然不同的意思,实 质,真实...
VIRTUAL INSTRUMENTATION:注意INSTRUMENT :仪器, INSTRUMENTATION:乃是指测量测试的方 法,技术.
LABVIEW:Laboratory Virtual Instrument Engineering Workbench.
GPIB(HP-IB,IEEE488):General Purpose Interface Bus,Hewlett-Packard Interface Bus, IEEE 488
Bus都是同一个东西,用来控制台式仪器的通讯协议(当然既要有软也要有硬方面的规范了),和后来IEEE 488.2
SCPI:Standard Commands for Programmable Instruments ,可程控仪器标准指令集。
VISA:Virtual Instrument Software Architecture,虚拟仪器软件架构
IVI driver:Inerchangeable Virtual Instrauments Driver 可互换虚拟仪器驱动 VXI(IEEE 1155):VMEbus eXtensions for Instrumentation(VME:VERSAbus Module Eurocard)
VME总线是70年代末80年代初时由Motorola,Signatic等公司创立的一计算机总线。
PXI:PCIbus eXtensions for Instrumentation(PCIJ)
DAQ:Data AcQuisition数据采集,多指基于计算机的板卡及插卡式仪器的DAQ
SCXI:Signal Conditioning eXtensions for Instrumentation,是NI自定义的一专用于信号条理
领域的“总线”
CompactPCI 一种坚固的模块化结构,结合了PCI电气规范与Eurocard封装。适合于工业计算应用。
GPIB General-Purpose Interface Bus, 通用接口总线。一种8位的并行通信接口。根据IEEE 488-1987 标准,数据传输速率可达1Mbyte/s。
Industrial PC 工业计算机,或称为工控机,一种能够承受工业环境的计算机。
MXI-2 一种PCI系统与VXI系统间的总线扩展器。由此PCI系统可以像内置VXI控制器一样控制VXI 设 备
MXI-3 一种PCI到PCI的桥(PCI-PCI bridge),用于以台式计算机远程控制PXI机箱。
PICMG PCI Industrial Computer Manufacture Group, PCI工业计算机制造商协会。一个会员公司的组织,维护目前的CompactPCI与PCI/ISA规范。
PXI 一种基于PCI的坚固、模块化的结构,具有专为测试与测量应用设计的电气规范与时钟电路。
PXI System Alliance PXI系统联盟,一个全球生产商与系统集成商的组织。控制PXI规范,定义用于测试与测量、工业自动化 与数据采集应用的CompactPCI产品系统级要求。
RTSI Bus 实时系统集成(Real-Time System Integration)总线。一种局部总线,通过在插入式数据采集卡 或仪器类板卡间直接连线实现计数器、时钟和触发信号的共享。
Star Trigger 星形触发。组合了第二槽(Slot 2)的左侧局部总线,用于为第3槽至第15槽提供高精度、低 偏移的触发。
Trigger Lines 触发线。PXI总线上的信号线,专门用于在模块间传送触发信号。
VISA 提供LabVIEW、CVI、Measurement Studio、C、C++和Visual Basic等各个编程环境与编程语言之间的接口。
VXI 一种工业标准的仪器总线,基于VME总线,主要用于模块化的单卡仪器(instrument-on-a-card)系统。
VXIplug&play 标识硬件和软件与VXIplug&play 系统联盟(VXIplug&play System Alliance)规范的一致性。VISA是该联盟的官方软件语言。