You are on page 1of 18

Ricardo Ignacio Gavino Soriano

Paralelo: 4
Practica # 3

Tema: Simulaciones en multisim y tarea 2


Labview

Fecha: 13 de Junio del 2017

Mesa de trabajo: 4
Profesor: Angel Josue Valencia Armijos

Ayudante: Ricardo Andres Cajape Toro

Año lectivo
2017 - 2018
Objetivos

Familiarizarse con nuevas funciones y Estructuras de Programación de


LabView como: Cluster y Estructura Case.

Aprender a configurar una Tarjeta DAQ.

Aprender los procedimientos básicos para la Adquisición de Datos.


Marco teórico
Clusters
Los clusters agrupan elementos de datos de diferentes tipos. Un ejemplo de un
cluster es el cluster de error de LabVIEW, el cual combina un valor Booleano, un
valor numérico y uno de cadena de caracteres. Un cluster es similar a un registro
o a una estructura en lenguajes de programación basados en texto.
Construir varios elementos de datos en clusters elimina el desorden de cables
en el diagrama de bloques y reduce el número de terminales del panel conector
que los subVIs necesitan. El panel conector tiene, a lo más, 28 terminales. Si su
panel frontal contiene más de 28 controles e indicadores que quiera pasar a otro
VI, agrupe algunos de ellos en un cluster y asigne el cluster a una terminal en el
panel conector.
Orden de Elementos de Cluster
Aunque el cluster y los elementos de arreglo están ordenados, debe desagrupar
todos los elementos del cluster una vez usando la función Unbundle. Puede usar
la función Unbundle By Name para desagrupar los elementos del cluster por
nombre. Si utiliza la función Unbundle by Name, cada elemento del cluster debe
tener una etiqueta. Los clusters también se diferencian de los arreglos ya que
tienen un tamaño fijo. Como un arreglo, un cluster puede ser un control o un
indicador. Un cluster no puede contener una combinación de controles e
indicadores.

Crear Controles e Indicadores de Cluster


Cree un control o indicador de cluster en el panel frontal al añadir una estructura
de cluster al panel frontal, como se muestra en el siguiente panel frontal y al
arrastrar un objeto de datos o elemento, que puede ser un control o indicador
numérico, Booleano, de cadena de caracteres, path, refnum, arreglo hacia el
interior de la estructura del cluster.

Figura 9. Creación de un Control de Cluster

La Figura 10 es un ejemplo de un cluster que contiene tres controles: una


cadena de caracteres, un interruptor Booleano y un numérico.

Figura 10. Ejemplo de Control de Cluster


Crear Constantes del Cluster
Para crear una constante del cluster en el diagrama de bloques, seleccione una
constante del cluster en la paleta de Funciones, coloque la estructura del cluster
en el diagrama de bloques y coloque una constante de cadena de caracteres,
constante numérica, constante Booleano o constante cluster en la estructura del
cluster. Puede usar una constante de cluster para almacenar datos constantes o
como un punto de comparación con otros clusters.
Si tiene un control o indicador de cluster en la ventana del panel frontal y quiere
crear una constante de cluster que contenga los mismos elementos en el
diagrama de bloques, puede arrastrar el cluster desde la ventana del panel
frontal al diagrama de bloques o dar clic con botón derecho en el cluster en la
ventana del panel frontal y seleccione Create»Constant en el menú de acceso
directo.

Usar Funciones de Cluster


Use las funciones de Cluster para crear y manipular clusters. Por ejemplo, puede
realizar tareas similares a las siguientes:
 Extraiga elementos de datos individuales desde un cluster.
 Añada elementos de datos individuales a un cluster.
 Fracture un cluster en sus elementos de datos individuales.
