ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:110.38KB ,
资源ID:7103099      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7103099.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(IVI技术规范及其工作原理.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

IVI技术规范及其工作原理.docx

1、IVI 技术规范及其工作原理技术规范及其工作原理 1.1 IVI 技术规范及其工作原理技术规范及其工作原理 IVI 技术的特点技术的特点 为了进一步提高仪器的可互换性和测试代码的可重用性,降低系统升级的难度和成本,由 NI公司、GEC 马可尼公司、朗讯技术公司、GDE系统公司等十几家仪器生产厂商成立了 IVI基金会并发布了 IVI技术规范。IVI技术规范是 IVI基金会在 VPP 规范的基础上定义仪器的标准接口、通用结构和实现方法,用于开发一种可互换、高性能、更易于开发维护的仪器的编程模型。IVI技术主要具有以下特点。1)通过仪器的可互换性,节省测试系统的开发和维护费用 IVI技术提升了仪器驱

2、动器的标准化程度,使仪器驱动器从基本的互操作性提升到了仪器类的互操作性。通过为各仪器类定义明确的 API,测试系统开发者在编写软件时可以做到最大程度的与硬件无关,当替换过时的仪器或采用更高性能的新仪器进行系统升级时,测试程序源代码可以不用做任何更改或重新编译,这大大提高了代码的可重用性,同时也缩短了测试系统开发周期以及系统维护费用。2)通过状态缓存,改善测试性能 IVI引入了属性管理机制,其模型中的 IVI引擎可实现状态存储功能。VPP 驱动程序总是假设仪器状态是未知的,因此,每个测量函数在进行测量操作之前都要对仪器进行设置,而不管仪器在此之前是否被配置过。而 IVI 驱动器通过状态缓存能自动

3、存储仪器的当前状态。一个 IVI仪器驱动程序函数只有在仪器当前设置和函数所要求的值不一致时,才执行 I/O 操作,而不是每次都对仪器的所有参数进行重新配置,这样 IVI引擎可以避免发送冗余的仪器配置命令,从而优化程序运行时的性能,极大的缩短测试时间。3)通过仿真,使测试开发更容易、更经济 利用 IVI仪器驱动器的仿真功能,用户可以在仪器还不能用的条件下,使用驱动程序建立应用程序,这种情况下,驱动程序不执行仪器 I/O 而仅利用软拷贝来进行处理,它检查输入参数并且产生仿真的输出结果。有了这些仿真数据,开发者在没有仪器硬件的情况下也能为仪器开发应用程序代码。IVI 驱动器的类型及互换性的实现原理驱

4、动器的类型及互换性的实现原理 如图 4所示,IVI驱动器分为 IVI类驱动器和 IVI专用驱动器两大类型。IVI类驱动器提供符合已定义 IVI仪器类规范的仪器驱动器 API,通过 IVI类兼容专用驱动器间接实现与仪器硬件的通信连接。实际上,可以将 IVI类驱动器理解为一种抽象的、具有过渡性质的仪器驱动器,类似于面向对象编程技术中的虚拟基类,而IVI类兼容专用驱动器则是它的派生类。IVI专用驱动器封装了用于控制某一类或某一种仪器所需的信息和函数,能够直接与底层硬件通信,它又包括 IVI类兼容专用驱动器和 IVI定制专用驱动器。IVI类兼容专用驱动器与某一类已定义的 IVI仪器类兼容,使用已定义仪

5、器类的标准 API,但同时又增加了一些其他特性,以满足用户对仪器互换性的要求;IVI定制专用驱动器使用用户化的 API,不与任何已定义的仪器类标准兼容,不能实现硬件的互换性,主要用于一些特殊场合。图 1IVI驱动器分类 IVI规范把仪器驱动器分成类驱动器和专用驱动器的目的是为了实现仪器的互换性。为了确保在进行仪器替换时不修改测试代码,不再做重新编译或链接,做到完全的互换性,IVI规范规定用户需要直接用仪器类 API编程而不是用特定的 IVI类兼容专用驱动器编程,与特定仪器相关的驱动器和硬件资源配置不能在测试程序中完成,于是 IVI技术规范提出了一种被称为“配置仓”的软件结构。图 2IVI仪器驱

