Está en la página 1de 79

Dr.

Ernesto Sifuentes de la hoya


esifuent@uacj.mx

Universidad Autnoma de Ciudad Jurez


Instituto de Ingeniera y Tecnologa
Cd. Jurez, (Chihuahua), Mxico

2017
1
Los 5 principales errores del novato de LabVIEW

1. Uso excesivo del Flat Sequence.

2. Mal uso de las variables locales.

3. Ignorar la modularidad del cdigo.

4. Crear cdigos enormes.

5. No documentar el cdigo.

Dr. Ernesto Sifuentes de la Hoya 2


1. Uso excesivo del Flat Sequence

Los usuarios a menudo se basan en estas estructuras para forzar


la ejecucin en serie del cdigo en el diagrama de bloques, en
lugar de utilizar el flujo de datos con conexiones entre nodos.

Dr. Ernesto Sifuentes de la Hoya 3


1. Uso excesivo del Flat Sequence

Flujo de datos significa que un nodo (subVI, estructura


primitiva y as sucesivamente) no se ejecutar hasta que todos
los datos de entrada necesarios estn presentes.

El uso excesivo de flat sequence puede inhibir la ventaja de la


paralelizacin.

Los cables de error ayudan a forzar el flujo de datos, en lugar


de depender del flat sequence y tambin ayudan al control de
errores.

Dr. Ernesto Sifuentes de la Hoya 4


1. Uso excesivo del Flat Sequence
Flat sequence es til para la evaluacin comparativa del
rendimiento del cdigo.

Dr. Ernesto Sifuentes de la Hoya 5


2. Mal uso de variables locales
Las variables locales son parte de memoria compartida para comunicar
datos entre las diferentes secciones de un VI.

Pueden dar problemas cuando dos o ms hilos tratan de acceder al


mismo tiempo a un dato para cambiarlo (condiciones de carrera).

El paralelismo inherente a LabVIEW hace que un uso excesivo de


variables sea problemtico porque la memoria compartida puede ser
accedida por ubicaciones de cdigo diferentes al mismo tiempo.

Se pueden comunicar con seguridad los datos de una parte de un


programa de LabVIEW a otro usando diversos mtodos, entre los que
se incluyen cables, colas, eventos, notificadores, variables funcionales
globales y otras ms.

Dr. Ernesto Sifuentes de la Hoya 6


3. Ignorar la modularidad del cdigo
Se puede ahorrar mucho tiempo de desarrollo mediante la
creacin de subVIs modulares de partes del cdigo que pueden
ser reutilizados ms adelante en otras aplicaciones.

Convertir funciones
repetidas en SubVIs

Dr. Ernesto Sifuentes de la Hoya 7


Cdigo modular y documentado

Dr. Ernesto Sifuentes de la Hoya 8


4.Crear cdigo enorme
Error tpico de programacin en LabVIEW.

Falta de una
arquitectura de
programacin

Cdigo de un novato en LabVIEW

Dr. Ernesto Sifuentes de la Hoya 9


Las plantillas y los proyectos de ejemplo disponibles a partir de LabVIEW
2012 hacen que la comprensin de las arquitecturas de software sea fcil.

Utilice plantillas
de ejemplo

Plantillas y Proyectos
Ejemplo de LabVIEW:

http://www.ni.com/white-paper/14031/es/

Dr. Ernesto Sifuentes de la Hoya 10


5. No documentar el cdigo

Utilice etiquetas
para documentar
el cdigo.

Dr. Ernesto Sifuentes de la Hoya 11


Tutoriales de arquitecturas de programacin:

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

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

Seminario Web: Ahorre Tiempo de Programacin con


Patrones de Diseo

http://www.ni.com/webcast/2998/es/

Dr. Ernesto Sifuentes de la Hoya 12


Arquitecturas de programacin en LabVIEW

1. Programacin modular

2. Programacin secuencial

3. Programacin de estados

4. Mquina de estados

5. Programacin basada en eventos

Dr. Ernesto Sifuentes de la Hoya 13


Para esta sesin usted debe conocer:

Estructuras: for, while, case, secuencia.

Registros de corrimiento (shift registers).

Controles y constantes enumeradas (enum).

