opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数

在【opnet 入门例程2–点到点单工收发模型(1)】中,我们使用的是系统自带的进程模型。
这里我们自己写一个进程模型。并统计数据传输延时的变化。

一、创建进程模型

File–>new–>process model
opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数_第1张图片
下面写代码。【详细含义及操作在前面的文章有写】

1.在HB中写宏

定义PK_ARRIVAL转移条件
#define PK_ARRIVAL (op_intrpt_type()==OPC_INTRPT_STRM)

2.定义状态变量记录延时时间

其中delay_handle为统计句柄,作用之前提到过,用来将delay的值传递到统计量中去,以便仿真后查看结果。
opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数_第2张图片

3.定义一个全局统计量

Interface–>Global statistics
全局统计量的名字起为end to end delay
opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数_第3张图片

3.在init状态写入口代码

delay_handle = op_stat_reg (“end to end delay”,OPC_STAT_INDEX_NONE,OPC_STAT_GLOBAL);
用来将全局统计量end to end delay和统计句柄绑定。

4.在count状态写入口代码

index = op_intrpt_strm(); //获取中断流索引,这里只有一个接收机,索引其实就是0.
pkptr = op_pk_get(index); //根据流索引获取数据包
create_time = op_pk_creation_time_get(pkptr); //获取数据包的创建时间
sim_time = op_sim_time(); //获取当前仿真时间
delay = sim_time - create_time; //传输时延=当前仿真时间 - 包创建时间
op_stat_write(delay_handle,delay); // 将时延值写入统计句柄,而统计句柄与全局统计量是绑定的。
op_pk_destroy(pkptr); //处理完,销毁数据包

5.声明变量

TB临时变量中声明上面用到的变量。
int index;
Packet *pkptr;
double create_time,sim_time;

6.编译

opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数_第4张图片
保存为seu_ete_delay。

二、在sink节点模型中使用seu_ete_delay

源发送包,目的节点接收包。所以进程模型是要在目的节点中使用。
设置myseu_sink中的p_0状态机的属性。process model设置为seu_ete_delay。

opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数_第5张图片
保存后就可以仿真了。

三、选择仿真统计量

DES–>choose individual statistics
opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数_第6张图片
run…
opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数_第7张图片

仿真结果:

opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数_第8张图片
上图记录的是所有数据包的时延情况。
查看平均值:
opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数_第9张图片
概率分布:
opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数_第10张图片

统计收包个数:【1定义2关联3写入】

同理,回到进程模型,在状态变量SV中声明一个包个数变量,以及对应的统计句柄。
opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数_第11张图片
接下来声明一个统计量与包个数统计句柄相绑定。
首先声明一个全局统计量packet number。
opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数_第12张图片
然后再init状态的入口代码里进行绑定关联。并且对pk_number=0,初始化包个数的值。
pk_num_handle = op_stat_reg (“packet number”,OPC_STAT_INDEX_NONE,OPC_STAT_GLOBAL);
pk_number=0;
opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数_第13张图片
arrival状态接收到包,要记录个数。pk_number++;并将记录的个数写进统计句柄。op_stat_write(pk_num_handle,pk_number);
opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数_第14张图片
编译成功:
opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数_第15张图片
选择展示统计量并运行仿真
opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数_第16张图片
仿真结果:
opnet入门例程2--点到点单工收发模型(2)--统计包时延/个数_第17张图片

你可能感兴趣的:(opnet)