6、动器互换性原理图 IVI配置仓是用来实现仪器互换性的外部软件,具有动态加载特定仪器驱动器的能力,通过建立类驱动器和特定仪器驱动器的映射关系来实现仪器的互换和测试程序的代码重用。图 5解释了仪器互换性的实现方法。IVI配置仓中包括了一系列逻辑名以及与各逻辑名一一对应的驱动器通话配置器,在应用程序通过某个逻辑名来访问 IVI类驱动器时,IVI类驱动器通过逻辑名的匹配得到实际的 IVI类兼容专用驱动器通话配置器,并实现该驱动器的动态加载,然后通话配置器建立与专用驱动器和仪器的通话链路,同时也决定一些可配置属性的配置,如仿真、状态缓存状态检查等,当用户更换仪器时,只需将 IVI配置仓中对应的逻辑名重新

7、定位到另一个通话配置器,从而实现仪器的互换。IVI 驱动器的工作原理驱动器的工作原理 IVI驱动器的工作机制如图 6所示。IVI模型中把每一个可读写的仪器设置定义为一个属性。IVI引擎与驱动程序一起参与对 图 3IVI仪器驱动器工作机制 仪器属性的管理,主要包括记忆和跟踪属性值、属性范围检查和强制设定、控制属性值的读写等。组成 IVI仪器驱动程序的高层函数主要包括以下四个部分:(1)用于读写某个仪器属性的 IVI标准属性函数;(2)用于规定每一个仪器属性有效范围的范围表;(3)属性回调函数(读回调函数、写回调函数、范围检查回调函数等);(4)全局通道回调函数(如状态检查回调函数等)。当驱动程序

8、在高层函数中设置属性时,IVI引擎被激活并访问属性范围表进行范围检查和强制设定值,在设置值与缓存值不同时激活属性回调函数,执行仪器 I/O操作,否则直接返回成功。如果执行了 I/O操作,则高层函数还要在驱动程序中调用状态检查回调函数,查看是否有错误发生。由于 IVI引擎运行在计算机内部,而驱动程序只有在对仪器进行硬件操作时才花费较多时间,因此,通过在高层函数和低层 I/O操作之间引入属性管理机制,可以在不影响仪器工作的条件下增强对仪器操作的灵活性和安全性,并大大提高驱动程序的效率。以通道配置函数 dsoes1452_ConfigureChannel 配置垂直灵敏度为 5V/div 为例,IVI

9、驱动器和 IVI引擎将执行以下几步:函数 dsoes1452_ConfigureChannel 中调用标准 IVI属性设置函数Ivi_SetAttributeViReal64(),将属性 DSOES1452_ATTR_VERTICAL_RANGE 的值设置为 5.0。如果 IVI内置属性 IVI_ATTR_RANGE_CHECK(范围检查)的值为真VI_TRUE,IVI引擎调用属性范围检查回调函数,判断 5.0 是否超出了垂直灵敏度属性范围表。如果超出了有效范围,属性设置函数返回一个错误代码,或者调用强制回调函数强制设定为有效范围内的数值。如果 IVI内置属性 IVI_ATTR_CACHE(状

10、态缓存)为真 VI_TRUE,IVI引擎比较5.0 与当前缓存中的值是否相等,如果相等,属性设置函数直接返回执行成功代码。如果 IVI内置属性 IVI_ATTR_CACHE(仿真)为真 VI_TRUE,属性设置函数直接返回执行成功代码。如果 5.0与缓存值不等且不是执行的仿真,则调用垂直灵敏度属性写回调函数dsoes1452AttrVerticalRange_WriteCallback(),通过 VISA I/O 函数访问底层硬件,写入5.0 对应的命令,并更新当前缓存值为 5.0。如果属性 IVI_ATTR_QUERY_INSTR_STATUS(仪器状态检查)为真 VI_TRUE,同时 IV

