lunes, 27 de febrero de 2012

En el siguiente vínculo se comparten los archivos del laboratorio No.1 y el instalador BetterState Lite:






LABORATORIO No.1 DE SIMULACION


Presentado Por: Jorge Andrés Prada.

Presentado A: Profesor Cesar Aceros


Diseño y Programación de un Cronómetro Digital de un Reloj de Pulso en StateChart Usando BetterState Lite 6.0.1



RESUMEN LABORATORIO No.1:

En el laboratorio No.1  se realizó el diseño del control de un cronómetro digital de un reloj de pulso convencional implementado en statechart utilizando el software  betterstate Lite 6.0.1, pasando por cada una de las etapas de construcción, describiendo cada uno de los estados, transiciones, acciones y eventos que conforman el control del cronómetro.

Se ilustrará gráficamente el diseño del cronómetro en bettersatate Lite 6.0.1 así como el código generado en lenguaje C por el software.


DESARROLLO DEL LABORATORIO

A continuación se explicará en detalle el diseño e implementación propuestos del control de un cronómetro digital de un reloj de pulso convencional en la herramienta BetterState Lite6.0.1.

El reloj de pulso utilizado es un reloj genérico, el cual se ilustra en la figura1.


Fig.1.

Para iniciar la descripción del trabajo realizado empezaremos por mencionar que los botones de mando del reloj de pulso están referenciados con las letras a, b, c y d como se ilustra en la figura 1.

Al iniciar el diseño se planteó la filosofía de funcionamiento del cronómetro como sigue:

(a) Debe comenzar estando en 00 minutos y 00 segundos. Sin embargo, para comprobar su funcionamiento, deberá poder partir en cualquier valor. De esta forma se podrá ver si cambia en forma correcta a todos los valores posibles sin tener que esperar mucho tiempo.

(b) Al presionar un botón (cuando comienza el evento a medir), debe partir contando en forma ascendente.

(c) Cada vez que totaliza 60 segundos, el contador de segundos debe pasar a 00 y el contador de minutos debe incrementarse en uno.

(d) Cuando se presiona el botón por segunda vez el cronometro se detiene indicando el tiempo transcurrido.

(e) Otro botón resetea el timer a cero.

Definida la filosofía de operación se empezó por definir el estado general que alberga todos los estados subordinados con el nombre “cronómetro”.

Se definieron dos estados subordinados llamados Habilitado y Deshabilitado, los cuales son activos vía la transición causada por el botón “d” del reloj, luego se le asignó la entrada por defecto al estado “Deshabilitado” como se ilustra en la figura2 tomada del software BetterState Lite 6.0,1


Fig.2.

El estado por defecto como se ilustra en la figura 3 posee una flecha arrivando, lo cual significa que cada vez que el operador del reloj acceda a la función cronómetro, el estado deshabilitado será visitado siempre por defecto.

El estado “Deshabilitado” es activo cuando el cronómetro esta deshabilitado, por lo tanto corresponde al estado de inactividad de la función cronómetro, este estado no contiene bloques subordinados.

El otro estado mostrado en la figura 2 es el “Habilitado”, este estado representa la función del cronómetro activa y contiene todos los estados subordinados que definen el control de este.

El cronómetro solo posee los campos Segundos y Minutos mostrados en el siguiente formato “00:00” y dado que se quiere manejar en tiempo real los incrementos de estos campos que están estrechamente relacionados, se crearon dos hilos de ejecución concurrentes dentro del estado “Habilitado”, uno de ellos se refiere al procesamiento y conteo de los segundos y el otro se refiere al procesamiento y conteo de los minutos este diagrama de estados es extraído de la programación realizada en BetterState Lite 6.0.1 y se ilustra en la figura 3.



Fig.3.


A continuación se procede a detallar el estado “Segundos”, este estado posee los estados, acciones, eventos y actividades necesarias para realizar el control del conteo de los segundos del cronómetro.

De acuerdo a la filosofía de funcionamiento planteada se consideró que este estado debía contener los siguientes estados subordinados:



ü  InicialSeg.
ü  ConteoSeg.
ü  Congelar.


A continuación se ilustrará en la siguiente figura 4 el detalle tomado de BetterState Lite 6.0.1 del estado “Segundos”.

Fig.4.


InicialSeg: Este estado es el estado por defecto del bloque ya que representa el estado inicial del conteo de segundos (“00”), por donde debe empezar el conteo del cronómetro, este estado es abandonado por primera vez cuando es pulsado el botón “a” del reloj, además posee la programación de una acción de salida del estado que realiza un seteo o ajuste a “1” de la variable “r”, esta acción tiene la finalidad de servir como bandera que indica que el conteo ya ha sido iniciado y posteriormente cuando el estado “InicialSeg” sea alcanzado se ejecute el cambio automático al estado “ConteoSeg”.

Cuando el botón de reset es presionado botón “b” este estado es alcanzado nuevamente y las banderas de los eventos y acciones son reseteadas así como el conteo de segundos a “00”.

