可互换虚拟仪器驱动程序的开发

原文发表在《测控技术》
 

可互换虚拟仪器驱动程序的开发

阮奇桢

摘 要:

可互换虚拟仪器驱动程序是最新的仪器驱动程序标准,它的出现大大提高了测试系统的开发和运行效率。本文论述了可互换虚拟仪器驱动程序的体系结构、优势、开发步骤和应用实例。

关键词:

虚拟仪器,仪器驱动程序, IVI, LabVIEW, LabWindows/CVI

 

IVI Specific Driver Development

Qizhen Ruan

Abstract:

IVI is a revolutionary standard for instrument driver software technology.  It features increased performance and flexibility for the test system.  The excellent IVI architecture is introduced in this paper as well as its implementation process.

Keywords

IVI, Instrument Driver, LabVIEW, LabWindows/CVI

一. 仪器驱动程序的发展

    仪器驱动程序是连接仪器硬件与高层应用程序的桥梁。使用仪器驱动程序可以把高层应用函数从仪器接口函数中分离出来,从而简化了高层应用软件的开发难度,提高了应用软件的可维护性。
    仪器驱动程序的发展大致经历了以下几个阶段:
    1. 早期仪器驱动程序 没有任何统一的规范,功能较为简单、直接。由于不同的仪器驱动程序的实现方法和接口函数大相径庭,用户往往觉得它们难以琢磨,结果使得它们很难被应用和修改。用户需要的是容易使用,便于修改,并且遵循相同标准的驱动程序。只有这样,他们才有可能把不同厂商的仪器集成在同一系统中使用。为了实现这一目标,针对仪器驱动程序制定的标准陆续出现,比如下文提到的这几种比较重要的规范。
    2. IEEE 488.2规范 定义了用于仪器的辨认和自检等的命令,但是仅有这几种命令还远远不能解决仪器驱动程序编写繁复、阅读困难等缺点。
    3. SCPI(Standard Commands for Programmable Instruments)规范 定义了通用的仪器命令结构,对命令按功能进行了归类分组。目前,绝大多数新仪器都是基于字符串命令的仪器,并且采用了SCPI规范。遗憾的是,虽然他们都使用了SCPI的结构,但具体到每个功能,不同厂商仍然使用各不相同的命令字符串。
    4. VXI总线即插即用(VXIplug&play)规范(简称VPP规范)由VPP系统联盟制定。VPP规范侧重于仪器的“互操作性(interoperability)”,即用户可以方便地把不同厂商的仪器集成到自己系统中。为此,VPP规范详细定义了仪器驱动程序的内部设计模型与外部接口模型,规定了虚拟仪器驱动程序的设计要求及与系统中其他程序模块之间的相互关系。但是,VPP规范仍然没能解决工程师建造测试系统时遇到的困扰:一是软件的开发和维护费用过于昂贵,二是难以快速升级已有的系统。解决这样的问题需要仪器驱动程序具有“互换性”。
    5. IVI(Interchangeable Virtual Instrument)驱动程序规范 扩展了VPP仪器驱动程序的标准,并增加了仪器的可互换性、仿真和状态缓存等特点。IVI驱动程序规范由IVI基金会(Interchangeable Virtual Instrument Foundation)制定。它是由最终用户、系统集成商和仪器制造商共同组成的一个开放联盟,几乎所有的大型仪器生产公司(诸如:National Instruments,Agilent,Tektronix)都已经成为其成员。其职能是为测试仪器制定编程规范,从而实现不同型号仪器之间的互换,并且提高系统性能、降低开发成本。

二. IVI系统结构

    为了实现互换性,IVI基金会将同类仪器的共性提取出,并作了规范。目前已经发布的八类仪器规范是:示波器(IviScope)、数字万用表(IviDmm)、信号发生器(IviFGen)、直流电源(IviDCPower)、开关矩阵/多路复用器(IviSwitch)、功率表(IviPwrMeter)、频谱分析仪(IviSpecAn)和射频信号发生器(IviRFSigGen),其他类型仪器的规范也将被陆续制定发布。每一类的仪器都有各自的类驱动程序(IVI Class Driver)。类驱动程序包含了该类仪器通用的各种属性和操作函数。运行时,类驱动程序通过调用每台仪器的专用驱动程序(IVI Specific Driver)中相应的函数来控制仪器。


图1: IVI体系结构

    图1是IVI体系结构框图:
    应用程序可以直接调用专用驱动程序来控制仪器。但是为了实现仪器互换,应用程序应该首先调用类驱动程序,类驱动程序检查IVI配置文件以确定应该使用的专用驱动程序。若系统中的仪器被更换,只需适当修改IVI配置文件,而应用程序无需任何改动,因而实现了测试系统的通用性。

