完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
IVI 驱动程序的开发过程
一、 驱动程序的发展背景: 1、 测试系统的工作方式: 在工业生产中,往往需要使用到各种各样的测试仪器。现代的大规模生产线更是需要用到成百上千的测试仪器,要实现自动化测试就必须使用计算机控制这些仪器。 在用计算机控制仪器的初期,仪器与仪器之间、仪器与计算机之间的接口大多用的是GPIB接口总线;编程采用的是BASIC语言的I/O操作语句。每一台仪器都有自己的一套ASCII码的命令集。测试程序的编写者在编写测试程序前,需要熟悉硬件设备及其一大套命令,这对于一般的软件人员来说是较为困难的。编程也就常常成为开发自动检测系统中最耗费时间的一项工作。当检测系统使用到多种不同型号的仪器时,情况会更糟。同时,编程人员还会发现,当他们在为一台仪器编写新的应用程序时,需要做大量的重复性工作,耗费了大量的时间和精力。 2、 解决办法: 显而易见,如果编程人员在编写程序时,可以只调用一些例行程序的高层函数,而不需要直接面对低层的函数命令,则开发费用和开发时间都会大大下降。这些可被重复调用的例行函数就是仪器驱动程序。 二、 设备驱动程序的发展历史: 1、 GPIB接口总线标准。计算机与仪器之间的接口总线以GPIB(通用并行接口总线)最为常见,其它还有RS232、485、VXI等。GPIB总线的雏形是惠普公司(Hewlett Packard)在60年代制定的公司内部总线标准HP-IB。在此基础上,美国国家工程师协会于1975年制定了意在统一接口总线结构的IEEE488接口总线标准。1978年,又对IEEE标准在编码、格式、传输协议方面作了修订,这就是IEEE488.2标准。我们现在开发的GPIB设备驱动程序都必须遵循以上标准。此类标准中的最新版本是于1990年制定的SCPI(Standard Commands for Programmable Instruments)标准。 2、 VXI plug&play标准。VXI是一种仪器工业中常见的总线结构,通常我们把采用这种接口总线进行信息传送的集成卡式仪器也称为VXI。由于这种卡式仪器没有用户界面,通常被用来与计算机配合使用。VXI plug&play 标准的产生是为给VXI板卡制造商们提供一个统一的接口标准。后来VXI plug&play 标准被引用到整个仪器及计算机板卡制造业。现在大多数仪器制造商的产品都支持VXI plug&play 标准。 VXI plug&play 标准也为驱动程序的编写提供了固定格式。如驱动程序向仪器发送命令时必须遵守以下步骤:1〉初始化仪器。2〉设置变量参数。3〉设置测量命令。4〉进一步数据分析。5〉关闭进程。 使用诸如LabWindows/CVI一类的编程语言可以方便地编写出满足VXI plug&play结构框架的驱动程序。 VXI plug&play标准的出现极大的推动了现有仪器的发展。 3、 VISA标准。 VXI plug&play 标准制定了驱动程序的结构框架,但这还不够完全。现在,许多驱动程序的数据类型都采用的是VISA(Virtual Instrument Software Architecture)标准。VISA标准还统一了驱动程序中一部分用户的接口函数,这就为设备的互换奠定了基础。 4、 IVI标准。VXI标准并不是最新的设备驱动程序标准。IVI(Interchangeable Virtual Instrument)驱动程序标准在此基础上又向前迈进了一步,IVI标准产生的时间是1998年7月。 三、 IVI驱动程序的特点和优点: 1、 可互换性: IVI驱动程序完全符合VXI plug&play和VISA标准,是对以上两种标准的发展和完善。“IVI协会”为五大类仪器(数字万用表、示波器、信号发生器、开关、电源)定义了标准属性(Classic attribute)和标准用户接口函数(Classic function)。因此,使用IVI驱动程序的仪器设备在标纯特性范围内可以实现互换。对于每种型号仪器的独特性能,可以通过非标准属性和非标准用户接口实现。 2、 智能化与状态缓存功能:IVI驱动程序引入了状态缓存(State Cache)功能。现代设备控制中,影响系统速度提升的主要瓶颈是仪器与计算机间的信息传输速率。VXI p&p标准的驱动程序缺少状态缓存功能,因此,每执行一条测量函数都必须对仪器进行一次设置,即便仪器已经设置正常也得如此。而IVI的驱动程序可以自动将仪器状态放入缓冲区,并根据此次状态截断向仪器发送的冗余设置命令,以优化命令结构,提高系统效率。 3、模拟功能:指在缺少真实仪器的情况下,IVI驱动程序可以产生一个模拟的输出值,以保证高层程序正常工作。使用模拟功能可以帮助我们在尚无仪器的情况下开发驱动程序;编写、检查测试程序;以及检测新的仪器是否与测试程序匹配。 4、 安全的多线程工作方式:这使得测试工程师可以充分利用多线程程序的优点。 5、 数据范围检测和状态检测功能:这些工具减轻了测试程序编写人员的工作量并提高了程序的可靠性。 四、 IVI驱动程序的结构和工作原理: 1、 IVI驱动程序是建立在由“国际IVI协会”制定的仪器属性模型的基础上的,它对五大类仪器(数字万用表类、示波器类、信号发生器类、开关类、电源类)分别定义了其属性模型,使其具有可互换性,状态缓存等功能。 仪器设备上的每一个参数设置都对应一条属性。如信号发生器,我么可以把它的输出波形,频率电压等都定义为其属性。IVI驱动程序的“SetAttribute”和“GetAttribute”两个低层函数是对用户开放的。高级用户可以直接在他们的测试程序中设置仪器的某个独立属性。在大多数情况下,仪器的各个属性之间是有联系的,IVI驱动程序提供了高层函数来一次性设置一组相关联的几个属性。这些高层函数减轻了用户的任务。 2、 IVI驱动程序的工作过程: IVI结构的核心是IVI引擎对仪器属性的读写。 IVI驱动程序利用CallBack函数(回调函数)对仪器设置进行读写操作,利用RangTable(取值范围表)核查仪器属性的取值是否合法。IVI引擎会自动选择时间访问RangeTable和CallBack函数。 例如:我们要使用FG300_ConfigureTriangleSymmetry函数来设置仪器产生的三角波的对称度,并假设其对称度为30(30%)。 当用户调用FG300_ConfigureTriangleSymmetry函数后,驱动程序和IVI引擎需要作以下工作: 1〉驱动程序调用Ivi_SetAttributeViReal64()函数,对属性FG300_ATTR_FUNC_TRIANGLE_SYMMETRY的值进行设置。同时,SetAttribute函数将会激发IVI引擎。 2〉 如果继承属性(Ingerent attribute)FG300_ATTR_RANGE_CHECK的值为VI_TRUE(值为真,允许值范围检查),IVI引擎则自动调用属性FG300_ATTR_FUNC_TRIANGLE_SYMMETRY的RangeCheckCallBack函数。检查值30是否在属性的RangTable的允许范围内。如果取值超出范围,SetAttribute函数会结束任务,并将出错代码作为返回值返回。有时,IVI引擎还利用RangeTable把输入值强行转换至某一范围内。 3〉如果继承属性FG300_ATTR_CACHE的值为VI_TRUE(允许状态缓存),IVI引擎会检查属性FG300_ATTR_FUNC_TRIANGLE_SYMMETRY的当前值是否就是30。如果是这样,SetAttribute函数立即结束任务,并正常返回。 4〉如果继承属性FG300_ATTR_SIMULATE的值为VI_TRUE(允许模拟状态),IVI引擎将值30赋给属性FG300_ATTR_FUNC_TRIANGLE_SYMMETRY后即正常返回,不进行任何I/O操作。 5〉如果以上情况都不成立,IVI引擎会调用属性FG300_ATTR_FUNC_TRIANGLE_SYMMETRY的CallBack函数,通过CallBack函数中的I/O操作命令设置值输出至仪器。 6〉如果继承属性FG300_ATTR_QUERY_INSTR_STATUS的值为VI_TRUE(允许状态检查),IVI引擎会调用CheckStatusCallBack函数读取仪器的状态 |
|
相关推荐
6 个讨论
|
|
非常不错,很好
|
|
|
|
|
|
用udl里的字符串信息在局域网内其他电脑连接sql数据库为什么为出现连接失败拒绝访问?
1708 浏览 2 评论
为什么同一个队列引用的全局变量,运行在两个子vi中发现队列数据丢失了
1306 浏览 0 评论
1521 浏览 0 评论
关于labview2024版本的lvanlys.dll出错的问题
3005 浏览 2 评论
1448 浏览 2 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 07:49 , Processed in 0.704213 second(s), Total 59, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号