Propiedaes de controles e indicadores.

Arreglos y funciones de arreglos.

Clusters y Manejo de errores.

Dr. Ernesto Sifuentes de la Hoya 14


Ejemplo: Solucin de un problema
Utilizando una metodologa de desarrollo de software :

1.- Definir el problema (escenario).

2.- Identificar las entradas y salidas, as como requerimientos


adicionales.

3.- Disear un algoritmo, diagrama de flujo y/o diagrama de estados


para resolver el problema.

4.- Implementar el diseo.

5.- Probar y verificar la implementacin.

6.- Documentar la implementacin.

Dr. Ernesto Sifuentes de la Hoya 15


Ejemplo: Solucin de un problema

Utilizando una metodologa de desarrollo de software :

1.- Definir el problema (escenario)

Escenario : Se desea curar un material a cierta temperatura


durante cierto tiempo dentro de un horno. Para este
problema no es necesario conocer el tipo de material ni la
hora del da. Lo que se debe conocer es el tiempo de
cura, la temperatura de cura y el mtodo para ajustar la
temperatura del horno.

Dr. Ernesto Sifuentes de la Hoya 16


Ejemplo: Solucin de un problema

2.- Identificar las entradas y salidas, as como


requerimientos adicionales

Entradas: Son la materia prima (datos) a procesar durante el


proceso para resolver el problema

En este caso: Tiempo de cura (segundos)


Temperatura de cura (Kelvin)
Temperatura del horno (kelvin)

Salidas : Representan el resultado de clculo, proceso u otra


condicin

En este caso: Un interruptor para on/off la resistencia del horno


para cambiar la temperatura

Dr. Ernesto Sifuentes de la Hoya 17


Ejemplo: Solucin de un problema

3.- Disear un algoritmo, diagrama de flujo y/o


diagrama de estados para resolver el problema
Algoritmo:
1. Leer temperatura exterior
2. Leer temperatura interior
3. Si la temperatura interior no es igual a la exterior ir al paso 1
4. Leer temperatura interior
5. Si la temperatura interior es mayor o igual que la
temperatura deseada, apagar el interruptor
6. Si la temperatura interior es menor que la temperatura
deseada, encender el interruptor
7. Si el tiempo es menor que el tiempo de cura, ir al paso 4
8. Apagar el interruptor

Dr. Ernesto Sifuentes de la Hoya 18


Ejemplo: Solucin de un problema

Diagrama
de flujo:

Dr. Ernesto Sifuentes de la Hoya 19


Ejemplo: Solucin de un problema
Diagrama
de estados:

Un estado es una parte


de un programa que
satisface una
condicin, accin o
evento que causa que
el programa pase a
otro estado.

Dr. Ernesto Sifuentes de la Hoya 20


Ejemplo: Solucin de un problema

4.- Implementar el diseo


Se crea el cdigo para implementar el algoritmo, diagrama de flujo o diagrama de
estados. Aqu es donde se define qu estructura de programacin de LabVIEW es la
ms adecuada segn el problema a resolver.

5.- Probar y verificar la implementacin


En esta etapa es muy importante, ya que nos ayuda a verificar el correcto
funcionamiento del sistema a diferentes valores de entrada, as como encontrar
errores o posible mal funcionamiento del sistema a entradas fuera de rango.

6.- Documentar la implementacin


Realizar un reporte de la solucin del problema, as como realizar una amplia y bien
definida documentacin del software realizado, facilitar futuro mantenimiento y
mejoras.

Dr. Ernesto Sifuentes de la Hoya 21


El primer paso para desarrollar un proyecto en LabVIEW
es definir la arquitectura de programacin a utilizar.

La arquitectura de programacin es esencial para


realizar un diseo de software exitoso.

Las arquitectura debe ser fcil de reconocer y permitir


que otros desarrolladores puedan entender y modificar
el diseo del proyecto.

Dr. Ernesto Sifuentes de la Hoya 22


Qu es una plantilla o patrn de diseo?

Una solucin establecida para un problema comn bien especificado.

Fcil de reconocer e identificar.

Altamente conocida y aceptada por la comunidad de desarrolladores


de LabVIEW.

