OPNET入门学习教程二Basic ProessWord文档格式.docx
- 文档编号:20879490
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:7
- 大小:74.22KB
OPNET入门学习教程二Basic ProessWord文档格式.docx
《OPNET入门学习教程二Basic ProessWord文档格式.docx》由会员分享,可在线阅读,更多相关《OPNET入门学习教程二Basic ProessWord文档格式.docx(7页珍藏版)》请在冰豆网上搜索。
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。
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.保存,命名为<
initial>
_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为<
initials>
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,命名为<
(节点和进程的名字可以相同,但后缀名不同)。
6.关闭节点编辑器。
创建网络:
1.新建项目,项目名<
_packet_count,场景constant。
Quit。
2.打开对象面板,
,进入图标视图,点击ConfigurePalette...
3.点击clear,点击右边的NodeModels,设置<
_packet_count的Status为included。
保存为<
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。
确定,确定。
保存项目<
运行仿真:
1.在管理场景对话框中,可以同时运行两个仿真。
选择Edit>
Preferences,确保NetworkSimulationRepositories是(),如果不是,就删除所有内容。
2.选择Scenarios>
ManageScenarios...,把两个Results都改为<
collect>
。
3.确定,运行仿真。
完成后,关闭DESExecutionManager。
分析结果:
1.在项目编辑器中查看结果,如果要切换场景的话,选择Scenarios>
SwitchToScenario>
exponential.
2.右击node_0,ViewResults,打开ResultsBrowser。
3.选择ObjectStatistics>
node_0>
点Show。
4.在20s到1min之间,可以选择一个方框进行放大。
可以查看细节。
5.关闭图表,delete。
6.在ResultsBrowser中,在Resultsfor:
中找到CurrentProject。
7.要切换到constant场景,点击<
_packet_count>
exponential,然后选择<
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>
5.退出动画查看器。
您现在已经完成了“BasicProcess”的学习。
你应该对通过创建用户进程模型来控制节点行为有一个很好的理解。
下一课学习分组交换PacketSwitching,探讨分组交换网络。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OPNET入门学习教程二Basic Proess OPNET 入门 学习 教程 Basic