OPNET入门2-Basic Process

本文档详细介绍了如何使用OPNET Modeler设计和实现基本流程模型。首先,介绍了流程模型作为有限状态机的角色,以及如何定义状态转换。接着,通过一个包计数器模型实例,演示了创建状态、定义条件和变量、编写执行代码、编辑流程接口以及编译模型的过程。此外,还展示了如何在节点和网络模型中应用该流程模型,包括创建节点模型、设置统计信息和动画,并运行及分析仿真结果。
摘要由CSDN通过智能技术生成

1. 流程概述

在项目编辑器中,网络模型由单个节点组成,节点由模块组成。流程模型定义了模块的行为。通过理解流程模型,您可以构建模块,并将它们组合成符合您的具体规范的节点。如下所示:
在这里插入图片描述
流程模型是一个有限状态机(finite state machine-FSM)。它表示模块的逻辑和行为。FSM定义了模块的状态以及改变状态的标准。而且我们可以通过编写程序来定义状态以及状态之间的转换,这钟由特定于opnet的函数扩展的代码称为Proto-C,主要使用在三种场合:

  • 进入执行(Enter Executes):当模块进入某个状态时执行的代码(双击状态的上部分);
  • 退出执行(Exit Executes):当模块离开某个状态时执行的代码(双击状态的下部分);
  • 转换执行:响应特定事件而执行的代码。
    在这里插入图片描述

当流程模型进入某个状态时,它执行Enter executives,然后,如果状态是非强制的(红色),流程模型停止执行并将控制权返回给模拟。

2. 模型设计

2.1 概述

我们要设计当数据包到达模块时,流程模型必须增加一个计数器,然后释放数据包。因此,模块主要有两种状态:待包裹的到来包裹到达后处理。我们还需要将适当的变量设置为零的初始化状态。
因此我们要构建的包计数流程模型将包含三种状态:

  • 初始化状态
  • 空闲状态
  • 到达状态。

包计数模型包含三个转换:

  • 初始化到空闲
  • 空闲到到达
  • 到达到空闲
    有限状态机

流程模型第一次被调用时(在本例中是在模拟开始时),它从初始化状态开始。初始化(将包计数器变量设置为0)之后,流程模型转换到空闲状态,并等待第一个包到达。流程模型再次被激活后,数据包到达时转换到到达状态,并增加包计数器变量并销毁包。

2.2 实现

2.2.1 实现流程模型

2.2.1.1 创建状态转换
  1. 打开OPNET Modeler,选择File→New…,在下拉菜单选择Process Model,点击OK;

  2. 单击Create State工具按钮,并在工作区中放置三个状态,如图所示:Create State在这里插入图片描述
    注意:创建好三个状态后,鼠标右键单击空白处结束创建;
    注意:创建的第一个状态自动是初始状态,这里用一个加粗的箭头表示。

  3. 给每个状态一个唯一的名称来描述其功能。
    初始化状态将使用名称init,空闲状态将使用名称idle,到达状态将使用名称arrival(右键单击状态,并从下拉框中选择Set Name,然后分别键入新名称,单击OK即可);

  4. 改变强制或者非强制状态
    右键单击init状态并选择Make state Unforced,将其更改为强制状态,init状态变成了绿色。对到达状态执行同样的操作,使其变成强制状态。
    此时流程模型中有两种状态是强制状态:init状态是强制的,因为它可以在初始化变量之后直接进入空闲状态;arrival状态是强制的,因为在计数和销毁每个数据包之后,进程模型应该返回到空闲状态。
    注意:非强制(红色)状态是在执行了输入执行器之后,将模拟的控制权返回给模拟内核的状态。强制(绿色)状态是指不返回控制权,而是立即执行Exit Executes并转换到另一种状态的状态。
    默认情况下,新创建的状态是非强制的,在执行Enter Executives之后,流程模型阻塞(即执行Exit Executes并将控制权返回给模拟内核)。下一次调用流程模型时,执行将从上次阻塞的状态再次开始。

  5. 创建状态转换
    点击Create Transition按钮,左键点击init状态,然后点击idle状态,此时形成了一条直箭头,再次点击idle状态,然后在idle和arrival直接的空白处点击一下,接着再点击arrival,此时形成了一条曲箭头。
    右键点击曲箭头,选择Edit Attributes,然后将条件属性(condition)的值键入ARRIVAL(一定要用大写字母),然后单击OK:
    在这里插入图片描述在这里插入图片描述自行完成下图状态转换:
    在这里插入图片描述您可能想知道为什么要包含一个从空闲到自身的转换࿰

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值