Error -1073807339 Tiempo de espera de lectura o escritura de VISA

Actualizado el Jan 6, 2020

Reportado en

Software

  • LabVIEW
  • LabWindows/CVI

Driver

  • NI-VISA
  • NI-Serial
  • NI-488.2

Detalles del problema

  • Pude comunicarme con mi instrumento con un Panel de Prueba VISA, pero cuando realizo una operacion VISA Write o VISA Read en LabVIEW, recibo el siguiente error:  
Error -1073807339 occurred at VISA Read or VISA Write.
Possible reason(s):
VISA:  (Hex 0xBFFF0015) Timeout expired before operation completed.

El mensaje de error también se muestra en la imagen a continuación:

Solución

Existen varios motivos por los que puede recibir este mensaje de error, los más comunes de los cuales se detallan a continuación:

A) Es posible que no tenga instalado el controlador (del inglés driver) correcto. Asegúrese de tener el controlador correcto para su hardware. Algunos de los más comunes son:

  • NI-VISA (para instrumentos que usan comunicaciones seriales o GPIB)
  • NI-Serial (para instrumentos que usan comunicación serial como RS232, RS422, RS485, etc.)
  • NI-488.2 (para instrumentos que utilizan comunicaciones GPIB)
    Nota : Debe instalar el software del controlador NI-488.2 antes de instalar cualquier dispositivo de hardware nuevo NI GPIB para que Windows pueda detectarlos.
También asegúrese de tener instalada la versión compatible más reciente de su controlador. La información de compatibilidad se puede encontrar en el archivo Léame de su controlador.

B) El puerto no está conectado, se seleccionó el puerto incorrecto o el puerto no puede enviar / recibir datos. Compruebe que el instrumento esté correctamente conectado al puerto que está utilizando.

C) Probar un sistema diferente con los mismos drivers. Los puertos COM podrían estar dañados o no funcionar en la máquina original.

D) Un error de tiempo de espera también podría resultar de las cadenas de comando incorrectas escritas en los controladores. Verifique las cadenas de comandos enviadas a las llamadas VISA Read y VISA Write y asegúrese de que estén escritas con la sintaxis adecuada para su instrumento.

Nota: a menudo se requiere una nueva línea o un retorno de carro (del inglés: carriage return) al final de un comando. Una buena manera de probar esto en LabVIEW es hacer clic con el botón derecho en el control de la cadena de comandos en el panel frontal y cambiar la visualización al modo de  '\' Codes Display. En este modo, un retorno de carro es \r , un salto de línea es \n , y un final de línea es \r \n . Consulte el manual de su producto para saber qué se espera y asegúrese de usar la opción adecuada de manera constante.

E) Los ajustes de comunicación del puerto pueden no estar configurados correctamente. Verifique que la velocidad de transmisión, los bits de datos, la paridad, los bits de parada y el control de flujo estén configurados correctamente para que se correspondan con los requisitos de hardware.

Nota: puede cambiar estas configuraciones programáticamente durante el tiempo de ejecución con VISA VIs, o en NI-MAX como en el siguiente ejemplo:

F) Este error puede ser inducido al intentar leer más bits de los que están disponibles en el puerto serie.

F.1) El VISA Property Node para  Bytes At Port  debe implementarse para garantizar que los datos leídos por VISA se limiten a la cantidad exacta de datos disponibles.

F.2) Además, puede verificar que no está intentando leer demasiados bytes leyendo solo 1 byte a la vez. Si no obtiene el error al hacerlo, incremente la cantidad de bytes que lee hasta que vuelva a obtener el error de tiempo de espera. Esto le indica cuántos bytes se devuelve ese comando.

Nota : Si aún recibe el error mientras lee solo 1 byte, verifique el comando para asegurarse de que se haya escrito correctamente y que también haya terminado la cadena del comando (como se indica en la solución C).

G) La instrumentación más antigua puede no responder rápidamente a los comandos escritos en el puerto, lo que causa un gran retraso entre los comandos VISA Write y VISA Read . Las aplicaciones diseñadas para interactuar con este tipo de instrumentación deben anticipar este retraso e implementar una función de Espera entre VISA Write y Read para evitar efectivamente un posible error de tiempo de espera.

H) Los tiempos de espera también pueden ocurrir cuando usted lee o escribe grandes cantidades de datos, ya que los conjuntos de datos grandes a menudo toman más tiempo que el tiempo de espera predeterminado de 2000 ms para transferir a través del puerto serie. Puede designar manualmente el tiempo de VISA Session Timeout de diferentes maneras, dependiendo de su sistema de desarrollo. Consulte a continuación las instrucciones para configurar el tiempo de espera de VISA:

LabVIEW : Puede usar el tiempo de VISA Set Timeout ubicado en la Functions palette en Instrument I/O »VISA» VISA Advanced. Consulte Configuración del tiempo de espera para las sesiones de VISA .

LabWindows/CVI : puede utilizar la función viSetAttribute con su parámetro Attribute_Name establecido en VI_ATTR_TMO_VALUE .

Nota : Cambiar el valor de Tiempo de espera para su sesión de VISA afectará a todas las Escrituras y lecturas de VISA de su sesión. Sin embargo, puede establecer esta propiedad / atributo en cualquier momento durante la sesión, lo que le permite configurarlo según sea necesario.

El tiempo de espera también puede ocurrir si en la comunicación VISA la función de escritura debe alimentarse con un string, con dicha propiedad BackSlash (\) code de lo contrario si, por ejemplo, le doy a mi dispositivo este comando *IDN?\r\nllega el tiempo de espera fuera. La propiedad se puede configurar haciendo right click on string>>properties>>Display Style.






 

Información adicional

Para obtener más información sobre el software requerido, así como las técnicas para solucionar errores comunes u obstáculos para que un instrumento esté en funcionamiento en su sistema, visite el documento: Solución de problemas de los controladores de instrumentos