Veins教程03 - OMNet++ 介绍

Intro to OMNet++

OMNet++在本教程中(Veins+OMNetpp+SUMO)是一个重要角色,需要深入学习。OMNet++基于C++(和NED),本教程默认读者有一定C++基础。

Learn From A Example

按照之前的教程安装之后可以通过omnetpp打开OMNet++。打开后如果工程目录不存在或为空会提示安装INET和Examples;INET与Veins是类似工具,本例中不涉及使用,因此两个均可以不勾选。

Hello World

先跑一个非常简单的例子,可以深刻理解OMNet++中的消息传递。

参考教程

Learn From Manual

官方手册非常长,笔者觉得最开始只需要看完前三章,第四章简略看看,主要是能读懂.nedomnetpp.ini

OMNet++ Project Structure

每个项目由一个Network和其中的多个module/sub-module组成,如图

modules

从文件角度来说包括

  • 描述拓扑结构的.ned文件
  • 定义消息(message)的.msg文件
  • 定义各个模组(module)具体的功能实现的多个.cc文件

同级module之间可以通过gate连接并传输message,连接称为connection/link

NED

在项目中通过基于NED语法的.ned文件来描述网络结构;而每个模块的具体功能有对应的C++文件来定义。分开定义的原因是.ned文件可以无损与.xml互相转换,因此容易修改。

官方手册 第三章

Hinds

记录一些细节

  • *匹配任意不含.的字符串;**匹配任意字符串;..匹配自然数;*.**匹配至少含有一个.的字符串
  • 作用于gate的++操作符会自动添加gate向量。因此gate向量可以不预先指定大小(size);但是submodules中的向量必须指定大小

Conclusions

对于OMNet++的了解到此暂时已经足够。总结起来就是

  1. 创建.ned文件(语法是NED)定义和描述仿真网络拓扑的文件
  2. 通过C++文件来定义同名模块的逻辑功能
  3. 使用omnetpp.ini文件对参数进行配置
  4. 运行仿真。可以勾选release模式,之后如果需要debug会询问是否切换成debug模式

评论