1、STK卫星轨道导入
需要修改要插入的卫星轨道文件“xx.sa”,将文件中的EphemerisTimePosVel替换成EphemerisEcfTimePosVel,点击OPNET菜单Topology->Import STK Orbit…,之后选择要导入的卫星轨道文件“xx.sa”,轨道文件存在于原STK工程路径下。右击已经插入的卫星节点,点击Edit Attributes,在orbit的对应选项栏中选择之前导入进的卫星轨道。(向OPNET中导入STK轨道文件时,若不选中create a satellite node for each orbit则无节点插入,不会产生轨迹线。但只要每个节点设置过对应的轨道文件,有无轨迹线都可以。)(STK中导出星历文件记得选fixed)
2、无线收发机管道设置
无线收发机的管道分为14个管道阶段。OPNET为每对发射机和收信机都建立管道传输阶段,相对于每个收信机对,原始数据包都被复制了一次,由于包的复制是为每一对可能的收发信机之间建立管道阶段造成的,每个复制后的包需要经历13个管道阶段。
rxgroup model属性默认设为dra_rxgroup.ps.c对应的文件,用来设置收信机组,默认为所有的收信机都可以用来接收,可通过更改此属性(在dra_rxgroup.ps.c基础上修改出一个新的配置文件)来设置特定节点的收信机组。
无线发送机的closure model属性(判断链路封闭性)可设为NONE,在rxgroup model和txdel model对应的代码中设置通道属性。(传输信道分为点对点链路、总线式链路、无线链路,每种链路由若干标准的缺省的pipeline stage组成,用户可修改以适应所需信道模型。)
3、修改管道文件dra_rxgroup.ps.c
一直出现recoverable error:object repository construction failed.最后发现是因为pipeline stage(C code)文件名与函数名不一样,改为同名即可(或有些许不同,至少开始部分的名字要一样)。
且通道文件中,注意匹配的收发节点名字一定要一样,此次仿真多次出现大小写不一致问题。
4、 在进行卫星网络仿真时,节点模型中可以不设置antenna(跟波束有关),若设置了antenna,则节点模型中的RX Group Config必须要,否则接收包会出错。
5、若非强制状态用于中转,不要设自中断。(会非常乱!!!)
若设置的自中断没有对应的中断号,可能会添加一个事件,但没有任何事件处理。
6、统计量
op_stat_write的参数设置中第二个值可设为1,是计一个数的意思(即累加)。
7、路由
邻接矩阵:在进程的calc模块用函数获取每个网络节点的坐标,获得邻接关系矩阵;计算dijkstra.
转发表:封一个结构体(里面套一个结构体,包括通断性,下一跳)。
包:封源目的地址、跳数、路径(可用int型数组表示,用0-27对应所有的卫星节点,path域可以用结构体封一个int型数组,也可以定义一个指向int型数组的指针(尝试了使用int型指针指向一块sizeof(int)*MAX_HOPS的内存,每次收发包通过指针对此块内存进行操作,发现在泛洪包时,因为每次操作的是同一块内存,后面的操作会覆盖前面的操作,所以得到错误的路径,为解决此问题可以在每次处理收到的泛洪包之前再定义一块同样大小的内存,将包中的内容取出放到此内存中,再将此内存中操作过的数据放到包中,此种操作过于复杂,故仍采用将int型数组封到结构体中的做法,每次发送的包中携带完整路径))