Sei sulla pagina 1di 20

Unidad 2: Paso 3 - Construcción individual

Iván Alexis González Benavides 1057601301


Nestor Arcángel Espinel Salamanca 1057592571

Grupo 51

Software avanzado para ingeniería

Presentado a: Juan Monroy

Universidad Nacional Abierta y a Distancia Escuela de Ciencias


Básicas Tecnología e Ingeniería Electrónica 31 de octubre de
2019
INTRODUCCION

En la actividad a desarrollar se plantea un problema principal en cual se


desarrollará a lo largo del curso y específicamente se desarrollarán las
temáticas sobre tipos de datos y estructuras de ejecución. Buscado
caminos y alternativas que se irán desarrollando para el trabajo final
Actividades a desarrollar

Nombre de estudiante Enlace del video


Ivan Alexis Gonzalez https://youtu.be/9EO6OW1yShQ
Benavides
Nestor Arcángel Espinel https://youtu.be/r2E28wUG0s4

Ivan Alexis Gonzalez Benavides


LabVIEW es principalmente utilizado por los ingenieros para el
manejo de datos, la comunicación entre una computadora y un
aparato o circuito externo es imprescindible para las aplicaciones que
se le pueden dar al software, por lo que LabVIEW puede comunicarse
con interfaces como:
 Puerto serial
 Puerto paralelo
 GPIB
 PXI
 VXI
 TCP/IP
 Irda
 Bluetooth
 USB
 OPC
Entre otros. Esto es lo que hace del Laboratorio Virtual de
Instrumentación una excelente opción para proyectos grandes donde
se requieran conocimientos de programación, electrónica, mecánica,
robótica, etc. Este software es utilizado en empresas y agencias
importantes como la NASA. La programación representa un factor
muy importante al hablar de proyectos de automatización y control,
donde se especializan ingenieros mecatrónicos, robóticos y más.
LabVIEW ofrece la herramienta para crear el software, el programa
depende del programador y su funcionamiento, eficacia y utilidad
dependerán de las habilidades de éste mismo. “La potencia está en el
software” Una frase muy célebre de LabVIEW, que hace referencia a
la capacidad e importancia que puede tener un programa en un
proyecto.

Links guía para el manejo de labview


https://www.youtube.com/watch?v=t_TJuQklxQc
https://www.youtube.com/watch?v=6PspJpyPtso
https://www.youtube.com/watch?v=mLDL1P4GBjI

El primer botón (Run) sirve para ejecutar el programa, pero si el


código no incluye un ciclo para que el programa se repita
infinitamente o la cantidad de veces que el usuario elija, sólo
parpadeará la pantalla y el programa no hará nada. Si no se está
trabajando con ciclos, es necesario hacer clic en el segundo botón
(run continuously), que significa correr continuamente, de esta
manera, el programa se ejecutará hasta que el usuario vuelva a dar
clic en ese botón o realizar alguna acción en el programa que haga
que éste se detenga. El tercer botón sirve para abortar la ejecución.
Este ícono se utiliza solamente cuando el programa se cicla, es decir;
que no se puede detener por algún error en la programación. Esto
sucede únicamente cuando se trabaja con ciclos y es recomendable
no usarlo si no es absolutamente necesario, ya que el usarlo podría
causar pérdida de datos.
En el diagrama de bloques los menús son muy parecidos, solo que
aquí se agrega un botón al menú de ejecución que sirve para ver
paso a paso lo que el diagrama de bloques está ejecutando, muy útil
cuando se quiere ver el orden de ejecución de todo el código y ver su
comportamiento. Otro botón que se agrega es el que limpia todo el
código, para poner todos los elementos de una forma más ordenada
y legible.
CONTROLES E INDICADORES
Los elementos de cada programa de LabVIEW se pueden definir como
controles o indicadores. Como se vio en el programa anterior, se
usaron dos controles para ingresar los números que se van a sumar.
Con esto podemos deducir que un control es un elemento que puede
ser controlado o modificado por el usuario, normalmente con perillas
o flechas de incremento. Por otro lado, los indicadores son los
elementos que no pueden ser modificados por el usuario, y que
solamente muestran datos o resultados que el programa arroja, por
ejemplo, en el programa anterior, el indicador muestra el resultado
de la suma.

El array (matriz o vector en español), se utiliza para almacenar varios