11、I引擎调用了写回调函数,则函数 dsoes1452_ConfigureChannel 调用状态检查回调函数,该回调函数读取仪器的状态寄存器信息,以检查是否有错误发生。IVI 仪器驱动器的开发流程仪器驱动器的开发流程 考虑到 IVI规范是在 VPP 规范基础上提出来的,IVI仪器驱动器与 VPP 驱动器的区别就在于 IVI驱动器多了 IVI引擎,IVI引擎通过属性管理来控制硬件,而 VPP 驱动器是直接调用 VISA函数访问仪器,所以我们的开发是直接用 LabWindows/CVI的开发向导开发 IVI驱动器,同时就可以实现 VPP 仪器驱动器的开发。IVI仪器驱动器的开发流程大致如下:启动 I

12、VI驱动程序开发向导,按照向导的提示设置仪器驱动器的相关信息,生成驱动程序框架代码,生成的框架代码中,包含了符合 IVI规范的示波器类驱动器的大部分标准函数。分析生成的各个属性,对相应属性进行编辑、删除或新建;对独立属性实现属性回调函数,这些属性可用来设置和访问硬件,写回调函数用来设置硬件属性值,在状态存储机制无效时,写回调函数总是被调用,此时 IVI驱动的工作过程与 VPP 驱动类似,读回调函数用来获取属性值。明确属性的无效值,IVI引擎采用属性无效列表作为保持状态存储完整性的一种技术,它用来解决高级属性之间的相关性问题,例如某一属性的无效列表中可以包含受其影响的属性,当这一属性的值改变而导

13、致被其影响的属性无效时,IVI引擎就可以修改它们的属性值。分析驱动程序的各组成文件,编辑和修改函数树与函数面板、删除不用的扩展代码,根据本模块的实际需要修改生成的函数代码,添加本模块所需要的特殊函数代码。设计软面板程序,对 IVI驱动程序的各函数进行测试并调试,在确保正确性的前提下生成安装文件。仪器驱动器属性的设置仪器驱动器属性的设置 运行 LabWindows/CVI 的 IVI仪器驱动器开发向导,按照向导的提示,输入所需要的本模块的相应信息,最后点击 Generate按钮即可生成 IVI仪器驱动器所需的基本文件,包括函数面板文件 PREFIX.fp,源代码文件 PREFIX.c,头文件 P

14、REFIX.c,仪器属性文件 PREFIX.sub。这里 PREFIX 代表在向导中输入的仪器驱动器前缀名称,生成的所有驱动器函数和属性名称都以此前缀开头,以表明此驱动器是某一型号特定仪器的特定驱动器。打开属性编辑器,可以看到自动生成的 IVI驱动器的所有属性列表,其中有一些属性是 IVI固有属性,即不管是什么类型的仪器都必须要有的属性,在 CVI中这些属性不能被用户随意更改,开发者不能对这些属性做任何编辑。其余大部分属性需要我们根据仪器的实际需要,进行重新编辑修改,删除不需要的属性,增加本模块所特有的设置属性。图 7所示为本信号采集模块的部分属性列表。整个系统分为信号采集、通道、水平、触发、

15、参数测量以及时钟同步六个子系统,在开发过程中,无论哪个阶段我们都是按照这六个子系统分别进行开发,这是 IVI驱动器在横向上的模块化体现,而在纵向上,IVI驱动器的体系结构从底层的 VISA接口库到上层的测试软件也是模块化的结构,这种多重模块化的结构正是 IVI规范的一大特点,既简化了整个系统的复杂性也大大降低开发难度。属性列表中每一个属性代表一种可以配置的仪器设置或参数,属性的编辑对象主要包括数据类型、属性范围表、默认值、属性描述、回调函数选择、属性标志以及属性无效列表等,其中属性范围表和属性无效列表的设置是重点和难点,属性范围表决定了属性的取值范围和数值类型,是范围检查和强制设定回调函数的依据,也是读、写回调函数进行数值和命令字符串转化的依据。而属性无效列表的编辑则要求必须对整个系统的工作流程和不同设置参数之间的相互关系有清楚地认识。对于上层用户来说,要设置仪器的某个参数,只需调用驱动器中相应的高级函数,或者直接调用 IVI属性设置库函数来设置相应属性的值即可,而根本不用关心驱动器是怎么把这个属性值写入仪器的,这部分工作由我们编写属性读、写等回调函数来实现。图 4信号采集模块驱动程序的属性列表 这部分代码主要是设置属性回调函数的代码,自动生成的代码中也包含相应的回调函数代码框架,回调函数中的实现代码再具体编写完成。.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1