Está en la página 1de 46

mexico.ni.

com
Arquitecturas de Programación
Avanzadas en NI LabVIEW

Arturo Gómez
Ingeniero de Campo
National Instruments

mexico.ni.com
Agenda de Hoy…
• Máquina de Estados

• Interfaz de Usuario Basada en Eventos

• Productor/Consumidor

• Máquina de Estados en Cola –Productor/Consumidor

• Introducción a Programación Orientada a Objetos en LabVIEW

mexico.ni.com 3
¿Qué es un Patrón de Diseño?
• Plantilla o arquitectura basada en LabVIEW
• Altamente conocida y aceptada
• Fácil de reconocer

Beneficios de Usar un Patrón de Diseño


Simplifica el proceso de desarrollo
• Los desarrolladores puede entender fácilmente un código
• No es necesario “reinventar la rueda”
• Proveen soluciones definidas para problemas comunes

Confiabilidad
• Muchas de ellas han sido utilizadas por años – son “están probadas”
• Comparte o utiliza un código creado en la comunidad de desarrolladores y
ahorra tiempo y esfuerzo.

mexico.ni.com 4
mexico.ni.com 5
El Comienzo: ¿Cómo Elijo un Patrón de Diseño?
• Identificar el aspecto más importante de su aplicación:
Escalable: Es sencillo es agregar funciones N + 1?
Modular: La aplicación esta dividida en componentes
Reusable: El código es genérico a esta aplicación y le permite reutilizarlo
para proyectos futuros?
Extensible: Qué tan complicado es agregar nuevas funcionalidades?
Simple: Cuál es la solución más sencilla que satisfaga todos los
requerimientos y criterios de la aplicación?

• Seleccione una plantilla base con potencial para mejorar.

mexico.ni.com 6
Precaución
Usted puede complicar su aplicación si utiliza
erróneamente un patrón de diseño complejo

No olvide el patrón de diseño más común de todos en


LabVIEW – ¡flujo de datos!

mexico.ni.com 7
Antes de Empezar, Usted debe estar familiarizado
con…
• Ciclos
• Shift Registers
• Estructuras Case
• Constantes Enumeradas
• Estructuras de eventos

mexico.ni.com 8
Máquina de Estados
Necesito ejecutar una secuencia de eventos, pero el orden
esta determinado de manera interactiva.

mexico.ni.com
Máquina Expendedora de Refrescos
Initialize No Input

Wait
Nickel Deposited
Change Quarter Deposited
Requested Dime Deposited

Total <50
Total <50 Total <50
Change Quarter
Nickel
Dime
Total ≥50 Total ≥50
Total ≥50

Total >50

Vend

Total = 50
Exit
Costo 50 centavos

mexico.ni.com 10
Desglose y Funcionamiento del Patrón
Código de transición determina el siguiente
Estructura Case contiene un caso para cada estado en base a los resultados de la
estado ejecución del paso

FIRST STATE

Step Execution

Shift registers usados para llevar


el estado

Transition Code

NEXT STATE
FIRST STATE

mexico.ni.com 11
Opciones de Código de Transición

Step
Execution

Step Execution

Step
Execution

mexico.ni.com 12
Máquina de Estados

DEMO

mexico.ni.com 13
Recomendaciones de Uso

Casos de Uso
• Interfaces de usuario
• Los datos determinan la secuencia de ejecución

Consideraciones
• Creación de una máquina de estados requiere que el
diseñador defina todos los posibles estados
previamente

mexico.ni.com 14
Interfaz de Usuarios Basada en
Eventos
Estoy sondeando acciones del usuario en la interfaz, lo cual hace
más lenta mi aplicación y en ocasiones no logro detectar esas
acciones.

mexico.ni.com
Fundamentos
Programación basada en un procedimiento
• Ejecuta una serie de instrucciones en secuencia
• Requiere estar sondeando para detectar eventos
• No puede determinar el orden de múltiples eventos

Programación basada en eventos


• Determina la ejecución al correr el VI
• Espera a que ocurran eventos sin consumir recursos del CPU
• Recuerda el orden de múltiples eventos

mexico.ni.com 16
Desglose y Funcionamiento del Patrón

1. El SO transmite los eventos


(mouse click, teclado) hacia las
aplicaciones
2. Estructura de eventos captura
los eventos registrados y
ejecuta el caso apropiado
3. Estructura eventos regresa
información del evento al caso
4. Estructura eventos almacena en
una cola los eventos que
ocurran mientras esta ocupada
en otro caso

mexico.ni.com 17
Interfaz de Usuario con Eventos

DEMO

mexico.ni.com 18
Recomendaciones
Casos de Uso
• UI: Conserva el uso del CPU
• UI: Asegura que no se perderá un evento
• Dirigir procesos de esclavos

Consideraciones
• Estructura de eventos elimina el determinismo
• Evite colocar 2 estructuras de eventos en un ciclo while
• Recuerde leer la terminal de control boleano en el caso
configurado para ese cambio de valor (value change)

mexico.ni.com 19
Productor/Consumidor
Tengo dos procesos que necesitan ejecutarse al mismo tiempo.
Necesito asegurarme que uno de ellos, no haga más lento al
otro.

mexico.ni.com
Desglose y Funcionamiento del Patrón
1. Ciclo maestro indica a uno o
mas esclavos cuando pueden Thread 1
ejecutarse
2. Permite ejecución asíncrona
de ciclos
3. La independencia de datos
rompe el flujo de datos y Thread 2
permite el multithreading
4. Desliga los procesos

Thread 3

mexico.ni.com 21
Comunicación de ciclos
• Variables
• Notificadores
• Colas (Queues)
• Semáforos

mexico.ni.com 22
COLAS (QUEUES)
Agregar elementos al Queue Extraer elementos del Queue
Referencia al queue existente en memoria

Seleccion del tipo de datos


Dequeue esperará por datos o un time-out

mexico.ni.com 23
Productor / Consumidor

mexico.ni.com 24
Productor/Consumidor

DEMO

mexico.ni.com 25
Programación Orientada a
Objetos

mexico.ni.com
¿Por qué Aprender POO?
Es el primer paso para que usted desarrolle código que…

• …se escribe más FÁCILMENTE


• …es mucho más ESTABLE
• …simplifica su MANTENIMIENTO

mexico.ni.com 27
¿Qué es Programación Orientada a Objetos?
• Un enfoque diferente para programar

• Un intento por hacer que la programación modele mejor la


manera en la que pensamos en el mundo real

• Una opción de programación en lenguajes como:


VB.NET, C#, C++, Java, Python, G
…y muchos más

Nace de la necesidad de mejorar la capacidad de


administrar y organizar software complejo

mexico.ni.com 28
Comparando los Enfoques de Programación
Orientado a la tarea Orientado al objeto
• Se concentra en el proceso • Se concentra en los datos

• Instrucciones paso a paso • Entidades que interactúan

• Modularizado por rutinas que • Modularizado en


agrupan acciones componentes con distintas
responsabilidades
• Separa los datos y el
comportamiento • Unifica la estructura de datos
con sus manipuladores

mexico.ni.com 29
Propiedades y Métodos en LabVIEW
• Las propiedades en LabVIEW son un clúster de tipos de
datos comúnes
• Los accesas con Bundle/Unbundle
• Los métodos de clase en LabVIEW son sólo VIs

mexico.ni.com 30
¿Qué es una Clase en LabVIEW?
• Un cluster glorificado
• Un tipo de dato definido por el usuario
• Un tipo de Librería de Proyecto

Anatomía de las Clases en LabVIEW


• Cada clase en LabVIEW consiste en:
• Un control de datos privado (cluster)
• Vis miembros para accesar a los datos

mexico.ni.com 31
Creando una Clase en LabVIEW
• Las clases en LabVIEW se administran en un proyecto

Clase
Círculo
Clase
Cuadrado

Datos Privados
de la Clase
Método Draw()

mexico.ni.com 32
Qué es un “Objeto” en LabVIEW
• Una instancia de la clase en el diagrama de bloques, es un objeto.
• Object data and methods are defined by the class
• El tipo de datos de un objeto es su clase

mexico.ni.com 33
Nuevo Framework para Sistemas Multi-Proceso
El Actor Framework esta diseñado para
aplicaciones grandes multi-proceso

Incluye utilería para generar mensajes e


invocar métodos del actor

Para más información:


ni.com/actorframework

Utiliza en gran medida la programación orientada a


objetos para eliminar código duplicado y mejorar la
escalabilidad del sistema

mexico.ni.com 34
¿Qué es un Actor?

Un actor es conceptualmente lo mismo que un manejador de mensajes en


queue (QMH) o una máquina de estados en queue (QSM).

mexico.ni.com 35
Máquina de Estados con Queue

mexico.ni.com 36
Clúster y Nodo...

mexico.ni.com 37
… se convierte en Clase y Método

mexico.ni.com 38
… se convierte en Clase y Método

mexico.ni.com 39
El Mensaje y Estructura Case…

mexico.ni.com 40
… se Convierte en Clase y Enlace Dinámico

mexico.ni.com 41
Nuevo Actor Framework

DEMO

mexico.ni.com 42
Plantillas y Proyectos de Ejemplo en LabVIEW

• Punto de inicio recomendado para


aplicaciones comunes en LabVIEW

• Indica claramente cómo y dónde agregar


funcionalidades

• Muestra buenas prácticas para diseño de


código, documentación y organización

• Permite agregar plantillas y proyectos


personalizados

mexico.ni.com 43
Enriquezca su Conocimiento con
Capacitación y Certificación
• El Camino Más Rápido para Incrementar
Habilidades y Productividad
• Certificación de NI: Valide su Experiencia

Visite nuestra pagina


ni.com/training/esa/

mexico.ni.com 44
Arturo Gómez
Ingeniero de Campo
National Instruments México

¿PREGUNTAS? arturo.gomez@ni.com
01 800 010 0793

mexico.ni.com 45
Disfrute el Resto del Día…

mexico.ni.com 46

También podría gustarte