You are on page 1of 49

ADQUISICIN DE DATOS

Estacin de monitorizacin del clima Haga clic para modificar el estilo de subttulo del patrn

4/8/12

En este captulo se comienza con un conjunto de requisitos del sistema y se usa la notacin y proceso del desarrollo orientado a objetos para conducirnos a una implantacin.

4/8/12

ANLISIS Definicin de los lmites del problema Requisitos de la estacin de monitorizacin del clima
Este sistema proporcionar monitorizacin autnoma de varias condiciones climatolgicas. Especficamente debe medir:

Velocidad y direccin del viento Temperatura Presin atmosfrica Humedad

El sistema proporcionar tambin las siguientes medidas derivadas:

Factor de enfriamiento por el viento (wind chill) 4/8/12

El sistema tendr una forma de determinar la fecha y horas actuales, de forma que pueda informar de los valores mximos y mnimos de cualquiera de las cuatro medias principales durante las ltimas 24 horas.

El sistema tendr una pantalla que indicar continuamente todas las medidas principales y derivadas, as como la fecha y la hora. Mediante el uso del teclado, el usuario puede dirigir al sistema para que muestre el mximo o el mnimo en las ltimas 24 horas de cualquier medida principal, junto con la hora en que se dio tal valor.

El sistema permitir al usuario calibrar sus sensores respecto a valores conocidos, y fijar la hora, y fecha actuales. 4/8/12

Para confinar el problema y permitir as la exposicin de las cuestiones del anlisis y diseo del software, harn las siguientes suposiciones estratgicas:

La fecha y hora son suministrados por un reloj en tarjeta, accesible mediante entrada/salida por correspondencia de memoria. La direccin y al velocidad del viento se miden con una armazn que incluye una veleta (capaz de apreciar viento de 16 direcciones distintas) y un anemmetro de cazoletas (que avanza un contador con cada revolucin). La entrada del usuario se proporciona mediante un moderno teclado telefnico, gestionado por un circuito en tarjeta que suministra una seal sonora para cada pulsacin de tecla. La ltima entrada del usuario est 4/8/12 accesible mediante E/S por correspondencia de memoria.

Teclado

reloj

Pantalla LCD

Sensor de direccin de viento

Computa dor unitarjeta

Sensor velocidad viento

Sensor temperat ura

Sensor humedad

Sensor humedad

Hardware del sistema de 4/8/12 monitorizacin del clima

Una de las caractersticas de un sistema orientado a objetos es que tiende a hablar con el vocabulario de espacio de su problema y representa s una mquina virtual que refleja la abstraccin que se hace de las entidades clave del problema. Se pueden aislar fcilmente las abstracciones software, envolviendo 4/8/12

Se puede resumir la abstraccin de una clase fecha/hora como sigue: Nombre: FechaHora Responsabilidades: llevar cuenta de la hora y fecha actuales Operaciones: horaActual fechaActual fijarFormato fijarHora fijarMinuto fijarSegundo fijarDia fijarMes fijarAnio 4/8/12

Ciclo de vida de FechaHora

4/8/12

La clase SensorTemperatura sirve como una analoga de los sensores de temperatura hardware del sistema. Nombre: SensorTemperatura Responsabilidades: llevar cuenta de temperatura actual
4/8/12

Se puede expresar la abstraccin del sensor de presin atmosfrica en la siguiente especificacin: Nombre: SensorPresion Responsabilidades: llevar cuenta de presin atmosfrica actual 4/8/12

Debido a que se puede expresar las tendencias para las clases de sensores de presin y temperatura, el anlisis sugiere la invencin de una superclase comn, que se llamar SensorTendencia. Nombre: SensorTendencia Responsabilidades:
4/8/12

Informar de la tendencia de la presin

La abstraccin del sensor de humedad puede expresarse en la especificacin siguiente: Nombre: SensorHumedad Responsabilidades: llevar cuenta de la humedad actual, expresada como un porcentaje de saturacin de 0% a 100% 4/8/12