Use la función de Bundle para ensamblar un cluster, use la función Bundle y la
función Bundle by Name para modificar un cluster y use la función Unbundle y la
función Unbundle By Name para desensamblar clusters.
También puede colocar las funciones Bundle, Bundle by Name, Unbundle, y
Unbundle by Name en el diagrama de bloques al dar clic con botón derecho en
la terminal del cluster en el diagrama de bloques y al seleccionar el Cluster,
Paleta Class & Variant en el menú de acceso directo. Las funciones de Agrupar
y Desagrupar contienen automáticamente el número correcto de terminales. Las
funciones Agrupar por Nombre y Desagrupar por Nombre aparecen con el primer
elemento en el cluster. Use la herramienta de Posición para cambiar el tamaño
de las funciones de Agrupar por Nombre y Desagrupar por Nombre para mostrar
los otros elementos del cluster.

Ensamblar Clusters
Use la función Bundle para ensamblar un cluster desde elementos individuales
o para cambiar los valores de los elementos individuales en un cluster existente
sin tener que especificar los nuevos valores para todos los elementos. Use la
herramienta de Posición para cambiar el tamaño de la función o haga clic con
botón derecho en una entrada de elemento y seleccione Añadir Entrada desde
el menú de acceso directo.
Figura 11. Ensamblar un Cluster en el Diagrama de Bloques

Modificar un Cluster
Si cablea la entrada de cluster, puede cablear solamente los elementos que
desea cambiar. Por ejemplo, el Cluster de Entrada que se muestra en la Figura
12 contiene tres controles.

Figura 12. Bundle se Usa para Modificar un Cluster

Si conoce el orden del cluster, puede usar la función Bundle para cambiar el valor
del Comando al cablear los elementos que se muestran en la Figura 12.
También puede usar la función Bundle By Name para reemplazar o tener acceso
a elementos etiquetados de un cluster existente. La función de ABundle by Name
funciona como la función de Bundle, pero en lugar de relacionar los elementos
del cluster por su orden de cluster, los relaciona por sus etiquetas. Solamente
puede tener acceso a elementos con etiquetas propias. El número de entradas
no necesita ser igual al número de elementos en un cluster de salida.
Use la herramienta de Operación para hacer clic en una terminal de entrada y
seleccionar un elemento en el menú desplegable. También puede hacer clic con
botón derecho en la entrada y seleccionar el elemento con Seleccionar Elemento
en el menú de acceso directo.
En la Figura 13, puede usar la función de Bundle by Name para actualizar los
valores de Comando y Función con los valores del Nuevo Comando y Nueva
Función.

Figura 13. Bundle by Name se Usa para Modificar un Cluster

Use la función de Bundle by Name para estructuras de datos que pueden


cambiar durante el desarrollo. Si añade un nuevo elemento al cluster o modifica
su orden, no necesita reescribir la función de Bundle by Name ya que los
nombres siguen siendo válidos.
Desensamblar Clusters
Use la función Unbundle para separar un cluster en sus elementos individuales.
Use la función Unbundle By Name para regresar los elementos del cluster de los
cuales especificó los nombres. El número de terminales de salida no depende
del número de elementos en el cluster de entrada.
Use la herramienta de Operación para hacer clic en una terminal de salida y
seleccionar un elemento en el menú desplegable. También puede hacer clic con
botón derecho en la terminal de salida y seleccionar el elemento con Seleccionar
Elemento en el menú de acceso directo.
Por ejemplo, si usa la función Unbundle con el cluster en la Figura 14, tiene
cuatro terminales de salida que corresponden a los cuatro controles en el cluster.
Debe conocer el orden del cluster para que pueda asociar la terminal Booleano
correcta del cluster desagrupado con el interruptor correspondiente en el cluster.
En este ejemplo, los elementos están ordenados de arriba hacia abajo
comenzando con el elemento 0. Si usa la función Unbundle by Name, puede
tener un número arbitrario de terminales de salida y tener acceso a elementos
individuales por nombre en cualquier orden.

Figura 14. Unbundle and Unbundle by Name


Estructuras de Ejecución en LabVIEW

Las estructuras de ejecución contienen secciones de código gráfico y controlan


