(57)【特許請求の範囲】
【請求項１】
少なくとも１つの機器と共に自律分散型の無線ネットワークを構成する制御装置であって、
前記機器を制御するためのアプリケーションを処理するとともに、前記機器毎に経路情報を管理するアプリケーション処理部と、
前記アプリケーションよりも下位のレイヤと前記アプリケーションとの中間に位置付けられるミドルウェアを処理するミドルウェア処理部と、を有し、
前記アプリケーション処理部は、
制御対象の機器に宛てて送信するデータフレームを当該機器の経路情報と共に前記ミドルウェア処理部に渡す際に、当該データフレームのフレーム識別子を、当該機器に関する情報と対応付けて記憶するフレーム管理手段と、
前記下位のレイヤにおいて送信に失敗したデータフレームのフレーム識別子を前記ミドルウェア処理部から通知された場合に、当該通知されたフレーム識別子と、前記フレーム管理手段で記憶している情報と、に基づいて、当該送信に失敗したデータフレームの宛先を特定する宛先特定手段と、
を含むことを特徴とする制御装置。
【請求項２】
前記フレーム管理手段は、制御対象の機器に宛てて送信するデータフレームを当該機器の経路情報と共に前記ミドルウェア処理部に渡す際に、当該データフレームのフレーム識別子を、当該経路情報と対応付けて記憶することを特徴とする請求項１に記載の制御装置。
【請求項３】
前記フレーム管理手段は、前記下位のレイヤにおいて送信に成功したデータフレームのフレーム識別子を前記ミドルウェア処理部から通知された場合に、前記記憶しているフレーム識別子のうち、当該通知されたフレーム識別子と一致するフレーム識別子を破棄することを特徴とする請求項１又は２に記載の制御装置。
【請求項４】
前記フレーム管理手段は、前記記憶しているフレーム識別子のうち、現在使用中のフレーム識別子との差が閾値以上であるフレーム識別子を破棄することを特徴とする請求項１又は２に記載の制御装置。
【請求項５】
前記アプリケーション処理部は、前記送信に失敗したデータフレームの宛先が前記宛先特定手段により特定された場合に、当該宛先の機器への通信経路を示す情報を取得する経路取得手段をさらに有することを特徴とする請求項１から４の何れか一項に記載の制御装置。
【請求項６】
少なくとも１つの機器と共に自律分散型の無線ネットワークを構成する制御装置に適用される通信制御方法であって、
前記機器を制御するためのアプリケーションを処理するとともに、前記機器毎に経路情報を管理するステップＡと、
前記アプリケーションよりも下位のレイヤと前記アプリケーションとの中間に位置付けられるミドルウェアを処理するステップＢと、を有し、
前記ステップＡは、
制御対象の機器に宛てて送信するデータフレームを当該機器の経路情報と共に前記アプリケーションから前記ミドルウェアに渡す際に、前記アプリケーションが、当該データフレームのフレーム識別子を、当該機器に関する情報と対応付けて記憶するステップＡ１と、
前記下位のレイヤにおいて送信に失敗したデータフレームのフレーム識別子が前記ミドルウェアから前記アプリケーションに通知された場合に、前記アプリケーションが、当該通知されたフレーム識別子と、前記ステップＡ１で記憶した情報と、に基づいて、当該送信に失敗したデータフレームの宛先を特定するステップＡ２と、
を含むことを特徴とする通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、少なくとも１つの機器と共に自律分散型の無線ネットワークを構成する制御装置及び通信制御方法に関する。 
【背景技術】
【０００２】
近年、省エネルギー化に対する関心が高まっており、電力の需要家単位で電力管理を行うためのエネルギー管理システム（ＥＭＳ）が注目されている。住宅単位で電力管理を行うための制御装置は、宅内エネルギー管理システム（ＨＥＭＳ）と称されている。
【０００３】
ＥＭＳは、需要家に設けられた近距離通信ネットワーク（ＰＡＮ：Ｐｅｒｓｏｎａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を用いて、当該需要家に設けられた分散型電源、家電及びセンサなどの機器との通信を行い、これらの機器を制御する。
【０００４】
このような近距離通信ネットワークは、インフラ・ネットワークに依存しない、すなわち、自律分散型の無線ネットワークである。このようなネットワークを実現するための通信プロトコルの一つとして、ジグビー（Ｚｉｇｂｅｅ（登録商標））が知られている（例えば、特許文献１参照）。
【０００５】
ジグビーは、物理レイヤ（ＰＨＹレイヤ）及びＭＡＣレイヤには、ＩＥＥＥ８０２．１５．４を採用し、ネットワークレイヤ（ＮＷＫレイヤ）及びアプリケーション・サポート・サブレイヤ（ＡＰＳレイヤ）には、ジグビー・アライアンスで策定されたプロトコル（ジグビー・プロトコル）を採用する。ＡＰＳレイヤの上位にはアプリケーションレイヤ（ＡＰＰレイヤ）が位置付けられる。
【０００６】
また、ジグビー・ネットワークにおいて、当該ネットワークを管理するデバイスはジグビー・コーディネータ（ＺＣ）、中継（ルーティング）を行うデバイスはジグビー・ルータ（ＺＲ）、末端のデバイスはジグビー・エンドデバイス（ＺＥＤ）と称される。よって、ＥＭＳは、ＺＣに相当するジグビー・モジュールを有し、分散型電源、家電及びセンサなどの各機器は、ＺＲ又はＺＥＤに相当するジグビー・モジュールを有している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−１２９０８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ＺＣ及びＺＲに相当するジグビー・モジュールは、ジグビー・ネットワークに含まれる機器毎の経路情報をルーティング・テーブル（経路表）として管理する。ここで、ジグビー・ネットワークに含まれる機器が多い場合には、ジグビー・モジュールが管理可能な経路情報の範囲内に収まらなくなる問題があるが、アプリケーションにおいて経路情報を管理することで、そのような問題を回避することができる。
【０００９】
しかしながら、アプリケーションには下位のレイヤの情報が必ずしも十分に伝達されるとは限らない。このため、下位のレイヤにおいてデータ送信に失敗した場合、アプリケーションは、データ送信に失敗したことを把握できても、「どの機器への」データ送信に失敗したのかを把握することは困難であった。
【００１０】
そこで、本発明は、どの機器へのデータ送信に失敗したのかをアプリケーションにおいて把握できる制御装置及び通信制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決するために、本発明は以下のような特徴を有している。
【００１２】
本発明の制御装置は、少なくとも１つの機器（例えば、機器２００）と共に自律分散型の無線ネットワーク（例えば、ジグビー・ネットワーク１０）を構成する制御装置（例えば、ＨＥＭＳ１００）であって、前記機器を制御するためのアプリケーションを処理するとともに、前記機器毎に経路情報を管理するアプリケーション処理部（例えば、ＨＥＭＳアプリケーション処理部１２２Ａ）と、前記アプリケーションよりも下位のレイヤと前記アプリケーションとの中間に位置付けられるミドルウェアを処理するミドルウェア処理部（例えば、ジグビー・ミドルウェア処理部１２２Ｂ）と、を有し、前記アプリケーション処理部は、制御対象の機器に宛てて送信するデータフレームを当該機器の経路情報と共に前記ミドルウェア処理部に渡す際に、当該データフレームのフレーム識別子を、当該機器に関する情報と対応付けて記憶するフレーム管理手段（例えば、ＨＥＭＳアプリケーション処理部１２２Ａ）と、前記下位のレイヤにおいて送信に失敗したデータフレームのフレーム識別子を前記ミドルウェア処理部から通知された場合に、当該通知されたフレーム識別子と、前記フレーム管理手段で記憶している情報と、に基づいて、当該送信に失敗したデータフレームの宛先を特定する宛先特定手段（例えば、ＨＥＭＳアプリケーション処理部１２２Ａ）と、を含むことを特徴とする。
【００１３】
前記フレーム管理手段は、制御対象の機器に宛てて送信するデータフレームを当該機器の経路情報と共に前記ミドルウェア処理部に渡す際に、当該データフレームのフレーム識別子を、当該経路情報と対応付けて記憶してもよい。
【００１４】
前記フレーム管理手段は、前記下位のレイヤにおいて送信に成功したデータフレームのフレーム識別子を前記ミドルウェア処理部から通知された場合に、前記記憶しているフレーム識別子のうち、当該通知されたフレーム識別子と一致するフレーム識別子を破棄してもよい。
【００１５】
前記フレーム管理手段は、前記記憶しているフレーム識別子のうち、現在使用中のフレーム識別子との差が閾値以上であるフレーム識別子を破棄してもよい。
【００１６】
前記アプリケーション処理部は、前記送信に失敗したデータフレームの宛先が前記宛先特定手段により特定された場合に、当該宛先の機器への通信経路を示す情報を取得する経路取得手段（例えば、ＨＥＭＳアプリケーション処理部１２２Ａ）をさらに有してもよい。
【００１７】
本発明の通信制御方法は、少なくとも１つの機器と共に自律分散型の無線ネットワークを構成する制御装置に適用される通信制御方法であって、前記機器を制御するためのアプリケーションを処理するとともに、前記機器毎に経路情報を管理するステップＡと、前記アプリケーションよりも下位のレイヤと前記アプリケーションとの中間に位置付けられるミドルウェアを処理するステップＢと、を有し、前記ステップＡは、制御対象の機器に宛てて送信するデータフレームを当該機器の経路情報と共に前記アプリケーションから前記ミドルウェアに渡す際に、前記アプリケーションが、当該データフレームのフレーム識別子を、当該機器に関する情報と対応付けて記憶するステップＡ１と、前記下位のレイヤにおいて送信に失敗したデータフレームのフレーム識別子が前記ミドルウェアから前記アプリケーションに通知された場合に、前記アプリケーションが、当該通知されたフレーム識別子と、前記ステップＡ１で記憶した情報と、に基づいて、当該送信に失敗したデータフレームの宛先を特定するステップＡ２と、を含むことを特徴とする。
【発明の効果】
【００１８】
本発明によれば、どの機器へのデータ送信に失敗したのかをアプリケーションにおいて把握できる制御装置及び通信制御方法を提供できる。
【図面の簡単な説明】
【００１９】
【図１】実施形態に係るジグビー・ネットワークの全体構成図である。
【図２】実施形態に係るジグビー・ネットワークにおけるプロトコル・スタック図である。
【図３】実施形態に係るＨＥＭＳにおけるＡＰＰレイヤの詳細を示す図である。
【図４】実施形態に係る第２のモードを使用中に、ジグビー・ネットワークに含まれる機器がジグビー・ネットワークから離脱した場合の動作を示す。
【図５】実施形態に係るＨＥＭＳのブロック図である。
【図６】実施形態に係るフレームＩＤを機器のアドレス及び全体経路情報に対応付ける場合のテーブル構成図である（構成例１）。
【図７】実施形態に係るフレームＩＤを機器のアドレス及び全体経路情報に対応付ける場合のテーブル構成図である（構成例２）。
【図８】実施形態に係るＨＥＭＳによって行われるモード選択動作のフロー図である。
【図９】実施形態に係る第２のモードの動作パターン１におけるＨＥＭＳアプリケーション処理部の動作フロー図である。
【図１０】実施形態に係る第２のモードの動作パターン１において送信成功（ＡＣＫ）の場合の動作シーケンス図である。
【図１１】実施形態に係る第２のモードの動作パターン１において送信失敗（ＮＡＣＫ）の場合の動作シーケンス図である。
【図１２】実施形態に係る第２のモードの動作パターン２におけるＨＥＭＳアプリケーション処理部の動作フロー図である。
【図１３】実施形態に係る第２のモードの動作パターン２において送信成功（ＡＣＫ）の場合の動作シーケンス図である。
【発明を実施するための形態】
【００２０】
図面を参照して、本発明の実施形態について、（１）全体構成、（２）プロトコル・スタック、（３）ＨＥＭＳの構成、（４）動作、（５）まとめ、（６）その他の実施形態の順に説明する。以下の実施形態に係る図面において、同一又は類似の部分には同一又は類似の符号を付す。
【００２１】
（１）全体構成
図１は、本実施形態に係るジグビー・ネットワーク１０の全体構成図である。
【００２２】
図１に示すように、本実施形態に係るジグビー・ネットワーク１０は、ＨＥＭＳ１００と複数の機器２００とによって構成される。図１には、ＨＥＭＳ１００以外に４台の機器２００−１〜２００−４を図示しているが、ジグビー・ネットワーク１０を構成する各機器２００は、機器固有の６４ビットアドレスと共に、当該ネットワーク内で使用される１６ビットアドレスを持つため、１ネットワーク内に最大で６５５３６台までのデバイス（ＨＥＭＳ１００及び機器２００）を接続できる。
【００２３】
ＨＥＭＳ１００及び複数の機器２００は、住宅に設けられる。ＨＥＭＳ１００は、住宅単位で電力管理を行うための制御装置に相当する。機器２００は、例えば、住宅に設けられた分散型電源、家電、センサなどである。
【００２４】
ＨＥＭＳ１００は、複数の機器２００との通信を行い、これらの機器２００を制御する。ＨＥＭＳ１００は、ジグビー・モジュール１１０及びＨＥＭＳ制御部１２０を有する。ジグビー・モジュール１１０は、ジグビー・ネットワーク１０のネットワーク管理を行うＺＣに相当する。また、ジグビー・モジュール１１０は、隣接する機器２００-１及び２２０-４との無線通信を行う。ＨＥＭＳ制御部１２０は、ＨＥＭＳアプリケーションを実行する。当該ＨＥＭＳアプリケーションは、ジグビー・モジュール１１０を用いて機器２００との通信を行い、当該機器２００を制御する。例えば、ＨＥＭＳアプリケーションは、機器２００がエアコンであればその設定温度を制御したり、機器２００がセンサであればその測定値を報告させたりする。
【００２５】
機器２００−１は、ジグビー・モジュール２１０−１及び機器制御部２２０−１を有する。ジグビー・モジュール２１０−１は、ジグビー・ネットワーク１０におけるルーティングを行うＺＲに相当する。また、ジグビー・モジュール２１０−１は、隣接するＨＥＭＳ１００及び機器２００−２との無線通信を行う。機器制御部２２０−１は、機器アプリケーションを実行する。機器アプリケーションは、ジグビー・モジュール２１０−１を用いてＨＥＭＳ１００との通信を行い、ＨＥＭＳ１００による制御に従って自機器２００−１を動作させる。
【００２６】
機器２００−２は、ジグビー・モジュール２１０−２及び機器制御部２２０−２を有する。ジグビー・モジュール２１０−２は、ジグビー・ネットワーク１０におけるルーティングを行うＺＲに相当する。また、ジグビー・モジュール２１０−２は、隣接する機器制御部２２０−１及び２００−３との無線通信を行う。機器制御部２２０−２は、機器アプリケーションを実行する。当該機器アプリケーションは、ジグビー・モジュール２１０−２を用いてＨＥＭＳ１００との通信を行い、ＨＥＭＳ１００による制御に従って自機器２００−２を動作させる。
【００２７】
機器２００−３は、ジグビー・モジュール２１０−３及び機器制御部２２０−３を有する。ジグビー・モジュール２１０−３は、ジグビー・ネットワーク１０における末端デバイスであるＺＥＤに相当する。また、ジグビー・モジュール２１０−３は、隣接する機器２００−２との無線通信を行う。機器制御部２２０−３は、機器アプリケーションを実行する。機器アプリケーションは、ジグビー・モジュール２１０−３を用いてＨＥＭＳ１００との通信を行い、ＨＥＭＳ１００による制御に従って自機器２００−３を動作させる。
【００２８】
機器２００−４は、ジグビー・モジュール２１０−４及び機器制御部２２０−４を有する。ジグビー・モジュール２１０−４は、ジグビー・ネットワーク１０における末端デバイスであるＺＥＤに相当する。また、ジグビー・モジュール２１０−４は、隣接するＨＥＭＳ１００との無線通信を行う。機器制御部２２０−４は、機器アプリケーションを実行する。機器アプリケーションは、ジグビー・モジュール２１０−４を用いてＨＥＭＳ１００との通信を行い、ＨＥＭＳ１００による制御に従って自機器２００−４を動作させる。
【００２９】
（２）プロトコル・スタック
図２は、ジグビー・ネットワーク１０におけるプロトコル・スタック図である。図３は、ＨＥＭＳ１００におけるＡＰＰレイヤの詳細を示す図である。
【００３０】
図２に示すように、ジグビー・ネットワーク１０は、ＰＨＹレイヤ及びＭＡＣレイヤには、ＩＥＥＥ８０２．１５．４を採用し、ＮＷＫレイヤ及びＡＰＳレイヤには、ジグビー・アライアンスで策定されたプロトコル（ジグビー・プロトコル）を採用する。
【００３１】
ジグビー・モジュール１１０及び２１０のそれぞれには、ＩＥＥＥ８０２．１５．４に準拠したＰＨＹレイヤ及びＭＡＣレイヤと、ジグビー・プロトコルに準拠したＮＷＫレイヤ及びＡＰＳレイヤと、が実装される。これに対し、ＨＥＭＳ制御部１２０及び機器制御部２２０には、ＡＰＰレイヤが実装される。
【００３２】
図３に示すように、ＨＥＭＳ１００におけるＡＰＰレイヤは、ＨＥＭＳアプリケーション及びジグビー・ミドルウェアを含む。ＨＥＭＳアプリケーションは、機器２００を制御するためのアプリケーションである。ジグビー・ミドルウェアは、アプリケーションよりも下位のレイヤ（ＡＰＳレイヤ、ＮＷＫレイヤ、ＭＡＣレイヤ、ＰＨＹレイヤ）とアプリケーションとの中間に位置付けられる。
【００３３】
なお、ＡＰＰレイヤには、ユース・ケースに応じたプロファイルが適用される。本実施形態では、ＡＰＰレイヤには、ＨＡ（Ｈｏｍｅ  Ａｕｔｏｍａｔｉｏｎ）プロファイルが適用される。ＨＡプロファイルは、ＺＣＬ（ＺｉｇＢｅｅ（登録商標）  Ｃｌｕｓｔｅｒ  Ｌｉｂｒａｒｙ）でフォーマットが規定されており、ＨＥＭＳアプリケーションは、ＺＣＬに従ったフォーマットのデータを機器アプリケーションと送受信する。
【００３４】
ここで、ＨＥＭＳ１００から、機器２００−１及び機器２００−２を経由して、機器２００−３にデータを転送する際の一般的な動作を説明する。
【００３５】
図２に示すように、ＨＥＭＳ１００のＡＰＰレイヤは、宛先アドレスを指定して、ＡＰＳレイヤに対して送信要求を行う。当該データは、ＡＰＳレイヤでヘッダが付加されてＮＷＫレイヤに渡される。
【００３６】
ＮＷＫレイヤは、ジグビー・ネットワーク１０に含まれる機器２００毎の経路情報をルーティング・テーブルとして管理している。ここで経路情報とは、機器２００宛てのデータを適切な隣接ノードに転送するための情報であり、例えば当該機器２００のアドレスに転送先の隣接ノードのアドレスが対応付けられたものである。ＮＷＫレイヤは、機器２００−３を宛先とするデータを受け取ると、当該経路情報を参照して、当該データを機器２００−１に送信するよう下位レイヤ（ＭＡＣレイヤ）を制御する。
【００３７】
ＭＡＣレイヤは、ＮＷＫレイヤからデータを受け取り、ヘッダを付加してＰＨＹレイヤに渡す。そして、ＰＨＹレイヤは、ＭＡＣレイヤからデータを受け取ると、当該データを無線で送信する。
【００３８】
機器２００−１のＰＨＹレイヤは、ＨＥＭＳ１００のＰＨＹレイヤからのデータを無線で受信して、ＭＡＣレイヤに渡す。ＭＡＣレイヤは、ＰＨＹレイヤから受け取ったデータをＮＷＫレイヤに渡す。
【００３９】
ＮＷＫレイヤは、ジグビー・ネットワーク１０に含まれる機器２００毎の経路情報をルーティング・テーブルとして管理している。ＮＷＫレイヤは、機器２００−３を宛先とするデータを受け取ると、当該経路情報を参照して、当該データを機器２００−２に送信するよう下位レイヤ（ＭＡＣレイヤ）を制御する。
【００４０】
ＭＡＣレイヤは、ＮＷＫレイヤからデータを受け取り、ヘッダを付加してＰＨＹレイヤに渡す。そして、ＰＨＹレイヤは、ＭＡＣレイヤからデータを受け取ると、当該データを無線で送信する。
【００４１】
機器２００−２においても機器２００−１と同様の処理を行った後、データを機器２００−３に無線で送信する。
【００４２】
機器２００−３のＰＨＹレイヤは、機器２００−３のＰＨＹレイヤからのデータを無線で受信して、ＭＡＣレイヤに渡す。ＭＡＣレイヤは、ＰＨＹレイヤから受け取ったデータをＮＷＫレイヤに渡す。
【００４３】
ＮＷＫレイヤは、ＭＡＣレイヤから受け取ったデータの宛先が自機器２００−３であることを認識し、当該データを上位レイヤ（ＡＰＳレイヤ）に渡す。ＡＰＳレイヤは、ＮＷＫレイヤから受け取ったデータをＡＰＰレイヤに渡す。そして、ＡＰＰレイヤは、ＡＰＳレイヤから受け取ったデータを解釈して、当該データに応じた処理を行う。
【００４４】
このように、一般的な方法において、ジグビー・ネットワーク１０における経路制御（ルーティング）は、主としてＮＷＫレイヤで行われる。しかしながら、ＮＷＫレイヤを司るジグビー・モジュールは、管理可能な経路情報の数に上限がある。ＮＷＫレイヤは、ルーティング・テーブル上にない宛先をＡＰＰレイヤが指定した場合、送信に先立って、当該宛先についての経路情報を取得するためのルート解決を実施する。
【００４５】
したがって、ルート解決のためにネットワーク内でのやり取りに時間がかかることとなり、アプリケーションの送信処理開始時点から実際に宛先に届いてレスポンスを得られるまでの時間が、アプリケーションの既定のタイムアウトに間に合わないという問題がある。
【００４６】
そこで、本実施形態では、上述した一般的な方法を第１のモードとして使用し、ＨＥＭＳ１００のＡＰＰレイヤ（ＨＥＭＳアプリケーション）が経路制御を行う新たな方法を第２のモードとして使用する。
【００４７】
第２のモードにおいて、ＨＥＭＳ１００のＡＰＰレイヤ（ＨＥＭＳアプリケーション）は、ジグビー・ネットワーク１０に含まれる機器２００毎に、通信経路全体の情報（以下、「全体経路情報」と称する）を管理する。例えば、機器２００−３についての全体経路情報は、機器２００−１、機器２００−２、及び機器２００−３の順に、当該機器２００のアドレスを含む。
【００４８】
ＨＥＭＳ１００のＡＰＰレイヤ（ＨＥＭＳアプリケーション）は、機器２００−３に対する送信を行う場合に、ＡＰＳレイヤに対して送信要求を行うとともに、機器２００−３についての全体経路情報をＡＰＳレイヤに渡す。この場合、ＮＷＫレイヤは、ＨＥＭＳアプリケーションが指定した通信経路に従って転送先ノードを決定することになる。
【００４９】
このように、ＨＥＭＳアプリケーションにおいて途中経路も指定して送信することで、アプリケーションの既定のタイムアウトに間に合わないという問題を解決することができる。ただし、第２のモードは、ＨＥＭＳアプリケーションにおいて全機器２００への経路を把握しておく必要があり、その把握のために全体経路情報を更新し続ける必要がある。
【００５０】
したがって、ジグビー・ネットワーク１０に含まれる機器２００の数が多い場合にのみ、第１のモードではなく、第２のモードを使用することが有効である。以下においては、第２のモードを使用するケース、すなわち、ジグビー・ネットワーク１０に含まれる機器２００の数が多いケースを主として説明する。
【００５１】
図４は、第２のモードを使用中に、ジグビー・ネットワーク１０に含まれる機器２００がジグビー・ネットワーク１０から離脱した場合の動作を示す。ここでは、機器２００−２が、例えば電源をオフした等により動作を停止したと仮定する。ＨＥＭＳアプリケーションが機器２００−３への送信について途中経路に機器２００−２を指定している場合において、機器２００−２が離脱すると、当然通信は成功しない。よって、ＨＥＭＳアプリケーションは、機器２００−３への経路（全体経路情報）を再度取得する必要がある。具体的には、ＨＥＭＳ１００は、機器２００−３を宛先とする経路要求メッセージをブロードキャストで送信し、機器２００−３は、当該経路要求メッセージを受信すると、経路を記録するための応答メッセージをユニキャストでＨＥＭＳ１００に送信する。これにより、ＨＥＭＳ１００（ＨＥＭＳアプリケーション）は、機器２００−３への経路（全体経路情報）を取得することができる。
【００５２】
図４に示すように、第２のモードを使用中に、ジグビー・ネットワーク１０に含まれる機器２００−２がジグビー・ネットワーク１０から離脱すると、機器２００−１のＮＷＫレイヤは、機器２００−２へのデータ転送に失敗したことを検知し、ＨＥＭＳ１００のＮＷＫレイヤに対してネットワーク・ステータスを報告する。当該ネットワーク・ステータスは、元のデータフレームの宛先（機器２００−３）のアドレス及びステータス（ＡＣＫ/ＮＡＣＫ）を含む。
【００５３】
また、ＨＥＭＳ１００のＡＰＳレイヤは、機器２００−３のＡＰＳレイヤからの確認応答（ＡＣＫ）を受信できないため、ＮＷＫレイヤの情報に基づいて、ＡＰＰレイヤのジグビー・ミドルウェアに対してエラー情報を通知する。当該エラー情報は、元のデータフレームの宛先（機器２００−３）のアドレス及びステータス（ＡＣＫ/ＮＡＣＫ）を含む。
【００５４】
しかしながら、ＡＰＰレイヤからジグビー・ミドルウェアを介してＨＥＭＳアプリケーションへエラー情報が流れる過程で、当該エラー情報に含まれる宛先アドレスが省略されて、ジグビー・ミドルウェアからＨＥＭＳアプリケーションに渡されるエラー情報は、「フレームＩＤ=ｘｘが送信失敗」だけになっていることがある。
【００５５】
この場合、ＨＥＭＳアプリケーションは、「どのデータフレーム」が送信に失敗したかを把握できても、「どの機器宛て」のデータフレームが送信に失敗したかを把握することができない。その結果、ＨＥＭＳアプリケーションは、機器２００−２がジグビー・ネットワーク１０から離脱しても、機器２００−３への経路（全体経路情報）を取得することができない。
【００５６】
そこで、本実施形態では、ＨＥＭＳアプリケーションは、第２のモードを使用中において、ジグビー・ミドルウェアにデータフレームを渡す際に、当該データフレームのフレームＩＤを当該データフレームの宛先アドレスと対応付けて記憶する。これにより、ジグビー・ミドルウェアからＨＥＭＳアプリケーションに渡されるエラー情報が「フレームＩＤ=ｘｘが送信失敗」だけになっていても、当該フレームＩＤを基に宛先アドレスを特定できる。
【００５７】
なお、データフレームとは、ＨＥＭＳアプリケーションからジグビー・ミドルウェアに渡されるデータの単位である。フレームＩＤとは、ＨＥＭＳアプリケーションからジグビー・ミドルウェアにデータフレームが渡される度にインクリメントされるデータフレーム識別番号（ＩＤ）である。
【００５８】
（３）ＨＥＭＳの構成
次に、ＨＥＭＳ１００の構成を説明する。図５は、ＨＥＭＳ１００のブロック図である。
【００５９】
図５に示すように、ＨＥＭＳ１００は、ジグビー・モジュール１１０及びＨＥＭＳ制御部１２０を有する。
【００６０】
ジグビー・モジュール１１０は、送受信部１１１及びジグビー制御部１１２を含む。送受信部１１１には、上述したＰＨＹレイヤの機能が実装される。送受信部１１１は、ＩＥＥＥ８０２．１５．４に従って無線信号を送受信する。ジグビー制御部１１２は、プロセッサ及びメモリなどにより構成される。ジグビー制御部１１２には、上述したＭＡＣレイヤ、ＮＷＫレイヤ及びＡＰＳレイヤの各機能が実装される。
【００６１】
ＨＥＭＳ制御部１２０は、記憶部１２１及び処理部１２２を含む。
【００６２】
記憶部１２１は、例えばメモリやＨＤＤなどにより構成される。記憶部１２１は、処理部１２２によって処理されるプログラム（ＨＥＭＳアプリケーション及びジグビー・ミドルウェア）を記憶する。また、第２のモードにおいて、記憶部１２１は、機器２００毎の全体経路情報を記憶する。
【００６３】
処理部１２２は、例えばプロセッサなどにより構成される。処理部１２２は、記憶部１２１に記憶されているＨＥＭＳアプリケーションを処理するＨＥＭＳアプリケーション処理部１２２Ａと、記憶部１２１に記憶されているジグビー・ミドルウェアを処理するジグビー・ミドルウェア処理部１２２Ｂと、を含む。
【００６４】
ＨＥＭＳアプリケーション処理部１２２Ａは、ジグビー・ネットワーク１０に含まれる機器２００の数に応じて、第１のモード及び第２のモードのうち何れか一方を選択する。第１のモードでは、制御対象の機器２００への通信経路をジグビー制御部１１２が管理する。第２のモードでは、制御対象の機器２００への通信経路をＨＥＭＳアプリケーション処理部１２２Ａが管理する。
【００６５】
なお、ＨＥＭＳアプリケーション処理部１２２Ａは、ジグビー制御部１１２が管理しているルーティング・テーブルに含まれる経路情報の数を、ジグビー・ネットワーク１０に含まれる機器２００の数としてもよい。或いは、ＨＥＭＳアプリケーション処理部１２２Ａは、制御対象の機器２００の数（及びジグビー・モジュールの数）を把握していることが前提であり、当該把握している数をジグビー・ネットワーク１０に含まれる機器２００の数としてもよい。
【００６６】
ジグビー・ネットワーク１０に含まれる機器２００の数が、ジグビー制御部１１２が管理可能（保持可能）な経路情報の上限数に応じて定められる閾値以下である場合、ＨＥＭＳアプリケーション処理部１２２Ａは、第１のモードを選択する。これに対し、ジグビー・ネットワーク１０に含まれる機器２００の数が閾値を超えている場合、ＨＥＭＳアプリケーション処理部１２２Ａは、第２のモードを選択する。ここで、ジグビー制御部１１２が管理可能な経路情報の上限数（以下、単に「経路情報の上限数」と称する）は、ジグビー制御部１１２の性能（例えばメモリ容量）などに応じて予め設定されている。
【００６７】
例えば、閾値は、経路情報の上限数に所定のオフセット値αを加えた値である。第２のモードは、ＨＥＭＳアプリケーション処理部１２２Ａにおいて全機器２００への通信経路を管理する必要があり、全体経路情報を更新し続ける必要がある。
【００６８】
したがって、第２のモードは、機器２００の数が経路情報の上限数を大きく超える場合には妥当であるが、機器２００の数が経路情報の上限数を若干超える程度の場合には、その少数の機器２００のために全体経路情報を更新し続けることは、当該更新のための通信量が増大することとなり、適切でない。よって、経路情報の上限数に所定のオフセット値αを加えた値を閾値とし、当該閾値を超えた場合に第２のモードを選択することで、当該少数の機器２００のために通信量が増大する事態を回避できる。
【００６９】
第２のモードにおいて、ＨＥＭＳアプリケーション処理部１２２Ａは、制御対象の機器２００に宛てて送信するデータフレームを当該機器２００の全体経路情報と共にジグビー・ミドルウェア処理部１２２Ｂに渡す。本実施形態では、データフレームは、送信すべきユーザ・データ（ペイロード）に加えて、宛先アドレス及び全体経路情報を含む。
【００７０】
その際、ＨＥＭＳアプリケーション処理部１２２Ａは、当該データフレームのフレームＩＤを、当該機器２００に関する情報と対応付けて記憶する。ここで、当該機器２００に関する情報とは、当該機器２００のアドレスのみとしてもよく、当該機器２００のアドレス及び全体経路情報としてもよい。また、フレームＩＤは、カウント値が有限のカウンタにより生成され、データフレームが作成される度に１インクリメントされる。そして、フレームＩＤは、当該カウンタのビット長の上限に達するとゼロに戻る。
【００７１】
なお、ジグビー・ミドルウェア処理部１２２Ｂは、フレームＩＤと、ジグビー規格で規定されるＡＰＳカウンタのカウント値とを対応付けて管理している。ジグビー・ミドルウェア処理部１２２Ｂは、フレームＩＤ及びＡＰＳカウンタ間の変換を行う。
【００７２】
図６及び図７は、機器２００に対して送信したデータフレームのフレームＩＤを、機器２００のアドレス及び全体経路情報に対応付ける場合のテーブル構成図である。ＨＥＭＳアプリケーション処理部１２２Ａは、図６又は図７に示すテーブルを記憶部１２１に記憶して管理する。
【００７３】
図６及び図７に示すように、ＨＥＭＳアプリケーション処理部１２２Ａは、機器２００のアドレス（６４ビット・アドレス、１６ビット・アドレス）と、全体経路情報（ホップ数、ホップ毎のアドレス）と、フレームＩＤと、を対応付けて管理する。６４ビット・アドレスは例えばＭＡＣアドレスであり、１６ビット・アドレスは例えばＩＰアドレスである。ホップ数とは、対応する経路上のノード数であり、ホップ毎のアドレスとは、当該経路上の各ノードのアドレスである。
【００７４】
なお、図６では、最新のフレームＩＤのみをアドレス及び全体経路情報に対応付ける構成である。これに対し、図７では、１つのレコードに対して複数のフレームＩＤを対応付ける構成である。
【００７５】
第２のモードにおいて、ＨＥＭＳアプリケーション処理部１２２Ａは、下位のレイヤ（ＡＰＳレイヤ、ＮＷＫレイヤ、ＭＡＣレイヤ、ＰＨＹレイヤ）において送信に失敗したデータフレームのフレームＩＤをジグビー・ミドルウェア処理部１２２Ｂから通知された場合に、当該通知されたフレームＩＤと、図６又は図７に示すテーブルと、に基づいて、当該送信に失敗したデータフレームの宛先（宛先アドレス）を特定する。
【００７６】
そして、ＨＥＭＳアプリケーション処理部１２２Ａは、下位のレイヤにおいて送信に失敗したデータフレームの宛先（宛先アドレス）を特定した場合には、当該宛先の機器２００についての全体経路情報を改めて取得する。上述したように、当該宛先（宛先アドレス）を含む経路要求メッセージをブロードキャストで送信し、当該宛先の機器２００が、応答メッセージをユニキャストで返信することにより、ＨＥＭＳアプリケーション処理部１２２Ａは、当該宛先の機器２００への経路（全体経路情報）を取得することができる。
【００７７】
このようにして、第２のモードを使用中に、ジグビー・ネットワーク１０に含まれる機器２００がジグビー・ネットワーク１０から離脱しても、当該機器２００との通信を継続することが可能になる。
【００７８】
しかしながら、フレームＩＤは有限であるため、正常に送信完了した宛先に対してフレームＩＤが対応付けられたままであると、フレームＩＤが１周して、別の宛先に対して同じフレームＩＤが対応付けられてしまう。この場合、フレームＩＤを基に宛先を一意に特定することができない。
【００７９】
そこで、ＨＥＭＳアプリケーション処理部１２２Ａは、ジグビー・ミドルウェア処理部１２２Ｂから通知されるステータス（ＡＣＫ/ＮＡＣＫ）に基づき、図６又は図７に示すテーブルのうち、下位のレイヤにおいて送信に成功したデータフレーム（すなわち、ＡＣＫが通知されたデータフレーム）のフレームＩＤを破棄する。
【００８０】
ただし、ジグビー・プロトコルでは、通信量削減のために、ＡＣＫを送信しない設定とすることもできるため、そのような場合には、ＨＥＭＳアプリケーション処理部１２２Ａは、図６又は図７に示すテーブルのうち、現在使用中のフレームＩＤとの差が閾値以上であるフレームＩＤを破棄してもよい。言い換えると、ＨＥＭＳアプリケーション処理部１２２Ａは、フレームＩＤが一定数進んだときに、当該一定数よりも古いフレームＩＤを破棄する。
【００８１】
（４）動作
以下において、ＨＥＭＳ１００の動作を中心に、ジグビー・ネットワーク１０の動作を説明する。
【００８２】
（４．１）モード選択動作
図８は、ＨＥＭＳ１００によって行われるモード選択動作のフロー図である。
【００８３】
図８に示すように、ステップＳ１において、ＨＥＭＳアプリケーション処理部１２２Ａは、ジグビー・ネットワーク１０に含まれる機器２００の数を一定値（閾値）と比較する。上述したように、閾値は、経路情報の上限数（例えば４０）に、所定のオフセット値α（例えば２０）を加えた値である。
【００８４】
ジグビー・ネットワーク１０に含まれる機器２００の数が閾値以下である場合（ステップＳ１１；Ｙｅｓ）、ＨＥＭＳアプリケーション処理部１２２Ａは、処理をステップＳ１２に進めて、第１のモードを選択する。
【００８５】
これに対し、ジグビー・ネットワーク１０に含まれる機器２００の数が閾値を超える場合（ステップＳ１１；Ｎｏ）、ＨＥＭＳアプリケーション処理部１２２Ａは、処理をステップＳ１３に進めて、第２のモードを選択する。
【００８６】
（４．２）第２のモード
次に、第２のモードの動作パターン１及び２を説明する。動作パターン１は、ＡＣＫ有りの場合の動作パターンであり、動作パターン２は、ＡＣＫ無しの場合の動作パターンである。
【００８７】
（４．２．１）動作パターン１
図９は、第２のモードの動作パターン１におけるＨＥＭＳアプリケーション処理部１２２Ａの動作フロー図である。
【００８８】
図９に示すように、ステップＳ１１において、ＨＥＭＳアプリケーション処理部１２２Ａは、制御対象の機器２００への通信経路を示す全体経路情報をジグビー・ミドルウェア処理部１２２Ｂに渡す。
【００８９】
ステップＳ１２において、ＨＥＭＳアプリケーション処理部１２２Ａは、フレームＩＤを１インクリメントし、制御対象の機器２００に送信すべきデータフレームを作成する。
【００９０】
ステップＳ１３において、ＨＥＭＳアプリケーション処理部１２２Ａは、フレームＩＤを、制御対象の機器２００の宛先アドレスと対応付けて記憶する。その結果、図６又は図７に示すテーブルが更新される。
【００９１】
ステップＳ１４において、ＨＥＭＳアプリケーション処理部１２２Ａは、作成したデータフレームをジグビー・ミドルウェア処理部１２２Ｂに渡し、その結果が通知されるまで待つ。
【００９２】
ステップＳ１５において、ＨＥＭＳアプリケーション処理部１２２Ａは、図６又は図７に示すテーブルのうち、ジグビー・ミドルウェア処理部１２２Ｂからの通知に含まれるフレームＩＤと一致するフレームＩＤを含む要素（レコード）を見付ける。
【００９３】
ステップＳ１６において、ＨＥＭＳアプリケーション処理部１２２Ａは、ジグビー・ミドルウェア処理部１２２Ｂからの通知が送信成功（ＡＣＫ）であるか送信失敗（ＮＡＣＫ）であるかを確認する。
【００９４】
ＨＥＭＳアプリケーション処理部１２２Ａは、送信成功（ＡＣＫ）であれば処理をステップＳ１７に進める。ステップＳ１７において、ＨＥＭＳアプリケーション処理部１２２Ａは、図６又は図７に示すテーブルのうち、ジグビー・ミドルウェア処理部１２２Ｂからの通知に含まれるフレームＩＤと一致するフレームＩＤを破棄する。
【００９５】
これに対し、送信失敗（ＮＡＣＫ）であれば、ＨＥＭＳアプリケーション処理部１２２Ａは、処理をステップＳ１８に進める。ステップＳ１８において、ＨＥＭＳアプリケーション処理部１２２Ａは、図６又は図７に示すテーブルのうち、ジグビー・ミドルウェア処理部１２２Ｂからの通知に含まれるフレームＩＤと一致するフレームＩＤを含む要素（レコード）に基づき、宛先アドレスを特定し、当該宛先アドレスについての全体経路情報を取得するようジグビー・ミドルウェア処理部１２２Ｂに要求する。その後、ＨＥＭＳアプリケーション処理部１２２Ａは、処理をステップＳ１７に進める。
【００９６】
図１０は、第２のモードの動作パターン１において送信成功（ＡＣＫ）の場合の動作シーケンス図である。ここでは、制御対象の機器２００を機器２００−３としている。
【００９７】
図１０に示すように、ステップＳ１０１において、ＨＥＭＳアプリケーション処理部１２２Ａは、機器２００−３宛てのデータフレームを作成するとともに、当該データフレームのフレームＩＤを機器２００−３のアドレスと対応付けて記憶する。
【００９８】
ステップＳ１０２において、ＨＥＭＳアプリケーション処理部１２２Ａは、作成したデータフレームをジグビー・ミドルウェア処理部１２２Ｂに渡す。
【００９９】
ステップＳ１０３において、ジグビー・ミドルウェア処理部１２２Ｂは、ＨＥＭＳアプリケーション処理部１２２Ａから受け取ったデータフレームにヘッダを付加した後、当該データフレームをジグビー・モジュール１１０に渡す。
【０１００】
ステップＳ１０４において、ジグビー・モジュール１１０は、機器２００−１のジグビー・モジュール２１０−１に対してデータフレームを送信する。なお、ジグビー・モジュール間の通信においては、データフレームは複数のデータ単位（プロトコル・データ・ユニット）に分割して送信される。
【０１０１】
ステップＳ１０５において、機器２００−１のジグビー・モジュール２１０−１は、受信したデータフレームに含まれる全体経路情報に基づいて、当該データフレームを機器２００−２のジグビー・モジュール２１０−２に転送する。
【０１０２】
ステップＳ１０６において、機器２００−２のジグビー・モジュール２１０−２は、受信したデータフレームに含まれる全体経路情報に基づいて、当該データフレームを機器２００−３のジグビー・モジュール２１０−３に転送する。
【０１０３】
ステップＳ１０７において、機器２００−３のジグビー・モジュール２１０−３は、受信したデータフレームに対するＡＣＫを機器２００−２のジグビー・モジュール２１０−２に送信する。ＡＣＫは、上述したＡＰＳカウンタの値を含む。
【０１０４】
ステップＳ１０８において、機器２００−３のジグビー・モジュール２１０−３は、受信したデータフレームを上位レイヤ（ジグビー・ミドルウェア）に渡す。
【０１０５】
ステップＳ１０９において、機器２００−３のジグビー・ミドルウェアは、ジグビー・モジュール２１０−３から受け取ったデータフレームを機器アプリケーションに渡す。
【０１０６】
一方、ステップＳ１１０において、機器２００−２のジグビー・モジュール２１０−２は、受信したＡＣＫを機器２００−１のジグビー・モジュール２１０−１に転送する。
【０１０７】
ステップＳ１１１において、機器２００−１のジグビー・モジュール２１０−１は、受信したＡＣＫをＨＥＭＳ１００のジグビー・モジュール１１０に転送する。
【０１０８】
ステップＳ１１２において、ＨＥＭＳ１００のジグビー・モジュール１１０は、受信したＡＣＫを上位レイヤ（ジグビー・ミドルウェア処理部１２２Ｂ）に渡す。
【０１０９】
ステップＳ１１３において、ジグビー・ミドルウェア処理部１２２Ｂは、受信したＡＣＫに含まれるＡＰＳカウンタの値をフレームＩＤに変換して、当該フレームＩＤ及び送信成功の旨（ＡＣＫ）をＨＥＭＳアプリケーション処理部１２２Ａに渡す。
【０１１０】
ステップＳ１１４において、ＨＥＭＳアプリケーション処理部１２２Ａは、送信成功（ＡＣＫ）が通知されたデータフレームのフレームＩＤを破棄する。
【０１１１】
図１１は、第２のモードの動作パターン１において送信失敗（ＮＡＣＫ）の場合の動作シーケンス図である。ここでは、制御対象の機器２００を機器２００−３としている。
【０１１２】
図１１に示すように、ステップＳ１３１において、ＨＥＭＳアプリケーション処理部１２２Ａは、機器２００−３宛てのデータフレームを作成するとともに、当該データフレームのフレームＩＤを機器２００−３のアドレスと対応付けて記憶する。
【０１１３】
ステップＳ１３２において、ＨＥＭＳアプリケーション処理部１２２Ａは、作成したデータフレームをジグビー・ミドルウェア処理部１２２Ｂに渡す。
【０１１４】
ステップＳ１３３において、ジグビー・ミドルウェア処理部１２２Ｂは、ＨＥＭＳアプリケーション処理部１２２Ａから受け取ったデータフレームにヘッダを付加した後、当該データフレームをジグビー・モジュール１１０に渡す。
【０１１５】
ステップＳ１３４において、ジグビー・モジュール１１０は、機器２００−１のジグビー・モジュール２１０−１に対してデータフレームを送信する。なお、ジグビー・モジュール間の通信においては、データフレームは複数のデータ単位（プロトコル・データ・ユニット）に分割して送信される。
【０１１６】
ステップＳ１３５において、機器２００−１のジグビー・モジュール２１０−１は、受信したデータフレームに含まれる全体経路情報に基づいて、当該データフレームを機器２００−２のジグビー・モジュール２１０−２に転送する。
【０１１７】
ステップＳ１３６において、機器２００−１のジグビー・モジュール２１０−１は、ジグビー・モジュール間の通信（例えばＭＡＣレイヤ間の通信）でＡＣＫが得られないことから、ジグビー・モジュール２１０−２へのデータ転送に失敗したと判断する。
【０１１８】
ステップＳ１３７において、機器２００−１のジグビー・モジュール２１０−１は、宛先（機器２００−３）のアドレスとＮＡＣＫとを含むネットワーク・ステータスをＨＥＭＳ１００のジグビー・モジュール１１０に通知する。
【０１１９】
ステップＳ１３８において、ＨＥＭＳ１００のジグビー・モジュール１１０は、宛先（機器２００−３）のアドレスとＮＡＣＫとを含むエラー情報をジグビー・ミドルウェア処理部１２２Ｂに渡す。ＮＡＣＫは、上述したＡＰＳカウンタの値を含む。
【０１２０】
ステップＳ１３９において、ジグビー・ミドルウェア処理部１２２Ｂは、ＮＡＣＫに含まれるＡＰＳカウンタの値をフレームＩＤに変換して、当該フレームＩＤ及び送信失敗の旨（ＮＡＣＫ）を含むエラー情報をＨＥＭＳアプリケーション処理部１２２Ａに渡す。ＨＥＭＳアプリケーション処理部１２２Ａは、フレームＩＤに基づいて、機器２００−３への送信に失敗したことを把握する。
【０１２１】
ステップＳ１４０において、ＨＥＭＳアプリケーション処理部１２２Ａは、機器２００−３についての全体経路情報を改めて取得するようジグビー・ミドルウェア処理部１２２Ｂに要求する。
【０１２２】
ステップＳ１４１において、ジグビー・ミドルウェア処理部１２２Ｂは、全体経路情報を取得するための経路要求メッセージの送信をジグビー・モジュール１１０に要求する。
【０１２３】
ステップＳ１４２において、ジグビー・モジュール１１０は、経路要求メッセージをブロードキャストで送信する。
【０１２４】
ステップＳ１４３において、ＨＥＭＳアプリケーション処理部１２２Ａは、送信に失敗したデータフレームのフレームＩＤを破棄する。
【０１２５】
（４．２．２）動作パターン２
図１２は、第２のモードの動作パターン２におけるＨＥＭＳアプリケーション処理部１２２Ａの動作フロー図である。
【０１２６】
図１２に示すように、ステップＳ２１において、ＨＥＭＳアプリケーション処理部１２２Ａは、制御対象の機器２００への通信経路を示す全体経路情報をジグビー・ミドルウェア処理部１２２Ｂに渡す。
【０１２７】
ステップＳ２２において、ＨＥＭＳアプリケーション処理部１２２Ａは、フレームＩＤを１インクリメントし、制御対象の機器２００に送信すべきデータフレームを作成する。
【０１２８】
ステップＳ２３において、ＨＥＭＳアプリケーション処理部１２２Ａは、フレームＩＤを、制御対象の機器２００の宛先アドレスと対応付けて記憶する。その結果、図６又は図７に示すテーブルが更新される。
【０１２９】
ステップＳ２４において、ＨＥＭＳアプリケーション処理部１２２Ａは、作成したデータフレームをジグビー・ミドルウェア処理部１２２Ｂに渡し、その結果が通知されるまで待つ。
【０１３０】
ステップＳ２５において、ＨＥＭＳアプリケーション処理部１２２Ａは、図６又は図７に示すテーブルのうち、ジグビー・ミドルウェア処理部１２２Ｂからの通知に含まれるフレームＩＤと一致するフレームＩＤを含む要素（レコード）を見付ける。
【０１３１】
ステップＳ２６において、ＨＥＭＳアプリケーション処理部１２２Ａは、ジグビー・ミドルウェア処理部１２２Ｂから送信失敗（ＮＡＣＫ）が通知されたか否かを確認する。送信失敗（ＮＡＣＫ）であれば、ＨＥＭＳアプリケーション処理部１２２Ａは、処理をステップＳ２７に進める。
【０１３２】
ステップＳ２７において、ＨＥＭＳアプリケーション処理部１２２Ａは、図６又は図７に示すテーブルのうち、ジグビー・ミドルウェア処理部１２２Ｂからの通知に含まれるフレームＩＤと一致するフレームＩＤを含む要素（レコード）に基づき、宛先アドレスを特定する。
【０１３３】
ステップＳ２８において、ＨＥＭＳアプリケーション処理部１２２Ａは、当該宛先アドレスについての全体経路情報を取得するようジグビー・ミドルウェア処理部１２２Ｂに要求する。
【０１３４】
ステップＳ２９において、ＨＥＭＳアプリケーション処理部１２２Ａは、図６又は図７に示すテーブルのうち、ジグビー・ミドルウェア処理部１２２Ｂからの通知に含まれるフレームＩＤと一致するフレームＩＤを破棄する。
【０１３５】
図１３は、第２のモードの動作パターン２において送信成功（ＡＣＫ）の場合の動作シーケンス図である。ここでは、制御対象の機器２００を機器２００−３としている。なお、送信失敗（ＮＡＣＫ）の場合の動作については、動作パターン１と同様であるため、説明を省略する。
【０１３６】
図１３に示すように、ステップＳ２０１において、ＨＥＭＳアプリケーション処理部１２２Ａは、機器２００−３宛てのデータフレームを作成するとともに、当該データフレームのフレームＩＤを機器２００−３のアドレスと対応付けて記憶する。
【０１３７】
ステップＳ２０２において、ＨＥＭＳアプリケーション処理部１２２Ａは、図６又は図７に示すテーブルのうち、現在使用中のフレームＩＤとの差が閾値以上であるフレームＩＤを破棄する。
【０１３８】
ステップＳ２０３において、ＨＥＭＳアプリケーション処理部１２２Ａは、作成したデータフレームをジグビー・ミドルウェア処理部１２２Ｂに渡す。
【０１３９】
ステップＳ２０４において、ジグビー・ミドルウェア処理部１２２Ｂは、ＨＥＭＳアプリケーション処理部１２２Ａから受け取ったデータフレームにヘッダを付加した後、当該データフレームをジグビー・モジュール１１０に渡す。
【０１４０】
ステップＳ２０５において、ジグビー・モジュール１１０は、機器２００−１のジグビー・モジュール２１０−１に対してデータフレームを送信する。なお、ジグビー・モジュール間の通信においては、データフレームは複数のデータ単位（プロトコル・データ・ユニット）に分割して送信される。
【０１４１】
ステップＳ２０６において、ジグビー・モジュール１１０は、機器２００−１のジグビー・モジュール２１０−１へのデータ転送に成功した旨を上位レイヤ（ジグビー・ミドルウェア処理部１２２Ｂ）に通知する。
【０１４２】
ステップＳ２０７において、機器２００−１のジグビー・モジュール２１０−１は、受信したデータフレームに含まれる全体経路情報に基づいて、当該データフレームを機器２００−２のジグビー・モジュール２１０−２に転送する。
【０１４３】
ステップＳ２０８において、機器２００−２のジグビー・モジュール２１０−２は、受信したデータフレームに含まれる全体経路情報に基づいて、当該データフレームを機器２００−３のジグビー・モジュール２１０−３に転送する。
【０１４４】
ステップＳ２０９において、機器２００−３のジグビー・モジュール２１０−３は、受信したデータフレームを上位レイヤ（ジグビー・ミドルウェア）に渡す。
【０１４５】
ステップＳ２１０において、機器２００−３のジグビー・ミドルウェアは、ジグビー・モジュール２１０−３から受け取ったデータフレームを機器アプリケーションに渡す。
【０１４６】
（５）まとめ
以上説明したように、本実施形態に係るＨＥＭＳ１００は、機器２００を制御するためのアプリケーションを処理するとともに、機器２００毎に経路情報を管理するＨＥＭＳアプリケーション処理部１２２Ａと、アプリケーションよりも下位のレイヤとアプリケーションとの中間に位置付けられるミドルウェアを処理するジグビー・ミドルウェア処理部１２２Ｂと、を有する。
【０１４７】
ＨＥＭＳアプリケーション処理部１２２Ａは、制御対象の機器２００に宛てて送信するデータフレームを当該機器２００の経路情報と共にジグビー・ミドルウェア処理部１２２Ｂに渡す際に、当該データフレームのフレームＩＤを、当該機器２００に関する情報と対応付けて記憶する。また、ＨＥＭＳアプリケーション処理部１２２Ａは、下位のレイヤにおいて送信に失敗したデータフレームのフレームＩＤをジグビー・ミドルウェア処理部１２２Ｂから通知された場合に、当該通知されたフレームＩＤと、当該記憶している情報と、に基づいて、当該送信に失敗したデータフレームの宛先を特定する。
【０１４８】
このように、本実施形態に係るＨＥＭＳ１００は、下位のレイヤにおいてデータ送信に失敗した場合、アプリケーションが、「どの機器への」データ送信に失敗したのかを把握することができる。
【０１４９】
本実施形態では、ＨＥＭＳアプリケーション処理部１２２Ａは、下位のレイヤにおいて送信に成功したデータフレームのフレームＩＤをジグビー・ミドルウェア処理部１２２Ｂから通知された場合に、記憶しているフレームＩＤのうち、当該通知されたフレームＩＤと一致するフレームＩＤを破棄する。
【０１５０】
このように、不要となったフレームＩＤを破棄することで、フレームＩＤの重複が生じることを防止できる。
【０１５１】
本実施形態では、ＨＥＭＳアプリケーション処理部１２２Ａは、記憶しているフレームＩＤのうち、現在使用中のフレームＩＤとの差が閾値以上であるフレームＩＤを破棄する。
【０１５２】
このように、不要とみなされるフレームＩＤを破棄することで、フレームＩＤの重複が生じることを防止できる。
【０１５３】
本実施形態では、ＨＥＭＳアプリケーション処理部１２２Ａは、送信に失敗したデータフレームの宛先を特定した場合に、当該宛先の機器２００への通信経路を示す情報を取得する。
【０１５４】
このように、送信に失敗したデータフレームの宛先の機器２００への通信経路を示す情報を改めて取得することで、当該宛先の機器２００との通信が不能になることを回避できる。
【０１５５】
（６）その他の実施形態
上記のように、本発明は実施形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施形態、実施例及び運用技術が明らかとなる。
【０１５６】
例えば、上述した実施形態では、第２のモードにおいて、送信に失敗したデータフレームの宛先がジグビー・ミドルウェア処理部１２２ＢからＨＥＭＳアプリケーション処理部１２２Ａに通知されない場合の動作を説明したが、当該宛先が通知される場合には、ＨＥＭＳアプリケーション処理部１２２Ａは、当該通知された宛先を利用してもよい。
【０１５７】
上述した実施形態では、自律分散型の無線ネットワークを実現するための通信プロトコルとしてジグビー・プロトコルを使用していたが、他の通信プロトコルを使用してもよい。
【０１５８】
また、上述した実施形態では、住宅単位で電力管理を行うための制御装置であるＨＥＭＳ１００を説明したが、ビルを対象としたＢＥＭＳや、工場を対象としたＦＥＭＳなどであってもよい。
【符号の説明】
【０１５９】
１０…ジグビー・ネットワーク、１００…ＨＥＭＳ、１１０，２１０…ジグビー・モジュール、１１１…送受信部、１１２…ジグビー制御部、１２０…ＨＥＭＳ制御部、１２１…記憶部、１２２…処理部、１２２Ａ…ＨＥＭＳアプリケーション処理部、１２２Ｂ…ミドルウェア処理部、２００…機器、２２０…機器制御部
【図１】
0005784523.tif 000002
【図２】
0005784523.tif 000003
【図３】
0005784523.tif 000004
【図４】
0005784523.tif 000005
【図５】
0005784523.tif 000006
【図６】
0005784523.tif 000007
【図７】
0005784523.tif 000008
【図８】
0005784523.tif 000009
【図９】
0005784523.tif 000010
【図１０】
0005784523.tif 000011
【図１１】
0005784523.tif 000012
【図１２】
0005784523.tif 000013
【図１３】
0005784523.tif 000014