La diferencia entre la función Wait (ms) y la función Wait Until Next ms Multiple

Actualizado el Sep 13, 2019

Reportado en

Software

  • LabVIEW

Detalles del problema

He oído hablar de las funciones Wait (ms) y Wait Until Next ms Multiple, pero parece que ambas logran lo mismo. ¿Cuál es la diferencia entre las funciones Wait (ms) y Wait Until Next ms Multiple en LabVIEW?

Solución

Ambas funciones se utilizan para bloquear la ejecución durante un período de tiempo específico, generalmente para controlar la velocidad a la que se ejecutará un bucle. La diferencia es que la función Wait (ms) simplemente bloquea hasta que transcurre el tiempo especificado en milliseconds to wait, pero la función Wait Until Next ms Multiple bloquea hasta que el valor actual del reloj de milisegundos del sistema sea divisible por el valor especificado en millisecond multiple.

La siguiente figura ilustra cuándo se desbloquearía la ejecución si ambos VIs tuvieran 100 como sus respectivas entradas y comenzaran a ejecutarse a 50 ms. El eje horizontal es el valor del reloj de milisegundos del sistema.

También puede observar la diferencia en la ejecución utilizando los siguientes ejemplos de código.

Wait (ms):
La función de Wait (ms) bloqueará la ejecución hasta que el tiempo especificado en miliseconds to wait haya transcurrido
  • Ejemplo 1: Considere un bucle con código que tarda 5 ms en ejecutarse. El bucle también incluye una función de Wait (ms) con 10 ms conectados a su entrada miliseconds to wait . While Loop toma un total de 10 ms para ejecutarse porque el código finaliza después de 5 ms y luego la función de espera (ms) finaliza 5 ms después. En este caso, la función de Wait (ms)  se ejecuta en paralelo con el código.

En este ejemplo, la temporización del bucle se establece mediante la función de espera Wait (ms) externa.
  • Ejemplo 2: el bucle es el mismo que en el ejemplo anterior, pero ahora el código tarda 15 ms en ejecutarse. La función de Wait (ms) aún tiene 10 ms conectados a su entrada. Debido a que el tiempo conectado a la función de Wait (ms)  es menor que el tiempo que tarda en ejecutarse el código, no hay demora una vez que finaliza el código y el bucle se mueve a la siguiente iteración inmediatamente después de que transcurran 15 ms.

En este ejemplo, el tiempo de bucle no se establece mediante la función Wait (ms). Se establece por el tiempo total de ejecución del código dentro del bucle.

Wait Until Next ms Multiple:
Puede utilizar la función Wait Until Next ms Multiple para sincronizar bucles separados con el reloj de milisegundos de su sistema. Como sugiere su nombre, esperará hasta el próximo múltiplo del número de milisegundos especificado en la entrada milliseconds multiple antes de que se desbloquee.
  • Ejemplo 3: Hay un bucle con código que tarda 100 ms en ejecutarse y una función Wait Until Next ms Multiple que se ejecuta en paralelo con el código. La función Wait Until Next ms Multiple tiene 200 ms conectados a su entrada milliseconds multiple. El bucle se ejecuta a cada 200 ms del reloj de milisegundos del sistema. Hay un segundo bucle en el mismo VI que tiene una función Wait Until Next ms Multiple con 200 ms conectado a su entrada milliseconds multiple . El código en el segundo bucle tarda 150 ms en ejecutarse en paralelo. Los dos bucles se sincronizarán para moverse a sus siguientes iteraciones cada vez que transcurra un múltiplo de 200 ms en el reloj del sistema. Usando este método, se asegurará que cada bucle comience iteraciones subsiguientes al mismo tiempo.

Información adicional

Tenga en cuenta que cuando se utiliza la función Wait Until Next ms Multiple en un bucle, el primer retardo de iteración no será el mismo que el tiempo especificado para la entrada milliseconds multiple . Esto se debe a que la función espera hasta que el valor actual del reloj de milisegundos del sistema sea divisible de manera uniforme por el valor que especifique en la entrada milliseconds multiple. Por lo tanto, la primera vez que se ejecuta, el tiempo que espera depende del tiempo absoluto del reloj del milisegundos. Cada iteración subsiguiente se alineará con este tiempo y esperará la cantidad de tiempo adecuada que especificó en milisegundos múltiplos.

Tenga en cuenta que, al igual que la función Wait (ms), la función Wait Until Next ms Multiple  no tendrá ningún efecto en la velocidad del bucle si hay un código que se ejecuta en paralelo y que lleva más tiempo del especificado en milisegundos. En este caso, el siguiente bucle comenzará una vez que el código haya terminado de ejecutarse

Consulte los siguientes artículos de la Ayuda de LabVIEW para obtener más información acerca de las diferencias entre la función Esperar (ms) y la función Múltiple Esperar hasta el siguiente ms.

¿FUE ESTE ARTÍCULO DE AYUDA?

No