gpt4 book ai didi

c - 大型网络中的 XBee 通信

转载 作者:太空狗 更新时间:2023-10-29 17:24:54 24 4
gpt4 key购买 nike

这是我的情况:

我有一个由 96 个 XBee S2B 和 S2C 模块组成的网络。我的应用程序在 ARM 模块上运行并具有 XBee S2C 模块。所有模块(总共 97 个)都在同一个网络中,并且能够相互通信。

软件启动并知道所有模块的 64 位地址。它将进行网络发现(本地 AT -> ND)并等待响应。每个响应都会更新每个模块的 16 位地址。如果一个模块没有响应网络发现,它会每 30 秒再次发送(在大多数测试中,60 秒后,所有节点都被发现。

然后,在存储所有 64 位和 16 位地址后,应用程序将使用单播向每个节点发送消息。它不会在发送消息之间等待。我用 36、42、78 和现在的 96 个节点进行了尝试。对于 36 个节点,每个节点在 3 秒内收到消息(如预期),对于 42 和 78 个节点,到达每个节点分别需要 4 秒和 7 秒。然而,对于 96,它需要 90 秒(至少)。

没有我可以检测到的外部干扰,所有节点都在可达范围内(否则,网络发现将失败)。

我也尝试过使用 64 位消息传递并忽略 16 位地址,使用这种方法需要更长的时间。

我正在使用 attie ( https://github.com/attie/libxbee3 ) 制作的 xbee3library。

我的问题是:如何加快 96 个节点的通信时间(请记住,目标是能够处理更大的网络)以及为什么 78 和 96 个节点之间存在如此大的差异(为什么网络突然变慢了?)

如果需要有关我的情况的更多信息,我将很乐意提供。当我管理代码时,如果您需要更多信息,我可以执行测试。

最佳答案

首先,获取 802.15.4 嗅探器并开始查看流量以了解发生了什么。否则,您将无法猜测可能会发生什么。我已经多年没有使用 802.15.4,但在 Ember Desktop 之外(只能从 Silicon Labs 以昂贵的开发工具包获得)我对 Ubiqua Protocol Analyzer 感到满意.您可能还想探索哪里 Wireshark's 802.15.4 sniffing能力立场。

其次,尝试实现代码以在发送下一条消息之前等待传输状态消息。更好的是,编写代码来跟踪多条未完成的消息并使用各种设置对其进行测试——1 条消息等待传输状态与 5 条未完成消息相比,网络表现如何?

我的猜测是,您遇到了 XBee 模块管理那么多节点的路由表的挑战。 Digi 为 working with large XBee networks 提供文档,其中解释了如何在大型网络上使用源路由。您的中央节点可能需要维护路由表并在出站消息中指定路由以提高网络吞吐量。

关于c - 大型网络中的 XBee 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40594666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com