OPNET学习笔记

      这学期开始学OPNET,之前图书馆借了几本书看;也在网上下载了陈敏的那本OPNET网络仿真的电子书,大家好像比较推荐这本。这星期基本不看那些中文的书了,发现OPNET自带help里的文档写的非常详细,尤其是刚开始的Tutorials里的那些例子应该认真学学,很多中文图书也有这些例子,当然是自带的help讲解的清楚!


   今天开始做第二个例子,basic processes,看到了几个我以前疑惑或者不清楚的方面的解释,摘抄下来:


      Transition―A change of state in response to an event.

      You can use an FSM to control module behavior because you can attach fragments of

C/C++ code to states and transitions.    

   

     Simulations are made up of events. Process models respond to events and can schedule

new ones.


      When an event occurs that affects a module, the Simulation Kernel passes control to

the module's process model via an interrupt. The process model responds to the event,

changing state and executing related code, and then returns control to the Simulation

Kernel (invocation 1).   -个人觉得这句话非常重要


      Give each state a unique name that describes its function.  -这句话意义不大,但个人觉得这是给状态命名时基本的命名规则在很多其他领域一样如此


      An unforced (red) state is one that returns control of the simulation to the Simulation

Kernel after executing its enter executives. A forced (green) state is one that does not

return control, but instead immediately executes the exit executives and transitions to another state. -对强制状态和非强制状态的解释,其实很简单,很多中文书上都有,但是觉得英语表述的特别准确.........


      There are two types of transitions, unconditional (a solid line) and conditional. When a

transitionis conditional, the transition must evaluate to true before control passes from the

source state to the destination state.    -控制权的转移..


   You may be wondering why you included a transition from idle back to itself and

named that transition default. As the simulation executes, the Simulation Kernel manages

a list of events to take place. As each event reaches the top (or head) of that list, it becomes

an interrupt. Interrupts are often delivered to specific modules, and this occurrence is what

activates the module's process model.

     When the process model you are building is in the idle state, it transitions to the

arrival state if the ARRIVAL condition is true. Shortly, you will define ARRIVAL to evaluate

to true if the interrupt delivered to the module is a packet arrival interrupt.If it is a different

type of interrupt, however, there must be a transition that the process model can follow. The

default transition handles these different interrupt types.


     In Proto-C, macros often replace more complicated expressions in transition conditions

and executives. The use of macros saves space and simplifies the task of interpreting an FSM diagram.




      #define ARRIVAL (op_intrpt_type () == OPC_INTRPT_STRM)

     The ARRIVAL condition defined above tests if the current interrupt (which caused the

FSM to awaken and execute) occurred due to an arriving packet. It compares the value

returned by the Kernel Procedure op_intrpt_type() with the constant of OPC_INTRPT_STRM.

If  the comparison evaluates to true, this indicates that the interrupt is due to a packet

arrivingon an input stream.


     You can declare variables in three places. Variables declared in the temporary variable block do not retain their values between invocations of the FSM. Variables declared in the

state variables block retain their values from invocation to invocation. Variables declared

inside a state's executive are only defined while that executive is executed.


     Statistics save values of interest for later analysis. When creating a statistic, you must

declare that statistic in the process model that records it.


你可能感兴趣的:(OPNET,进程域)