×
接口总线驱动 > 总线 > 详情

基于VPP规范的VXI总线模块的软件开发

发布时间:2020-05-26 发布时间:
|

1.概述

VXIbus联合体在制定VXIbus规范时,成功地定义了基于VME总线的模块化仪器的标准。它定义了VXIbus兼容部件如主机箱、背板、电源和模块之间互联的电气、机械接口协议和模块间的通讯协议,这些协议能使来自不同厂商的产品组成系统。然而,VXIbus规范没有涉及系统级的软件标准,如选用何种操作系统、应用开发环境和编程语言,何种计算机,何种I/O软件接口,而这些产品的一些组合是不兼容的,这使得用户在设计、组建、编程和使用一个由计算机控制的仪器系统时,仍面临着许多问题。

为了最大限度地提供VXI总线系统级的易用性、多厂商开放式结构和互操作性,在1992年由多家仪器厂商成立了VXIplug&play系统联盟。plug&play意为“即插即用”。联盟通过制定一系列规范,即VPP规范系列,指导厂商和用户的活动,提供一个开放的、多厂商共享的系统结构,使系统软件元素的开发、使用标准化,并最大限度地提高软件的可重用性,减少系统开发周期,降低系统成本,使VXI总线产品能真正做到“即插即用”。

VPP-1为联盟的章程文件,介绍了VXI plug&play的目标、指导原则和核心技术,使得联盟能够迅速制定、公布以下标准。VPP-2为系统框架规范,定义了VXI plug&play系统中应用软件的工作环境,及VXI plug&play系统中所包含的软件元素,即仪器驱动器、I/O接口库、软面板、知识库和安装程序,并针对不同框架对系统软、硬件提出了要求。VPP-3—VPP-7分别为上述软件元素的目标、构成、特性和实现做了详细、具体的规范定义。VPP-8为VXI模块/主机箱至接收装置的互连规范。VPP-9为仪器供应商的缩写。VPP-10为VXI plug&play标识规范和成员注册。

2.基于VPP规范的VXI总线模块的软件开发

由于符合VXI plug&play规范的产品和服务会更容易集成到系统中,用户会尽可能地选择这样的产品。所以厂家应尽可能地提供符合VXI plug&play规范的产品。按照VPP规范,厂家在提供模块化仪器的同时,还要提供仪器驱动器、软面板、知识库和安装程序等软件。下面就结合数字电压表的开发,讲述一下上述软件的开发过程。

在开发上述软件模块时,采用了下面的顺序:

●选择系统框架

●开发仪器驱动器

●开发软面板

●开发知识库

●制作安装程序

2.1选择系统框架

在开发仪器驱动器、软面板、知识库和安装程序之前,首先进行了系统框架的选择。系统框架是上述软件模块运行的环境,由操作系统和应用开发环境所构成,VPP-2定义了十种系统框架,即WIN、WIN95、WINNT、SUN、HP-UX、GWIN、GWIN95、GWINNT、GSUN、GHP-UX。前五种是由它们所支持的操作系统命名的,而在这五种操作系统下使用LabVIEW的G编程语言作为开发仪器驱动器和软面板的环境,则构成了后面五种系统框架。这当中最受欢迎的应是WIN和WIN95框架,因为它们可视窗操作并支持众多的开发工具。在这两种框架下,VPP-2列出了六种应用开发环境LabWindows/CVI,LabVIEW,HPVEE,Microsoft Visual C++,Borland C++和Microsoft Visual Basic,可选用其中的任何一种作为开发仪器驱动器和软面板的工具。在本文中所举的例子都是在WIN95框架和LabWindows/CVI环境下开发的。

2.2开发仪器驱动器

仪器驱动器即仪器驱动程序,是厂家随模块提供给用户的一组驱动函数,它将工作于用户所选择的系统框架下,负责对仪器进行控制和通信。VPP规范的一个重要成果就是将仪器驱动器作为仪器的一个组成部分,由厂家提供,从而缩短了用户的程序开发周期。VPP-3定义了仪器驱动器结构,见图1。

仪器驱动器的结构包括外部接口模型和内部设计模型。