ConteoSeg: El estado “ConteoSeg” realiza la función de la cuenta de los segundos que se van sumando por cada flanco de reloj del sistema ejecutado cada segundo, este estado es alcanzado por primera vez tras la pulsación del boton “a” partiendo de “InicialSeg”, y posee configurado una acción de entrada al estado que realiza la suma de los segundos. Cada vez que este estado es alcanzado el contador cs se incrementa en “1” mediante la fórmula “cs =cs +1”.

Tal como se observa en la figura 4 el estado posee una transición que sale y entra al mismo abandonando y alcanzando dicho estado cada flanco de reloj de un segundo y bajo la condición que el valor de “cs” sea menor a 59, dado que si este valor es alcanzado a la siguiente cuenta el conteo deberá ser reiniciado a “00” y continuar automáticamente, por tal motivo se programó una transición al estado inicial “InicialSeg” cada vez que el contador “cs” alcance el 59, el sistema activará el “InicialSeg” y retornará automáticamente al estado “ConteoSeg” ya que la bandera “r” ya ha sido seteada a 1.

Si estando en este estado el botón “a” es presionado el sistema hará una transición al estado “Congelar”, donde se detendrá el conteo y se mantendrá el valor contado hasta el momento.

Cuando el botón de reset es presionado botón “b” el estado inicial es alcanzado “InicialSeg” independiente de cualquier circunstancia y las variables “cs” y “r” son reseteadas.


Congelar: El estado congelar realiza la función de mantener el conteo logrado hasta el momento que este es alcanzado. Este estado es alcanzado si estando ya sea en “InicialSeg” o “ConteoSeg” y “r=1” el botón “a” es presionado.

Ahora procedamos a detallar el estado “Minutos”, este estado posee los estados, acciones, eventos y actividades necesarias para realizar el control del conteo de los minutos del cronómetro, los estados subordinados del estado “Minutos” son:

ü  InicialMin.
ü  ConteoMin

A continuación se ilustrará en la siguiente figura 5 el detalle tomado de BetterState Lite 6.0.1.


Fig.5.


InicialMin: Este estado es el estado por defecto del bloque, ya que representa el estado inicial del conteo de Minutos “00”, por donde debe empezar el conteo del cronómetro, este estado es abandonado por primera vez cuando la acción “cs=59” lograda en el estado concurrente “Segundos” es alcanzada.

Cuando el botón de reset es presionado “Botón b” este estado es alcanzado nuevamente y las banderas de los eventos y acciones son reseteadas, y el conteo de minutos es reseteado a “00”.

ConteoMin: El estado “ConteoMin” realiza la función de la cuenta de los minutos que se van sumando por cada evento “cs = 59” que es alcanzado en el bloque concurrente (Segundos), Cada vez que este estado es alcanzado el contador min se incrementa en 1 mediante la fórmula “min=min +1”, el estado es abandonado y alcanzado cada vez que la acción “cs=59” es alcanzada, ya que al alcanzar este valor deberá ser reiniciado a “00” y continuar con el conteo automáticamente, por tal motivo se programó una transición al estado inicial “InicialSeg” cada vez que el contador min alcance el valor 59. El sistema activará el estado “InicialMin” y retornará automáticamente al estado “ConteoMin” cuando la acción “cs=59” sea nuevamente alcanzada.

Cuando el boton de reset es presionado botón “b” el estado inicial es alcanzado (InicialMin) independiente de cualquier circunstancia y la variable “min” es reseteada.

Ya definido el diseño, e implementado el cronómetro del reloj de pulso en el software BetterState Lite 6.0.1. , este automáticamente permite generar el código en C mediante el software BetterState Lite 6.0.1, los archivos son:

ü  Cronómetro.c
ü  Cronómetro.h

CONCLUSIONES:

Los resultados obtenidos fueron satisfactorios ya que se logró el objetivo propuesto, se planteó el diseño de un cronómetro para un reloj de pulso y se implementó en statechart utilizando BetterState Lite 6.0.1 de una manera sencilla y eficaz.

miércoles, 22 de febrero de 2012

Seleccionando el Mejor Modelo.


SELECCIONANDO  EL MEJOR MODELO EN NIVEL DE DETALLE, COMPLEJIDAD Y DESEMPEÑO.

Análisis del Artículo: “Choosing the best model, level of detail, complexity, and model performance” .Authors  R.J.Brooks and A. M. Tobias.

Introducción.
El artículo plantea una discusión acerca de cómo seleccionar el modelo adecuado tomando como referencia un mayor detalle en la evaluación de los siguientes aspectos: Nivel de Detalle, Complejidad y Desempeño. El uso de los modelos se ha posicionado fuertemente en muchas ramas de la ciencia, de ahí que hoy se escuche con mayor frecuencia el uso de modelos para describir sistemas en la realidad y a nivel matemático.  El uso de modelos ha venido siendo apalancado gracias al desarrollo de las herramientas computacionales que con el paso del tiempo aumentan su capacidad y desempeño en forma vertiginosa, esto ha permitido lograr una viabilidad técnica y económica de un gran número de casos donde un modelo sea la mejor opción para lograr los objetivos propuestos.

