VISA , Virtual Instrument Software Architecture , es una interfaz de E/S de prueba y medición estandarizada [1] ampliamente utilizada para controlar instrumentos desde una computadora personal. Admite interfaces IEEE-488 (GPIB), VXI , RS-232 y USB para dispositivos de medición [2] . Una implementación de VISA (por ejemplo, NI VISA) es una biblioteca de funciones para C , Visual Basic y G que unifica el acceso a todos los dispositivos de medición, independientemente del protocolo y el hardware utilizado (por ejemplo, independientemente del modelo de adaptador GPIB).
La interfaz VISA implica la comunicación con el dispositivo en forma de "solicitud-respuesta" [3] . La computadora envía un comando de solicitud específico del dispositivo (por ejemplo, una solicitud para realizar una medición de una cantidad física) y espera una respuesta (por ejemplo, un informe de estado o resultados de medición) del dispositivo. La interfaz también admite funciones específicas del bus, por ejemplo, cuando se trabaja con GPIB, el dispositivo también puede iniciar la comunicación mediante una interrupción , y para RS-232, puede configurar la tasa de bits , la cantidad de bits en el marco de datos , etc.
VISA fue desarrollado por National Instruments a mediados de la década de 1990 para automatizar las mediciones utilizando los llamados " instrumentos virtuales " (VI). Se utiliza principalmente en los productos de software de la empresa, como LabVIEW , LabWindows y Measurement Studio. Aunque la interfaz VISA está estandarizada, la implementación propietaria más utilizada es la de National Instruments. Esta biblioteca se puede descargar de forma gratuita desde el sitio web de la empresa después del registro, hay versiones para Linux , Mac OS , Windows . El paquete de la biblioteca también incluye varias herramientas de software, como NI Spy , un programa para registrar el acceso a la biblioteca NI VISA.
PyVISA es un contenedor para la biblioteca NI VISA que proporciona una interfaz para el lenguaje de programación Python . Autores Biblioteca Torsten Bronger, Aquisgrán , Alemania y Gregor Thalhammer, Innsbruck , Austria ; publicado bajo la licencia libre MIT . La biblioteca le permite utilizar toda la comodidad y flexibilidad del lenguaje de programación Python de alto nivel para el rápido desarrollo de sistemas para recopilar y procesar datos de equipos de medición en un laboratorio científico.
PyVISA proporciona funciones de alto nivel para interrogar dispositivos y trabajar con matrices de datos.
A continuación se muestra un ejemplo del uso de PyVISA para adquirir el espectro y medir la potencia de la radiación láser que ingresa al analizador de espectro óptico Agilent 86142 .
En primer lugar, debe importar la biblioteca PyVISA (llamada visa en el código ). Para cada instrumento, se crea una clase de instrumento , que tiene métodos para leer/enviar datos ( read , write , ask , ask_for_values ...).
visa visa de importación . get_instrument_list () # Ver todos los instrumentos disponibles OSA = visa . instrumento ( "GPIB::02::INSTR" )Interrogue e identifique el instrumento usando el estándar SCPI "*IDN?"
AOS . ask ( "*IDN?" ) # Devuelve el modelo del dispositivo con la dirección GPIB::02 OSA . timeout = 40 # Esperando hasta 40 segundos por una respuesta del dispositivoObtener el espectro actual como una matriz en la variable de seguimiento:
AOS . write ( "CALC1:AVER:STAT ON" ) # Habilitar el promedio de medición de OSA . write ( "CALC1:AVER:COUN 9" ) # El promedio se realiza sobre 9 espectros OSA . ask ( "INIT; *OPC?" ) # Inicie la medición y espere a que finalice, después de lo cual el dispositivo devolverá "+1" trace = OSA . ask_for_values ( "TRACE? TRA" ) # Obtener el espectro en la variable de seguimientoEstablecer un marcador de potencia en un espectro y sondear su valor:
AOS . write ( "CALC:MARK1:MAX" ) # Establecer el marcador en un pico en el espectro de potencia = OSA . ask ( "CALC:MARK1:Y?" ) # Lee el valor de potencia del láser wl = OSA . ask ( "CALC:MARK1:X?" ) # Leer la longitud de onda del láser