如何在不丢失数据的情况下让多个节点与协调器进行通信?
当更多数量的XBee节点同时向同一个XBee协调器发送数据时,是否会出现拥塞问题?据我所知,这是肯定的。
在这种情况下,我该如何避免这种拥堵?此外,我希望系统实时工作。所以不应该有任何延迟。
我遇到了Stack Overflow问题 XBee - XBee-API and multiple endpoints 。我处理类似的问题。
这是如何解决的?
答案 0 :(得分:2)
当您在网络上添加设备时,避免拥塞的唯一方法是减少传输速度。
如果查看XBee文档,大多数模块都有一个“传输状态”框架,主机在邮件成功传递(或由于错误而放弃)后会收到该框架。我相信成功响应是由网络上的MAC级别的ACK触发的。
如果您的节点上有智能主机,他们可以通过在发送下一帧之前等待ACK来调整其发送频率,甚至可以使用发送状态帧中的重试计数器在发送之前设置延迟。
虽然802.15.4协议以250 kbit / s的速率发送数据,但是报头的开销,跨网状网络的消息中继以及处理冲突会使其降低到大约100 kbit / s的可用带宽。尝试最大化设备的有效负载,以提高数据与报头的比率。每五秒在一个帧中发送五个数据优于每秒一帧中的一个数据。
您需要发送多少数据,您对“实时”的定义是什么?延迟10毫秒是否可以接受? 100毫秒怎么样? 500毫秒?有多少设备会同时发送?他们多久发一次?
所有这些问题都将反映在您的设计中,您可能会发现802.15.4不适合您需要做的事情。
答案 1 :(得分:0)
我已经设置了15个系列的2个XBee.Node将有多个传感器,如Light,motion等.XBee放在Fio板上,每3分钟发送一次数据。 节点将处于AT模式和API模式下的协调器。节点通过少量路由器XBee(AT模式)。协调员收集数据(连接到R'pi)并将数据上传到服务器。 它不是网状网络,Xbee不会睡觉。 所以,我没有遇到任何拥堵问题。
希望这有帮助。