三. IVI驱动程序的特点和优势

    1. 互换性。IVI驱动程序的互换性至少为我们带来了以下几大好处:
        a) 易于使用。所用的IVI驱动程序都使用通用的接口,易于理解,也就不再要求应用程序的开发人员必须掌握某一特定仪器的编程方法,从而系统开发获得了更大的硬件独立性。
b) 降低了系统的维护和升级费用。IVI构架系统可以适用不同的仪器,当仪器陈旧或者有了升级的、高性能或低造价的仪器时,可以任意更换,而不需要改变应用程序。
        c) 代码共享。IVI构架允许部门和设备之间方便地复用及共享测试代码,并且不需使用相同型号的仪器硬件。
    2. 模拟功能。每个仪器专用驱动程序都具有专门针对本型号仪器的模拟功能。这些模拟功能使得工程师在缺少真实仪器的情况下,可以使用IVI驱动程序的模拟功能来开发、调试应用程序。还可以使用美国国家仪器公司(National Instruments,简称NI)提供的类模拟驱动程序以获得更强大的模拟功能。
    3. 状态缓存功能。IVI驱动程序可以保存仪器每一属性设置的当前状态。当应用程序试图发送一些冗余命令到仪器时(例如,将仪器的某一属性重新设置为当前值,这些命令显然不会让仪器产生任何变化或动作),IVI驱动程序会跳过这些命令。当前的测试系统中,影响软件执行速度的瓶颈通常在于仪器与计算机接口总线的传输速率,IVI驱动程序的此项功能大大减少了仪器与计算机之间的通讯,从而提升了系统性能。
    4. 源码开放。高级用户可以直接修改IVI驱动程序的源代码,以对其进行优化或添加功能。
    5. 免费得到大量的驱动程序。除了生产厂商自行开发的IVI驱动程序,NI公司也为各类常用仪器开发了大量IVI驱动程序,这些程序都可以从NI的网站上免费下载。 此外,NI还提供了用于开发驱动程序的工具包,以简化用户的IVI驱动程序的开发过程。

四. IVI驱动程序的设计和开发

    按照提供给用户的接口形式的不同,IVI驱动程序分为:C语言驱动程序, LabVIEW驱动程序,COM驱动程序。虽然同一仪器可以存在接口形式不同的驱动程序,但它们的功能完全相同,用户可以选择使用自己最擅长的形式。目前最普遍使用的仍然是C语言驱动程序;LabVIEW驱动程序是在C语言驱动程序生成的DLL动态库的基础上生成的; 而COM驱动程序则需要重新编写代码。
    IVI驱动程序规范已经详细制定了驱动程序的构架和接口,因此开发人员不必另行设计程序结构,这避免了驱动程序结构不合理或用户使用不便等问题。但是,开发人员要特别注意和精心设计仪器的功能、控制命令与IVI规范不兼容的部分。
    使用LabWindows/CVI作为C语言驱动程序的开发工具具有独特的优越条件,因为CVI集成了许多驱动程序开发工具,比如:IVI驱动程序生成向导、属性编辑器等。另外还可以选用NI公司的IDT工具包作为补充。

    下面以较为常用的Fluke 45 数字万用表为例,简单介绍一下开发IVI仪器驱动程序的具体步骤:
    1. 熟悉仪器与IVI规范。在开发仪器的IVI驱动程序以前,首先要熟悉仪器的有关命令,然后根据其功能进行分类。并且将仪器命令与IVI规范制定的属性、函数对应起来。
    2. 使用CVI的“仪器驱动程序开发向导”生成驱动程序的框架。开发向导生成的文件一共有4个,其中,“fl45.c”和“fl45.h”分别是C语言源文件和头文件;“fl45.fp”记录函数面板信息;“fl45.sub”记录仪器“属性(attribute)”的信息。
    3. 删除仪器不支持的扩展功能组。可能会出现仪器不支持某些IVI规范定义的功能组的情况,比如说fl45不具备温度测量功能,这时应该把所有与温度测量有关的函数和属性移出。
    4. 完善代码。实现IVI规范中仪器可以支持的功能组。“仪器驱动程序开发向导”已经生成了大部分属性和函数的代码。用户需要做的只是到属性的回调函数(Attribute Callback Function)中修改相应的仪器命令。由于每台仪器的命令体系都有其特殊性,用户也不能够完全依赖“开发向导”生成的程序结构,函数和属性的实现需要参照仪器的具体命令体系来实现。
    5. 编写支持仪器特殊功能的代码。“仪器驱动程序开发向导”不能够生成支持IVI规范定义之外的仪器功能。比如Fl45有对测量值进行修正的功能,IVI规范没有相应的定义,实现这部分功能需要自己设计和编写相应的属性及函数。
    6. 测试。除了要确保IVI驱动程序函数功能正确,还要验证它是否完全符合IVI规范。IVI驱动程序的开发人员也可以请求NI公司帮助完成程序的最终测试。
    7. 编写LabVIEW驱动程序。如果已经有了C语言IVI驱动程序,只需要使用NI公司在其网站上提供的 LabVIEW Interface Generator for LabWindows™/CVI™ Instrument Drivers 工具即可方便地生成相应的LabVIEW仪器驱动程序。

    IVI类驱动程序的开发。如果用户希望使用IVI规范定义的八类仪器之外的仪器,并且还要实现通用性(可互换性),那么则需要客户自己开发类驱动程序。类驱动程序的开发与仪器驱动程序的开发过程完全不同,由于用户很少遇到类驱动程序的开发,本文不作详细介绍。

