6. Sincronización de medida

La sincronización de medida es uno de los aspectos más importantes a tener en cuenta al programar una aplicación para el control remoto. Si se pasa por alto este punto, el programa se comportará de forma impredecible y se obtendrán resultados irrepetibles, lo cual resulta muy frustrante. Una clara señal de que la sincronización de medida es incorrecta es cuando es necesario insertar pausas fijas en la aplicación para conseguir que siga ejecutándose.

A continuación definiremos la sincronización de medidaconforme al propósito de este apartado.

Los instrumentos de medida de hoy en día son dispositivos complejos con un sistema operativo propio. Su aplicación de medida no tiene que supervisar el estado del instrumento constantemente; la sincronización de medida es un método que permite garantizar que, en determinados puntos importantes de su programa (SyncPoints), su instrumento se encuentra en el estado esperado.

Ejemplo de sincronización de medida con un osciloscopio y un dispositivo bajo prueba que genera una señal no periódica:

CH6_MeasSyncWithScope_16x9.png

En la figura de arriba puede verse que en el programa hay secciones de inactividad en las que hay que esperar a que finalice el procesamiento del instrumento. Debe tenerse en cuenta que estos tiempos de inactividad tienen una longitud dinámica: tienen que adaptarse a las diferentes condiciones (p. ej. velocidad del PC, diferentes tiempos de estabilización y adquisición). ¿Cómo se consigue esto? Lo más práctico es que el instrumento avise cuando está listo. Después de las siguientes notas se presentan diferentes métodos de sincronización.

Notas adicionales:

  • Opere un instrumento para la adquisición (osciloscopio, analizador de espectro, medidor de potencia…) siempre en el modo de adquisición única. Solo así podrá estar seguro de que sus resultados de medida proceden de la última adquisición completa, y no de la anterior o de una que todavía no ha finalizado. Lo más importante: cualquiera de los métodos de sincronización funciona de forma óptima solamente en el modo de adquisición única.
  • No es necesario sincronizar los ajustes básicos y de disparo. El único punto clave aquí es dónde desea asegurarse de que se han aplicado todos los ajustes (SyncPoint ‘SettingsApplied’).
  • Una vez que se ha producido el disparo, el osciloscopio inicia la adquisición de la forma de onda. Su programa deberá esperar hasta que haya finalizado (SyncPoint ‘AcquisitionFinished’).
  • La lectura de la forma de onda después de este SyncPoint garantiza que el resultado procede de la adquisición más reciente.

Listado de mecanismos de sincronización

En los cuatro siguientes apartados presentamos diferentes mecanismos de sincronización, ordenados desde el más sencillo hasta el más complejo:

  • Consulta *OPC?
  • Solicitud del byte de estado (STB)
  • Espera a solicitud de servicio (SRQ)
  • Evento de solicitud de servicio (SRQ)

Sincronización por consulta *OPC?

Este es el método de sincronización más sencillo y utilizado con mayor frecuencia.

Cuando se envía la consulta *OPC? a un instrumento, este retrasa la respuesta hasta que han finalizado todas las operaciones pendientes. Para ello, los periodos de inactividad (Idle) de su programa se ejecutan en las operaciones de lectura VISA donde su programa espera a que el instrumento responda a la consulta *OPC?. En este caso no es la respuesta en sí lo importante, sino el retardo que esta genera.

¡Importante! Puesto que *OPC? es una consulta, no debe olvidar leer la respuesta del instrumento con la función VISA Read(). De lo contrario, su instrumento generará un error 'Query Interrupted' en la siguiente consulta. Esto es importante tanto para la consulta *OPC? como para todas las demás consultas.

En este punto es importante también hacer referencia a un parámetro adicional: VISA Timeout. VISA Timeout es el mecanismo a través del cual se puede definir el tiempo máximo que debe esperarse en operaciones de lectura VISA antes de que terminen con un error de tiempo límite de VISA. Puesto que se trata de un valor individual y depende de la duración de la tarea en curso, asegúrese de ajusta correctamente el tiempo límite para VISA —si el tiempo límite es demasiado corto, pueden surgir errores no deseados durante la operación normal, y si es demasiado largo, su programa no reaccionará adecuadamente en caso de ocurrir un error real.

