Sondeo serial y servicio SRQ con software NI-488.2 y LabVIEW

Información general

Una función de un controlador GPIB es detectar y responder a las solicitudes de servicio de los dispositivos en el bus. La línea de solicitud de servicio (SRQ) en el GPIB está diseñada para indicar al controlador cuando una solicitud de servicio está pendiente. El Controlador debe entonces determinar qué dispositivo afirmó la línea SRQ y responder en consecuencia. El método más común para la detección y el servicio de SRQ es la encuesta en serie. Esta nota de aplicación describe cómo el software NI-488.2 detecta y responde a las solicitudes de servicio de los dispositivos IEEE 488. Además, esta nota de aplicación también incluye ejemplos de código que demuestran cómo implementar las rutinas y funciones de software NI-488.2 en un programa LabVIEW.

Contenido

La necesidad de sondeo en serie: una analogía en aula

La comunicación entre el controlador GPIB y los instrumentos podría compararse con la que existe entre un instructor y los estudiantes en el aula. En el aula, un instructor está a cargo de la clase y controla la actividad. El GPIB funciona de manera similar, donde el Controlador determina cuándo se realizan las tareas. En el aula, un estudiante debe tener permiso para hablar en voz alta, y en el GPIB ningún dispositivo puede comunicarse a menos que se les dirija para hablar en el autobús. Pero, ¿cómo puede un dispositivo hacerle saber al controlador que tiene algo que comunicar si no puede comenzar a hablar con el controlador sin que el controlador le diga que lo haga?

La pregunta se puede interpretar en la analogía del aula como, ¿cómo puede un estudiante hacerle saber al instructor que tiene algo que decir, considerando que el estudiante no puede hablar con el instructor a menos que el instructor lo diga? Un buen método es que el estudiante levante la mano. Del mismo modo, el instrumento puede afirmar una línea de hardware llamada SRQ. Esta es una línea completamente separada en el bus GPIB dedicada a informar al controlador que un dispositivo necesita atención.

¿Por qué un dispositivo necesita solicitar servicio? En algunos casos, un controlador puede solicitar datos de un dispositivo (escribir en el dispositivo) y leer los datos tan pronto como se complete la operación de escritura. Pero esto no es posible en todos los casos. A veces, un controlador puede intentar leer los datos de un instrumento antes de que los datos estén disponibles (un instrumento podría tardar mucho tiempo en generar los datos) y obtener un error de tiempo de espera. Esta situación es similar a la de un profesor que le pide al estudiante la respuesta a un problema antes de que el estudiante pueda terminar el problema. En este caso, el profesor preferirá esperar a que el estudiante levante la mano cada vez que haya completado el problema. Una vez que el estudiante levante la mano, el profesor le pedirá la respuesta. Sin embargo, en el caso de GPIB, debido a que todos los dispositivos comparten la línea SRQ, el controlador no sabe qué dispositivo solicitó el servicio. Se necesita un sondeo en serie para que el controlador pueda averiguar qué dispositivo solicitó atención.

La teoría del sondeo en serie


El sondeo en serie es un método para obtener información específica de los dispositivos GPIB cuando solicitan servicio. Cuando realiza una encuesta en serie, el controlador consulta cada dispositivo, buscando el que afirmó la línea SRQ. Cada dispositivo responde a la encuesta devolviendo el valor del byte de estado contenido en su registro de bytes de estado (véase la figura 1). Las condiciones dependientes del dispositivo, como la presencia de datos disponibles o una condición de error, determinan este valor. El Estándar ANSI/IEEE 488.1-1987 especifica que un bit en el Byte de Estado, el bit RQS (bit 6), será VERDADERO si el dispositivo solicitó servicio. Los otros bits del byte de estado se dejan al fabricante del instrumento para definirlos. Los instrumentos compatibles con IEEE 488.1 pueden tener bits que determinan si se ha producido un error en el instrumento o si el dispositivo está realizando una autoprueba. Debido a que estas definiciones de bits no son consistentes entre los proveedores de instrumentos, el método para determinar la causa de una solicitud de servicio varía con cada dispositivo.


