OPNET入门学习教程二Basic Proess.docx

上传人:b****5 文档编号:7752981 上传时间:2023-01-26 格式:DOCX 页数:7 大小:74.22KB
下载 相关 举报
OPNET入门学习教程二Basic Proess.docx_第1页
第1页 / 共7页
OPNET入门学习教程二Basic Proess.docx_第2页
第2页 / 共7页
OPNET入门学习教程二Basic Proess.docx_第3页
第3页 / 共7页
OPNET入门学习教程二Basic Proess.docx_第4页
第4页 / 共7页
OPNET入门学习教程二Basic Proess.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

OPNET入门学习教程二Basic Proess.docx

《OPNET入门学习教程二Basic Proess.docx》由会员分享,可在线阅读,更多相关《OPNET入门学习教程二Basic Proess.docx(7页珍藏版)》请在冰豆网上搜索。

OPNET入门学习教程二Basic Proess.docx

OPNET入门学习教程二BasicProess

第二课BasicProcesses

在本课中,你学会做以下事情:

•创建进程和节点模型

•定义变量,宏(Macros)和过渡

•运行仿真

•分析仿真结果

这个课程介绍如何建立一个模块,统计它接收的数据包数,然后把这个数字进行制图统计。

对于每一个收到的数据包,进程模型递增一个变量并记录变量的值。

概念:

一个进程模型是一个有限状态机(finitestatemachine,FSM),它代表了一个模块的逻辑和行为。

一个有限状态机定义了模型的状态和改变状态的标准。

OPNET采用增强的C/C++修改FSM,称为Proto-C(原始C)。

使用Proto-C的三种场合:

1.EnterExecutive进入执行2.ExitExecutive退出执行

3.TransitionExecutive转移执行

模型设计:

1.打开OPNET,选择File>New...,然后通过下拉菜单选Process 

Model,单击“OK”。

2.点击“CreatState”,在工作区放置3个状态。

其中第一个状态会自动设为initialstate(带有箭头)。

3.右击initialstate,选择“Setname”,修改名称:

init,确定。

4.其余2个状态分别命名为idle(空闲)和arrival(到达)。

OPNET进程模型里,包括非强制状态(红色)和强制状态(绿色)。

非强制状态(红色)是指状态执行完之后,将控制权返回给SimulationKernel。

强制状态(绿色)是指状态执行完之后,立即执行退出操作或者转移到其他状态,并不返回控制权。

由于arrival状态需要统计包数,并销毁数据包,然后回到空闲状态,因此,arrival状态应该是一个强制状态。

另外,init状态必须转移到idle状态,因此它也应该是强制状态。

1.右击init状态,选择MakeStateForced。

2.右击arrival状态,选择MakeStateForced。

创建状态转移:

状态转移分为无条件转移和条件转移(unconditionalandconditional)。

1.单击“CreateTransition”。

2.先点initstate,后点idlestate。

3.绘制曲线状态转移线,先点idlestate,然后在idle和arrival之间点一下,再点arrivalstate。

右击完成绘制。

4.在idle和arrival之间的状态转移线上右击(先选中,再右击),选择EditAttributes,在condition的value中输入“ARRIVAL”(一定要大写)。

确定。

这是就条件转移。

5.点击CreateTransition,绘制从arrival到idle的转移。

6.绘制从idle到它自己的转移。

右击完成绘制。

7.右击idle到它自己的状态转移线,选择EditAttributes。

8.修改condition的value为“default”(小写),确定。

下面定义ARRIVAL宏:

1.点击“EditHeaderBlock”。

打开editpad。

2.输入:

#defineARRIVAL(op_intrpt_type()==OPC_INTRPT_STRM)

3.点击关闭,保存。

下面声明两个变量:

一个用于存储数据包计数,另一个用于“handle”局部统计分析数据包。

1.点击EditStateVariables。

2.输入:

Type

Name

Comments

int

pk_count

Countstotalpackets

Stathandle

pk_cnt_stathandle

Statistictorecordpacketcount

3.点击OK,保存,关闭。

统计量是用于后面的数据分析,在进程模型中是需要声明的。

4.选择Interface>LocalStatistics。

5.在StatName处输入packetcount。

后面自动设为Single和N/A。

6.单击Desc.(Description),输入Numberofpacketsreceived,并保存。

7.单击OK。

创建状态执行:

1.双击init状态的上半部分,进入EnterExecutives。

2.要初始化pk_count和pk_cnt_stathandle,输入:

pk_count=0;

pk_cnt_stathandle=op_stat_reg("packetcount",

OPC_STAT_INDEX_NONE,OPC_STAT_LOCAL);

3.关闭,保存。

上面pk_count和pk_cnt_stathandle变量是你定义的状态变量,但op_stat_reg()函数是一个仿真内核程序(组)。

OPNET内包括了几百个内核函数可供调用。

每个状态下面的数字表示状态执行“Enter/Exit”操作的指令行数。

例如init状态开始是0/0,现在是3/0。

可以在空白处右击,选择显示/隐藏行计数。

对arrival状态的设置:

1.双击arrival状态的上半部分。

2.要增加数据包计数,输入:

++pk_count;

3.要丢弃得到的数据包,输入:

op_pk_destroy(op_pk_get(op_intrpt_strm()));

4.对数据包的统计记录,输入:

op_stat_write(pk_cnt_stathandle,pk_count);

5.保存,退出。