elementos, siempre del mismo tipo. En un array no se pueden meter
objetos que sean de distintos tipos, es decir; si se mete un led a un
array, ese array sólo será de leds. En LabVIEW, si se requiere usar
cada elemento de un array por separado, se utilizan las herramientas
del diagrama de bloques para poder hacerlo, tales como index array,
initialize array, etc. Al colocar un array en el diagrama de bloques,
solo se le arrastra un objeto hacia dentro y el array toma
automáticamente el tamaño del objeto. Para hacer más grande el
array (que tenga más elementos del mismo tipo) solo se da clic en la
flechita de tamaño ya sea abajo o arriba del array y se desplaza hacia
el mismo lado. Si se requiere que el array sea de dos dimensiones, se
le da clic derecho y se da clic en add dimension.
En el panel frontal se tienen dos arrays, uno de leds y otro de switch.
En el diagrama de bloques sólo nos saldrán dos elementos, que son
los arrays, si los conectamos, el programa funcionará perfectamente.

Si queremos utilizar cadenas de texto para mostrar mensajes, en


elementos que están los arrays es sencillo, podemos utilizar el
ejemplo anterior para mostrar cómo se puede apreciar en la imagen,
el array de switches se indexa, para sacar los elementos y
ordenarlos, esto con el fin de poder conectar cada elemento a un
select que evalúa si el switch está activado o no. Si es falso, con una
constante de texto se dice que el led está apagado, si es verdadero,
dice que está encendido. Lo interesante aquí es cómo mandar las tres
salidas de texto al indicador. Simple, usamos la herramienta
Concatenate string, que agrupa todas constantes de texto y saca una
sola salida, como si se estuviera construyendo un array de texto y
éste se conecta al indicador.

EL CICLO FOR
El ciclo for es una estructura de control utilizada en la gran mayoría
de los lenguajes de programación, que permite establecer el número
mínimo de iteraciones. Sus elementos son la variable de control,
inicialización de la variable de control, condición de control,
incremento, y cuerpo. La variable de control es la variable con la que
el bucle va a trabajar, esta misma es la que se inicializa para
establecer un valor predeterminado con el que va a iniciar la
iteración. Su uso se orienta a vectores, permite agregar, modificar o
eliminar datos según el índice.

FOR CONDICIONAL
Se dice que un ciclo for es condicional cuando éste tiene una
terminal de paro, se trata de una terminal a donde se puede conectar
un botón de stop o una condición para que el programa se detenga
en determinado momento sin importar que no se hayan ejecutado el
número de repeticiones establecidas. Esta terminal de paro se puede
agregar dando clic derecho sobre el ciclo for y posteriormente clic en
conditional terminal.

EL CICLO WHILE
A diferencia del For, el ciclo While ejecuta determinada acción hasta
que el programa termine su función o hasta que el usuario decida
detener el programa. Si el programa no tiene un fin determinado, el
programa se ejecutará infinitamente o hasta que el usuario lo
detenga. El ciclo While no funciona si no se conecta un botón de stop
o una condición de paro a la terminal de stop, si no ocurre esto, será
imposible ejecutar el programa.
Entonces una forma simple de resolverlo, es usando la función
square, que eleva al cuadrado cualquier número que se le conecte,
entonces, se usan dos, uno para cada lado del triángulo. Éstos se
suman y se le saca raíz cuadrada al resultado, usando la función
square root. Ambas funciones se encuentran en el menú Numeric. El
resultado se imprime en el indicador numérico. Nótese que el ciclo
while tiene un botón de stop conectado a la terminal de paro, sin
esto, el programa no se ejecuta. Hasta aquí todo va bien, pero hay
un pequeño error, que en este programa puede no causar problemas,
pero al trabajar con programas grandes, puede ocasionar muchos
problemas. Es necesario colocar un Wait.

El shift register se inicializa en cero y se le suma uno, esto hace que


en cada repetición se sume uno al valor final. Esto hace que el
tanque se vaya llenando lentamente, dando un efecto como de
máquina automatizada. Aquí, el timing juega un papel muy
importante, ya que, si se deja en el valor que muestra la imagen 44,
el llenado va a ser muy rápido y no se va a poder apreciar, entonces
se tiene que cambiar el 5 por un 200 o más para que se pueda ver
mejor cómo se va llenando el tanque. También se puede cambiar el
uno de la suma por otro número menor o mayor, para dar más
precisión a la cantidad de líquido que se vierte en el tanque, si se
utilizan decimales, es necesario cambiar la representación para poder
usarlo, ya que en el ejemplo se están usando enteros. Otra cosa muy
útil sería que el programa se detuviera cuando el tanque llegue a 10.
Para esto, usamos una función de comparación Equal (igual),
conectada a una compuerta OR, esto para que el programa se
detenga si el tanque llega a 10 o si el usuario presiona el botón de
stop.

