• 欢迎访问伊栖物联网社区,聚焦物联网技术和解决方案QQ群:735553309
  • ,从传感器到片上嵌入式系统,无线接入,边缘计算,在这里您可以讨论一切
  • 参加最新的物联网研讨会报名
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏伊栖Eccee

在ZigBee mesh网络中创造跳点并测试路径失效时的包

无线 peyoot 3年前 (2021-03-23) 1392次浏览 0个评论

一、创建一个跳点

使用一个XBee3 ZB模块作为协调器,另一个XBee3模块作为路由器加入该网络,将其增益参数PL配置为最低,这样在办公室内拉开足够远的距离,它们将通信不上。此时放置一个没调小功率的模块在两者之间并加入之前的网络,它将桥接起之间通信不上的模块,也就是创建好一个跳点了。

二、测试完整经跳点的通信

为了方便测试和观察结果,用API模式通信,将模块的AP,AO均设置为1。通常用两台在不同办公室的电脑,按上面方法创建经跳点的通讯,为了能观察切换跳点,我们中间用两个模块。通过用NI给模块命名的方法设置协调器为A,末端跳点为D,中间两个模块为B,C,以此来区分模块。每台电脑开两个console口观察串口输出。

为了清除之前测试的影响,通常我们需要更换网络,如果之前四个模块已经在一个网络了,我们可以在协调器上发ATNR以创建一个新的网络,在路由器上发ATNR1。入网时协调器会收到Cluster为0013的入网通知,我们可以根据这些包来记录一下短地址表:

首先记录一下短地址表,下面括号内代表16位的短地址:

A:0

B:…(405A)

C:… (76B1)

D:… E453 (5489)

在协调器发送ATAR0,从协调器产生一个MTO广播包(0xA3帧),此时每个模块都能收到这个包,我们再发个D2A的包。此时协调器会收到一个RRI路径指示包(0xA1),显示D发到A经过的跳点信息,在XCTU可以查看该路径信息,注意在XCTU中的帧解析工具中,Address1是最靠近目标节点的跳点,其跳跃方向如下图箭头所示。

将C断电,然后再发D2A,此时原路径以失效,在发送时触发路径变化的MTO被B,D收到,同时A收到RRI更新显示只经过B跳点,并且该包也发成功了,可见路径自愈确实生效了。

将C重新上电,把B断电,发ATAR00来生成MTO,此时发A2D,由于没有用0x21帧安装source routing,所以发不通,失败原因是“Address Not Found”。但此时C,D能收到此次发送尝试的MTO。此时D发送D2A,则A能收到新的RRI (只经过C点)。

以上说明了,在路径变化时,相关的节点会自动收到更新的MTO,MTO并不仅仅在AR设定的周期定时产生。在DO=40时,收到MTO后首次发数据会产生RRI。

记录一下此时的RRI (C跳点),把它用到0x21上,以完成真正的source routing发送,这样是可以发通的。但0x11发送帧究竟是用source routing的路由表发送的呢,还是用本来的模块内置的next hop路由表发送?我们可以在路径失效时用指定的路径发送来验证。比如上面在A--C--D可用,我们此时把C断电,B上电,让路径变成A--B--D,先发D2A,再发A2D,此时A的路由表中到D的Next Hop是B, 此时再把B断电而C上电,此时只发A2D是发不通的(Address Not Found),可先用0x21建立A–C–D路径,再发0x11,这样发成功了,并且同时也收到RRI的更新,就是Source routing起作用。

事实上,当路径变动时,如果D上发数据给A,那么A即使用失效的0x21创建source routing,再发送A2D,也是能发通的,此时实际上并没有用Source Routing,而是原有的路由表寻址方式。如果D一直没有上发给A,那么A是无法使用原有的路由表寻址的,有两种方法可以在D未上报数据时,使A可以用上传统路由表作为备用路径。一个是用ARFF来激活一下传统路由表,再把AR改回原来的小于FF的值。另一种是用0x21安装一个跳点为0的source routing,这样也是能直接发通的。

由于RRI更新在DO=40时,仅收到MTO后首次发送发有RRI更新,有时下面节点上传数据并不频繁,而协调器又急需同下面节点通信,该如何处理呢?

一般在Source Routing模式下,有几种方法可以主动获取RRI更新。最常用的是用ATDN命令来主动获取RRI更新,该命令会用到模块的NI参数,只有NI值和DN的参数匹配的模块,才会返回RRI更新。因此一般建议部署时为每个节点命令一个独一无二的NI,并生成NI,MAC,短地址这三元素的表。如果您没有在程序部署时使用独一无二的NI,那么对于较大的网络,可以把节点分组,同一个组用一个NI,以减少不必要的RRI更新处理。在本例中,程序上如果D一直没上报数据,而A又一定要和D通讯上,可以在多次失败后安装一个目标地址正确但跳点为0的0x21包,再尝试发送。

结论:

付费查看内容

已有1人支付

 


ECCEE版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:在ZigBee mesh网络中创造跳点并测试路径失效时的包
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址