当前位置: 代码迷 >> 综合 >> 《opnet 杂记》
  详细解决方案

《opnet 杂记》

热度:99   发布时间:2023-12-12 10:53:01.0

新建项目之前,最好将目录设置好,否则新建的目录会出现在默认路径中,后面再弄就比较麻烦。
目录设置:edit->preferences->search for(op_models),就可以找到存放文件的地方了

《opnet 无线仿真总结》
如下图所示,使用两个无线节点实现通信
在这里插入图片描述
第一步
建立交换的包
建立进程模型
new Project 建立网络模型(千万不能 new network ,否则没有小人,就无法运行)
建立new project的时候,模型一定要有名字,没有名字很容易没有结果。

师兄所说的attitude好像没啥作用,等后面再进行尝试。

拿到新项目的时候,choose dividual DES 的统计量,再进行小人仿真

整个项目的流程:
新建一个包,让gen以每秒产生一个包,流向下一个process模块,process模块中要有idle和send的状态转化,当来一个包流时,触发中断,并完成(删除这个包,然后新建一个包,设置类型和 time_stamp,然后通过op_pk_send_delayed(packet,包流,延迟时间))等操作,该op_pk_send()发送应该指的是广播,具有收信机的接受方都可以接受。
接收方:配置receieve收信机与发信机的模式一模一样,process进程设计中,包括init状态,idle状态,以及处理状态。
因为接受方,需要收集一个包的数量,所以需要定义两个变量,一个是packet_num,以及一个stathandle 变量 total_packets,在使用stathandle变量total_packet时,需要在进程环境下的node interface中定义一个global static :Number of packet.
所以init需使用op_stat_reg(注册的全局变量,一维,全局);
在包到来的时候,使用op_stat_write(total_packets,packet_num)写进全局统计量中。

#define PK_ARRIVAL (op_intrpt_type() == OPC_INTRPT_STRM) //当进程接收到一个中断,可以通过op_intrpt_type()返回中断类型,OPC_INTRPT_STRM 为流中断

函数:

op_intrpt_strm();为返回的包流 
op_pk_get(包流);返回指向包的指针
op_pk_creation_time_get(包指针); 返回包创建的时间
op_sim_time();返回当前的仿真时间
op_stat_writre(统计句柄,统计时间);
op_pk_destroy(包指针);

统计量只有在declare 中声明之后,才会在收集时看到统计量。

天线模型:φ角 (0 ~180 ) 主干与 Z 轴之间的夹角,⊙角表示X,Y轴之间的夹角。

链路模型要指定是点到点还是总线,另外还要声明delay_link外文件头

统计结果的收集:
all values :所有的结果都会收集起来
sample:按照间隔每隔多少个时间,或者每隔多少个值取一个值
bucket :按照间隔每隔多少个时间,或者每隔多少个值取一个值,但取得是这个期间所收集的平均值,或者二次处理后的值
glitch removel :去除收集的值