USO DE CLUSTER En LabVIEW un cluster es una colección de


elementos de diferentes tipos. Es parecido al array, la diferencia es
que en el array sólo se pueden introducir un solo tipo de elementos,
es decir; un led o un botón. En cambio, en el cluster se puede
introducir cualquier elemento, ya sean leds, botones, medidores,
controles numéricos y de texto, etc. El uso del cluster puede reducir
el tamaño del código y dependiendo del programa que se esté
desarrollando, su uso puede ser imprescindible.

Q Output: al igual que el Left Data Node, el Output Node proporciona


información, pero en este caso la información se genera después de
que el bucle se haya detenido.
Timing Source es la fuente de reloj, cuando el programa se ejecute
sobre un PC la fuente será un reloj de 1 kHz del sistema operativo; si
la ejecución se realiza en otros dispositivos puede haber otras
fuentes disponibles. Para seleccionar la fuente desde el programa
puede usarse el VI Create Timing Source, en la paleta Programming
> Structures.
> Timed Structures. Los otros VIs de esta paleta permiten abortar
programadamente un TIMED LOOP (Stop Timed Structure),
sincronizarlos (Syncronize Timed Structure Starts) o controlar el
comienzo de cada uno (Building Timing Source Hierarchy).
El periodo será el tiempo que pase entre el comienzo de dos
iteraciones y el offset el tiempo que el bucle espera antes de empezar
la primera ejecución. Deadline es el tiempo máximo con que cuenta
el bucle para ejecutar el código en su interior, en caso de que la
ejecución lleve más tiempo se avisará con Finished Late? [i-1].
Los modos de Action on Late Iterations configuran la forma en que el
bucle responde cuando la ejecución lleva más tiempo del
especificado, las opciones son autoexplicativas, básicamente sirven
para ‘alinear’ el comienzo de las ejecuciones y ‘saltar’ iteraciones.
Para ejecutarse, cada TIMED LOOP crea su propio sistema de
ejecución que contiene un único hilo (ver capítulo 10 dedicado a
multihilo). La prioridad se refiere a la preferencia de ejecución entre
un bucle y los demás. Los valores más altos corresponderán a TIMED
LOOPS con mayor prioridad.
Cuando dos o más bucles vayan a empezar su ejecución en un
instante determinado, la prioridad de cada bucle determinará el
orden, en caso de que haya varios con el mismo nivel de prioridad, el
orden será por el de menor tiempo invertido en la ejecución. También
se pueden añadir frames a un TIMED LOOP mediante el menú
contextual del mismo modo que se hacía con un SEQUENCE, con esto
un TIMED LOOP podrá ejecutar varios subdiagramas
secuencialmente, cada uno con sus propias especificaciones
temporales.

Right Data Node de un frame cambiará los parámetros del siguiente


subdiagrama a ejecutarse en lugar de la siguiente iteración y el Left
Data Node proporcionará información sobre el subdiagrama anterior.
El Left Node del primer subdiagrama y el Right Node del último
proporcionan más parámetros que el resto debido a que pueden
afectar al siguiente/anterior subdiagrama o a toda la estructura. En el
mismo menú, junto a TIMED LOOP, se encuentra una estructura
parecida llamada TIMED SEQUENCE. La principal diferencia con el
TIMED LOOP es que en este caso no se repite la ejecución de los
subdiagramas, por lo tanto, no se podrá especificar un periodo, pero
aun así sí puede tener otras características temporales como offset,
deadline, etc.

DISABLE STRUCTURE
Estas estructuras también han aparecido recientemente, se usaron
por primera vez en la versión 8.0. Sirven para comentar el código,
por lo que son muy útiles en la depuración de programas. Hay dos
tipos de estructuras de deshabilitación: la incondicional y la
condicional. La incondicional es una estructura que, como CASE,
STACKED SEQUENCE o EVENT se compone de varios subdiagramas.
Uno de ellos estará habilitado y el resto estarán deshabilitados,
lógicamente el habilitado será el único que se ejecute y el resto no
llegarán a compilarse. Para cambiar el subdiagrama habilitado hay
que hacer uso del menú contextual de la estructura.
La condicional funciona de la misma forma que la anterior, sólo que
el diagrama habilitado se selecciona de forma automática
dependiendo del valor de unos símbolos asociados al proyecto.
Algunos símbolos predefinidos son OS y CPU. También se pueden
definir nuevos símbolos en la ventana de propiedades del proyecto
correspondiente.

