状态变量:可以在进程唤起的过程中保持原来的值 ,类似于函数里的静态变量,也可在函数调用的过程中保持原来的值
临时变量:在进程唤起的过程中不再保持原来的值 。
头 区: 用于定义数据结构、宏、常量、声明函数等,头区中定义的函数、变量什么的,只适用于本进程模型。
(-- 王文博《OPNET MODELER 与网络仿真》)
定时触发:定义一个宏作为转移条件 #dene MOVE (op_intrpt_type() == OPC_INTRPT_REGULAR)
并把 PROCESS INTERFACEs 里的 intrpt interval 弄成 promoted(仿真时从高层改动)或直接 EDIT PROPERTIES 中赋
予它一个定值。
(这个是自己弄的,不知道这样对不对)
/************************************************************************************************/
/*自己写的一个函数,在 FB 里,当有上行帧到达时,执行这个函数:*/
static void us_frm_arvl(void)
{
Packet *pkptr;
double pk_delay; //包延时
FIN(us_frm_arvl())
pkptr = op_pk_get(op_intrpt_strm());
op_pk_nfd_get(pkptr, "onu_ID_from", &source_ID); //从自定义的包中读取源 ID 号"oun_ID_from"到变量 source_ID(在 HB 中定
义)中
//若源 ID 号在正常范围内,则开始读取包中的数据至变量中。
if(source_ID < N)
{
op_pk_nfd_get(pkptr, "bwr_1", &bwr_1);//将包中"bwr_1"读出,赋给在 HB 中定义的变量 bwr_1(表示该 onu 中第一种类型带
宽的申请量)
op_pk_nfd_get(pkptr, "bwr_2", &bwr_2);
op_pk_nfd_get(pkptr, "bwr_3", &bwr_3);
op_pk_nfd_get(pkptr, "bwr_4", &bwr_4);
op_pk_nfd_get(pkptr, "bwr_5", &bwr_5);
bwr_table[source_ID][0] += bwr_1; //将该 onu 中第 1 类带宽的申请量计入带宽申请表中
bwr_table[source_ID][1] += bwr_2;
bwr_table[source_ID][2] += bwr_3;
bwr_table[source_ID][3] += bwr_4;
bwr_table[source_ID][4] += bwr_5;
pk_delay = op_sim_time() - op_pk_creation_time_get(pkptr);
op_stat_write(us_delay, pk_delay);// us_delay 是一个统计变量,在 SB 中定义,计算上行包延时
}
评论2