完整版OMNetpp学习笔记Word格式文档下载.docx
- 文档编号:16081200
- 上传时间:2022-11-18
- 格式:DOCX
- 页数:18
- 大小:28.25KB
完整版OMNetpp学习笔记Word格式文档下载.docx
《完整版OMNetpp学习笔记Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《完整版OMNetpp学习笔记Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
2.1.4参数
Modules可以拥有参数。
ParameterscanbeassignedineithertheNEDfilesortheconfigurationfileomnetpp.ini.
2.1.5TopologyDescriptionMethod
TheuserdefinesthestructureofthemodelinNEDlanguagedescriptions(NetworkDescription).
2.2ProgrammingtheAlgorithms
Simulationobjects(messages,modules,queuesetc.)arerepresentedbyC++classes.Theyhavebeendesignedtoworktogetherefficiently,creatingapowerfulsimulationprogrammingframework.Thefollowingclassesarepartofthesimulationclasslibrary:
>
module,gate,parameter,channel
message,packet
containerclasses(e.g.queue,array)
datacollectionclasses
statisticanddistributionestimationclasses(histograms,P2algorithmforcalculatingquantilesetc.)
transientdetectionandresultaccuracydetectionclasses
2.3使用OMNetpp
2.3.1buildingandrunningsimulations
一个OMNetppmodel由以下几部分组成:
1.NED语言拓扑描述(.ned文件):
使用参数,gates等描述module结构。
NED文件可以用任意texteditor编辑,但OMNetppIDE提供了两种方式:
图形与文本。
2.消息定义(.msg文件)定义各种消息类型。
OMNetpp会将消息定义转换成C++类。
3.简单模块源文件(Simplemodulesources):
C++文件
仿真系统包括两部分:
1.仿真内核
2.用户接口
3.NED语言
3.1NED概述
NED特点:
1)层次性:
复杂模块由简单模块组成
2)模块化
3)接口
4)继承性
5)包结构的管理:
如Java
6)内部类型:
(可以定义局部变量)
7)Metadataannotations(元数据注解?
)
3.2NED开始
图1网络举例
这个网络描述如下:
//
//Anetwork
networkNetwork
{
submodules:
node1:
Node;
node2:
node3:
...
connections:
node1.port++<
-->
{datarate=100Mbps;
}<
node2.port++;
node2.port++<
node4.port++;
node4.port++<
node6.port++;
}
3.2.1channel类型
可以定义channel类型
//ANetwork
types:
channelCextendsned.DatarateChannel{
datarate=100Mbps;
}
C<
3.2.3一些简单模块(
App,Routing,andQueue)
简单模块定义有关键字:
simple。
在这个例子中,我们定义了node为简单模块(trafficgeneration,routing,etc.其实也挺复杂的)。
应当定义一些简单模块,然后组合起来组成一个复合模块(compoundmodule)。
一个流量生成的简单模块,一个路由模块,一个队列模块。
(We'
llhaveonesimplemodulefortrafficgeneration(App),oneforrouting(Routing),andoneforqueueinguppacketstobesentout(Queue))
simpleApp
parameters:
intdestAddress;
@display("
i=block/browser"
);
gates:
inputin;
outputout;
simpleRouting
simpleQueue
这些放在
App.ned,
Routing.ned
和
Queue.ned文件中。
NOTE:
module
类型名称首字母大写,gate,parameter等用小写。
NED区分大小写。
@display()称作displaystring,在图形环境中显示。
"
i=..."
定义默认图标。
一般的,在NED中@-words如
@display
称作
properties
。
用来注释metadata,可以用于
files,modules,parameters,gates,connections,andotherobjects,andparametervalue
3.2.4复合模块
moduleNode
i=misc/node_vs,gold"
inoutport[];
app:
App;
routing:
Routing;
queue[sizeof(port)]:
Queue;
routing.localOut-->
app.in;
routing.localIn<
--app.out;
fori=0..sizeof(port)-1{
routing.out[i]-->
queue[i].in;
routing.in[i]<
--queue[i].out;
queue[i].line<
port[i];
此为node的定义。
复合模块可以和简单模块一样,有parameter,gate。
3.3简单模块
intcapacity;
i=block/queue"
以上是一个Queue模块。
参数都是可选的。
动作不在NED语言中定义,而是在C++中定义。
默认情况下,OMNetpp会在与NED名字相同的C++类中寻找(如此例,Queue)。
也可以使用下面的方式指定:
@class(mylib:
:
Queue);
如果多个模块在同一名字空间中,则可以采用如下的方式
@namespace(mylib);
simpleApp{
simpleRouter{
simpleQueue{
这样C++类为mylib:
App,
mylib:
Router
and
Queue。
类似于C++中类的继承,简单模块之间也可以存在这样的关系:
simpleBoundedQueueextendsQueue
capacity=10;
该例BoundedQueue给capacity设置了初始值,这个模块使用的类与Queue相同,都是Queue。
若要使用不同的类,则需要用以下方式:
simplePriorityQueueextendsQueue
@class(PriorityQueue);
此时,PriorityQueue使用的类为PriorityQueue。
3.4复合模块
moduleWirelessHostBase
inputradioIn;
tcp:
TCP;
ip:
IP;
wlan:
Ieee80211;
tcp.ipOut-->
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 OMNetpp 学习 笔记