当前位置:文档之家› IVI配置文件的管理

IVI配置文件的管理

仪器无关测试系统IVI配置文件的管理(转载)( 更新时间:2006-08-31 16:15:08)1概述VPP规范中定义了VISA(virtualinstrumentsoftwarearchitecture)接口软件,对串行总线、GPIB总线、VXI总线仪器的操作提供了统一接口,提高了仪器的可互换性。

19 9 8年8月,为了进一步提高仪器驱动程序的执行性能,达到真正的仪器互换性,由9个公司成立IVI(InterchangeableVirtualInstrumentation)基金会,在VPP的基础上为仪器驱动程序制定新的编程接口标准,使应用程序可以实现完全独立于硬件,而不管其是何种总线接口,并增加了仪器仿真、状态缓存等机制,使仪器执行效率大大提高。

2IVI系统结构目前,IVI基金会共规范和开发了5类驱动程序:示波器、数字多用表、任意波形/函数发生器、开关和直流电源。

即将推出射频信号发生器、频谱分析仪、功率计、数字仪器分类驱动程序。

IVI系统结构如图1所示,由IVI分类驱动程序、IVI具体仪器驱动程序、IVI引擎、IVI配置实用程序、IVI配置信息文件5部分组成。

应用测试程序中调用分类驱动程序,分类驱动程序调用具体仪器驱动程序来控制实际的仪器,因此,即使测试系统的具体仪器改变,也不会使分类驱动程序的测试代码受到影响。

2 1分类驱动程序一个分类驱动程序是一组仪器无关函数和属性用于控制某一类型的仪器,比如示波器、数字多用表、函数发生器等,这些函数有一个通用功能前缀如IviScope、IviDmm或IviFgen。

目前IVI驱动程序工具箱共有5类:示波器、数字多用表、任意波形/函数发生器、开关和电源,每个分类驱动程序调用具体仪器驱动程序来控制实际的仪器。

因为每一类中的所有仪器不可能具有完全相同的功能和性能,没有一个单一的编程接口可以适用于所有的仪器,因此IVI分类驱动程序将仪器能力分为固有的IVI能力、基本能力、扩展组能力、仪器特有的能力4种。

固有的IVI能力是指所有的IVI分类驱动程序都具有的函数和属性,比如ClassPrefix- init( )函数,对5类驱动程序而言,只是将ClassPrefix(类前缀)加上,分别为IviScope、IviDmm、IviDCPwr、IviFgen或IviSwtch,此类函数有19个;基本能力是指某类仪器公有的函数和属性,可以覆盖某类仪器95 %以上的功能,例如示波器的基本功能为:沿触发采集、初始化一个采集过程、返回采集波形等,一个IVI兼容的仪器必须具有上述基本能力;扩充组功能(ExtensionGroups)是指并不是某一类仪器都具有的、更为特殊的函数和属性组,具体仪器驱动程序不需要实现扩充功能组,由IVI分类驱动程序为属于某类仪器不标准的功能创建标准编程接口,例如,虽然所有示波器水平和垂直设置都有相同的基本功能,但却有各种各样的触发模式,IviScope分类驱动程序包含了不同触发模式的扩展功能,比如TV触发、runt触发、宽度触发等等,每个具有TV触发的示波器都能遵守IviScope分类驱动程序的TV触发扩展组函数和属性。

仪特有的功能是指其他设备没有的,为了使用这些功能必须在程序中直接访问IVI具体驱动程序,这部分程序将不支持仪器互换性。

2 2具体仪器驱动程序具体仪器驱动程序包含控制一个特定仪器的信息,包括命令串、分析代码、每个设置的正确量程等。

其对外接口与VISA仪器驱动程序没有什么区别,但内部实现方法却大不相同,在VPP基础上增加了仪器仿真、状态缓存、量程检查等功能。

2 3IVI引擎IVI引擎完成状态缓存、仪器属性跟踪、分类驱动程序到具体驱动程序的映射功能。

是实现IVI仪器驱动程序完成状态缓存和其他增强性能的关键支持库,比如仪器仿真、量程检查和状况检查等功能。

