NI VISA概述

VISA是什么

VISA的全称是Virtual Instrument Software Architecture API,也就是一个虚拟的仪器设备编程接口。通过NI-VISA可以非常方便的实现与GPIB,USB, 串口, 以太网总线进行交互。

历史渊源

因为不同的厂商往往有各自不同的专注领域,工程师在进行一些测试时,为了满足不同的测试需要,往往会用到很多不同厂商的设备。而为了设备控制的统一,这些仪器一般都支持统一的SCPI控制指令。

尽管有一个统一的SCPI指令标准,实际还是还是很难实现对所有不同厂商设备的控制,为了解决这一问题,NI联合其它设备厂商又制定了一个VXI标准,这五标准致力于解决不同设备之前的接口标准,而NI-VISA就是在这一标准上发展而来的。

VISA的优势

VISA的一个显著优势就是程序同设备交互的时候会经过一个虚拟的中间层,也就是说程序并不需要知道它写的是一个什么样的接口,只是向一个虚拟成字符设备的接口写入字符命令就可以了,VISA的虚拟层会去执行和设备特定接口的交互,比如GPIB, 串口或者以太网, 这样程序开发完成之后也可以非常方便的更换数据交互接口。

另外,VISA通过自己定义数据类型,从而可以非常方便的实现不同平台的移植。VISA本身接口定义也非常简单,可以在短时间内快速开发。

VISA的相关术语

VISA中一个非常重要的术语是resource,一个resource指向一个特定的设备,它并不关心特定的接口,如果在GPIB总线上有多个设备,那么每个设备都有一个单独的resouce名称。

resouce实际是一个设备描述符,里面包含设备的接口信息(GPIB, Serial, USB), 设备的逻辑地址或者设定的首选地址,VISA的对话类型(INSTR, Event, INTFC)。在使用过程中,可以在NI-MAX中对设备设置别名,比如给GPIB0::3::INSTR设置一个Function Generator的别名,这样以后就可以通过别名引用设备,从而使得程序更加易于阅读。

VISA编程的一般步骤

一个典型的VISA设备控制程序一般有以下几步:

  1. 根据指定的resouce名称打开一个VISA对话;
  2. 进行必要的配置,比如串口的波特率、终止符等等;
  3. 对设备进行写入或者读取操作;
  4. 关闭VISA对话;
  5. 如果出现错误,进行必要的错误处理。
    下图就是一个"IDN?\n"查询的一个过程。

一般处理流程

另外VISA也支持C++, Python等编程语言的接口。

总结

总的来说VISA是为了简化和仪器通信而制定的一个API接口,可以非常方便的实现程序的移植,对于程序的开发效率也有非常大的提升。

发表新评论