Una revisin de los requisitos del sistema sugiere algn comportamiento comn a las clases SensorTemperatura, SensorPresion, SensorHumedad. Los requisitos obligan a proporcionar un medio para informar de los valores mximos y mnimos de cada uno de estos sensores durante un periodo de 24 horas. Se podra capturar este comportamiento en la especificacin siguiente, comn a las tres clases:
4/8/12

La abstraccin del sensor de velocidad del viento puede expresarse en la especificacin siguiente: Nombre: SensorVelocidadViento Responsabilidades: llevar cuenta de velocidad actual del viento.
4/8/12 Operaciones:

Un anlisis rpido de dominio de las ltimas cuatro clases concretas (SensorTemperatura, SensorPresion, SensorHumedad y SensorVelocidadViento) revela otro comportamiento comn ms: todas estas clases deben saber como calibrarse a s mismas proporcionando una interpolacin lineal entre dos puntos de datos conocidos. En vez de repetir este comportamiento en las cuatro clases, se decide que sea
4/8/12

Se puede expresar la abstraccin del sensor final concreto para la direccin del viento en la especificacin siguiente: Nombre: SensorDireccionViento Responsabilidades: llevar cuenta de la direccion actual del viento, en trminos de puntos de 4/8/12

Aunque no forma parte de la jerarqua de sensores, la abstraccin del teclado para la entrada de usuario tiene una especificacin simple: Nombre: Teclado Responsabilidades:
4/8/12

llevar cuenta de la ltima tecla

Senso r
SensorCalibra do valorActual() fijarValorAlto( ) fijarValorBajo () SensorDireccio n Viento direccionActua l() SensorHistor ico ValorAlto() ValorBajo()

SensorTende ncia tendencia()

SensorHumed ad humedadActu al() humedad SensorPresi on presionActu al() presion

SensorVelocid ad Viento velocidadActu al() velocidad

SensorTemperat ura temperaturaAct ual() temperatura

Jerarqua de clases de Sensor 4/8/12

La abstraccin de una clase DispositivoLCD sirve para aislar el software del hardware particular que pueda utilizarse: Nombre: DispositivoLCD Responsabilidades: manejar el dispositivo LCD y ofrecer servicios para visualizar ciertos 4/8/12

Nombre: Temporizador Responsabilidades: interceptar todos los elementos temporizados y despachar la funcin callback correspondiente Operaciones: fijarCallback()

4/8/12

Haga clic para modificar el estilo de subttulo del patrn

ESCENAR IOS

4/8/12

Monitorizar medidas bsicas del clima incluyendo la velocidad y direccin del viento, temperatura, presin atmosfrica y humedad. Monitorizar medidas derivadas incluyendo factor de enfriamiento por el viento, temperatura de roco, tendencia de la temperatura y tendencia de la presin atmosfrica. Visualizar los valores mximo y mnimo de una medida determinada. Fijar fecha y hora. Calibrar un sensor seleccionado. Encender el sistema.

Se aaden a esta lista dos casos de uso secundarios: Fallo de energa 4/8/12 Fallo de sensor

Una de las restricciones del sistema es que no se pueden tomar medidas a mayor velocidad de 60 veces por segundo ya que las medidas meteorolgicas cambian mucho mas lentamente. Frecuencias de muestreo:
o

Cada 0,1 segundos Direccin del viento. Cada 0,5 segundos Velocidad del viento. Cada 5 minutos atmosfrica y humedad. Temperatura, presin

CAL DE LOS OBJETOS DEL DIAGRAMA DE INTERACCIN ES ENTONCES RESPONSABLE DE REPRESENTAR LOS VALORES MUESTRADOS EN UNA NICA IINSTANCIA DE LA CLASE DISPOSITIVOLCD? Hacer un objeto separado que se responsabilice de este comportamiento. Por que permite encapsular en una clase todas las decisiones de diseo sobre la distribucin de la 4/8/12 pantalla.

Elementos estticos: partes de la pantalla que no se modifican como la rosa de los vientos. 4/8/12