FORMULA NODE:
La estructura FORMULA NODE puede encontrarse tanto en el menú
Programming > Structures como en Mathematics > Scripts &
Formulas.
A diferencia de las anteriores, FORMULA NODE no controla el flujo de
ejecución, sino que evalúa una expresión matemática escrita como
texto con una sintaxis parecida al lenguaje C. El texto consistirá en
una serie de sentencias finalizadas por el símbolo «;». Las sentencias
normalmente son asignaciones que usan operadores o funciones,
aunque también pueden ser declaraciones de variables, bucles o
sentencias de condición. También pueden insertarse comentarios de
la misma manera que en C.
Casi todas las funciones que se pueden usar dentro de un FORMULA
NODE tienen su equivalente como VI. Éstas son: abs(x), acos(x),
acosh(x), asin(x), asinh(x), atan(x), atan2(x,y), atanh(x), ceil(x),
ci(x), cos(x), cosh(x), cot(x), csc(x), exp(x), expm1(x), floor(x),
getexp(x), gamma(x), getman(x), int(x), intrz(x), ln(x), lnp1(x),
log(x), log2(x), max(x,y), min(x,y), mod(x,y), pow(x,y), rand( ),
rem(x,y), si(x), sec(x), sign(x), sin(x), sinc(x), sinh(x),
sizeOfDim(array,dim), spike(x), sqrt(x), step(x), tan(x), tanh(x).
Las estructuras son: If (condición) sentencias1 else sentencias2 do
sentencias while (condición) while (condición) sentencias for
(asignación; condición; sentencia) sentencias switch (condición) lista
de casos Otras palabras reservadas son: break, case, continue,
default, pi. Para más información puede consultarse la ayuda.
Presionando el botón secundario en los bordes de la estructura
pueden crearse variables de entrada o de salida.
En el ejemplo dado por la figura 2-24 se tiene la fórmula de Herón
para calcular la superficie de un triángulo a partir de sus lados, en
ella hay tres entradas (a, b, c) que corresponden a la longitud de los
lados del triángulo, un resultado intermedio que se trata como una
salida más (p) y una salida que es la superficie (S).

Al igual que el nodo FORMULA NODE hay otras estructuras que


también aceptan textos, de esta forma se puede combinar la
programación propia de LabVIEW con la más tradicional
programación textual. El MATHSCRIPT NODE es otra de las nuevas
estructuras de LabVIEW 8.0 y mejorada en 8.20. A diferencia de las
otras dos que se verán en esta sección, MATHSCRIPT NODE no llama
a otros programas y su código es compilado junto con el resto del VI.
En Tools > MathScript Window puede abrirse una ventana, figura 2-
25, para ayudar a depurar el código. En el campo Command Window
pueden escribirse los comandos, también puede ejecutarse un script
completo desde la pestaña Script y los resultados pueden verse en la
pestaña Variables.

La sintaxis para usar en la estructura MATHSCRIPT NODE es en gran


medida compatible con la de MATLAB. Dispone de cientos de
funciones que pueden consultarse en la ayuda. Por otra parte,
MATLAB SCRIPT NODE y XMATH SCRIPT NODE se encuentran
únicamente en el menú Mathematics > Scripts & Formulas > Script
Nodes. Ambos llaman a programas externos. En el caso de MATLAB,
el nodo llama al servicio «Matlab Server» a través de ActiveX para
ejecutar los comandos (sólo en Windows). XMath es parte del
programa MATRIXx, también de National Instruments, es un software
especializado en análisis numérico y su sintaxis es un poco diferente
a la de MATLAB, aunque tienen muchas funciones equivalentes. Al
igual que con FORMULA NODE se deben crear variables de entrada y
salida, pero en este caso hay que asignar explícitamente el tipo de
datos,
Código:
Para realizar este ejemplo se implementará un filtro promediado
móvil de orden cuatro que añada un difuminado a una fotografía.
La entrada será una imagen en blanco y negro con formato BMP que
consiste en una lista (por simplicidad de un array de una dimensión)
de valores de cada uno de los componentes de la imagen, los
componentes son RGB (Red, Green, Blue), por lo tanto, para cada
punto habrá tres valores. La siguiente lista representa como sería
este array para una imagen con cuatro puntos:
R1, G1, B1, R2, G2, B2, R3, G3, B3, R4, G4, B4...

Como la imagen sólo contiene grises, los valores de los tres