cómo y dónde el código dentro se ejecuta. Las estructuras de ejecución más
comunes son Ciclos While, Ciclos For y Estructuras de Casos los cuales puede
usar para ejecutar la misma sección del código varias veces o para ejecutar una
sección diferente del código basada en alguna condición.

Ciclos en LabVIEW

Ciclos While
Similar a un Ciclo Do o a un Ciclo Repeat-Until en lenguajes de programación
basados en texto, un Ciclo While, que se muestra en la Figura 1, ejecuta el
código que contiene hasta que ocurre una condición.

(1) Ciclo While de LabVIEW | (2) Diagrama de Flujo | (3) Código Pseudo
La Figura 1 muestra un Ciclo While en LabVIEW, un diagrama de flujo
equivalente a la funcionalidad de Ciclo While
y un código de ejemplo pseudo de la funcionalidad del Ciclo While.

El Ciclo While está ubicado en la paleta Structures. Seleccione el Ciclo While en


la paleta y después use el cursor para arrastrar una selección rectangular
alrededor de la sección del diagrama de bloques que desea repetir. Cuando
suelte el botón del mouse, un borde del Ciclo While encierra la sección que
seleccionó.
Añada objetos del diagrama de bloques al Ciclo While al arrastrarlos dentro del
Ciclo While.
El Ciclo While ejecuta el código que contiene hasta la terminal condicional, una
terminal de entrada, recibe un valor Booleano específico.
También puede realizar manejo básico de error usando la terminal condicional
de un Ciclo While. Cuando cablea un cluster de error a la terminal condicional,
solamente el valor True o False del parámetro de estatus del cluster de error
pasa a la terminal. También, los elementos del menú Stop if True y Continue if
True cambian a Stop if Error y Continue while Error.

La terminal de iteración es una terminal de salida que contiene el número de


iteraciones terminadas.
La cantidad de iteraciones para el Ciclo While siempre comienza en cero.
Nota: El Ciclo While siempre se ejecuta por lo menos una vez.

Ciclos Infinitos
Los ciclos infinitos son un error común de programación que involucra un ciclo
que nunca se detiene.
Si la terminal condicional es Stop if True, usted coloca la terminal de un control
Booleano afuera de un Ciclo While. Si el control es FALSE cuando el ciclo
comienza, provoca un ciclo infinito.

Figura 2. Control Booleano Fuera del Ciclo While

Cambiar el valor del control no detiene al ciclo infinito ya que el valor es de lectura
una vez y eso sucede antes que el ciclo inicie. Para usar un control para detener
un Ciclo While, debe colocar la terminal del control dentro del ciclo. Para detener
un ciclo infinito, debe abortar e VI al dar clic en el botón Abort Execution de la
barra de herramientas.
En la Figura 3 el Ciclo While se ejecuta hasta que la salida de la función Random
Number es mayor o igual que 10.00 y el control Enable esTrue. La función Añadir
regresa True solamente su ambas entradas son True. De lo contrario, regresa
False.
En la Figura 3, hay un ciclo infinito ya que la función Random nunca generara
un valor igual o mayor que 10.0 0.

Figura 3. Ciclo Infinito

Túneles de Estructura
Los túneles alimentan datos desde y hacia estructuras. El túnel aparece como
un bloque sólido en el borde el Ciclo While. El bloque es el color del tipo de datos
cableado al túnel. Los datos salen fuera de un ciclo después de que el ciclo
termina. Cuando un túnel pasa datos a un ciclo, el ciclo se ejecuta solamente
después que los datos llegan al túnel.
En la Figura 4, la terminal de iteración está conectada a un túnel. El valor en el
túnel no pasa al indicador de iteraciones hasta que el Ciclo While termina de
ejecutarse.

Figura 4. Túnel de Ciclo While

Solamente el último valor de la terminal de iteración se muestra en el indicador


de iteraciones.

Ciclos For