Nombre: Gestor de pantalla Responsabilidades: Gestionar la distribucin de los elementos en el dispositivo LCD. Operaciones: dibujarLosementosEstaticos dibujarHora dibujarFecha dibujarTemperatura dibujarHumedad dibujarPresion dibujarEnfriamientoViento dibujarPuntoRocio dibujarVelocidadViento dibujarDireccionViento dibujarMaximoMinimo

Sensor Velocidad Viento


Sensor Direccin Viento
Fuente de datos

Fuente de datos

Sensor Temperatura

Muestreador
Adquisici n datos

Fuente de datos Fuente de datos

Gestor pantalla
Gestor pantalla

Fuente de datos

Sensor humedad

Sensor presin

Dispositivo LCD

Clases de muestreo y visualizacin


4/8/12

Enfriamiento Viento

Sensor Temperatura

Punto Rocio

Sensor Velocidad Viento


Gestor pantalla

Muestreador
Adquisici n datos

Gestor pantalla

Sensor humedad

Dispositivo LCD

Mediciones derivadas
4/8/12

Visualizacin de los valores mximos y mnimos de una medida seleccionada. El usuario pulsa la tecla SELECCIONAR 2.El sistema muestra el mensaje SELECCIONADO 3.El usuario pulsa cualquiera de las teclas de VELOCIDAD VIENTO, TEMPERATURA, PRESIN O HUMEAD; cualquier otra pulsacin (excepto EJECUTAR) se ignora. 4.El sistema hace parpadear la etiqueta correspondiente. 5.El usuario pulsa la tecla ARRIBA o ABAJO para seleccionar la versin del valor mximo y mnimo en 24 horas, respectivamente; cualquier otra pulsacin de tecla(excepto EJECUTAR) se ignora. 6.El sistema muestra el valor seleccionado, junto con la hora de ocurrencia. 7.El control vuelve al paso 3 5.
1.

Nota: el usuario puede pulsar la tecla EJECUTAR para realizar o abandonar la operacin, momento en el que el mensaje parpadeante, el valor seleccionado y el mensaje SELECCIONADO se eliminan. 4/8/12 Parpadear etiqueta: hace que la etiqueta elegida parpadee o deje de

Mod o Ejecut ar
Seleccio nar

Tem p Tem p

Vient o

Modo Entrada mostrar modo

Ejecut ar Ejecut ar

vient o

Arriba/Abajo Cambiar modo

Diagrama de transicion de estados del GestorEntrada 4/8/12

Haga clic para modificar el estilo de subttulo del patrn

MARCO DE REFERENCIA ARQUITECTNICO

DISE O

4/8/12

El siguiente paso en el proceso de desarrollo es articular el marco de referencia arquitectnica, de modo que se pueda tener una base estable sobre la que desplegar los puntos funcionales del sistema. En el dominio de adquisicin de datos y control de procesos, hay muchos patrones arquitectnicos posibles que se pueden seguir.
4/8/12

Sincronizacin de actores autnomos

Este modelo toma el tiempo y lo divide en varios marcos (normalmente de longitud fija ) que divide posteriormente en submarcos cada uno contiene algn comportamiento funcional. La actividad puede ser distinta de un marco a otro. Por ejemplo se podra muestrear la direccin del viento solo cada 30 marcos por ejemplo si cada marco se le asigna 1/60 s, 30 marcos representan 0,5 segundos.

Procesar

Mostrar

Muestrear

Tiemp o

Procesar MAR CO

Mostrar

Muestrear

4/8/12

Presin

humedad

Velocid ad Enfriamiento Viento

PuntoRocio Sensor Temperatura

Arquitectura de monitorizacin del clima Otros dos agentes del sistema muestreador y Gestor entrada deben asociarse con la coleccin completa de los sensores, el empaquetarlos todos juntos en una clase contenedor permite tratar a los sensores del sistema 4/8/12 como un todo lgico.

