我是靠谱客的博主 疯狂裙子,最近开发中收集的这篇文章主要介绍OMNeT++(语法)三3.1语法3.2ned语言,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

3.1语法

omnet++采用混合式的建模方式,同时使用了omnet++特有的ned语言和c++进行建模。omnet++的主要模型拓扑描述语言ned,采用他可以完成一个网络模型的描述。网络描述包括下列组件:输入申明、信道定义、网络定义、简单模块和复合模块定义。使用ned描述网络,产生ned文件,该文件不能直接被c++编译器使用,需要首先采用omnet++提供的编译工具nedc将.ned文件编译成.cpp文件。最后,**使用c++编译器将这些文件与用户和自己设计的简单模块程序连接成可执行程序。

3.2ned语言

ned语言用来刻画定义模型的拓扑结构,方便对一个网络的模型化描述,这意味着一个网络的描述可以包括一组元件的描述(通道,简单、复杂模型),这些组件的描述可以在其他网络描述中得以重用。包括网络描述的文件带有.ned的后缀,.ned文件动态地载入到模拟程序,或者用ned编译器或c++代码链接到模拟器执行。ned文件可以使用任何文本编辑器或gned图形编辑器来编写。

3.2.1ned描述的组件

一个ned描述包括以下的组件:
(1)输入指示
用于引进其他网络描述文件,引进一个网络描述后,可以使用它所包含的模块通道等组件,当一个文件被引进,只有申明信息是可用的,并且引进一个d文件并不会使该ned文件被编译,当父文件被ned编译时,例如,你可以编译所有并连接所有的网络描述文件你可以用文件名(用ned扩展名也可),同样可以在文件包括一条路径或者用ned编译器的 明星行选项名引进文件的路径。
如: import “etherent;//imports ethernet.ned
(2)信道定义
说明一个链接类型的特征,在信道声明中包括三个属性,他们都是可选项的:delay(每仿真秒的传输时延),error(比特错误率),datarate(信道带宽)。且三者出现的先后顺序没有限制。

如:
channel LeasedLine delay 0.0018//sec error 1e-8 datarate 128000//bit//sec endchannel
(3)简单模块和符合模块定义
简单模块:它是复合模块的基本构建成分,它通过申明它的参数和门来定义。
语法如下:

simple SimpleModuleName
parameters:
//...
gates:
//...
endsimple

复合模块:由一个或多个子模块组成。不管是简单还是复合模块都可以做子模块。他们也都能有门和参数,在简单模块能够使用的任何地方复合模块都能使用。相对于简单模块,他还有两个部分:子模块和链接。语法如下:

simple CompoundModule
parameters:
//...
gates:
//...
submodules:
//...
connections:
//...
endmodule

其中任意部分(参数、门、子模块、链接)都是可选项。
(4)网络定义
模块声明只定义了模块类型,要确实的获得一个仿真器能运行的模块,需要书写网络定义,网络定义将前面定义的模块类型声明为一个仿真模块实例,尽管可以将一个模块作为自包含的简单模块并实例为一个网络,你可能更想使用符合模块类型。在ned文件中可以有几个网络定义仿真程序,使用ned文件可以运行其中任何一个,你可以在配置文件时选择最想使用的那个,网络定义的语法如下:
在这里插入图片描述
wirelessLAN是前面定义好的复合模块的名称,他应该包含关于wirelessHost、wirelessHub等类型进一步的符合模块的定义。自然的,只有模块类型可以使用在网络定义中,与子模块定义一样,不需要对他所有的指针赋值。
在这里插入图片描述

3.2.2函数

在ned表达式中,可以使用以下数学函数:
(1)C语言中<math.h>库函数:exp(),log(),cos(),floor(),ceil()等等。
(2)产生随机变量的函数:uniform、exponential、normal等等。
表达式可以包含不同类型的随机变量,指针类型(除了const)返回不同的值,每次被计算。如果声明为const类型,指针值只在仿真开始的时候计算一次,以后的访问返回相同的值,随机变量程序用随机数字生成其中的一个,缺省为genertor()。
在这里插入图片描述
在这里插入图片描述
例子:
在这里插入图片描述
2表示average()函数有2个参数。这样定义之后,average()函数就能用于ned文件了。
在这里插入图片描述
如果参数类型不是double,可以进行类型转换。另外,简单模块类型名(#include 包含)要利用Define在omnet++中注册,允许类名与ned定义的简单模块各不相同。

最后

以上就是疯狂裙子为你收集整理的OMNeT++(语法)三3.1语法3.2ned语言的全部内容,希望文章能够帮你解决OMNeT++(语法)三3.1语法3.2ned语言所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部