Códigos de error GPIB y soluciones comunes

Información general

Este documento proporciona soluciones a los códigos de error GPIB.

 

Gran parte del texto siguiente se deriva del Manual de usuario NI-488.2 para Windows (consulte los Recursos adicionales, a continuación).

Contenido

EDVR (0)

Condición de error: Error del conductor.

Descripción: EDVR se devuelve cuando el hardware GPIB no está configurado correctamente, o el nombre de la interfaz o el nombre del dispositivo pasado a la función ibfind es incorrecto.

Posible causa: A menudo, los errores de EDVR se producen cuando escribe mal el nombre de la interfaz de su placa o el nombre del dispositivo de su instrumento. Por ejemplo, el nombre de interfaz predeterminado para las placas NI es GPIB0, pero puede escribirlo mal como GPIBO (con un "oh" en lugar de un cero). Este error también puede ocurrir si el índice de placa pasado a la función ibdev es incorrecto. El índice de la placa es la porción numérica del nombre de la interfaz de la placa GPIB, pero muchas personas asumen incorrectamente que es la dirección principal de la placa. Por ejemplo, puedo instalar una placa PCI-GPIB en mi computadora y dar una dirección principal de 2. El nombre de interfaz predeterminado para la placa es GPIB0, por lo que tiene un índice de placa de 0, no 2.

Soluciones:

  • Utilice la configuración predeterminada para su hardware GPIB en la Utilidad de configuración GPIB (es decir, GPIB0 para el nombre de la interfaz y cero para la dirección principal).
  • Utilice la función ibdev en lugar de la función ibfind para abrir comunicaciones con su instrumento (para evitar usar el nombre de su dispositivo).
  • Si debe usar nombres de dispositivos para sus instrumentos, asegúrese de que estén correctamente configurados en las plantillas de dispositivos de la utilidad de configuración de GPIB (consulte su manual de usuario NI-488.2) para obtener más detalles).
  • Utilice el descriptor de unidad devuelto desde ibdev o ibfind como primer parámetro en las funciones NI-488 posteriores. Examine la variable antes de la función que falla para asegurarse de que su valor no se ha dañado.

ECIC (1)

Condición de error: La función requiere que la placa GPIB sea el controlador encargado (CIC).

Descripción: Ciertas funciones requieren que su placa GPIB sea el CIC - estas funciones se indican en el Manual de referencia de funciones NI-488.2 (consulte el enlace relacionado, a continuación). De forma predeterminada, su placa GPIB será el controlador del sistema, pero esto no es lo mismo que ser el controlador encargado. El controlador del sistema tiene la capacidad de convertirse en el CIC en cualquier momento (puede haber un controlador del sistema en un bus de interfaz de propósito general dado).

Posible causa: A menudo, los errores ECIC se producen cuando no envía una interfaz clara al inicio de su programa para asegurarse de que su placa GPIB es el CIC.

Soluciones:

  • Si se supone que la placa GPIB es el controlador del sistema, utilice ibrsc 1 para asegurarse de que la placa GPIB está configurada como controlador del sistema.
  • Si su placa GPIB es el controlador del sistema, utilice la función ibsic (o la función SendIFC) para enviar una interfaz limpia. Esto hará que su tarjeta GPIB sea el CIC (también restablece las comunicaciones GPIB en el bus).
  • Si su placa GPIB es uno de los varios controladores en el bus, compruebe siempre el bit CIC de la palabra de estado, ibsta, antes de intentar cualquier llamada de función que requiera que su placa GPIB tenga estado CIC. Si no aparece, puede llamar a la función ibwait (establecer la máscara de espera para el bit CIC) para retrasar el procesamiento adicional hasta que el control se pase a su placa GPIB.

ENOL (2)

Condición de error: Función no detectó oyente(s).