Mecanismos de marcos
El comportamiento central de esta arquitectura se efecta por una colaboracin de las clases Muestreador y Temporizador.
Clase temporizador //Tics de reloj, medidos en 1/60 de segundo Class Temporizador{ Public: static fijarCallback (void (*) (Tic)); static comenzarTemporizacion(); static Tic numeroDeTics(); Private: .); 4/8/12

Se comienza con la Clase muestreador clase Temporizador Class muestreador{ que invoca una funcin callback. Public:
muestreador (); ~muestreador(); void fijarFrecMuestreo(NombreSensor, Tic); void muestrear(tic); Tic frecMuestreo() const; Protected: .);

Se conectan las clases Temporizador y Muestreador. En el fragmento de funcin principal solamente asigna la funcin callback al temporizador y comienza el proceso de muestreo. La arquitectura del sistema proporciona un interfaz para la clase sensores. Esta es una clase coleccion, y por esta razn hace que los sensores sean una clase fundamental coleccin.

Se hace a coleccion una clase protected por 4/8/12

Se especifica la clase muestreador con el fin de efectuar su asociacin con las clases sensores y a gestorPantalla.

La crecin del objeto muestreador conecta este agente con la colecci especfica de sensores y el gestor d epantalla particular que se usan en el sistema. La accin de esta funcin miembro es iterar a travs de cada tipo de sensor y a su vez, cada sensor concreto de este tipo en la coleccin. Para cada sensor que encuentra, muestrear comprueba si es el momento de muestrear su valor, y si es as referencia al sensor de la coleccin, toma su valor actual y entrega ese valor al gestor de pantalla asociado con la instancia muestreador. 4/8/12

EVOLUCI N
4/8/12

Planificacin de versiones
Se ha validado la arquitectura pasando por varios escenarios, se puede proceder con el desarrollo incremental de los puntos funcionales del sistema. Se comienza este proceso poniendo una secuencia de versiones, cada una de las cuales se construye sobre el anterior:
Desarrollar una versin con funcionalidad mnima, que monitorice slo un sensor. Completar la jerarqua de sensores. Completar las clases responsables de gestionar la pantalla. Completar las clases responsables de gestionar el interfaz de 4/8/12 usuario.

Mecanismos de los sensores

En esta versin evolutiva se espera trabajar sobre lo que previamente se haba completado sobre un sistema funcional mnimo, y dar termino a los detalles de esta jerarqua de clases. En una seccin anterior se advirti de la necesidad de la operacin valoractual, declarada en la clase base abstracta sensor.

4/8/12

Mediante el constructor de la clase, se dio a las instancias de esta clase un conocimiento sobre su nombre e identificacin. Esta es una forma de identificacin de tipos en tiempos de ejecucin, pero aqu es inevitable proporcionar esta informacin, por que los requisitos exigen que cada instancia de sensor tenga asignada una direccin E/S por correspondencia de memoria. Se pueden ocultar los secretos de esta correspondencia haciendo que esta direccin sea funcin del nombre e identificacin del sensor. Class sensor{ Public: Sensor(NombreSenesor, unsigned int id=0); virtual ~Sensor(); virtual float valorActual()=0; virtual float valorBruto()=0; NombreSensor nombre() const unsigned int id() const; Protected: }; 4/8/12

La declaracin de la subclase inmediata SensorCalibrado se construye sobre esta clase base. Class sensorCalibrado: public Sensor{ Public: SensorCalibrado(NombreSenesor, unsigned int id=0); virtual ~SensorCalibrado(); void fijarvalorAlto(float, float); void fijarvalorBajo(float, float); virtual float valorActual(); virtual float valorBruto()=0; Protected: }; Posteriormente se construye la subclase SensorHistorico que se construye sobre la clase SensorCalibrado. Class sensorHistoricco: public SensorCalibrado{ Public: SensorHistorico(NombreSensor, unsigned int id=0); virtual ~SensorHitorico(); float valorMaximo() const; float valorMinimo() const; Const char* horaDeValorMaximo() const; Const char* horaDeValorMinimo() const; Protected:}; 4/8/12