(1) Ciclo For de LabVIEW | (2) Diagrama de Flujo | (3) Código Pseudo
El Ciclo For está en la paleta Structures. También puede colocar un Ciclo While
en el diagrama de bloques, dar clic con botón derecho en el Ciclo While y
seleccionar Replace with For Loop en el menú de acceso directo para cambiar
un Ciclo While Loop a Ciclo For.

La terminal de conteo es una terminal de entrada cuyos valores indican cuantas


veces se repite el subdiagrama.

La terminal de iteración es una terminal de salida que contiene el número de


iteraciones terminadas.

La cantidad de iteraciones para el Ciclo For siempre comienza en cero.


El Ciclo For difiere del Ciclo While en que el Ciclo For ejecuta un número de
veces establecido. Un Ciclo While detiene la ejecución solamente si existe el
valor en la terminal condicional.
El Ciclo For en la Figura 6 genera un número aleatorio cada segundo por 100
segundos y muestra los números aleatorios en un indicador numérico.

Figura 6. Ejemplo de Ciclo For


Añadir Temporización a los Ciclos
Cuando un ciclo termina de ejecutar una iteración, inmediatamente comienza la
próxima iteración, a menos que alcance una condición de paro. A menudo se
necesita controlar la frecuencia y la temporización de la iteración Por ejemplo, si
está adquiriendo datos y desea adquirir los datos una vez cada 10 segundos,
necesita una manera de temporizar las iteraciones del ciclo para que ocurran
una vez cada 10 segundos. Aún si no necesita que la ejecución ocurra a una
cierta frecuencia, necesita proporcionar al procesador el tiempo para completar
otras tareas, como responder a la interfaz de usuario.

Función de Espera
Coloque una función de Espera dentro del ciclo para permitir que un VI se
duerma por un cierto tiempo. Esto permite que su procesador maneje otras
tareas durante el tiempo de espera. Las funciones de espera utilizan el reloj de
milisegundos del sistema operativo.

La función de Espera (ms) espera hasta que el contador de milisegundos cuenta


una cantidad igual a la entrada que usted especificó. Esta función garantiza que
la razón de ejecución del ciclo sea por lo menos la cantidad de la entrada que
usted especificó.

Terminal condicional a un bucle for


Si es necesario, se puede añadir un terminal condicional para configurar un bucle
for para parar cuando se produce una condición booleana o un error.
1. Haga clic en el borde del bucle condicional y seleccione Terminal.

2. Un bucle con un terminal condicional se ejecuta hasta que se produce la


condición o hasta que todas las iteraciones se completa, lo que ocurra primero.
3. Para bucles que se configuran para una salida condicional tienen un glifo rojo
en el terminal de recuento, así como una terminal condicional en la esquina
inferior derecha.
4. Después de configurar el bucle for para salir condicionalmente, el bucle es
similar a la siguiente figura. La siguiente bucle genera un número aleatorio cada
segundo hasta 100 segundos ha pasado o el usuario hace clic en el botón de
parada.
La generación de números aleatorios fuera del rango de 0-1

Problema:
¿Cómo se genera un número fuera del rango de cero a uno en LabVIEW? En
concreto, ¿cómo generar números aleatorios entre un mínimo determinado y el
número máximo?

Solución:
Dado un rango entre Max y Min, la siguiente es la fórmula general para la
generación de números aleatorios entre un mínimo dado y el número máximo:

(Max - Min) * random(0 a 1) + Min = random(Min a Max)

El código adjunto a continuación demuestra esta fórmula. El Rand_num.vi


genera un solo número aleatorio y es compatible con LabVIEW 5.0 y posterior. El
Rand_ary.vi genera una matriz de números aleatorios de un cierto tamaño y
puede aleatorizar un rango de números. El Rand_ary VI es compatible con
LabVIEW 6.0 y posterior.

Figura 1: Uso de Rand_num.vi para generar un número aleatorio entre los


valores máximo y mínimo dado.
Figura 2: Uso de Rand_ary.vi para generar una matriz llena de números
aleatorios entre los valores máximo y mínimo dado.

