XBeeモジュールの使い方(Throughputその2)


 前回の記事に引き続きThroughputについて補足の解説をします。前回の設定ではファームウェアを802.15.4に設定しペアリングがなされているXBeeに対して以下の設定をしました。

・ローカルXBee: APIモード(AP=1)

・リモートXBee: Transparentモード(AP=0)

以下にこの場合のローカルXBeeのThroughputテストのダイアログを示します。

Select the local radio deviceの欄に選択されているデバイスのファームウェアが802.15.4であり、API1であることが表示されています。

Throughput typeをBidi-Loopbackに設定し、Configure payload…をクリックします。

このプロトコル(APIモード)ではPayload sizeが最大で100バイトであることが示されています。Random payloadでも100バイト以上の数値に設定することはできません。

そこで、Throughputのダイアログを閉じて以下の設定に変更しました。

・ローカルXBee: APIモード(AP=0)

・リモートXBee: Transparentモード(AP=0)

この設定後にローカルXBeeのThroughputテストのダイアログを確認します。

Select the local radio deviceの欄に選択されているデバイスのファームウェアが802.15.4であり、ATになっています。

Throughput typeをBidi-Loopbackに設定し、Configure payload…をクリックします。

APIモードとは異なりATモードではPayload sizeがデフォルトで1000バイトに設定されています。このRandom payloadのバイト数は1000バイト以上の数値に設定することも可能です。今回はデフォルトの1000バイトのまま設定しておきます。

この状態でStart throughputボタンをクリックして得られた結果を以下に示します。 右下に送信パケット数が8、送信バイト数が8000と表示されていることを確認できます。

 前回の記事と今回の記事のここまでのThroughputテストではBaud Rateを9600に設定していました。そこで、ATモードでPayload sizeを1000バイトの場合に、Baud Rateを115200に変更した結果を最後に示します。

 Baud Rateが12倍になりましたが、Bidi-Loopback による往復のため理論的には6倍向上することが予想されます。Baud Rateを9600の場合のアベレージが5.99kbpsであり115200の場合が34.22kbpsであるので約5.7倍のThroughput向上であり理にかなった結果が得られています。

【Throughputテストで送信パケットサイズがTransparentモード(AP=0)からAPIモード(AP=1)で変化する理由】

 XCTUのThroughput試験で、ローカルXBeeのAPパラメータをTransparentモード(AP=0)からAPIモード(AP=1)に変更したときにTxのパケットサイズが変化する理由は、データの送信方法の違いに起因します。

 Transparentモードではデバイスはシリアルで受け取ったデータを、そのまま無加工で送信し、データが一定のバッファ量や時間条件を満たすと、まとめてRFで送信されます。その結果、大きな連続バイト列が一度に送信されることになり、パケットサイズが大きくなります。 一方、APIモードではデータはAPIフレームとして構造化されて送られます(ヘッダーやチェックサム等を含む)。このため、一つのAPIフレームに含められるペイロードサイズ(データ部)は制限されます。このパケットサイズは最大RFパケットサイズに依存しますが、XBeeの機種により異なります。通常はXBee3の場合はAPIフレームで送信できるデータは最大で100バイトとされています。