uModelFactory
Concepto y Objetivo
uModel Factory es un software didáctico-profesional realizado con el framework Qt de modelado y simulación de aplicaciones para sistemas embebidos, desarrollado por profesores y alumnos del Departamento de Electrónica de la Facultad Regional Buenos Aires de la Universidad Tecnológica Nacional, en el marco de un proyecto de Investigación y Desarrollo.
Permite la creación de modelos por medio de Diagramas de Estados a través de su interfaz gráfica, su simulación, como así también la generación automática de código C portable y toda la documentación asociada; manteniendo sincronizado, en tiempo de desarrollo, el modelo, código generado y documentación.
Recientemente se ha incorporado la funcionalidad de depuración del modelo implementado en un microcontrolador ARM Cortex M3 LPC1769, usado en la cátedra de Informática II.
La nueva versión de uModel Factory (v2018) permite la creación del modelo, la generación del código que lo representa, su simulación y posterior depuración. A continuación, se observa en detalle la representación de un sistema compuesto por una tecla y un dispositivo lumínico, el cual cambia de estado al presionar la tecla.
La estructura general de la codificación en C. int main ( ) { inicializar ( ); //inicialización de periféricos while (1) maquina_estado ( ); return 0; }
La función ‘maquina_estado’, se ha generado a partir de la representación del diagrama de estados, habiendo optado previamente (en tiempo de desarrollo aún) por su implementación a través de la estructura switch-case. Otras opciones disponibles son la estructura de if-else o la implementación por medio de punteros a función.
- Al iniciar el proceso de depuración se observa en la interfaz gráfica que se ha disparado el evento de RESET, el cual configura a la máquina en su estado inicial.
- Al producirse el evento ‘eTecla’ correspondiente a la presión de la tecla, se recibe en la PC a través de la comunicación serie mencionada una trama que brinda información sobre el evento ocurrido. La trama se analiza, se valida y se extraen los datos que transporta, de modo tal de actuar sobre la interfaz gráfica para que visualice las consecuencias del evento sucedido en el modelo planteado.
- Al producirse una nueva presió sobre la tecla, se observa una nueva transición desde el estado ENCENDIDO hacia el estado APAGADO (figura 9) repitiendo el procedimiento anteriormente descripto.
- A continuación, se visualiza un modelo mucho mas complejo:
Aspectos teóricos que subyacen a uModelFactory
Los Modelos
El uso de modelos se ha vuelto cada más frecuente en el desarrollo de máquinas y equipos que necesiten de algún tipo de automatización, ya que permiten describir claramente el software de los sistemas embebidos, ayudan a comprender el sistema y a diseñar con un nivel de abstracción superior al de los lenguajes de programación [1,2].
Un modelo es una representación simplificada de un sistema que contempla las propiedades importantes del mismo desde un determinado punto de vista. A su vez, permiten lograr un conocimiento más profundo del problema y favorecen el intercambio de ideas entre las personas involucradas en el diseño. Para el diseño del software de automoción de las máquinas y equipos mencionados anteriormente y en particular dentro de las representaciones gráficas posibles, encontramos las máquinas de estados finitos (FSM por Finite State Machine), las cuales constituyen una herramienta que ha sido utilizada tradicionalmente para modelar el comportamiento de sistemas electrónicos e informáticos.
Como una amplia extensión al formalismo convencional de estas máquinas surgieron los diagramas de estado (Statecharts) los cuales se convirtieron en parte del estándar UML (Unified Modeling Language) para describir el comportamiento de sistemas en modelos abstractos. Los diagramas de estado muestran el conjunto de estados por los cuales pasa un objeto durante su vida en una aplicación [3]. Para el pasaje de este objeto por los estados del modelo se analiza su respuesta a eventos y se vincula con sus respuestas y acciones. Estos diagramas normalmente contienen estados, transiciones, eventos, acciones y actividades, a los que en el marco de este trabajo definimos del siguiente modo:
- Estado: Identifica los comportamientos estáticos (situaciones en las que el objeto permanecerá hasta que la llegada de un evento específico fuerce su salida) del objeto en análisis.
- Evento: es la ocurrencia de un suceso que puede o no causar la transición de un estado a otro del sistema. Por ejemplo, una condición que toma el valor de verdadero o falso (expresión booleana); la recepción de una señal o mensaje externo; o el paso de cierto período de tiempo.
- Transición: es el camino (paso) de un estado a otro producida a partir de la ocurrencia de un evento.
- Acción: es una operación atómica que ocurre durante una transición, a la que no es posible interrumpir por otro evento y que se ejecuta hasta su finalización.
- Actividad: es una tarea que se desarrolla dentro de un estado hasta que ocurra un evento que la obligue a su finalización por el intrínseco cambio de estado.
En este trabajo se presenta el desarrollo e implementación de herramientas de software que permitan la depuración del modelo propuesto a partir de la generación de un lazo cerrado entre el modelo, la generación de código y su funcionamiento. uModel Factory (uMF) es un software didáctico-profesional de modelado de aplicaciones para sistemas embebidos, desarrollado en la UTN-Facultad Regional Buenos AIres en el marco de un proyecto de Investigación y Desarrollo del Departamento de Ingeniería Electrónica. Permite la creación de diagramas de estados a través de su interfaz gráfica, la simulación del modelo, como así también la generación automática de código C portable y toda la documentación asociada, manteniendo sincronizado, en tiempo de desarrollo, el modelo, código generado y documentación.
Características del software
La sincronización señalada es unidireccional y se produce a partir del diagrama de estados y transiciones que una vez concluido permite obtener el código C y la documentación pertinente. Si se requieren cambios, y mantener la sincronización, debe modificarse el diagrama para obtener el nuevo código C y su documentación asociada.
Si bien existen otras herramientas que posibilitan la generación de código en diferentes lenguajes a partir de la representación de su modelo [4,5], en su mayoría poseen una curva de aprendizaje pronunciada, licencia paga o no se encuentran orientadas a sistemas embebidos. Resulta interesante destacar que esta herramienta fue concebida bajo una perspectiva didáctica que se aprecia en el hecho que genera tres implementaciones diferentes del código que representa el modelo creado (if anidados, switch-case y arreglo de punteros a función, en lenguaje C), lo cual favorece la discusión y el análisis dentro del aula [6]. En la actualidad existen diferentes enfoques orientados a la depuración de sistemas embebidos, principalmente pueden clasificarse en intrusivos o no intrusivos. A su vez, podemos evaluar los mismos como de tiempo real o de tiempo diferido [7,8,9]. El enfoque adoptado en el desarrollo aquí presentado es intrusivo y de tiempo real.
Publicaciones
2018
2017
2016
2015
Descargas y manuales
2016
2015
Integrantes
NOMBRE | FUNCIÓN |
Giura Marcelo | Director |
Trujillo Marcelo | Codirector |
Gonzalez Nahuel | Codirector |
Prieto Mariana | Investigador de Apoyo |
Francucci Leandro | Investigador de Apoyo |
Sugezky Lisandro | Investigador de Apoyo |
Cruz Juan Manuel | Investigador Formado |
Kuo Yao-Ming | Investigador Alumno |
Miravalles Ezequiel | Investigador Alumno |