Control de instrumentos seriales, GPIB y VXI con Measurement Studio VISA

Información general

Puede configurar y controlar instrumentos seriales, GPIB y VXI a través de una única interfaz: VISA, la interfaz de programación de aplicaciones (API) de la arquitectura de software de instrumentos virtuales. Es un controlador de alto nivel que llama a los controladores de nivel inferior para cada instrumento. En esta nota de aplicación se presenta VISA y se explica cómo aprovechar VISA utilizando el control ActiveX de Measurement Studio VISA (CWVISA) en Visual Basic para realizar el control instrumental con instrumentos seriales, GPIB y VXI, con una única interfaz de programación.

  • Nota



Contenido

¿Qué es VISA?

VISA es una arquitectura de software de controladores desarrollada por NI para unificar la comunicación con instrumentos seriales, GPIB y VXI y simplificar sus programas de control de instrumentos. La API de VISA accede a instrumentos seriales, GPIB y VXI a través de llamadas al sistema operativo y el software controlador NI-488.2 y NI-VXI, como se muestra en la Figura 1.


Figura 1. Estructura de VISA


VISA ofrece los siguientes beneficios:

  • Independencia de interfaz, por la cual VISA utiliza los mismos métodos para comunicarse con instrumentos, independientemente del tipo de interfaz. Por ejemplo, el comando VISA para escribir una secuencia ASCII a un instrumento basado en mensajes, es la misma ya sea que el instrumento sea serial, GPIB o VXI. Con esta función, puede usar una sola API para trabajar con diferentes instrumentos.
  • Una arquitectura orientada a objetos que puede adaptarse fácilmente a las nuevas interfaces de instrumentación a medida que se desarrollen en el futuro. Puede incluir fácilmente nuevas interfaces.

Funcionalidad incorporada para la programación de instrumentación en un conjunto de comandos muy compacto.

¿Qué es CWVISA?


CWVISA es un control ActiveX que abstrae la API de VISA, para que pueda interactuar con instrumentos seriales, GPIB y VXI a través de páginas de propiedades interactivas y una API simplificada. Por ejemplo, utilice las páginas de propiedades de CWVISA para encontrar y comunicarse interactivamente con sus instrumentos, descubrir problemas de interfaz o verificar la comunicación con su instrumento durante el tiempo de diseño. Puede utilizar el control ActiveX de VISA en cualquier contenedor de control ActiveX, incluidos Microsoft Visual Basic, Visual C++ y Borland Delphi.

Sugerencia: Consulte la Referencia Measurement Studio para obtener más información sobre Measurement Studio o el control CWVISA. Puede iniciar la referencia desde el menú Inicio de Windows.

¿Cómo puedo usar CWVISA?

 

Comience colocando el control CWVISA en el formulario de interfaz de usuario. Tenga en cuenta que Visual Basic nombra este control CWVisa1. Haga clic con el botón derecho en el control y seleccione Properties. El resto de esta nota de aplicación explica cómo usar las páginas de propiedades para seleccionar las propiedades de recursos y comunicación, probar la comunicación y analizar los datos del instrumento, así como cómo controlar la comunicación mediante programación a través de la API simplificada.


Determinación del nombre del recurso del instrumento

Un recurso es el instrumento o controlador serial, GPIB o VXI con el que desea comunicarse. El nombre del recurso especifica el nombre exacto y la ubicación del recurso VISA. Por ejemplo, el nombre del recurso ASRL1::INSTR describe el instrumento en el puerto COM 1 de su computadora, y GPIB0::13::INSTR, mostrado en la Figura 2, describe un instrumento GPIB en la dirección 13.


Figura 2. Selección de un instrumento de la página de propiedades generales


El primer desafío en la interacción con un instrumento es a menudo determinar su dirección y nombre del recurso. CWVISA busca en su PC todos los puertos COM disponibles y los instrumentos GPIB y VXI activos; incluye todos los recursos disponibles en la lista de Nombre del recurso. Si conoce el nombre del recurso del instrumento con el que desea comunicarse o desea cambiar el recurso durante el tiempo de ejecución, especifique el nombre del recurso mediante programación, como en la siguiente línea de código:

CWVisa1.RsrcName = "GPIB::13::INSTR"

Configuración de ajustes de lectura y escritura

