
虚拟仪器硬件模块驱动程序.ppt
48页单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,6.1 虚拟仪器驱动程序,6.2 虚拟仪器软件体系VISA,6.3 SCPI程控标准命令,6.4 可互换虚拟仪器IVI,第四章 虚拟仪器硬件模块驱动程序的设计方法,第四章 虚拟仪器硬件模块驱动程序的设计方法,本章需要掌握的知识点:,VISA的特点,利用VISA进行编程的基本步骤,熟记常用的SCPI命令,掌握IVI制订的目的以及目前都制订了哪几类仪器的IVI规范,(1)仪器驱动程序的概念,仪器驱动程序是一套可被用户调用的,子程序库,,利用它就不必了解每个仪器的编程协议和具体编程步骤,只需调用相应的一些函数就可以完成对仪器各种功能的操作仪器驱动程序一般是控制物理仪器的,但也有的是纯软件工具6.1 虚拟仪器驱动程序,由于虚拟仪器需要提供模拟实际仪器操作面板的虚拟面板,因此虚拟仪器驱动程序不仅仅是实施仪器控制的程控代码,而是仪器程控代码、高级软件编程与先进人际交互技术三者相结合的产物,是一个包含实际仪器使用、操作信息的软件模块2)虚拟仪器系统中引入驱动程序的必要性,(3)仪器驱动程序功能,仪器驱动程序负责处理与某一专门仪器通信和控制的具体过程,通过封装复杂的仪器编程细节,为用户使用仪器提供了简单的函数接口。
用户不必对各种诸如GPIB、VXI、PXI等仪器硬件有专门的了解,就可以通过驱动程序来使用这些仪器硬件4)仪器驱动程序的历史,基本的台式系统,GPIB仪器(,解释语言,BASIC)70年代中期,个人计算机的影响,插卡式仪器(,编译语言,C)80年代,可程控仪器标准命令(,SCPI,488.2,)90年代初期,模块化仪器驱动程序(,Driver,),VXI即插即用仪器驱动程序(VXI,plug&play,,VPP),1993年,可互换虚拟仪器驱动程序(,IVI,)1997年,还在不断完善,6.2 虚拟仪器驱动程序设计标准(VISA),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的组成原理,几个重要概念,资源管理器用于管理所有资源的一种系统资源(控制设备资源),执行管理、控制和分配VISA资源的存在类似于面向对象中的类VISA中的资源是一个计算机可以访问或可与之通信的实体指与任何已经存在资源的连接,包括默认资源管理器的连接4.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,viWrite,(,dmmHandle,writebuf,100,格式化,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,);,6.3 可编程仪器标准命令(Standard Command for Programmable,Instrument,简称SCPI,(1)基本概念:,SCPI是为解决程控仪器编程进一步标准化而制订的标准程控语言,目前已经成为重要的程控仪器软件标准之一。
2)与过去的仪器编程语言比较,1)SCPI描述的是人们正在试图测量的信号,而不是正在用以测量信号的仪器;,2)相同的SCPI命令可用于不同类型的仪器,这称为SCPI的“横向兼容性”;,3)SCPI命令可以扩展,其功能可随着仪器功能的增加而升级扩展,并适用于仪器产品的更新换代,这称为SCPI的“纵向兼容性”3)SCPI仪器模型,信号路径选择,测量功能,格式化,触发器,存储器,信号路径选择,信号发生,格式化,数据总线,数据总线,(4)SCPI命令句法,包括三部分:,1)语法和式样,用于描述SCPI命令的产生规则以及基本的命令结构;,2)命令标记,用于提供SCPI要求和可供选择的命令;,3)数据交换格式,描述了在仪器与应用程序之间、应用程序与应用程序之间或者仪器与仪器之间可以使用的数据集标准表示方法1)语法和式样,SCPI命令由程控题头、程控参数和注释三部分组成有两种形式:,采用,IEEE488.2,命令,也称为,SCPI,公用命令它可以是询问命令也可是非询问命令,前一种情况命令结尾处有问号举例:*IDN?,采用以冒号分割的一个或者数个,SCPI,助记符构成举例:,OUTPut:FILTer:LPAss,关键词组成短形助记符的规则,1)如果关键词不多于四个英语字母,则关键词就是短形助记符;,2)如果关键词多于四个英语字母,则通常保留关键词的前四个字母作为短形助记符。
3)所有长形、短形助记符均允许有数字后缀,以区别类似结构的多种应用场合2)命令标记,主要给出SCPI要求的和可供选择的命令SCPI命令分为仪器公用命令(IEEE488.2命令)和SCPI主干命令两部分3)数据交换格式,SCPI的交换格式方法与IEEE488.2语法是兼容的,分为标准参数格式和数据交换格式两部分5)常用SCPI命令简介,1)常用仪器公用命令,*IDN?,功能:用于查询仪器种类的查询命令,仪器用一条带有四个字段的信息进行回答,这四个字段分别为:生产厂家、仪器型号、系列号和固件级别使用方法:如连接了一个泰克公司的函数发生器VX5520,则执行该命令后,返回代码如下:Tektronix、VX5520、BO356、V11,*CLS?,功能:清除命令中断正在执行的命令,消除在命令缓冲区等待的命令RST,功能:复位仪器到初始上电状态在仪器工作过程中,程序出错或者其他死机情况经常需要复位仪器用法:一般情况下,要先用,*CLS?清除仪器中的命令,在进行复位TST?,功能:自检命令,用法:该命令复位仪器,完成自检返回“0”表示仪器正常;否则仪器存在故障需要维修ERR?,功能:错误信息查询命令。
当仪器操作过程中发生错误时,错误代码和信息存储在仪器的错误队列中用法:用该命令可读入错误队列,SYST:ERR?,2)SCPI主干命令,MEASure?,功能:测量命令该命令配置仪器,并用指定量程和仪器进行测试当仪器触发后,该指令完成测试并返回读数到输出缓冲区用法:MEASure:VOLTage:AC?,参数range指定待测信号最大可能电压值,然后仪器自动选择最接近的量程CONFigure:,功能:配置命令该命令用指定参数设置仪器用法:可以使用初始化命令INITiate命令置仪器在等待触发状态;或者使用Read命令完成测量并将读数送入输出缓冲区执行该命令后,测量不会立即开始,因此可以允许用户在实际测量前改变仪器的配置Read?,功能:该命令通常与CONFigure命令配合使用,它完成两个功能:,置仪器在等待触发状态(执行,INITiate,命令);,当触发后,直接将读数送入输出缓冲区Fetch?,功能:取命令该命令取出由最近的INITiate命令放在内存中的读数值,并将这些读数送到输出缓冲区在送该命令前,必须先执行INITiate命令,否则将产生错误CALIbration,功能:校准命令。