componentes son iguales, por lo tanto, bastará con aplicar el filtro a
uno solo de los componentes o lo que es lo mismo, a uno de cada
tres valores. El programa empezará leyendo el fichero y desglosando
su información; entre esta información se obtendrá un array RGB
como el anterior (por simplicidad se trabajará en una dimensión). La
función Decímate 1D Array, con un tamaño de tres elementos,
obtendrá a la primera de sus salidas un array cuyos elementos sean
los de las posiciones 1, 4, 7, 10, 13... del array de entrada, es decir,
obtendrá todos los valores del componente R de cada punto. Los
valores R de cada punto son promediados, el promediado sumará el
último valor leído y los tres anteriores, el resultado se dividirá por
cuatro. La ‘ventana’ se implementará mediante Shift Registers y el
resultado se irá indexando en el lateral del FOR. Para reconstruir la
imagen basta con hacer el proceso inverso al de decimar: interpolar.
Finalmente se dibujan las imágenes antes y después de aplicar el
filtro. Mediante la señal selector se podrá elegir el tipo de estructura
implementada, si está activada será como en la figura 2-30 y si no
está activada habrá realimentación de las salidas a la entrada.

Tipos de datos:
En el Panel Frontal se pueden colocar controles e indicadores. Como
se ha dicho en capítulos anteriores, los controles son el punto de
entrada de información al VI y los indicadores de salida. Los controles
e indicadores tendrán su representación en el Diagrama de Bloques,
donde podrán ser cableados para leer o escribir su valor. En el
Diagrama de Bloques además se podrán tener también constantes.
En el menú contextual de estos elementos hay opciones para cambiar
de un tipo a otro, en la figura 3-1 se ha marcado la opción para
cambiar un control de tipo string a un indicador del mismo tipo.
Dependiendo del tipo de datos y del tipo de terminal se tendrán unas
opciones u otras, las más importantes para cada tipo de datos son:
En los controles de tipo booleano se tiene la opción de Mechanical
Action que les permite actuar como pulsadores (latch) o interruptores
(switch).

Los numéricos pueden acotar el rango de entrada con Data Range y


modificar varias opciones de visualización con Format and Precision.
En los controles e indicadores de tipo string se puede ver el contenido
de forma normal, representado por unos códigos (ver Tabla 1), como
asteriscos o por su valor hexadecimal.
Junto a un terminal pueden aparecer varios ítems. En la figura 3-3 se
muestra un control numérico digital con los siguientes ítems:
Label: es un texto que da un nombre al terminal en el Panel Frontal,
esta etiqueta será usada para identificar al elemento en variables,
propiedades, etc.
Caption: es otro texto asociado al terminal que sólo puede aparecer
en el Panel Frontal.
Incremento/decremento: en los terminales numéricos también se
dispone de este elemento para aumentar o disminuir el valor del
dato.
Radix: indica el formato de visualización en los terminales numéricos
enteros en decimal (d), octal (o), hexadecimal (x) y binario (b).
Valor: es el valor que hay en el terminal representado en el formato
elegido. Unidades: el tipo de datos numérico también puede tener un
símbolo que represente sus unidades.

Una de las primeras cosas que se aprende en cualquier lenguaje de


programación son los tipos de datos disponibles. No debe confundirse
el tipo de datos con tipo de terminal. Cuando se habla de tipo de
datos se hace referencia a si son numéricos, cadenas de caracteres,
etc.
El tipo de datos se representa en el Diagrama de Bloques por el color
del terminal y del cable, así un dato booleano tendrá terminales y
cables verdes para diferenciarlo de un string que será rosa.
A continuación, se estudiarán los distintos tipos de datos con sus
características más destacables, transformaciones de unos a otros y
la forma en que los distintos tipos de datos de LabVIEW se
almacenan en memoria. Esto es algo a tener en cuenta en algunas
ocasiones muy concretas, como pueden ser:
Llamar a código externo.
Trabajar con ficheros binarios.
Otras funciones I/O.