Configure los siguientes ajustes generales de interfaz y comunicación en la página de propiedades de RdWrt. La Figura 3 muestra una forma en que puede configurar los ajustes de comunicación.


Figura 3. Configuración de la configuración general de comunicación con la página de propiedades RdWrt
Nota: Las páginas de propiedades y las opciones de propiedades son sensibles al contexto; es decir, las opciones disponibles dependen del tipo de instrumento con el que se intenta comunicar.

Protocolo de E/S Serie: seleccione Normal o ASRL488. Utilice la configuración ASRL488 si su instrumento serie acepta comandos de estilo 488.2. Con la configuración ASRL488, puede comunicarse con su instrumento como lo haría con cualquier otro dispositivo basado en mensajes, como en el siguiente ejemplo:

Estado tenue como variante

'Establecer la transferencia de datos del protocolo de E/S ASRL488
CWVisa1.RdWrt.IOProtocolo = cwvisaProtocoloASRL488

'Dispositivo claro
CWVisa1.Clear

'Escribe "*IDN?" en el instrumento
CWVisa1.Write "*IDN?"

'Obtener el valor de sondeo en serie (byte de estado)
estado = CWVisa1.ReadSTB

'Leer y mostrar la respuesta en un cuadro de texto en la interfaz de usuario
Text1.Text = CWVisa1.Read

Protocolo de E/S GPIB: seleccione Normal para la comunicación normal IEEE488, o bien HS488 para la transferencia de datos a alta velocidad 488.

Protocolo de E/S VXI -- Para la mayoría de los instrumentos VXI, seleccione Normal. Unos pocos instrumentos soportan la E/S FDC (Fast Data Channel).

Nota: Consulte la documentación de su instrumento o controlador para determinar protocolos de E/S aceptables.

Swap Bytes invierte los bytes del dispositivo. Active esta opción si su dispositivo es Big Endian. Consulte la documentación de su dispositivo para determinar si el instrumento devuelve datos en formato Big Endian.

'Formato Big Endian (el byte más significativo primero)
CWGPIB1.SwapBytes = Verdadero

Termination Char especifica el carácter que desea utilizar para finalizar las operaciones de lectura. Consulte la documentación de su instrumento para determinar si necesita usar un carácter de terminación y cuál debe ser ese carácter de terminación.

'Utilizar el carácter de retorno del carro como carácter de terminación
CWVisa1.RdWrt.TerminationCharacter = 13

'Habilitar el uso de caracteres de terminación
CWVisa1.RdWrt.TerminationCharacterEnable = True

Configuración de ajustes de interfaz

Si se está comunicando con instrumentos seriales o VXI, debe establecer algunas propiedades de interfaz adicionales.

Comunicación serie: utilice la página de propiedades serie para establecer la velocidad de transmisión de baudios, los bits de datos, los bits de detención y el método de control de flujo, como se muestra en la figura 4, o establezca las propiedades serie mediante programación, como en los siguientes ejemplos:

CWVisa1.Asrl.BaudRate = 9600
CWVisa1.Asrl.DataBits = cwasrlDataBits8
CWVisa1.Asrl.StopBits = cwasrlStopBits1
CWVisa1.Asrl.FlowControl = cwasrlFlowNinguno


Figura 4. Configuración de la interfaz serie con la página de propiedades serie


Comunicación VXI: utilice la página de propiedades Memoria VXI para establecer las propiedades relacionadas con el acceso al registro VXI. Los instrumentos basados en registros tienen dispositivos procesadores llamados registros para almacenar temporalmente datos durante el procesamiento. Las propiedades de origen y destino se aplican a las operaciones de acceso a registros de alto nivel, mientras que las propiedades de ventana se aplican al acceso a registros de bajo nivel. Especifique el privilegio de acceso VME con la propiedad Access Priv. y utilice Address Incr. para incrementar la dirección de destino en 1 después de cada transferencia utilizando los métodos MoveIn o MoveOut.

La Figura 5 muestra una forma en que puede transferir datos con un instrumento VXI.


Figura 5. Uso de la página de propiedades de memoria VXI para establecer propiedades de acceso al registro VXI


Puede establecer estas mismas propiedades de comunicación mediante programación. El siguiente ejemplo configura el control CWVisa1 para acceder a una FIFO (dirección no incremental):

Priv de acceso de origen a datos privilegiados

