仪器驱动程序的历史
仪器驱动程序的历史基本的台式系统,GPIB仪器(解释语言BASIC) ——70年代中期
个人计算机的影响,插卡式仪器(编译语言C)——80年代
可程控仪器标准命令 (SCPI, 488.2)——90年代初期
模块化仪器驱动程序(Driver)
VXI即插即用仪器驱动程序( VXIplug&play, VPP) ——1993年
可互换虚拟仪器驱动程序(IVI)——1997年,还在不断完善
仪器驱动程序的概念
仪器驱动程序是一套可被用户调用的子程序库,利用它就不必了解每个仪器的编程协议和具体编程步骤,只需调用相应的一些函数就可以完成对仪器各种功能的操作。
仪器驱动程序一般是控制物理仪器的,但也有的是纯软件工具。
一、 VXIplug&play 规范
1993年NI、Tektronics、Racal等著名仪器公司成立了VXIplug&play 联盟并制定了VXIplug&play 规范,简称VPP规范。
VPP联盟目标:提高VXI技术最终用户的使用简易性。
VPP规范目的:解决多生产厂家的VXI系统的易操作性和互操作性问题,并提供给用户进行系统维护、再开发的能力。
VPP联盟网址:www.vxipnp.org
1. VPP 规范的特点
由仪器生产厂家提供
提供程序源代码
程序结构化与模块化
设计与实现的一致性
兼容性与开放性
VPP规范对仪器驱动程序的要求不仅适用于VXI仪器,也同样适用于GPIB仪器、PXI仪器、串行口仪器、网络仪器、USB仪器等。已经成为了虚拟仪器驱动程序设计的事实标准。
2. VPP规范的内容
3. 虚拟仪器系统框架
二、 仪器驱动程序设计(VPP-3)
3. 函数树
函数树就是驱动程序为仪器提供的所有仪器函数的列表及分组关系。
按照VPP仪器驱动程序内部设计模型的要求,对于任何仪器,都应有最小函数树。
最小函数树包括初始化、关闭、错误消息、错误查询、复位,自检和版本查询,还应包括至少一个功能函数。
4. 函数面板
函数树中的每一个函数都应具有函数面板,它是对仪器驱动程序函数的图形化描述。
函数面板的帮助
函数帮助:描述面板上的函数功能和相关的辅助函数。
控件帮助:对应函数的输入和输出参数,列举参数名,并描述参数,变量类型,有效范围和错误值。
返回帮助:描述返回值变量类型和可能的错误值。
5. 函数面板和函数树设计
LabWindows/CVI提供函数面板的设计工具
设计步骤:
了解仪器功能,根据功能规划编辑函数面板树。
规划函数树,在最小树基础上扩充。
生成仪器驱动程序工程文件(.prj)
设计函数树和函数面板(.fp, .c, .h)
完成驱动程序每个函数的代码(.c)
编译调试,生成动态链接库
三、 VISA(VPP-4)
VISA:Virtual Instrumentation Software Architecture,即虚拟仪器软件结构,是VPP系统联盟制定的I/O接口软件标准及其相关规范的总称。
VISA为虚拟仪器提供了标准化的I/O接口软件规范。VISA是整个工业界的统一的软件基础。
虚拟仪器软件结构中的标准 I/O 接口软件称为VISA库。
1. VISA的作用
为整个工业界提供统一的软件基础
对驱动程序、应用程序不必考虑接口类型
仅规定为用户提供的标准函数,不对具体实现作任何说明
用于编写符合VPP规范的仪器驱动程序,完成计算机与仪器之间的命令和数据传输,实现对仪器的控制。
VISA库作为低层 I/O 接口软件,运行于计算机系统中。
2. VISA的特点
适用于各类仪器:VXI, PXI, GPIB, RS-232, TCP, USB… …
与硬件接口无关
既适用于单处理器结构又适用于多处理器或分布式结构
适用于多种网络机制
3. VISA库函数
资源管理类函数
viOpenDefaultRM (ViPSession Rsrc_Manager_Handle);
viOpenDefaultRM(&defaultRMHandle);
ViStatus viOpen (ViSession Rsrc_Manager_Handle, ViRsrc Instrument_Descriptor, ViAccessMode Access_Mode, ViUInt32 Open_Timeout, ViPSession Instrument_Handle);
viOpen (defaultRMHandle, "VXI0::24::INSTR", VI_NULL, VI_NULL, &dmmHandle);
ViStatus viClose (ViSession Session_Handle);
viClose(dmmHandle);
资源操作类函数
寄存器基仪器通讯
viIn8, viIn16, viIn32
viIn16 (dmmHandle, VI_A16_SPACE, 0, &manufactureID);
viOut8, viOut16, viOut32
viOut16 (dmmHandle, VI_A16_SPACE, 4, 0);
消息基仪器通讯
viRead, viWrite
viRead (dmmHandle, readbuf, 100, &count);
viWrite (dmmHandle, writebuf, 100, &count);
格式化I/O
viPrintf, viScanf
viPrintf (dmmHandle, "*IDN?\n");
viScanf (dmmHandle, "%t", result);
资源模板
事件处理
viEnableEvent, viDisableEvent
viInstallHandler, viUninstallHandler
viWaitOnEvent
资源属性
viGetAttribute, viSetAttribute
用VISA函数操作仪器的步骤
打开VISA资源管理器句柄,用到的函数:viOpenDefaultRM;
打开仪器句柄,用到的函数:viFindRsrc、viFindNext、viOpen等;
设置仪器状态、控制仪器操作、读取测量数据、处理仪器事件,用到的函数: viGetAttribute、viSetAttribute、viIn16、viOut16、viPrintf、viScanf、viInstallHandler、viUninstallHandler、viEnableEvent、viDisableEvent、viWaitOnEvent等;
释放仪器句柄,用到的函数:viClose;
释放VISA资源管理器句柄,用到的函数:viClose。
VISA函数应用举例
void main(void)
{
error=viOpenDefaultRM (&rsrcManager); /*打开VISA资源管理器*/
//rsrcManager为得到的VISA资源管理器句柄
if(error!=VI_SUCCESS) /*如果出错,弹出错误信息对话框,返回*/
{ MessagePopup("Error","Open VISA Resource Manager Error!");
return;
}
error = viOpen (rsrcManager, "VXI0::16::INSTR", VI_NULL, VI_NULL, &instHandle); //instHandle为得到的仪器句柄
if(error!=VI_SUCCESS){
MessagePopup("Error","Open Instrument Error!");
return;
}
else{ /*获取仪器模块代码,设置仪器操作超时时间为2000毫秒*/
viGetAttribute (instHandle, VI_ATTR_MODEL_CODE, &moduleID); viSetAttribute (instHandle, VI_ATTR_TMO_VALUE, 2000);
}
viClose(instHandle); /*关闭仪器句柄和VISA资源管理器*/
viClose(rsrcManager);
}
四、 软面板 Soft Panel(VPP-7)
虚拟仪器一般没有了操作面板,必须借助PC机作为其数据分析与显示的工具,利用PC机强大的图形显示和在线帮助功能,建立图形化的虚拟仪器面板,完成对仪器控制、数据分析与显示。
VPP软面板是一个特殊的测试应用程序,它为仪器模块提供一个替代前面板的控制接口。该控制接口不是在仪器前面板上,而是在计算机显示器上。
1. 软面板的作用
利用软面板检验仪器的通信和功能,同时也可利用它作为学习工具,演示仪器的控制和功能。
软面板采用图形用户接口(GUI)技术来显示等效的旋钮、按键及控制器。用户通过鼠标或计算机键盘操纵这些控制器。图形显示提供同传统前面板方式相似的测量结果和仪器状态,从而让用户以熟悉的方法控制仪器。
2. VPP规范对软面板的要求
VPP规范规定每一个VXIplug&play仪器都在其安装盘上提供软面板。它使用户不必编写测试程序就可以检验仪器的通信和操作,这样能够大大减少组建和检验一个VXI系统的时间。
1、VPP软面板必须作为一个独立的应用程序运行,仅使用计算机、操作系统及驱动程序库,不应依赖于任何特定的应用程序开发环境。
2、软面板应提供一个既不过分杂乱,又不包含过多层次结构的友好用户界面。应显示并控制仪器的主要测试和测量功能。主面板右上端显示VXIplug&play图标。在软面板主窗口顶端或在窗口标题处标出仪器名称和型号。在软面板主窗口或About...对话框中标出软面板生产厂商和软面板版本信息。
3、在软面板自动连接时,如果发现多于一个的待接设备,则它应该提供一种方法让用户选择其中的一个待接设备。
4、软面板在执行时应该自动连接,并具有自动连接有效指示灯。有效指示灯应该有标签“激活”。不连接时,指示灯的颜色应该是暗淡的(背景颜色)。当连接时,指示灯应呈绿色。应该显示自动连接的槽号或逻辑地址,或者两者皆显示。
5、VXI软面板必须和计算机的应用程序分享计算机屏幕。为确保软面板的可用性,软面板应该是可移动的,并可以改变窗口大小。
软面板在框架定义的最低分辨率屏幕上应该占据不超过2/3的区域。这使用户易于在以级联方式同时显示的多个软面板间进行切换。
单个VXIplug&play 软面板不应占用超过框架定义的最低分辩率屏幕的100%区域。
6、软面板被设计成能在不同平台和计算机显示器上完成功能。必须确保每个软面板在不同平台和显示器之间是可移植的。
五、驱动程序安装盘制作(VPP-6)
为了方便驱动程序的发布和用户的使用,驱动程序和软面板必须被包装成安装盘的形式。这也是VXIplug&play规范的要求。
VPP规范要求安装盘应该包含以下内容:
一个MS-Windows独立的可执行软面板。
函数树面板文件(.fp文件)。
ANSI C源文件(.h和.c文件)。
MS-Windows 32位DLL(.dll和.h文件)。
一个由.dll生成的MS C/C++.lib文件。
MS-Windows帮助文件的编制文件(.hlp文件)。
一个基于MS-Windows的安装程序。
六、LabWindows/CVI和仪器驱动程序
LabWindows/CVI是设计仪器驱动程序的最佳工具
提供工具,专门用于设计制作仪器函数树和函数面板
专门的函数库(VISA, RS-232等),简化仪器的通讯和控制
提供专业的仪器控件,用于设计软面板
提供工具,用于制作安装盘文件
提供向导制作IVI仪器驱动程序
开发提示:在已有驱动程序的基础上,按照自己的需求修改函数树和函数面板可加快开发速度
七、可互换虚拟仪器简介
1998年8月,由九个公司成立的IVI(Interchangeable Virtual Instruments)基金会,在VPP的基础上为仪器驱动程序制定了新的编程接口标准,使应用程序可以实现完全独立于硬件,独立于接口,并增加了仪器仿真、状态缓存等机制,大大提高了仪器驱动程序的执行效率。
IVI基金会制订的仪器驱动程序规范将仪器分成基本功能和扩展功能两部分,并将所有的仪器进行分类。更换同类仪器的时候,只要修改或更换那些特殊功能的代码,也就是具体的驱动程序,而不必改动类驱动程序。
已经公布了九类仪器的规范:示波器、开关、任意波形发生器/函数发生器、数字电压表、电源、射频信号发生器、频谱分析仪、功率计和数字I/O仪器
八、仪器驱动程序发展趋势
IVI规范存在一些局限性,出现了以下两个发展方向:
将较成熟的COM(Component Object Model, 组建对象模型)技术应用于IVI驱动程序的开发,发布组件式驱动程序——IVI-COM
安捷伦(Agilent)公司开发的测试测量子系统,该子系统在仪器互换的基础上实现了功能互换,称为IVI-MSS(Measurement and Stimulus Subsystems,测量和激励子系统)
页:
[1]