《虚拟仪器导论》PPT电子教案-第3章 虚拟仪器软件标准.ppt
第 3 章,虚拟仪器软件标准,InstrumentDriver,第3章 虚拟仪器软件标准,教学内容 可编程仪器标准命令(SCPI)虚拟仪器软件结构(VISA)虚拟仪器驱动程序,InstrumentDriver,3.1 可编程仪器标准命令(SCPI),SCPI:Standard Commands for Programmable Instruments 可编程仪器标准命令是为解决程控仪器编程进一步标准化而制定的标准程序语言,目前已经成为重要的程控仪器软件标准之一。,SCPI的产生背景,IEEE488.1主要规定了仪器在电气上、机械上和功能上相容性的要求,保证了系统部件间正确的电气、机械连接。IEEE488.2使程控仪器器件消息的数据编码和格式、命令功能元素和编码句法、消息交换控制等方面实现了标准化。它仅仅定义了程控仪器的少数公用命令语义,用于器件内部基本操作控制,并未解决器件消息标准化的问题,而器件消息的非标准化给编程人员造成很大的困难。为了解决这个问题,1990年4月,建立在IEEE488.2基础上的可程控仪器标准命令SCPI应运而生。,3.1.1 SCPI的目标,SCPI的总目标是节省自动测试设备程序开发时间,保护设备制造者和使用者双方的硬件和软件投资,为仪器控制和数据利用提供广泛兼容的编码环境。这个广泛兼容的编码环境是指:SCPI仪器程控消息、响应消息、状态报告结构和数据格式均有标准化的定义,其使用只与仪器测试功能及仪器性能、精度相关。而不考虑仪器硬件组成、制造厂家、通信物理连接硬件环境和测试程序编制环境。,SCPI的目标,(1)程控命令面向测试功能(信号),而不是描述仪器操作.可从纵向、横向两个延伸关系上规定仪器兼容能力纵向编码兼容性:同一家族中的各代仪器的相同测试功能都能响应同一程控横向编码兼容性:使用同一程控命令控制不同类别仪器的类似测试功能。(2)减少类似测试功能的控制方法是保证编程相容性的关键.SCPI基本原则:用同一SCPI命令控制相同的仪器功能(3)在与通信物理连接层硬件无关的高层次上定义程控消息.SCPI基于IEEE-488.2(GPIB总线标准),支持VXI、RS-232等总线。,SCPI的目标,(4)与编程手段和程序语言无关,SCPI用户测试程序模块易于移植.使用各种编程语言:C、Delphi等都能把SCPI命令传送给SCPI仪器(5)具有可缩性,可适应不同规模的测量控制 简单测量命令:提供容易、快速的SCPI仪器控制 详细测量命令:提供传统仪器控制(6)SCPI的可扩性.SCPI允许用新命令扩充程控命令集。,3.1.2 SCPI仪器模型,针对SCPI命令是描述测试功能,而不是仪器硬件组成、技术手段和前面板控制,SCPI提出了一个描述仪器测试功能的通用仪器模型,如图:,信号路由选择用来控制信号输入通道与内部功能间的路径,格式化用来转换数据的表达式,当数据需要向外部接口传送时,必须格式化,程控命令与仪器硬件无关,3.1.3 SCPI命令句法,SCPI程控命令标准由3部分内容组成:第一部分“语法和样式”,描述SCPI命令的产生规则以及基本的命令结构;第二部分“命令标记”,主要给出SCPI要求或可供选择的命令;第三部分“数据交换格式”描述了一种数据采集的标准表示方法,用于实现仪器与仪器之间及其他应用场合中的数据交换。,1.语法和样式,SCPI命令由程控题头、程控参数和注释3部分组成。SCPI程控题头有两种形式,如图所示.,短形助记符的规则,(1)如果关键词不多于4个英语字母,则关键词就是短形助记符。(2)如果关键词多于4个英语字母,则通常保留关键词的前4个字母作为短形助记符。但是在这种情况下,如果第4个字母是元音,则把这个元音去掉,用3个字母作短形助记符。(3)所有长形、短形助记符均允许有数字后缀,以区别类似结构的多种应用场合。例如使用不同触发源时可用不同的数字后缀区别它们。在使用数字后缀时,短形助记符仍允许使用4个不包括数字的字母。,长形助记符的规则,长形助记符与关键词的字母完全相同,只不过长形助记符的书写格式有一定要求,它被分成两部分,第一部分用大写字母表示短形助记符,第二部分用小写字母表示关键词的其余部分。关键词的书写形式要求不严格,可以与长形助记符完全相同,也可以只把第一个字母大写。,助记符形成实例,1.语法和样式,SCPI命令中除了”:”之外,还使用的标点符号(1)“;”用来分隔同一命令字串中的两个命令(2)“,”用于分隔命令参数(3)“”空格用来分隔命令助记符和参数,2.命令标记,SCPI命令标记主要给出SCPI要求的和可供选择的命令。SCPI命令分为两类:仪器公用命令和SCPI主干命令。SCPI把IEEE-488.2要求仪器必须执行的公用命令作为SCPI仪器公用命令,这些公用命令用于控制仪器的某些基本功能操作,其句法和语义遵循IEEE-488.2的规定。,SCPI仪器公用命令,SCPI主干命令关键字与基本功能,SCPI主干命令关键字与基本功能,3.数据交换格式,数据交换格式主要描述了一种仪器与应用之间、应用与应用之间、仪器与仪器之间可以使用的数据集的标准方法。SCPI的交换格式语法与IEEE-488.2语法是兼容的,分为标准参数格式和数据交换格式两部分。标准参数格式:数值参数、离散参数、布尔参数、字符串参数数据交换格式:SCPI的数据交换格式主要描述了一种数据结构,它用来作为仪器与仪器之间以及不同应用场合情况下交换特征数据。,3.1.4 常用SCPI命令简介,1.常用仪器公用命令(1)*IDN?仪器标识查询命令。每台VXI仪器都指定了一个仪器标识代码。如对HP1411B模块,该命令实际返回标识码Hewlett Packard,E1411B,0,G.06.03。(2)*RST复位命令。复位仪器到初始上电状态。在仪器工作过程中,当发生程序出错或其他死机情况时,经常需要复位仪器。一般情况下先用命令*CLS清仪器,然后再复位。,常用仪器公用命令,(3)*TST?自检命令。该命令复位仪器,完成自检,返回自检代码。返回“0”表示仪器正常,否则仪器存在故障需维修。自检命令是确定仪器操作过程是否出现问题的一个有效手段。(4)*CLS清除命令。中断正在执行的命令,清除在命令缓冲区等待的命令。例如当数字表正在等待外部触发信号时,此时输入的命令将在缓冲区等待,直至触发信号接收到后才执行。命令*CLS将清除在缓冲区等待的命令。(5)*ERR?错误信息查询命令。当仪器操作过程中发生错误时,错误代码和解释信息储存在错误队列中,用下述命令可以读出错误代码和解释信息:SYST:ERR?,2.SCPI主干命令,(1)MEASure:测量命令MEASure命令的一般形式为:MEASure:?,完成交流电压测量的命令形式为:MEASure:VOLTage:AC?,,(2)CONFigure:配置命令,CONFigure命令的一般形式为:CONFigure:,该命令完成仪器配置,其参数意义及用法与MEASure命令一致。例如,对于数字万用表,该命令用指定参数设置数字万用表。,(3)Read?:读命令,Read?命令的一般形式为:Read:?,读命令通常与CONFigure命令配合使用。例如,对于数字万用表,该命令主要完成如下两个功能。置数字万用表在等待触发状态(执行INITiate命令)。触发后,直接将读数送入输出缓冲区。,(4)FEtch?:取命令,FEtch?命令的一般形式为:FEtch??,该命令取出由最近的INITiate命令放在内存中的读数值,并将这些读数送到输出缓冲区。在送FETch?命令前,必须先执行INIT命令,否则将产生错误。,3.1.5 SCPI编程方法,SCPI的编程步骤,3.2 虚拟仪器软件结构(VISA),虚拟仪器软件结构(Virtual Instrumentation Software Architecture,VISA),是VXI即插即用(VXI Plug&Play,VPP)系统联盟制定的I/O函数库及其相关规范的总称,一般称这个I/O 函数库为VISA 库。这些库函数用来编写仪器驱动程序,完成计算机与仪器间的命令和数据传输。,虚拟仪器的软件体系结构,3.2.1 VISA的结构与特点,VISA的结构模型为金字塔结构,如图,VISA的特点,(1)VISA的I/O控制功能适用于各种类型仪器,包括VXI仪器、GPIB仪器和RS-232C接口仪器等,既可用于VXI消息基器件,也可用于VXI寄存器基器件。(2)VISA具有与仪器硬件接口无关的特性,采用VISA编写的模块驱动程序既可以用于嵌入式计算机VXI系统,也可以用于基于MXI、GPIB-VXI或1394接口的系统中。当需要更换VXI总线系统控制器时,模块驱动程序无须改动。(3)VISA的I/O控制功能适用于单处理器系统结构,也适于多处理器结构或分布式网络结构。,3.2.2 VISA的现状,1995年12月颁布的VISA库规范中规定了VISA资源模板、VISA资源管理器、VISA仪器管理器、VISA仪器控制资源四类函数,共54个。VPP规范在1997年1月、1997年12月、1998年12月的VISA规定修订版中,陆续作了新的补充与更新,如增加了一些新的VISA类型、错误代码、事件、格式化I/O修饰符等。要全部实现VISA标准,对仪器厂商是一项非常复杂的工作,如HP公司1996年5月为用户提供的HP VISA库基本实现了VISA库函数,但也没有考虑到标准中的全部参数和功能。HP、NI等各大公司都正在逐步完善各自的VISA库。,3.2.3 VISA的资源结构,VISA的资源结构,VISA中的3种机制的作用,3.2.4 VISA的应用,C语言例程#include“visa.h”void main()ViSession defaultRM,vi;ViString buffer;ViUint32 retCnt;ViStatus status;status=viOpenDefaultRM(/关闭与默认资源管理器的通话,3.3 虚拟仪器驱动程序,仪器驱动程序是完成对某一特定仪器的控制与通信的软件程序。是连接仪器与用户界面的桥梁。每个仪器模块均有自己的仪器驱动程序。仪器驱动程序的实质是为用户提供了用于仪器操作的较抽象的操作函数集。对于应用程序来说,它对仪器的操作是通过仪器驱动程序来实现的。对于应用程序设计人员来说,一旦有了仪器驱动程序,在不是十分了解仪器内部操作过程的情况下,也可以进行虚拟仪器系统的设计工作。仪器驱动程序是连接上层应用软件与底层输入/输出软件的纽带和桥梁,是虚拟仪器软件的核心,是系统设计的关键。,VPP与IVI,VXI即插即用(VXI plug&Play,VPP)规范的制定为不同厂家仪器驱动程序的开发提供了一个可依托的标准,该规范定义了系统的互操作性,把虚拟仪器软件体系结构VISA确定为一种标准的I/O接口,用于在VXI、GPIB和串行总线上传输命令;IVI基金会(Interchangeable Virtual Instrument Fundation)制定的IVI规范,比VPP规范又向前迈进了一步,这一可互换式虚拟仪器规范给出的驱动程序结构模型IVI模型,在没有增加系统资源操作复杂性的前提下,把互操作性的概念推广到仪器级,成为开发虚拟仪器驱动程序的标准规范。,3.3.1 VPP仪器驱动程序,20世纪90年代,随着VXI总线的建立和VXI仪器的发展,程控仪器驱动软件与编程环境的标准化成为测试与仪器领域人们关注的问题。由世界上几十家最有实力的仪器厂商(包括HP,Tek和Recal等公司)联合成立了VXI即插即用系统联盟(VXI Plug&Play Systems Alliance)。作为测试与仪器软件兼容性工业标准发展的第一步,该联盟提出了VXI即插即用(VPP)标准。VPP标准的设计目标是使任何满足该标准的计算机I/O设备、仪器和软件能够一起工作,实现多个系统供应商提供的软件和软件产品的互操作性,为用户提供一体化测试与测量系统解决方案。,1.VPP主要规范内容,VPP规范包括VPP1VPP10等十几个规范VPP-1 联盟章程文件VPP-2 系统框架技术规范,规定了DOS,WIN(dows)等五种构架平台VPP-3.1 仪器驱动器结构和设计技术规范 VPP-3.2 仪器驱动函数体技术规范 VPP-3.3 仪器驱动器交互式开发者接口技术规范 VPP-3.4 仪器驱动器编程开发者接口技术规范 VPP-4.1 VISA-1虚拟仪器软件结构规范 VPP-4.2.1 VISA-2虚拟仪器软件结构转换库规范,VPP规范,VPP-4.2.2 VISA-2虚拟仪器软件结构转换库(VTL)对于WTL构架的执行规范 VPP-4.3.1 VISA库 VPP-4.3.2 VISA文本语言实现规范 VPP-4.3.3 VISA G语言实现规范 VPP-5.VXI部件知识库技术规范 VPP-6 安装和包装技术规范 VPP-7 软面板技术规范 VPP-8 VXI模块/主机箱与连接器互连 VPP-9 仪器制造商缩写规则 VPP-10 标志和注册,2.VPP仪器驱动程序的特点,(1)仪器驱动程序一般由仪器供应厂家提供(2)以原代码与预编译库的形式提供驱动程序(3)程序结构化与模块化(4)设计与实现的一致性(5)兼容性与开放性,3.VPP仪器驱动程序的结构模型,为了制定仪器驱动器软件设计和开发标准,VPP联盟提出了两个结构模型。第一个模型是仪器驱动程序外部接口模型,描述了仪器驱动程序与系统其他软件的接口。第二个模型是仪器驱动程序内部设计模型,描述了仪器驱动程序软件模块的内部组建结构,该结构与具体的仪器驱动程序开发工具无关。,仪器驱动程序外部接口模型,仪器驱动程序由一系列软件模块组成,这些软件模块和整个系统里的其他软件进行交互,一方面和具体仪器通信;另一方面和更高层的软件或使用仪器驱动程序的用户通信。,仪器驱动程序内部设计模型,4.仪器驱动程序的函数体规范,所有VPP仪器驱动程序文件和必备函数名称都有一个规范化的前缀。该前缀以VPP-9规范定义的仪器厂商的两个缩写字符开头,再加上仪器型号的描述字符组成。例如,Tektronix公司的VX4750模块化的仪器驱动程序ANSI.C源文件名为tkvx4750.C,由Tektronix的缩写字符“tk”与模块名称“vx4750”组合而成。为了方便起见,以下都用PREFIX来表示该前缀。,仪器驱动程序的必备函数,初始化函数初始化函数用于建立与仪器的通信连接。ANSI C联编的初始化函数原型为:ViStatus VI_FUNC PREFIX_init(ViRsrc rsrcName,ViBoolean id_query,ViBoolean reset_instr,ViPSession vi);Visual Basic联编的初始化函数原型为:Declare Function PREFIX_init Lib PREFIX.dll(ByVal rsrcName As string,ByVal id_query As Integer,ByVail reset_instr As Integer,vi As Long)As Long,初始化函数的参数与返回值表,复位函数,复位函数用于将仪器置于默认状态。ANSI C联编的复位函数原型为:ViStatus_VI_FUNC PREFIX_reset(ViSession vi);Visual Basic联编的复位函数原型为:Declare Function PREFIX_reset Lib PREFIX.dll(ByVal vi As Long)As Long复位函数的参数与返回值表:,自检函数,自检函数实现仪器的自检并返回自检结果。ANSI C联编的自检函数原型为:ViStatus_VI_FUNC PREFIX_self_ test(ViSession Vi,ViInt16 test_result,ViChar_VI_FAR test_message);Visual Basic联编的自检函数原型为:Declare Function PREFIX_self_test Lib PREFIX.dll(ByVal vi As Long,test_result Long,ByVal test_merrage As String)As Long,自检函数的参数与返回值表,错误查询函数,错误查询函数对仪器进行查询并返回与仪器相关的错误信息。ANSI C联编的错误查询函数原型为:ViStatus_VI_FUNC PREFIX_error_query(ViSession vi,ViInt32 error_code,ViChar_VI_FAR error_message);Visual Basic联编的错误查询函数原型为:Declare Function PREFIX_error_query Lib PREFIX.dll(ByVal vi As Long,error_code As Long,ByVal error_merrage As String)As Long,错误查询函数的参数与返回值表,错误消息函数,错误消息函数将仪器驱动程序函数返回的错误代码转换为用户可读的字符串。ANSI C联编的错误消息函数原型为:ViStatus_VI_FUNC PREFIX_error_message(ViSession vi,ViStatus status_code,ViChar_VI_FAR message);Visual Basic联编的错误消息函数原型为:Declare Function PREFIX_error_message Lib PREFIX.dll(ByVal vi As Long,ByVal status_code As Long,ByVal merrage As String)As Long,错误消息函数的参数与返回值表,版本查询函数,版本查询函数返回仪器驱动程序和仪器固件的版本号。如果仪器不支持固件版本查询,版本查询函数将在输出参数instr_rev中返回字符串“Not Available”,并返回警告代码VI_WARN_NSUP_REV_QUE。ANSI C联编的版本查询函数原型为:ViStatus_VI_FUNC PREFIX_revision_query(ViSession vi,ViChar_VI_FAR driver_rev,ViChar_VI_FAR instr_rev);Visual Basic联编的版本查询函数原型为:Declare Function PREFIX_revision_query Lib PREFIX.dll(ByVal vi As Long,ByVal driver_rev As String,ByVal instr_rev As String)As Long,版本查询函数的参数与返回值表,关闭函数,关闭函数终止与仪器的软件连接,并释放与该仪器相关的系统资源。ANSI C联编的关闭函数原型为:ViStatus_VI_FUNC PREFIX_close(ViSession vi);Visual Basic联编的版本查询函数原型为:Declare Function PREFIX_close Lib PREFIX.dll(ByVal vi As Long)As Long关闭函数的参数与返回值表:,5.VPP仪器驱动程序的设计方法,(1)应确定需要研制的仪器模块的类型,确定其属于VXI仪器、GPIB仪器还是串行接口仪器。(2)应确定仪器模块的应用目标及功能指标。(3)在基本清楚了设计目标之后,应选择虚拟仪器系统的系统框架,确定模块设计的软、硬件环境。(4)应选择一个可作参考的现有的VPP仪器驱动程序,尽量在现有的仪器驱动程序基础上进行设计,不必要从头开始进行重复劳动。(5)在对应参考模块的研究基础上,确定仪器驱动程序应包括的功能函数,也即仪器驱动程序的内部设计模型。(6)将所定义的所有功能函数用C语言实现。(7)在图形化平台上运行调试仪器驱动程序。(8)编写仪器驱动程序相关文件。,3.3.2 IVI仪器驱动器,1998年美国NI公司最先提出了一种新的基于状态管理的仪器驱动器体系结构,即可互换虚拟仪器驱动器(Interchangeable Virtual Instruments,IVI)模型和规范,并开发了基于虚拟仪器软件平台的IVI驱动程序库。IVI是在VPP技术上发展而来的一项新技术,主要研究仪器驱动器的互换性,测试性能,开发灵活性及测试品质保证,其特有的状态管理结构,可以不重新优化设计硬件系统,在现有测试系统的基础上,从测试系统软件结构出发,消除测试冗余,提高测试速度。,1.IVI的技术特点,1)通过仪器的可互换性,节省测试系统的开发费用2)通过状态缓冲,改善测试性能 在IVI属性模型中,驱动器能够自动地对仪器的当前状态进行缓冲。3)通过仿真,使测试开发更容易、更经济 利用IVI仪器驱动器的仿真功能,用户可以在仪器还不能用的条件下,输入所需参数来仿真特定的环境,就像仪器已被连接好一样,处理所有输入参数,进行越界检查和越界处理,返回仿真数据。,IVI仪器驱动器分类,仪器测试界在1998年9月成立了IVI(Interchangeable Virtnal Instrument)基金会。目前,IVI基金会已经制订了8类仪器规范:示波器(IVISCope)数字多用表(IVIDmm)信号发生器(IVIFGen)开关矩阵/多路复用器(IVISwitch)电源(IVIPower)功率表(IVIPwrmeter)频谱分析仪(IVISpecan)射频信号发生器(IVIRfsiggen),2.IVI规范及体系结构,从图中可以看出,IVI驱动程序比VPP联盟制订的VISA规范更高一层。它扩展了VPP仪器驱动程序的标准,并加上了仪器的可互换性、仿真和状态缓存等特点,使得仪器厂商可以继续使用它们的仪器特征和新增功能。因此IVI基金会是对VPP系统联盟的一个很好的补充。,3.仪器互换性的实现,测试程序,IVI数字万用表(DMM)类驱动器(IviDmm_Configure),HP34401特定仪器驱动器(hp34401_Configure),FLUKE45特定仪器驱动器(fl45_Configure),类驱动器需将测试程序中对它的函数调用映射到具体的特定仪器驱动器中相应的函数上,而具体的特定仪器是根据需要可随时更改的,即类驱动器中不能出现具体的特定仪器前缀,为实现互换性,类驱动器只能采用动态链接库的显示调用方式来实现。,本章结束,Thank You!,