【OPNET学习系列文章之3】两发一收

本文是建立在上一篇博文【两个固定节点通信】的基础上的,省略部分与其相同。

本文要实现两个节点发送一个节点接收的功能。这里将分为两个不同模型,发送节点模型和接收节点模型。


1.建立发送节点模型

1.1节点模型如图所示。

 【OPNET学习系列文章之3】两发一收_第1张图片

1.2进程模型如图所示。

 【OPNET学习系列文章之3】两发一收_第2张图片

1.3单击工具栏Edit Header Block图标,输入以下代码,保存。

#include

#define SEND (op_intrpt_type()==OPC_INTRPT_SELF&&op_intrpt_code()==0)

1.4双击st_1上半部分,输入以下代码,保存。

op_intrpt_schedule_self(0.0,-1);

双击st_1下半部分,输入以下代码,保存。

op_intrpt_schedule_self(op_sim_time()+0.0,0);

1.5双击st_3上半部分,输入以下代码,保存。

Packet *pkptr;

pkptr=op_pk_create_fmt("packet2");

op_pk_send(pkptr,0);//0表示从0端口发出

op_intrpt_schedule_self(op_sim_time()+0.5,0);//这里是0.5s发送一个包

(先不管st_0中的10行代码)

1.6单击菜单栏Interfaces-Process Interfaces,将begsim intrpt设为enabled,单击OK保存进程模型。单击工具栏Compile Process Model图标,编译该进程模型。在节点模型中,右击p_0,选择Edit Attribute,将process model的值设为刚才保存的进程模型名,单击OK,保存节点模型。


2.建立接收节点模型

2.1节点模型如图所示。

 【OPNET学习系列文章之3】两发一收_第3张图片

2.2进程模型如图所示。

 【OPNET学习系列文章之3】两发一收_第4张图片

2.3单击工具栏Edit Header Block图标,输入以下代码,保存。

#define ARRIVAL1 (op_intrpt_type()==OPC_INTRPT_STRM&&op_intrpt_strm()==0)

#define ARRIVAL2 (op_intrpt_type()==OPC_INTRPT_STRM&&op_intrpt_strm()==1)

2.4双击st_2st_3上半部分,输入以下代码,保存。

Packet *pkptr;

pkptr=op_pk_get(op_intrpt_strm());

op_pk_destroy(pkptr);

(先不管st_0中的1行代码和st_2st_3中的其他代码)

之后的步骤同上。


3.建立链路模型

设置如图所示,不同之处在于链路为单工,其余和上一篇相同。

 【OPNET学习系列文章之3】两发一收_第5张图片


4.建立网络模型

如图所示,01节点为发送节点,2节点为接收节点。

 【OPNET学习系列文章之3】两发一收_第6张图片


5.运行动画如图所示

【OPNET学习系列文章之3】两发一收_第7张图片

你可能感兴趣的:(OPNET)