仪器驱动器的外部接口模型表示它如何与系统中其它软件模块接口。其中,交互式开发者接口即函数面板是对驱动器交互式调用接口;编程开发者接口的目的是在用户应用程序中使用驱动器;函数主体描述仪器的功用,即驱动程序的实际代码;I/O接口完成驱动器与仪器间的通信;子进程接口用于调用其它软件模块。

内部设计模型定义了仪器驱动器的内部结构。理解了这一模型,就知道如何设计仪器驱动程序。仪器驱动程序的函数主体包括两级:第一级是一组部件函数,它们是控制仪器特定功能的软件模块;第二级是一组应用函数,它们表示如何使用部件函数来完成面向应用的仪器操作。[page]

部件函数包括初始化、配置、动作/状态、数据、实用和关闭函数。初始化函数是访问仪器时调用的第一个函数,用于初始化软件连接,使仪器处于某种默认的状态。关闭函
 

数是最后调用的,用于关闭仪器的软件连接。配置函数对仪器进行配置,以便执行所希望的操作。动作/状态函数使仪器执行一项操作或者报告正在执行的或已经挂起的操作的状态。数据函数用来从仪器取回数据或向仪器发送数据。实用函数包括许多标准的仪器操作,例如执行复位、自检、询问驱动程序版本信息和错误处理等。

应用函数是一组面向测试的高级函数,它们指出如何使用部件函数。这些程序通过配置、触发和从仪器读取数据来完成整个测试操作,不仅提供了如何使用部件函数的有价值实例,而且当用户仅需要单一的面向测试函数接口,而不是使用单个部件函数时,它们是非常有用的。

VPP-3.2规范还给出了一组函数模板,并且要求每个仪器驱动器都必须实现这些函数。它们是:Initialize,Close,Reset,Self-Test,Error Query,Error Message,Revision Query.规范对每个函数的输入参数、输出状态和操作都做了详细的说明。

在开发仪器驱动器时,采用了两种简便的方法:一是在Lab Windows/CVI中提供了仪器驱动器的核心程序,它包括了VPP规范所要求的所有模板函数的实现,可在此基础上添加其它函数;二是根据已有的具有类似仪器功能的仪器驱动器进行改造。但首先我们都必须熟悉仪器各项功能和指令集。如果仪器是寄存器基的,通过直接读写其寄存器进行操作;如果是消息基的,则可发送ASCII码指令来控制。

开发仪器驱动器采用了自顶向下的方式,步骤如下:

①命名仪器驱动器。采用厂家名称缩写+模块号的方式命名仪器驱动器,即AMC1410,并将此名称作为每个仪器驱动器函数的前缀,这可使得多个厂家的仪器驱动器运行于同一系统中而不会发生冲突。

②定义仪器的功能和功能分类。

③创建仪器驱动器的函数树,它对应仪器的功能层次。

④对仪器驱动器的每个函数:

a.定义函数的入口参数包括变量类型、数值范围,输出状态。

b.如果采用LabWindows/CVI作为开发工具,为每个函数创建函数面板,包括面板和控制的帮助信息。

c.为每个函数写源代码。

d.调试函数源代码。

⑤为最终的仪器驱动器创建包含文件,包括函数声明和常数定义。

⑥生成仪器驱动器的动态连接库文件和入口函数库文件。

数字电压表模块的函数组织图见图2。

在开发仪器驱动器时,我们使用VISA库函数和VISA定义的数据类型。VISA是虚拟仪器软件结构的简称,是VPP规范的又一重要成果。它为不同的操作系统和不同的硬件接口提供了同一I/O软件层,无论是选用GPIB、VXI/MXI、串口或以太网接口,还是选用DOS、Windows、UNIX操作系统,都可使用相同的函数与仪器通讯,这打破了过去不同厂商的I/O接口软件互不兼容的局面,大大增强了驱动程序的可移植性。

2.3开发仪器软面板

由厂商随仪器一同发货的仪器软面板为用户提供了交互式操作仪器的图形接口,它取代传统的台式仪器的前面板,在计算机屏幕上显示用于控制仪器的各种按键、旋钮和仪器的输出信息,用鼠标和键盘进行操作。软面板有两个重要功能:一是帮助用户检验系统通讯接口和仪器是否正确配置、正常工作;二是帮助用户熟悉仪器的主要功能。[page]

