Sei sulla pagina 1di 56

Curso de Capacitación

Neptuno Pumps
Implementación de parámetros de diseño
Implementación de patrones
de diseño

Temas

A. Patrones de diseño
B. Patrones de diseño simple
C. Paralelismo
D. Patrones de diseño de bucles múltiples
E. Gestores de errores
F. Generación de códigos de error y mensajes
G. Temporización de un patrón de diseño
H. Patrón de diseño variable global funcional

Curso de Capacitación Neptuno Pumps


3
Patrones de diseño
Patrones de diseño
¿Por qué utilizar patrones de diseño?
• Han resultado útiles para el desarrollo de software.
• No es necesario iniciar un programa de cero.
• Facilitan que otras personas lean y modifiquen su código.

Los patrones de diseño normalmente evolucionan gracias a los esfuerzos


de muchos desarrolladores y se ajustan para conseguir simplicidad,
mantenibilidad y legibilidad.

Curso de Capacitación Neptuno Pumps


5
Patrones de diseño simple
Patrones de diseño simple

• VI simple

• VI general

• Máquina de estados

• Máquina de estados basada en eventos

• Máquina de estados simple

Curso de Capacitación Neptuno Pumps


7
Patrones de diseño simple

Patrón del VI simple


• Un solo VI que realiza una medición o un cálculo y muestra los
resultados o los graba en un disco.
• Normalmente, no requiere una acción de inicio o parada específica por
parte del usuario.

Curso de Capacitación Neptuno Pumps


8
Patrones de diseño simple

Patrón del VI simple


• Idealmente utilizado para genersar SubVIs.
• El orden general de las operaciones queda determinado por el flujo de
datos.

Curso de Capacitación Neptuno Pumps


9
Patrones de diseño simple

Patrón del VI general


Este patrón tiene tres fases:
• Arranque
• Aplicación principal
• Cierre

Curso de Capacitación Neptuno Pumps


10
Patrones de diseño simple

Patrón del VI general


Este patrón tiene tres fases:
• Arranque: inicializa el hardware, lee la información de
configuracion de los archivos o solicita al usuario ubicaiones
de archivos de datos.
• Aplicación principal: consta de al menos un bucle que se
repite hasta que el usuario decida salir del programa o éste
termine por otras razones, como finalización de E/S.
• Cierre: cierra archivos, escribe información de
configuración en el disco o restablece E/S al estado
prederterminado

Curso de Capacitación Neptuno Pumps


11
Patrones de diseño simple

Patrón del VI general

Curso de Capacitación Neptuno Pumps


12
Patrones de diseño simple

Patrón del VI general


• Nota: se debe considerar una función WAIT ya que
sin esto, el VI podría utilizar todos los recursos del
sistema.
• La función WAIT obliga al bucle a ejercutarse
asincrónicamente.

Curso de Capacitación Neptuno Pumps


13
Patrones de diseño simple

Patrón de la máquina de estados


• Normalmente, tiene un estado de arranque y cierre, pero
también contiene otros estados.
• La fase de aplicación consta de una estructura Case
embebida en el bucle.

Curso de Capacitación Neptuno Pumps


14
Patrones de diseño simple

Marco de la máquina de estados


• Consta de un bucle While, una estructura Case y un registro
de desplazamiento.
• El registro de desplazamiento almacena el estado que debe
ejecutarse en la siguiente iteración del bucle.

Curso de Capacitación Neptuno Pumps


15
Patrones de diseño simple

Marco de la máquina de estados


• La estructura case debe considerar 2 etapas:
• El código de funcionamiento del estado
• El código de transición.

Curso de Capacitación Neptuno Pumps


16
Patrones de diseño simple

Ejemplo de máquina de 5 estados.


• Inicialización

Curso de Capacitación Neptuno Pumps


17
Patrones de diseño simple

Ejemplo de máquina de 5 estados.


• Inactivos

Curso de Capacitación Neptuno Pumps


18
Patrones de diseño simple

Ventajas
• Puede hacer el diagrama de bloques más pequeño, más
fácil de leer y de depurar.
• Cada caso determina el siguiente estado, no debe realizar
todo secuencialmente.

Desventajas
• No permite llamar a dos estados a la vez, debido a que el
case permite saltar eventos y solo se ejecutaría uno a la vez.
• Se puede mejorar con las máquinas basadas en eventos.

Curso de Capacitación Neptuno Pumps


19
Patrones de diseño simple

Máquina de estados basada en eventos

• Combina la programación de eventos con el diseño de la


máquina de estados
• Incluye el caso “Wait on Event” para procesar los eventos
de interfaz de usuario

Curso de Capacitación Neptuno Pumps


20
Patrones de diseño simple

Plantilla de la máquina de estados simple


