VISA, Virtual Instrument Software Architecture — широко используемый стандартизированный[1] интерфейс ввода-вывода в области тестирования и измерений для управления приборами с персонального компьютера. Поддерживает интерфейсы IEEE-488 (GPIB), VXI, RS-232, а также USB для измерительных устройств[2]. Реализация VISA (например, NI VISA) представляет собой библиотеку функций для языков C, Visual Basic и G, которые унифицируют доступ ко всем измерительным устройствам, независимо от используемого протокола и аппаратуры (например, независимо от модели GPIB-адаптера).
Интерфейс VISA предполагает общение с прибором в форме «запрос-ответ»[3]. Компьютер отправляет специфичную для конкретного прибора команду-запрос (например, требование выполнить измерение физической величины) и ждёт ответа (например, отчёт о состоянии или результаты измерений) от прибора. Интерфейс также поддерживает специфичные для шины особенности, например, при работе с GPIB общение может также быть инициировано прибором с помощью прерывания, а для RS-232 можно конфигурировать битрейт, количество битов в кадре данных и т. д.
VISA был разработан компанией National Instruments в середине 1990-х для автоматизации измерений с помощью так называемых «виртуальных приборов» (VI). Используется в основном в таких программных продуктах компании, как LabVIEW, LabWindows и Measurement Studio. Несмотря на то, что интерфейс VISA стандартизирован, наиболее часто используется проприетарная реализация от National Instruments. Эта библиотека может быть бесплатно скачана с сайта компании после регистрации, есть версии для Linux, Mac OS, Windows. В комплект с библиотекой включены также несколько программных инструментов, например, NI Spy — программа для протоколирования обращений к библиотеке NI VISA.
PyVISA
правитьPyVISA — это обёртка для библиотеки NI VISA, предоставляющая интерфейс для языка программирования Python. Авторы библиотеки Torsten Bronger, Ахен, Германия и Gregor Thalhammer, Иннсбрук, Австрия; издана по свободной лицензии MIT. Библиотека позволяет использовать всё удобство и гибкость высокоуровневого языка программирования Python для быстрой разработки систем сбора и обработки данных с измерительного оборудования в научной лаборатории.
PyVISA предоставляет высокоуровневые функции для опроса приборов и работы с массивами данных.
Пример использования
правитьНиже приведён пример использования PyVISA для получения спектра и измерения мощности лазерного излучения, приходящего в оптический спектроанализатор Agilent 86142.
Прежде всего, нужно импортировать библиотеку PyVISA (в коде именуется visa). Для каждого инструмента создаётся класс instrument, в котором есть методы для чтения/отправки данных (read, write, ask, ask_for_values…).
import visa
visa.get_instrument_list() # Просмотр всех доступных инструментов
OSA = visa.instrument("GPIB::02::INSTR")
Опрос и идентификация прибора с использованием стандартной команды SCPI «*IDN?»
OSA.ask("*IDN?") # Вернёт модель прибора с адресом GPIB::02
OSA.timeout = 40 # Ответ от прибора ожидается до 40 секунд
Получение текущего спектра в виде массива в переменную trace:
OSA.write("CALC1:AVER:STAT ON") # Включаем усреднение измерений
OSA.write("CALC1:AVER:COUN 9") # Усреднение производится по 9-ти спектрам
OSA.ask("INIT; *OPC?") # Запускаем измерение и ждём его окончания, после чего прибор вернёт "+1"
trace = OSA.ask_for_values("TRACE? TRA") # Получаем спектр в переменную trace
Установка маркера мощности на спектр и опрос его значения:
OSA.write("CALC:MARK1:MAX") # Устанавливаем маркер на пик в спектре
power = OSA.ask("CALC:MARK1:Y?") # Считываем значение мощности лазера
wl = OSA.ask("CALC:MARK1:X?") # Считываем длину волны лазера
См. также
правитьПримечания
править- ↑ "VISA Specification". IVI Foundation. Архивировано 30 января 2016. Дата обращения: 19 июля 2012.
- ↑ "USB Test & Measurement Class Specification". USB Implementers Forum Inc. Архивировано из оригинала 26 марта 2010.
- ↑ Следует отметить, что интерфейс VISA основан на передаче команд и не работает с устройствами сбора данных (АЦП), работающими по протоколу DAQ и производным от него, так как DAQ предполагает единовременное конфигурирование АЦП и затем непрерывную передачу потока с результатами измерений в компьютерную программу.
Ссылки
править- Сайт проекта PyVISA (англ.)
- Руководство по PyVISA (англ.)