基于NI VlSA的仪器驱动设计
扫描二维码
随时随地手机看文章
特别是在仪器控制方面,NIVISA提供了方便的图形化编程节点,可以让用户很快的根据自己所需仪器的特点编写相应的仪器驱动,然后在LabVIEW开发环境中调用这些驱动,编写需要的应用程序,从而方便快捷的完成计算机对仪器的控制以及计算机与仪器之间的通信。
VlSA简介
计算机与仪器通信的实现是仪器发展史的一个里程碑。可编程地控制仪器给仪器控制领域到来了极大的改进和灵活性,并且可以不再依赖于具体的人工操作。LabVIEW开发环境提供了强有力的编程支持,这就使得测试系统的主要任务转移到计算机与仪器连接的接口和总线问题上。这就需要一个既可以表示接口特性又可以详细表示仪器性能的软件体系,而且这个软件体系应具有很好的通用性。VISA驱动很好地满足了这些需求。VISAAPI(Application Programming Interface,应用编程接口)可以通用于基于Ethernet,GPIB,GPIB—VXI,VXI,PXI和串口等多种总线的测试系统,使用者不必再研究各个接口总线特定的API。
作为仪器I/O函数库,VISA编程与传统的I/0软件编程基本相同,主要是通过设备的端口读写操作和属性控制,实现与仪器的命令与数据交换。VISA函数按照功能基本上可以分为基本I,0、格式化I/O、内存I/O、资源管理、共享内存管理、事件处理和属性控制等几大类。用户可以在VISA中利用SCPI命令来控制基于消息基的仪器和带有SCPI命令翻译节点的基于寄存器级的仪器,对于不接收SCPI命令的仪器,也可以通过使用VISA的寄存器读写节点直接访问仪器的底层寄存器的方法来实现对仪器的控制。VISA函数库中的函数以VISA节点的形式出现。
VISA节点位于AllFunction>>Instrument I/O>>VISA目录下, 基本的VISA节点有:VISA Write、VISARead、VISAClear、VISA Read STB.VISA Asserlt Trigger。
高级节点包含更多的函数:VISA Open(打开一个仪器资源),VISA Close(关闭一个一个资源),VIsA Find Resource(寻找VISA资源),VIsA write FromFile,VISA Read to File,VISALock Analy,VISA Unlock(VISA解锁),VISA Status I)escription(状态描述),VISA Set.Timeout,Property Node(属性节点)以及Interface Specific(指定接口)子模板、Event Handling(事件处理)子模板、High Level RegisterAccess(高级寄存器读写)子模板、Low Level Register Access(低级寄存器读写)子模板等几个部分。LabVIEw的帮助文档给出了这些VISA节点的具体用法和详细介绍。
1673G系列逻辑分析仪
1673G具有34通道的逻辑分析系统,150MHz状态速率,500MHz定时速率,64k标准采集内存,使用选项001(选项001表示当前使用的是系统级的命令)时256k内存,使用选项002(选项002表示当前使用的是选件逻辑分析仪)时2M内存。选项003(选项003表示当前使用的是选件示波器)示波器:2通道,500MHz,2GSa/s,32k内存;选项004码型发生器:32通道,100M矢量/秒,256k矢量深。1673G具有2GB硬驱和l-44 MB:DOS软驱;配有VGA分辨率的彩色平板显示器,帮助用户迅速找到信息;可以选择鼠标操作或前面板操作,使用简便设计良好的用户界面;支持可选的PC式键盘;支持ASCII数据和PCX/TIFF/EPS屏幕快照等文件格式,配有Centronics打印机端口,GPIB和RS-232编程能力;可以通过x-windows实现局域网远程操作,通过FTP/NFs实现数据传送;提供23种预先定义的触发功能,支持图形表示和普通语言描述,简便地设置强大的测量功能。
驱动设计
仪器驱动是用来控制可编程仪器的一组函数的集合,包含对仪器的各种操作:配置,读出、写入和触发等。仪器驱动函数的工作流程是:读取前面板上对仪器的控制命令一把命令格式化为仪器能够解析的命令字符串→读取仪器返回的响应结果→根据读取的结果更新前面板上的显示。仪器驱动已具有交互性,可编程性和通用性。仪器驱动一般通用于某一类的仪器。对于某个仪器的特殊的性能,则另外编写相应的函数。
仪器驱动包含两大类的VIs,一类是组件VIs(componentVIs),一个函数控制仪器的一个特定的功能,另一类是高级的应用函数VIs(Application vIs),一个函数由多个组件vIs组合而成,实现仪器的一个基本的测试或测量操作。其设计模型如图1所示。
应用函数VI位于仪器驱动层次的最高级,通过调用组件级的VI来实现一般的仪器配置和测试操作。用户只调用这些高级应用VIs就可以实现单一的面向测量的仪器接口。
组件vIs是较低级的仪器驱动函数。组件VIs是模块化的VIs,它们包含了仪器所有的配置和测量功能,共分为六类:初始化(Initialize),配置(Configuration),操作和状态(Action/Status), 数据(data),功能(Utilitv)和结束(Close)。组件VIs与仪器的具体功能有关。在设计仪器驱动时,根据仪器的功能将相应的指令归类。
要对逻辑分析仪1673G编写仪器驱动,首先熟练仪器的操作,研究其指令系统,然后确定要实现的VIs。表l给出了选件003示波器要实现的vIs。
1673G的指令包括普通的SCPI命令,系统级的设置和配置命令,以及针对各个选件 (逻辑分析仪,示波器和码型产生器)的命令。文中的驱动主要针对逻辑分析仪和示波器进行编写,预达到可以对逻辑分析仪和示波器进行仪器控制,并且可以得到逻辑分析仪和示波器的采集数据,可以得到示波器的测量数据。
以实现初始化函数AGl673GInitialize.vi为例, 先用VISAOPEN节点打开一个仪器的Session,然后调用propertv nodtj识别仪器的接口类型,建立计算机与仪器之间的通信。然后调用VIsA write向仪器发出%IDN?命令,接着调用vIsA 0PEN读取仪器的响应结果,对读取到的字符串进行分析,与仪器的标识符进行比较,若结果正确就输出dupVIsA Session供以后的函数节点调用。程序调试成功后把程序制作成sutVI以备调用。具体流程如图2所示。
然后根据表1的命令分类,依据各种命令的功能,组合成各种(20mponent VIs和ApplicatioVIs功能,然后同上的方法调用VISA节点和LahvIEw对字符串和数据、数组之间转换的节点(VI模板)编写所有的驱动VI,并且在最后形成一个VI树。VI树中应包含仪器驱动所有的V!,如图3所示。
基于VISA仪器驱动的设计基本步骤:熟悉仪器的操作,熟悉仪器的变成指令,确定要实现的VIs,形成仪器驱动的设计框架;调用VISA节点实现组件VIs,并在组件VIs的基础上实现需要的应用VIs;把仪器驱动中的VI制作成subVI以方便用户调用;描述各个VI的功能和连接线用法。
文中的仪器驱动成功实现了计算机对安捷伦1673G的控制,并且可以把仪器采集到的数据读人计算机中,利用LabVIEW强大的分析功能进行数据分析。而且文中使用的驱动制作方法适用于其他支持的VISA的仪器。