Túneles con auto indexación en bucles For y While en LabVIEW

Actualizado el Dec 29, 2023

Reportado en

Software

  • LabVIEW

Detalles del problema

  • Cuando se realiza el cableado a través del bucle For o While los túneles (del inglés tunnels) para los cables pueden ser sólidos o tener corchetes. ¿Cuál es la diferencia entre estos túneles y cómo puedo cambiarlos?
  • Cuando se realiza el cableado a través de un bucle For o While, el tipo de datos a la entrada es diferente al tipo de datos a la salida. ¿Por qué pasa esto?

Solución

¿Qué es la Auto-Indexación? (del inglés Auto-Indexing)
                       Auto-indexed tunnel habilitado           Auto-indexed tunnel deshabilitado
 
La indexación automática (auto-indexing) es la habilidad de LabVIEW de leer y procesar cada elemento de un arreglo al usar un bucle For o While . Cuando la indexación automática está habilitada, los elementos de un arreglo entran al bucle y son procesados uno a la vez (un elemento por cada iteración del bucle). 

Los corchetes en las terminales de entrada y de salida de un bucle indican que la indexación automática está habilitada. Esta es la configuración predeterminada al conectar cables hacia y desde bucles For. 

Tip: Si habilita la indexación automática en un arreglo conectado a una terminal de entrada en un bucle For, LabVIEW establece la terminal de conteo (marcada con una N) con el tamaño del arreglo conectado, así que no necesita conectar la terminal de conteo. 

Auto-indexación y bucles For
La indexación automática está habilitada de forma predeterminada para cada arreglo que se conecta a un bucle For porque una aplicación común de un bucle For es procesar elementos individuales del arreglo. Puede desactivar la indexación automática si no se necesita procesar los elementos de una arreglo individualmente. Cuando se desactiva la entrada de indexación automática, el bucle For maneja todos los elementos del arreglo a la vez, en lugar de manejar un elemento por iteración.

Del mismo modo, cuando se indexa automáticamente un túnel de salida del arreglo, el arreglo de salida recibe un nuevo elemento de cada iteración del bucle. Por lo tanto, los arreglos de salidas auto indexadas siempre tienen el mismo tamaño que el número de iteraciones. Si se deshabilita la indexación automática en el túnel de salida, recibirá el valor de los datos de la última iteración, no los elementos de cada iteración.

Auto-indexación y bucles While
La indexación automática está deshabilitada de forma predeterminada al cablear dentro o fuera de bucle While , por lo que el túnel de cableado será sólido. Si se habilita la indexación automática para un arreglo que ingresa a un bucle While, éste indexa el arreglo de la misma manera que lo hace un bucle For. Sin embargo, el número de iteraciones a las que se ejecuta el bucle While no está limitado por el tamaño del arreglo, ya que el bucle While itera hasta que se cumple una condición específica. Además, cuando se indexa automáticamente un túnel de salida del arreglo, el arreglo de salida recibe un nuevo elemento de cada iteración del bucle.

¿Cómo habilitar o deshabilitar la indexación automática?
  • Terminales de Entrada: Para alternar entre los túneles de indexación automática y no indexación, debe de hacer clic con el botón derecho en un túnel y seleccione Enable Indexing o Disable Indexing.
  • Terminales de Salida: 
    • Para habilitar la indexación automática, de clic derecho en el túnel de salida y seleccione Tunnel Mode>>Indexing. El resultado final de la terminal de salida al usar este modo será un arreglo con tamaño correspondiente al número de iteraciones del bucle.
    • Para deshabilitar la indexación automática, de clic derecho en el túnel de salida y seleccione Tunnel Mode>>Last Value. Cuando el código se ejecute completamente, la terminal de salida regresará solo un elemento, el correspondiente a la última iteración del bucle.

Información adicional

  • Si dos arreglos de diferentes longitudes se indexan automáticamente en un bucle For, entonces el arreglo de menor tamaño determina el número total de iteraciones. Ejemplo: dos arreglos numéricos de tamaños 4 y 8 se indexan automáticamente en un bucle For , el número total de iteraciones se limitará a 4.
  • Si dos arreglos de diferente longitud se indexan automáticamente en un bucle While, entonces ambos se indexarán hasta que queden sin datos y el valor predeterminado de ese tipo de datos rellenará el resto del arreglo en cada iteración subsiguiente. Un bucle While tiene una condición de parada que es independiente de los arreglos, por lo que el programa debe tener cuidado de detener el bucle While cuando sea apropiado para evitar que se agreguen datos erróneos a los arreglos de entrada y salida.