3.2 树簇拓扑的形成及路径发现与维护
由于文章篇幅有限CONTROL ENGINEERING China版权所有,不能依次介绍方案中比较关键的应用层、硬件描述层、NWK层以及OSAL,以下着重描述NWK层的树簇拓扑的形成以及路径的发现与维护。
Z-Stack总共默认65 000个设备入网。为保证网络中每个节点的地址是唯一的,使用了分布式寻址方案,由父节点分配子节点地址。此种算法保证了控制端的数据包能够精确地发送到指定设备,子节点也只能有一个父节点,有助
MAX_DEPTH决定了网络的最大深度。协调器在最顶层,位于深度0;它的子节点位于深度1,依此类推。MAX_CHILDREN决定了一个路由器或者一个协调器可以处理的最大子节点个数。MAX_ROUTERS决定了一个路由器或者一个协调器可以连接的最大路由器的个数。这个参数是 MAX_CHILDREN的一个子集,终端设备使用(MAX_CHILDREN-MAX_ROUTERS)剩下的地址空间。图4为使用自定义栈配置后的网络拓扑和节点地址分配示意图。LAYER1最多20个节点,其中包含6个路由节点。
在网络初始化过程中,协调器先将自身设置为一个簇标识符为0的簇头,并向临近的设备以广播方式发送信标帧。接收到信标帧的设备(路由器或终端设备)向簇头请求加入网络,如果作为父节点的协调器允许该设备的加入,则将其作为子节点加入到它的邻居表中,同时,请求加入的设备将协调器作为父节点加入到邻居表中,成为从设备。已经加入网络的路由器也广播信标帧,以这种方式,直到所有设备都接入网络。在接入网络的同时,广播信标帧的父节点会向接人的子节点分配唯一的 16位网络短地址。图5是网络建立和节点入网流程。
终端设备没有路由功能。它需要将数据发送给它的父节点,父节点以它自己的名义执行路由。当路由器从应用层或子节点收到单点发送数据包时,NWK层会将其传递到下层。如果目标节点是相邻路由器中的一个,则数据包被直接发送;否则,路由器会检索它的路由表中与所要传送的数据包的目标地址相符合的记录。如果存在与目标地址相符合的路由记录,则数据包将被发往记录中的下一级地址;如果没有发现任何相关的路由记录,则路由器发起路径寻找,数据包存储在缓冲区中直到路径寻找结束。如果数据包沿着某条路由路径传送失败,这个路径就被认定是坏链,父节点将启动路径修复。节点发起重新发现直到下一次数据包到达该节点控制工程网版权所有,标志路径修复完成。如果不能够启动发现或者由于某种原因失败了控制工程网版权所有,节点则向数据包的源节点发送一个错误包(RERR),它将重新启动路径发现。
3.3上位机GUI设计
在GUI中将节点编号和其IEEE地址绑定,实现了对突发事件地点的报警和定位。采用数据库,分别将每个节点上传数据写入CONTROL ENGINEERING China版权所有,同时贴上时间标签。监控人员可以自由查看选定时段的仓库任意地点的状况,同时GUI将突发事件数据以列表方式单独抽取出来,以供查阅方便。在工作时间可以将人体红外传感器采集的数据屏蔽,避免误触发。
4.1 节点性能测试
通信距离测试:CC