OMNeT++(简单模块)四

4.1简单模块

4.1.1omnet++中离散事件

一个离散事件系统是指一个系统的状态改变是离散的,在两个连续的事件之间没有如何事件发生。简单地说,事件规定了系统状态的改变,状态的修改仅在事件发生时进行。离散事件系统可以使用离散事件模拟进行仿真。例如,计算机网络通常被看作是离散事件系统。
部分事件包括:

  • 包传输的开始
  • 包传输的结束
  • 等待重传时间到达
    事件发送的时间通常被称作事件时间戳,在omnet中叫做到达时间。模拟时间或虚拟时间是指模拟程序运行了多长时间,相对的真实时间或cpu时间是指多少cpu时间被消耗。
    omnet++使用消息来描述事件。每一事件都通过一个cMessage类或它的一个子类来表示:不存在单独的事件类。消息从一个模块发送到另一个模块——这意味着”事件将发生“的地方就是消息的目的模块,事件发生的模拟时间就是消息到达时间。像”等待满期“事件通过模块给自己发送一个消息而实现。
    omnet++中的模拟时间被存储在c++类型的simitime_t中,是双精度类型

4.1.2包传输模型

(1)延迟、比特误差率、数据速率
可以被三个指针赋值的连接便利了通信网络建模,对其他模型来说也非常有用。
在这里插入图片描述
所有的这些指针都是可选的,可以为每一个连接指定链接指针,也可以定义链接类型,并在整个模块中使用。传播延迟是消息通过通道到达目的地的时间段,传播延迟以秒为单位计算。比特误差率对消息的传输有影响,比特误差率就是一个比特被错误传输的几率。
一条有N比特的消息,没有错误的比特长度:
在这里插入图片描述
消息有一个错误标志。
数据速率的单位bits/second
消息的发送时间与传输的第一个比特和接收的最后一个比特相关。
在这里插入图片描述
上面的模型不能模拟所有的协议,在token ring和FDDI协议中,站发送重复的比特直到整个帧到达。如果一条消息沿途经过一系列的链接与模块。模块的行为好像每一个模块都在等待消息的最后一个比特到达,然后开始发送。因为上述的影响是不期望的,更希望数据通过只有一个链接的路由来传播。
4.1.3定义简单模块
(1)直接或间接定义一个CSimpleModule的子类;
(2)以define_Module()或define_Like()宏注册之;
(a)作用:声明一个simple module类型并且建立与相应的ned文件的关联。前者用于类名与ned定义的SimpleModule名相同,后者用于不同,可以为一个ned描述的SimpeModule提供不同的实现。
(a)每个impleModule都必须手动添加该宏,CompondModule由omnet自动添加。
(3)实现模块类
在这里插入图片描述
在这里插入图片描述
(4)建立构造函数
在这里插入图片描述

4.1.3简单模块中的主要成员函数

(1)activity
它使得你可以像编写一个进程、线程一样编写一个简单模块。等待消息、延缓执行时间等等。拥有这个函数的简单模块们作为一系列协同程序协同执行,又称之为协同多任务。手动设置模块栈空间,一般为16k,如果模块存在递归或本地变量占空间较大的话,可以设置为更大的栈空间。
(2)handleMessage
(a)为每个message、event调用handleMessage()
(b)需要在每个intialize()函数中初始化变量,一些基于协同的函数如wait()、receive()等均不能调用。
(c)SimpleModule的stacksize一定要设置为0。
在这里插入图片描述
(3)initialize()
在初始化消息放入FES(Future Event Set)后,在执行前被调用,初始化成员变量。复合模块的初始化优先于其子模块。
(4)Finish()
循环结束(FES没有模拟事件时)后正常终止时被调用,模块的调用顺序刚好与initialize()相反。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

young Danny

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值