Guía para el desarrollo del componente práctico
PRÁCTICA No. 1
1. Instalar Labview.
2. Empleando Labview realice un instrumento virtual con un contenedor de 6 elementos
(Ventana Modern/Container), en cada espacio ubicar el desarrollo de las siguientes funciones, en
cada caso debe darse la posibilidad de ingresar los datos y visualizar el resultado dentro del
mismo espacio.
Desarrollo
La primera condición del ejercicio es que se deben separar los ejemplos en container.
Nivel de código
A nivel de código el programa refleja el tab como se indica en la figura, la salida del tab es el
nombre de la pestaña que indicamos en el nivel de usuario.
Esa pestaña definirá el comportamiento del case a nivel de código, con los diferentes ejercicios
planteados.
Case para enteros:
Case para reales:
Case para vectores:
Case para matrices:
Case para pares e impares:
Case para comparaciones:
Nivel de Usuario
En el Front Panel se escoge mediante botón derecho Controls/Container/Tab control, donde se
puede observar q existen varias opciones para generar entradas independientes, tomamos la de
tab control y se trabajara en un entorno de carpetas.
Haciendo doble clic en cada tab se pueden cambiar los nombres para personalizarlos
Una vez definidas las pestañas a nivel de usuario y de código procedemos a realizar cada
ejercicio:
Primer Ejercicio
Manejo de números enteros
Asigne a una variable el valor de una distancia en unidades de metros y conviértala a unidades
de milímetros y centímetros
Nivel de código
Desde el Block Diagram escogemos la estructura case, introduciendo dentro de ella los controles
numéricos e indicadores previamente escogidos
Cableamos la salida de manejo numérico al punto de decisión del case
Debido a que la transformación de metros a centímetros es multiplicar por 100 y a milímetros
por 1000, usamos los multiplicadores ubicados en el block diagram con botón derecho con la
ruta /Programming/Numeric/Multiply
Los valores constantes se obtienen pasando el mouse sobre el multiplicador y dando botón
derecho
Nivel de usuario
Se escogen un control y dos indicadores numéricos como se muestra en la figura
Ejemplo para el primer ejercicio
El panel frontal se vería del siguiente modo, para el ejemplo tomamos 4,8 metros
Comentario final
El ejercicio habla de números enteros y por defecto los números de LabView son doublé para
ellos realizamos los siguientes cambios desde el panel de usuario
Desde el panel frontal damos botón derecho a cada indicador y lo definimos como entero de 32
bit sin signo, dado que la distancia es un numero positivo
El diagrama de bloque seria en definitiva así:
Nótese el cambio de color de naranja(doublé) a azul (entero sin signo de 32 bits), el entero sin
signo de 32 bits indica q se puede introducir un valor numérico entre 0 y 232 = 4.294.967.296.
Segundo Ejercicio:
Manejo de números reales
Asigne a una variable el valor de una resistencia en unidades de ohmios y calcule su valor en
unidades de Mega-ohmios y Kilo-ohmios.
La dinámica será igual al anterior ejemplo, solo que los números ahora son reales (doublé) y
permanecerán en naranja
Nivel de código
Para llevar de ohmios a kiloohmios dividimos entre 1000 y para llevarlos a megaohmios
volvemos a dividir entre 1000, lo que daría como resultado dividir entre 1.000.000.
Nivel de usuario
Tenemos como en el caso anterior, un control y dos indicadores los cuales obtenemos de:
Ejemplo para el segundo ejercicio
Introducimos el valor de 200.000 en el campo resistencia, y al presionar el botón enter,
obtenemos el valor en kiloohmios y megaohmios.
Tercer ejercicio:
Manejo de vectores
En un vector almacene en cada celda cada uno de los dígitos del número de su cédula,
multiplique cada elemento del vector por 10 y calcule: para el primer elemento del vector el
seno, para el segundo el coseno y para el tercero el valor de la tangente.
Nivel de código
El diagrama de programación seria la siguiente:
Desglosando cada parte, analizaremos de izquierda a derecha
La cedula se capturo como un vector
Definiendo los elementos del vector como U8, entero sin signo de 8 bits dado que los dígitos de
la cedula son menores a 255.
De la ruta /Progamming/Array/Array size se obtuvo el comando para obtener el tamaño del
vector cedula.
Este tamaño define el ciclo for siguiente, que permite hacer el recorrido del vector cedula, para
multiplicar cada digito por diez.
Luego se muestra la multiplicación con otro indicador array.
Por último, se usa el comando index array ubicado en la ruta /Progamming/Array/index Array
para escoger los tres primeros dígitos de la cedula, vistos de izquierda a derecha, para
posteriormente obtener sus correspondientes funciones trigonométricas asumiendo como entrada
radianes.
Nivel de Usuario
Para definir el vector cedula usamos un vector que escogemos con el botón derecho con la ruta
que vemos en la grafica
Al seleccionarla aparecerá el vector de este modo:
Luego debemos definir qué tipo de elementos tendrá el vector para ello usamos un control con el
tipo de datos que tendrá el vector.
Luego arrastramos con el mouse el control numeric dentro del vector.
Después dimensionamos el vector, para ello nos posamos en la esquina inferior izquierda con el
mouse para y veremos una cuadricula
Al arrastrar la cuadricula con el mouse, podremos redefinir el tamaño del vector
Del mismo modo introducimos un indicador para los valores que generan el resultado
multiplicado por 10.
Y los indicadores de los resultados de las funciones trigonométricas.
Ejemplo del tercer ejercicio
El usuario solo debe ingresar digito a digito el número de cedula y el programa ejecutara la tarea
Cuarto ejercicio:
Manejo de matrices
Seleccione dos matrices de números reales (A y B), de orden 4x4 y con ellas realice las
siguientes operaciones (suma, resta, multiplicación).
Nivel de Código
Para sumar o restar dos matrices, están deben ser del mismo tamaño y se suma o resta cada
elemento de cada matriz. En la figura se puede ver resaltado la parte del diagrama que realiza
esta función
En el caso de la multiplicación se debe recordar que cada elemento de la matriz producto se
forma como la suma de los productos de cada fila del primer factor por la columna del segundo
factor, para lograr esto se utilizó el index array del ejercicio anterior y la matriz B se traspuso
para poder acceder a la matriz por columnas y no por filas.
En el caso de la multiplicación analizaremos según las zonas de color.
Color rojo: esta función traspone la matriz b para recorrerla por columnas, la traspuesta se
obtiene en /Programming/Array/Transpose 2D Array.
Color verde: obtiene la fila de la matriz A, usando index arrary.
Color azul: obtenemos la columna de la matriz B.
Color amarillo: se multiplica las filas por las columnas
Color naranja: se suman los productos.
Nivel de Usuario
Se procede como en el caso de los vectores, pero ahora el arreglo será de dos dimensiones
Para indicar que será de dos dimensiones se debe halar con el mouse la dimensión del arreglo, de
ese modo ya indicamos que es una matriz. El tipo de datos se define incluyendo un control con el
tipo de dato que queremos.
Y el tamaño se obtiene arrastrando la esquina inferior derecha hasta obtener un 4x4.
Finalmente podemos eliminar las dimensiones del arreglo, para ello nos posamos sobre la matriz
y damos botón derecho
Quitamos la selección de Index Display
El arreglo quedaría así:
Cambiamos el nombre por el de matriz A. Del mismo modo definimos la matriz B. El nivel de
usuario quedaría así:
Ejemplo del cuarto ejercicio
El usuario introduce los valores de las dos matrices y al presionar enter obtiene los resultados de
suma, resta y multiplicación de matrices.
Quinto ejercicio:
Contadores
Genere un número aleatorio >= 1 y < 1000, descomponga el número en sus dígitos, los
almacene en un vector, y determine cuantos son pares y cuantos impares.
Nivel de Código
Color negro: se generan los números aleatorios con la función /Programming/Numeric/Random
Numbrer 0-1, debe multiplicarse por mil para llevar el semillero random a valores hasta 1000,
luego se redondea la función para obtener números enteros con la función
/Programming/Numeric/Round To Nearest
Color Rojo: se separan los valores realizando divisiones sucesivas con 10 del numero aleatorio,
tomando el resto de la división par para formar un vector con los dígitos del numero aleatorio. La
división en cociente y residuo se realiza con la función
/Programming/Numeric/Random/Quotient and Remainder. Adicionalmente se usó un ciclo while
con registros de corrimiento para actualizar con cada división el valor del número, el ciclo da por
terminada la división cuando el cociente es cero y ha concluido la división.
Color amarillo: el numero separado se almacena en un vector, y cada unidad decena o centena
se divide entre 2 detectando el valor del cociente y el residuo, si la división entre dos no da
residió el número es par en caso contrario es impar
Color azul: se actualizan los contadores de números pares e impares.
Nivel de Usuario
El número aleatorio generado se actualiza cada dos segundos.
Ejemplo del quinto ejercicio
El usuario no debe ingresar ningún valor porque el número se genera aleatoriamente.
Sexto ejercicio:
Condicionales
Capture el valor de temperatura de tres tanques de almacenamiento, y determine cuál de ellos
registra el mayor grado de temperatura, cual el menor y las demás posibilidades que se
presenten (todos con igual valor de temperatura, dos temperaturas iguales y las mayores… etc.)
Nivel de Código
Las comparaciones se realizarán de forma sucesiva, iniciando con la comparación por igualdad,
primero se compara el primer número con el segundo si son iguales se compara el segundo con
el tercero, si son iguales entonces todos los son. Las funciones comparación se encuentran en el
apartado /Programming/numeric/comparison
Las cadenas de mensajes son string constantes, están ubicados en /Programming/string/string
const.
Cuando solo el tanque uno y dos son iguales pero el tres es diferente, entonces el tres es el mayor
o el menor, esa lógica se realiza del siguiente modo
Si el tanque uno y dos no son iguales entonces se analiza si dos y tres lo son, adicionalmente se
compara si el uno es mayor o menor frente a la igualdad de dos y tres.
De este modo se realizan las combinaciones posibles, el programa detecta las siguientes
comparaciones:
- Los tres tanques iguales.
- Tanque 1 y tanque 2 iguales, pero el 3 diferente, en este caso dice si el tres es el mayor o
el menor.
- Tanque 2 y tanque 3 iguales, pero el 1 diferente, en este caso dice si el uno es el mayor o
el menor.
- Tanque 1 y tanque 3 iguales, pero el 2 diferente, en este caso dice si el dos es el mayor o
el menor.
- El mayor de los tres
- El menor de los tres.
Nivel de Usuario
El control que se usa en esta ocasión es el termómetro ubicado en la ruta
/controls/numeric/thermometer
Ejemplo del sexto ejercicio
Los valores se pueden ingresar con el deslizador del termómetro o directamente
introduciendo el valor en el campo.
- Caso los tres tanques iguales
- Dos tanques iguales y uno diferente
- Los tres valores diferentes, debe decir cuál es el mayor y cual el menor
Finalmente, para que el programa se ejecute continuamente se incluyó en un ciclo while,
gobernado por el botón salir que se ve en cada pantalla de usuario.