




已阅读5页,还剩70页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
8 仪器驱动器设计 8 1虚拟仪器软件结构VISA8 2VPP仪器驱动程序8 3基于lVl规范的互换型驱动器8 4VPP仪器驱动程序设计8 5LabVIEW仪器驱动程序 8 1虚拟仪器软件结构VISA VISA的基本概念1 什么是VISAVISA是虚拟仪器软件结构 VirtualInstrumentSoftwareArchitectuere 的简称 是由VXIplug play系统联盟所统一制定的I O接口软件标准及其相关规范的总称 一般称这个I O函数库为VISA库 用于仪器编程的标准I O函数库 VISA函数库驻留于计算机系统中 是计算机与仪器之间的标准软件通信接口 用以实现对仪器的控制 VISA的结构模型图VISA采用这种金字塔型的结构模型 为各种虚拟仪器系统软件提供了一个形式统一的I O操作函数库 VISA将不同厂商的仪器软件统一于同一平台 2 为什么要使用VISAVISA的内部结构是一个先进的面向对象的结构 这一结构使得VISA与在它之前的I O控制软件相比 接口无关性有很大提高 VISA的可扩展性使它远远超出了一般I O控制软件的范畴 而且由于VISA内部结构的灵活性 使得VISA在功能和灵活性上也超过了其它I O控制库 尽管VISA的API函数却比其它具有类似功能的I O库少得多 因此 VISA很容易被初学者掌握 另外 VISA高度的可访问性和可配置性又使得熟练的用户可以利用VISA的许多独有特性 使得VISA的应用范围大大超过了传统的I O软件 VISA不仅为将来的仪器编程提供了许多新特性 而且兼容过去已有的仪器软件 总之 VISA具有与仪器硬件接口无关的特性 是理想的仪器I O软件 3 VISA的特点1 VISA的I O控制功能适用于各种仪器类型2 VISA的I O控制功能适用于各种仪器硬件接口方式3 VISA的I O控制功能适用于多种计算机平台4 VISA能适应未来发展的需要4 VISA的发展现状VISA规范是VPP规范的核心内容 其中 VPP4 3 VISA库 规定了VISA库的函数名 参数定义及返回代码等 VPP4 3 2 文本语言的VISA实现规范 和 VPP4 3 3 图形语言的VISA实现规范 分别对文本语言 C C 和VisualBasic 和图形语言 LabVIEW 实现VISA时的VISA数据类型与各种语言特定数据类型的对应关系 返回代码 常量等进行了定义 VISA的组成原理1 VISA的内部结构VISA的内部结构简化图 1 资源管理器VISA资源管理器是用于管理所有资源的一种系统资源 控制设备资源 执行管理 控制和分配VISA资源的操作 2 资源VISA的资源类概念类似于面向对象程序设计方法中类的概念 它是一个实例的外观和行为的描述 是一种抽象化的设备特点的功能描述 是对资源精确描述的专用术语 3 会话 连接 会话 Sessions 是指与任何已存在资源的连接 包括默认资源管理器的连接 2 VISA资源描述1 资源描述格式 2 资源类型定义 3 VISA的资源结构 4 VISA机制需要用到VISA的3种机制 属性机制 锁定机制和事件机制 以写资源为例 3种机制的作用如图 1 属性机制属性机制用来控制资源的各种属性 这些属性分为两种 只读属性和可读可写属性 2 锁定机制锁定机制可以设置通道对资源的访问模式 应用程序能同时对资源开辟多个通道 并能通过不同的通道对资源进行访问 3 事件处理机制VISA中还定义了一种常见的机制提醒应用程序注意某种特殊情况 这些特殊情况成为事件 有了事件就可以使VISA的资源和它的应用程序之间传递消息 应用程序有两种不同的方式获得事件通知 它们分别是 队列机制和回调机制 VISA编程及应用实例1 VISA编程概要在VISA编程过程中 面向仪器的所有操作都必须首先进行打开VISA资源通信通道 Session 的操作 用户可以打开两种类型的通信通道 资源管理器通信通道 ResourceManagerSession 和器件通信通道 DeviceSession 2 应用实例本节通过分别调用非VISA的I O接口软件库与VISA库函数 对GPIB器件与VXI消息基器件进行简单的读 写操作 向器件发送查询器件标识符命令 并从器件读回响应值 从而进行VISA与其他I O接口软件的异同点比较 实例1 用非VISA与其他I O接口软件库 NI公司的NI 488 实现GPIB仪器的读 写操作 实例2 用非VISA的I O接口软件库 NI公司的NI VXI 实现对VXI消息基仪器的读 写操作 实例3 用VISA的I O接口软件库实现对GPIB仪器与VXI消息的读 写操作 实例4 对于用户来说 只需了解VISA函数的格式与参数就可以编写仪器的驱动程序 而不必关心VISA库与仪器如何沟通的细节 对VISA函数的调用一般可以分为声明 开启 器件I O和关闭4部分 下面以一段简单的C语言程序为例进行说明 该程序是由计算机向一台GPIB器件发出 IDN 的IEEE 488 2公用命令 并从该器件回读其响应字符串 VISA在LabVIEW中的实现1 VISA子模板简介VISA功能模块位于InstrumentI O VISA VISAAdvanced子模板中如图 2 VISA总线系统软件设计VISA子模板中各个函数的端口图和功能如表 VISA高级选项子模板中部分函数及子函数的简单介绍 3 VISA属性节点LabVIEW提供了VISA属性节点 位于VISAAdvanced子模板 在程序中通过属性节点可读取设置VISA资源的属性值 VISA属性节点如图将VISA属性节点放到流程图上以后 可设置VISA属性 设置属性有两种方法 1 把VISA会话通道连接到属性节点的reference输入端子 VISA就会变成与这个会话相关联的类 2 在属性节点弹出选单 选择SelectClass VISA I OSession选项 如图8 7所示 在此选项的下列选单包含各种不同的VISA类 选择VISA类后进行属性设置 4 实例 例8 1 VISA锁定机制的运用VISA锁定机制允许优先通过独立的操作访问资源 前面板及流程图程序设计 例8 2 VISA属性应用实例 串口写和读 VISA属性应用 vi框图程序如图所示 该VI打开一个与串口COM1的会话通道 通过属性节点对串口初始化为19200波特 8位数据位 1位停止位 无奇偶校验位 而后将一个字符串写入writebuffer端口 经10s延时后 通过VISA的另一个属性端子BytesatPort返回从串口设备读取的字节数 这些字节在VISARead模块的readbuffer端口获取 通信结束由VISAClose模块关闭与串口的会话连接 VISA属性应用 VI框图程序 8 2VPP仪器驱动程序 仪器驱动器概述1 仪器驱动器的由来1 问题的提出2 标准仪器命令集的控制方式3 仪器驱动器的控制方式总之 在虚拟仪器系统中 驱动程序起着非常重要的作用 它将仪器硬件和计算机有机地组合成为一个仪器系统 完整地实现虚拟仪器内部的数据采集 分析处理 显示输出的全部功能 随着仪器硬件 计算机和软件的复杂性越来越高 驱动程序的重要性与价值已经越来越被人们所重视 2 关于驱动器的基本概念仪器驱动程序是完成对某一特定仪器的控制与通信的软件程序集合 它负责处理与某一专门仪器通信和控制的具体过程 将底层的复杂的硬件操作隐蔽起来 通过封装复杂的仪器编程细节 为了使用户使用仪器提供了简单的函数调用接口 仪器驱动程序是连接上层应用软件与底层输入 输出软件的纽带和桥梁 每个仪器模块均由自己的驱动程序 并且仪器厂商将其原码以动态链接库 DLL 的形式提供给用户 3 VPP仪器驱动器的特点 1 仪器驱动程序一般由仪器供应厂家提供 2 所有仪器驱动程序必须提供程序源代码 而不是只提供可调用的函数 3 仪器驱动程序结构的模块化与层次化 4 仪器驱动程序设计与实现的一致性 5 仪器驱动程序的兼容性与开放性 VPP仪器驱动器的结构模型1 仪器驱动器外部接口模型外部接口模型分为以下5个部分 如图 1 函数体 它是仪器驱动程序的主体 为仪器驱动程序的实际源代码 2 交互式开发接口 它提供了一个图形化的功能面板 用户可以在这个图形接口上实施各种控制 改变每一功能调用的参数值 3 编程开发者接口 它是应用程序调用驱动程序的软件接口 通过此接口可方便地调用仪器驱动程序中所定义的所有功能函数 4 VISAI O接口 它通过本接口调用VISA这一标准的I O接口程序库 提供了仪器驱动器与仪器硬件的通信能力 5 子程序接口 它使得仪器驱动器在运行时能调用其它所需要的软件模块 如数据库 FFT等 而提供的软件接口 2 仪器驱动程序内部设计模型仪器驱动器的第二个模型是内部设计模型 仪器驱动程序函数体由两大部分组成 第一部分是一组部件函数 它们是一些控制仪器特定功能的软件模块 第二部分是一组应用函数 它们使用一些部件函数共同实现完整的测试和测量操作 1 部件函数 1 初始化函数 2 配置函数 3 激活 状态函数 4 数据函数 5 实用函数 6 关闭函数 2 应用函数应用函数是以源代码形式提供的一种面向测试任务的高级编程函数 通常情况下 应用函数通过设置 启动 从仪器读取测量数据等动作来完成一次完整的测试操作 根据测试任务的不同 将虚拟仪器粗分为3种类型 即测量仪器 源仪器及开关仪器 它们分别完成测量任务 源激励任务及开关选通任务 在VPP系统仪器驱动程序规范中 将配置函数 动作 状态函数及数据函数统称为功能类别函数 对应以上的3种仪器类型 分别定义了3种功能类别函数的结构 即测量类函数 源类函数及开关类函数 仪器驱动程序函数简介1 通用函数 1 初始化函数建立驱动程序与仪器的通信联系 VPP规范对参数返回的状态值作了规定 2 复位函数将仪器置为默认状态 3 自检函数对仪器进行自检 4 错误查询函数 完成仪器错误的查询 5 错误消息函数将错误代码转换为错误消息 6 版本查询函数对仪器驱动程序的版本与固有版本进行查询 7 关闭函数终止软件与仪器的通信联系 并释放系统资源 2 特定函数1 测量类功能类别函数 2 源类功能类别函数 3 开关类功能类别函数 仪器驱动程序功能面板1 功能面板的结构功能面板文件最小树结构 2 功能面板的部件函数功能面板树结构 在功能面板中 每一个层次的部件都必须包括各自的帮助文档 帮助文档可分为如下5部分 1 功能面板帮助文档对应于仪器节点 描述了整个仪器的功能及功能面板所含的类节点与函数节点概念 2 功能类帮助文档对应于类节点 描述了类的功能与类所含的函数节点概述 3 功能函数帮助文档对应于函数节点 描述了功能函数的功能 4 控件帮助文档对应于函数的输入 输出函数 分别描述各自的意义 默认值与注意点 5 控件帮助文档对应于函数的返回状态值 包括了正确返回值与各种错误返回值代码的含义 8 3基于lVl规范的互换型驱动器 8 3 1IVI概述1 IVI的基本概念VPP仪器驱动器与特定仪器密切相关 更换不同厂家或同一厂家不同型号的仪器时 不仅要更换仪器驱动器而且要修改测试程序 针对VPP规范的缺点 为了进一步提高仪器驱动程序的规范化和标准化 充分实现仪器的互换性和互操作性 制定了IVI规范 2 IVI驱动器的特点1 优点和VPP驱动器相比 IVI仪器驱动器的优点主要有 1 仪器级可互换 2 采用了基于状态存储机制的程序结构 3 仪器仿真 4 具有多线程安全性 5 具有范围检查 状态储存及其他的调试和开发功能 2 缺点对于面向仪器互换的虚拟仪器设计目标 目前IVI模型的主要缺点体现在以下方面 1 只适合同类仪器的互换 不能实现不同类仪器或某些多类功能的综合性仪器之间的互换 2 IVI类驱动器只能统一某类仪器中大部分仪器功能 其他功能只能通过专用驱动器来实现 3 可用标准较少 目前只完成了示波器 万用表 函数发生器 多路形状等部分仪器的类驱动器的标准化 4 标准开放程度低 IVI模型只适合于通用仪器 如万用表等 而对某些专用仪器 如数据采集卡 不适用 8 3 2IVI驱动器的类型1 IVI驱动器的类型 IVI驱动器的类型 IVI驱动器类型具体介绍如下 1 IVI仪器驱动器2 IVI特定驱动器3 IVI类兼容特定驱动器4 IVI定制特定驱动器5 IVI类驱动器 2 IVI驱动器的功能1 IVI固有功能 InherendCapabilities 2 基本类功能 BassSlassCapabilities 3 VI类扩展功能 ClassExtensionCapabilities 4 仪器专用功能 InstrumentSpecificCapabilities 3 IVI驱动程序的体系结构 基于IVI规范的驱动程序体系结构 通过类驱动程序间接调用方式 是IVI驱动器的特色 多用表类的IVI驱动器的结构如下图所示 多用表类的IVI驱动器的结构 4 IVI驱动器的结构框架IVI仪器驱动器的结构框架如下图所示 IVI仪器驱动器的结构框架 8 3 3IVI函数库IVI函数库包括以下内容 仪器通信资源管理 包括资源的创建 锁定 解锁和释放 仪器通信管理 添加仪器属性 添加仪器属性的回调函数 设置 获取和检查仪器的属性 属性的状态缓存和状态检测 范围表管理 包括创建 查找 更改和强制取值 错误报告和错误获取 内存分配和配置信息的设置和获取 通信资源的内存分配和释放 IVI函数库功能强大 应用复杂 下面将介绍其中的主要功能和使用方法 1 仪器通信资源管理 仪器驱动器的初始化信息 2 属性的创建和删除 参数flags设置含义 3 获取 设置和检查属性及属性的回调函数回调函数包括 读回调函数 写回调函数 范围检查回调函数 强制赋值回调函数 比较缓存值回调函数 范围表回调函数 4 属性的范围表 8 3 4IVI特定驱动程序的开发1 开发的基本步骤下面结合实例说明在LabWindows CVI环境下开发IVI驱动程序的基本步骤 1 用IVI提供的CreateIVIInstrumentDriver工具 生成符合IVI规范的程序框架 创建基本的仪器驱动程序文件 包括源文件 头文件和函数面板文件 2 分析驱动程序的组成文件和源代码 根据自己开发的仪器功能 删除不用的扩展代码 添加自己的函数和代码 3 对独立属性实现属性回调函数 4 明确属性的无效值 IVI引擎是用一套相对直观的机制来保持状态存储的完整性 5 编写应用程序对IVI驱动程序的各函数进行测试 以保证正确性 2 开发实例下面是IVI INI文件的一个例子 它分为虚拟仪器 仪器驱动器 硬件设置三部分 如果要将Fluke 45DMM换成HP34401DMM 只要将IVI INI中相关内容换成HP34401的信息即可 IviLogicalNames DMM1 Vistr F145 ClassDriver IviDmm Description IVIDigitalMultimeter类驱动程序 SimulationVInstr VIstr NISimDmm VIstr F45 Description Fluke45DigitalMultimeter Driver Driver F45 Hardware Hardware F45 RangeCheck TrueSimulate TrueUseSpecificSimulation TrueTrace TrueInterchangeCheck TrueQueryStatus TrueChannelNames ch1 Defaultsetup Driver F45 Description Fluke45DigitalMultimeterInstrumentDriver ModulePath c cvi50 instr F145 32 dll Prefix FL145 Interface GPIB Hardware F145 Description ResourceDesc GPIB 2 INSTR IdString FLUKE 4 4940191 1 6D1 0 DefaultDriver Driver F145 8 4VPP仪器驱动程序设计 8 4 1VPP仪器驱动程序设计概要1 设计的基本要求VPP驱动程序的设计要求如下 1 仪器驱动程序都提供程序源代码 使用户可以根据自己的需要理解 修改与优化仪器驱动程序 2 仪器驱动程序的结构一定要模块化 能够提供多级功能访问 以便用户能使用各个驱动器的子功能集 3 仪器驱动程序的设计和实现形式必须一致 以使用户在了解某一驱动程序的设计方法后 就能使用其他的驱动程序 2 设计方法概述VPP仪器驱动程序的设计应按照一定步骤进行 下面介绍设计的一般方法 1 应确定需要研制的仪器模块的类型 确定其属于VXI仪器还是串行接口仪器 是属于消息基器件 寄存器基器件还是存储器基器件 2 应确定仪器模块的应用目标及功能指标 3 在基本清楚了设计目标之后 应选择虚拟仪器系统的系统框架 确定模块设计的软 硬件环境 4 应选择一个可作参考的现有的VPP仪器驱动程序 尽量在现有的仪器驱动程序基础上进行设计 不必从头开始进行重复性劳动 5 在对应参考模块的研究基础上 确定仪器驱动程序应包括的功能函数 也即仪器驱动程序的内部设计模型 6 在实际源程序的编写中 还需加入各种异常处理 7 在图形化平台上运行与调试仪器驱动程序 8 编写仪器驱动程序相关文档 包括Windows格式的帮助文件 知识库文件以及VisualBasic函数原型文件等 并应提供自动安装程序 3 设计内容在前面关于仪器驱动器的介绍中可知 仪器驱动程序包括以下几个部分 操作接口提供了一个虚拟仪器面板 用户通过对该面板的控制完成对仪器的操作 编程接口能将虚拟仪器面板的操作转换成相应的仪器代码 以实现对仪器驱动器的功能调用 I O接口提供了仪器驱动器与仪器通信能力 功能库描述了仪器驱动器所能完成的测试功能 子程序接口使得仪器驱动器在运行时能调用它所需要的软件模块 1 仪器驱动器的开发工具 2 仪器驱动器的设计模型 1 外部设计模型图 2 内部设计模型图 3 仪器驱动程序开发和编辑的工具 4 设计步骤典型LabVIEW仪器驱动器的设计步骤大致可以分为以下三步 一是设计仪器驱动器的结构层次 二是设计仪器驱动器的功能体 三是按外部设计模型设计接口程序 1 仪器驱动器结构层次的设计 2 仪器驱动器功能体程序设计 3 仪器驱动器功能体接口程序设计 8 4 2VPP仪器驱动程序的设计实例1 设计要求及步骤对仪器驱动器的基本要求是 1 模块化和层次化 2 源代码 3 广泛的可访问性 开发用于WIN框架的LabWindows CVI仪器驱动器必须遵循的步骤如下 1 熟悉仪器和获得实际操作经验 2 研究仪器手册中的编程命令及GPIB库 3 生成仪器驱动程序 2 设计实例本设计基于LabWindows CVI开发平台 以HP34410数字多用表为例简要说明其仪器驱动程序设计 设计步骤如下 创建FP文件 编辑函数面板和类节点名称 编辑函数面板控件与变量定义 生成代码 编写帮助文档 编译 1 仪器HP34410数字多用表驱动程序设计打开指定设备回话函HP34410A OpenInstrumentDirectly 的程序流程图如图所示 函数HP34401A OpenInstrumentDirectly 程序流程图 查找和打开设备回话函数HP34401A OpenInstrumentFormAddress 的程序流程图如下图所示 函数HP34401A OpenInstrumentFormAddress 程序流程图 驱动程序HP34401A c源代码例程如下 include include ATEhp34401a h include include defineON1 defineOFF0charHP34401AChanState OFF 函数声明 ViStatusHP34401AWrite ViSessioninstr char TempChar ViUInt32Count ViPUInt32ReturnCount ViStatusHP34401ARead ViSessioninstr char TempChar ViUInt32Count ViPUInt32ReturnCount 1 为指定仪器打开一个会话 需提供指定仪器的GPIB卡号和GPIB初始地址 defaultRM为输入参数 代表资源管理器会话 PrimaryAddress为仪器初始地址 GPIBBoardNum为仪器的GPIB卡号 InstrumentHandle为输出参数 代表返回的仪器句柄ViStatus VI FUNCHP34410A OpenInstrumentDirectly ViSessiondefaultRM intPrimaryAddress ViPSessionInstrumentHandle char GPIBBoardNum ViStatusReturnVal 1 inti ViCharInstrDescriptor 260 ViSessionTempInstr charTempChar 50 InstrumentHandle VI NULL Fmt TempChar s s s d s GPIBBoardNum PrimaryAddress INSTR 把仪器的GPIB板号 GPIB初始地址等参数转换成字符串 存放在变量TempCharReturnVal viOpen defaultRM TempChar VI NULL VI NULL VI SUCCESS 成功打开相匹配设备中第一个设备的回话 if viGetAttriute TempInstr VI ATTR GPIB PRIMARY ADDR i 继续查找 直到查完所有相匹配的设备 if viFindNext FindList InstrDescriptor VI SUCCESS 查找下一个设备 if viOpen d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版人力资源外包服务合同(含员工离职与招聘)
- 控辍保学工作实施策略
- 2025年医疗行业政策导向下的医疗科技创新与产业升级报告
- 咨询工程师题库试题附答案详解(满分必刷)
- 社区健康宣传活动方案
- 沉浸式戏剧市场推广团队管理与绩效评估报告2025
- 五年级数学(小数除法)计算题专项练习及答案汇编
- 重难点解析公务员考试《常识》重点解析练习题(含答案详解)
- 中级银行从业资格之中级银行业法律法规与综合能力能力提升试题打印及一套答案详解
- 主管护师(中级)题库及完整答案详解【夺冠】
- 乐器供销合同范本
- 2025年辽宁省中考生物学试卷真题附答案
- 2025年执业医师考试全真试题及答案
- GA 1808-2022军工单位反恐怖防范要求
- 房建满堂脚手架专项验算书
- 高一第一堂班会课
- 【学生生涯规划系列】高一上学期生涯规划讲座课件
- 焊接工艺要求
- JJF(电子) 31502-2010 静电腕带/脚盘测试仪校准规范-(高清现行)
- 国学武术操太极拳表演活动流程
- DB14∕T 1131-2015 麦茬复播花生栽培技术规程
评论
0/150
提交评论