LabVIEW Estructuras de Control

8

Click here to load reader

description

1.- Generador de Funciones 2.- Control de Temperatura 3.- Control de Accesos 4.- Funcion Fibonacci 5.- Maquina de estados de un robot resuelve laberinto

Transcript of LabVIEW Estructuras de Control

Page 1: LabVIEW Estructuras de Control

ASIGNATURA: Instrumentación Virtual

ALUMNO:

Becerra Herrera Diego Miguel

Grupo: 3MM4

Situación Académica: Inscrito

Institutito Politécnico Nacional Unidad Profesional Interdisciplinaria en

Ingeniería y Tecnologías Avanzadas

Practica 1

Estructuras de control

Page 2: LabVIEW Estructuras de Control

Ejercicio 1: Generador de Funciones A) El usuario deberá seleccionar la forma de onda mediante un control Text Ring.

Se creó el Text Ring y se editaron los elementos para darles el orden pedido.

B) La presentación de gráficas debe estar acotada entre 15 y -15V.

Una vez creado, se editan las propiedades de escala del WaveForm.

C) Agregar los controles y métodos necesarios para que el usuario modifique la amplitud de

la forma de onda entre 0 y 10 unidades.

El usuario es capaz de modificar la amplitud de la señal a través de un control tipo Knob, éste incrementa la salida de la señal directamente del ciclo while. (Señalx2, Señalx3, Señalx4, etc).

D) Agregar los controles y métodos necesarios para que el usuario modifique un offset entre -10 y 10 unidades. De las imágenes anteriores, se puede apreciar el offset, también en Knob en donde el valor ingresado se suma (o resta) directamente a la salida de la señal, realizándose un desplazamiento en altura a la señal.

E) Agregar los controles y métodos necesarios para que el usuario modifique la frecuencia de

la forma de onda

Page 3: LabVIEW Estructuras de Control

En imágenes anteriores también se aprecia el Knob de frecuencia. Lo que realiza es un incremento de t, para el ciclo while. Es importante mencionar que el Knob comienza con 1, pues al ser 0, no habría incremento (además no puede el

usuario tener una frecuencia 0).

F) Romper la señal a 10 o -10 V.

Esto se realiza de manera sencilla con la función Select. El valor de salida de la señal, se le condiciona si es mayor a

10, el valor máximo será 10, de lo contrario se respeta el valor de entrada. De la misma forma a ese valor ya condicionado, se le vuelve a condicionar si es menor a -10 su valor mínimo siempre será -10.

Observaciones: En algunas ocasiones el programa cuando se corre por primera vez únicamente mostrará una línea en lugar de la señal deseada. Esto se soluciona modificando la frecuencia (una vez hecho esto ya se puede regresar al valor anterior). Al intentar corregir este defecto, se notó que no siempre ocurre, por lo tanto es difícil identificar la fuente. Resultados: Con excepción del “glitch” anterior, el programa cumple con lo requerido en la práctica.

Ejercicio 2: Sistema de Control de Temperatura Como indica el ejercicio, se coloca un indicador tipo termómetro (entre 0 y 100), así como un control tipo Knob llamado objetivo y 2 leds uno llamado Calentando y otro Enfriando. Se editaron las propiedades del termómetro para agregar otro slider. El principal (slider 1) se llenará con color Rojo, y al segundo (slider 2) no se llenará (es decir, el tipo de llenado será vacío, que es la primera opción al editarlo).

Page 4: LabVIEW Estructuras de Control

Ya en el Diagrama de Bloques, un ciclo while que contiene:

A) Es el valor de inicio que se irá modificando y directamente se envía al termómetro (variable de control). Este valor

llenará el termómetro en el primer Slider (el rojo) y se modifica cada 50ms. B) El programa pregunta si el valor en el termómetro es igual a la del objetivo, de ser así, el programa no le hace

ningún cambio a dicho valor, además los leds se apagan (esto con un arreglo de compuertas lógicas). C) Ambos valores no son iguales, sufren otra condición. Si la variable de control es MENOR al objetivo (parte False

del Select), a la variable de control se incrementará en 1 hasta que cambie la condición. Si la variable de control es MAYOR al objetivo (parte True del Select), la variable disminuirá en 1 hasta que cambie la condición.

D) Finalmente ambos valores son llevados al termómetro. E) En la parte de los leds, si el la variable de control va en disminuyendo, se encenderá el led de Enfriando de lo

contrario se enciende el de Calentando.

Observaciones: En la imagen anterior puede verse como tanto la variable de control como el objetivo (lado derecho del termómetro) tienen ambos 4 dígitos decimales, esto por la representación del indicador y el control. La práctica requiere que cada 50ms se incremente la variable de control en 1°C, ahora bien, si la variable de control se incrementa en 1, pero el objetivo tiene como valor (por ejemplo) 74.8603, nunca va a llegar a ese valor y no se va a cumplir lo deseado. Entonces al Knob de control, se editó de tal forma que vaya en incrementos de 1.

A

B

C

D

E

El Knob de

objetivo,

tiene

incremento 1

El primer

Cuadro indica

la variable de

control y el

segundo el

objetivo.

Page 5: LabVIEW Estructuras de Control

Resultados:

Ejercicio 3: Control de Accesos

Para el Indicador de Contraseña, se editó de tal forma que muestre únicamente el carácter „*‟. Esto se puede realizar dando click derecho y en “Password Display”.

A) Todo se incluye dentro de un ciclo while, que contiene un shift register inicializado en 0. B) Al Cluster se le aplica un Unbundle by Name para separar los datos contenidos dentro de él. El String para

