opnet入门例程1---单节点收包计数

**问题:**构建一个模块,它对接收的包计数,并且将计数器的值写入统计量中,最终以图形方式显示结果。

一、设计节点模型

opnet入门例程1---单节点收包计数_第1张图片

设置p_0的属性:

  • process model设置为simple_source
  • 模块名字改为src1
    opnet入门例程1---单节点收包计数_第2张图片
    同理设置p_2的属性:
  • process model设置为simple_source
  • 模块名字改为src2
    将p_1模块改名为count,后面将为它设计进程模型。
    最终节点模型如下图所示:
    opnet入门例程1---单节点收包计数_第3张图片

二、设计进程模型

包计数进程模型包含3个状态:

  • 初始化状态
  • 空闲状态
  • 包到达状态
    file–>new–>process model:

opnet入门例程1---单节点收包计数_第4张图片
仿真开始时,从箭头处进入,init设置为绿色(强制状态),初始化变量后,转移到wait状态等待包的到来。
当包到达时,会判断是否满足ARRIVAL条件,如果满足,则转移到arrival状态。
图中的ARRIVAL和default为转移条件,通过右键对应的转移线来设置。default是OPNET自带的默认条件,如果不满足ARRIVAL条件,则会在自身状态循环转移,继续等待中断到来。
opnet入门例程1---单节点收包计数_第5张图片
上面的ARRIVAL条件只是设置了一个标识,并没有指定到底什么时候转移。转移条件一般使用宏来定义。

三、定义条件和变量

opnet入门例程1---单节点收包计数_第6张图片
注意:ARRIVAL后面有一个空格!!!!(写完要保存)
OPC_INTRPT_STRM是一个符号常量,op_intrpt_type()是判断中断类型的。这句话意思是:如果是流中断的话,状态就满足ARRIVAL条件,可以转移。

我们仿真的目的是要对接收的包进行计数,所以要定义变量来记录。我们定义两个状态变量。pk_count用来存储包计数器的值。pk_cnt_stathandle是一个统计句柄,用来将计数器的值写入统计量,从而后面仿真结束后,能在统计量中查看到计数器的值。
opnet入门例程1---单节点收包计数_第7张图片

计数器的值pk_count写入统计句柄pk_cnt_stathandle后,我们还需要一个统计量来记录这个结果,从而把结果展示给我们。这里我们设置一个本地统计量(Local Statistics)来记录,本地统计量的名字起为packet count:再把本地统计量和统计句柄pk_cnt_stathandle进行绑定即可。
opnet入门例程1---单节点收包计数_第8张图片
在init状态的入口代码中绑定即可。同时初始化pk_count = 0。
pk_count = 0;
pk_cnt_stathandle = op_stat_reg(“packet count”,OPC_STAT_INDEX_NONE,OPC_STAT_LOCAL);

  • packet count是本地统计量的名字
  • OPC_STAT_INDEX_NONE 代表是一个一维数组
  • OPC_STAT_LOCAL 代表是本地统计量,还有一种是全局统计量OPC_STAT_GLOBAL

最后,在状态arrival 的入口写入口执行代码

pk_count = pk_count + 1;//包计数器加1
op_pk_destroy(op_pk_get(op_intrpt_strm()));//通过中断流索引获取包,并销毁。
op_stat_write(pk_cnt_stathandle,pk_count);//把包计数器的值写到统计句柄中去。统计句柄会把值传递到本地统计量。

进程模型写完一定要编译通过才能使用。
opnet入门例程1---单节点收包计数_第9张图片
我把进程模型保存命名为myprocess。下面把这个进程模型运用到节点模型中的count模块中去。
opnet入门例程1---单节点收包计数_第10张图片

到这里,进程模型和节点模型都创建完毕了。最后是网络模型的创建以及仿真。

四、网络模型及仿真

opnet入门例程1---单节点收包计数_第11张图片
opnet入门例程1---单节点收包计数_第12张图片
放置一个节点。
opnet入门例程1---单节点收包计数_第13张图片
选择要收集的统计量;右键节点node_0->choose individual DES statistics

opnet入门例程1---单节点收包计数_第14张图片
运行
opnet入门例程1---单节点收包计数_第15张图片

opnet入门例程1---单节点收包计数_第16张图片
opnet入门例程1---单节点收包计数_第17张图片
也可以记录发包动画查看
在选择要收集的统计量时,把动画勾上再运行即可。
opnet入门例程1---单节点收包计数_第18张图片
DES–>play 2D animation
opnet入门例程1---单节点收包计数_第19张图片

你可能感兴趣的:(opnet)