Descripción: Las comunicaciones GPIB requieren un solo Talker (para escribir mensajes de datos) y uno o más Listeners (para leer mensajes de datos). ENOL suele ocurrir cuando se intenta una operación de escritura, pero no se direccionan Listeners o no hay Listeners en la(s) dirección(es) especificada(s). Para una escritura de dispositivo, ENOL indica que la dirección GPIB con la que intenta comunicarse no coincide con la dirección GPIB del dispositivo conectado al bus.

Posible causa: El instrumento con el que intenta comunicarse no se encuentra en la dirección primaria esperada, el instrumento no está encendido o el cable al instrumento está desconectado o roto.

Soluciones:

  • Asegúrese de que la dirección GPIB de su dispositivo coincide con la dirección GPIB del dispositivo en el que desea escribir datos.
  • Compruebe que el cable está correctamente conectado al instrumento. Intente cambiar los cables para verificar que el cable no está roto.
  • Asegúrese de que al menos dos tercios de sus dispositivos estén encendidos.
  • Para las comunicaciones a nivel de tablero, utilice el código hexadecimal apropiado en la función ibcmd para dirigirse a su dispositivo como Listener.
  • Llama a la función ibpad (e ibsad, si es necesario) para establecer la dirección principal de tu dispositivo. La función ibpad devolverá la configuración anterior del dispositivo y puede comprobar si la dirección configurada coincide con la dirección real del dispositivo.

EADR (3)

Condición de error: La placa GPIB (GPIB0 o GPIB1) no se aborda correctamente.

Descripción: EADR ocurre cuando la placa GPIB es el controlador encargado (CIC) y no se dirige correctamente a sí misma antes de las funciones de lectura y escritura. EADR también es devuelto por la función ibgts cuando se solicita la función de reconocimiento de sombras y la línea ATN GPIB ya no se ha activado. En este caso, el apretón de manos sombra no es posible y el error se devuelve para notificarle ese hecho.

Posible causa: La placa GPIB está configurada para la misma dirección principal que el instrumento con el que intenta comunicarse.

Soluciones:

  • Nunca configure su placa GPIB en la misma dirección que su dispositivo. Usted debe (casi) siempre dejar su placa GPIB configurada para la dirección primaria 0 y ninguna dirección secundaria. Llama a ibpad 0 e ibsad 0 al principio de tu programa para configurar correctamente la dirección de tu placa.
  • Asegúrese de que la placa GPIB está direccionada correctamente antes de llamar a ibrd, ibwrt, RcvRespMsg o SendDataBytes.
  • Evite llamar a ibgts, excepto inmediatamente después de una llamada ibcmd. La función ibcmd hace que se afirme la línea ATN, que indica a los instrumentos que esperen mensajes de comando, en lugar de mensajes de datos.

EARG (4)

Condición de error: Argumento no válido para una llamada a una función.

Descripción: EARG resulta cuando un argumento no válido se pasa a una llamada de función.

Posible causa: Los siguientes son algunos ejemplos: llama a ibtmo con un valor que no está en el rango de 0 a 17 (los posibles valores de tiempo de espera corresponden a una tabla de valores que van de 0 a 17, donde el valor predeterminado es 13, lo que representa un tiempo de espera de 10 segundos); llama a ibeos con bits sin sentido establecidos en el byte alto del segundo parámetro; o llama a ibpad (o ibsad) con direcciones no válidas.

Soluciones:

  • Compruebe el Manual de Referencia de Funciones NI-488.2 (consulte el Enlace Relacionado, a continuación) para asegurarse de que sus parámetros son válidos.
  • No utilice un descriptor de dispositivo en una función de nivel de placa o un descriptor de placa en una función de nivel de dispositivo.

ESAC (5)

Condición de error: Placa GPIB no controlador del sistema como se requiere.

Descripción: Resultado ESAC cuando se llama a ibsic, ibsre, SendIFC o EnableRemote cuando la placa GPIB no tiene capacidad de controlador del sistema.

Posible causa: La placa GPIB no está configurada para ser el controlador del sistema.

Soluciones:

  • Ofrezca a la placa GPIB la capacidad de Controlador del sistema llamando a ibrsc 1 o utilizando la Utilidad de configuración GPIB.