Use el cuadro de diálogo Create Project para agilizar la
implementación de una aplicación de máquina de estados
basada en eventos.

Curso de Capacitación Neptuno Pumps


21
Paralelismo
Paralelismo

• El reto de programar tareas paralelas es pasar datos entre


varios bucles sin crear una dependencia de datos.
• Por ejemplo, si pasa los datos usando un cable, los bucles
ya no serán paralelos.

Curso de Capacitación Neptuno Pumps


23
Paralelismo

Metodo 1 (incorrecto)

Si apaga el interruptor, no detendrá el VI, porque el


interruptor no se lee durante la iteración de cada bucle.
Curso de Capacitación Neptuno Pumps
24
Paralelismo

Metodo 2 (incorrecto)

El loop 1 termina correctamente, el loop 2 no se ejecuta hasta


que recibe todas sus entradas de datos. El loop 1 no pasa los
datos fuera del bucle hasta que se detenga el bucle.

Curso de Capacitación Neptuno Pumps


25
Escritura en controles y
lectura de indicadores

Escritura en controles y lectura de indicadores


¿Cómo resolvería las siguientes dificultades de flujo de datos?
- ¿Inicializar controles del panel frontal con valores de un archivo de
configuración?
- ¿Copiar una dirección “Ship to” en una dirección “Bill To”?
- Inicializar indicadores que se escribirán luego en su código?
- ¿Escribir en un indicador en dos casos de una estructura Case sin
escribir en el indicador en todos los casos?
En ocasiones, debe escribir en un control o leer desde un
indicador.

Curso de Capacitación Neptuno Pumps


26
Paralelismo

Metodo 3 (solución)

• Si se logra leer el valor de control de bucle desde un


archivo, ya no dependería de un flujo de datos entre los
bucles, ya que cada bucle puede acceder al archivo de
forma independiente.
• Al leer y escribir en archivos puede poner lento el sistema,
por lo que es ideal escribirlos y leerlos en la memoria y
llamarlos desde ahí.

Curso de Capacitación Neptuno Pumps


27
Ejemplos

• Ejemplos de los métodos anteriores

Curso de Capacitación Neptuno Pumps


28
Patrones de diseño de
bucles múltiples
Patrones de bucles múltiples

• Bucle Paralelo

• Maestro/Esclavo

• Productor/Consumidor

Curso de Capacitación Neptuno Pumps


30
Patrones de bucles múltiples

Patrón de Diseño del Bucle Paralelo


• Apropiada para VIs de menús simples, usuario debe
seleccionar botón que realiza distintas acciones.
• Permite controlar varias tareas simultáneas e
independientes.

Curso de Capacitación Neptuno Pumps


31
Patrones de bucles múltiples

Patrón de Diseño del Bucle Paralelo


• En este patrón de diseño debe coordinarse y
comunicarse entre varios bucles.
• El botón STOP del segundo bucle es una variable
local.
• No puede usar cables para pasar datos entre bucles
porque impedirá que los bucles se ejecuten en
paralelo.
• Se debe utilizar una técnica de comunicación para
pasar información entre procesos

Curso de Capacitación Neptuno Pumps


32
Patrones de bucles múltiples

Patrones de diseño de Maestro/Esclavo


• Use el patrón de diseño de maestro/esclavo cuando un VI
tenga que responder a controles de interfaz de usuarion
mientras recopila datos simultáneamente.

Curso de Capacitación Neptuno Pumps


33
Patrones de bucles múltiples

Patrones de diseño de Maestro/Esclavo


• Consta de varios bucles paralelos que pueden ejecutarse a
distintas velocidades.
• Un bucle actua como Maestro y los demas como Esclavos.
• El Maestro controla los Esclavos mediante técnicas de
comunicación.
• Dos bucles While no pueden escribir en los mismos datos
compartidos.
• Las tareas de los esclavos deben tardar menos tiempo en
ejecutarse que el bucle maestro, sino, se produce pérdida
de información.

Curso de Capacitación Neptuno Pumps


34
Patrones de bucles múltiples

Ejemplo Maestro / Esclavo

Curso de Capacitación Neptuno Pumps


35
Patrones de bucles múltiples

Patrones de diseño de Productor/Consumidor


• Mejora la compartición de datos entre varios bucles que se
ejecutan a distintas velocidades.

• Separa las tareas que producen y consumen datos a


distintas velocidades.

• Use este patrón cuando tenga que adquirir varios conjuntos


de datos que deben procesarse en orden.

Curso de Capacitación Neptuno Pumps


36
Patrones de bucles múltiples

Patrones de diseño de Productor/Consumidor


• Los bucles estan separados en dos grupos:
• producen datos
• consumen datos

