Configurar Ciclos For de LabVIEW para Salir de Manera Condicional

Información general

Desde su inicio en 1986, el software LabVIEW de NI ha incorporado conceptos de programación similares a los de los lenguajes basados en texto. Por ejemplo, las declaraciones de programación como los Ciclos For y Ciclos While permiten que el código se ejecute repetidamente. Los lenguajes basados en texto también proporcionan métodos para terminar la ejecución del ciclo en una condición específica; en LabVIEW, únicamente el Ciclo While permitió este comportamiento antes de NI LabVIEW 8.5.

Contenido

Agregar una Terminal Condicional a un Ciclo For de LabVIEW

Desde LabVIEW 8.5, usted puede agregar una terminal condicional para configurar un Ciclo For para que se detenga cuando se produce una condición booleana o un error. Un Ciclo For con una terminal condicional se ejecuta hasta que se produce la condición o hasta que se completan todas las iteraciones, lo que ocurra primero. Los Ciclos For que usted configura para una salida condicional tienen un glifo rojo junto a la terminal de conteo ( N ), así como una terminal condicional en la esquina inferior derecha. Una vez que configura el Ciclo For para que salga condicionalmente (en otras palabras, en una pausa), el ciclo aparece similar a la Figura 1.

Figura 1. Ciclo For Configurado para una Salida Condicional

Para agregar una terminal condicional a un Ciclo For, haga clic derecho en el borde del Ciclo For y seleccione Conditional Terminal en el menú de acceso directo. Luego debe cablear la terminal condicional y cablear la terminal de conteo o auto-index una matriz de entrada para que se ejecute el ciclo y para que se ejecute el VI.

Figura 2. Agregar una Terminal Condicional a un Ciclo For

Información de Contexto

Los programadores a menudo necesitan detener un ciclo cuando se produce una condición específica. Los lenguajes basados en texto incluyen instrucciones que permiten que tanto los Ciclos For como los Ciclos While salgan en una condición específica. Por ejemplo, en el siguiente código de C de ejemplo, el ciclo se programa para iterar 50 veces (de 0 a 49). Sin embargo, el ciclo detiene la ejecución utilizando la función Break después de 11 iteraciones, cuando i = 10.

int i;
i = 0;
para (i = 0; i < 50; i++)
   {
   si (i == 10)
      pausa;
   }

Un programador de LabVIEW que necesita iterar todos los elementos de un arreglo a menudo usa un Ciclo For porque permite auto-indexing de la matriz. El código típico de LabVIEW se ve como la Figura 3.

Figura 3. Código de LabVIEW para un Ciclo For

Si bien esta solución es funcionalmente correcta, el ciclo For visita todos los elementos del arreglo, incluso si la condición de salida se produce en una iteración temprana del ciclo. Para una mayor eficiencia, puede utilizar un ciclo While (consulte la Figura 4). Esta solución, que es más compleja y requiere más código, recorre el arreglo hasta que se produce la condición de salida o se alcanza el final del arreglo. Como se muestra en la Figura 1, un Ciclo For configurado para una condición de pausa es una solución mucho más simple y elegante.

Figura 4. Un Ciclo While Configurado para Asignar Índice a un Arreglo

También puede utilizar un ciclo While para buscar un arreglo; cuando haya encontrado su elemento de interés, el ciclo deja de ejecutarse. Si el elemento no está en la matriz, el resultado es un bucle infinito.

  

Figura 5. Ciclo While Que Conduce Potencialmente a un Ciclo Infinito

Una mejor solución es usar un Ciclo For configurado para una pausa. Si el elemento de interés no se encuentra en el arreglo, el ciclo se detiene después de N iteraciones.

 Figura 6. Ciclos For Mitigan la Posibilidad de un Ciclo Infinito

Notas Adicionales sobre Ciclos For con Salidas Condicionales

Un Ciclo For Loop configurado para una salida condicional podría no ejecutarse N veces (o sobre un arreglo completo de auto-indexing). Una vez configurado para salir condicionalmente, N representa el número máximo de posibles iteraciones del ciclo, pero no es necesariamente el número exacto de veces que se ejecutará el ciclo.

La terminal condicional se comporta igual que en un Ciclo While. Puede cambiar la terminal condicional a Continue if True o conectar un clúster de error (vea la Figura 7). No puede eliminar la terminal condicional; para eliminar la terminal condicional, debe quitar la opción Conditional Terminal en el menú contextual del ciclo.

 

Figura 7. Cablear un Clúster de Error a la Terminal Condicional

Si usted configura un Ciclo For para salir de manera condicional, no puede predecir el tamaño de ningún arreglo de salida de auto-index (acumulada), aunque usted podría conocer el límite superior. El número de elementos en un arreglo de auto-index es igual al número de veces que se repite el ciclo.

Was this information helpful?

Yes

No