Bolean:
Los datos de este tipo sólo pueden tener dos posibles valores:
verdadero (TRUE) o falso (FALSE). Debido a esto suelen usarse en
controles con forma de botón o pulsador. Cada dato booleano se
almacena en memoria en un byte completo, si este byte tiene todos
sus bits a cero, el dato tendrá el valor FALSE y cualquier otro valor
del byte hará que el dato pase a TRUE.
En los controles booleanos se puede seleccionar su Mechanical
Action, como mostraba la figura 3-2. Ya se dijo que los switch son
equivalentes a interruptores y los latch a pulsadores. En los dibujos
que representn cada acción hay unas letras a la izquierda: «m», «v»
y «RD». La primera de ellas («m») simboliza la acción mecánica que
hace el usuario sobre el control. La segunda («v») representa el
cambio de estado que sufre el control. Finalmente, la tercera («RD»)
sólo se puede ver en los de tipo latch y alude al momento en que,
desde el Diagrama de Bloques, el valor del control es leído. Como se
puede ver en los iconos tipo latch, el control tiene un “estado
estable” y uno “aestable”, cuando se activa el control se pasa del
estado estable al aestable durante un tiempo, y vuelve al estable
inmediatamente después de que el valor del control sea leído.
Numeric:
Al trabajar con datos numéricos hay que distinguir entre números
enteros, números racionales y complejos.
Los números enteros tienen asociado el color azul y puede elegirse su
tamaño (8, 16, 32 o 64 bits), si se emplea un bit de signo (signed o
unsigned) y su representación (binario, octal, decimal, hexadecimal).
Los controles de tipo Enum y Ring también son numéricos. Se trata
de listas que asocian una cadena de caracteres a un valor numérico.
Mediante su menú contextual se puede acceder a Edit Item para
definir la lista de valores. La principal diferencia entre estos dos tipos
es que en los enum el texto se considera también parte del control,
por lo que para conectar un control o constate enum a un indicador
enum se necesita que ambos tengan ítems con los mismos nombres,
mientras que con los ring no es necesario.
En la figura 3-7 pueden verse dos constantes, el símbolo que
aparece a su izquierda (una letra «d» o «x») es su representación,
este ítem puede activarse con la opción radix en el menú contextual
Visible Items; la primera constante es decimal y la segunda
hexadecimal. La primera está conectada a un indicador que visualiza
datos con signo de 32 bits (I32) mientras que la segunda a un
indicador sin signo de 16 bits (U16).

Los números racionales y complejos tienen asociado el color naranja.


Siguen el estándar IEEE; el tamaño es de 32 bits para los de
precisión simple, 64 bits para los de doble precisión y el tamaño de
los extendidos depende de la plataforma: 80 bits para Windows y
Linux y para 64 MacOS. El primer bit siempre es el signo, los
siguientes el exponente, que es de tamaño 7, 10 y 14 bits
respectivamente y finalmente la mantisa. Los complejos simplemente
son dos números racionales de uno de los tamaños anteriores.

Sting:
Los strings son cadenas de caracteres. LabVIEW asocia el color rosa a
este tipo de datos. En memoria se almacenan como un puntero a
cuatro bytes que indican el tamaño y a continuación los valores de
los caracteres, un byte por cada uno, así el texto «hola» se
almacenará como «0000 0004 686F 6C61», siendo 4 el tamaño y
68h, 6Fh, 6Ch y 61h los códigos ASCII de cada una de las letras del
texto anterior.
Los strings son cadenas de caracteres. LabVIEW asocia el color rosa a
este tipo de datos. En memoria se almacenan como un puntero a
cuatro bytes que indican el tamaño y a continuación los valores de
los caracteres, un byte por cada uno, así el texto «hola» se
almacenará como «0000 0004 686F 6C61», siendo 4 el tamaño y
68h, 6Fh, 6Ch y 61h los códigos ASCII de cada una de las letras del
texto anterior.
Transformaciones número-texto:
Las transformaciones de números a texto y viceversa son muy
usadas en LabVIEW. Muchos VIs trabajan con datos de tipo texto
(strings) como por ejemplo los de GPIB, sin embargo, puede ser que
los datos que se envían o reciben sean números y necesiten
convertirse para realizar algún cálculo con ellos. En la paleta
Programming > String > String/Number Conversion se encuentran
varios VIs para realizar estas transformaciones.
En la primera fila se encuentran las funciones para pasar de número
a texto, la segunda fila es para pasar de texto a número. El formato
de los números puede ser entero o de coma flotante, decimal,
hexadecimal u octal. Los dos VIs de la derecha son Format Value y
Scan Value, estos VIs tienen un terminal llamado format string en el
que se puede especificar el formato de la conversión; para más
información sobre la sintaxis de este string consultar la ayuda de
LabVIEW.
En el menú string también aparecen dos funciones llamadas Scan
From String y Format Into String. Estos VIs realizan funciones de
escaneo, transformaciones y concatenación. Básicamente son una
herramienta configurable con la que transformar números y textos a
otro formato. Todos los VIs de esta “familia” trabajan de forma
parecida a la función sprintf del lenguaje C; tienen un terminal
común, el format string que sirve para configurar esa transformación
mediante unos códigos precedidos del símbolo «%», los códigos más
habituales son «%s» para strings, «%f» para números en coma
flotante, «%. xf» para indicar el número de decimales de los números
flotantes, «%d» para enteros decimales, etc.