在开发期间,这些功能可以辅助应用软件的调试与开发,一旦转入产品模式,IVI引擎允许关闭量程检查、状况检查、仪器仿真等功能,以获得最快速度的软件执行性能。

2 4IVI配置实用程序IVI系统提供了名为“Measurement&AutomationeXplorer”(简称MAX)的IVI配置程序,用于配置仪器无关测试系统,创建和配置IVI逻辑名称(logicalnames) ,在测试程序中通过传送逻辑名称给一个分类驱动程序初始化函数,以将操作映射到具体仪器及其仪器驱动程序。

2 5IVI配置信息文件通过MAX创建和配置的信息保存在Vxipnpwin9 5niiviiviini文件中,该文件存储了所有逻辑名称和分类驱动程序到具体仪器驱动程序的映射信息。

3硬件无关性的实现过程如图2所示,在应用软件中通过逻辑名称调用分类驱动程序,IVI引擎通过逻辑名称检查IVI配置文件,以确定正在使用的具体仪器,并动态地调用具体仪器驱动程序相应的初始化函数,与仪器建立会话连接,并将会话句柄返回给分类驱动程序,然后,分类驱动程序其他函数通过该句柄发送仪器控制命令和接收数据,这些函数同样被IVI引擎映射到具体仪器驱动程序的函数,以完成对硬件仪器的I/O操作,通过这个过程实现了仪器的互换性。

更换了仪器之后,只要修改配置文件的信息,使程序中的逻辑名称指向新的仪器和仪器驱动程序,而应用程序不需要任何改变。

4IVI驱动程序的其他性能特征IVI驱动程序虽然是建立在VPP规范之上的标准,但不导致额外的复杂性和性能下降,而是增加了很多提高系统执行效率、缩短开发时间的特性,除硬件可互换性之外,还有以下几个方面的特性。

4 1仪器状态缓存标准的仪器驱动程序不跟踪仪器的状态,所以测量函数在实施测量前必须进行仪器状态设置,即使仪器已经被配置正确,这样的过程必然会引入多余的仪器I/O操作,IVI驱动程序自动缓存仪器当前状态,只有在仪器状态与函数所需要的不同时才执行仪器I/O,这种表面上小小的不同却明显缩短了测试时间,在某些情况下,执行时间甚至会减少一半。

4 2量程检查及参数强制驱动程序包含仪器每个属性的量程表,保存属性的正确值,引擎利用量程表校验用户设置的值是否在有效量程之内。

量程检查包含一种强制属性,是指落入某一指定范围的值强制为一指定值,比如,示波器的水平时基落入秒和纳秒之间值只能以1x、2x和5x递增,而不能出现3x等,在发送值到仪器之前,强制量程表自动强制任何值为适当值,比如强制4x为5x。

4 3仪器仿真当仪器不存在时,IVI驱动程序可以仿真仪器的操作,并返回仿真数据。

如果允许仿真,IVI驱动程序不执行仪器I/O,而为输出参数创建仿真数据。

通过仿真数据,即使在没有仪器的情况下开发者也可以开发测试系统软件代码。

4 4多线程安全性IVI驱动程序是在LabWindows/CVI5.0环境中开发的,支持多线程,多个执行线程可以用相同的IVI仪器会话,而不会互相影响,所以可以用于高水平的、多线程并行测试系统。

4 5可配置的状态检查功能在每次操作之后,程序自动查询仪器的状况是否正常,该功能可以在软件调试完毕后关闭。

5IVI配置文件信息结构IVI系统配置信息存储在Vxipnpwin9 5 niiviiviini文件中,一般通过MAX工具可以进行交互式修改和配置,也可以通过文本编辑软件修改和查看。

5.1配置文件信息配置文件信息分为4个信息区,并具有较好的层次性。

( 1) [IviLogicalNames] :本区信息指定逻辑名称对应的虚拟仪器名称,格式:LOGICAL- NAME=“VInstr- >virtualinstrumentname”,例如:dmm1=“VInstr- >hpe1411b” ;( 2) [LogicalName- >somelogicalname] :定义一个逻辑名称必须链接到的虚拟仪器;参数:Description=描述逻辑名称;( 3) [Class- >someclass] :定义一个类和相应的分类仿真虚拟仪器;参数:Description=类描述。

