Other Parts Discussed in Thread: Z-STACK
问题描述:建立一个mesh网络,网络中只存在协调器和路由器节点,并不存在Endevice终端节点。整个网络大概存在20多个路由节点,一个协调器。
路由器节点和协调器都加入和NV存储,所以路由节点掉电后在上电shortaddr地址不发生变化。
路由节点初始上电的时候会告诉协调器节点自己的网络地址,协调器建立一个地址表存储各个节点的短地址信息,以便单播方式通信。
协调器节点收到串口数据进行解析,通过解析数据包中的路由节点地址信息然后在本身存储的地址表中查找到该路由节点的短地址,采用单播的方式 Addr16bit发送数据包给对应的路由节点。
1,出现的情况:协调器节点收到多个数据包进行解析,然后发送数据给对应的路由节点。比如现在需要控制1,2,3,4号路由节点,协调器收到控制这四个节点的数据包,然后顺序解析,发送1号节点的控制包,紧接着接发送2号节点,然后是3号和4号,并没有等到节点应答后再去发送数据包(采用的是AF_DISCV_ROUTE方式,而不是AF_ACK_REQUEST 方式。),
2,但是发送四个数据包,4个路由节点只有3号节点收到了数据包。好像单播传输的时候出现了数据拥堵的情况。
3,单播方式连续发送多个数据包的时候后面的会不会把前面的覆盖掉呢,每个数据包基本上是50-60个字节长度。
4,如果协调器通过串口不是一下子拿到1,2,3,4号节点的控制包,而是先拿到1号,然后是2号,再者是3号,最后是4号,就没有任何问题,不会出现数据拥堵。
5,请问该怎么解决这个问题呢?(修改一些宏配置,可以解决吗?)
6,好像感觉协调器连续发送数据会出现拥堵的情况。
7,我在协调器发送每个数据包之后增加延时函数,还是没有任何效果,路由节点还是只有部分受到,出现丢包的问题。
请TI的技术工程师和技术大牛们指点下,谢谢!考虑了好久一直没有找到根本的原因。
谢谢!