En el ejemplo anterior se usa un string inicial que contiene «He


medido», también hay tres entradas más: un número en coma
flotante, un string y un número entero. El format string se muestra
en la parte superior, indica el formato de cada entrada mediante
%XY, donde X es la longitud e Y el tipo de datos, además en este
string también se puede incluir texto.
Para configurar este tipo de VIs se puede recurrir a la documentación
para conocer la sintaxis del terminal format string. También se puede
usar un asistente pinchando dos veces sobre el icono y rellenando los
campos de forma correcta, ver figura 3-15.
Una generalización de estos VIs son los que trabajan con expresiones
regulares, que son un método para representar patrones. Se suele
aplicar a textos para encontrar y manipular cadenas de texto que
cumplan una determinada condición. Usan un complejo sistema para
codificar estos patrones que puede consultarse en la ayuda de
LabVIEW.
Otros VIs para transformar texto en números y viceversa son los que
se encuentran en Programming > Numeric > Conversion,
concretamente String To Byte Array y Byte Array To String. Estos dos
VIs no sólo convierten un carácter de texto a un número o viceversa,
lo hacen con cadenas de caracteres, por lo tanto, son idóneos para
transmitir y recibir señales a través de interfaces como TCP o el
puerto serie.

Path:
Los path sirven para indicar rutas relativas o absolutas a directorios o
ficheros tanto de la máquina local como de otra en red.
Path Al guardarse en memoria se almacena un puntero a una
estructura que se forma del número de partes que contiene la ruta
(subdirectorios), después cada parte de la ruta se guarda como un
string, de esta forma se consigue que la ruta sea independiente de la
plataforma, es decir, la misma ruta podría ser entendida por
LabVIEW funcionando sobre Windows, Unix o MacOS.
Type cast:
Hay dos tipos de conversión: la coercion (implícita) y la cast
(explícita). La primera la hace automáticamente el compilador. Para
realizar la segunda hay que utilizar alguna instrucción, antes se han
visto varias para transformar de un tipo concreto a otro tipo también
concreto. Type Cast es la función más genérica para transformar
datos de un tipo a otro, viene dada por la figura 3-26.
El terminal x es el dato a convertir y type el tipo al que será
convertido, por defecto lo considera string, pero se pueden conectar
otros. Esta función no realiza ningún tipo de comprobación, así que al
usarla hay que tener en cuenta que las entradas type y x sean
compatibles, sino el resultado puede no ser el esperado.
Por ejemplo, este VI podría sustituir a String To Byte Array si en el
terminal type se conecta un array de enteros de ocho bits.

Variables locales:
Para llevar un dato desde/hacia un control/indicador se han usado
cables. A veces no se puede realizar el cableado, como en bucles
funcionando en paralelo y otras veces sencillamente se quiere escribir
en un control o leer de un indicador. Para todas estas situaciones
sirven las variables locales.
Las variables locales están asociadas a los controles e indicadores
presentes en el Panel Frontal de un VI. Mediante ellas se puede leer y
escribir el valor de ese control o indicador.
Para crear una variable local se puede ir a la paleta Programming >
Structures > Local Variable, después asociar esa variable a uno de
los controles o indicadores que existen mediante el menú contextual
> Select Item.

Nestor Arcángel Espinel