按照VPP-7规范开发的AMC1410仪器软面板,是标准的可执行文件,不依赖任何编程环境,在WIN系统框架中,在VISA库的支持下独立运行。软面板主窗口的右上部显示VXIplug&play标识,左上部标明厂家,窗口上部表明仪器名称和模块号;有一个指示灯标志是否与仪器连接,当连接时,灯为绿色;显示模块的逻辑地址。

软面板包含大部分的仪器功能控制,分为主、副窗口显示。在主窗口包括电压表的测量功能、量程和分辨率的配置,启动测量按键和测量结果显示,在副窗口设置仪器的触发、采样等其它配置和实用操作。(如图3所示)

软面板程序启动时,可根据电压表的模块号与逻辑地址自动查找相应的模块,并建立与该模块的连接,如果连接成功,则软面板的指示灯为绿色,同时显示它的逻辑地址,接下来就可以操作仪器了。
 

在开发软面板时,也使用了VISA库函数和数据类型,这可以增强仪器软面板的可移植性,并在与仪器通讯时,调用仪器驱动函数,可以大大减少程序的开发时间。

2.4开发知识库文件

每个符合VXIplug&play的VXI模块都应有一个知识库文件,它随仪器一同发送,或者可以在VXIplug&play系统联盟的数据库中得到。它详细描述了仪器的各项技术指标、性能,如电源、冷却需求、配置信息等。它可在购买前索取,帮助用户了解仪器的特性,又由于它的格式是严格定义了的,所以允许软件开发商据此格式创建用于系统设计、系统集成和系统验证方面的软件工具。

知识库文件是一个用ASCII字符表示的文本文件,可以在文本编辑器中创建,可在多个系统框架间移植。它的格式是基于MS-Windows的\\+*.ini文件格式。在所描述的每个VXI元件的入口处用[New Record]控制来隔离。采用域的表达方式,每个域的入口有域名,如[Manufacturer];域名后跟随“=”号为此域赋值,以“;”号结束;对此域的说明文字用“#”号引导;每个VXI元件通过多个域来描述。举例如下:

[New Record]

#Text string that identifies the name of the Component Manufacturer.

[Manufacturer]="AMC";

#Text string that identifies the product nomenclature

[Product Name]="1410";

#Text string that describes the product functions

[Product Description]="5.5 Digit Multimeter";

知识库文件中的域可分为全局域、静态域、元件信息域和系统信息域。

●全局域:出现在[New Record]控制之前,描述知识库文件的整体特性。目前VPP规范只定义了三个全局域,即[File Name],[File Revision]和[VPP-5 Specification Revision]。

●静态域:出现在[New Record]控制之后,描述VXI元件的特性。VPP规范定义了多个静态域的入口、数据类型和描述,并规定了对于每一类元件所必须实现的静态域。

●元件信息域和系统信息域:描述一个VXI元件或系统的具体应用实例的,它们是由进行系统设计、集成的应用软件自动生成的。

2.5制作安装程序

在开发了仪器驱动器、软面板和知识库后,我们得到下列文件:

●仪器驱动器的ANSIC源代码(*.c,*.h)

●仪器驱动器的动态连接库和入口函数库(*.dll,*.lib)

●仪器驱动器的函数面板文件(*.fp)

●仪器驱动器的ms-Windows帮助文件(*.hlp)

●知识库文件(*.kb)

●软面板可执行文件(*.exe)

按照VXIplug&play的要求,这些文件都应提供给用户。根据VPP-6规范制作的安装程序,可以提供给用户一个一致的封装标识和安装过程。在WIN框架下,可采用一些流行的安装程序制作工具,如InstallShield来制作安装程序。

VPP-6规范还定义了标准的安装路径,作为缺省安装路径,但用户也可选择其它路径。路径根结点为\VXIPNP,每个系统框架在它下面有一个子路径,每个仪器又在框架子路径下有一个路径,如我们所提供的WIN框架下的数字电压表AMC1410的安装路径为\VXIPNP\WIN\AMC1410。

由上所述,基于VPP规范所开发的VXIbus模块的软件,是标准化的,也是易于用户使用和维护的,使VXIbus系统的设计、组建更方便,更快捷,也极大程度地实现了VXIbus产品的即插即用。 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
USB设备控制器端点缓冲区的优化技术设计