EABO (6)

Condición de error: Operación de E/S abortada.

Descripción: EABO indica que una operación de E/S ha sido cancelada por alguna razón.

Posible causa: El error EABO es generalmente el resultado de un tiempo de espera durante una operación de lectura o escritura, pero también puede ser causado llamando a la función ibstop, la función ibclr o funciones similares mientras una operación de E/S está en progreso. Es posible que reciba un tiempo de espera durante las operaciones de escritura con una placa PCI-GPIB, si la masterización del bus PCI (una opción en la BIOS de su computadora) no está habilitada. Es posible que reciba un tiempo de espera durante las operaciones de lectura, si el instrumento del que está leyendo no entendió el comando anterior, por lo que no tiene nada que escribirle. Hay algunas razones por las que el instrumento puede no tener nada que decir:

  • El mensaje al instrumento puede haber sido mal escrito. Por ejemplo, "*IDN?" es una consulta de identificación común para instrumentos compatibles con IEEE 488.2. Es fácil escribir mal este mensaje como "*IND?", que el instrumento no entenderá, por lo que no generará una cadena de mensajes para que usted pueda leer desde el instrumento.
  • El mensaje al instrumento puede contener un comando que el instrumento no entiende. Por ejemplo, el mensaje "*IDN?" del ejemplo anterior solo lo entienden los instrumentos compatibles con IEEE 488.2. Si su instrumento es un dispositivo anterior que no cumple con IEEE 488.2, entonces no entenderá "*IDN?", por lo que no generará una cadena de mensajes para que la lea desde el instrumento.
  • El instrumento puede utilizar un carácter EOS (fin de cuerda) particular como método de terminación, pero puede olvidar agregar este carácter de terminación a su mensaje. Por ejemplo, si su instrumento espera una alimentación en línea como el carácter EOS, entonces "ID?" no funcionará, pero "ID?\n" (donde \n representa una alimentación lineal en IBIC) voluntad.
  • Es posible que espere ver EOI (finalizar o identificar una de las cinco líneas de administración de bus) como el método de terminación, pero si el instrumento no establece la línea EOI cuando termina de enviar su mensaje, cualquier operación de lectura que realice expirará.

Soluciones:

  • Asegúrese de que sus mensajes constan de comandos que el instrumento entiende. Consulta el manual de usuario de tu dispositivo para obtener una lista de posibles comandos.
  • Consulte el manual del usuario para ver si su instrumento necesita estar en modo GPIB o 488.2 para poder escuchar GPIB.  A menudo los instrumentos solo responderán a los comandos estándar después de que se hayan colocado en este modo, y de lo contrario darán un error a pesar de que se les envíe un comando válido.
  • Compruebe que está utilizando el método de terminación correcto para su instrumento. El conteo de bytes (donde espera recibir un cierto número de bytes en un mensaje) siempre se usa, pero algunos instrumentos usan EOS y conteo de bytes, algunos usan EOI y conteo de bytes, y algunos usan solo conteo de bytes. Consulta el manual de usuario de tu dispositivo para conocer los posibles métodos de terminación que debes utilizar con tu instrumento.
  • Si EOS es el método de terminación, asegúrate de agregar el carácter de terminación al final del mensaje. Puede especificar el carácter de terminación en la Utilidad de configuración de GPIB, pero el controlador NI-488.2 no lo agregará automáticamente por usted.
  • Alargar el período de espera para las operaciones de E/S utilizando el comando ibtmo.
  • Si recibe todos los datos y recibe un error de EABO, busque un extremo particular del carácter de cadena (por ejemplo, alimentación de línea o retorno de carro) y configure la placa GPIB para terminar la lectura de ese carácter mediante la función ibeos.

ENEB (7)

Condición de error: Tablero GPIB inexistente.