Ventajas:

  • Método sencillo y eficaz en la mayoría de los casos.
  • No utiliza el canal de control de sesión (véase el método de solicitud de STB), de modo que también funciona con conexión RawSockety en serie.

Inconvenientes:

  • Bloquea la comunicación con el instrumento hasta que este responde. Esto puede resultar crítico en operaciones de larga duración, en cuyo caso su aplicación deja de responder adecuadamente.

Sincronización mediante solicitud del byte de estado (STB)

Este es el método que utilizan los drivers de instrumentos Rohde & Schwarz. Si utiliza comandos SCPI directos, encontrará los ejemplos de implementación al final de este apartado. Pero antes echaremos un vistazo al diagrama de flujo del procedimiento. Después del gráfico se detalla la explicación.

Para explicar el diagrama de flujo es necesario repasar el subsistema de estadodel instrumento —una estructura jerárquica de registros encabezada por el elemento principal, llamado byte de estado o Status Byte(abreviado, STB). Se trata de un registro de 8 bits definido en el estándar IEEE 488.2. Cada uno de sus bits tiene un significado distinto y sirve como etiqueta de resumen para los registros subordinados en la cadena jerárquica de registros de estado. Encontrará la estructura completa del subsistema de estado en el manual de usuario para el control remoto de cualquier instrumento de Rohde & Schwarz (busque el término 'Byte de estado' o 'Status Byte'). La siguiente figura muestra el registro Status Byte y el segundo registro Event Status Register(ESR):

  • La primera operación del diagrama de flujo ajusta el filtro ESEa 1 (bit 0 = 1). Esto significa que solamente nos interesa el bit ESR 0 - OPC. Basta con enviar este comando una vez, después de iniciar la conexión, o después del comando *RST.
  • La siguiente operación consulta el valor del registro ESR con el comando *ESR?. Este registro es un registro de EVENTO —el valor se borra al leerlo. Con ello se restablece el bit ESR 0 - OPC de nuevo a 0.
  • La siguiente operación envía el comando que se desea sincronizar. En nuestro caso se trata del comando SCPI SINGque prepara el osciloscopio para una adquisición única. *OPC (atención: sin el signo de interrogación) al final de la cadena indica al instrumento: después de haber ejecutado y finalizado todos los comandos de esta cadena, ajustar el bit ESR 0 - OPCa 1. Por ello, antes hubo que restablecerlo a 0. De lo contrario tendría que haberlo ajustado a 1 en alguna de las acciones anteriores y su bucle de solicitud de STB finalizaría de forma incorrecta después de su primera iteración.
  • La siguiente operación es el bucle de solicitud del byte de estado. La consulta del byte de estado se ejecuta hasta que el bit 5 - Event Status Summaryse establece en 1. El valor del byte de estado se puede recuperar de dos formas diferentes: bien con el comando SCPI *STB?, o bien con una función VISA especial llamada ReadSTB(). ¿Cuál es la diferencia? El *STB? es un comando SCPI estándar que utiliza búferes I/O VISA. La función ReadSTB() se comunica a través de un canal por separado, llamado canal de control, y no interfiere en la comunicación de escritura/lectura SCPI estándar. Está optimizada además para obtener tiempos de respuesta más rápidos. Le recomendamos incluir un retardo de solicitud progresivo dentro de este bucle. Por ejemplo: sin retardo los primeros 10x, después, 1ms de retardo los siguientes 100x, 10ms de retardo los siguientes 1000x y así sucesivamente. Para prevenir bucles sin fin, los drivers de instrumentos de Rohde & Schwarz utilizan un tiempo límite llamado OPC Timeout.
  • Una vez que ha finalizado el bucle, el bit ESR 0 - OPC se restablece de nuevo con el comando SCPI *ESR?

Ventajas:

  • No bloquea la comunicación con el instrumento. Se pueden enviar comandos SCPI y recibir respuestas paralelamente.
  • Recomendable para operaciones de larga duración, como, p. ej., autoalineaciones o autopruebas.

Inconvenientes:

  • .
  • No funciona con conexión RawSocket y serie, ya que no admiten la función de canal de control VISA ReadSTB().