CWVisa1.VxiMemory.SrcAccessPriv = cwVxiMemoryDataPriv
«Byte Order to Big Endian
CWVisa1.VxiMemory.SrcByteOrder = cwVxiMemoryBigEndian
"Address Incr. to 0
CWVisa1.VxiMemory.SrcIncrement = 0

Comunicación del instrumento de ensayo

Measurement Studio hace que sea fácil probar la comunicación para que pueda verificar que su instrumento está funcionando.

1. Abra la página de propiedades Test. Desde esta página de propiedades, puede escribir y leer comandos basados en mensajes. Todos los instrumentos seriales y GPIB y muchos instrumentos VXI reconocen una variedad de cadenas de comandos basadas en mensajes.

2. Escriba un comando en el campo Enviar cadena, como la consulta de identificación *idn?. Consulte la documentación de su instrumento para determinar qué cadenas basadas en mensajes reconoce.

Nota: No todos los instrumentos y controladores VXI utilizan la comunicación basada en mensajes. Si su dispositivo VXI no acepta comandos basados en mensajes, utilice el acceso al registro en su lugar. Consulte la sección Transferencia de datos para obtener información sobre la comunicación basada en mensajes y registros.

3. Pulse Ejecutar. Observe la respuesta que aparece en el indicador Cadena recibida. La Figura 6 muestra la respuesta recibida de un simulador de dispositivo serie y NI GPIB. También puede presionar Write para escribir datos en el instrumento y Read para leer la respuesta del instrumento.


Figura 6. Uso de la página de propiedades de prueba para leer y escribir desde un instrumento


Abrir una sesión de VISADO

Abra una sesión y comience a comunicarse con el instrumento desde su programa. Una sesión es una conexión o vínculo desde el control CWVISA al recurso, y puede abrir una con el método Abrir. El método Abrir inicializa los recursos y configura la sesión de comunicación VISA con los ajustes que especificó en las páginas de propiedades o mediante programación. Por ejemplo, es posible que desee abrir una sesión de VISA cuando los usuarios hagan clic en un botón Abrir sesión en el panel frontal, como en el siguiente procedimiento de evento:

'Sesión abierta
Private Sub OpenSession_Click()

CWVisa1.Open

End Sub

Transferir datos

CWVISA puede comunicarse con instrumentos y controladores VXI seriales, GPIB y basados en mensajes y registros. Los instrumentos basados en mensajes implementan los registros VXIbus y protocolos de comunicación definidos y reconocen el protocolo serie Word. Todos los instrumentos seriales y GPIB y muchos instrumentos VXI reconocen una variedad de cadenas de comandos basadas en mensajes. Usará un conjunto estándar de llamadas a métodos para escribir y leer desde todos los instrumentos basados en mensajes. El control CWVISA proporciona un conjunto de métodos de acceso a registros que puede utilizar con instrumentos VXI. Para el acceso a registros de alto nivel, utilice los métodos Entrada y Salida. Para acceder a registros de bajo nivel, utilice los métodos Peek y Poke.

E/S síncrona basada en mensajes: utilice los métodos de escritura y lectura para realizar E/S síncrona basada en mensajes. Por ejemplo, el siguiente código envía una consulta de identificación a un instrumento y, a continuación, muestra la respuesta de los instrumentos en un cuadro de texto en la interfaz de usuario:

CWVisa1.Open
CWVisa1.Write "*IDN?" & vbLf
Text1.Text = CWVisa1.Read

E/S asíncrona basada en mensajes: puede usar WriteAsync y ReadAsync para realizar E/S asíncrona para que las operaciones de escritura y lectura comiencen y regresen inmediatamente. Cuando se completa un método ReadAsync, el control CWVISA genera un evento y pasa los datos al procedimiento de eventos DataReady. Cuando finaliza un método WriteAsync, el control CWVISA genera un evento WriteComplete. Puede utilizar estos métodos y eventos asíncronos para continuar ejecutando otras tareas durante operaciones de lectura o escritura prolongadas. Por ejemplo, cuando llama a ReadAsync, su programa termina de leer datos y el control CWVISA genera el evento DataReady, que llama al siguiente procedimiento de evento:

SubCWVisa1_DataReady privada (ByVal taskNumber como número entero, datos como variante)

'Mostrar datos en un cuadro de texto tan pronto como se leen
Text1.Text = datos

End Sub