Usuario, el de la contraseña y un Botón que sirve para hacer el cambio de estado en el Case que sigue. C) A ambos String se les compara con una constante (que va a ser el Usuario y contraseña predeterminados). D) De errar en cualquiera de ellos, el Indicador de Usuario/Contraseña Incorrecto, se activa.

Cluster con:

a) String (User)

b) String (Pass)

c) Boolean (ok)

Elemento deseado de

la serie de Fibonacci.

Valor dentro de la

Serie

En caso de errar se

enciende el Led

Muestra cuantas

veces se ha

intentado

Botón de paro

general

A

B

C

F G

E

D

H

J

I

Page 6: LabVIEW Estructuras de Control

E) Una compuerta AND nos permite controlar que tanto usuario o contraseña sean correctos. Esto se manda a un selector que de ser cierto (que son iguales) el programa manda un 0 al shift register para que no incremente y el programa continua.

F) Si el selector marca falso (es decir que el usuario y/o contraseña no concuerdan) manda un 1 al que se suma a lo que lleve el shift register. Y el número actual del shift register se manda al indicador de Intentos.

G) Una condición marca que si ya se han realizado 3 intentos fallidos, el ciclo while automáticamente se detiene. H) Después de la compuerta AND, se manda su estado a otro CASE. I) Cuando es verdadero (esto es cuando usuario y contraseña son correctos) el programa pide un valor que

será el elemento dentro de la serie de Fibonacci. Y esta función se realiza con un SubVI para la serie de Fibonacci que más adelante se explicará.

J) Todo esto se realiza para el caso verdadero.

K) El caso Falso sucede cuando no se ha oprimido el botón de OK. Y cuando esto pasa, el shift register no

cambia su valor inicial. Además el siguiente CASE también está constantemente en el estado Falso. L) Para el caso Falso del segundo case, no sucede nada pues aún no se ha corroborado que se realice un login

exitoso. Este case manda un constante valor falso para la OR de condición de paro final. Que se activa en cuanto el usuario presione el botón de paro en el Case Verdadero o cuando se equivoque 3 veces.

Observaciones: Utilizando un Cluster mixto, se facilita la obtención de datos ya sea String o Bolean que teniendo un control para cada uno. Resultados:

Ejercicio 4: Función Fibonacci Resultados:

A) Elemento: Es el valor que el usuario pregunta. B) Coeficiente requerido: Indica cual es el elemento requerido dentro de la serie. C) Cociente entre elemento anterior: La división entre el valor entregado y su anterior. D) Serie de Fibonacci: Muestra todos los elementos anteriores al valor deseado. E) Cociente de Elementos Anteriores: Un arreglo con la división entre un elemento con el elemento anterior.

K L

Page 7: LabVIEW Estructuras de Control

Este es el diagrama de bloques del ejercicio visto en clase, no se modificó mucho salvo por lo siguiente: En la parte superior, al elemento de control (que va a ser el que dé el número de iteraciones del ciclo FOR), se le suma 1. Esto se debe a que ingresando un 0 al programa, no se inicia el ciclo FOR, y de acuerdo a la tabla dada en la práctica, para un elemento 0, el programa responde que el número de la serie de Fibonacci es 1. Además de esto se agregaron arreglos, uno para mostrar todos los elementos previos directamente del shift register. Y el segundo para mostrar las divinas proporciones, si ya se tiene un indicador que muestre el cociente entre un elemento y su anterior, solo hace falta agregar un indicador tipo arreglo y sacarlo del ciclo FOR para mostrar todos los cocientes. Por último, esta función se convierte en un SubVI y se documenta de la siguiente forma:

Observaciones: Este ejercicio no tuvo dificultad alguna, pues se había hecho en clase, aunque se requerían muy pocas modificaciones.

Ejercicio 5: Máquina de Estados de un Robot Resuelve Laberinto.

El Layout de este VI, es el dado por la práctica. Con 2 Indicadores tipo Led y 2 Controles de Botón

Page 8: LabVIEW Estructuras de Control

El robot tiene 4 estados que cambiarán de acuerdo al valor dado en el shift register.

A) Para el primer estado (el de default), el botón se encuentra apagado por lo tanto se mantiene en este estado. También ambos motores están encendidos. Para verificar cuando se cambia de estado, se agrega un Select que indica si el botón está en False (apagado), se mande un 0 al shift register, dejándolo en el estado inicial. De presionarse se manda un 1 cambiando al siguiente estado.

B) Como al iniciar este estado el botón esta encendido (True), el Select devuelve un 1 manteniéndolo en ese estado. En este estado se apaga el motor izquierdo y el derecho se mantiene. Cuando se presione el botón, se manda un 2 al shift register cambiando al siguiente estado.

C) Al iniciar el este estado, el botón se encuentra en False (apagado), así que requerirá que se presione para moverse al siguiente estado. Las características de este estado son similares al estado por defecto pues ambos motores están encendidos.

D) Finalmente como se presionó el botón para cambiar a este estado, si sigue estando encendido, la maquina no cambia su estado hasta apagar el botón. En este estado se invierte el motor que se apagó en el estado 1.

Cuando se vuelva a presionar, la máquina vuelve al estado 0 y se repite todo el proceso, alternando que motor se apaga con cada obstáculo (veces que se aprieta el botón) detectado. Además se incluye un botón de paro que detendrá la máquina de estado pero también apagará los motores por el arreglo de compuertas que tiene. Observaciones: Por comodidad se utilizaron 4 estados, se pudo haber hecho con 3, regresando al valor por default cada vez que se apagaba el botón de obstáculo. Pero se utilizaron los 4 porque se duplico el estado default y se cambió a estado 2. Resultados:

Bibliografía. Obtenido 90% de lo visto en clase y el 10% restante de curiosear el resto de las funciones o editando los elementos.