XBeeモジュールの使い方(ZigbeeファームウェアでのCH自動設定)


 802.15.4やDigiMeshファームウェアでは、無線チャネルを指定するCHパラメータをユーザが自由に設定できます。一方で、ZigbeeファームウェアではこのCHパラメータが Read-only(読み取り専用)となっており、直接チャネルを指定することができません。

 今回は、Zigbeeではチャネルを明示的に設定できない理由に焦点を当て、その背景にあるFrequency Agility(周波数機敏性)の設計思想との関連を解説します。あわせて、Zigbeeにおいてユーザが実質的にチャネルを制御するための具体的な設定手法についても詳しく説明します。

 以下の図は、XBee3をZigbeeファームウェアにUpdateした直後のXCTUの画面です。

CH(Operating Channel)が0になっていることを確認することができます。

・ZigbeeのCHが読み取り専用な理由

Zigbeeプロトコルの設計思想においては、使用するチャネルを決定するのはユーザではなく、コーディネーターを中心としたネットワークそのものであるという考えに基づいています。

前回の解説で示したように、Zigbeeプロトコルには、周囲の電波状況を判断して最適なチャネルを自動的に選択・変更するFrequency Agilityという機能があります。XBee3のZigbeeスタックはこの思想に基づき、起動時や再起動時のみにSpectrum Analyzerの機能を用いて、現時点でノイズの少ないチャネルを自動スキャンして決める仕組みになっています。

・XBee3でFrequency Agility機能は引き継がれていない理由

Zigbee標準プロトコルには、運用中に周囲の電波干渉を検知して最適なチャネルへ動的に切り替えるFrequency Agility機能が定義されています。しかし、XBee3はこの機能を継承しておらず、チャネルスキャンは起動および再起動時のみ実行される仕様となっています。

Digi社のドキュメントにその理由は明記されていませんが、一般にFrequency Agilityの実装には、常時監視や切り替え制御のための追加メモリと処理リソースを要します。XBee3のプラットフォームにおいて、限られたフラッシュメモリやRAMリソースを最適化し、基本性能の安定性を優先した結果であると推察されます。

・起動時のチャンネル選定ロジック

 XBee3(コーディネーター)は、電源が入った際や再起動時に、以下のステップを踏んでチャンネルの選定を行います。

1. エネルギー・スキャン(EDスキャン): 設定されたスキャン対象チャネル(SCパラメータで指定)をすべて調査します。

2. ノイズ測定: 各チャネルの電波強度(RSSI)を測定し、ノイズが少ないクリーンなチャネルを探します。

3. チャネル決定: 最も干渉が少ないと判断したチャンネルを自動的に選択し、ネットワークを形成します。

 以下の図はXBee3をZigbeeファームウェアで、CE(Device Role)をForm Network [1]に設定し、CHを更新した直後のXCTUの画面です。

 CH(Operating Channel)が0x19(チャネル25に対応)になっていることを確認することができます。

・チャネルをユーザが固定したい場合

 実験環境や特定のシステム構成でどうしてもチャネルをユーザが固定したい場合の対処法について説明します。上で述べたように、CHは読み取り専用なため書き込むことはできませんが、SC(Scan Channels)パラメータを設定することで、実質的にチャネルを1つに絞り込むことが可能です。SCパラメータは、スキャン対象とするチャネルをビットマスク形式で指定するパラメータです。初期値では広い範囲(0x7FFF)がスキャン対象になっていますが、ここを特定の1チャネル分だけのビットに書き換えます。

(設定例:チャネル 0x0C (12ch) に固定したい場合)

 2.4GHz帯のチャネルは16(11~26)チャネルあり、ビット0が0x0B(11ch)、ビット1が0x0C(12ch)、・・・ビット15が0x1A(26ch)という具合に対応しています。

 以下の図のように、0x0C (12ch) にチャネルを固定するため、bit1のみビットマスクで1に設定します。これにより、コーディネーターはスキャン対象が0x0C (12ch)のみになるため、必然的にそのチャネルを選択せざるを得なくなります。

 上記の設定後にCE(Device Role)をForm Network [1]に再設定してCHパラメータを確認すると、CHが0xCに設定されていることを確認することができます。

(まとめ)

 XBee3の Zigbeeファームウッェアにおいて、CHが読み取り専用な理由は、現場の電波状況に合わせて最適なチャンネルを自動選択するというプロトコル本来の強みを活かすためです。ZigbeeファームウェアではSCパラメータで指定された範囲から、ノイズの少ない場所を自動選定します。ユーザがチャネルを固定したい場合は、SCビットマスクを特定のチャネル1つだけに絞り込めば実現できます。