当前位置:文档之家› cvi教程

cvi教程

2/34
仪器驱动程序的概念
仪器驱动程序是一套可被用户调用的子程序 库,利用它就不必了解每个仪器的编程协议 和具体编程步骤,只需调用相应的一些函数 就可以完成对仪器各种功能的操作。 仪器驱动程序一般是控制物理仪器的,但也 有的是纯软件工具。
3/34
一、 VXIplug&play 规范
1993年NI、Tektronics、Racal等著名仪器 公司成立了VXIplug&play 联盟并制定了 VXIplug&play 规范,简称VPP规范。 VPP联盟目标:提高VXI技术最终用户的使 用简易性。 VPP规范目的:解决多生产厂家的VXI系统 的易操作性和互操作性问题,并提供给用户 进行系统维护、再开发的能力。 VPP联盟网址:
初始化 函数
子程序接口
VTL或 VISA I/O接 口
9/34
3. 函数树
函数树就是驱动程序为仪器提供的所有 仪器函数的列表及分组关系。
10/34
按照VPP仪器驱动程序内部设计模型的 要求,对于任何仪器,都应有最小函数 树。 最小函数树包括初始化、关闭、错误消 息、错误查询、复位,自检和版本查询, 还应包括至少一个功能函数。
25/34
2. VPP规范对软面板的要求
VPP规范规定每一个VXIplug&play仪器都在 其安装盘上提供软面板。它使用户不必编写测试 程序就可以检验仪器的通信和操作,这样能够大 大减少组建和检验一个VXI系统的时间。 1、VPP软面板必须作为一个独立的应用程序运 行,仅使用计算机、操作系统及驱动程序库,不 应依赖于任何特定的应用程序开发环境。
15/34
1. VISA的作用
a. 为整个工业界提供统一的软件基础 b. 对驱动程序、应用程序不必考虑接口类型 c. 仅规定为用户提供的标准函数,不对具体实 现作任何说明 d. 用于编写符合VPP规范的仪器驱动程序,完 成计算机与仪器之间的命令和数据传输,实 现对仪器的控制。 e. VISA库作为低层 I/O 接口软件,运行于计 算机系统中。
18/34
② 资源操作类函数
• 寄存器基仪器通讯


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); viPrintf, viScanf viPrintf (dmmHandle, "*IDN?\n"); viScanf (dmmHandle, "%t", result);
13/34
5. 函数面板和函数树设计
LabWindows/CVI提供函数面板的设计工具 设计步骤: • 了解仪器功能,根据功能规划编辑函数面板树。 • 规划函数树,在最小树基础上扩充。 • 生成仪器驱动程序工程文件(.prj) • 设计函数树和函数面板(.fp, .c, .h) • 完成驱动程序每个函数的代码(.c) •-4)
VISA:Virtual Instrumentation Software Architecture,即虚拟仪器软件结构,是 VPP系统联盟制定的I/O接口软件标准及其 相关规范的总称。 VISA为虚拟仪器提供了标准化的I/O接口软 件规范。VISA是整个工业界的统一的软件 基础。 虚拟仪器软件结构中的标准 I/O 接口软件称 为VISA库。
4/34
1. VPP 规范的特点
a. b. c. d. e. 由仪器生产厂家提供 提供程序源代码 程序结构化与模块化 设计与实现的一致性 兼容性与开放性 VPP规范对仪器驱动程序的要求不仅适用于 VXI仪器,也同样适用于GPIB仪器、PXI仪 器、串行口仪器、网络仪器、USB仪器等。 已经成为了虚拟仪器驱动程序设计的事实标 准。 5/34
23/34
传统仪器面板
虚拟仪器软面板
24/34
1. 软面板的作用
a. 利用软面板检验仪器的通信和功能,同时也 可利用它作为学习工具,演示仪器的控制和 功能。 b. 软面板采用图形用户接口(GUI)技术来显 示等效的旋钮、按键及控制器。用户通过鼠 标或计算机键盘操纵这些控制器。图形显示 提供同传统前面板方式相似的测量结果和仪 器状态,从而让用户以熟悉的方法控制仪器。
21/34
⑤ 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);
}
22/34
四、 软面板 Soft Panel(VPP-7)


虚拟仪器一般没有了操作面板,必须借助 PC机作为其数据分析与显示的工具,利 用PC机强大的图形显示和在线帮助功能, 建立图形化的虚拟仪器面板,完成对仪器 控制、数据分析与显示。 VPP软面板是一个特殊的测试应用程序, 它为仪器模块提供一个替代前面板的控制 接口。该控制接口不是在仪器前面板上, 而是在计算机显示器上。
2. VPP规范的内容
标准代号 VPP-1 VPP-2 VPP-3 仪器驱动程序 规范 VPP-4.3 虚拟仪器软件 结构规范 VPP-6 VPP-7 VPP-8 VPP-9 VPP-3.1 VPP-3.2 VPP-3.3 VPP-3.4 VPP-4.3 VPP-4.3.2 VPP-4.3.3 标准名称 VPP系统联盟章程 VPP系统框架规范 VPP仪器驱动程序结构和设计规范 VPP仪器驱动程序函数体规范 VPP仪器驱动程序交互式开发接口规范 VPP仪器驱动程序编程式开发接口规范 VISA库 文本语言VISA实现规范 G语言VISA实现规范 安装和包装规范 软面板规范 VXI模块/机箱和接收器互连 仪器制造商缩写规则

消息基仪器通讯


格式化I/O

19/34
③ 资源模板 • 事件处理
viEnableEvent, viDisableEvent viInstallHandler, viUninstallHandler viWaitOnEvent
viGetAttribute, viSetAttribute
11/34
4. 函数面板
函数树中的每一个函数都应具有函数面板,它是 对仪器驱动程序函数的图形化描述。
12/34
函数面板的帮助
• 函数帮助:描述面板上的函数功能和相关的辅 助函数。 • 控件帮助:对应函数的输入和输出参数,列举 参数名,并描述参数,变量类型,有效范围和错误 值。 • 返回帮助:描述返回值变量类型和可能的错误 值。

资源属性

20/34
④ 用VISA函数操作仪器的步骤
打开VISA资源管理器句柄,用到的函数: viOpenDefaultRM; 打开仪器句柄,用到的函数:viFindRsrc、 viFindNext、viOpen等; 设置仪器状态、控制仪器操作、读取测量数据、处 理仪器事件,用到的函数: viGetAttribute、 viSetAttribute、viIn16、viOut16、viPrintf、 viScanf、viInstallHandler、viUninstallHandler、 viEnableEvent、viDisableEvent、viWaitOnEvent 等; 释放仪器句柄,用到的函数:viClose; 释放VISA资源管理器句柄,用到的函数:viClose。
16/34
2. VISA的特点
a. 适用于各类仪器:VXI, PXI, GPIB, RS-232, TCP, USB… … b. 与硬件接口无关 c. 既适用于单处理器结构又适用于多处理器或 分布式结构 d. 适用于多种网络机制
17/34
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);
相关主题