LabVIEW constituye un revolucionario sistema de programación
gráfica para aplicaciones que involucren adquisición, control, análisis
y presentación de datos. Las ventajas que proporciona el empleo de
LabVIEW se resumen en las siguientes:
Se reduce el tiempo de desarrollo de las aplicaciones al menos de 4 a
10 veces, ya que es muy intuitivo y fácil de aprender.
Dota de gran flexibilidad al sistema, permitiendo cambios y
actualizaciones tanto del hardware como del software.
Funciones
Paleta de funciones (functions palette) Se emplea en el diseño del
diagrama de bloques. La paleta de funciones contiene todos los
objetos que se emplean en la implementación del programa del VI,
ya sean funciones aritméticas, de entrada/salida de señales,
entrada/salidad de datos a fichero, adquisición de señales,
temporización de la ejecución del programa.
Las estructuras
Se comportan como cualquier otro nodo en el diagrama de bloques,
ejecutando automáticamente lo que está programado en su interior
una vez tiene disponibles los datos de entrada, y una vez ejecutadas
las instrucciones requeridas, suministran los correspondientes valores
a los cables unidos a sus salidas. Sin embargo, cada estructura
ejecuta su subdiagrama de acuerdo con las reglas específicas que
rigen su comportamiento, y que se especifican a continuación.
Case Structure Al igual que otras estructuras posee varios
subdiagramas, que se superponen como si de una baraja de cartas se
tratara. En la parte superior del subdiagrama aparece el identificador
del que se está representando en pantalla. A ambos lados de este
identificador aparecen unas flechas que permiten pasar de un
subdiagrama a otro.
La estructura Case tiene al menos dos subdiagramas (True y
False). Únicamente se ejecutará el contenido de uno de ellos,
dependiendo del valor de lo que se conecte al selector.
Estructura secuencia la ejecución del programa. Primero
ejecutará el subdiagrama de la hoja (frame) nº0, después el de la nº
1, y así sucesivamente. Para pasar datos de una hoja a otra se
pulsará el botón derecho del ratón sobre el borde de la estructura,
seleccionando la opción Add sequence local.
While Loop Es el equivalente al bucle while empleado en los
lenguajes convencionales de programación. Su funcionamiento es
similar al del bucle for. El programa comprueba el valor de lo que se
halle conectado al terminal condicional al finalizar el bucle. Por lo
tanto, el bucle siempre se ejecuta al menos una vez.
La estructura denominada Formula Node se emplea para
introducir en el diagrama de bloques fórmulas de un modo directo.
Resulta de gran utilidad cuando la ecuación tiene muchas variables o
es relativamente compleja
Enlaces de LabVIEW

https://www.youtube.com/watch?v=7n0sB83Q3Is
https://www.youtube.com/watch?v=05dJ-6AbSs4
https://www.youtube.com/watch?v=WgdESU_CTK0

Colaborativo
Iván Alexis Gonzales

Ítem a resolver Respuesta


escripción de la
idea (Algoritmo o
texto explicativo)

Información de  Determinar el tamaño de la matriz.


entrada
Procesos  Crear la matriz (m=>3 y m<=5)-
 Hacer movimientos de las casillas una a una.
 Restringir el movimiento en el borde de las
columnas.
 Al hacer cambio de algún umero de las casillas
se debe sobrescribir estas.
Información de  Cantidad de movimientos realizados.
salida  Puntuación obtenida.
 Mostrar la matriz en pantalla e irla
actualizando.
 Cuando está listo el rompecabezas mostrarle
al usuario que ya está listo.

Iván Alexis Gonzales


INTERFAZ O PANEL FRONTAL

El usuario tamaño El usuario ingresa el Botón (boleano) si el Si el usuario logra completar el


de la matriz valor de m-1 usuario decide terminar el rompecabezas numérico o si
programa pulsa stop

El usuario
decide mover la
casilla vacía en
las posiciones

El usuario
selecciona el tipo
de armado

Se muestra los
Matriz generada y actualizada
movimientos que
con los movimientos Se le da las gracias
realizo y la
al usuario por usar
puntuación
el programa
obtenida
REFERENCIAS BIBLIOGRAFICAS

• Chacón, R. R. (2005). La instrumentación virtual en la enseñanza de la


Ingeniería Electrónica. Acción Pedagógica. 11(1): 80-89, 2002. Mérida,
VE: D - Universidad de los Andes Venezuela. Pág. 80-86. Recuperado
de: http://bibliotecavirtual.unad.edu.co:2077/lib/unadsp/reader.actio n?
docID=10444669
• Babún, A. L. (2009). Instrumentos virtuales al servicio de la
enseñanza - aplicaciones en el estudio del espectro ensanchado en la
carrera de telecomunicaciones. Córdoba, AR: El Cid Editor | apuntes.
Pág. 5-8. Recuperado
de:http://bibliotecavirtual.unad.edu.co:2077/lib/unadsp/reader.actio n?
docID=10327492
• Lajara, V. J. R. (2007). LabVIEW: entorno gráfico de programación.
Barcelona, ES: Marcombo. Capítulo 1. pág. 3-36. Recuperado
de:http://bibliotecavirtual.unad.edu.co:2077/lib/unadsp/reader.actio n?
docID=10204103
• National Instruments Corporation (2015) [Software LabView].
Recuperado
de:https://lumen.ni.com/nicif/esa/acadevallvdl/content.xhtml
• Monroy, J. (2018). Fundamentos de programación de instrumentos
virtuales. [Archivo de video] Recuperado
de:http://hdl.handle.net/10596/22785

Potrebbero piacerti anche