1

4つのシリアル1モジュールでxBeeネットワークをセットアップしたいと思います。それらのいずれか2つは、双方向で相互に通信できます。送信されるデータは1バイト以外の文字列です。

私の元々の設計は、非ビーコン(コーディネーター付き)ネットワークをセットアップすることです。1つのモジュールがコーディネーターとして構成されています。左側の3つのモジュールは、エンドデバイスとして構成されています。コーディネーターは、エンドデバイスからデータをブロードキャストします。

通信ワークフローは次のとおりです。エンドデバイス1がエンドデバイス2にデータを送信する場合、最初にコーディネーターにデータを送信します。次に、コーディネータはエンドデバイス1から受信したデータをブロードキャストします。エンドデバイス2はブロードキャストデータを受信できます。通信ワークフローが終了します。

受信した文字列をアトミックにします。エンドデバイス1とエンドデバイス3が同時にデータを送信すると、競合が発生します。2つのストリングは一緒に結合されます。また、エンドデバイス2は、どのバイトがどのデバイスからのものであるかを区別できません。つまり、エンドデバイス1は文字列 "{AAAA}"を送信します(引用符は含まれません)。その間、エンドデバイス3は文字列「<2222>」を送信します。エンドデバイス2は、「{A <22AA2A2}>」のような文字列を受信する場合がありますが、これは私が望むものではありません。予想される文字列は「{AAAA}<2222>」または「<2222>{AAAA}」です。

要件を満たすようにネットワークを設定するにはどうすればよいですか?

4

1 に答える 1

2

DigiのXBeeモジュールを使用してアトミック伝送を実現するには2つの方法があります。この方法は、APIモード(APパラメーター> 0)が使用されているかどうかによって異なります。

APIモードが使用されていない場合(AP = 0)、RO時間をノードの1つから送信する最長の文字列の文字数よりも大きく設定することで、データのアトミック性を高めることができます。これにより、XBeeバッファーは、無線送信を開始する前に、指定された文字回数(特定のボーレートで文字を送信するのにかかる時間)待機します。注:このスキームを機能させるには、文字列全体を一度にラジオに送信する必要があります。

APIモードが使用されている場合(AP> 0)、必要な動作を簡単に取得できます。Txリクエストフレーム(APIフレームタイプ0x1)を使用して、送信する文字列データを指定するだけです。データは常にアトミックに送信されます。

受信ノード(この場合はコーディネーター)でAPIモードが使用されている場合、フレームデータは常にアトミックに到着します。

APIモードの使用方法の詳細については、Digi XBee 802.15.4製品サポートページを参照し、APIモードでDigiXBeeモジュールを簡単に使用できる多くのすばらしいXBeeライブラリをインターネットで検索してください。

于 2012-05-31T19:14:57.130 に答える