Major Versionが変わることでこれまでの概念が一新されることは少なくありません。
弊社でも同じピンアサインのモジュールを選定し、物理的な差し替えは適うことが確認できた品種であっても、論理面で差分があり嵌ったことも少なくありません。
Xbee3.0は2.0の後方互換がある
ピンアサイン等の物理的な互換性が有る品種があり、これまで運営してきた2.0を3.0へ置き換えするにあたり、ハード面の変更不要というのは魅力があります。
より具体的には、製作のイニシャルコストをかけずにVersion Upができるのですから、ディスコンの対応もシームレスに出来そうな印象です。
しかし、冒頭の記載通り、物理的な互換性はあっても論理的な互換性があるか?というのは疑問です。
例えば、Coordinator・Router の役割やセキュリティ設定に違いがあり、同じコマンドでも振る舞いが異なることがあります。
振る舞いが異なるというのは、親機ー子機間での接続ができなくなったり、同一ネットワーク内で検索結果が得られなくなったりというもので、通信媒体として投入している以上、致命的な差分になるものです。
弊社で確認できている範囲では、Coordinatorが2.0でRouter が3.0。
その逆となる組み合わせのCoordinatorが3.0でRouter が2.0の通信は問題なく実現ができています。
しかし、Xbee2.0の制御をそのままXbee3.0に当て嵌めても、上手く通信できない・・・といった症状は確認できており、対策についても見えています。
「後方互換がある」と言っても、手放しで置き換えできるものではない。というのが現状です。
ATZSコマンドを用いている場合は要注意
ATZSコマンドは、Digi International社(以下、Digi社)の製品、Third Party製の製品を選別して用いる場合に設定が必要な項目です。
通信する親子間では当然同じ設定でなければ通信ができませんので、同一ネットワーク内に混同設定した端末を入れても双方で通信ができないものとなります。
このZSコマンドですがDigi社のXbee3.0では、以下の様に記載があります。
コマンドモードで動作している場合、 ZSへの変更はコマンドモードが終了したとき(タイムアウトまたはCN(コマンドモード終了) )にのみ有効になります。
ZSを変更すると、現在のすべてのパラメータが永続ストレージに書き込まれ、モジュールが再起動します。これはWRコマンドとFRコマンドの発行と同じです。
コマンドモードを終了させて再起動 or タイムアウトにてコマンドモード終了で内部メモリーへ書き込み&再起動になります。
その為、再起動されることが周知されていないと、以降のコマンド制御処理は意図通りに反映されているかはわかりませんので、プログラマーは注意が必要です。
他方、Xbee2.0は再起動の文言がありません、、、
が、動作は3.0と同じく再起動処理になります(Digi社へ確認済み)
[Xbee2.0 RF仕様]
https://docs.digi.com/resources/documentation/digidocs/90002002/default.htm#Reference/r_cmd_ZS.htm?TocPath=AT%2520commands%257CNetwork%2520commands%257C_____4
再起動されるんだから、RESET端子を制御してモジュール自体を再起動することでも良いのか?と思いがちですが、コマンドモード終了の状態を作らないと、内部メモリーへ書き込みされませんので、次回起動時に設定値が更新されていないことになります。つまり、ハードウェアRESETによる再起動はダメということになります。
Xbee3.0と2.0が混同するシステムではC8コマンドも設定すべし
Xbee3.0と2.0では電波強度の測定方法が異なります。
概要だけを見てもその様な詳細がかかれていないのですが、電波強度を相対的に計測している手前、2.0と3.0では絶対値として同じ電波強度であっても、Version差として誤検知が発生することがあります。
例えば、十分な電波強度で通信ができる状態であるにもかかわらず、非常に小さい電波強度値として処理され、接続できない強度だと判定されることもあり得るものです。
[Xbee3.0 C8コマンド概要]
https://docs.digi.com/resources/documentation/digidocs/90001539/#reference/r_cmd_c8.htm?TocPath=AT%2520commands%257CNetworking%2520commands%257C_____14
ではどうするのか?
C8に0x10を設定することで従来のVersionと互換性が有る処理となります。
C8コマンドはFW Versionで振る舞いが違うぞ・・・
おいおい。どうなってんねん。で話ですが。
Digi社のXbee3.0を使用するにあたり、FW ver.1012, 1014はC8を単独コマンドで変更できません(汗)
Ver.1010ではC8値を単独で変更できるので、FW verで挙動が異なる点に注意が必要です。
上記のリンクマニュアルでは、C8単独でも書き換えられると記述されていますができません。
ではどうするの?
ZSコマンドを使用している場合は、ZSコマンドの変更に伴う再起動にてC8が反映されます。
その為、C8に0x10を設定した後、ZSコマンドの値を変更すればどちらも反映されます。
但し、ZSの値が0⇒0や2⇒2など、変化を伴わない場合は再起動されず、反映もされないので注意です。
ZSコマンドを使用していない場合は、内部メモリに書き込みされて再起動が発生する処理が必要になります(2025/8/17現在 Digi社 内部でも確認中)
あとがき
上述の内容は、ネットワークシステム構築されている条件によって当て嵌まる、当て嵌まらないがあります。ご自身のシステムに応じて設定不要で無視できる内容でもあるので、全く使用していない機能やコマンドに対して設定が必要というものではありません。