Curso de Capacitación Neptuno Pumps


37
Patrones de bucles múltiples

Patrones de diseño de Productor/Consumidor

Curso de Capacitación Neptuno Pumps


38
Patrones de bucles múltiples

Patrones de diseño de Productor/Consumidor

• Las colas de datos comunican datos entre los bucles.


• Las colas de datos tambien almacenan temporalmente
datos en un buffer entre los bucles productor y consumidor.

• Un bufer es un dispositivo de memoria que almacena datos


temporales entre dos dispositivos o, en este caso, múltiples
bucles.

Curso de Capacitación Neptuno Pumps


39
Patrones de bucles múltiples

Patrones de diseño de Productor/Consumidor

• Las colas de datos comunican datos entre los bucles.


• Las colas de datos tambien almacenan temporalmente
datos en un buffer entre los bucles productor y consumidor.

• Un bufer es un dispositivo de memoria que almacena datos


temporales entre dos dispositivos o, en este caso, múltiples
bucles.

Curso de Capacitación Neptuno Pumps


40
Patrones de bucles múltiples

Ejemplo Productor/Consumidor

Curso de Capacitación Neptuno Pumps


41
Gestores de errores
Gestores de errores

Gestores de errores simples

Ejemplos
• VI simple Error Handler
• Gestor de errores de la máquina de estados
• Gestor de errores de E/S

Curso de Capacitación Neptuno Pumps


43
Gestores de errores

Gestores de errores del productor/consumidor


• Tanto los bucles productor como consumidor se detienen
elegantemente cuando se produce un error
- Los bucles productores pasan la información de los
errores a los bucles consumidores
- Los bucles consumidores envían la información de las
detenciones a los bucles productores
• Se cambia al caso Shutdown en el bucle consumidor para
ejecutar el código de cierre antes de detener el VI
• Informe l a información de los errores al usuario

Curso de Capacitación Neptuno Pumps


44
Gestores de errores

VI Error Handler
• La idea es que logre enviar y/o almacenar el error
que se produce antes que se cierre el programa.

Curso de Capacitación Neptuno Pumps


45
Gestores de errores

Ejemplo de Gestor de Errores

Curso de Capacitación Neptuno Pumps


46
Generación de códigos de
error y mensajes
Generación de códigos de
error y mensajes
Opciones de informe de errores
• Use los mecanismos de informe de
errores existentes para informar de
las condiciones de error detectadas
con su código. Los errores incluyen
los siguientes:
- Entradas no válidas a los subVI
- Errores de recursos y archivos
- Mensajes generados por
LabView
• Opciones de informe de errores:
- Errores predefinidos
- Errores definidos por el usuario
- Anulación de mensajes
generados por LabView
Curso de Capacitación Neptuno Pumps
48
Generación de códigos de
error y mensajes

Ejemplo: Gestión de errores

Curso de Capacitación Neptuno Pumps


49
Temporización de un
patrón de diseño
Temporización de un patrón de
diseño

Temporización de ejecución
• Ofrece un patrón de diseño con una función que concede
tiempo específicamente al procesador para completa otras
tareas

Temporización de control del software

• Temporiza una operación del mundo real para realizarla en


un periodo concreto. Espera eventos.
• Controla la frecuencia con la que se ejecuta un bucle

Curso de Capacitación Neptuno Pumps


51
Temporización de un patrón
de diseño

Curso de Capacitación Neptuno Pumps


52
Temporización de un patrón de
diseño

Temporización de ejecución
• Use la temporización explícita para patrones de diseño
como maestro/esclavo, productor/consumidor y máquina
de estados. Estos patrones de diseño realizan algún tipo de
sondeo mientras se ejecutan.
• Si usa las funciones Wait (ms) o Wait Unitl Next ms Multiple
la ejecución de la función que está temporizando no
ocurrirá hasta que termine la función de espera.

Curso de Capacitación Neptuno Pumps


53
Temporización de un patrón de
diseño

Curso de Capacitación Neptuno Pumps


54
Temporización de un patrón de
diseño

Temporización de control del software


• La temporización de control de software debe permitir al
patrón de diseño ejecutarse continuamente sin detenerse
por un tiempo especificado.
• Implementar este tipo de temporización conlleva que la
aplicación se esté ejecutando mientras monitoriza un reloj
en tiempo real. (Elapsed Time)

Curso de Capacitación Neptuno Pumps


55
Temporización de un patrón de
diseño

Temporización de control del software


• Ejemplo Elapsed Time

Curso de Capacitación Neptuno Pumps


56
Temporización de un patrón de
diseño

Temporización de control del software


• Ejemplo Get Date/Time In Seconds

Curso de Capacitación Neptuno Pumps


57

Potrebbero piacerti anche