Descripción: ENEB se produce cuando no existe placa GPIB en la dirección de E/S especificada en la Utilidad de configuración de GPIB. Este problema ocurre cuando la placa no está conectada físicamente al sistema, la dirección de E/S especificada durante la configuración no coincide con la configuración real de la placa, hay un conflicto del sistema con la dirección de E/S base o el nombre de interfaz de la placa es diferente del nombre de interfaz de la placa asociada con el dispositivo.

Soluciones:

  • Determine la dirección de E/S base de su placa consultando la Utilidad de configuración de GPIB. Compruebe el administrador de recursos de su sistema para ver si otra placa está tratando de usar parte o todo este rango de direcciones. Asegúrate de que el nombre de interfaz de tu placa sea el mismo que el nombre de interfaz de la placa con la que tu dispositivo está configurado para comunicarse.
  • Para las placas heredadas, asegúrese de que los puentes y los interruptores dip de la placa estén configurados en la misma configuración de recursos que la Utilidad de configuración de GPIB cree que está utilizando.
  • Apague su computadora y asegúrese de que la placa esté firmemente asentada en su ranura.

EDMA (8)

Condición de error: Se produce un error al usar DMA para transferencias de datos.

Descripción: EDMA ocurre si se encuentra un error de DMA del sistema cuando el controlador NI-488.2 intenta transferir datos a través del GPIB mediante DMA.

Soluciones:

  • Puede corregir el problema de EDMA en hardware mediante la Utilidad de configuración de GPIB para reconfigurar su placa GPIB, de modo que no utilice un recurso de DMA.
  • Puede corregir el problema de EDMA en el software utilizando la función ibdma para desactivar DMA.

EOIP (10)

Condición de error: Función no permitida mientras la E/S asíncrona está en progreso.

Descripción: EOIP ocurre cuando una operación de E/S asíncrona no ha terminado antes de que se realice alguna otra llamada GPIB. Solo puede usar la función ibstop, ibnotify, ibwait o ibonl durante operaciones de E/S asíncronas. Si se intenta cualquier otra llamada GPIB, se devuelve EOIP.

Posible causa: Llamada a cualquier llamada de función GPIB no compatible durante la E/S asíncrona.

Solución:

  • Resincronice el controlador y su aplicación antes de realizar más llamadas GPIB. La resincronización se logra mediante una de las siguientes funciones: ibnotify (si el valor ibsta pasado a la devolución de llamada ibnotify contiene CMPL, el controlador y la aplicación se resincronizan), ibwait (si la ibsta devuelta contiene CMPL, el controlador y la aplicación se resincronizan), ibstop (esto cancela la operación de E/S asíncrona, para que el controlador y su aplicación se resincronicen inmediatamente) o ibonl (esto cancela la operación de E/S asíncrona y la interfaz se reinicia, para que el controlador y su aplicación se resincronicen inmediatamente).

ECAP (11)

Condición de error: No hay capacidad de operación.

Descripción: ECAP resulta cuando su placa GPIB carece de la capacidad de llevar a cabo una operación, o cuando una capacidad particular se ha deshabilitado en el software y se realiza una llamada que requiere esa capacidad.

Solución:

EFSO (12)

Condición de error: Error del sistema de archivos.

Descripción: EFSO resulta cuando una llamada ibrdf o ibwrtf encuentra un problema al realizar una operación de archivo. Específicamente, este error indica que la función no puede abrir, crear, buscar, escribir o cerrar el archivo al que se accede. El código de error específico del sistema operativo para esta condición se encuentra en ibcntl.

Soluciones:

EBUS (14)

Condición de error: Error de transferencia de bytes de comando.

Descripción: EBUS resulta cuando se producen ciertos errores de bus GPIB durante las funciones del dispositivo. Todas las funciones del dispositivo envían bytes de comando para realizar operaciones de direccionamiento y otras operaciones de administración de bus. Se espera que los dispositivos acepten estos bytes de comando dentro del límite de tiempo especificado por la configuración predeterminada o la función ibtmo. EBUS resulta si se produjo un tiempo de espera durante el envío de estos bytes de comando.

