uModelFactory

Concepto y Objetivo

 

uModel Factory es un software didáctico profesional de modelado y simulación de aplicaciones para sistemas embebidos, desarrollado por profesores y alumnos del Departamento de Ingeniería 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.

 

Se trata de una aplicación de uso libre, open source, y multiplataforma desarrollada en C++ utilizando el Framework Qt y el IDE Qt Creator, que en la actualidad permite:

  • Crear Modelos basados en Diagramas de Estados a través de su interfaz gráfica.
  • Operar con Máquinas de Estado concurrentes.
  • Simular el modelo creado a nivel del Diagrama de Estados, permitiendo verificar el funcionamiento lógico del diseño desde una capa de abstracción superior.
  • Generar código en C portable, representativo del modelo y su documentación asociada usando Doxygen.
  • Depurar el modelo en tiempo real con métodos intrusivos y codificación portable, implementado a través de una comunicación serial RS232 (Caso de Estudio: microcontrolador ARM Cortex M3 LPC1769).

 

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ón sobre la tecla, se observa una nueva transición desde el estado ENCENDIDO hacia el estado APAGADO 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.

 

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. 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 más arriba, 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, 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. 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. El enfoque adoptado en el desarrollo por uModelFactory presentado es intrusivo y de tiempo real.

Descargas y manuales

 

2021

Ubuntu 18.04

Ubuntu 20.04

Windows 32 bits

Windows 64 bits

 

Integrantes

 

NOMBRE FUNCIÓN
Trujillo Marcelo Director
Giura Marcelo Codirector
Gonzalez Nahuel Codirector
Prieto Mariana Investigador de Apoyo
Vedovato Mariano Investigador de Apoyo
Spataro Hector Investigador de Apoyo
Sugezky Lisandro Investigador de Apoyo
Caballero Mariano Investigador de Apoyo
Cruz Juan Manuel Investigador Formado
Almaraz Nicolas Investigador Alumno
Nirino Felipe Investigador Alumno