Función de selección

Se requiere: Paquete Base


Devuelve el valor cableado a la t de entrada o f de entrada, dependiendo del valor de s . Si s es
TRUE, esta función devuelve el valor conectado a t . Si s es FALSO, esta función devuelve el valor
de cableado a f .
El panel conector muestra los tipos de datos por defecto para esta función polimórfica.
Ejemplo

t es el valor que esta función devuelve si s pasa un valor TRUE. t y f deben ser del
mismo tipo, pero pueden tener diferentes representaciones numéricas.

s determina si la función devuelve el valor de t o f en s? t: f . Si cablea un cluster de


error a s y se produce un error, el cluster de error pasa un valor TRUE a la función. De lo
contrario, el cluster de error pasa un valor falso a la función.

f es el valor que esta función devuelve si s pasa un valor FALSE. t y f deben ser del
mismo tipo, pero pueden tener diferentes representaciones numéricas.

s? t: f es el valor cableada a t si s es TRUE. s? t: f es el valor cableada a f si s es falso.


Procedimiento
Practica

Generador de Funciones

Con la estructura case se construye este generador, luego usamos un clúster y


colocaremos en su interior dos controles dial, los cuales servirán para regular la
amplitud y frecuencia de dichas funciones que serán generadas.

Entrada Análoga de Voltaje

En este caso se utiliza el DAQ Assistant el mismo que sirve para adquirir
señales de un generador de funciones real y luego conectamos el DAQ
Assistant con un Waveform Chart el cual nos mostrara la gráfica generada por
el generador de funciones real. Luego de realizar todos los pasos requeridos se
debe verificar la correcta conexión para evitar daños.

Salida Análoga de Voltaje

Para este caso utilizamos el generador de funciones construido al inicio de la


práctica para asi conectarlo con el DAQ Assistant(out), unas realizado las
coneccione paso a paso para esa práctica utilizamos una punta de prueba para
asi enviar una señal al osciloscopio y este nos muestre las grafica que se ha
generado en ese momento.

Tarea Labview parte 2

En el ejercicio 1utilice mapa de Karnough para reducir a una expresión con la


que podamos trabajar en Labview luego usamos Booleanos para tener una
expresión final.

En el ejercicio 2 utilice Select, For Loop, Random Number, comparadores así


como también controladores e indicadores.
Cálculos teóricos
Simulaciones
Practica

Generador de funciones
Entrada Análoga de voltaje

Salida Análoga de Voltaje

Tarea Labview parte 2

Ejercicio 1
Ejercicio 2
Referencias bibliográficas
NI, 08/12/2010, Estructuras de Ejecución en LabVIEW, Ecuador, ni.com,
http://www.ni.com/getting-started/labview-basics/esa/execution-structures

NI, 08/12/2010, LabVIEW Advanced Signal Processing Toolkit, Ecuador,


ni.com, http://sine.ni.com/nips/cds/view/p/lang/es/nid/209055

NI, 13/10/2015 LabVIEW Advanced Signal Processing Toolkit, Ecuador, ni.com,


http://www.ni.com/white-paper/7588/en/

NI, 27/01/2014, 306GBRR9, ni.com, Ecuador, La generación de números


aleatorios fuera del rango de 0-1,
http://digital.ni.com/public.nsf/allkb/FCCDCD678EEF3A9186256D7B008054F5

NI, 01/06/2011, 371361H 01, Ecuador, ni.com, http://zone.ni.com/reference/en-


XX/help/371361H-01/glang/select/

NI, 08/12/2010, Estructuras de Ejecución en LabVIEW, Ecuador, ni.com,


http://www.ni.com/getting-started/labview-basics/esa/execution-structures

NI, 08/12/2010, LabVIEW Advanced Signal Processing Toolkit, Ecuador,


ni.com, http://sine.ni.com/nips/cds/view/p/lang/es/nid/209055

You might also like