五. IVI驱动程序的应用实例

    IVI驱动程序相对于传统仪器驱动程序而言,比较适合于高端应用和大型测试系统的搭建。下面是两个IVI体系的典型应用。

    1. 2002年波音公司在其新设计的测试系统中应用了IVI技术。由于对测试稳定性的要求,波音公司的测试系统一经投入使用,往往要求连续工作几十年而且不能做大的改动。在这么长的使用期内,许多最初设计时使用的仪器都可能停产。一旦仪器损坏,根本无法找到同型号的仪器进行替换,只能使用类似的仪器进行替代。如果使用传统仪器驱动程序,每次更换仪器时,测试软件也必须做相应更新。这样一来不但需要花费大量时间在测试软件的更新上,更重要的是对软件结构的改动很可能会破坏它的一致性。
    在使用IVI体系结构后,每次替换仪器,只需要在IVI配置文件中指明新的驱动程序即可,测试软件不需要作任何改动。这样既节约了时间,又不会对测试结果产生任何影响。

    2. NI公司在其2005年推出的校准系统中也使用了IVI体系结构。该校准系统将提供给世界各地校准实验室使用,因此,该校准系统必须能供控制型号千差万别的各类标准仪器。IVI体系结构保证了该系统在不改变代码的前提下适应任何实验室的仪器设备。

参考文献:

    [1] Dany Cheij, The Anatomy of an Interchangeable Test System, http://www.ni.com/idnet, 3-2002
    [2] National Instruments, IVI Driver Development Course, 10-2003
    [3] IVI Foundation, IVI Specifications, http://www.ivifoundation.org, 2005
    [4] 用 LabVIEW 编写 Wizard 类型的应用程序, 阮奇桢, 2006
    [5] 其他相关技术文章
    [6] 一个 IVI 驱动程序的开发过程, 阮奇桢, 1999
    [7] 回答一个关于 IVI 仪器驱动程序的问题     

编辑

10亿光年到0.1飞米

  10亿光年

1亿光年

1000万光年

100万光年

10万光年

1万光年

1千光年

100光年

10光年

1光年

1万亿公里

1千亿公里

100亿公里

10亿公里

1亿公里

1000万公里

100万公里

10万公里

1万公里

 

 

 

 1000公里

100公里

10公里

1公里

100米

10米

1米

0.1米

1厘米

 

 
 
 
 
 1毫米

100微米

10微米

1微米

0.1微米

100埃

1纳米

1埃

10皮米

1皮米

0.1皮米

10飞米

1飞米(10的-15次方米)

0.1飞米
 

美丽的神话

 Quote 美丽的神话

 

歌手:孙楠,韩红

 

梦中的人熟悉的脸孔,

你是我守候的温柔,

就算泪水淹没天地,

我不会放手。

每一刻孤独的承受,

只因我曾许下承诺,

你我之间熟悉的感动,

爱就要苏醒。

 

万世沧桑唯有爱是永远的神话,

潮起潮落始终不悔真爱的相约,

几番苦痛的纠缠多少黑夜挣扎,

紧握双手让我和你再也不离分,

 

枕上雪冰封的爱恋,

真心相拥才能融解,

风中摇曳炉上的火,

不灭亦不休,

等待花开春去春又来,

无情岁月笑我痴狂,

心如钢铁任世界荒芜,

思念永相随。

 

悲欢负月唯有爱是永远的神话,

谁都没有遗忘古老  古老的誓言,

