1、 IVI仪器驱动技术的发展仪器驱动技术的发展 IVI-C IVI-COM IVI-MSS IVI-Signal Interface IVI(Interchangeable Virtual Instruments可互换式虚拟仪器)于可互换式虚拟仪器)于1998年由年由IVI基金会推基金会推出的新一代仪器驱动技术规范。出的新一代仪器驱动技术规范。IVI致力于实现致力于实现仪器驱动器的可互换性、开发灵活性、测试高效仪器驱动器的可互换性、开发灵活性、测试高效性以及保证测试品质。性以及保证测试品质。 IVI与已有的仪器驱动技与已有的仪器驱动技术相比主要优势体现在:术相比主要优势体现在:(1)仪器可互换能
2、力)仪器可互换能力(2)仪器的仿真模拟)仪器的仿真模拟(3)仪器状态跟踪与缓存)仪器状态跟踪与缓存 目前已制定和正在制定的目前已制定和正在制定的IVI仪器类规范有十仪器类规范有十余种,包括:余种,包括:、功率、功率计、射频信号发生器、频谱分析仪、数字计、射频信号发生器、频谱分析仪、数字I/O、化学分析仪等化学分析仪等 。 IVI-C、IVI-COM实现了同类仪器的可互换,实现了同类仪器的可互换,编程开发中同一类仪器采用统一的类仪器驱编程开发中同一类仪器采用统一的类仪器驱动器动器, 同一类仪器的编程接口完全相同。同一类仪器的编程接口完全相同。测试程序测试程序IVI类驱动器类驱动器IVI特定仪器驱
3、动器特定仪器驱动器应用程序交互开发接口编程开发接口函数体初始化函数阻态函数应用函数动作状态函数数据函数属性函数关闭函数回调函数IVI引擎子程序接口VISA I/O接口函数体 IVI内部模型由:回调函数集、VPP功能体和IVI引擎。其中VPP功能体部分与VPP仪器驱动器内部设计模型相同,包括组件函数集和应用函数集两部分。回调函数是IVI引擎提供的读写仪器配置或获取仪器状态的操作机制,回调函数不能被用户直接调用。 VPP仪器仪器驱动器结构驱动器结构IVI引擎引擎回调函数集VPP仪器驱动器内部结构IVI DriverIVI EngineSetAttr (AMP, 5.0)Range-Check“Is
4、 Range-Checking on?”If YES, compare 5.0 against valid rangesAmpRangeTableValid ranges for Amp 范围检查机制可以自动检测设置的属性值是否在正范围检查机制可以自动检测设置的属性值是否在正确的范围内,如果超出范围则自动赋以缺省值。用户可确的范围内,如果超出范围则自动赋以缺省值。用户可以禁止使用范围检查机制以提高测试速度。以禁止使用范围检查机制以提高测试速度。IVI引擎还引擎还提供了范围表的机制,强制选择合适的值。提供了范围表的机制,强制选择合适的值。IVI DriverIVI EngineSetAttr (
5、ATTR, 5.0)Range-Check“Is Range-Checking on?”If YES, GetRangeTableCall appropriate range tableAttrRangeTable1AttrRangeTable2GetRangeTableGetAttrX If X = 1, RangeTable1 If X = 2, RangeTable2IVI DriverIVI EngineSetAttr (AMP, 5.0)Range-CheckRangeTablesCache“Is state-caching on?”Compare 5.0 against curre
6、ntvalue of AMP in cacheIf different, continueIf same, stop.cachedvaluesOn/OffOn/Off状态缓存机制是IVI引擎在内存中保存了仪器内部属性的状态。状态缓存的机制避免了向仪器发送冗余的命令。因为设置仪器属性时,IVI引擎自动比较缓存的属性值和待设置的属性值,只有不相等时才设置,减少了不必要的操作。状态缓存机制使得测试系统的性能提高了38。IVI DriverIVI EngineSetAttr (AMP, 5.0)Range-CheckRangeTablesCacheSimulate“Is simulation on?”
7、If YES, dont send anythingIf NO, continueOn/OffOn/OffOn/Off 仿真功能实现脱离硬件设备的开发和调试手段。仿真功能实现脱离硬件设备的开发和调试手段。IVI仿真是通过范围检查机制或范围表机制为用户产生仿真是通过范围检查机制或范围表机制为用户产生必需的测试数据,实现脱离硬件的开发和调试。必需的测试数据,实现脱离硬件的开发和调试。IVI DriverIVI EngineSetAttr (AMP, 5.0)Range-CheckRangeTablesCacheSimulateSend ValueWrite CallbacksCheck Statu
8、s“Is status-checking on?”If YES, call status check callback in driverCheck Statussend cmd to checkinstr statusOn/OffOn/OffOn/OffOn/Off 状态检查机制是在每次执行操作之后自动执行仪状态检查机制是在每次执行操作之后自动执行仪器状态检测,确保仪器属性设置及运行状态在正常的器状态检测,确保仪器属性设置及运行状态在正常的范围内,保证了仪器的正常运行。范围内,保证了仪器的正常运行。IVI DriverIVI EngineSetAttr (AMP, 5.0)Range-Che
9、ckRangeTablesCacheSimulateSend ValueCall AmpWriteCallbackin DriverAmpWriteCallbackSends cmd toset AMP to 5.0On/OffOn/OffOn/OffIVI DriverIVI EngineGetAttr (AMP, &val)RangeTablesCacheSimulateRead ValueWrite CallbacksCheck StatusCheck Status CallbackOn/OffOn/OffOn/OffIf On, check cache for value.If val
10、id value in cache, return.If no cached value, continueRead CallbacksCall Read Callback in driverIVI DriverAttribute RangeTablesAttribute Write CallbacksCheck Status CallbackAttribute Read CallbacksHigh-Level FunctionsInitializeConfigureMeasureRead WaveformIVI DriverIVI EngineTest ProgramCall high-le
11、vel functions, just like drivers todayWizard generates code templateWizard generates code tohandle Engine callsEngine handles difficult driver issues:state-caching, simulation, range-checking, etc. 为了实现不同厂商同类仪器的可互换性,为了实现不同厂商同类仪器的可互换性,IVI建立了仪器类驱动器机制,将不同的仪建立了仪器类驱动器机制,将不同的仪器按功能分类,每类仪器驱动器对外提供一器按功能分类,每类仪
12、器驱动器对外提供一致的属性和接口函数。在开发测试程序的过致的属性和接口函数。在开发测试程序的过程中,只是调用公共的程中,只是调用公共的类驱动器类驱动器的接口;而的接口;而实际测试软件执行过程中,则根据实际使用实际测试软件执行过程中,则根据实际使用的仪器自动调用的仪器自动调用特定仪器特定仪器的驱动代码。的驱动代码。IVIIVI类驱动器类驱动器 由于一个给定类中的所有不同型号的仪器不由于一个给定类中的所有不同型号的仪器不可能具有完全相同的功能,不可能为这些仪器仅可能具有完全相同的功能,不可能为这些仪器仅建立一个应用程序接口。因此,为了提高性能、建立一个应用程序接口。因此,为了提高性能、便于实现互换
13、,在便于实现互换,在IVIIVI规范中将规范中将IVIIVI类驱动器实现类驱动器实现对仪器操作的函数及属性进行如下分组:对仪器操作的函数及属性进行如下分组: Inherent IVI CapabilitiesInherent IVI Capabilities(固有(固有IVIIVI功能)、功能)、Fundamental CapabilitiesFundamental Capabilities(基本功能)、(基本功能)、Extension GroupsExtension Groups(扩展功能组)及(扩展功能组)及Instrument-Instrument-specific Capabiliti
14、esspecific Capabilities(仪器特定功能)。(仪器特定功能)。IVIIVI类驱动器与特定仪器驱动器间的关系类驱动器与特定仪器驱动器间的关系 Inherent IVI Capabilities Fundamental Instrument Capabilities Extension Capabilities Group1 Extension Capabilities Group2 Inherent IVI Capabilities Fundamental Instrument Capabilities Extension Capabilities Group1 Instru
15、ment-specific Capabilities IVI Class Driver IVI Specific Driver Test Program 为了便于统一操作,为了便于统一操作,IVIIVI规范对于类驱动器中的规范对于类驱动器中的每一函数、属性及全部文件名的命名方式及书写方式每一函数、属性及全部文件名的命名方式及书写方式做了统一的规定。做了统一的规定。IVI ClassFunction PrefixAttribute ID Prefix Filename Prefix Digital MultiMeter IviDmmIVIDMMividmm.*OscilloScopeIviSco
16、peIVISCOPEiviscope.*Function GeneratorIviFgenIVIFGENivifgen.*Power SupplyIviPowerIVIPOWERivipower.*SwitchIviSwitchIVISWITCHiviswitch.*IVIIVI仪器驱动器的调用过程仪器驱动器的调用过程测试程序测试程序IVI数字万用表(数字万用表(DMM)类驱动器)类驱动器(IviDmm_Configure)HP34401特定仪器驱动器特定仪器驱动器(hp34401_Configure)FLUKE45特定仪器驱动器特定仪器驱动器(fl45_Configure) IVI使用使用I
17、VI.INI 配置文件实现了从类驱动器配置文件实现了从类驱动器到特定驱动器的映射,使得更换仪器时只到特定驱动器的映射,使得更换仪器时只需改变驱动器的映射,即将类驱动器的映需改变驱动器的映射,即将类驱动器的映射从一个驱动器改变到同类仪器的另一个射从一个驱动器改变到同类仪器的另一个驱动器,而不必改变测试程序。驱动器,而不必改变测试程序。 IVI.INI文件定义了设备逻辑名、类驱动器、文件定义了设备逻辑名、类驱动器、虚拟设备、驱动器及硬件配置等字段。虚拟设备、驱动器及硬件配置等字段。l 设备逻辑名设备逻辑名(IviLogicalName)字段定义了仪器设备标志符,)字段定义了仪器设备标志符,并给出了
18、该仪器驱动器虚拟设备字段在并给出了该仪器驱动器虚拟设备字段在IVI.INI中的入口信息。中的入口信息。l 类驱动器字段(类驱动器字段(ClassDriver-XXX)描述了当前使用的类驱描述了当前使用的类驱动器的类别,动器的类别,“XXX”代表驱动器类,比如数字多用表为代表驱动器类,比如数字多用表为“IviDMM”。l 虚拟设备字段虚拟设备字段(Virtual Instrument ,其入口由逻辑名字段中其入口由逻辑名字段中的的DMM= 给出)描述了特定仪器驱动器一些属性的配置(如给出)描述了特定仪器驱动器一些属性的配置(如范围检测、仿真功能等)。这些属性的值是在类驱动器初始范围检测、仿真功能
19、等)。这些属性的值是在类驱动器初始化时作为参数传入的。该字段还给出了该仪器驱动器的驱动化时作为参数传入的。该字段还给出了该仪器驱动器的驱动器字段和硬件配置字段在器字段和硬件配置字段在IVI.INI文件中的入口信息。文件中的入口信息。l 驱动器字段驱动器字段(Driver,其入口由虚拟设备字段中的,其入口由虚拟设备字段中的Driver= 给给出)描述了仪器驱动器的位置、接口形式、驱动器前缀等信出)描述了仪器驱动器的位置、接口形式、驱动器前缀等信息,以便类驱动器正确地载入、调用特定的驱动器息,以便类驱动器正确地载入、调用特定的驱动器。l 硬件配置字段硬件配置字段(Hardware,其入口由虚拟设备
20、字段中的,其入口由虚拟设备字段中的Hardware= 给出)描述了特定仪器的地址信息、描述信息、给出)描述了特定仪器的地址信息、描述信息、ID号等,以便类驱动器正确地建立与仪器的通信连接。号等,以便类驱动器正确地建立与仪器的通信连接。IVIIVI配置文件举例:配置文件举例:IviLogicalNameDMM = ”VInstr-Fl45”ClassDriver-IviDmmDescription = ”IVI Digital Multimeter Class Driver”SimulationVInstr = “Vistr-NISimDMM”VInstr-Fl45Description = “
21、Fluke 45 Digital Multimeter” Driver = “Driver-45”Hardware = “Hardware-Fl45”RangeCheck = TrueSimulate = FalseUseSpecificSimulation = FalseTrace = TrueInterChangeCheck = TrueQureStatus = TrueChannelName = “ch1”DefaultSetup = “”“”Driver-FL45Description = “Fluke 45 Digital Multimeter Instrument Driver”M
22、odulePath = “d:program files cviinstrFL45.dll”Prefix = “FL45”Interface = “GPIB”Hardware-FL45Description = “”“”ResourceDesc = “GPIB:2:INSTR”IDString = “FLUKE ,45,4940191,1.6,D1.0”DefaultDriver = “Driver-Fl45” 在应用程序中调用类驱动器的初始化函数进行仪器初始化:IviDmm_Initialize(&DMMhandle); 通过IVI.INI文件映射,类驱动器读入映像文件的配置信息,并动态地载
23、入位于“d:program files cviinstrFL45.dll”的FL45驱动器组件。根据Driver-FL45字段中定义的驱动器前缀“FL45”找到对应的Fluke 45数字多用表的初始化函数(比如FL45_InitWithOptions),并将映像文件中初始信息作为参数传入:资源地址 GPIB:2:INSTR;属性配置 “Simulate=0,RangeCheck=1,QueryInstrStatus=1,Cache=1”,从而完成Fluke45 DMM 的初始化。IVI类驱动器中不能出现具体的特定仪器类驱动器中不能出现具体的特定仪器前缀,为实现互换性,类驱动器只能采用前缀,为实
24、现互换性,类驱动器只能采用动态链接库的显示调用方式来实现。在显动态链接库的显示调用方式来实现。在显式调用方式下,通过式调用方式下,通过LoadLibrary函数装载函数装载D L L 并 获 得 其 句 柄 后 , 需 通 过 调 用并 获 得 其 句 柄 后 , 需 通 过 调 用GetProcAddress函数获得各所需导出函数函数获得各所需导出函数的地址,通过对导出函数的地址进行操作的地址,通过对导出函数的地址进行操作来实现交换前缀的目的。来实现交换前缀的目的。打开配置文件打开配置文件ivi.iniivi.ini,从中读取特定仪器,从中读取特定仪器驱动器中函数的前缀及其动态链接库的名字驱
25、动器中函数的前缀及其动态链接库的名字定义指向各函数的指针变量定义指向各函数的指针变量将读出的前缀和函数名拼接,生成测试系统需将读出的前缀和函数名拼接,生成测试系统需间接调用到的特定仪器驱动器中的完整函数名间接调用到的特定仪器驱动器中的完整函数名显式装入特定仪器驱动器的动态链接库显式装入特定仪器驱动器的动态链接库取得特定仪器驱动器中各函数的地址,并将取得特定仪器驱动器中各函数的地址,并将此地址值赋给上述定义的各相应的指针变量此地址值赋给上述定义的各相应的指针变量类驱动器动态链接库中的函数通过返回上述类驱动器动态链接库中的函数通过返回上述函数指针实现将调用映射到特定仪器驱动器函数指针实现将调用映射
26、到特定仪器驱动器中的相应函数上,从而实现函数前缀的交换中的相应函数上,从而实现函数前缀的交换或或HP 34401 驱动器驱动器Fluke 45驱动器驱动器IVI.INI映像文件映像文件数字万用表类数字万用表类驱动器驱动器测试程序测试程序VISA I/O 接口接口HP 34401或或Fluke 45数字万用表数字万用表IVI类驱动器映射特定驱动器示意图类驱动器映射特定驱动器示意图 IVI-MSS server 封装了特定测试/测量领域功能的软件模块,与具体仪器无关; IVI-RCM 为MSS服务器提供特定测试测量功能API,通过RCM模块实现鲁棒性的仪器可互换接口;IV I C O M S e
27、s s io n F a c to ryIV I C o n fig S e rv e rIV I C o n fig u ra b le C o m p o n e n tIV I-M S S C o m p o n e n tIV I-M S S S e rv e rIV I-M S S R C MIV I-M S S H a rd w a re A s s e t In te rfa c eIV I-M S S R o le In te rfa c eIV I-M S S C lie n tu s e d b yu s e d b yc o n tro lsc o n tro lsim p le m e n tsu s e sc o n tro ls1*1*1 .*1 .*1 .*1 .*D riv e rH a rd w a re A s s e tc o n tro ls*u s e su s e s*11S p e c ifie d b y IV I-3 .1 0(IV I-M S S ) S p e c ific a tio nim p le m e n ts