<< Chapter < Page Chapter >> Page >

Clusters

Los clusters son tipos de datos compuestos por varios elementos de distintos tipos. Son los equivalentes a las estructuras de datos del lenguaje de programación C y similares, o a las clases, en los lenguajes de Programación Orientados a Objetos , como el C++, Java , etc. En LabVIEW , cuando interesa unir varios tipos de datos bajo el mismo nombre, entonces se crea un cluster con ese nombre. Esto, suele ser muy práctico para que en el diagrama, aparezcan muchas menos líneas de conexiones yéstas estén agrupadas según un criterio dado. En el ejemplo que viene a continuación, se muestra cómo tres tipos de datos distintos (número real, número entero y cadena de caracteres) que se encuentran en los controles de la izquierda son llevados a la parte derecha del diagrama como unaúnica unidad, derecha. Para aguparlos, se utiliza el objeto Bundle , izda., que se encuentra en Functions/Programming/Cluster, Class&Variants . En cambio, en el lado derecho, tanto del diagrama como del panel, se encuentran los indicadores que permiten visualizar los valores enviados desde los controles antes mencionados. Para ello, se utiliza el objeto Unbundle , dcha., cuya misión es obtener los elementos individuales del grupo que llega a su entrada.

Otra interesante aplicación de los clusters es la de crear aplicaciones con menús de botones y máquinas de estados. Para crear un menúde botones se inserta un objeto cluster desde el panel, desde Controls/Classic/Cluster/Classic Array, Matriz&Cluster . A continuación se insertan dos botones de tipo OK a los que se les elimina la etiqueta externa, en el cluster . Se edita cada uno de ellos con el botón derecho del ratón y ejecutando Properties y en la ficha Appearance , en Off text , se elimina OK y se escribe“+”en un caso y“-“en el otro.

En el diagrama, se introduce una sentencia while para controlar la ejecución de la aplicación, donde el cluster anterior es introducido en ella, . A la salida del cluster se conecta un conversor de tipo Cluster to Array , que se encuentra en Functions/Programming/Array . A su vez, la salida de este conversor es llevado a la entrada superior del Search 1D Array , donde su entrada inferior estáconectada a una constante booleana de valor true . Asi, este objeto proporciona elíndice del array cuyo elemento ha proporcionado un true , es decir, en este caso, cuyo botón ha sido pulsado. De este modo, si se pulsa el primer botón, la función Search 1D Array devuelve un 0, si se pulsa el segundo, devuelve un 1, y asísi hubiera más botones. En cambio, si no se pulsa ningún botón, la función devuelve–1.

En este sentido, si a la salida de esta función conectamos una sentencia de selección múltiple, entonces se puede colocar en cada sentencia el código asociado al botón o función que se quiera realizar. Así, tendriamos una sentencia o estado de reposo para cuando no se pulsa ningún pulsador (-1), otro para la suma de los dos operandos (0), y finalmente para le resta de los operandos (1). Además del código asociado a cada estado o función, se colocaráuna constante de tipo cadena o string, que iráconectado a la salida de la sentencia para que en el panel se pueda ver el estado en el que se encuentra la aplicación en todo momento. Dendro de la sentencia while , se añadiráun temporizador de 1 segundo para que se puedan ver los resultados en tiempo de ejecución de la aplicación.

La aplicación anterior vuelve automáticamente al estado de reposo. Otra forma de hacer la misma aplicación es introduciendo el código del cluster y la Search 1D Array en la sentencia asociada al reposo, pero añadiendo también un registro de desplazamiento a la sentencia while , . Así, tal y como se puede ver, el estado inicial es el de reposo (-1), y al pulsar alguno de los dos pulsadores, la salida de la Search 1D Array proporciona el código asociado y vía registro de desplazamiento vuelve por la entrada de la sentencia múltiple para ejecutar el correspondiente caso. Pero cada uno de estos casos lleva el valor del código del estado que se quiere ejecutar tras su ejecución, que en nuestro caso es–1, el de reposo (ver los dos casos de ).

Esto muestra claramente que estos códigos no tienen por quéser el de reposo, si no otros que el programador desee. De esta forma se pueden definir ciclos de máquinas de estados, aunque LabVIEW ya posee objetos específicos para realizar máquinas de estados.

Ejercicios propuestos

Construye un instrumento virtual que genere un array unidimensional con los valores de dos ciclos completos de la función trigonométrica seno.

Construye un instrumento virtual que genere un array bidimensional con los valores de dos ciclos completos de las funciones trigonométricas seno (1ªfila), coseno (2ªfila), tangente (3ªfila) y cotangente (4ªfila).

Construye un instrumento virtual que genere un array bidimensional con los valores de 4 fechas en el formato: día mes año (p.e 23 de septiembre de 2008: 23 09 2008).

Construye un VI con un menúde botones que realiza exactamente las mismas operaciones que la aplicación Calculadora2.vi , es decir, con los dos operandos, las operaciones artméticas +, -, * y división. Con el operando 1 tomando como elángulo en grados, las operaciones trigonométricas sin, cos, tan y cotan, y con el operando 2, la raíz cuadrada y la inversa. Todos los resultados se muestran en el mismo indicador.

Realiza un VI que implementa la máquina de estados de . Los estados son los círculos, y las letras, las acciones para pasar de un estado a otro (pulsadores).

Realiza un VI con un menúde botones que realiza varias operaciones con dos arrays cuadrados de 3x3, A y B. Elige el modo de iniciaización más cómodo para los arrays. Las operaciones son: para los dos arrays: +, -, * , para el array A: determinante, inversa, transpuesta.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Primeros pasos con labview. OpenStax CNX. Oct 29, 2008 Download for free at http://cnx.org/content/col10592/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Primeros pasos con labview' conversation and receive update notifications?

Ask
Yacoub Jayoghli
Start Quiz
Hope Percle
Start Quiz
Robert Murphy
Start Test