SimulationVInstr=指向被类仿真使用的仿真虚拟仪器;( 4) [VInstr- >somevinstr] :定义和配置虚拟仪器参数:Cache=是否允许状态缓存(True/False)RangeCheck=是否允许量程检查(T/F)QueryInstrStatus=是否允许状况查询(T/F)RecordCoercions=是否允许强制情况记录(T/F)InterchangeCheck=是否允许互换性检查(T/F)Spy=是否允许NI-Spy(跟踪所有VISA、IVI、48 8.2函数调用的实用程序)支持(T/F) Simulate=是否允许仿真(T/F)UseSpecificSimulation=是否使用指定的仿真驱动程序(T/F)IsSimulationVInstr=是不是一个仿真虚拟仪器(T/F)Driver=相应驱动程序区[Driver- >somedriver]Hardware=相应硬件区[Hardware- >somehardware]DefaultSetup=相应的[DefaultSetup- >somesetup]区VirtualChannelNames=定义硬件无关的通道名称( 5) [Driver- >somedriver] :定义和配置一个驱动程序文件(driverdll)。

参数:Description=描述一个具体仪器驱动程序ModulePath=驱动程序路径,如果路径缺省则设定为C:VXIPNPWINxxBINPrefix=在驱动程序中使用的函数前缀Interface=例如GPIB或SERIAL等Class=指明驱动程序所依附的IVI类IsSimulationDriver=是否是一个仿真驱动程序(T/F)( 6) [DefaultSetup- >somesetup] :用于启动时传送属性值到一个仪器驱动程序格式:ATTRIBUTE=值( 7) [Hardware- >somehardware] :描述一个仪器的物理位置参数:Description=硬件接口描述ResourceDesc=正确的VISA资源字串,例如“GPIB::1::INSTR” ,仪器驱动程序通过该名称找到硬件仪器。

5.2 配置文件实例在下面的实例中,SCOPE1逻辑名称指向hp548xx示波器(实际用的是hp54815) ,IVI引擎通过图3所示的层次结构将逻辑名称指向具体的硬件仪器。

[IviLogicalNames]SCOPE1=″VInstr->hp548xx″power=″VInstr->hp6610xa″dmm1=″VInstr->hpe1411b″[VInstr->hp548xx]IsSimulationVInstr=FalseDriver=Driver->hp548xxDescription=Hewlett-Packard548xxOscilloscopeCache=TrueRangeCheck=TrueQueryInstrStatus=TrueRecordCoercions=FalseUseSpecificSimulation=FalseSpy=TrueInterchangeCheck=FalseSimulate=TrueHardware=″Hardware->hp548xx″VirtualChannelNames=″CHANNEL1=CHAN1,CHANNEL2=CHAN2″[Driver->hp548xx]Description=Hewlett-Packard548xxOscilloscopeModulePath=hp548xx_32.dllPrefix=hp548xxInterface=GPIBClass=IviScopeIsSimulationDriver=False[Hardware->hp548xx]ResourceDesc=″ASRL1::INSTR″Description=″hp5 48xxOscilloscope″[VInstr->hpe1428a]IsSimulationVInstr=False...VirtualChannelNames=″CHANNEL1=CHAN1,CHANNEL2=CHAN2″[Driver->hpe1428a]ModulePath=hpe1428a_32 dll...Interface=VXI[LogicalName->SCOPE1]Description=″HPOSC″文件中包含了hpe1428a和hp5 48xx两台示波器的信息,此时的逻辑名称SCOPE1对应hp5 48xx示波器,当系统将hp5 48xx示波器换为hpe1428a时,只要改变[IviLogicalNames]区中的参数为SCOPE1=″VInstr- >hpe1428a″即可以实现SCOPE1与hpe1428a的映射,应用程序不需要做任何改变,实现了仪器无关性设计。

相关主题