Posible causa: No hay dispositivos GPIB conectados a su controlador GPIB. Esto puede deberse a que todos sus instrumentos están apagados, uno de sus instrumentos está en error y afirma una línea de apretón de manos, su cable GPIB está desconectado de su placa o su cable GPIB está roto.

Soluciones:

  • Compruebe que todos los instrumentos funcionan correctamente y que los que desea comunicarse con ellos están encendidos.
  • Desconecte todos los instrumentos y conéctelos de uno en uno para determinar si un instrumento está causando el problema.
  • Compruebe si hay cableado suelto o defectuoso y asegúrese de que al menos 2/3 de sus instrumentos estén encendidos (este es un requisito de la especificación IEEE 488).
  • Si el período de espera es demasiado corto para que el controlador envíe bytes de comando, aumente el período de espera.

ESTB (15)

Condición de error: Byte(s) de estado de la encuesta en serie perdido.

Descripción: ESTB se informa solo por la función ibrsp. ESTB indica que uno o más bytes de estado de sondeo serie recibidos de sondeos serie automáticos se han descartado debido a la falta de espacio de almacenamiento. Varios bytes de estado más antiguos están disponibles; sin embargo, el más antiguo está siendo devuelto por la llamada ibrsp.

Posible causa: Instrumento reiteradamente afirma la línea SRQ.

Soluciones:

  • Llame a ibrsp con más frecuencia para vaciar la cola.
  • Desactive el autopolling con la función ibconfig (opción IbcAUTOPOLL) o desactive el autopolling en la Utilidad de configuración de GPIB.

ESRQ (16)

Condición de error: SRQ atascado en la posición ON.

Descripción: ESRQ solo se puede devolver mediante una llamada ibwait a nivel de dispositivo, en la que ha configurado la función ibwait para que regrese una vez que se confirme el bit RSQ de la palabra de estado (ibsta). ESRQ indica que una espera para RQS no es posible, porque la línea GPIB SRQ está atascada ON.

Posible causa: Esta situación puede ser causada por los siguientes eventos: un problema de cableado puede estar haciendo que la línea SRQ se mantenga activada; un dispositivo desconocido para el software está activando la línea SRQ - debido a que el software no conoce de este dispositivo, nunca puede sondear en serie el dispositivo para anular la activación de la línea SRQ; o un probador de bus GPIB (o equipo similar) puede estar forzando a la línea SRQ a ser activada.

Soluciones:

  • Comprueba si uno de los dispositivos del bus (incluso los que no utiliza tu aplicación) está activando la línea SRQ. Desconéctalos del GPIB, si es necesario.
  • Inspeccione los cables GPIB y asegúrese de que los conectores estén correctamente asentados.

ETAB (20)

Condición de error: Problema de mesa.

Descripción: ETAB ocurre solo durante las funciones FindLstn y FindRQS. ETAB indica que había algún problema con una tabla utilizada por estas funciones.

Posible causa: En el caso de FindLstn, ETAB significa que la tabla dada no tenía suficiente espacio para contener todas las direcciones de los Oyentes encontrados. En el caso de FindRQS, ETAB significa que ninguno de los dispositivos de la tabla dada estaba solicitando servicio.

Soluciones:

  • En el caso de FindLstn, aumente el tamaño de las matrices de resultados.
  • En el caso de FindRQS, compruebe si otros dispositivos no utilizados por su aplicación están afirmando SRQ. Desconéctalos del GPIB, si es necesario.

ELCK (21)

Condición de error: La interfaz GPIB está bloqueada y no se puede acceder a ella.

Posible causa: Este error suele ocurrir cuando hay dos o más procesos que quieren acceder a la misma interfaz y un proceso ya ha bloqueado la interfaz. Este error se devuelve cuando la operación no se puede realizar debido al bloqueo existente en la interfaz. También se devuelve cuando un proceso intenta desbloquear una interfaz cuando no existe tal bloqueo.