Métodos avanzados con solicitud de servicio (SRQ)

Sincronización con espera a solicitud de servicio (SRQ)

Este método es similar al anterior, la sincronización de solicitud del byte de estado, pero en lugar del bucle de solicitud STB utiliza una función VISA WaitOnEvent()configurada para esperar al evento de solicitud de servicio. Al final de este apartado se indican algunos ejemplos de este tipo de sincronización.

Para utilizar el mecanismo debe hacer lo siguiente:

  • Ejecutar el ajuste una vez tras restablecer *ESE 1;*SRE 32(véase en la imagen de arriba los registros del subsistema de estado del instrumento). De este modo, el filtro ESE se ajusta de forma que reaccione en el bit ESR OPC igual que en el método de sincronización anterior mediante solicitud STB. «*SRE 32» ajusta el filtro SREde forma que genere la Solicitud de serviciosi el bit Event Status Summary del registro STB está establecido en 1.
  • Antes de enviar el comando para sincronizar, active el evento de solicitud de servicio con la función VISA EnableEvent().
  • Envíe el comando para sincronizar con el ;*OPCal final.
  • Abra la función VISA WaitOnEvent(). Esperará hasta que llegue el evento de solicitud de servicio o expire el tiempo límite.
  • Desactive el evento de solicitud de servicio con la función VISA DisableEvent().

Ventajas:

  • En comparación con el método anterior, no es necesaria la implementación del bucle de solicitud de STB.
  • La traza IO es más corta y su lectura más fácil.

Inconvenientes:

  • Su aplicación en LabVIEW y MATLAB no se puede interrumpir durante la ejecución de VISA WaitOnEvent(). Esto puede resultar problemático en caso de que los comandos tarden mucho tiempo en completar, p. ej., la solicitud de autoprueba *TST?
  • No es compatible para conexión RawSocket y serie.

Sincronización con evento de solicitud de servicio (SRQ)

La idea principal es que el usuario inicie una tarea del instrumento y pueda concentrarse en otra cosa. Cuando el instrumento ha finalizado la tarea, VISA invoca una función a elección del usuario. Esta función se denomina Event handler.

Al final de este apartado se enumeran algunos ejemplos de este tipo de sincronización en C# y LabWindows/CVI.

Para utilizar el mecanismo de sincronización de evento solicitud de servicio debe hacer lo siguiente:

  • Ejecutar el ajuste una vez tras restablecer *ESE 1;*SRE 32(véase en la imagen de arriba, registros de subsistema de estado del instrumento). De este modo, el filtro ESE se ajusta de forma que reaccione en el bit ESR OPC igual que en el método anterior de sincronización mediante solicitud STB. *SRE 32ajusta el filtro SRE de forma que genere la solicitud de servicio si el bit Event Status Summarydel registro STBestá establecido en 1.
  • Antes de enviar el comando para sincronizar debe registrar su función callback con la función VISA InstallHandler()y activar el mecanismo de solicitud de servicio con la función VISA EnableEvent().
  • Envíe el comando para sincronizar con el ;*OPCal final. Una vez que ha finalizado la ejecución del comando, VISA invoca la función registrada por el usuario.

Ventajas:

  • Permite realizar otras tareas entretanto.
  • Ideal para aplicaciones con subprocesamiento múltiple.

Inconvenientes:

  • Implementación más compleja.
  • No es compatible para conexión RawSocket y serie.
  • No es compatible con LabVIEW y MATLAB.

Ejemplos de comandos SCPI directos

Ejemplos de la tarea de medida mencionada más arriba con sincronización mediante solicitud *OPC? , así como:

  • sincronización con solicitud STB
  • sincronización con espera a solicitud de servicio
  • sincronización de evento de solicitud de servicio (en Python, C# y LabWindows/CVI)

Ejemplos de drivers de instrumentos

Ejemplos para la tarea de medida descrita más arriba:

Request information

Do you have questions or need additional information? Simply fill out this form and we will get right back to you.

Permiso de marketing

Se ha enviado su solicitud. Nos pondremos en contacto con usted lo antes posible.
An error is occurred, please try it again later.