Beneficios: Ahorrar tiempo, mejorar la longevidad, escalabilidad y


legibilidad del cdigo.

El patron de diseo ms comn en LabVIEW es el Flujo de datos!!!.

Dr. Ernesto Sifuentes de la Hoya 23


Criterios para una aplicacin de software

Escalable: que sea sencillo agregar nuevas funciones.

Modular: que est dividida en components bien definidos e


independientes.

Reusable: que se pueda utilizer en otros proyectos.

Simple: que presente la solucion ms sencilla para satisfacer


todos los requisitos y criterios del problema a resolver.

Dr. Ernesto Sifuentes de la Hoya 24


1.- Programacin modular

El concepto de programacin
modular en LabVIEW descansa
sobre el elemento funcin.

La programacin modular se basa


en la programacin con funciones.

Funciones prpias de LabVIEW o


creadas por el usuario.

Dr. Ernesto Sifuentes de la Hoya 25


1.- Programacin modular
Funciones creadas por el usuario, llamadas SubVIs.

Dr. Ernesto Sifuentes de la Hoya 26


1.- Programacin modular

Convertir funciones
repetidas en SubVIs

Dr. Ernesto Sifuentes de la Hoya 27


1.- Programacin modular
Ejemplo:

Dr. Ernesto Sifuentes de la Hoya 28


2.- Programacin secuencial

LabVIEW no es un programa secuencial como Basic C, es un


lenguaje grfico que trabaja por flujo de datos.

Es posible implementar programacin secuencial en LabVIEW


utilizando la estructura de secuencias.

Ejemplo: Sistema para medir temperatura que realice:

1.- Leer temperatura,


2.- Verificar que la temperatura est en ciertos lmites o
activar alarmas,
3.- Graficar el historial de temperatura.

Dr. Ernesto Sifuentes de la Hoya 29


2.- Programacin secuencial

Dr. Ernesto Sifuentes de la Hoya 30


2.- Programacin secuencial

Dr. Ernesto Sifuentes de la Hoya 31


2.- Programacin secuencial

Dr. Ernesto Sifuentes de la Hoya 32


3.- Programacin de estados
Aunque una estructura Sequence y SubVIs cableados
secuencialmente logran juntos las tareas, algunas veces se requiere
de ms:
1. Qu tal si se debe cambiar el orden de la secuencia?

2. Qu tal si se debe repetir un tem en la secuencia ms a


menudo que los otros tems?

3. Qu tal si algunos tems en la secuencia se ejecutan slo


cuando se renen ciertas condiciones?

4. Qu tal si se debe detener el programa inmediatamente, en


lugar de esperar hasta el fin de la secuencia?

Dr. Ernesto Sifuentes de la Hoya 33


4.- Mquina de estados

El patrn de diseo de mquina de estados es un patrn de


diseo muy comn y til para LabVIEW.

Se puede utilizar el patrn de diseo de mquina de estados


para implementar cualquier algoritmo que pueda ser
explcitamente descrito por un diagrama de estado o un
diagrama de flujo.

Una mquina de estados implementa un algoritmo


moderadamente complejo de toma de decisin, tal como una
rutina de diagnstico o monitorizar un proceso.

Dr. Ernesto Sifuentes de la Hoya 34


4.- Mquina de estados

Use las mquinas de estados en aplicaciones donde existen


estados identificables.

Cada estado puede conducir a uno o varios estados o terminar


el flujo del proceso.

Una mquina de estados se basa en las entradas de usuario o


en evaluaciones de estados para determinar cual estado es el
siguiente.

Las mquinas de estados se usan comnmente para crear


interfaces de usuario.

Dr. Ernesto Sifuentes de la Hoya 35


4.- Mquina de estados
Necesito ejecutar una secuencia de eventos, pero el orden est
determinado de manera iteractiva.

Una mquina de estados tiene 3 componentes:


1. Estado
2. Evento
3. Accin

Dr. Ernesto Sifuentes de la Hoya 36


4.- Mquina de estados

Dr. Ernesto Sifuentes de la Hoya 37


4.- Mquina de estados
Estructura while Ejecutar continuamente los diferentes estados
Shift Register Informacin de transicin de estado
Estructura case Un caso para cada estado
Cdigo funcional Funcin a implementar
Cdigo de transicin Determina el siguiente estado

Dr. Ernesto Sifuentes de la Hoya 38


4.- Mquina de estados

Dr. Ernesto Sifuentes de la Hoya 39


4.- Mquina de estados
La transicin en la mquina de
estados es con la estructura case.
Lo cual provee una arquitectura de
mquina de estados escalable,
leble y sostenible.

Para controlar la inicializacin y


transicin de la mquina de
estados se utiliza el control de tipo
enumerado.

Los controles de tipo enumerado


son ampliamente usados como
selectores de caso en las mquinas
de estados.

Dr. Ernesto Sifuentes de la Hoya 40


4.- Mquina de estados

Ejercicio:
Crear un proyecto
desde LabVIEW a
travs de una
plantilla de mquina
de estados.

Dr. Ernesto Sifuentes de la Hoya 41


4.- Mquina de estados
Si el usuario intenta agregar o eliminar un estado en el control
de tipo enumerado, los cables que estn conectados a las
copias del control quedan mal alambrados.

Una solucin es crear un nuevo control de tipo enumerado,


entonces hacer clic derecho y seleccionar typedef desde el
men rpido para controlar la inicializacin y transicin de la
mquina de estados.

Crear un control de tipo enumerado de tipo definido hace que


todas las copias del control de tipo enumerado se actualicen
automticamente si usted agrega o remueve un estado.

Dr. Ernesto Sifuentes de la Hoya 42


4.- Mquina de estados

1. Simple por defecto

No se requiere cdigo para


pasar al siguiente estado, la
transicin siempre ocurre por
default. Esto es porque slo
existe un estado siguiente.

Dr. Ernesto Sifuentes de la Hoya 43


4.- Mquina de estados

2. Entre dos estados

Involucra la toma de decisin en


una transicin entre dos
estados.
La transicin entre dos posibles
estados puede ser manejada
con la funcin de seleccin.

Limita la escalabilidad de la
aplicacin.

Dr. Ernesto Sifuentes de la Hoya 44


4.- Mquina de estados

3. Entre dos o ms estados

Se puede crear una


arquitectura escalable con:

Estructura case

Arreglo

Dr. Ernesto Sifuentes de la Hoya 45


Proyecto 1. Sistema de monitoreo de temperatura
Implementar un sistema para monitorizar temperatura en un
rango de 10C a 50C. Activar alertas por fro o calor segn
los lmites especificados por el usuario, indicarlo mediante
texto en el panel frontal y leds fsicos a travs de 2 salidas
digitales del DAQ.
1.- Implementar el programa utilizando mquinas de estados (ver
siguientes diapositivas).

2.- Implementar el hardware correspondiente (utilice un sensor


LM35 y un DAQ-USB6009.

Dr. Ernesto Sifuentes de la Hoya 46


Dr. Ernesto Sifuentes de la Hoya 47
Disee un diagrama de transicin de estados para un programa
que realice lo siguiente:

Adquirir una temperatura en un rango de 10 a 50 C, por el canal


analgico 0 del dispositivo DAQ , en un tiempo de muestreo de 1
segundo.

Analizar la temperatura y determinar si existe alerta de calor o fro


(fuera del rango mnimo y mximo establecido por el usuario).

Activar seales de alarma si existe alerta de calor o fro.

Graficar : temperatura actual y lmites de calor y frio para cada


temperatura muestreada.

Almacenar los valores de temperatura que estn fuera de rango.

Dr. Ernesto Sifuentes de la Hoya 48


1. Cree un folder llamado Monitoreo de temperatura.

2. Abra un nuevo VI e implemente el panel frontal (interfaz


de usuario), llmelo monitor de temperatura.vi y gurdelo
en el folder que cre (ver siguiente diapositiva).

3. Coloque la estructura de una mquina de estados: Una


estructura while y dentro una estructura case.

Dr. Ernesto Sifuentes de la Hoya 49


Dr. Ernesto Sifuentes de la Hoya 50
4. Cree el control para las transiciones
a) Coloque un control enumerado
b) Edite las opciones:
Adquisicin
Anlisis
Almacenar
Checar el tiempo
c) Clic derecho sobre el control
d) Elija la opcin Advanced -> Customize
e) Elija Type def
f) Grbelo en el folder del proyecto
g) Cierre la ventana
h) Convierta el control en constante (en el panel de diagrama)

Dr. Ernesto Sifuentes de la Hoya 51


5. Haga clic derecho en la estructura case y seleccione Add case
para cada opcin desde el men rpido.

6. Cambie el tnel de la constante de tipo enumerado por un


registro de desplazamiento.

7. Coloque la instruccin Wait (ms) en el ciclo para que el


controlador pueda desarrollar otras tareas cuando lo requiera.

8. Asigne 5 a la constante de tiempo.

9. Fuera del ciclo cree un cluster utilizando la funcin bundle.

10. Pase el cluster de temperatura a la estructura case para que


pueda ser adquirido desde cualquier estado.

11. Cambie el tunel del cluser a un registro de desplazamiento.

Dr. Ernesto Sifuentes de la Hoya 52


Dr. Ernesto Sifuentes de la Hoya 53
Dr. Ernesto Sifuentes de la Hoya 54
El estado adquisicin lee la temperatura del sensor LM35 a
travs de la DAQ USB-6009 (canal 0).

Implemente un VI para adquirir la temperatura en el rango de


10 a 50 grados, utilice el canal ai0, que adquiera 1 muestra (on
demand). La temperatura se despliegue en una grfica.
Gurdelo en el folder del proyecto y utilcelo como SubVI (ver
siguiente diapositiva).

Cree una copia de la constante enumerada para transitar al


estado : Anlisis

Dr. Ernesto Sifuentes de la Hoya 55


Dr. Ernesto Sifuentes de la Hoya 56
Estado : Anlisis

Cul es la funcin de los registros de desplazamiento en el


cluster?

Cul es la funcin del registro de desplazamiento en el


control enumerado?

Dr. Ernesto Sifuentes de la Hoya 57


Estado : Anlisis
Este estado analiza la temperatura leda y determina las seales de alerta.
Implemente un SubVI para analizar y validar el rango de temperatura especificado
por el usuario.
Utilice la temperatura, lmite superior y lmite inferior. Genere como salida un
String con el tipo de alerta, y un booleano alerta.

Edite el icono del SubVI.


Pruebe el SubVI con diferentes valores

En la mquina de estados:
a) Agregue el SubVI.
b) Obtenga los datos del clster y envelos al
SubVI.
c) Actualice en el clster los resultados del
SubVI.
d) Haga las transiciones de acuerdo a la alerta
obtenida.

Dr. Ernesto Sifuentes de la Hoya 58


SubVI para analizar y validar el rango de temperatura
especificado por el usuario.

Dr. Ernesto Sifuentes de la Hoya 59


Dr. Ernesto Sifuentes de la Hoya 60
Dr. Ernesto Sifuentes de la Hoya 61
Dr. Ernesto Sifuentes de la Hoya 62
Estado : Almacenar
En el estado almacenar:

a) Utilice la funcin Format into string


para generar un string con todos los
prametros a guardar separados por
un tab .

b) Temperatura, limite inferior, limite


superior, alera.

c) Coloque un fin de lnea o retorno de


carro.

d) Implemente el cdigo necesario para


guardar los datos en un archivo

Dr. Ernesto Sifuentes de la Hoya 63


Dr. Ernesto Sifuentes de la Hoya 64
Estado : Checar tiempo

Dr. Ernesto Sifuentes de la Hoya 65


Cablee el clster del dato de temperatura, el clster de error y el
refnum del archivo a travs de todos los estados

Dr. Ernesto Sifuentes de la Hoya 66


Determine cundo detener la mquina de estados. Prela cuando
ocurre un error o el usuario hace clic en el botn de stop, pero
slo despus de que ocurra la secuencia completa.

Dr. Ernesto Sifuentes de la Hoya 67


a) Se cre un tunel para conectar los datos del botn stop al
OR y luego al stop del While.
b) En los estados Adquisicin, Anlisis y Almacenar cree una
constante false

Dr. Ernesto Sifuentes de la Hoya 68


Ejercicio

a) Fije el VI Elapsed time Express para


iniciar la cuenta cuando el VI principal
inicie.
b) Coloque una constante True fuera del
Ciclo While, a la izquierda del VI Elapsed
time.
c) Cablee la constante al terminal de reset
del VI Elapsed time.
d) Reemplace el tnel reset con un registro
de corrimiento.

Dr. Ernesto Sifuentes de la Hoya 69


Ejercicio
Es una buena prctica colocar texto libre (con la herramienta de texto)
para documentar el programa. Eso lo hace ms claro para usted al revisar
programas grandes y para otros colaboradores que trabajen con usted.

Revise que no existan cables sueltos y pruebe la aplicacin.

Guarde el programa.

Si tiene una tarjeta de adquisicin de datos, realice las conexiones


necesarias y pruebe el correcto funcionamiento del programa.

Si no tiene tarjeta de adquisicin de datos: Grabe el programa con otro


nombre.

Simule la adquisicin generando nmeros aleatorios entre 10 y 50.

Fin del proyecto 1.

Dr. Ernesto Sifuentes de la Hoya 70


5.- Programacin basada en eventos

LabVIEW es un ambiente donde el flujo de datos determina el


orden de ejecucin de un programa (VI).

La programacin basada en eventos permite la interaccin


directa con el usuario y el panel frontal, y otras actividades
asncronas para le ejecucin de un VI.

Dr. Ernesto Sifuentes de la Hoya 71


5.- Programacin basada en eventos
Estructura de Eventos o Manejador de eventos

Event Structure:

Es una estructura que contiene uno o ms subdiagramas


correspondientes a eventos definidos.

Cuando un evento ocurre, el correspondiente subdiagrama se ejecuta.

Espera hasta que un evento ocurre o un tiempo limite (time-out) ocurre,


por default el time-out es -1 (never times-out).

El programador define que condiciones constituyen un evento cuando


implementa el subdiagrama.

De gran utilidad para implementar interfaces de usuario.

Dr. Ernesto Sifuentes de la Hoya 72


5.- Programacin basada en eventos
Estructura de Eventos o Manejador de eventos

Dr. Ernesto Sifuentes de la Hoya 73


5.- Programacin basada en eventos
Event Structure

Evento => Notificacin asncrona de que ha ocurrido algo.


Interfaz de usuario (mouse click, key press, etc.).
Dispositivo externo (interrupcin, trigger).

Dr. Ernesto Sifuentes de la Hoya 74


5.- Programacin basada en eventos
Event Structure
1.Abra un nuevo VI e implemente el siguiente cdigo

a) Agregue un botn y llmelo calcular


b) Agregue una estructura de eventos que encierre el cdigo generado
c) Edite el evento para que se active cuando el usuario oprima el botn
calcular
d) Salve el programa como Evento_.1vi
e) Ejectelo y verifique su funcionamiento

Dr. Ernesto Sifuentes de la Hoya 75


Ejercicios
Event Structure
2. Modifique el ejercicio anterior (Evento_1.vi) para que el panel
frontal tenga la siguiente apariencia y funcionalidad.

a) Agregue un ciclo while.


b) Un botn llamado salir.
c) Agregue un evento y progrmelo
al botn salir, cuando el botn
cambie su valor.
d) Coloque una constante. verdadera
y cable sta al botn stop del
while.
e) Considere como referencia la
figura de la siguiente diapositiva.

Dr. Ernesto Sifuentes de la Hoya 76


Ejercicios

Dr. Ernesto Sifuentes de la Hoya 77


Ejercicios
f) Recuerde que los botones no deben cablearse.
g) Modifique las propiedades mecnicas de los botones para que se restablezcan
cada vez que se opriman.
h) Guarde el programa y prubelo.
i) Una vez que est seguro(a) que el programa funciona correctamente, cambie
su apariencia, para ello utilice File VI Properties Category Windows
Appearence Dialog.

Dr. Ernesto Sifuentes de la Hoya 78


Interfaz de Usuario con el manejador de Eventos
Aplicacin completa de adquisicin de datos

Nota: Utilizar la plantilla e instrucciones proporcionado en archivo adjunto en zip.

Dr. Ernesto Sifuentes de la Hoya 79

También podría gustarte