Métodos de entrada y salida de registros de alto nivel: para leer datos de un registro VXI de alto nivel, utilice los métodos In8, In16 e In32 para leer valores de 8, 16 y 32 bits, como en el siguiente ejemplo:

'Leer un valor de 32 bits del desplazamiento 0 en el espacio A32 en el bus VXI
X = CWVisa1.In32 cwVxiA32Space, 0

Nota: Los métodos In tienen dos parámetros: espacio y desplazamiento. El parámetro offset especifica la dirección en el espacio de direcciones indicado, en relación con la dirección base.

Utilice los métodos Out correspondientes para escribir datos en el desplazamiento especificado, como en el ejemplo siguiente:

'Escribe el valor de 32 bits Y desde el desplazamiento 0 en el espacio local en el bus VXI
CWVisa1.Out32 cwVxiLocalSpace, 0, Y

Sugerencia Si desea mover bloques grandes de datos, utilice los métodos MoveIn y MoveOut y seleccione la propiedad Address Increment para que los datos no se muevan a una sola ubicación (FIFO).

Acceso de registro de bajo nivel con los métodos Peek y Poke - Antes de utilizar los métodos Peek y Poke, asigne una parte del espacio de memoria VXI a la memoria local con el método MapAddress. MapAddress acepta como parámetros el espacio de direcciones, la dirección VXI base, el tamaño de la memoria en bytes y una dirección local sugerida a la que se puede asignar la memoria. El método devuelve la dirección local real a la que se asignó la dirección VXI base especificada. A continuación, utilice los métodos Peek y Poke para leer y escribir datos desde el espacio asignado.

El siguiente código mapea un espacio en la memoria local, mira y pincha el espacio y desmapea el espacio:

'Mapear 16 bytes de memoria en el espacio A16
X = CWVisa1.MapAddress(cwVxiA16Space, &hC000, 64, False, 0)

'Leer el valor de 16 bits al principio del espacio de direcciones
Y = CWVisa1.Peek16(X)

'Escribe el valor de 16 bits 35 en el registro en el segundo byte del espacio de direcciones
CWVisa1.Poke16 X + 2, 35

Libere el espacio en la memoria local
CWVisa1.UnmapAddress

Nota: Utilice el método MapAddress para asignar una región de un espacio de direcciones VXI a la memoria local. Compruebe el tamaño de la ventana asignada y las propiedades de la base de ventanas para asegurarse de no acceder a un área fuera de esta ventana.

Uso de eventos para sincronizar la comunicación

Los eventos proporcionan comunicación entre los recursos de VISA y su programa. Si desea que su programa responda a cualquiera de las siguientes condiciones, defina los procedimientos de evento para el evento apropiado:

  • ServiceRequest: Notifica a tu programa cuando un dispositivo solicita servicio a su controlador. Este evento devuelve el byte de estado que se obtuvo al sondear en serie el dispositivo que generó la solicitud. Este evento es producido principalmente por instrumentos de GPIB que afirman la línea SRQ de GPIB e instrumentos VXI basados en mensajes.
  • Disparador: notifica a su programa cuando un dispositivo afirma una línea de disparo en el backplane VXI. El evento VISA devuelto contiene una propiedad TriggerId que especifica la línea de activación a la que está asociado el evento.
  • VxiSignalProc -- Notifica a su programa cuando un dispositivo afirma una interrupción en el backplane VXI o genera una señal VXI. Cuando se produce una interrupción o señal VXI, el evento VXISignalProc devuelve el valor StatusId. Los ocho bits inferiores del StatusId se establecen en la dirección lógica del instrumento que crea la señal o interrupción.
  • VxiVmeInterrupt - Notifica a su programa cuando un instrumento afirma una interrupción en el backplane VXI. Este evento es similar al evento VxiSignalProc, excepto que se produce solo para interrupciones VXI o VME, no para señales.


El control CWVISA pone en cola los eventos para que pueda acceder a ellos y gestionarlos más tarde. CWVISA llama automáticamente al método EnableEvent en todos los tipos de eventos, excepto en Trigger, cuando se llama a un método Open. Puede usar el método EnableEvent para agregar solo los eventos que desea colocar en la cola de eventos. Por ejemplo, el siguiente código de Visual Basic habilita la puesta en cola de eventos para el evento VxiVmeInterrupt de modo que cuando se produce este evento, se coloca en una cola en lugar de llamar a su procedimiento de evento:

CWVisa1.EnableEvent cwvisaEventVXIVMEInterrumpir

El siguiente código de Visual Basic comprueba la cola de eventos para determinar si un evento VXIVMEInterrupt está en la cola y, si lo está, obtiene el valor StatusId de la interrupción:

Dim ReturnEvent Como CWVisaEvent
Dim stat As Boolean

stat = CWVisa1.WaitOnEvent(cwvisaEventVXIVMEInterrupt, 0, ReturnEvent)
If stat Then

'Mostrar StatusID en un cuadro de texto en la interfaz de usuario
Text1.Text = ReturnEvent.StatusId

Fin Si

Si le preocupan los eventos que ocurren en ciertos puntos del programa, puede vaciar la cola o desactivar la cola de eventos. Para vaciar la cola de todos los eventos del mismo tipo, utilice el método Descartareventos:

CWVisa1.DescartarEventos cwvisaEventoVXIVMEInterrumpir

Para desactivar la colocación de eventos en la cola, utilice el método DisableEvent:

CWVisa1.DisableEvent cwvisaEventVXIVMEInterrumpir

Analizar datos

Los instrumentos son famosos por enviar cadenas binarias crípticas o cadenas que contienen una combinación de información de cabecera y datos. A menudo es frustrante analizar estas cadenas en un formato de datos utilizable. El control CWVISA proporciona un análisis de datos integrado para facilitar el trabajo con datos de instrumentos.

Utilice la página de propiedades Analizar para crear una tarea de análisis. Una tarea de análisis describe cómo desea analizar los datos. Luego ejecuta esta tarea desde su código para analizar automáticamente los datos devueltos desde un instrumento. Puede especificar tantas tareas de análisis como necesite, de modo que pueda analizar cada tipo de interacción con un instrumento de manera diferente.

El control CWVISA proporciona una tarea incorporada llamada Number Parser. El analizador numérico convierte una cadena delimitada en una matriz de números, eliminando encabezados y otra información no numérica. Por ejemplo, supongamos que tiene un instrumento que responde al comando DATA? devolviendo una lista de números separados por comas precedidos por alguna información de encabezado. La cadena puede parecerse a WFM3.246,3.295,4.653,3.334. Sin la tarea Analizador numérico, analizaría la cadena para recuperar cada número representado por ASCII y convertirlo a un tipo numérico real. Con la tarea Analizador numérico, analiza y lee datos con la misma llamada al método. El siguiente código de Visual Basic muestra cómo abrir una sesión de VISA, consultar un instrumento basado en mensajes con el comando Data? y leer los datos analizados:

'Variante mantendrá una matriz de dobles - los datos analizados
Datos tenues como variante
'Abrir una sesión de VISADO
CWVisa1.Open
'¿Escribir datos? en el instrumento
CWVisa1.Write "Data?"
'Leer la respuesta
datos = CWVisa1.Tasks.Item("Number Parser").Leer

Sugerencia: Para obtener información sobre técnicas avanzadas de análisis sintáctico utilizando el control CWVISA, consulte la Nota de aplicación 148, Datos del instrumento de análisis sintáctico en Visual Basic.

Cierre de la sesión de visados

Utilice el método Cerrar para asignar recursos y finalizar la sesión de VISA. En el procedimiento de evento siguiente, la sesión de VISA finaliza cuando los usuarios hacen clic en el botón de comando Cerrar sesión:

'Cerrar la sesión

Private Sub CloseSession_Click()

CWVisa1.Close

End Sub

Conclusión


NI VISA es una solución para el control de diversos instrumentos. Measurement Studio ofrece páginas de propiedades a través de las cuales puede integrar interactivamente el control de instrumentos VISA en su programa. Por ejemplo, el control de CWVISA encuentra todos los recursos de VISA, por lo que solo tiene que seleccionar entre los enumerados. CWVISA ofrece una página de propiedades de prueba para interactuar con instrumentos y solucionar problemas de comunicación. Mediante la página de propiedades Analizar, puede especificar tareas de análisis para que los datos se devuelvan al programa en un formato utilizable. A través de la API VISA de Measurement Studio, puede realizar una comunicación síncrona y asíncrona con instrumentos seriales, GPIB y VXI y utilizar el manejo de eventos y la puesta en cola para acelerar la ejecución de su programa.

Was this information helpful?

Yes

No