Adicional a las capacidades computacionales de hoy en día, la necesidad de experimentar en busca de un mejor entendimiento de los procesos reales sin afectar la operación normal y la eficiencia de estos procesos han hecho de los modelos una herramienta fundamental de los profesionales de las ciencias. El hecho de poder realizar pruebas sobre un ambiente software que nos permitan entender los procesos con un mayor detalle sin afectar las condiciones normales de operación de los procesos reales, nos ha permitido incrementar el desempeño y optimizar los procesos con una pendiente más inclinada esto sumado con la aceleración en el aprendizaje de los operarios de los procesos que mediante herramientas como simuladores de entrenamiento que se basan en un modelo del proceso real han podido potencias sus destrezas y habilidades haciéndolos cada vez más competitivos.

La responsabilidad que reposa sobre los modelos hoy en dia, define la importancia de una adecuada selección de un modelo, tal y como lo mencionan los autores muchos de los textos que referencia una adecuada selección se enfocan en una evaluación cualitativa, sin embargo algunos autores han tratado de cuantificar los aspectos claves para la selección de un buen modelo.

Desempeño del Modelo.
La evaluación del desempeño de un modelo cubre el impacto del modelo sobre todas las instancias de un proyecto. El autor describe los siguientes 11 elementos de desempeño que permiten la evaluación de un buen modelo:

Resultados:
1.       Grado en el que el modelo logra describir el comportamiento de interés.

2.       Precisión de los resultados de un modelo.

3.       Facilidad con la que los resultados y el modelo pueden ser entendidos.

Uso Futuro del Modelo:

4.       Portabilidad del modelo y la facilidad con la que este puede ser combinado con otros modelos.
Verificación y Validación del Modelo:

5.       Probabilidad de errores en el modelo.

6.       Precisión con la que el modelo se ajusta a la data histórica conocida.

7.       La fortaleza de las bases teóricas que soportan el modelo, incluyendo la data con la que este se construye.
Recursos Requeridos:

8.       El tiempo empleado y costo para construir el modelo.

9.       El tiempo empleado y costo para correr el modelo.

10.   El tiempo empleado y costo para analizar los resultados del modelo.

11.   Los requerimientos de hardware.



Significado del Nivel de Detalle y la Complejidad.

El nivel de detalle de un modelo depende del número de elementos que lo conforman y la interacción entre estos, esto asumiendo que a mayor número de elementos aumenta la rigurosidad con la que es representado el sistema que se pretende modelar, adicionalmente es necesario complementar esta definición de nivel de detalle con la rigurosidad que se utilice para la implementación de cada uno de estos elementos que conforman el modelo.

El nivel de complejidad mencionan los autores está más ligado al grado de dificultad de los algoritmos computacionales que definen los elementos y el modelo en sí. Este grado de dificultad hace referencia a la capacidad de entendimiento del usuario al interpretar el modelo en todos los niveles de uso.

Midiendo la complejidad del Modelo.

La medición de la complejidad del modelo puede ser especificado como el número de componentes conectados, esto puedo ser representado utilizando grafos que permitan visualizar fácilmente el modelo, sin embargo un modelo puede ser representado por mas de un grafo.

De acuerdo a esto muy seguramente será necesario combinar o complementar con técnicas que permitan definir la eficiencia computacional de cada uno de los componentes , así como el grado de dificultad de las ecuaciones o algoritmos que definen los componentes y su interconexión.

Relación entre el desempeño, el nivel de detalle y la complejidad del modelo.
Analizar la relación entre los aspectos que permiten seleccionar un modelo en forma adecuada es clave para tener éxito. No es siempre mejor modelo el que tiene un mayor nivel de detalle, este debe ir acorde con los objetivos para los que se construirá el modelo, puede darse el caso que el objetivo del uso del modelo solo utilice ciertos resultados que con un modelo con un nivel más bajo de detalle se satisface de igual forma; en este caso sería mejor modelo el de menos nivel de detalle dado el menor esfuerzo que se requiere para construirlo.

Sin embargo en muchos casos el nivel de detalle o la rigurosidad del modelo pueden ser exigidos por el nivel de precisión que se requiere en los resultados o en la cantidad de variables que se deseen modelar.

A diferencia, es más tangible que un modelo menos complejo satisfaga de mejor forma los requerimientos técnicos y económicos de un proyecto, dado que el aumento de la complejidad en cierta forma obstruye con la apropiación del conocimiento del comportamiento que se desee modelar. Sin embargo tampoco es una regla, un modelo más complejo desde el punto de vista computacional pudiera ser más eficiente y por ende presentar los resultados con una mayor rapidez tal que permita ser oportuno en la toma de decisiones.