Guia de Practica de Laboratorio 04
Guia de Practica de Laboratorio 04
Guia de Practica de Laboratorio 04
OBJETIVO: Familiarizarse con el entorno del IDE de OMNeT++, el cual será posteriormente
empleado para realización de simulación de sistema LTE.
REQUISITOS:
PROCEDIMIENTO:
1. Creación del modelo
Notas:
- Algunas versiones de OMNeT ++ generarán un archivo package.ned en el proyecto. No lo
necesitamos ahora: elimine el archivo.
- Es preciso indicar que, usar el IDE es completamente opcional. Casi toda la funcionalidad de
OMNeT ++ (a excepción de algunas características muy intensivas en gráficos e interactivas,
como la exploración de gráficos de secuencia y el trazado de resultados) está disponible en la
línea de comandos.
1
El proyecto contendrá todos los archivos que pertenecen a nuestra simulación. En nuestro ejemplo, el proyecto
consta de un único directorio. Para simulaciones más grandes, el contenido del proyecto generalmente se clasifica en
las carpetas src/ y simulations/, y posiblemente en subcarpetas debajo de ellas.
2
OMNeT ++ usa archivos NED para definir componentes y ensamblarlos en unidades más grandes como redes.
UNIVERSIDAD NACIONAL TECNOLOGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICAY TELECOMUNICACIONES
3
En el modo de diseño, la topología se puede editar gráficamente, utilizando el mouse y la paleta de la derecha, mientras en modo
Fuente, el código fuente NED se puede editar directamente como texto. Los cambios realizados en un modo se reflejarán
inmediatamente en el otro. (Dado que los archivos NED son archivos de texto sin formato, incluso se puede usar un editor de texto
externo para editarlos, aunque se perderá el resaltado de sintaxis, la asistencia de contenido, las referencias cruzadas y otras
características IDE).
UNIVERSIDAD NACIONAL TECNOLOGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICAY TELECOMUNICACIONES
Explicación:
Se declara Txc1 como un tipo de módulo simple. Los módulos simples son atómicos en el nivel NED.
También son componentes activos, y su comportamiento se implementa en C ++. Asimismo, Txc1
tiene una puerta de entrada nombrada y una puerta de salida nombrada.
Por otro lado, se declara Tictoc1 como una red. Tictoc1 se ensambla a partir de dos submódulos, tic y
toc, ambas instancias del tipo de módulo Txc1. La puerta de salida de tic está conectada a la puerta
de entrada de toc y viceversa. Habrá un retardo de propagación de 100 ms en ambos sentidos.
Explicación:
- El tipo de módulo simple Txc1 está representado por la clase C ++ Txc1. La clase Txc1 necesita
subclasificarse desde la clase cSimpleModule de OMNeT ++, y debe registrarse en OMNeT ++
con la macro Define_Module ().
- Los mensajes (paquetes, marcos, trabajos, etc.) y los eventos (temporizadores, tiempos de
espera) están representados por objetos cMessage (o sus subclases) en OMNeT ++. Después
UNIVERSIDAD NACIONAL TECNOLOGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICAY TELECOMUNICACIONES
- Se debe tener en cuenta que no hay una condición de detención integrada en esta simulación:
continuaría para siempre. Se podrá detener desde la GUI.
[General]
network = Tictoc1
Con este paso se culmina la creación del modelo, el cual está listo para
compilarlo y ejecutarlo, siendo sus fuentes: tictoc1.ned, txc1.cc y omnetpp.ini. Se
debe guardar los cambios.
2. Ejecución de simulación
4
omnetpp.ini le dice al programa de simulación qué red desea simular (ya que los archivos NED pueden contener
varias redes), asimismo, puede pasar parámetros al modelo.
UNIVERSIDAD NACIONAL TECNOLOGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICAY TELECOMUNICACIONES
Una vez que complete los pasos anteriores, puede iniciar la simulación seleccionando
omnetpp.ini (en el área del editor o en el Explorador de proyectos) y presionando el
botón Run.
Por otro lado, se puede activar manualmente una compilación presionando eligiendo
Project -> Build todo en el menú, o presionando Ctrl + B.
A partir de entonces, debe buscar una función que le resulte familiar, es decir, una que
forme parte del modelo. En la imagen mostrada, esa es la línea "Txc1 :: handleMessage
() en txc1.cc:34". Al seleccionar esa línea, se mostrará el código fuente correspondiente
en el área del editor y se permitirá examinar los valores de las variables en la vista
Variables. Esta información ayuda a determinar la causa del error y corregirlo.
Gráfico de secuencia
El archivo de registro se puede analizar más tarde con la herramienta Sequence Chart
en el IDE. El directorio de resultados en la carpeta del proyecto contiene el archivo .elog.
Al hacer doble clic en el archivo .elog contenido en la carpeta del proyecto, en el IDE de
OMNeT++, se abre la herramienta Sequence Chart y la pestaña de Event Log en la
parte inferior de la ventana.
UNIVERSIDAD NACIONAL TECNOLOGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICAY TELECOMUNICACIONES
#include <string.h>
#include <omnetpp.h>
using namespace omnetpp;
Define_Module(Txc2);
void Txc2::initialize()
{
if (strcmp("tic", getName()) == 0) {
// el objeto EV trabaja parecido a cout
EV << "Enviando mensaje inicial\n";
cMessage *msg = new cMessage("tictocMsg");
send(msg, "out");
} }
[General]
# nothing here
[Config Tictoc1]
network = Tictoc1
[Config Tictoc2]
network = Tictoc2
5. Variables de estado
UNIVERSIDAD NACIONAL TECNOLOGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICAY TELECOMUNICACIONES
a. Crear un archivo NED denominado tictoc3.ned, el cual tendrá el mismo contenido que
tictoc2.ned. (Txc3)
#include <stdio.h>
#include <string.h>
#include <omnetpp.h>
/**
* En esta clase se añade un contador, y se elimina el mensaje después de 10
intercambios.
*/
class Txc3 : public cSimpleModule
{
private:
int counter; // Contador
protected:
virtual void initialize() override;
virtual void handleMessage(cMessage *msg) override;
};
Define_Module(Txc3);
void Txc3::initialize()
{
// El contador disminuye en 1 por cada intercambio
// se elimina el mensaje cuando contador sea cero
counter = 10;
WATCH(counter);
if (strcmp("tic", getName()) == 0) {
EV << "Enviando mensaje inicial\n";
cMessage *msg = new cMessage("tictocMsg");
send(msg, "out");
}
}
d. Ejecutar la simulación
UNIVERSIDAD NACIONAL TECNOLOGICA DE LIMA SUR
ESCUELA PROFESIONAL DE INGENIERÍA ELECTRÓNICAY TELECOMUNICACIONES
6. Parámetros de estado
txc4.cc
#include <stdio.h>
#include <string.h>
#include <omnetpp.h>
protected:
virtual void initialize() override;
virtual void handleMessage(cMessage *msg) override;
};
Define_Module(Txc4);
void Txc4::initialize()
{
// Inicializar el contador con el parámetro de módulo "limit", declarado
// en el archivo NED (tictoc4.ned).
counter = par("limit");
Los parámetros del módulo se declaran en el archivo NED. El tipo de datos puede ser
numérico, string, bool o xml (este último es para facilitar el acceso a los archivos de
configuración XML), entre otros.
b. Modificar el archivo omnetpp.ini a fin de incluir la red Tictoc4, y establecer el valor del
parámetro “limit”, conforme se indica a continuación:
[General]
# nothing here
[Config Tictoc1]
network = Tictoc1
[Config Tictoc2]
network = Tictoc2
[Config Tictoc3]
network = Tictoc3
[Config Tictoc4]
network = Tictoc4
Tictoc4.*.limit = 5
c. Ejecutar la simulación
Linkografía
1. https://docs.omnetpp.org/