2022年OPNET入门学习教程 .pdf
《2022年OPNET入门学习教程 .pdf》由会员分享,可在线阅读,更多相关《2022年OPNET入门学习教程 .pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、OPNET 入门学习教程?创建进程和节点模型?定义变量,宏( Macros)和过渡?运行仿真?分析仿真结果概念:一个进程模型是一个有限状态机(finite state machine ,FSM ) ,它代表了一个模块的逻辑和行为。一个有限状态机定义了模型的状态和改变状态的标准。OPNET 采用增强的C/C+ 修改 FSM ,称为Proto-C (原始 C) 。使用Proto-C 的三种场合:1. Enter Executive 进入执行2.Exit Executive 退出执行3.Transition Executive 转移执行模型设计:1. 打开 OPNET ,选择 FileNew.,然后
2、通过下拉菜单选Process Model,单击“ OK ” 。2. 点击“Creat State” ,在工作区放置3 个状态。其中第一个状态会自动设为 initial state(带有箭头)。3. 右击 initial state ,选择“ Set name ” ,修改名称: init,确定。4. 其余 2 个状态分别命名为idle (空闲)和 arrival(到达) 。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 10 页 - - - - - - - - - OPNE
3、T 进程模型里,包括 非强制状态 (红色)和 强制状态 (绿色) 。非强制状态(红色) 是指状态执行完之后,将控制权返回给 Simulation Kernel 。强制状态(绿色)是指状态执行完之后,立即执行退出操作或者转移到其他状态,并不返回控制权。由于 arrival状态需要统计包数,并销毁数据包,然后回到空闲状态,因此, arrival状态应该是一个强制状态。另外,init 状态必须转移到 idle状态,因此它也应该是强制状态。1.右击 init 状态,选择 Make State Forced 。2.右击 arrival 状态,选择 Make State Forced 。创建状态转移:状态
4、转移分为 无条件转移 和条件转移(unconditional and conditional)。1.单击“Create Transition” 。2.先点 init state,后点 idle state。3.绘制曲线状态转移线, 先点 idle state ,然后在 idle和 arrival之间点一下,再点arrival state。右击完成绘制。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 10 页 - - - - - - - - - 4.在 idle和 arri
5、val之间的状态转移线上右击 (先选中,再右击) ,选择 Edit Attributes,在 condition的 value 中输入“ARRIVAL ”(一定要大写)。确定。这是就条件转移。5.点击 Create Transition,绘制从 arrival到 idle的转移。6.绘制从 idle到它自己的转移。右击完成绘制。7.右击 idle 到它自己的状态转移线,选择Edit Attributes。8.修改 condition的 value 为“default ” (小写) ,确定。下面定义 ARRIVAL 宏:1. 点击“ Edit Header Block” 。打开 edit pad
6、 。2. 输入:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 10 页 - - - - - - - - - #define ARRIVAL (op_intrpt_type () = OPC_INTRPT_STRM)3. 点击关闭,保存。下面声明两个变量:一个用于存储数据包计数,另一个用于“handle”局部统计分析数据包。1. 点击 Edit State Variables。2. 输入:Type Name Comments int pk_count Counts tot
7、al packets Stathandle pk_cnt_stathandle Statistic to record packet count 3. 点击 OK ,保存,关闭。统计量是用于后面的数据分析,在进程模型中是需要声明的。4. 选择 InterfaceLocal Statistics。5. 在 Stat Name 处输入 packet count 。后面自动设为 Single 和 N/A。6. 单击 Desc.(Description),输入 Number of packets received,并保存。7. 单击 OK 。创建状态执行:1. 双击 init状态的上半部分 ,进入 E
8、nter Executives。2. 要初始化 pk_count 和 pk_cnt_stathandle,输入:pk_count = 0; pk_cnt_stathandle = op_stat_reg (packet count, OPC_STAT_INDEX_NONE, OPC_STAT_LOCAL); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 10 页 - - - - - - - - - 3. 关闭,保存。上面 pk_count和 pk_cnt_stathan
9、dle变量是你定义的状态变量,但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
10、 (pk_cnt_stathandle, pk_count); 5. 保存,退出。上 面 这 些 基 本 内 核 程 序 的 调 用 , 可 参 考Help Essential Kernel Procedures 。很有用的! KPs 是 Kernel Procedures的缩写。编辑进程接口:1. 选择 Interfaces Process Interfaces。2. 将 begsim intrpt的 Initial Value改为 enabled 。 (产生中断)3. 将 endsim intrpt, failure intrpts, intrpt interval, recovery i
11、ntrpts, 和 super priority的 Initial Value设为 disabled 。4. 将 priority的 Initial Value设为 0。5. 将所有参数的 Status 属性改为 hidden 。6. 保存,退出。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 10 页 - - - - - - - - - 编译模型 : (每个进程模型在使用前都必须进行编译)1. 点击编译进程模型。2. 保存,命名为 _packet_count。3. 关闭
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年OPNET入门学习教程 2022 OPNET 入门 学习 教程
限制150内