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.