Figura 1. Registro de bytes de estado

El estándar ANSI/IEEE 488.2-1987 resuelve este problema definiendo ciertas condiciones de solicitud de servicio de modo que un modelo describe el byte de estado para todos los dispositivos compatibles con 488.2. El estándar IEEE 488.2 se basa en y amplía el byte de estado IEEE 488.1, analizado en la última sección (véase la figura 2). IEEE 488.2 define el bit RQS como el estándar IEEE 488.1. IEEE 488.2 agrega el bit de Mensaje Disponible (MAV) y el Bit de Estado del Evento (ESB). El bit MAV se establece si el dispositivo ha sido consultado previamente para obtener datos y tiene un mensaje de datos pendiente para enviar. El bit ESB indica que se ha producido uno de los eventos estándar definidos en el Registro de estado de eventos estándar. Al establecer los bits correspondientes en el registro Habilitar estado de evento estándar, usted define qué eventos estándar establecerán el ESB. Estos eventos incluyen encendido, solicitud de usuario, error de comando, error de ejecución, error dependiente del dispositivo, error de consulta, control de solicitud y operación completada. Al establecer los bits correspondientes en el Registro de Habilitación de Solicitud de Servicio, puede configurar un instrumento para hacer valer la línea SRQ cuando se establezca ESB o MAV, o cuando se produzca una condición definida por el fabricante.


Figura 2. IEEE 488.2 Modelo de informe de estado

Funciones LabVIEW para sondeos en serie

Las siguientes funciones se incluyen en la subpaleta LabVIEW GPIB 488 y son esenciales para realizar sondeos en serie en LabVIEW:

GPIB Serial Poll (ibrsp en NI-488) realiza un sondeo en serie y devuelve el valor del byte de estado desde un solo dispositivo. El programa debe verificar manualmente el bit RQS en el valor de Status Byte para determinar si ese dispositivo solicitó servicio.

GPIB Wait (ibwait en NI-488) espera el estado indicado por una máscara de Status Word especificada en un bus GPIB particular. La palabra Status Word es una variable global (16 bits) que contiene, entre otra información GPIB, el estado de la línea SRQ (bit 12, SRQI), y si un dispositivo ha solicitado servicio (bit 11, RQS). Si el vector que se pasa en es igual a 0, no espera ningún caso especificado y actualizará ibsta o la Palabra de estado. Sin embargo, si la máscara está configurada para verificar el bit 12 (SRQI), la función esperará hasta que esa línea en particular se afirme para una placa GPIB en particular, cuya dirección se especifica en GPIB Wait.

Wait for GPIB RQS (ibwait en NI-488, con máscara para el bit 11) es similar a usar la función GPIB Wait con máscara para el bit 11, pero usando la dirección GPIB de la dirección del dispositivo en particular en lugar de la dirección de la placa GPIB (cuando se espera para el bit 12). Esta función espera a que un dispositivo en particular solicite servicio y no a que una placa (a la que se podrían conectar varios dispositivos) reciba una solicitud de servicio. Esta función esperará hasta que se confirme el bit RQS o se supere el tiempo de espera.

Los siguientes ejemplos muestran cómo dar servicio a las SRQ y sondear en serie los dispositivos mediante las funciones LabVIEW GPIB.

