4

いくつかのArduinoモジュール(またはマイクロコントローラー、Arduinoは必須ではありません)でいくつかのXBeeZigbeeを使用しています。XBeesをAT/透過モードで構成しました。

情報をブロードキャストする必要があります。1つのモジュールに触れると、他のすべてのモジュールが同時にかつ即座に反応する必要があります。

残念ながら、ユニキャストモードで速度が良好な場合、ブロードキャストモードでは多くの遅延が発生します。これは既知で文書化されているものです。XBeeZigBeeアドレス指定を参照してください。

データが失われることはありませんが、XBeeによって数秒間バッファリングされてから、再送信されるか、Arduinoに配信されることがあります。

これは構成の問題ではなく、ブロードキャストプロトコルの動作方法のようです。プロセスをどのようにスピードアップできるかについてのアイデアはありますか?

私が持っている唯一の方法は、APIモードを使用して、各ArduinoにXBeeアドレスのリストを保持させ、これらのアドレスのリストに情報をユニキャストすることです...しかし、ブロードキャスト方法の快適さを失い、できませんすべてのArduinoを更新せずに、新しいモジュールを簡単に追加できます。

4

2 に答える 2

9

XBee ZB モジュールでブロードキャスト アドレッシングを使用してデータを送信すると、一般に、通信したい各ノードに個別のユニキャストを送信するよりもはるかにパフォーマンスが低下します。これは、XBee ZB モジュールと XBee 802.15.4 モジュールでのブロードキャストの動作が大きく異なるためです。

XBee 802.15.4 モジュールでブロードキャストを送信すると、単一の 802.15.4 フレームがネットワークに送信され、送信を聞くことができるすべてのノードがそれを受信して​​、シリアル UART から情報を送信します。802.15.4 ネットワークは単純なスター ネットワークであり、ネットワーク上のどのノードによってもブロードキャストが暗黙的に繰り返されることはありません。XBee ZB では、これが異なります。XBee ZB モジュールはメッシュ トポロジで動作しており、元の送信の範囲外にある他のノードに情報を繰り返す必要があります。

XBee ZB モジュールでブロードキャストを送信すると、ブロードキャストを受信した各ノードはブロードキャストを 3 回再ブロードキャストするため、ノード間で大量のデータが送信されます。さらに、特定の時間にネットワーク上で「ライブ」であるブロードキャストは、一定数しか存在できません。これは、実際には XBee が送信要求を拒否しているのに、ネットワークがデータをドロップしていると人々を驚かせることがよくあります。

データを送信する頻度が非常に低い場合 (たとえば、1 分に 1 回またはそれよりも遅いブロードキャスト) でない限り、多くの場合、次の手順に従うことをお勧めします。

  1. ネットワーク ディスカバリを実行するか、AR 機能を有効にしてルート レコード パケットを収集して、すべてのノードのリストを作成します。
  2. 送信先の各ノードにユニキャストを送信します

大規模な ZB ネットワーク (つまり 30 を超えるメモ) 上のノードに情報を送信している場合は、次の記事を読むことをお勧めします:大規模なネットワークとソース ルーティング

于 2012-04-01T18:49:41.133 に答える
2

一部のモジュールのみがメッセージを受信する必要がある場合を除き、これ以上最適化できるとは思いません。この場合、ブロードキャストの代わりにマルチキャスト( Xbee 2 でのみ使用可能) を使用できます。これにより、ネットワークが十分に大きくなったとき (16 ノードを超える、つまり基本ルーティング テーブル)。

ユニキャスト、マルチキャスト、ブロードキャストを比較してみましたか? 特に特定のネットワーク (例: 8 ホップの 12 ノード ネットワーク) に多くのホップがある場合は、12 のユニキャストを作成する方が平均して高速であるか、少なくとも信頼性が高い可能性があります。

ユニキャストを使用すると、確認または ack を取得できるため、操作の全体的な時間と成功、および再試行が必要かどうかを知ることができます。

于 2012-03-31T00:13:40.253 に答える