【OPNET学习系列文章之2】两个固定节点通信

来源:互联网 发布:ubuntu jdk 64位下载 编辑:程序博客网 时间:2024/05/23 01:14

九步入门OPNET编程


1.新建一个项目

在菜单栏依次点击File-New,选择Project,然后点击OK进入Entername页面,分别输入Project NameScenario Name,如下图所示,单击OK进入主页面。

 


2.建立包格式

在菜单栏依次点击File-New,选择Packet Format,然后单击OK进入Packet Format页面,单击工具栏Create New Field图标创建包中的一个字段,可以连续放置多个字段,右键退出,如图所示。可以右键Edit Attribute设置该字段的属性,如名称、大小等。最后保存,设置数据包文件的名称,以后通过该名称使用该数据包。

 


3.建立同时具有发送和接收功能的节点模型

在菜单栏依次点击File-New,选择Node Model,然后单击OK进入Node Model页面,使用工具栏上的相应图标建立如图所示的模型,图中包含的图标有Create Point-to-Point ReceiverCreate Packet StreamCreate ProcessorCreate Point-to-Point Transmitter。最后保存节点模型。

 


4.建立进程模型

  4.1在菜单栏依次点击File-New,选择Progress Model,然后单击OK进入Progress Model页面,使用工具栏上的相应图标建立如图所示的模型,图中包含的图标有Create StateCreate Transition,需要在起始状态st_0上点击set intial state这样左边会有一个黑色箭头,起初状态的颜色都是红色的,需要在状态上右击Make State Forced才能使状态变成绿色(具体原因有待确定)。

 

  4.2右击st_2st_4的链路,点击Edit Attribute,将属性表里的condition值改为SEND,这样箭头线会变成虚线并有文字,如图所示,点击OK

 

同理,右击st_2st_3的链路,点击Edit Attribute,将属性表里的condition值改为ARRIVAL。这里SENDARRIVAL是中断的名称,接下来会在头文件中定义。

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

#include <stdlib.h>

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

#define ARRIVAL (op_intrpt_type()==OPC_INTRPT_STRM)

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

op_intrpt_schedule_self(0.0,-1);

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

op_intrpt_schedule_self(op_sim_time()+0.0,0);

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

Packet *pkptr;

pkptr=op_pk_get(op_intrpt_strm());//通过流得到数据包

op_pk_destroy(pkptr);//销毁数据包

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

Packet *pkptr;

pkptr=op_pk_create_fmt("packet1");

op_pk_send(pkptr,0);

op_intrpt_schedule_self(op_sim_time()+1,0);//设立自中断,获取当前仿真时间并+1表示在该包发送1s后再发送下一个包,0表示中断名称

  4.7单击菜单栏Interfaces-Process Interfaces,将begsim intrpt设为enabled,单击OK保存进程模型,如图所示。

 

  4.8单击工具栏Compile Process Model图标,编译该进程模型,如图所示,编译正确。

 


5.在节点模型中,右击p_0,选择Edit Attribute,将process model的值设为刚才保存的进程模型名,如图所示,单击OK,保存节点模型。

 


6.建立网络模型

Project页面的工具栏里单击Open Object Palette图标,查找到刚才保存的节点模型,选择固定节点,放置在页面中,分别设置名称为sendreceive,如图所示,此时并没有两个节点之间的连线。

 


7.建立链路模型

在菜单栏依次点击File-New,选择Link Model,然后单击OK进入Link Model页面,在Support  link types中设置如下图所示。

 

Attributes中的closure modelcoll modelerror modelecc modelpropdel modeltxdel model都设置为NONE,保存。


8.Project页面的工具栏里单击Open Object Palette图标,查找到刚才保存的链路模型,移动到页面中,连接两个节点。


9.Project页面的工具栏里单击Configure/run图标,运行仿真,首先如图所示,在这里可以设置仿真相关参数。

 

在左侧点击Execution-OPNET Debugger,选中右边的方框,如图所示。

 

然后点击Run,进入如下图所示界面。

 

选中中间的Run Animations方框,点击Continue,可以看见以动画的形式显示数据包交互的过程。

点击Break暂停,在ODB中输入q,运行完仿真并结束。可以在Process标签栏中查看具体信息,如图所示。