Se construye sensorHistorico que es heredada de sensorTendencia. Se declara tendencia como no virtual, por que no se desea que las subclases cambien su comportamiento. Finalmente se hace SensorTemperatura. la clase concreta

4/8/12

Mecanismos de visualizacin Funcionalidad de las clases GestorPantalla y


DispositivoLCD.
Clas GestorPantalla{ Public: GestorPantalla() ~GestorPantalla(); void borrar(); void refrescar(); void dibujar(sensor&); void dibujar elementosEstaticos(EscalaTemperatura, EscalaVelocidad); Void dibujarHora(const char*); Void dibujarFecha(const char*); Void dibujarTemperatura(float, unsigned int id=0); Void 4/8/12 dibujarHumedad(float, unsigned int id=0);

Mecanismo de interfaz de usuario Diseo tctico e implantacin de las clases teclado,


GestorEntrada y la clase dispositivoLCD. Se comienza con una declaracin del nombre de las teclas fsicas.
Enum Tecla{tEjecutar, tSeleccionar, tCalibrar, tModo, tArriba, tAbajo, tIzquierda, tDerecha, tTemperatura, tPresin, tHumedad, tViento, tHora, tFecha, tNoasignada}:

Y se captura la abstraccin de la clase Teclado en la que se ha aadido la operacin entradaPendiente para que los clientes puedan consultar si existe una entrada del usuario que aun no se ha procesado. Se captura la abstraccin de la clase Gestor Entrada que deriva de Teclado. Las instancias de la clase Muestreador, GestorEntrada y Teclado colaboran para responder a la entrada del usuario. 4/8/12

Incluye un nuevo objeto miembro repGestorEntrada: Class Muestrador{ Public: Muestrador(Sensor&, GestorPantalla&, GestorEntrada&); Protected: Sensor& respSensores; GestorPantalla& respGestorPantalla; GestorEntrada& repGestorEntrada; };

Esta clase muestrador siempre debe de tener una coleccin 4/8/12 una coleccin de sensores, un gestor de pantalla y un gestor

Se aade una llamada a procesarPulsacionTecla al comienzo de cada marco de tiempo. Que es el punto de entrada a la maquina de estados finitos que controla las instancias de esta clase:
1.

Puede representarse a los estados como objetos(polimorfismo). Se pueden usar literales de enumeracin para denotar cada estado distinto.

2.

Para la maquina de estados finitos de tamao modesto para la que se incorpora la clase GestorEntrada, es sufiente utilizar el segundo enfoque. Se escriben los nombres de los estados:

Enum EstadoEntrada{Funcionando, Seleccionando, 4/8/12 Calibrando, Modo};

Void GestorEntrada::procesadorPulsacionTecla(){ If(repTecla.entradaPendiente()){ Tecla tecla=repTeclado.ultimaPulsacionTecla(); swich(repEstado){ case Funcionando: if (tecla==tSeleccionar) entrarSeleccionado(); else if(tecla==tCalibrar) entrarCalibrando(); else if(tecla==tModo) entrarModo(); case Seleccionado: . break; case Calibrado: . break; case Modo: . break; }}} 4/8/12

MANTENIMIE NTO

4/8/12

La implantacin completa de este sistema bsico de monitorizacin del clima abarca alrededor de 20 clases y monitoriza muchas condiciones climatolgicas interesantes pero se puede descubrir pronto que los usuarios quieren medir las precipitaciones. cul es el impacto de aadir un pluvimetro?

No hay que alterar radicalmente la arquitectura; simplemente hay que aumentarla. Utilizando como linea base la versin arquitetnica del sistema.

Crear una nueva clase SensorPluviosidad e insertarlo adecuadamente en la gerarquia de clases de sensor ya que es un tipo de sensor histrico. Actualizar la enumeracion NombreSensor. Actualizar el GestorPantalla para que sepa como mostrar valores de este sensor. 4/8/12 Actualizar GestorEntrada para que sepa como evaluar la tecla de

You might also like