En LabVIEW Ejemplo 1 (Figura 3), se escribe un comando en un simulador de instrumentos NI. El comando incluye instrucciones para que el instrumento genere una solicitud de servicio (SRQ) si un evento de Operación completada está registrado en el Registro de estado de eventos (ESR). Los dos primeros comandos escriben estas instrucciones en el Registro de habilitación de solicitud de servicio y en el Registro de habilitación de estado de evento (especificación IEEE-488.2). El tercer comando pide al simulador de instrumentos que genere una onda sinusoidal; el último comando genera un evento Operación completada. La siguiente sección del código espera a que se genere el SRQ comprobando el bit 12 de la Palabra de estado. Una vez que se ha generado, se realiza un sondeo en serie en el simulador de dispositivos para leer el Byte de estado y conocer la razón por la que generó un SRQ. Si el bit 5 está establecido (desde el Registro de estado de eventos que tiene el bit de Operación completada establecido) y el bit 6 está establecido (RQS, el dispositivo ha solicitado servicio), entonces el controlador sigue adelante y lee los datos desde el simulador de dispositivo. Observe que el registro ESR debe ser borrado. Esto evita que el instrumento genere solicitudes de servicio no deseadas.



Figura 3. Ejemplo 1

LabVIEW Ejemplo 2 (Figura 4) muestra otra forma de esperar a que el dispositivo solicite servicio. Sin embargo, en este último ejemplo, el procesador se detiene y espera sin realizar ninguna otra operación. En el primer ejemplo, otras operaciones podrían haberse ejecutado en paralelo mientras esperaba que el dispositivo solicitara servicio.



Figura 4. Ejemplo 2

Funciones de Serial Polling LabVIEW GPIB 488.2

Las funciones GPIB 488.2 agregan nuevas características para el sondeo en serie, de modo que puede sondear varios dispositivos con un comando GPIB. LabVIEW ha incluido estas funciones en la subpaleta de funciones GPIB 488.2 – AllSpoll y FindRQS.

AllSpoll puede sondear en serie varios dispositivos con una sola llamada de rutina. AllSpoll coloca el byte de estado de cada instrumento sondeado en una matriz predefinida. Debe comprobar manualmente el bit RQS en el byte de estado de cada dispositivo para determinar si ese dispositivo solicitó servicio.

FindRQS puede sondear en serie varios dispositivos. Si uno de los dispositivos solicita servicio mediante la afirmación de SRQ, la rutina devuelve el índice y el valor de octeto de estado del primer dispositivo que solicita el servicio.

Si usted sabe que solo un instrumento afirmó el SRQ y le gustaría saber cuál, y su byte de respuesta de sondeo en serie, entonces utilice la función FindRQS. Si sospecha que más de un instrumento puede haber afirmado la SRQ, utilice AllSpoll para recibir los bytes de respuesta de sondeo en serie de todos los dispositivos. Si el byte de estado tiene el bit 6 establecido, significa que el dispositivo ha solicitado servicio. En otras palabras, el valor del byte de estado es al menos hexadecimal 40 cuando un dispositivo solicita servicio.

El ejemplo 3 de LabVIEW (Figura 5) ilustra cómo realizar el sondeo en serie utilizando las funciones de LabVIEW NI-488.2. Tenga en cuenta que este ejemplo GPIB 488.2 es muy similar a los ejemplos GPIB mostrados anteriormente. La mayoría de las funciones LabVIEW GPIB han sido reemplazadas por sus funciones equivalentes LabVIEW GPIB 488.2, como “Enviar” y “Recibir” en lugar de “Escritura GPIB” y “Leer GPIB”, “LeerEstado” en lugar de “Encuesta en serie GPIB” y “Probar SRQ” en lugar de usar “Esperar GPIB” y establecer la máscara en 0. Además, este ejemplo muestra una mejor manera de controlar los posibles errores en el programa mediante el uso de un registro de desplazamiento para pasar el clúster de errores entre ciclos del bucle while.



Figura 5. Ejemplo 3

Resumen

Esta nota de aplicación describe cómo el controlador GPIB utiliza el software NI-488 para detectar y responder a las solicitudes de servicio de los dispositivos IEEE 488 en el bus. También incluye ejemplos de código LabVIEW que demuestran cómo puede usar las funciones LabVIEW GPIB para dispositivos de sondeo en serie.

Was this information helpful?

Yes

No