図面を参照して、本発明の実施形態について、(1)全体構成、(2)プロトコル・スタック、(3)HEMSの構成、(4)動作、(5)まとめ、(6)その他の実施形態の順に説明する。以下の実施形態に係る図面において、同一又は類似の部分には同一又は類似の符号を付す。
(1)全体構成
図1は、本実施形態に係るジグビー・ネットワーク10の全体構成図である。
図1に示すように、本実施形態に係るジグビー・ネットワーク10は、HEMS100と複数の機器200とによって構成される。図1には、HEMS100以外に4台の機器200−1〜200−4を図示しているが、ジグビー・ネットワーク10を構成する各機器200は、機器固有の64ビットアドレスと共に、当該ネットワーク内で使用される16ビットアドレスを持つため、1ネットワーク内に最大で65536台までのデバイス(HEMS100及び機器200)を接続できる。
HEMS100及び複数の機器200は、住宅に設けられる。HEMS100は、住宅単位で電力管理を行うための制御装置に相当する。機器200は、例えば、住宅に設けられた分散型電源、家電、センサなどである。
HEMS100は、複数の機器200との通信を行い、これらの機器200を制御する。HEMS100は、ジグビー・モジュール110及びHEMS制御部120を有する。ジグビー・モジュール110は、ジグビー・ネットワーク10のネットワーク管理を行うZCに相当する。また、ジグビー・モジュール110は、隣接する機器200-1及び220-4との無線通信を行う。HEMS制御部120は、HEMSアプリケーションを実行する。当該HEMSアプリケーションは、ジグビー・モジュール110を用いて機器200との通信を行い、当該機器200を制御する。例えば、HEMSアプリケーションは、機器200がエアコンであればその設定温度を制御したり、機器200がセンサであればその測定値を報告させたりする。
機器200−1は、ジグビー・モジュール210−1及び機器制御部220−1を有する。ジグビー・モジュール210−1は、ジグビー・ネットワーク10におけるルーティングを行うZRに相当する。また、ジグビー・モジュール210−1は、隣接するHEMS100及び機器200−2との無線通信を行う。機器制御部220−1は、機器アプリケーションを実行する。機器アプリケーションは、ジグビー・モジュール210−1を用いてHEMS100との通信を行い、HEMS100による制御に従って自機器200−1を動作させる。
機器200−2は、ジグビー・モジュール210−2及び機器制御部220−2を有する。ジグビー・モジュール210−2は、ジグビー・ネットワーク10におけるルーティングを行うZRに相当する。また、ジグビー・モジュール210−2は、隣接する機器制御部220−1及び200−3との無線通信を行う。機器制御部220−2は、機器アプリケーションを実行する。当該機器アプリケーションは、ジグビー・モジュール210−2を用いてHEMS100との通信を行い、HEMS100による制御に従って自機器200−2を動作させる。
機器200−3は、ジグビー・モジュール210−3及び機器制御部220−3を有する。ジグビー・モジュール210−3は、ジグビー・ネットワーク10における末端デバイスであるZEDに相当する。また、ジグビー・モジュール210−3は、隣接する機器200−2との無線通信を行う。機器制御部220−3は、機器アプリケーションを実行する。機器アプリケーションは、ジグビー・モジュール210−3を用いてHEMS100との通信を行い、HEMS100による制御に従って自機器200−3を動作させる。
機器200−4は、ジグビー・モジュール210−4及び機器制御部220−4を有する。ジグビー・モジュール210−4は、ジグビー・ネットワーク10における末端デバイスであるZEDに相当する。また、ジグビー・モジュール210−4は、隣接するHEMS100との無線通信を行う。機器制御部220−4は、機器アプリケーションを実行する。機器アプリケーションは、ジグビー・モジュール210−4を用いてHEMS100との通信を行い、HEMS100による制御に従って自機器200−4を動作させる。
(2)プロトコル・スタック
図2は、ジグビー・ネットワーク10におけるプロトコル・スタック図である。図3は、HEMS100におけるAPPレイヤの詳細を示す図である。
図2に示すように、ジグビー・ネットワーク10は、PHYレイヤ及びMACレイヤには、IEEE802.15.4を採用し、NWKレイヤ及びAPSレイヤには、ジグビー・アライアンスで策定されたプロトコル(ジグビー・プロトコル)を採用する。
ジグビー・モジュール110及び210のそれぞれには、IEEE802.15.4に準拠したPHYレイヤ及びMACレイヤと、ジグビー・プロトコルに準拠したNWKレイヤ及びAPSレイヤと、が実装される。これに対し、HEMS制御部120及び機器制御部220には、APPレイヤが実装される。
図3に示すように、HEMS100におけるAPPレイヤは、HEMSアプリケーション及びジグビー・ミドルウェアを含む。HEMSアプリケーションは、機器200を制御するためのアプリケーションである。ジグビー・ミドルウェアは、アプリケーションよりも下位のレイヤ(APSレイヤ、NWKレイヤ、MACレイヤ、PHYレイヤ)とアプリケーションとの中間に位置付けられる。
なお、APPレイヤには、ユース・ケースに応じたプロファイルが適用される。本実施形態では、APPレイヤには、HA(Home Automation)プロファイルが適用される。HAプロファイルは、ZCL(ZigBee(登録商標) Cluster Library)でフォーマットが規定されており、HEMSアプリケーションは、ZCLに従ったフォーマットのデータを機器アプリケーションと送受信する。
ここで、HEMS100から、機器200−1及び機器200−2を経由して、機器200−3にデータを転送する際の一般的な動作を説明する。
図2に示すように、HEMS100のAPPレイヤは、宛先アドレスを指定して、APSレイヤに対して送信要求を行う。当該データは、APSレイヤでヘッダが付加されてNWKレイヤに渡される。
NWKレイヤは、ジグビー・ネットワーク10に含まれる機器200毎の経路情報をルーティング・テーブルとして管理している。ここで経路情報とは、機器200宛てのデータを適切な隣接ノードに転送するための情報であり、例えば当該機器200のアドレスに転送先の隣接ノードのアドレスが対応付けられたものである。NWKレイヤは、機器200−3を宛先とするデータを受け取ると、当該経路情報を参照して、当該データを機器200−1に送信するよう下位レイヤ(MACレイヤ)を制御する。
MACレイヤは、NWKレイヤからデータを受け取り、ヘッダを付加してPHYレイヤに渡す。そして、PHYレイヤは、MACレイヤからデータを受け取ると、当該データを無線で送信する。
機器200−1のPHYレイヤは、HEMS100のPHYレイヤからのデータを無線で受信して、MACレイヤに渡す。MACレイヤは、PHYレイヤから受け取ったデータをNWKレイヤに渡す。
NWKレイヤは、ジグビー・ネットワーク10に含まれる機器200毎の経路情報をルーティング・テーブルとして管理している。NWKレイヤは、機器200−3を宛先とするデータを受け取ると、当該経路情報を参照して、当該データを機器200−2に送信するよう下位レイヤ(MACレイヤ)を制御する。
MACレイヤは、NWKレイヤからデータを受け取り、ヘッダを付加してPHYレイヤに渡す。そして、PHYレイヤは、MACレイヤからデータを受け取ると、当該データを無線で送信する。
機器200−2においても機器200−1と同様の処理を行った後、データを機器200−3に無線で送信する。
機器200−3のPHYレイヤは、機器200−3のPHYレイヤからのデータを無線で受信して、MACレイヤに渡す。MACレイヤは、PHYレイヤから受け取ったデータをNWKレイヤに渡す。
NWKレイヤは、MACレイヤから受け取ったデータの宛先が自機器200−3であることを認識し、当該データを上位レイヤ(APSレイヤ)に渡す。APSレイヤは、NWKレイヤから受け取ったデータをAPPレイヤに渡す。そして、APPレイヤは、APSレイヤから受け取ったデータを解釈して、当該データに応じた処理を行う。
このように、一般的な方法において、ジグビー・ネットワーク10における経路制御(ルーティング)は、主としてNWKレイヤで行われる。しかしながら、NWKレイヤを司るジグビー・モジュールは、管理可能な経路情報の数に上限がある。NWKレイヤは、ルーティング・テーブル上にない宛先をAPPレイヤが指定した場合、送信に先立って、当該宛先についての経路情報を取得するためのルート解決を実施する。
したがって、ルート解決のためにネットワーク内でのやり取りに時間がかかることとなり、アプリケーションの送信処理開始時点から実際に宛先に届いてレスポンスを得られるまでの時間が、アプリケーションの既定のタイムアウトに間に合わないという問題がある。
そこで、本実施形態では、上述した一般的な方法を第1のモードとして使用し、HEMS100のAPPレイヤ(HEMSアプリケーション)が経路制御を行う新たな方法を第2のモードとして使用する。
第2のモードにおいて、HEMS100のAPPレイヤ(HEMSアプリケーション)は、ジグビー・ネットワーク10に含まれる機器200毎に、通信経路全体の情報(以下、「全体経路情報」と称する)を管理する。例えば、機器200−3についての全体経路情報は、機器200−1、機器200−2、及び機器200−3の順に、当該機器200のアドレスを含む。
HEMS100のAPPレイヤ(HEMSアプリケーション)は、機器200−3に対する送信を行う場合に、APSレイヤに対して送信要求を行うとともに、機器200−3についての全体経路情報をAPSレイヤに渡す。この場合、NWKレイヤは、HEMSアプリケーションが指定した通信経路に従って転送先ノードを決定することになる。
このように、HEMSアプリケーションにおいて途中経路も指定して送信することで、アプリケーションの既定のタイムアウトに間に合わないという問題を解決することができる。ただし、第2のモードは、HEMSアプリケーションにおいて全機器200への経路を把握しておく必要があり、その把握のために全体経路情報を更新し続ける必要がある。
したがって、ジグビー・ネットワーク10に含まれる機器200の数が多い場合にのみ、第1のモードではなく、第2のモードを使用することが有効である。以下においては、第2のモードを使用するケース、すなわち、ジグビー・ネットワーク10に含まれる機器200の数が多いケースを主として説明する。
図4は、第2のモードを使用中に、ジグビー・ネットワーク10に含まれる機器200がジグビー・ネットワーク10から離脱した場合の動作を示す。ここでは、機器200−2が、例えば電源をオフした等により動作を停止したと仮定する。HEMSアプリケーションが機器200−3への送信について途中経路に機器200−2を指定している場合において、機器200−2が離脱すると、当然通信は成功しない。よって、HEMSアプリケーションは、機器200−3への経路(全体経路情報)を再度取得する必要がある。具体的には、HEMS100は、機器200−3を宛先とする経路要求メッセージをブロードキャストで送信し、機器200−3は、当該経路要求メッセージを受信すると、経路を記録するための応答メッセージをユニキャストでHEMS100に送信する。これにより、HEMS100(HEMSアプリケーション)は、機器200−3への経路(全体経路情報)を取得することができる。
図4に示すように、第2のモードを使用中に、ジグビー・ネットワーク10に含まれる機器200−2がジグビー・ネットワーク10から離脱すると、機器200−1のNWKレイヤは、機器200−2へのデータ転送に失敗したことを検知し、HEMS100のNWKレイヤに対してネットワーク・ステータスを報告する。当該ネットワーク・ステータスは、元のデータフレームの宛先(機器200−3)のアドレス及びステータス(ACK/NACK)を含む。
また、HEMS100のAPSレイヤは、機器200−3のAPSレイヤからの確認応答(ACK)を受信できないため、NWKレイヤの情報に基づいて、APPレイヤのジグビー・ミドルウェアに対してエラー情報を通知する。当該エラー情報は、元のデータフレームの宛先(機器200−3)のアドレス及びステータス(ACK/NACK)を含む。
しかしながら、APPレイヤからジグビー・ミドルウェアを介してHEMSアプリケーションへエラー情報が流れる過程で、当該エラー情報に含まれる宛先アドレスが省略されて、ジグビー・ミドルウェアからHEMSアプリケーションに渡されるエラー情報は、「フレームID=xxが送信失敗」だけになっていることがある。
この場合、HEMSアプリケーションは、「どのデータフレーム」が送信に失敗したかを把握できても、「どの機器宛て」のデータフレームが送信に失敗したかを把握することができない。その結果、HEMSアプリケーションは、機器200−2がジグビー・ネットワーク10から離脱しても、機器200−3への経路(全体経路情報)を取得することができない。
そこで、本実施形態では、HEMSアプリケーションは、第2のモードを使用中において、ジグビー・ミドルウェアにデータフレームを渡す際に、当該データフレームのフレームIDを当該データフレームの宛先アドレスと対応付けて記憶する。これにより、ジグビー・ミドルウェアからHEMSアプリケーションに渡されるエラー情報が「フレームID=xxが送信失敗」だけになっていても、当該フレームIDを基に宛先アドレスを特定できる。
なお、データフレームとは、HEMSアプリケーションからジグビー・ミドルウェアに渡されるデータの単位である。フレームIDとは、HEMSアプリケーションからジグビー・ミドルウェアにデータフレームが渡される度にインクリメントされるデータフレーム識別番号(ID)である。
(3)HEMSの構成
次に、HEMS100の構成を説明する。図5は、HEMS100のブロック図である。
図5に示すように、HEMS100は、ジグビー・モジュール110及びHEMS制御部120を有する。
ジグビー・モジュール110は、送受信部111及びジグビー制御部112を含む。送受信部111には、上述したPHYレイヤの機能が実装される。送受信部111は、IEEE802.15.4に従って無線信号を送受信する。ジグビー制御部112は、プロセッサ及びメモリなどにより構成される。ジグビー制御部112には、上述したMACレイヤ、NWKレイヤ及びAPSレイヤの各機能が実装される。
HEMS制御部120は、記憶部121及び処理部122を含む。
記憶部121は、例えばメモリやHDDなどにより構成される。記憶部121は、処理部122によって処理されるプログラム(HEMSアプリケーション及びジグビー・ミドルウェア)を記憶する。また、第2のモードにおいて、記憶部121は、機器200毎の全体経路情報を記憶する。
処理部122は、例えばプロセッサなどにより構成される。処理部122は、記憶部121に記憶されているHEMSアプリケーションを処理するHEMSアプリケーション処理部122Aと、記憶部121に記憶されているジグビー・ミドルウェアを処理するジグビー・ミドルウェア処理部122Bと、を含む。
HEMSアプリケーション処理部122Aは、ジグビー・ネットワーク10に含まれる機器200の数に応じて、第1のモード及び第2のモードのうち何れか一方を選択する。第1のモードでは、制御対象の機器200への通信経路をジグビー制御部112が管理する。第2のモードでは、制御対象の機器200への通信経路をHEMSアプリケーション処理部122Aが管理する。
なお、HEMSアプリケーション処理部122Aは、ジグビー制御部112が管理しているルーティング・テーブルに含まれる経路情報の数を、ジグビー・ネットワーク10に含まれる機器200の数としてもよい。或いは、HEMSアプリケーション処理部122Aは、制御対象の機器200の数(及びジグビー・モジュールの数)を把握していることが前提であり、当該把握している数をジグビー・ネットワーク10に含まれる機器200の数としてもよい。
ジグビー・ネットワーク10に含まれる機器200の数が、ジグビー制御部112が管理可能(保持可能)な経路情報の上限数に応じて定められる閾値以下である場合、HEMSアプリケーション処理部122Aは、第1のモードを選択する。これに対し、ジグビー・ネットワーク10に含まれる機器200の数が閾値を超えている場合、HEMSアプリケーション処理部122Aは、第2のモードを選択する。ここで、ジグビー制御部112が管理可能な経路情報の上限数(以下、単に「経路情報の上限数」と称する)は、ジグビー制御部112の性能(例えばメモリ容量)などに応じて予め設定されている。
例えば、閾値は、経路情報の上限数に所定のオフセット値αを加えた値である。第2のモードは、HEMSアプリケーション処理部122Aにおいて全機器200への通信経路を管理する必要があり、全体経路情報を更新し続ける必要がある。
したがって、第2のモードは、機器200の数が経路情報の上限数を大きく超える場合には妥当であるが、機器200の数が経路情報の上限数を若干超える程度の場合には、その少数の機器200のために全体経路情報を更新し続けることは、当該更新のための通信量が増大することとなり、適切でない。よって、経路情報の上限数に所定のオフセット値αを加えた値を閾値とし、当該閾値を超えた場合に第2のモードを選択することで、当該少数の機器200のために通信量が増大する事態を回避できる。
第2のモードにおいて、HEMSアプリケーション処理部122Aは、制御対象の機器200に宛てて送信するデータフレームを当該機器200の全体経路情報と共にジグビー・ミドルウェア処理部122Bに渡す。本実施形態では、データフレームは、送信すべきユーザ・データ(ペイロード)に加えて、宛先アドレス及び全体経路情報を含む。
その際、HEMSアプリケーション処理部122Aは、当該データフレームのフレームIDを、当該機器200に関する情報と対応付けて記憶する。ここで、当該機器200に関する情報とは、当該機器200のアドレスのみとしてもよく、当該機器200のアドレス及び全体経路情報としてもよい。また、フレームIDは、カウント値が有限のカウンタにより生成され、データフレームが作成される度に1インクリメントされる。そして、フレームIDは、当該カウンタのビット長の上限に達するとゼロに戻る。
なお、ジグビー・ミドルウェア処理部122Bは、フレームIDと、ジグビー規格で規定されるAPSカウンタのカウント値とを対応付けて管理している。ジグビー・ミドルウェア処理部122Bは、フレームID及びAPSカウンタ間の変換を行う。
図6及び図7は、機器200に対して送信したデータフレームのフレームIDを、機器200のアドレス及び全体経路情報に対応付ける場合のテーブル構成図である。HEMSアプリケーション処理部122Aは、図6又は図7に示すテーブルを記憶部121に記憶して管理する。
図6及び図7に示すように、HEMSアプリケーション処理部122Aは、機器200のアドレス(64ビット・アドレス、16ビット・アドレス)と、全体経路情報(ホップ数、ホップ毎のアドレス)と、フレームIDと、を対応付けて管理する。64ビット・アドレスは例えばMACアドレスであり、16ビット・アドレスは例えばIPアドレスである。ホップ数とは、対応する経路上のノード数であり、ホップ毎のアドレスとは、当該経路上の各ノードのアドレスである。
なお、図6では、最新のフレームIDのみをアドレス及び全体経路情報に対応付ける構成である。これに対し、図7では、1つのレコードに対して複数のフレームIDを対応付ける構成である。
第2のモードにおいて、HEMSアプリケーション処理部122Aは、下位のレイヤ(APSレイヤ、NWKレイヤ、MACレイヤ、PHYレイヤ)において送信に失敗したデータフレームのフレームIDをジグビー・ミドルウェア処理部122Bから通知された場合に、当該通知されたフレームIDと、図6又は図7に示すテーブルと、に基づいて、当該送信に失敗したデータフレームの宛先(宛先アドレス)を特定する。
そして、HEMSアプリケーション処理部122Aは、下位のレイヤにおいて送信に失敗したデータフレームの宛先(宛先アドレス)を特定した場合には、当該宛先の機器200についての全体経路情報を改めて取得する。上述したように、当該宛先(宛先アドレス)を含む経路要求メッセージをブロードキャストで送信し、当該宛先の機器200が、応答メッセージをユニキャストで返信することにより、HEMSアプリケーション処理部122Aは、当該宛先の機器200への経路(全体経路情報)を取得することができる。
このようにして、第2のモードを使用中に、ジグビー・ネットワーク10に含まれる機器200がジグビー・ネットワーク10から離脱しても、当該機器200との通信を継続することが可能になる。
しかしながら、フレームIDは有限であるため、正常に送信完了した宛先に対してフレームIDが対応付けられたままであると、フレームIDが1周して、別の宛先に対して同じフレームIDが対応付けられてしまう。この場合、フレームIDを基に宛先を一意に特定することができない。
そこで、HEMSアプリケーション処理部122Aは、ジグビー・ミドルウェア処理部122Bから通知されるステータス(ACK/NACK)に基づき、図6又は図7に示すテーブルのうち、下位のレイヤにおいて送信に成功したデータフレーム(すなわち、ACKが通知されたデータフレーム)のフレームIDを破棄する。
ただし、ジグビー・プロトコルでは、通信量削減のために、ACKを送信しない設定とすることもできるため、そのような場合には、HEMSアプリケーション処理部122Aは、図6又は図7に示すテーブルのうち、現在使用中のフレームIDとの差が閾値以上であるフレームIDを破棄してもよい。言い換えると、HEMSアプリケーション処理部122Aは、フレームIDが一定数進んだときに、当該一定数よりも古いフレームIDを破棄する。
(4)動作
以下において、HEMS100の動作を中心に、ジグビー・ネットワーク10の動作を説明する。
(4.1)モード選択動作
図8は、HEMS100によって行われるモード選択動作のフロー図である。
図8に示すように、ステップS1において、HEMSアプリケーション処理部122Aは、ジグビー・ネットワーク10に含まれる機器200の数を一定値(閾値)と比較する。上述したように、閾値は、経路情報の上限数(例えば40)に、所定のオフセット値α(例えば20)を加えた値である。
ジグビー・ネットワーク10に含まれる機器200の数が閾値以下である場合(ステップS11;Yes)、HEMSアプリケーション処理部122Aは、処理をステップS12に進めて、第1のモードを選択する。
これに対し、ジグビー・ネットワーク10に含まれる機器200の数が閾値を超える場合(ステップS11;No)、HEMSアプリケーション処理部122Aは、処理をステップS13に進めて、第2のモードを選択する。
(4.2)第2のモード
次に、第2のモードの動作パターン1及び2を説明する。動作パターン1は、ACK有りの場合の動作パターンであり、動作パターン2は、ACK無しの場合の動作パターンである。
(4.2.1)動作パターン1
図9は、第2のモードの動作パターン1におけるHEMSアプリケーション処理部122Aの動作フロー図である。
図9に示すように、ステップS11において、HEMSアプリケーション処理部122Aは、制御対象の機器200への通信経路を示す全体経路情報をジグビー・ミドルウェア処理部122Bに渡す。
ステップS12において、HEMSアプリケーション処理部122Aは、フレームIDを1インクリメントし、制御対象の機器200に送信すべきデータフレームを作成する。
ステップS13において、HEMSアプリケーション処理部122Aは、フレームIDを、制御対象の機器200の宛先アドレスと対応付けて記憶する。その結果、図6又は図7に示すテーブルが更新される。
ステップS14において、HEMSアプリケーション処理部122Aは、作成したデータフレームをジグビー・ミドルウェア処理部122Bに渡し、その結果が通知されるまで待つ。
ステップS15において、HEMSアプリケーション処理部122Aは、図6又は図7に示すテーブルのうち、ジグビー・ミドルウェア処理部122Bからの通知に含まれるフレームIDと一致するフレームIDを含む要素(レコード)を見付ける。
ステップS16において、HEMSアプリケーション処理部122Aは、ジグビー・ミドルウェア処理部122Bからの通知が送信成功(ACK)であるか送信失敗(NACK)であるかを確認する。
HEMSアプリケーション処理部122Aは、送信成功(ACK)であれば処理をステップS17に進める。ステップS17において、HEMSアプリケーション処理部122Aは、図6又は図7に示すテーブルのうち、ジグビー・ミドルウェア処理部122Bからの通知に含まれるフレームIDと一致するフレームIDを破棄する。
これに対し、送信失敗(NACK)であれば、HEMSアプリケーション処理部122Aは、処理をステップS18に進める。ステップS18において、HEMSアプリケーション処理部122Aは、図6又は図7に示すテーブルのうち、ジグビー・ミドルウェア処理部122Bからの通知に含まれるフレームIDと一致するフレームIDを含む要素(レコード)に基づき、宛先アドレスを特定し、当該宛先アドレスについての全体経路情報を取得するようジグビー・ミドルウェア処理部122Bに要求する。その後、HEMSアプリケーション処理部122Aは、処理をステップS17に進める。
図10は、第2のモードの動作パターン1において送信成功(ACK)の場合の動作シーケンス図である。ここでは、制御対象の機器200を機器200−3としている。
図10に示すように、ステップS101において、HEMSアプリケーション処理部122Aは、機器200−3宛てのデータフレームを作成するとともに、当該データフレームのフレームIDを機器200−3のアドレスと対応付けて記憶する。
ステップS102において、HEMSアプリケーション処理部122Aは、作成したデータフレームをジグビー・ミドルウェア処理部122Bに渡す。
ステップS103において、ジグビー・ミドルウェア処理部122Bは、HEMSアプリケーション処理部122Aから受け取ったデータフレームにヘッダを付加した後、当該データフレームをジグビー・モジュール110に渡す。
ステップS104において、ジグビー・モジュール110は、機器200−1のジグビー・モジュール210−1に対してデータフレームを送信する。なお、ジグビー・モジュール間の通信においては、データフレームは複数のデータ単位(プロトコル・データ・ユニット)に分割して送信される。
ステップS105において、機器200−1のジグビー・モジュール210−1は、受信したデータフレームに含まれる全体経路情報に基づいて、当該データフレームを機器200−2のジグビー・モジュール210−2に転送する。
ステップS106において、機器200−2のジグビー・モジュール210−2は、受信したデータフレームに含まれる全体経路情報に基づいて、当該データフレームを機器200−3のジグビー・モジュール210−3に転送する。
ステップS107において、機器200−3のジグビー・モジュール210−3は、受信したデータフレームに対するACKを機器200−2のジグビー・モジュール210−2に送信する。ACKは、上述したAPSカウンタの値を含む。
ステップS108において、機器200−3のジグビー・モジュール210−3は、受信したデータフレームを上位レイヤ(ジグビー・ミドルウェア)に渡す。
ステップS109において、機器200−3のジグビー・ミドルウェアは、ジグビー・モジュール210−3から受け取ったデータフレームを機器アプリケーションに渡す。
一方、ステップS110において、機器200−2のジグビー・モジュール210−2は、受信したACKを機器200−1のジグビー・モジュール210−1に転送する。
ステップS111において、機器200−1のジグビー・モジュール210−1は、受信したACKをHEMS100のジグビー・モジュール110に転送する。
ステップS112において、HEMS100のジグビー・モジュール110は、受信したACKを上位レイヤ(ジグビー・ミドルウェア処理部122B)に渡す。
ステップS113において、ジグビー・ミドルウェア処理部122Bは、受信したACKに含まれるAPSカウンタの値をフレームIDに変換して、当該フレームID及び送信成功の旨(ACK)をHEMSアプリケーション処理部122Aに渡す。
ステップS114において、HEMSアプリケーション処理部122Aは、送信成功(ACK)が通知されたデータフレームのフレームIDを破棄する。
図11は、第2のモードの動作パターン1において送信失敗(NACK)の場合の動作シーケンス図である。ここでは、制御対象の機器200を機器200−3としている。
図11に示すように、ステップS131において、HEMSアプリケーション処理部122Aは、機器200−3宛てのデータフレームを作成するとともに、当該データフレームのフレームIDを機器200−3のアドレスと対応付けて記憶する。
ステップS132において、HEMSアプリケーション処理部122Aは、作成したデータフレームをジグビー・ミドルウェア処理部122Bに渡す。
ステップS133において、ジグビー・ミドルウェア処理部122Bは、HEMSアプリケーション処理部122Aから受け取ったデータフレームにヘッダを付加した後、当該データフレームをジグビー・モジュール110に渡す。
ステップS134において、ジグビー・モジュール110は、機器200−1のジグビー・モジュール210−1に対してデータフレームを送信する。なお、ジグビー・モジュール間の通信においては、データフレームは複数のデータ単位(プロトコル・データ・ユニット)に分割して送信される。
ステップS135において、機器200−1のジグビー・モジュール210−1は、受信したデータフレームに含まれる全体経路情報に基づいて、当該データフレームを機器200−2のジグビー・モジュール210−2に転送する。
ステップS136において、機器200−1のジグビー・モジュール210−1は、ジグビー・モジュール間の通信(例えばMACレイヤ間の通信)でACKが得られないことから、ジグビー・モジュール210−2へのデータ転送に失敗したと判断する。
ステップS137において、機器200−1のジグビー・モジュール210−1は、宛先(機器200−3)のアドレスとNACKとを含むネットワーク・ステータスをHEMS100のジグビー・モジュール110に通知する。
ステップS138において、HEMS100のジグビー・モジュール110は、宛先(機器200−3)のアドレスとNACKとを含むエラー情報をジグビー・ミドルウェア処理部122Bに渡す。NACKは、上述したAPSカウンタの値を含む。
ステップS139において、ジグビー・ミドルウェア処理部122Bは、NACKに含まれるAPSカウンタの値をフレームIDに変換して、当該フレームID及び送信失敗の旨(NACK)を含むエラー情報をHEMSアプリケーション処理部122Aに渡す。HEMSアプリケーション処理部122Aは、フレームIDに基づいて、機器200−3への送信に失敗したことを把握する。
ステップS140において、HEMSアプリケーション処理部122Aは、機器200−3についての全体経路情報を改めて取得するようジグビー・ミドルウェア処理部122Bに要求する。
ステップS141において、ジグビー・ミドルウェア処理部122Bは、全体経路情報を取得するための経路要求メッセージの送信をジグビー・モジュール110に要求する。
ステップS142において、ジグビー・モジュール110は、経路要求メッセージをブロードキャストで送信する。
ステップS143において、HEMSアプリケーション処理部122Aは、送信に失敗したデータフレームのフレームIDを破棄する。
(4.2.2)動作パターン2
図12は、第2のモードの動作パターン2におけるHEMSアプリケーション処理部122Aの動作フロー図である。
図12に示すように、ステップS21において、HEMSアプリケーション処理部122Aは、制御対象の機器200への通信経路を示す全体経路情報をジグビー・ミドルウェア処理部122Bに渡す。
ステップS22において、HEMSアプリケーション処理部122Aは、フレームIDを1インクリメントし、制御対象の機器200に送信すべきデータフレームを作成する。
ステップS23において、HEMSアプリケーション処理部122Aは、フレームIDを、制御対象の機器200の宛先アドレスと対応付けて記憶する。その結果、図6又は図7に示すテーブルが更新される。
ステップS24において、HEMSアプリケーション処理部122Aは、作成したデータフレームをジグビー・ミドルウェア処理部122Bに渡し、その結果が通知されるまで待つ。
ステップS25において、HEMSアプリケーション処理部122Aは、図6又は図7に示すテーブルのうち、ジグビー・ミドルウェア処理部122Bからの通知に含まれるフレームIDと一致するフレームIDを含む要素(レコード)を見付ける。
ステップS26において、HEMSアプリケーション処理部122Aは、ジグビー・ミドルウェア処理部122Bから送信失敗(NACK)が通知されたか否かを確認する。送信失敗(NACK)であれば、HEMSアプリケーション処理部122Aは、処理をステップS27に進める。
ステップS27において、HEMSアプリケーション処理部122Aは、図6又は図7に示すテーブルのうち、ジグビー・ミドルウェア処理部122Bからの通知に含まれるフレームIDと一致するフレームIDを含む要素(レコード)に基づき、宛先アドレスを特定する。
ステップS28において、HEMSアプリケーション処理部122Aは、当該宛先アドレスについての全体経路情報を取得するようジグビー・ミドルウェア処理部122Bに要求する。
ステップS29において、HEMSアプリケーション処理部122Aは、図6又は図7に示すテーブルのうち、ジグビー・ミドルウェア処理部122Bからの通知に含まれるフレームIDと一致するフレームIDを破棄する。
図13は、第2のモードの動作パターン2において送信成功(ACK)の場合の動作シーケンス図である。ここでは、制御対象の機器200を機器200−3としている。なお、送信失敗(NACK)の場合の動作については、動作パターン1と同様であるため、説明を省略する。
図13に示すように、ステップS201において、HEMSアプリケーション処理部122Aは、機器200−3宛てのデータフレームを作成するとともに、当該データフレームのフレームIDを機器200−3のアドレスと対応付けて記憶する。
ステップS202において、HEMSアプリケーション処理部122Aは、図6又は図7に示すテーブルのうち、現在使用中のフレームIDとの差が閾値以上であるフレームIDを破棄する。
ステップS203において、HEMSアプリケーション処理部122Aは、作成したデータフレームをジグビー・ミドルウェア処理部122Bに渡す。
ステップS204において、ジグビー・ミドルウェア処理部122Bは、HEMSアプリケーション処理部122Aから受け取ったデータフレームにヘッダを付加した後、当該データフレームをジグビー・モジュール110に渡す。
ステップS205において、ジグビー・モジュール110は、機器200−1のジグビー・モジュール210−1に対してデータフレームを送信する。なお、ジグビー・モジュール間の通信においては、データフレームは複数のデータ単位(プロトコル・データ・ユニット)に分割して送信される。
ステップS206において、ジグビー・モジュール110は、機器200−1のジグビー・モジュール210−1へのデータ転送に成功した旨を上位レイヤ(ジグビー・ミドルウェア処理部122B)に通知する。
ステップS207において、機器200−1のジグビー・モジュール210−1は、受信したデータフレームに含まれる全体経路情報に基づいて、当該データフレームを機器200−2のジグビー・モジュール210−2に転送する。
ステップS208において、機器200−2のジグビー・モジュール210−2は、受信したデータフレームに含まれる全体経路情報に基づいて、当該データフレームを機器200−3のジグビー・モジュール210−3に転送する。
ステップS209において、機器200−3のジグビー・モジュール210−3は、受信したデータフレームを上位レイヤ(ジグビー・ミドルウェア)に渡す。
ステップS210において、機器200−3のジグビー・ミドルウェアは、ジグビー・モジュール210−3から受け取ったデータフレームを機器アプリケーションに渡す。
(5)まとめ
以上説明したように、本実施形態に係るHEMS100は、機器200を制御するためのアプリケーションを処理するとともに、機器200毎に経路情報を管理するHEMSアプリケーション処理部122Aと、アプリケーションよりも下位のレイヤとアプリケーションとの中間に位置付けられるミドルウェアを処理するジグビー・ミドルウェア処理部122Bと、を有する。
HEMSアプリケーション処理部122Aは、制御対象の機器200に宛てて送信するデータフレームを当該機器200の経路情報と共にジグビー・ミドルウェア処理部122Bに渡す際に、当該データフレームのフレームIDを、当該機器200に関する情報と対応付けて記憶する。また、HEMSアプリケーション処理部122Aは、下位のレイヤにおいて送信に失敗したデータフレームのフレームIDをジグビー・ミドルウェア処理部122Bから通知された場合に、当該通知されたフレームIDと、当該記憶している情報と、に基づいて、当該送信に失敗したデータフレームの宛先を特定する。
このように、本実施形態に係るHEMS100は、下位のレイヤにおいてデータ送信に失敗した場合、アプリケーションが、「どの機器への」データ送信に失敗したのかを把握することができる。
本実施形態では、HEMSアプリケーション処理部122Aは、下位のレイヤにおいて送信に成功したデータフレームのフレームIDをジグビー・ミドルウェア処理部122Bから通知された場合に、記憶しているフレームIDのうち、当該通知されたフレームIDと一致するフレームIDを破棄する。
このように、不要となったフレームIDを破棄することで、フレームIDの重複が生じることを防止できる。
本実施形態では、HEMSアプリケーション処理部122Aは、記憶しているフレームIDのうち、現在使用中のフレームIDとの差が閾値以上であるフレームIDを破棄する。
このように、不要とみなされるフレームIDを破棄することで、フレームIDの重複が生じることを防止できる。
本実施形態では、HEMSアプリケーション処理部122Aは、送信に失敗したデータフレームの宛先を特定した場合に、当該宛先の機器200への通信経路を示す情報を取得する。
このように、送信に失敗したデータフレームの宛先の機器200への通信経路を示す情報を改めて取得することで、当該宛先の機器200との通信が不能になることを回避できる。
(6)その他の実施形態
上記のように、本発明は実施形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施形態、実施例及び運用技術が明らかとなる。
例えば、上述した実施形態では、第2のモードにおいて、送信に失敗したデータフレームの宛先がジグビー・ミドルウェア処理部122BからHEMSアプリケーション処理部122Aに通知されない場合の動作を説明したが、当該宛先が通知される場合には、HEMSアプリケーション処理部122Aは、当該通知された宛先を利用してもよい。
上述した実施形態では、自律分散型の無線ネットワークを実現するための通信プロトコルとしてジグビー・プロトコルを使用していたが、他の通信プロトコルを使用してもよい。
また、上述した実施形態では、住宅単位で電力管理を行うための制御装置であるHEMS100を説明したが、ビルを対象としたBEMSや、工場を対象としたFEMSなどであってもよい。