El CDModeler es
una herramienta gráfica que sirve para crear Modelos Atómicos y Acoplados DEVS.
Permite crearlos, grabarlos, recuperarlos, graficar o animar las salidas y
exportarlos e importarlos desde y hacia múltiples formatos. Posee una interfaz
gráfica homogénea para las herramientas externas simu,
CD++ (local y remoto) y drawlog. Provee un editor de
texto embebido que permite modificar modelos DEVS en formato de texto (.ma) directamente.
En la
herramienta pueden distinguirse cuatro secciones.
·
Un
menú superior que da acceso a las funcionalidades básicas del sistema
·
Una
barra de herramientas que posee accesos rápidos a las funcionalidades más
usadas.
·
Una
sección lateral que permite ver información estructurada del modelo.
·
En
el centro, y ocupando la mayor parte de la superficie, se encuentra el área de
modelado gráfico.
El área de
modelado gráfico posee 2 solapas. En una permite la creación y edición de un
modelo DEVS Acoplado y en la otra de modelos DEVS atómicos “GGAD”. El Modelo
Acoplado inicial o raíz, puede incluir otros Modelos Acoplados, Modelos
Atómicos GGAD o Modelos Atómicos clásicos.
Una vez creado
un modelo, éste puede ser ejecutado utilizando la interfaz gráfica para el simu o cd++, local o remoto.
Cuando una
simulación finaliza, la herramienta puede ser utilizada para realizar gráficos
que muestren de una forma más comprensible el resultado de la misma.
El sistema permite definir gráficamente un Modelo Atómico. Para esto el usuario debe seleccionar la solapa “Atomic”. Luego seleccionar File | New para crear un modelo nuevo vacío.
Una vez que el modelo fue creado, se debe elegir un nombre. Para esto se debe realizar Right-Click | Model Title e ingresar un nombre
Una vez ingresado el nombre del modelo, se puede empezar a definir el mismo. Para esto se deben agregar Estados. Estos se crean haciendo doble-click sobre el área de modelado gráfico. Todo Estado, al ser creado, se le asigna automáticamente un nombre y un Time-To-Live. Para elegir el nombre y el Time-To-Live del Estado, hacer right-click | Properties.
Se desplegará una ventana llamada Atomic Unit Properties que permite elegir el nombre (State ID) y el Time-To-Live (state TL).
Los Estados, a priori, se muestran como un círculo azul. Más adelante veremos como asignarle una imagen al mismo.
Dentro de todo Modelo Atómico, un Estado debe ser marcado como Inicial. Para realizar esto, el usuario debe hacer right-click | Set initial sobre el Estado elegido.
Un Modelo Atómico también posee puertos. Estos se crean haciendo right-click | Add Port sobre el área de modelado gráfico. Al hacer esto, aparece una ventana donde el usuario debe cargar un nombre para el puerto, seleccionar si es de entrada o salida y elegir si transmite valores enteros o de punto flotante.
Luego de crear los Estados y Puertos necesarios, se pueden crear Links que representan las funciones de transición entre los mismos.
Los Links, en los Modelos Atómicos, están divididos en 2 grupos, los Internos y los Externos.
Antes de crear el Link, el usuario debe elegir entre Interno y Externo utilizando los botones Internal y External de la barra de herramientas de la aplicación.
Para crear un
Link, se debe apretar el botón izquierdo del mouse
sobre el Estado de origen, arrastrarlo sin soltar hasta el Estado de destino y
soltar el botón (drag and drop). Un Link del tipo seleccionado será creado de esta
manera.
A los Links internos y externos se le pueden agregar acciones. Sobre un Link interno o externo, hacer right-click | Add action. Esto despliega un dialogo donde ingresar la acción.
Las acciones pueden necesitar variables. Para definirlas, el usuario debe hacer right-click | Declare Variable sobre el área de diseño gráfico. Esto despliega un dialogo donde ingresar una variable y un valor. Para la misma
Las transiciones internas conectan 2 estados y pueden tener una función de salida asociada. La función de salida consiste en 0 o más pares de port/valor, es decir que ante la ocurrencia de la transición interna se puede especificar distintos valores que serán enviados por los ports de salida elegidos.
Para agregar una función de salida a un Link interno, hacer right-click | Add
port and value sobre el Link. Se desplegará un menú donde el usuario
podrá elegir un puerto de la lista de puertos definidos en el modelo y agregar
un valor para el mismo.
De manera similar, los Links externos permiten definir una expresión y un valor asociado. Para esto, el usuario debe hacer right-click | Properties, lo cuál desplegará un menú para su ingreso.
Todos los elementos anteriores pueden ser borrados del modelo.
Para borrar un Estado, primero hay que seleccionarlo haciendo doble-click sobre el mismo. El estado se pinta de rojo. Luego, apretar la tecla delete del teclado o Edit | Delete. El Estado será eliminado junto con todos los Links que lleguen o partan de él.
Los puertos se borran haciendo right-click | Delete Port sobre el área de modelado gráfico. Esto despliega una lista con los puertos del modelo para elegir uno y borrarlo.
Para borrar un Link, primero hay que seleccionarlo haciendo doble-click sobre el mismo. El Link se pinta de rojo. Luego, apretar la tecla delete del teclado o Edit | Delete. El Link será eliminado del Modelo junto con las acciones y funciones asociadas.
Si se desea borrar una acción de un Link, hacer right-click | Delete action sobre el mismo. Esto despliega un dialogo con la lista de acciones del Link para seleccionar una y borrarla.
El sistema permite definir gráficamente un Modelo Acoplado.
Primero, se debe elegir la solapa “Coupled” del área de modelado gráfico. Luego, seleccionar File | New para crear un modelo nuevo. Una vez que el modelo ha sido creado, se debe elegir un nombre para el mismo haciendo Right-Click | Model ClassName. Esto despliega un diálogo donde ingresar el nombre.
El modelo ya esta listo para comenzar a ingresar los elementos que lo componen. Estos pueden ser Modelos Atómicos básicos, Modelos Atómicos GGAD definidos con esta herramienta o Modelos Acoplados MA definidos con esta u otra herramienta.
Para incorporar Modelos Atómicos básicos, aquellos que el simulador que se posea ya conozca, se debe comenzar por importarlos. Para esto, el usuario debe seleccionar File | Import. Esto abre una ventana de OpenFile donde Elegir el archivo register.cpp de la instalación del simulador.
Los Modelos Atomicos definidos en el archivo register.cpp son incorporados al panel de modelos importados al sistema bajo el grupo “Atomic”.
Como el archivo register.cpp no posee información sobre los puertos de entrada y salida de los Modelos Acoplados, el usuario debe conocerlos y cargarlos antes de incorporarlos al Modelo Acoplado que se esta definiendo.
Para definir los puertos de un Modelo Atómico importado debe hacerse right-click sobre el modelo. El sistema despliega un menú contextual donde se pueden agregar y quitar puertos al modelo importado.
Una vez que los modelos fueron importados y sus puertos definidos, el usuario ya puede agregarlos al Modelo Acoplado que esta definiendo. Para esto, debe elegir el tipo de modelo a insertar y hacer doble clic sobre el área de modelado gráfico.
Para incorporar Modelos Atómicos GGAD, definidos previamente con esta u otra herramienta, primero se debe importarlos de la misma manera que se importó el register.cpp en el paso anterior. Esta vez, elegir el modelo .cdd deseado.
Al igual que en el caso anterior, el modelo elegido es incorporado al panel de modelos importados al sistema bajo el grupo “Atomic” y puede ser seleccionado para su inserción.
La importación de Modelos Acoplados previamente definidos (*.ma) es análoga a las dos anteriores. Se debe seleccionar File | Import, esto abre una ventana de OpenFile donde elegir el modelo .ma del Filesystem. El modelo así elegido es incorporado al panel de modelos importados al sistema bajo el grupo “Coupled” y el usuario puede seleccionarlo para agregarlo al Modelo Acoplado que está definiendo.
La herramienta también permite agregar Modelos Atómicos y Acoplados nuevos que aún no han sido definidos. Para agregar uno de éstos se debe hacer click sobre el botón "Add new Atomic Model Unit" o “Add new Coupled Model” respectivamente.
El sistema agrega un nuevo Modelo Atómico o Acoplado aún no definido y le agrega un nombre y una clase de forma automática.
Para elegir un nombre para estos modelos se debe hacer right-click sobre el mismo y elegir la opción Propiedades del menú contextual. La aplicación presenta un dialogo donde ingresar un nombre.
Una vez elegido el nombre, el modelo debe ser explotado para ser definido. Este punto será explicado más adelante.
Si se agregó un Modelo Atómico, el usuario puede definir parámetros iniciales para el mismo. Para esto, hacer right-click sobre el modelo y elegir "Add Initial Parameters". Esto presenta un dialogo donde agregar parámetros iniciales.
De forma análoga, si se desea borrar parámetros iniciales creados con anterioridad, hacer right-click sobre el modelo y elegir la opción "Delete Initial Parameters". Esto presenta un dialogo con la lista de parámetros iniciales para ser borrados.
Ademas de Modelos Acoplados y Atómicos, también se pueden agregar Puertos de Entrada y de Salida. Los Puertos se crean seleccionando el tipo de puerto deseado en el árbol de modelos y haciendo doble click sobre el área de diseño gráfico
El sistema agrega un puerto y le asigna automáticamente un nombre y un tipo.
Para cambiar estas propiedades, hacer right-click sobre el puerto y elegir Propiedades. La herramienta despliega una ventana donde el usuario debe cargar un nombre para el puerto, seleccionar si es de entrada o salida y elegir si transmite valores enteros o de punto flotante.
Luego de crear
los Modelos y/o Puertos necesarios, se pueden crear Links que representan las
funciones de transición entre los mismos.
Para crear un
Link, se debe apretar el botón izquierdo del mouse
sobre el Modelo o Puerto de origen, arrastrarlo sin soltar hasta el Modelo o
Puerto de destino y soltar el botón (drag and drop).
Luego de creado
un Link hay que conectar sus extremos a Ports. Para
esto, hacer right-click sobre
el Link y elegir Propiedades en el menú contextual.
Se despliega un
menú con dos combos que dan a elegir los puertos disponibles para cada extremo
del Link
Si uno de los
extremos del Link es un Port, este ya aparecerá como
única opción del combo.
Un Self Link es un Link que circular que tiene sus dos
extremos unidos al mismo Modelo.
Para crear un Self Link se debe apretar el botón izquierdo del mouse sobre el Modelo, arrastrarlo una cierta distancia
lejos de él sin soltar el botón, volver al Modelo de origen y soltar el botón.
Los Modelos, Puertos y Links pueden ser borrados. Para borrar uno de estos elementos, primero hay que seleccionarlo haciendo doble-click sobre el mismo. Éste se pinta de rojo. Luego, apretar la tecla delete del teclado o Edit | Delete para eliminarlo del Modelo que se esta definiendo.
Cuando se borra un Modelo o un Puerto, también se borran todos los Links que tuvieren a estos en alguno de sus extremos.
Los Modelos Atómicos o Acoplados nuevos deben ser definidos. Para esto, deben ser Explotados i.e. abrir un editor que nos permita definirlos.
Para esto, el usuario debe hacer right-click sobre el Modelo Atómico o Acoplado creado y elegir "Explode". El sistema cierra el editor del Modelo Acoplado que se esta definiendo y abre un nuevo editor para el modelo que se esta explotando.
El usuario debe definir, grabar y exportar el modelo que se esta explotando. Una vez realizado estos pasos, se debe cerrar el editor. Al realizar esto, la herramienta vuelve a abrir el editor del modelo original.
Si el modelo que acaba de explotarse y definirse posee puertos, éstos se encuentran accesibles ahora para su utilización.
Un modelo que ha sido explotado y definido puede volver a explotarse cuantas veces fuere necesario. Cuando un modelo es explotado por segunda vez, la configuración de Puertos del mismo puede cambiar completamente. Debido a esto, todos los Links que llegaran al modelo y que estuvieran conectados a algún puerto del mismo son desconectados y el usuario debe volver a relacionarlos.
Un modelo creado y explotado puede ser modificado externamente por el usuario, ya sea utilizando esta herramienta o accediendo manualmente al archivo de definición. Para esto, la aplicación cuenta con una función para recargar el modelo interno. El usuario debe hacer right-click sobre el modelo y elegir la opción "Reload".
Todo Puerto, Modelo de un Modelo Acoplado o Estado de un Modelo Atómico tiene una representación gráfica por default. Esta puede ser cambiada por una imagen giff o jpg.
Para esto el usuario debe hacer right-click sobre el objeto al cual le quiere asignar una imagen y elegir la opción "Select Image". El sistema presenta un dialogo de Open File apuntando al Repositorio de Imágenes de la aplicación (ver Repositorio de Imágenes). El usuario debe seleccionar una imagen de esta u otra carpeta de su máquina. La imagen seleccionada es dibujada en el modelo y guardada en el repositorio.
También se puede asignar una imagen a una a Clase de Modelo importado. Todos los modelos creados a partir de esta clase son representados con la imagen seleccionada.
Para esto el usuario debe hacer right-click sobre la clase importada a la cual le quiere asignar una imagen y elegir la opcion "Select Image". El sistema presenta un dialogo de Open File apuntando al Repositorio de Imágenes de la aplicación (ver Repositorio de Imágenes). El usuario debe seleccionar una imagen de esta u otra carpeta de su máquina. La imagen seleccionada es guardada en el repositorio.
Los Modelos Atómicos y Acoplados pueden tener una imagen de fondo.
Para esto el usuario debe hacer right-click sobre el fondo del modelo y elegir la opción "Background". El sistema presenta un dialogo de Open File apuntando al Repositorio de Imágenes de la aplicación (ver Repositorio de Imágenes). El usuario debe seleccionar una imagen de esta u otra carpeta de su máquina. La imagen seleccionada es guardada en el repositorio.
La aplicación cuenta con un repositorio de imágenes. Cuando un componente (modelo, puerto, estado, fondo de un modelo) tiene una imagen, en realidad lo que tiene es solamente un nombre de una imagen. La aplicación busca en el repositorio una imagen con ese nombre y, si existe, dibuja el objeto con esa imagen. Si no la encuentra dibuja el objeto con su representación default.
Cuando a un objeto se le asigna una imagen, esta es automáticamente copiada al repositorio de imágenes
La locación del repositorio de imágenes puede cambiarse desde la opcion File -> Image Repository Directory. Esto permite tener diferentes sets de imágenes para el mismo modelo.
La aplicación provee interfaces de integración con las Herramientas externas de uso mas frecuente simplificando, uniformizando y centralizando su uso
La aplicación provee una interfaz grafica para ejecutar el simu o cd++
La misma se accede desde la opción Execute -> Run.
Permite definir los mismos parámetros de ejecución disponibles desde la línea de comandos. Presenta, abajo de todo, una pequeña consola donde se muestra la salida estándar de ejecución.
La aplicación provee una interfaz grafica para ejecutar el Drawlog.
La misma se accede desde la opción Execute -> Drawlog.
Permite definir los mismos parámetros de ejecución disponibles desde la línea de comandos. Presenta, abajo de todo, una pequeña consola donde se muestra la salida estándar de ejecución del drawlog.
La aplicación cuenta con un editor de texto embebido.
El mismo se puede acceder desde Execute -> Text Editor
La aplicación posee la funcionalidad de representar gráficamente Modelos Cell DEVS.
Para esto el usuario debe ir al menú Animate y elegir la opcion Cell-DEVS Animation.
Esto despliega la interfaz de graficación.
En esta interfaz el usuario debe elegir el o los modelos que desea graficar.
Al apretar el botón “Add Model” se despliega una ventana de Open File donde el usuario debe seleccionar el archivo a graficar. Se pueden elegir dos opciones. Archivos de gráficos .DRW o un modelo .MA mas un archivo log.
Los archivos a graficar se muestran en la lista Available.
De todos los archivos a graficar disponibles, el usuario debe elegir cuales graficar. Para esto hacer doble click sobre los modelos que quiere graficar. Los modelos seleccionados se muestran en la lista Selected. Luego, al apretar el botón “Load Model” todos los modelos seleccionados son cargados y se grafica su primer cuadro.
Una vez cargados los modelos, se pueden animar con los botones play, stop y pause.
La velocidad de graficación puede controlarse modificando el valor “Delay” y el slide bar subsiguiente. El valor “Delay” representa los milisegundos entre cuadro y cuadro. El slide bar modifica un 10% por punto esta velocidad.
A medida que se va avanzando se puede visualizar el número de cuadro que se esta mostrando y la hora a la cual el mismo esta asociado.
Se poseen botones para avanzar o retroceder cuadro por cuadro.
La opcion Show Values define si se muestran o no los valores sobre la grilla.
La opción Show Names controla si se muestra o no el nombre del grafico en la casilla superior izquierda.
El boton Remove Dir/Add Dir agrega o quita la grilla que separa las celdas.
Si el archivo que se esta graficando posee mas de una dimensión, todas estas son graficadas una al lado de la otra. El checkbox “Show 2D Only” evita esto graficando solo la primera de las dimensiones.
Se pueden elegir 3 formas distintas de graficar el archivo: Cuadrados, Triángulos o Hexágonos. La forma correcta de graficarlo es inherente al modelo. Esto se puede elegir desde un combo a tal efecto.
La aplicación permite crear paletas para graficar los modelos.
La ventana de selección, creación y modificación de paletas se despliega presionando el botón “Modify Palette”.
En la ventana de selección se pueden definir rangos numéricos y elegir para cada uno de estos un color o una imagen. La paleta así definida puede ser guardada.
La aplicación posee la funcionalidad de representar gráficamente Modelos Atómicos
Para esto el usuario debe ir al menú Animate y elegir la opción AtomicAnimate.
Esto despliega una ventana donde el usuario puede elegir el archivo .log de donde se tomaran los datos para graficar.
Acto seguido se abre la ventan de graficación.
Arriba a la derecha se muestra un combo con los modelos disponibles para ser graficados.
Según el modelo elegido, el graficador mostrará los valores asumidos por sus puertos a lo largo del tiempo. Para cada uno de los puertos, se incluye un checkbox. Si el checkbox es desactivado, el gráfico del Puerto correspondiente deja de graficarse
El graficador muestra un gráfico por cada uno de los puertos del modelo elegido.
El grafico tiene el tiempo en el eje horizontal y los valores asumidos por el puerto en el vertical.
Dado que las escalas en las que se desarrollan los valores de los Puertos pueden ser muy distintas, se tomo la decisión de graficar cada uno de los puertos en un gráfico separado.
El eje horizontal, el tiempo, esta sincronizado entre todos ellos. Es decir, Si se traza una línea vertical, esta va a cortar a todos los gráficos en el mismo valor del eje x.
La escala horizontal es la misma para todos los puertos. La escala vertical es independiente puerto a puerto. Para cada puerto se provee dos valores que representan el valor mínimo y el máximo a ser mostrado. Una vez seleccionados los valores, apretar el botón Set para aplicar los cambios.
El zoom horizontal es el mismo para todos los puertos (ya que la escala es la misma) y es controlado con los botones X in y X out.
El zoom vertical es independiente puerto a puerto y es controlado con los botones + y - disponibles para cada uno de estos.
Dado que los archivos de log pueden pesar mucho y volverse inmanejables, el graficador lee y grafica solo una porción de datos a la vez. Para eso numera los datos del archivo .log y grafica un subconjunto de ellos. El botón Next pasa a la siguiente porción de datos. El botón Previous pasa a la anterior porción de datos. El botón drill down mustra un conjunto de datos menor. El botón drill up muestra un conjunto de datos mayor.
La aplicación posee la funcionalidad de representar gráficamente Modelos Acoplados
Para esto el usuario debe ir al menú Animate y elegir la opción CoupledAnimate.
Esto despliega una ventana donde el usuario puede elegir el archivo .log de donde se tomaran los datos para graficar, el Modelo Acoplado mismo y el tiempo entre cada cambio de evento.
Acto seguido se despliega el graficador. Este muestra en pantalla el Modelo Acoplado de forma similar a como se lo ve en el editor de Modelos Acoplados.
Cuando se da Play, el graficador comienza a mostrar los valores que corren por los Links y la hora a la que ocurren.
La frecuencia de estos eventos esta dada por el valor de "Elapse"
Arriba a la derecha se grafica la hora en la cual se producen los eventos.
Los Links por los cuales corren valores son pintados de rojo. Se muestra sobre el link el Puerto involucrado y el valor transferido.
Una vez generado un Modelo Acoplado el usuario puede
exportarlo al formato .ma de forma tal de poder
ejecutarlo. Para esto, el usuario debe elegir la opción File -> Export. La aplicación mostrará una ventana de Save File donde el usuario debe elegir la carpeta y el
nombre del archivo a exportar.
De manera similar, una vez generado un Modelo Atómico, el
usuario puede exportarlo al formato GGADScript. Para
esto el usuario debe elegir la opción File -> Export.
La aplicación mostrará una ventana de Save File donde
el usuario debe elegir la carpeta y el nombre del archivo a exportar.