Solución:

  • La forma de evitar el error ELCK es esperar una cantidad aleatoria de tiempo antes de intentar bloquear la interfaz de nuevo. En caso de que esté utilizando el comando iblck para bloquear la interfaz, aumente el LockWaitTime y espere a que el otro proceso ceda el control sobre la interfaz. También asegúrese de que los procesos no bloquean una interfaz durante todo el período de ejecución.

EARM (22)

Condición de error: ibnotify callback no pudo rearmarse.

Posible causa: Este error ocurre cuando usamos notificación asíncrona (ibnotify) en aplicaciones NI-488.2. Esta función es útil si desea que su aplicación sea notificada asíncronamente sobre la ocurrencia de uno o más eventos GPIB. Esta notificación de evento se lleva a cabo mediante una función de devolución de llamada. La función de devolución de llamada se registra con el controlador NI-488.2 cuando se realiza la llamada de notificación. Este error indica que esta notificación de devolución de llamada no se rearmó al devolver un valor ilegal o cuando se produjo un error fatal del conductor (EDVR).

Soluciones:

EHDL(23)

Condición de error: El Input Handle no es válido.

Posible causa: Varios comandos GPIB toman el mango de entrada de la placa o el dispositivo como parámetro de entrada que puede ser la fuente de este error. Este error puede ocurrir en varias circunstancias. A continuación se enumeran algunos escenarios:

  • Un controlador de placa válido se pasa como parámetro de controlador de dispositivo o viceversa.
  • Un descriptor de placa o dispositivo no válido se pasa como entrada a cualquier función NI-488.2
  • Un id de placa fuera del rango de 0-99 se pasa a una función tradicional de nivel de placa NI-488.2 o rutina NI-488.2
  • ibconfig o ibmask se llama con un descriptor de unidad de dispositivo y una opción de configuración de solo placa, o con un descriptor de unidad de placa y una opción de configuración de solo dispositivo.

Soluciones:

  • Compruebe si las funciones a nivel de dispositivo y a nivel de placa no se mezclan al llamar a las funciones respectivas.
  • Compruebe también si el índice de la placa pasado a la llamada NI 488.2 es un número de índice válido.

EWIP (26)

Condición de error: Wait In progress en el controlador de entrada especificado.

Posible causa: Este error se produce en escenarios que tienen más de un hilo en el mismo proceso y cuando dos o más hilos están accediendo a la misma interfaz. EWIP indica que una llamada ibwait ya está en progreso en el descriptor de unidad especificado y se produce cuando un hilo ya está realizando una ibwait usando el mismo descriptor y otro hilo intenta llamar a ibwait en el mismo descriptor.

Solución:

  • Asegúrese de que, en un momento dado, solo un hilo esté realizando una llamada ibwait en el descriptor de unidad dado.

ERST (27)

Condición de error: La notificación de eventos se canceló debido a un reinicio de la interfaz.

Posible causa: ERST resulta cuando se cancela una notificación de evento debido a un reinicio de la interfaz. Una llamada ibwait pendiente en el conductor devuelve ERST en las siguientes situaciones:

  • Otro hilo en el mismo proceso llama a ibonl usando el mismo descriptor de unidad que ibwait.
  • Otro hilo o proceso emite una ibonl 1 a nivel de placa.

Podrá invocarse una devolución de llamada de notificación con ERST en las siguientes situaciones:

  • Otro proceso publica un ibonl 1 a nivel de junta.

Soluciones:

  • No llame a ibonl con llamadas ibwait aún pendientes en el controlador.
  • Evita que otras aplicaciones llamen a ibonl bloqueando la interfaz con iblck.

EPWR (28)

Condición de error: La interfaz perdió energía.

Posible causa: EPWR resulta cuando una interfaz pierde energía. Esto a menudo resulta cuando el sistema pasa y regresa de un estado de espera.

Soluciones:

  • Desconecte todas las asas y reinicie la aplicación.
  • Salga de la aplicación y reinicie el sistema.
  • Desactiva los modos de espera e hibernación en el PC.

Was this information helpful?

Yes

No