上面这些基本内核程序的调用,可参考Help>EssentialKernelProcedures。

很有用的!

KPs是KernelProcedures的缩写。

编辑进程接口:

1.选择Interfaces >Process Interfaces。

2.将begsimintrpt的InitialValue改为enabled。

(产生中断)

3.将endsimintrpt,failureintrpts,intrptinterval,recoveryintrpts,和superpriority的InitialValue设为disabled。

4.将priority的InitialValue设为0。

5.将所有参数的Status属性改为hidden。

6.保存,退出。

编译模型:

(每个进程模型在使用前都必须进行编译)

1.点击编译进程模型。

2.保存,命名为_packet_count。

3.关闭编译状态对话框。

4.关闭进程编辑器。

建立网络和节点模型

建立节点模型:

1.选择File>New...,然后选NodeModel,确定。

2.点击CreateProcessor,创建3个节点。

3.点击CreatePacketStream,建立如下连接:

4.右击p_0,EditAttributes,修改名字为src1,修改processmodel为simple_source。

确定。

5.右击p_1,EditAttributes,修改名字为count,修改processmodel为_packet_count。

确定。

6.右击p_2,EditAttributes,修改名字为src2,修改processmodel为simple_source。

在PacketInterarrivalTime属性栏的位置右击,选择Promote(提升)AttributetoHigherLevel。

确定。

1.选择Interfaces>NodeStatistics。

2.点击Orig.Name,选择count.packetcount,然后点Promote。

3.把Prom.Name改为nodepacketcount。

4.把Desc.改为Numberofpacketsreceivedatthenodelevel。

关闭窗口。

保存。

5.选择File>Save,命名为_packet_count。

(节点和进程的名字可以相同,但后缀名不同)。

6.关闭节点编辑器。

创建网络:

1.新建项目,项目名_packet_count,场景constant。

Quit。

2.打开对象面板,

,进入图标视图,点击ConfigurePalette...

3.点击clear,点击右边的NodeModels,设置_packet_count的Status为included。

保存为_packet_count。

4.放置_packet_count节点,关闭对象面板。

5.右击节点,选择ChooseIndividualDESStatistics。

下面将:

•创建一个包内的节点流量(动画>节点动画)动画。

•指定节点包计数统计收集(节点统计>节点的数据包数)。

•指定节点包计数统计动画(animation)。

6.选择Animations>NodeAnimation。

再选择NodeStatistics>nodepacketcount。

7.右击NodeStatistics>nodepacketcount,选择RecordStatisticAnimation。

确定,关闭窗口。

8.右击节点,EditAttributes,点击src2.PacketInterarrivalTime的value为promoted。

确保Distribution为constant,Meanoutcome为1.0。

确定,保存。

仿真配置:

1.选择DES>Configure/RunDiscreteEventSimulation...

2.设置:

◦Duration:

100seconds

◦Seed:

1471

◦Valuesperstatistic:

100

3.展开Outputs,Animation。

点击2D,再确保Sendanimationtohistoryfile被选中。

点击Apply。

再点Cancel,关闭Configure/RunDES对话框,不进行仿真。

下面新建一个场景进行对比:

1.选择Scenarios>DuplicateScenario...(复制场景)。

2.命名新场景exponential,点击OK。

3.右击节点,EditAttributes。

点击src2.PacketInterarrivalTime的value栏,打开对话框。

4.在Distributionname中选择exponential,确保Meanoutcome是1.0。

确定,确定。

保存项目_packet_count。

运行仿真:

1.在管理场景对话框中,可以同时运行两个仿真。

选择Edit>Preferences,确保NetworkSimulationRepositories是(),如果不是,就删除所有内容。

确定。

2.选择Scenarios>ManageScenarios...,把两个Results都改为

3.确定,运行仿真。

完成后,关闭DESExecutionManager。

分析结果:

1.在项目编辑器中查看结果,如果要切换场景的话,选择Scenarios>SwitchToScenario>exponential.

2.右击node_0,ViewResults,打开ResultsBrowser。

3.选择ObjectStatistics>node_0>nodepacketcount。

点Show。

4.在20s到1min之间,可以选择一个方框进行放大。

可以查看细节。

5.关闭图表,delete。

6.在ResultsBrowser中,在Resultsfor:

中找到CurrentProject。

7.要切换到constant场景,点击_packet_count>exponential,然后选择_packet_count>constant,显示ObjectStatistics >node_0 >node packet count。

可以放大查看。

8.在图表上右击,选择DrawStyle>Discrete。

显示离散图。

离散图形显示了仿真内核(SimulationKernel)每秒发送2个数据包,但分别计数。

该图也表明了仿真核基于事件运行的性质。

同时发生的事件(每秒钟到达多个包)造成仿真核提前了仿真时间一次,但调用packet_count两次。

而且,packet_count进程每次被调用时都递增一次数据包统计数。

9.关闭图表,delete。

关闭ResultsBrowser。

1.DES>Play2DAnimation。

2.要查看包的动画,Windows>AnimationViewer>top.node_0packetflow.

3.退出动画查看,File>Exit。

4.要查看constant场景的动画,先切换场景,Scenarios>SwitchtoScenario>constant,然后DES>Play2DAnimation。

5.退出动画查看器。

您现在已经完成了“BasicProcess”的学习。

你应该对通过创建用户进程模型来控制节点行为有一个很好的理解。

下一课学习分组交换PacketSwitching,探讨分组交换网络。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1