ZigBee入門
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*はじめに [#u77776c8]
ZigBeeの活用事例がこの頃急激に増えてきました。
ただ残念なことに、通信規格としてのZigBeeは、今や複雑巨大...
概論は極力避けて仕様面を必要最小限に記述していますが、こ...
この解説で「ZigBeeを導入してみたけど動作がよくわからん」...
2018/8/15~
ZigBeePRO系の最新版である「ZigBee 3.0」の解説を最終章に追...
*ZigBeeプロトコルの歴史 [#o721d5bc]
ZigBee通信規格は2004年の発表から現在に至るまでに、仕様上...
&ref(image5.PNG,nolink,image5);
ZigBeePROとZigBeeの違いを一言でいいますと、ZigBeePROでは...
現在の主流はZigBeePRO規格となっており、ZigBee解説書の中に...
このWikiでは主にZigBeePROを解説しますが、ほとんどの記述が...
*周波数 [#t2deac6f]
ZigBeeは無線規格にIEEE 802.15.を利用します。ネットワーク...
IEEE 802.15.4で利用できる周波数は以下のようになっています。
-2.4GHz帯・・・世界共通
-868MHz帯・・・主にヨーロッパ
-915MHz帯・・・主にアメリカ
また各周波数には分かりやすいように連番で論理番号が割り振...
-868MHz帯・・・チャンネル0
-915MHz帯・・・チャンネル1-10 (906MHzから2MHz刻みで全10...
-2.4GHz帯・・・チャンネル11-26 (2405MHzから5MHz刻みで全16...
したがってZigBeeの説明で「チャンネル11」というときは、240...
そこで2.4GHzにフォーカスした場合の周波数の使い方と、家庭...
&ref(image8.png,nolink,image8);
802.15.4は隣合うチャンネル同士で影響を与えない点がポイン...
また現在、900MHz帯バージョンの802.15.4の標準化も進行して...
*ネットワークとデバイスタイプ [#t2deac6f]
**デバイスタイプ [#va812dc3]
ZigBeeでは3種類のデバイスタイプが存在します。それぞれ、...
コーディネータはPANを開始し、セキュリティの認証やチャンネ...
エンドデバイスはスリープできるタイプで、センサーなどを接...
ルータはメッシュネットワーク能力をもったデバイスを指しま...
ZigBeeデバイスは動作開始時に必ず上記3種類のどれに属する...
**ネットワークの形 [#t2deac6f]
ZigBeeには図のように3つのネットワーク方式があると一般的...
***【ネットワーク構成図】 [#tec9311d]
&ref(network.jpg,nolink,image1);
スター型は無線LAN、Bluetoothなどと同様の方式で、中央にア...
ツリー型はコーディネータを頂点とした階層構造です。ZigBee...
さらに秀逸なのは、そのアドレスからツリーの深さや親デバイ...
最後にメッシュ型。アドレスは基本的に「乱数」で割り当てら...
以上、3つのネットワークトポロジーですが、ビーコンネット...
*アドレッシング [#p824fd21]
ここでは、非常に重要な「アドレス」について解説します。Zig...
**IEEE 64bitアドレス [#p824fd21]
デバイスに固有の識別子。世界中のZigBeeデバイスがそれぞれ...
**16bitアドレス [#p824fd21]
後述するPANへの参加時に、動的にアサインされます。同じPAN...
このうちZigBeeは、主に16bitアドレスを使って互いに通信しま...
*PANの生成と参加 [#p824fd21]
ZigBeeネットワークの作り方を解説します。ZigBeeでは、各ネ...
**PANの生成[コーディネータ] [#fb931340]
コーディネータはまず最初に各チャンネルの電波環境を調べ、...
1) PANが利用するチャンネル~
2) PANが利用するPAN ID
を決定して起動します。
PAN IDは、原則的にはランダムに生成されますが、それだとい...
誤解を恐れずに思い切りざっくりといってしまえば、コーディ...
コーディネータは1つのPANに必ず1つだけ存在し、ショートア...
**スキャン[ルータ・エンドデバイス] [#v26c9420]
ネットワーク参加の最初のプロセスとしてスキャンが始まりま...
&ref(image2.PNG,nolink,image2);
2014/5/1) ビーコン応答は、宛先アドレスが省略形で、ユニキ...
次に、スキャンによって取得した周囲の情報(Node Descriptor...
**接続 [#v26c9420]
アクティブスキャンで得られたNode Descriptorの中には、ビー...
&ref(image3.PNG,nolink,image3);
注)上の図では○で示されたデバイスがツリー形状のように書か...
**デバイス通知 [#lcf221bb]
接続をリクエストした相手からAssociation Responseが成功ス...
ここまでが、ZigbeeにおけるPAN生成とPANへの参加シーケンス...
**参加に関するいろいろ [#v26c9420]
ここまでPAN生成とPANへの参加過程を解説しました。ZigBeeが...
***アクティブスキャン [#lc91191b]
アクティブスキャンは、ZigBeeの各チャンネル毎にビーコン要...
スキャンにおける各チャンネルの滞留時間は、一番短くて約30m...
15.36msec * (2^duration + 1)~
(ここで0 <= duration <= 14)
つまり倍々に増える形で滞留時間をコントロールできます。
さて、このアクティブスキャンを迅速に行うことは可能でしょ...
ZigBee的な回答としては2つの手段があります。
1. 上の式におけるdurationを小さい値にする~
2.スキャンするチャンネルを全チャンネルでなく、いくつかの...
2は一般にスキャンチャンネルマスクといい、たとえばチャン...
ZigBeePRO SDKでは「gnSK_APS_apsChannelMask」がチャンネル...
***接続の許可・拒否 [#lc91191b]
PANへ新しいデバイスが参加してくるのを抑止するメカニズムは...
1) Association Permit (MAC層)~
2) 最大接続デバイス数、最大接続ルータ数(NWK層)
1. Association Permit~
Association PermitはMAC層のパラメータの一つで、名前の通り...
ZigBeePRO SDKでは「gnSK_MAC_macAssociationPermit」がこれ...
一番よくある使い方としては、Association Permitは初期出荷...
ZigBee製品では、知らないデバイスに勝手に接続されてこられ...
2. 最大接続デバイス数、最大接続ルータ数~
Association Permitが、ユーザが意図的に接続の許可・不許可...
ZigBeeデバイスは、自分に接続してきているデバイスの数が上...
ZigBeePRO SDKでは「gnSK_NWK_nwkMaxChildren」が最大接続デ...
*データ送受信 [#if254898]
PAN形成の次はデータ送受信を解説します。ZigBeeではこの2つ...
これまでの説明では、Zigbeeデバイスは周波数とPAN IDの2パ...
それに対してデータ送受信のルールというのはZigBeeネットワ...
**ZigBeeの通信モデル [#p4ecaeef]
これまた誤解を恐れずに言えば、ZigBeeにおけるデータ通信はT...
1) 送りっぱなし~
2) 相手に届いたかは分からない~
3) 必ずパケット単位で送りあう。1パケットはヘッダ込みで12...
4) パケットは、届くか届かないかのどちらかであって、半分だ...
5) 1パケット内のデータの一部がビット化けして通知されると...
これを原則と考えると、ZigBeeの様々な機能はすべて上の「使...
**送受信のインターフェイス [#p4ecaeef]
ZigBee仕様が規定している送信のAPIを以下に抜粋します。
APSDE-DATA.request {
DstAddrMode,
DstAddress,
DstEndpoint,
ProfileId,
ClusterId,
SrcEndpoint,
ADSULength,
ADSU,
TxOptions,
RadiusCounter
}
けっこう多いですね!(多すぎです)~
重要なので順に説明します。
*** DstAddrMode, DstAddress [#y0dd1def]
パケットの送信先アドレスを指定します。前述のように、ZigBe...
正確にはさらに「指定なし」とか「グループ宛」といったアド...
''16bitか64bitどちらかを指定したとしても、最終的には16ビ...
TCP/IPならば、IPアドレスは最終的にARPやNDによって物理層の...
*** DstEndpoint, SrcEndpoint [#zc5ce69d]
エンドポイントとはZigBee特有の用語ですが、TCP/IPのポート...
0-255のうち、0番はZigBeeで予約されており、255番は全エンド...
パケットの送信側は、宛先エンドポイント番号を指定して送り...
エンドポイントはひとつのZigBeeデバイス上で複数のアプリケ...
&ref(layer.png,nolink,image3);
*** Profile ID [#m80d37d3]
ZigBeeでは「プロファイル」という形で交換するデータの形式...
エンドポイントは使う番号を自由に決められましたが、プロフ...
Smart Energy Profile = 0x0109~
Home Automation Profile = 0x0104~
その他、たくさん
一方で上記以外に、個別企業が自由に使えるプライベートプロ...
いずれにしても、ZigBeeではパケット毎にそれが属するプロフ...
***ClusterId [#u0f42afc]
クラスタ番号はZigBee独特の概念で説明が難しいですが、ざっ...
これによってデータ受信側は、データの中身(ペイロード)を...
クラスタ番号の使い方は、製造者固有プロファイルではアプリ...
クラスタ番号は2バイト長で、同じプロファイル内では一意に区...
*** ADSU, ADSULength [#p0037701]
ADSUは送信するデータ、ADSULengthはデータの長さを指定しま...
IEEE 802.15.4は1回に最大127バイトのデータを伝送しますが...
最大127バイトという制約はZigBeeが無線規格にIEEE 802.15.4...
*** TxOptions [#baa754c8]
Ackと再送制御の項で説明します。
*** RadiusCounter [#e3b382b9]
ブロードキャストの項で説明します。
***送受信のルールまとめ [#e8d863b4]
これまでは送信側の説明でしたが、最後に反対の視点で、受信...
送信されたデータの宛先16bitアドレスとPAN IDが、自端末のア...
1) エンドポイント番号が一致しているかチェックされます。ア...
2) エンドポイントが一致すると、アプリケーションに送信元ア...
3) 次にクラスタ番号を見てデータの内容を判定します。必要な...
まとめると、Zigbeeのデータ通信は
アドレス -> エンドポイント -> プロファイル番号 -> クラス...
という順序でデータがより具体化されていきます。
**ブロードキャスト[#c5fc8e52]
ZigBeeでブロードキャスト(同報通信)する際は、通常、宛先...
他にもいくつかの予約されたブロードキャストアドレスがあり...
0xFFFD: コーディネータ、ルータ、スリープしないエンドデバ...
0xFFFC: コーディネータ、ルータのみ(エンドデバイスは除外)
ZigBeeはマルチホップ通信をサポートしますので、発信された...
フラッディングにおけるパケットの転送回数の上限を決めるの...
ブロードキャストは宛先を知る必要がないという点で非常に有...
またスキャンの項で説明したビーコン要求もブロードキャスト...
**メッシュルーティング [#u76a66cb]
ZigBeeのメッシュルーティングは経路制御方式にAODV(Ad hoc O...
&ref(flooding.png,nolink,image5); ~
RREQが転送されると、転送したデバイス間のリンク品質(RSSI)...
RREQ転送の簡易フローチャートを示します。
&ref(rreq.png,nolink,image5); ~
RREQの宛先、つまり経路の発見対象となったデバイスは、受信...
RREP転送の簡易フローチャートを示します。
&ref(rres.png,nolink,image5); ~
ZigBeeでは、ルーティングテーブルは基本的に「宛先アドレス...
&ref(rttable.png,nolink,image5); ~
SにRREPが戻ってきた時点で、D宛てにはAへ転送すればよいとい...
ZigBeeのメッシュルーティングではこの他にも、データの転送...
メッシュネットワーク通信は非常に奥深い技術ですが、あまり...
-[[P2Pとワイヤレスの交差点:http://internet.watch.impress....
**2種類のAckと再送制御 [#c049855c]
データ送受信のところで、ZigBeeのデータ通信は届いたかを確...
MAC層Ackは、下図のように、基本的に直接データが届く相手と...
&ref(ack.png,nolink,image5); ~
しかしMAC層Ackはあくまで隣同士の確認ですから、2個先のデ...
そこでAPS層Ackを使います。APS層Ackはメッシュネットワーク...
MAC層、APS層共に、相手からAckが受信できないと自動的に再送...
APS層Ackで注意が必要なのは、APS層ACKもMAC層からみるとデー...
*休憩 [#ae1b3815]
そろそろおなか一杯ですか?
もうすぐ終わりです。
*省電力制御 [#c28e87d6]
ZigBeeの特徴として省電力性がよくいわれますが、「省電力」...
最新世代のIEEE 802.15.4準拠RF ICを見ると、だいたい送受信3...
ここで1000mA/hの電池で30mAずっと流せば33時間で電池がきれ...
「えっ、33時間? 3年もつんじゃ・・・???」
3年持つのはスリープさせた時の話です。
RF ICのスタンバイ待機電流は最近だと1 uA切ってますが、1 uA...
要はどのくらい起床して、どのくらいスリープさせるのかとい...
でようやく本題ですが、確かに物理的特性としてのICの消費電...
以下にZigBeeプロトコルとしての省電力制御を説明します。
**エンドデバイスには二種類あることに注意 [#s0b43110]
ZigBeeがいくら省電力といってもデバイスを間欠動作させなけ...
実はエンドデバイスには、スリープタイプと非スリープタイプ...
**親と子 [#abf30923]
スリープ型エンドデバイスの省電力制御の理解に必要ですので...
PAN形成のところで、PANへ参加するのにアクティブスキャンを...
この時、Association RequestとResponseのやり取りをしたデバ...
さてこの時、ルータはメッシュルーティング能力を持ちますか...
一方でエンドデバイスはルーティング能力を持ちませんので、...
**ポーリングと間接送信 [#g4fd613c]
ようやくポーリングの説明ができるようになりました。エンド...
アプリケーションは、データを送る相手がエンドデバイスかそ...
(ちなみに非スリープタイプのエンドデバイスに対しては、親...
スリープから起床したエンドデバイスは、任意のタイミングで...
エンドデバイスが問い合わせをする間隔をポーリング周期とい...
&ref(polling.png,nolink,image5);
0xFFFF指定で送信されたブロードキャストも親デバイスはスリ...
ルータに複数のスリープ型エンドデバイスが接続している場合...
**親による代理応答 [#g4fd613c]
下図のようにコーディネータから数ホップ先のエンドデバイス...
そのため、親デバイスのルータがエンドデバイスの代わりにRou...
&ref(zedrreq.png,nolink,image5);
逆にエンドデバイスからコーディネータへデータを送ることを...
このように、非力なエンドデバイスの代わりに親ルータが一生...
*その他の機能 [#u74aab89]
これまで解説した以外にもZigBeePROは興味深い機能を数多く提...
**周波数アジリティー機能(Frequency Agility) [#k5d79638]
ZigBeeの周波数帯(2.4GHz)は、無線LANやBluetoothなどが共...
**分割配信機能(Fragmentation) [#d95d167e]
ZigBeeは1回に最大127バイトのデータが送信可能ですが、用途...
**ID コンフリクト解消機能(ID Conflict Resolution) [#ve0...
ZigBeePROでは、1つのネットワーク内で16ビット=65565通りの...
**メニー・トゥー・ワン機能(Many-to-one routing) [#s8c39...
ZigBeeでは、これまで1台ずつ経路を作る必要があったために、...
**リンク・ステータス機能(Link Status) [#v64a34dc]
一般にワイヤレス通信では、往路はOKだけど復路はNGというよ...
*ZigBee 3.0について [#p1e67259]
ZigBee 3.0は2014/11月にZigBee Allianceから発表され、認証...
ここではZigBeeプロトコルの観点から、3.0で何が変わったのか...
&ref(zigbee30.jpg,nolink,image10);
(図は「Webinar_ZigBee_3-0_Launch_FINAL.pdf」P11より引用)
**ベースはZigBeePRO [#u3732973]
ZigBee3.0は後方互換性を維持しています。そのためプロトコル...
ZDO, APS, NWK層以下で、フレームフォーマットの変更はなく、...
そのため本Wikiに書かれている内容は、ZigBee 3.0でも引き続...
ZigBee 3.0で行われた主な変更点は以下の通りです。
-APS層にParent_annce/Parent_annce_respメッセージがmandato...
-NWK層に新規コマンドが2つ追加された
-セキュリティモデルが変更され、Standard Securityに一本化...
***ネイバーテーブルのエイジング[#vb19aa7a]
これまでのZigBeePROでは、ネイバーテーブルの内部的な管理に...
特に、接続している子機(エンドデバイス)を、いつ、ルータ...
ZigBee3.0 (ZigBeePRO r21)ではこのネイバーテーブルのメンテ...
具体的には「End Device Timeout Request」コマンドでエンド...
エンドデバイスの生存確認は、Poll request (MAC層のポーリン...
親デバイスは、これらを受信すると自身のネイバーテーブルの...
***セキュリティモデルの整理 [#q7076695]
従来のZigBeePROではHigh SecurityとStandard Securityの2種...
Standard Securityには「Centralized」と「Distributed」の2...
このうち「Centralized」は、Trust Centerと呼ばれるデバイス...
一方の「Distributed」は、Trust Centerがないタイプで、つま...
ZigBee3.0では、「Centralized」か「Distributed」かは利用者...
ただ、「Distributed」という名称は非常に複雑で高度な制御を...
どちらかというと、諸事情によりTrust Centerを使わない(使...
**Base Device Behavior [#g31227d0]
最初の図にも示した通り、ZigBee3.0には「Base Device Behavi...
「Base Device Behavior」では、新しいメッセージフォーマッ...
現状、Commissioningは下記4つの機能に分けて定義されます。
-Network steering
-Network formation
-Finding & binding
-Touchlink
たとえばNetwork steeringで、コーディネータは、
1) Permit Joinフラグを一定時間(bdbcMinCommissioningTime=...
2) PAN上のルータも、同報された時間だけ接続を受け付ける状...
3) やがてPermit join状態が終了し、新規の接続受付は終了する~
という手順で、新規デバイスの接続を受け付けることになりま...
1) コーディネータの「セットアップ開始」ボタンを押す(ある...
2) 上記Network steering処理が走って、PAN配下の全デバイス...
3) その間に買ってきたデバイスの電源を入れて、接続する(こ...
従来、これらの動作手順は、スタック、チップセット、製品に...
*最後に [#mc798cf7]
本文章の文責はスカイリー・ネットワークスにあります。
書かれている内容についてZigBeeやその関連団体がなんら保証...
ご意見、ご要望、ご指摘は「info atmark skyley.com」宛てに...
「ZigBee」はZigBee Allianceの登録商標です。
その他の名称はそれぞれの団体または企業のトレードマークで...
Skyley Networks, Inc. all rights reserved.
http://www.skyley.com/
終了行:
#contents
*はじめに [#u77776c8]
ZigBeeの活用事例がこの頃急激に増えてきました。
ただ残念なことに、通信規格としてのZigBeeは、今や複雑巨大...
概論は極力避けて仕様面を必要最小限に記述していますが、こ...
この解説で「ZigBeeを導入してみたけど動作がよくわからん」...
2018/8/15~
ZigBeePRO系の最新版である「ZigBee 3.0」の解説を最終章に追...
*ZigBeeプロトコルの歴史 [#o721d5bc]
ZigBee通信規格は2004年の発表から現在に至るまでに、仕様上...
&ref(image5.PNG,nolink,image5);
ZigBeePROとZigBeeの違いを一言でいいますと、ZigBeePROでは...
現在の主流はZigBeePRO規格となっており、ZigBee解説書の中に...
このWikiでは主にZigBeePROを解説しますが、ほとんどの記述が...
*周波数 [#t2deac6f]
ZigBeeは無線規格にIEEE 802.15.を利用します。ネットワーク...
IEEE 802.15.4で利用できる周波数は以下のようになっています。
-2.4GHz帯・・・世界共通
-868MHz帯・・・主にヨーロッパ
-915MHz帯・・・主にアメリカ
また各周波数には分かりやすいように連番で論理番号が割り振...
-868MHz帯・・・チャンネル0
-915MHz帯・・・チャンネル1-10 (906MHzから2MHz刻みで全10...
-2.4GHz帯・・・チャンネル11-26 (2405MHzから5MHz刻みで全16...
したがってZigBeeの説明で「チャンネル11」というときは、240...
そこで2.4GHzにフォーカスした場合の周波数の使い方と、家庭...
&ref(image8.png,nolink,image8);
802.15.4は隣合うチャンネル同士で影響を与えない点がポイン...
また現在、900MHz帯バージョンの802.15.4の標準化も進行して...
*ネットワークとデバイスタイプ [#t2deac6f]
**デバイスタイプ [#va812dc3]
ZigBeeでは3種類のデバイスタイプが存在します。それぞれ、...
コーディネータはPANを開始し、セキュリティの認証やチャンネ...
エンドデバイスはスリープできるタイプで、センサーなどを接...
ルータはメッシュネットワーク能力をもったデバイスを指しま...
ZigBeeデバイスは動作開始時に必ず上記3種類のどれに属する...
**ネットワークの形 [#t2deac6f]
ZigBeeには図のように3つのネットワーク方式があると一般的...
***【ネットワーク構成図】 [#tec9311d]
&ref(network.jpg,nolink,image1);
スター型は無線LAN、Bluetoothなどと同様の方式で、中央にア...
ツリー型はコーディネータを頂点とした階層構造です。ZigBee...
さらに秀逸なのは、そのアドレスからツリーの深さや親デバイ...
最後にメッシュ型。アドレスは基本的に「乱数」で割り当てら...
以上、3つのネットワークトポロジーですが、ビーコンネット...
*アドレッシング [#p824fd21]
ここでは、非常に重要な「アドレス」について解説します。Zig...
**IEEE 64bitアドレス [#p824fd21]
デバイスに固有の識別子。世界中のZigBeeデバイスがそれぞれ...
**16bitアドレス [#p824fd21]
後述するPANへの参加時に、動的にアサインされます。同じPAN...
このうちZigBeeは、主に16bitアドレスを使って互いに通信しま...
*PANの生成と参加 [#p824fd21]
ZigBeeネットワークの作り方を解説します。ZigBeeでは、各ネ...
**PANの生成[コーディネータ] [#fb931340]
コーディネータはまず最初に各チャンネルの電波環境を調べ、...
1) PANが利用するチャンネル~
2) PANが利用するPAN ID
を決定して起動します。
PAN IDは、原則的にはランダムに生成されますが、それだとい...
誤解を恐れずに思い切りざっくりといってしまえば、コーディ...
コーディネータは1つのPANに必ず1つだけ存在し、ショートア...
**スキャン[ルータ・エンドデバイス] [#v26c9420]
ネットワーク参加の最初のプロセスとしてスキャンが始まりま...
&ref(image2.PNG,nolink,image2);
2014/5/1) ビーコン応答は、宛先アドレスが省略形で、ユニキ...
次に、スキャンによって取得した周囲の情報(Node Descriptor...
**接続 [#v26c9420]
アクティブスキャンで得られたNode Descriptorの中には、ビー...
&ref(image3.PNG,nolink,image3);
注)上の図では○で示されたデバイスがツリー形状のように書か...
**デバイス通知 [#lcf221bb]
接続をリクエストした相手からAssociation Responseが成功ス...
ここまでが、ZigbeeにおけるPAN生成とPANへの参加シーケンス...
**参加に関するいろいろ [#v26c9420]
ここまでPAN生成とPANへの参加過程を解説しました。ZigBeeが...
***アクティブスキャン [#lc91191b]
アクティブスキャンは、ZigBeeの各チャンネル毎にビーコン要...
スキャンにおける各チャンネルの滞留時間は、一番短くて約30m...
15.36msec * (2^duration + 1)~
(ここで0 <= duration <= 14)
つまり倍々に増える形で滞留時間をコントロールできます。
さて、このアクティブスキャンを迅速に行うことは可能でしょ...
ZigBee的な回答としては2つの手段があります。
1. 上の式におけるdurationを小さい値にする~
2.スキャンするチャンネルを全チャンネルでなく、いくつかの...
2は一般にスキャンチャンネルマスクといい、たとえばチャン...
ZigBeePRO SDKでは「gnSK_APS_apsChannelMask」がチャンネル...
***接続の許可・拒否 [#lc91191b]
PANへ新しいデバイスが参加してくるのを抑止するメカニズムは...
1) Association Permit (MAC層)~
2) 最大接続デバイス数、最大接続ルータ数(NWK層)
1. Association Permit~
Association PermitはMAC層のパラメータの一つで、名前の通り...
ZigBeePRO SDKでは「gnSK_MAC_macAssociationPermit」がこれ...
一番よくある使い方としては、Association Permitは初期出荷...
ZigBee製品では、知らないデバイスに勝手に接続されてこられ...
2. 最大接続デバイス数、最大接続ルータ数~
Association Permitが、ユーザが意図的に接続の許可・不許可...
ZigBeeデバイスは、自分に接続してきているデバイスの数が上...
ZigBeePRO SDKでは「gnSK_NWK_nwkMaxChildren」が最大接続デ...
*データ送受信 [#if254898]
PAN形成の次はデータ送受信を解説します。ZigBeeではこの2つ...
これまでの説明では、Zigbeeデバイスは周波数とPAN IDの2パ...
それに対してデータ送受信のルールというのはZigBeeネットワ...
**ZigBeeの通信モデル [#p4ecaeef]
これまた誤解を恐れずに言えば、ZigBeeにおけるデータ通信はT...
1) 送りっぱなし~
2) 相手に届いたかは分からない~
3) 必ずパケット単位で送りあう。1パケットはヘッダ込みで12...
4) パケットは、届くか届かないかのどちらかであって、半分だ...
5) 1パケット内のデータの一部がビット化けして通知されると...
これを原則と考えると、ZigBeeの様々な機能はすべて上の「使...
**送受信のインターフェイス [#p4ecaeef]
ZigBee仕様が規定している送信のAPIを以下に抜粋します。
APSDE-DATA.request {
DstAddrMode,
DstAddress,
DstEndpoint,
ProfileId,
ClusterId,
SrcEndpoint,
ADSULength,
ADSU,
TxOptions,
RadiusCounter
}
けっこう多いですね!(多すぎです)~
重要なので順に説明します。
*** DstAddrMode, DstAddress [#y0dd1def]
パケットの送信先アドレスを指定します。前述のように、ZigBe...
正確にはさらに「指定なし」とか「グループ宛」といったアド...
''16bitか64bitどちらかを指定したとしても、最終的には16ビ...
TCP/IPならば、IPアドレスは最終的にARPやNDによって物理層の...
*** DstEndpoint, SrcEndpoint [#zc5ce69d]
エンドポイントとはZigBee特有の用語ですが、TCP/IPのポート...
0-255のうち、0番はZigBeeで予約されており、255番は全エンド...
パケットの送信側は、宛先エンドポイント番号を指定して送り...
エンドポイントはひとつのZigBeeデバイス上で複数のアプリケ...
&ref(layer.png,nolink,image3);
*** Profile ID [#m80d37d3]
ZigBeeでは「プロファイル」という形で交換するデータの形式...
エンドポイントは使う番号を自由に決められましたが、プロフ...
Smart Energy Profile = 0x0109~
Home Automation Profile = 0x0104~
その他、たくさん
一方で上記以外に、個別企業が自由に使えるプライベートプロ...
いずれにしても、ZigBeeではパケット毎にそれが属するプロフ...
***ClusterId [#u0f42afc]
クラスタ番号はZigBee独特の概念で説明が難しいですが、ざっ...
これによってデータ受信側は、データの中身(ペイロード)を...
クラスタ番号の使い方は、製造者固有プロファイルではアプリ...
クラスタ番号は2バイト長で、同じプロファイル内では一意に区...
*** ADSU, ADSULength [#p0037701]
ADSUは送信するデータ、ADSULengthはデータの長さを指定しま...
IEEE 802.15.4は1回に最大127バイトのデータを伝送しますが...
最大127バイトという制約はZigBeeが無線規格にIEEE 802.15.4...
*** TxOptions [#baa754c8]
Ackと再送制御の項で説明します。
*** RadiusCounter [#e3b382b9]
ブロードキャストの項で説明します。
***送受信のルールまとめ [#e8d863b4]
これまでは送信側の説明でしたが、最後に反対の視点で、受信...
送信されたデータの宛先16bitアドレスとPAN IDが、自端末のア...
1) エンドポイント番号が一致しているかチェックされます。ア...
2) エンドポイントが一致すると、アプリケーションに送信元ア...
3) 次にクラスタ番号を見てデータの内容を判定します。必要な...
まとめると、Zigbeeのデータ通信は
アドレス -> エンドポイント -> プロファイル番号 -> クラス...
という順序でデータがより具体化されていきます。
**ブロードキャスト[#c5fc8e52]
ZigBeeでブロードキャスト(同報通信)する際は、通常、宛先...
他にもいくつかの予約されたブロードキャストアドレスがあり...
0xFFFD: コーディネータ、ルータ、スリープしないエンドデバ...
0xFFFC: コーディネータ、ルータのみ(エンドデバイスは除外)
ZigBeeはマルチホップ通信をサポートしますので、発信された...
フラッディングにおけるパケットの転送回数の上限を決めるの...
ブロードキャストは宛先を知る必要がないという点で非常に有...
またスキャンの項で説明したビーコン要求もブロードキャスト...
**メッシュルーティング [#u76a66cb]
ZigBeeのメッシュルーティングは経路制御方式にAODV(Ad hoc O...
&ref(flooding.png,nolink,image5); ~
RREQが転送されると、転送したデバイス間のリンク品質(RSSI)...
RREQ転送の簡易フローチャートを示します。
&ref(rreq.png,nolink,image5); ~
RREQの宛先、つまり経路の発見対象となったデバイスは、受信...
RREP転送の簡易フローチャートを示します。
&ref(rres.png,nolink,image5); ~
ZigBeeでは、ルーティングテーブルは基本的に「宛先アドレス...
&ref(rttable.png,nolink,image5); ~
SにRREPが戻ってきた時点で、D宛てにはAへ転送すればよいとい...
ZigBeeのメッシュルーティングではこの他にも、データの転送...
メッシュネットワーク通信は非常に奥深い技術ですが、あまり...
-[[P2Pとワイヤレスの交差点:http://internet.watch.impress....
**2種類のAckと再送制御 [#c049855c]
データ送受信のところで、ZigBeeのデータ通信は届いたかを確...
MAC層Ackは、下図のように、基本的に直接データが届く相手と...
&ref(ack.png,nolink,image5); ~
しかしMAC層Ackはあくまで隣同士の確認ですから、2個先のデ...
そこでAPS層Ackを使います。APS層Ackはメッシュネットワーク...
MAC層、APS層共に、相手からAckが受信できないと自動的に再送...
APS層Ackで注意が必要なのは、APS層ACKもMAC層からみるとデー...
*休憩 [#ae1b3815]
そろそろおなか一杯ですか?
もうすぐ終わりです。
*省電力制御 [#c28e87d6]
ZigBeeの特徴として省電力性がよくいわれますが、「省電力」...
最新世代のIEEE 802.15.4準拠RF ICを見ると、だいたい送受信3...
ここで1000mA/hの電池で30mAずっと流せば33時間で電池がきれ...
「えっ、33時間? 3年もつんじゃ・・・???」
3年持つのはスリープさせた時の話です。
RF ICのスタンバイ待機電流は最近だと1 uA切ってますが、1 uA...
要はどのくらい起床して、どのくらいスリープさせるのかとい...
でようやく本題ですが、確かに物理的特性としてのICの消費電...
以下にZigBeeプロトコルとしての省電力制御を説明します。
**エンドデバイスには二種類あることに注意 [#s0b43110]
ZigBeeがいくら省電力といってもデバイスを間欠動作させなけ...
実はエンドデバイスには、スリープタイプと非スリープタイプ...
**親と子 [#abf30923]
スリープ型エンドデバイスの省電力制御の理解に必要ですので...
PAN形成のところで、PANへ参加するのにアクティブスキャンを...
この時、Association RequestとResponseのやり取りをしたデバ...
さてこの時、ルータはメッシュルーティング能力を持ちますか...
一方でエンドデバイスはルーティング能力を持ちませんので、...
**ポーリングと間接送信 [#g4fd613c]
ようやくポーリングの説明ができるようになりました。エンド...
アプリケーションは、データを送る相手がエンドデバイスかそ...
(ちなみに非スリープタイプのエンドデバイスに対しては、親...
スリープから起床したエンドデバイスは、任意のタイミングで...
エンドデバイスが問い合わせをする間隔をポーリング周期とい...
&ref(polling.png,nolink,image5);
0xFFFF指定で送信されたブロードキャストも親デバイスはスリ...
ルータに複数のスリープ型エンドデバイスが接続している場合...
**親による代理応答 [#g4fd613c]
下図のようにコーディネータから数ホップ先のエンドデバイス...
そのため、親デバイスのルータがエンドデバイスの代わりにRou...
&ref(zedrreq.png,nolink,image5);
逆にエンドデバイスからコーディネータへデータを送ることを...
このように、非力なエンドデバイスの代わりに親ルータが一生...
*その他の機能 [#u74aab89]
これまで解説した以外にもZigBeePROは興味深い機能を数多く提...
**周波数アジリティー機能(Frequency Agility) [#k5d79638]
ZigBeeの周波数帯(2.4GHz)は、無線LANやBluetoothなどが共...
**分割配信機能(Fragmentation) [#d95d167e]
ZigBeeは1回に最大127バイトのデータが送信可能ですが、用途...
**ID コンフリクト解消機能(ID Conflict Resolution) [#ve0...
ZigBeePROでは、1つのネットワーク内で16ビット=65565通りの...
**メニー・トゥー・ワン機能(Many-to-one routing) [#s8c39...
ZigBeeでは、これまで1台ずつ経路を作る必要があったために、...
**リンク・ステータス機能(Link Status) [#v64a34dc]
一般にワイヤレス通信では、往路はOKだけど復路はNGというよ...
*ZigBee 3.0について [#p1e67259]
ZigBee 3.0は2014/11月にZigBee Allianceから発表され、認証...
ここではZigBeeプロトコルの観点から、3.0で何が変わったのか...
&ref(zigbee30.jpg,nolink,image10);
(図は「Webinar_ZigBee_3-0_Launch_FINAL.pdf」P11より引用)
**ベースはZigBeePRO [#u3732973]
ZigBee3.0は後方互換性を維持しています。そのためプロトコル...
ZDO, APS, NWK層以下で、フレームフォーマットの変更はなく、...
そのため本Wikiに書かれている内容は、ZigBee 3.0でも引き続...
ZigBee 3.0で行われた主な変更点は以下の通りです。
-APS層にParent_annce/Parent_annce_respメッセージがmandato...
-NWK層に新規コマンドが2つ追加された
-セキュリティモデルが変更され、Standard Securityに一本化...
***ネイバーテーブルのエイジング[#vb19aa7a]
これまでのZigBeePROでは、ネイバーテーブルの内部的な管理に...
特に、接続している子機(エンドデバイス)を、いつ、ルータ...
ZigBee3.0 (ZigBeePRO r21)ではこのネイバーテーブルのメンテ...
具体的には「End Device Timeout Request」コマンドでエンド...
エンドデバイスの生存確認は、Poll request (MAC層のポーリン...
親デバイスは、これらを受信すると自身のネイバーテーブルの...
***セキュリティモデルの整理 [#q7076695]
従来のZigBeePROではHigh SecurityとStandard Securityの2種...
Standard Securityには「Centralized」と「Distributed」の2...
このうち「Centralized」は、Trust Centerと呼ばれるデバイス...
一方の「Distributed」は、Trust Centerがないタイプで、つま...
ZigBee3.0では、「Centralized」か「Distributed」かは利用者...
ただ、「Distributed」という名称は非常に複雑で高度な制御を...
どちらかというと、諸事情によりTrust Centerを使わない(使...
**Base Device Behavior [#g31227d0]
最初の図にも示した通り、ZigBee3.0には「Base Device Behavi...
「Base Device Behavior」では、新しいメッセージフォーマッ...
現状、Commissioningは下記4つの機能に分けて定義されます。
-Network steering
-Network formation
-Finding & binding
-Touchlink
たとえばNetwork steeringで、コーディネータは、
1) Permit Joinフラグを一定時間(bdbcMinCommissioningTime=...
2) PAN上のルータも、同報された時間だけ接続を受け付ける状...
3) やがてPermit join状態が終了し、新規の接続受付は終了する~
という手順で、新規デバイスの接続を受け付けることになりま...
1) コーディネータの「セットアップ開始」ボタンを押す(ある...
2) 上記Network steering処理が走って、PAN配下の全デバイス...
3) その間に買ってきたデバイスの電源を入れて、接続する(こ...
従来、これらの動作手順は、スタック、チップセット、製品に...
*最後に [#mc798cf7]
本文章の文責はスカイリー・ネットワークスにあります。
書かれている内容についてZigBeeやその関連団体がなんら保証...
ご意見、ご要望、ご指摘は「info atmark skyley.com」宛てに...
「ZigBee」はZigBee Allianceの登録商標です。
その他の名称はそれぞれの団体または企業のトレードマークで...
Skyley Networks, Inc. all rights reserved.
http://www.skyley.com/
ページ名: