tecnicas programacion de aplicaciones eficientes en labview
TRANSCRIPT
![Page 1: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/1.jpg)
![Page 2: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/2.jpg)
Técnicas de Programación para Obtener el Máximo Provecho de
LabVIEW
Ing. Benjamín CelisGerente – Ingeniería de Aplicaciones
National Instruments Mexico
![Page 3: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/3.jpg)
Agenda
• Técnicas de Programación Multinúcleo• Patrones de Diseño Avanzados• Programación Orientada a Objetos• Herramientas para Aplicaciones a Gran Escala
![Page 4: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/4.jpg)
Arquitecturas Paralelas Aumentan Desempeño
1970 1975 1980 1985 1990 1995 2000 2005 2010
CPU
Spee
d
Clock Speed (kHz) Transistor Count
Procesador Intel QX6700 Quad Core• 4 procesadores (pare de Core 2)• Velocidad de reloj2.66 GHz
Procesadores rápidos Procesadores Multinúcleo
![Page 5: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/5.jpg)
Creando Aplicaciones Multitarea
Aplicaciones deben hacer uso de las tareas para beneficiarse de los procesadores multinúcleo.
![Page 6: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/6.jpg)
Programas Multitarea en LabVIEW
• Multitarea automático– LabVIEW automáticamente asigna tareas basado
en el paralelismo– La mayoría de los programas existentes correrán
más rápido en un sistema Multinúcleo sin alteración
• Multitarea manual– Se limita la sección de código a ejecutarse como
una tarea
![Page 7: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/7.jpg)
Técnicas para Paralelismo
• Paralelismo de Tareas y Multitareas Automático
• Paralelismo de Datos• Pipelining y balanceo de etapas
![Page 8: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/8.jpg)
Paralelismo Tareas
1) Buscar tareas que pueden correr en paralelo2) La arquitectura del código refleja el
paralelismo• Eliminar dependencias de datos• LabVIEW automáticamente identifica código
paralelo y puede separarlo en múltiples tareas!
![Page 9: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/9.jpg)
Ejemplo: Paralelismo de Tareas
Tarea
Tarea
Tarea
Operaciones Paralelas
![Page 10: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/10.jpg)
1) Buscar un set de datos grande que pueda ser procesado en dos o más pedazos independientes
2) Arquitectura de código:• Separar los datos• Procesar los datos en paralelos• Combinar los resultados individuales para
obtener un resultado general
Paralelismo de Datos
![Page 11: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/11.jpg)
Ejemplo: Paralelismo de Datos
Resultados
Set de Datos
CPU Núcleo Procesamiento Señales
![Page 12: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/12.jpg)
Combinar Resultados
Procesamiento Señal
Set de Datos
CPU Núcleo
CPU Núcleo
CPU Núcleo
CPU Núcleo
Procesamiento Señal
Procesamiento Señal
Procesamiento Señal
Ejemplo: Paralelismo Datos
![Page 13: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/13.jpg)
• Motivación: Muchos programas contienen secuencias, algoritmos de múltiples pasos
• Aplicando pipelining se puede incrementar la cantidad de datos procesados
Pipelining
1
2
3
4
Acquire Filter Analyze Log
time
1
2
3
4
Acquire Filter Analyze Log
t0 t3 t4 t7
![Page 14: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/14.jpg)
time
Acquire
Filter
Analyze
Log
t0 t1 t2
CPU Core
CPU Core
CPU Core
CPU Core
t3
Estrategia Pipelining
![Page 15: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/15.jpg)
Acquire Acquire
Filter Filter
Analyze Analyze
Log Log
CPU Core
CPU Core
CPU Core
CPU Core
timet0 t1 t2 t3
Estrategia Pipelining
![Page 16: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/16.jpg)
Acquire Acquire Acquire Acquire
Filter Filter Filter Filter
Analyze Analyze Analyze Analyze
Log Log Log Log
CPU Core
CPU Core
CPU Core
CPU Core
timet0 t1 t2 t3
Estrategia Pipelining
![Page 17: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/17.jpg)
Nota: otras técnicas existen para pipelining como utilizar múltiples ciclos con buffers, y utilizar nodos de retroalimentación
Secuencial Pipelining
Pipelining en LabVIEW
![Page 18: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/18.jpg)
Balanceo de Etapas• La ruta crítica es la etapa más larga• Pipelining con etapas desbalanceadas no
necesariamente da una mejora en desempeño
Etapa 1 (3s) Etapa 2 (1s)
Etapa 1 (3s)
Etapa 2 (1s)
Sin Pipelining (tiempo total= 4s)
Con Pipelining (tiempo total= 3s): aumento velocidad = 1.33X (no ideal para pipelining)
![Page 19: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/19.jpg)
¿Qué Son los Patrones de Diseño?
• Una platilla o arquitectura para código de LabVIEW
• Ampliamente aceptado y bien conocido• Fácilmente reconocible
![Page 20: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/20.jpg)
Herramientas Básicas• Ciclos• Registros Corrimiento• Estructura Casos• Constantes Enum• Estructura Eventos
![Page 21: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/21.jpg)
1. La Variable Global Funcional es un SubVI No-Reentrante2. Se puede hacer acciones sobre los datos3. La constante Enum selecciona la acción4. Guarda el resultado en un registro de corrimiento sin
inicializar5. El ciclo se ejecuta una sola vez
Variable Global Funcional
![Page 22: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/22.jpg)
Código de Transición
Máquina de Estados
Primer Estado
Primer Estado
Siguiente Estado
Ejecución de Estado
Los registros de corrimiento acarrean el estado
Se tiene un caso por cada estado El código de transición determina el siguiente caso según los resultados
![Page 23: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/23.jpg)
Opciones de Código de Transición
Step Execution
Step Execution
Step Execution
![Page 24: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/24.jpg)
Productor / Consumidor
![Page 25: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/25.jpg)
1. Eventos son capturados por el productor
2. Productor pone los datos en el buffer
3. La máquina de estados en el consumidor ejecuta las acciones sobre los datos
4. SubVIs paralelos se comunican usando referencias a los buffers
Máquina Estados Buffer &Productor/Consumidor con Eventos
![Page 26: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/26.jpg)
![Page 27: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/27.jpg)
BufferMaestro
![Page 28: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/28.jpg)
Ciclo ProductorBasado en Eventos
![Page 29: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/29.jpg)
Estado y Datos Entran al Buffer
![Page 30: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/30.jpg)
Máquina EstadosConsumidor
![Page 31: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/31.jpg)
Buffers Adicionales (Q1 y Q2)
![Page 32: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/32.jpg)
Estados Producen para los Buffers Adicionales
![Page 33: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/33.jpg)
SubVIs Consumen datos de Q1 y Q2
![Page 34: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/34.jpg)
Daemon Autoejecutable Estándar
• Punto clave– un Daemon debe mantener una referencia abierta a sí mismo para evitar que sea purgado
![Page 35: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/35.jpg)
Daemon Estándar Ejecutado
• Puntos Clave– el que ejecuta debe transferir responsabilidad por la referencia del daemon VI.
• El que ejecuta no debe cerrar la referencia al daemon VI
![Page 36: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/36.jpg)
Proxy Estándar
• Almacena referencia a un VI real• Carga el VI sólo en su primera llamada
![Page 37: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/37.jpg)
Launcher Estándar
![Page 38: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/38.jpg)
Programación Orientada a Objetos
• Un enfoque para el desarrollo de aplicaciones• Apropiado para aplicaciones de gran escala con un
equipo de desarrolladores• Promueve reutilizar el código• Reduce el mantenimiento de código• Simplifica extender aplicaciones
![Page 39: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/39.jpg)
Programación Orientada a Objetos
•Para desarrollo de aplicaciones a gran escala
Clase Padre
Clase Hija •
Encapsulación
Clases y Objetos
Herencia
![Page 40: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/40.jpg)
Clases y Objetos
• Los Objetos son actores en su aplicación– Referencias a partes individuales de datos
• La Clase define los datos y comportamiento de los Objetos– Los objetos en su aplicación son instancias de una
Clase
![Page 41: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/41.jpg)
Creando Clases en LabVIEW
• Crear una clase en el Proyecto• Especificar los datos con el .ctl
para la clase– Definir la clase en efecto define
un nuevo tipo de dato• Características adicionales
– Especificar el ícono de la clase– Especificar una plantilla de ícono
de VI– Especificar el color del cable
![Page 42: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/42.jpg)
Creando Métodos para las Clases
• Métodos– Acciones o peticiones– Desempeñadas por los objetos– Generalmente verbos
• Crear un VI• Especificar alcance
– Público– Privado– Protegido
![Page 43: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/43.jpg)
Herencia
• Define subclases• Crea una relación de
pertenecía– Ejemplo: Teléfono con Cámara
“es un” Teléfono Celular– Reutiliza funcionalidad común
• Especialización– Extender o sobrescribir
funcionalidad para necesidades específicas
![Page 44: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/44.jpg)
Encapsulación
• Tratar cada objeto como una caja negra– Interfaz bien definida de datos y
métodos– Debe utilizar esta interfaz en la
aplicación
• Todos los datos son privados• Métodos pueden ser públicos,
privados o protegidos
![Page 45: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/45.jpg)
Composición de la Clase
• Definir una clase crea un nuevo tipo de dato• Una clase puede estar hecha de otra clase
![Page 46: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/46.jpg)
Aplicaciones de LabVIEW Usando Clases
• Llaman métodos y objetos• Reduce la rescritura de código mediante la
herencia y envío dinámico
![Page 47: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/47.jpg)
Requerimeintos Arquitectura Desarrollo Depurado y Pruebas Despliegue
Herramientas de Ingeniería de Software
Proceso de Ingeniería de Software
Requirements Gateway
Multicore
Object Orientation
Design Patterns Dataflow
MathScript
Statechart
Simulation
Express
VI Analyzer
Real Time Execution Trace
Desktop Execution Trace
Unit Test Framework
Application Builder
Real Time
FPGA
Embedded
![Page 48: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/48.jpg)
Herramientas para Depurado/Pruebas
Alto RiesgoBajo Riesgo
Depurado y Pruebas
Análisis DinámicoReal Time Execution Trace
Análisis Estático
Validación FuncionalUnit Test Framework
Avan
zado
Sim
pleCo
mplej
idad A
plica
ción
Aplicación Crítica
Desktop Execution Trace
VI Analyzer Toolkit
![Page 49: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/49.jpg)
Preparando una Revisión de Código con VI Analyzer
• Automatiza el análisis de código con más de 60 pruebas configurables– Desempeño– Estilo
• Inspecciona fallas interactivamente
• Genera reportes personalizados
![Page 50: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/50.jpg)
Desktop Execution Trace ToolkitTrazas Durante Ejecución:• Estructuras Eventos• Localidades Memoria• Buffers / Notificadores• Referencia Fugas• ID Tareas• Errores sin Manejar• SubVIs Estáticos/Dinámicos• Cadenas de Caracteres
Personalizadas
![Page 51: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/51.jpg)
LabVIEW Unit Test Framework
VI Bajo Prueba
Valores Entrada Salida
Resultados EsperadosUnit Test Framework
Generación Automática
Reporte
Vector prueba= Valores Entrada+ Salidas Esperadas
![Page 52: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/52.jpg)
Unidades a Probar
Implementación
Requerimientos Software
Resultados Pruebas
Integracion con Requerimientos
![Page 53: Tecnicas Programacion de Aplicaciones Eficientes en Labview](https://reader034.vdocumento.com/reader034/viewer/2022051406/5480e257b4795977098b46d4/html5/thumbnails/53.jpg)
Preguntas?