你的泪水化为漫天飞舞的彩蝶,

爱是翼下之风两心相随自在飞,

 

你是我心中唯一美丽的神话。

下载地址:http://musicdown1.5716.com/2004v1/7/138/10.wma

成龙、金喜善版:http://www.deemoshop.com/s/uploadfiles/shenhua.mp3

空军刘亚洲中将谈伊拉克战争 分析我军发展方向

 

  记者:在这场战争中,伊拉克人民好像一点也不支持萨达姆的政权。

  刘亚洲:完全不支持。1840年鸦片战争中英国军队在广州遇到的事情今天在伊拉克重演了。当时,英国舰队突破虎门要塞,沿着珠江北上的时候,江两岸聚集了数以万计的当地居民。他们以冷漠的、十分平静的神情观看自己的朝廷与外夷的战事,好似在观看一场与自己毫不相干的争斗。英军官兵目击此景,十分疑惑不解。今天,我们在伊拉克看到的情景有过之而无不及。美军一路猛进,如入无人之境。沿途路不破,桥不炸,雷不埋,有些地方甚至欢迎美军。我们的军事专家一再期待在伊拉克出现人民战争。人民战争固然好听,但它的前提是人民愿意为战争作出牺牲。现在很难说有几个伊拉克人民愿意为保卫萨达姆政权而战、而死。人民战争是指人心背向,更多的是一种政治概念。得民心者才能得人民战争。失民心者只能进行个人战争。萨达姆就是进行的一场个人战争。两伊战争如此,入侵科威特如此,两次海湾战争亦如此。野心家把人民驱入战争。战争最终又毁了野心家。

  记者:你讲的鸦片战争的情形令人惊心动魄。为什么会出现这种情形呢?

  刘亚洲:鸦片战争和伊拉克战争的事实告诉我们:凡是专制政府和贪官政府,一定是内战内行,外战外行。人民不知情时,民心士气尚可一用。人民一旦知情,加上外敌入侵,必定土崩瓦解。美国的心理战就是让伊拉克人民较早地知道了萨达姆是个什么样的人,他的复兴党是个什么样的货色。贪官体制必然造成本国百姓的不满,所以贪官政府的最大任务必然是压制国内的反抗,根本没有对外用兵的余力。从历史上看,贪官政府对外用兵也从来没有取胜的先例。我有过一句话请你记住:国不知有民,民就不知有国。

 

百合冰糖银耳粥

Quote  百合冰糖银耳粥

 

偶们经常在电视上看到古代的大家闺秀一回到家,她的母亲就迎上来说“女儿,快坐下来歇歇,我给你准备了冰糖银耳!”然后就看着那一只玉手捧起晶莹剔透的一只兰花瓷碗,另一簇葱指用粥匙舀起冰白玉洁的银耳粥,缓缓送入樱桃口中……。看起来是赏心悦目,心旷神怡。今天妈妈给我做了一份冰糖银耳汤,好好喝,好幸福哦~

                                                                                                                                 

 那今天偶就教大家简单的冰糖银耳的制作方法:
步骤一:银耳,一小堆(按人数定,不要太多,因为和木耳差不多,干的银耳一泡就会很大了)用干净的水泡上几个小时,泡开的银耳是半透明的,很可爱,记得一定要把银耳的根部去掉(发黄的,硬硬的那部分)。
步骤二:将冰糖放入清水中文火化开。
步骤三:放入银耳和枸杞,之所以放枸杞,一则《本草汇言》日枸杞“气可充,血可补,阳可生,阴可长,风湿可去,有十全之妙焉。”二则枸杞是红色和银耳在一起红白相间很漂亮。
先是用中火把锅里的水煮开,再用文火,使银耳绵软,用筷子轻夹即破。
一碗甜香可口,色香具全的冰糖银耳就做好了。

 

                                                                                                                                   

菜谱名称
 百合冰糖银耳粥
所属菜系
 其它菜系
所属类型
 健康菜谱
基本特点
 温肺止嗽、养阴清热、清心安神、利大小便、强精补肾、润肺生津、止咳清热、养胃补气、神中益气、滋补、润心肺、调五茶、缓阳血、生津液、悦颜色、通九窍、助十二经、和百药、开胃健脾、润肺祛痰、清喉补气、健脑益智、补气养血、润燥化痰、温肺润肠、散肿消毒、坚筋耐劳,补益筋骨,能益人,去虚劳、和中助脾,缓肝气,润心肺,解心腹热胀,口干渴,解酒毒
基本材料
 百合、银耳、红枣、花生米、核桃、枸杞子、冰糖