XBee DigiMesh Unicast通信

Unicastで相手が見つからないときに、送信をリトライしているか確認しました。

まずは、複数のXBeeを使用して、その一つからユニキャスト送信して、指定のアドレス以外のXBeeが反応しないことを確認しました。

Transmit request フレームでブロードキャストアドレスから、相手先の64ビットアドレスを指定するように変えただけです。

で、次にその指定したアドレスのXBeeの電源を落として、送信側(XCTUがつながっている)でどのようなログが返ってくるか見てみました。それが次のような結果です。

Unicast_logリストの最初は相手側のXBeeが作動している状態で、Transmit Requestでパケットを送信して、ローカルでTransmit Statusを受けとった様子です。ステータスをみると、送信に成功しています。

次に、相手側のXBeeの電源を落として、同じようにTransmit Requestでパケットを送信してみました。その下のTransmit Statusを見てみると、リトライが2回実行されて、結局エラーになったというステータスが返っています。相手のXBeeからACKが受け取れなかったので、2回再送を繰り返し、その結果、ルータなしと判断してローカルXBeeが送信を打ち切ってエラーを返しているということです。

このステータスを確認することで、相手に通信が伝わっていることが確認できます。本当にリトライしてましたね。このリトライ回数はATコマンドで変更できます。

ところで、ログで”16-bit dest.address: FFFE”という記述があり、16ビットで指定できるように受け取れますが、DigiMeshのマニュアルによると、この2バイトはリザーブで、値はFFFEに固定せよ、とありますので、16ビットアドレスは使えません。
ZigBeeだと、コーディネータかルータがこの16ビットをダイナミックにアサインするのですが、DigiMeshでは現在使われていないようです。16ビットアドレスの”FFFE”はZigBeeでは意味のあるアドレスですが、DigiMeshでは固定値です。16ビットアドレスは、そもそも割り当てがないので、指定しようがありませんが。

 

コメントは受け付けていません。