基于国产CPU的嵌入式医疗电子无线网络设计(一)
ST 和SS 从零开始计数,节点每发送一次数据( 包括重传) ,近期发送数据包总数ST 就会加1,而近期发送数据包成功数SS 则是每成功发送一次数据就加1.这两个值会在RTIMER 定时器到期之时更新完长期发送数据包总数LT 和长期发送数据包成功数LS 之后清零。长期发送数据包总数LT 和长期发送数据包成功数LS 在RTIMER 定时器到期之时更新,更新的规则是将当前长期发送数据包总数LT 加上近期发送数据包总数ST 作为新的长期发送数据包总数LT,将长期发送数据包成功数LS加上近期发送数据包成功数SS 作为新的长期发送数据包成功数LS,如果此时长期发送数据包总数LT 大于0XF000,那么将长期发送数据包总数LT 和长期发送数据包成功数LS 右移一位。这样做有两个好处:
( 1) 避免长期发送数据包总数LT 和长期发送数据包成功数LS 无限增大到无法存储。
( 2) 离当前时间越远的统计值对计算链路代价的影响越小,符合自然规律。
本地链路代价的计算公式如下:
节点会在收到邻居节点的路由广播包和RTIMER定时器到期的时候更新路由表链路代价信息。
2. 2 网络节点的加入
当节点1 要加入网络中时首先要发送一个路由请求包,申请加入无线网络。控制器接收到这个请求之后,向节点1 发送一个路由广播包。节点1 接收到该路由广播包之后,将网络地址前缀加上自己的节点ID 组成自己的网络地址,并且将控制器加入自己的路由表。此时节点1 的默认路由是控制器。
同时,节点1 会立即启动TTIMER 和RTIMER 两个定时器,当TTIMER 到期时,节点1 就会向控制器发送路由汇报包,控制器收到该包及时更新网络拓扑。
而控制器的RTIMER 到期之时,也会给节点1 发送路由广播,节点1 立即更新路由表。
网络运行的过程中,有新的节点要加入这个网络,且该节点能够直接同控制器通信,此时的情况比第一个节点加入网络的情况复杂些。节点2 启动时,首先发送一个路由请求包,控制器和节点1 接收到该包后会先后发送路由广播包,节点2 收到这些包之后修改自己的网络地址,并且将控制器和节点1 都加入自己的路由表中。当RTIMER 定时器到期时,会发送路由汇报包给控制器,经过一段时间稳定之后,路由汇报包的内容应该包括节点1 和控制器。
之后节点1 的RTIMER 定时器到期,发送路由广播包,控制器和节点2 都能收到,节点2 更新其路由表,节点2 的RTIMER 定时器到期也会发送路由广播包,此时节点1 将节点2 加入自己的路由表。
如果新加入的节点无法直接同控制器通信,即节点1 已经存在于网络中,节点2 无法同控制器通信。节点2 启动的时候也会发送路由请求包,这个包只有节点1 可以收到,于是节点1 给节点2 回复一个路由广播包,节点2 和控制器都可以收到。节点2 收到这个包之后,会设置好自己的网络地址,同时将节点1 加入自己的路由表中。此时节点2 的路由表只有节点1 这一项,因此节点2 的默认路由是节点1.节点2 的TTIMER 定时器到期时会向默认路由,即节点1 发送路由汇报包,节点1 收到路由汇报包之后将其转发给控制器。节点1 的RTIMER 定时器到期,发送路由广播包,节点2 更新其路由表。
节点2 的RTIMER 定时器到期之时发送路由广播包,节点1 接收到该包之时更新路由表。
2. 3 网络的维护与更新
网络运行过程中,信道都是随时变化的。为了使整个网络工作正常,必须要及时更新网络参数。

评论