(57)【要約】【課題】ノード装置で得られたデータを効率的に収集する。【解決手段】サーバとの間が複数の中継装置によって中継されているネットワーク中の第１のノード装置は、複数の中継装置のうちの第１の中継装置に隣接する。第１のノード装置は、第１のノード装置に隣接する第２のノード装置から、第１の中継装置を介してサーバに送信される対象のデータである対象データを含む第１のデータフレームを受信する。第１のノード装置は、第１のノード装置が備えるメモリに対象データを格納する。第１のノード装置は、第１のデータフレームを第１の中継装置に転送する。第１のノード装置は、第１の中継装置がサーバと通信できないと判定すると、対象データを含む第２のデータフレームを、複数の中継装置のうちの第２の中継装置に向けて送信する。第２の中継装置は、対象データを含む第３のデータフレームをサーバに送信する。【選択図】図１
2014099770.tif 000002
【特許請求の範囲】
【請求項１】
サーバとの間が複数の中継装置によって中継されているネットワーク中で、前記複数の中継装置のうちの第１の中継装置に隣接する第１のノード装置は、
前記第１のノード装置に隣接する第２のノード装置から、前記第１の中継装置を介して前記サーバに送信される対象のデータである対象データを含む第１のデータフレームを受信し、
前記第１のノード装置が備えるメモリに前記対象データを格納し、
前記第１のデータフレームを前記第１の中継装置に転送し、
前記第１の中継装置が前記サーバと通信できないと判定すると、前記対象データを含む第２のデータフレームを、前記複数の中継装置のうちの第２の中継装置に向けて送信し、
前記第２の中継装置は、前記対象データを含む第３のデータフレームを前記サーバに送信する
ことを特徴とする通信方法。
【請求項２】
前記第１のノード装置は、前記対象データの送信が要求される可能性があるかを判定し、
前記第１のノード装置は、前記対象データの送信が要求される可能性がないと判定すると、前記対象データを前記メモリから削除する
ことを特徴とする請求項１に記載の通信方法。
【請求項３】
前記第１のノード装置は、
前記ネットワークの経路情報を通知する経路情報フレームを、前記第１のノード装置に隣接するノード装置および前記第１の中継装置から受信し、
前記第１の中継装置が前記サーバと通信できないと判定すると、前記経路情報を用いて、前記第２の中継装置に前記第１のノード装置が隣接しているかを判定し、
前記第１のノード装置が前記第２の中継装置に隣接していない場合、前記第１のノード装置から前記第２の中継装置にいたる経路に含まれるノード装置であり、かつ、前記第１のノード装置に隣接する第３のノード装置に前記第２のデータフレームを送信し、
前記第２の中継装置を介して前記サーバに対象データが送信されることが決定された後に、前記第２のノード装置から前記第２の中継装置宛の第４のデータフレームを受信すると、前記第４のデータフレームに含まれているデータを前記メモリに記憶せずに、前記第３のノード装置に転送する
ことを特徴とする請求項１または２に記載の通信方法。
【請求項４】
前記第１のノード装置は、
前記第１の中継装置が前記サーバと通信できないと判定すると、前記対象データの大きさを閾値と比較し、
前記対象データの大きさが前記閾値より大きい場合、前記対象データを前記閾値以下の大きさのデータである第１の分割データと第２の分割データに分割し、
前記第１の分割データを含む第５のデータフレームを前記第２の中継装置に送信し、
前記第２の分割データを含む第６のデータフレームを、前記複数の中継装置のうちの第３の中継装置にむけて送信する
ことを特徴とする請求項１〜３のいずれか１項に記載の通信方法。
【請求項５】
前記第１の中継装置は、前記サーバとの通信に失敗すると、前記サーバとの通信の失敗を通知する通信失敗通知を生成するとともに、前記第１の中継装置に隣接しているノード装置に前記通信失敗通知を送信し、
前記第１のノード装置は、前記第１の中継装置から前記通信失敗通知を受信すると、前記第１の中継装置を経由して前記サーバへ前記対象データを転送できないと判定する
ことを特徴とする請求項１〜４のいずれか１項に記載の通信方法。
【請求項６】
前記第１のノード装置は、前記第２のデータフレームを送信してから所定の時間以上の期間にわたって、前記第１の中継装置から前記サーバとの通信の成功を通知する通信成功通知を受信しなかった場合、前記第１の中継装置を経由して前記サーバへ前記対象データを転送できないと判定する
ことを特徴とする請求項１〜５のいずれか１項に記載の通信方法。
【請求項７】
前記第１のノード装置は、
前記第１のノード装置で得られ、かつ、前記第１の中継装置を介して前記サーバ宛に送信するデータである送信データを、前記対象データと共に記憶し、
前記第１の中継装置を経由して前記サーバへ前記対象データを転送できないと判定すると、前記送信データと前記対象データを含むデータフレームを前記第２の中継装置に向けて送信する
ことを特徴とする請求項１〜６のいずれか１項に記載の通信方法。
【請求項８】
サーバとの間が複数の中継装置によって中継されているネットワーク中で、前記複数の中継装置のうちの第１の中継装置に隣接する第１のノード装置に、
前記第１のノード装置に隣接する第２のノード装置から、前記第１の中継装置を介して前記サーバに送信される対象のデータである対象データを含む第１のデータフレームを受信し、
前記第１のノード装置が備えるメモリに前記対象データを格納し、
前記第１のデータフレームを前記第１の中継装置に転送し、
前記第１の中継装置が前記サーバと通信できないと判定すると、前記対象データを含む第２のデータフレームを、前記複数の中継装置のうちの第２の中継装置に向けて送信する
処理を行わせることを特徴とする通信プログラム。
【請求項９】
隣接するノード装置である隣接ノード装置からフレームを受信する受信部と、
サーバとの間を中継する複数の中継装置のうちの第１の中継装置に隣接するノード装置であるかを判定する判定部と、
前記第１の中継装置に隣接するノード装置であると判定された場合、前記サーバに送信される対象のデータである対象データを含む第１のデータフレームから前記対象データを抽出するとともに、メモリに格納する処理を行う格納処理部と、
前記第１の中継装置を経由して前記サーバへ前記対象データを転送できないと判定すると、前記対象データを含む第２のデータフレームの送信先を前記複数の中継装置のうちの第２の中継装置に決定する決定部と、
前記第２のデータフレームを前記第２の中継装置に送信する送信部
を備えることを特徴とするノード装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノード装置を含むネットワークで行われる通信に関する。
【背景技術】
【０００２】
近年、アドホックネットワークを用いてデータを収集する方法が考案されている。アドホックネットワークに参加する個々のノード装置は、例えば、水道、ガス、電気などのメーターから予め設定された周期で検針データを取得する。アドホックネットワークには、ノード装置の他に、ゲートウェイ装置が含まれる。ゲートウェイ装置は、ノード装置から検針データを含むフレームを受信して、取得したデータを含むフレームをサーバに送信する。サーバは、ゲートウェイ装置から得られたデータを用いて検針データを収集し、料金の計算等を行う。
【０００３】
関連する技術として、階層ごとに１つ以上のクラスタを有するネットワークを用いて、複数のセンサから得られたデータを収集する方法も考案されている。この方法では、クラスタにはセンサを含む子ノードとクラスタヘッドが含まれる。クラスタヘッドは子ノードからデータを受信し、１つ上位の階層のクラスタでの子ノードとして動作する。さらに、集線ノードを頂点とするマルチホップネットワークにおいて、集線ノードの異常を検出すると周辺情報を収集し、収集結果に基づいて得られた移動先集線ノードを配下のノードに通知する方法も提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２０６５６０号公報
【特許文献２】特開２０１０−１９３４１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
アドホックネットワークを用いて検針を行うシステムでは、何らかの理由でゲートウェイ装置とサーバとの間のリンクが切れてしまい、ゲートウェイ装置からサーバにデータを送信できなくなることがある。この場合、ゲートウェイ装置はサーバへの送信のリトライを行うが、リトライ回数が所定の回数に達してもゲートウェイ装置からサーバへデータが送信できない場合、ゲートウェイ装置はデータを破棄してしまう。このように、ゲートウェイ装置とサーバ装置の間で通信ができなくなると、検針データが無駄になってしまうため効率が悪い。また、検針データを回収するシステムに限らず、ノード装置で得られたデータを、アドホックネットワークを用いて回収するシステムでは、ゲートウェイ装置とサーバの間で通信の不具合により、データが破棄されてしまう可能性がある。
【０００６】
本発明は、１つの側面では、ノード装置で得られたデータを効率的に収集することを目的とする。
【課題を解決するための手段】
【０００７】
実施形態に係る通信方法は、サーバとの間が複数の中継装置によって中継されているネットワーク中で用いられる。第１のノード装置は、前記複数の中継装置のうちの第１の中継装置に隣接する。前記第１のノード装置は、前記第１のノード装置に隣接する第２のノード装置から、前記第１の中継装置を介して前記サーバに送信される対象のデータである対象データを含む第１のデータフレームを受信する。前記第１のノード装置は、前記第１のノード装置が備えるメモリに前記対象データを格納する。前記第１のノード装置は、前記第１のデータフレームを前記第１の中継装置に転送する。前記第１のノード装置は、前記第１の中継装置が前記サーバと通信できないと判定すると、前記対象データを含む第２のデータフレームを、前記複数の中継装置のうちの第２の中継装置に向けて送信する。前記第２の中継装置は、前記対象データを含む第３のデータフレームを前記サーバに送信する。
【発明の効果】
【０００８】
データが効率的に収集される。
【図面の簡単な説明】
【０００９】
【図１】実施形態にかかる通信方法の例を示すシーケンス図である。
【図２】検針システムの例を示す図である。
【図３】ノード装置の構成の例を示す図である。
【図４】ルーティングテーブルの例を示す図である。
【図５】中継装置テーブルの例を示す図である。
【図６】中継装置の構成の例を示す図である。
【図７】ノード装置および中継装置のハードウェア構成の例を示す図である。
【図８】Ｈｅｌｌｏフレームの構成の例を示す図である。
【図９】フレームのフォーマットの例を示す図である。
【図１０】データフレームの転送処理の例を示すシーケンス図である。
【図１１】再送データフレームの送信経路の例を示す図である。
【図１２】ノード装置で行われる処理の例を示すフローチャートである。
【図１３】ノード装置で行われる処理の例を示すフローチャートである。
【図１４】中継装置で行われる処理の例を示すフローチャートである。
【図１５】第２の実施形態での再送データフレームの送信経路の例を示す図である。
【図１６】再送データフレームの送信処理の例を示すシーケンス図である。
【図１７】分割データの例を示す図である。
【図１８】ノード装置で行われる処理の例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
図１は、実施形態にかかる通信方法の例を示すシーケンス図である。図１に示す例では、アドホックネットワークには、ノード装置１０と中継装置５０が含まれている。中継装置５０は、アドホックネットワーク中のゲートウェイとして動作し、ノード装置１０から受信したデータをサーバに送信する。なお、図１のシーケンス図では、アドホックネットワーク中の２台のノード装置１０（１０ａ、１０ｂ）と２台の中継装置５０（５０ａ、５０ｂ）の動作を例として示しているが、アドホックネットワークに含まれるノード装置１０と中継装置５０の数は任意である。
【００１１】
（１）ノード装置１０ａは、ノード装置１０ａが保持している経路情報を用いて、ノード装置１０ａが中継装置５０ａに隣接していることを特定する。以下の説明では、複数のノード装置が互いにフレームを送受信できる距離に位置することを「隣接する」と記載する。また、あるノード装置から送信されたフレームを受信できる範囲に位置するノード装置のことを、そのノード装置の「隣接ノード」と記載することがある。
【００１２】
（２）ノード装置１０ｂは、測定や計算によりサーバに報告するデータＢを得たとする。ここで、ノード装置１０ｂは、ノード装置１０ａを介して、中継装置５０ａに、サーバ向けのデータを含むフレームを送信できるという経路情報を保持しているとする。ノード装置１０ｂは、経路情報に従って、データＢを含むフレームをノード装置１０ａに送信する。
【００１３】
（３）ノード装置１０ａは、ノード装置１０ｂから中継装置５０ａ宛のデータフレームを受信すると、データフレームに含まれているデータを、そのデータフレームのグローバル送信元（Global Source、ＧＳ）アドレスと対応付けて記憶する。以下の説明では、「グローバル送信元」は、フレームを生成したノード装置１０を示す。図１の例では、ノード装置１０ａは、ノード装置１０ｂのアドレスとデータＢを対応付けて記憶する。
【００１４】
（４）ノード装置１０ａは、ノード装置１０ｂから受信したデータフレームを中継装置５０ａに転送する。
【００１５】
（５）中継装置５０ａは、ノード装置１０ａから受信したデータを含むサーバ宛のフレームを生成する。中継装置５０ａは、生成したフレームをサーバに送信する。ここで、中継装置５０ａとサーバの間ではフレームの送信ができない状態になっているため、サーバは中継装置５０ａからフレームを受信できなかったものとする。
【００１６】
（６）中継装置５０ａは、ノード装置１０ａから受信したデータを含むフレームを、サーバに再送する。フレームの再送回数が予め決められた値に達すると、中継装置５０ａは、ノード装置１０から受信したデータを破棄する。このため、データＢが破棄される。
【００１７】
（７）ノード装置１０ａは、データＢを含むデータフレームを中継装置５０ａに送信してから、一定の時間以内にサーバへの送信に成功したことが確認できない場合、中継装置５０ａを経由してサーバにデータを送信できないと判定する。
【００１８】
（８）ノード装置１０ａは、データＢを含むフレームを生成し、生成したフレームを中継装置５０ｂに送信する。
【００１９】
（９）中継装置５０ｂは、ノード装置１０ａから受信したフレームに含まれているデータを含むサーバ宛のフレームを生成し、サーバに送信する。
【００２０】
このように、中継装置５０に隣接しているノード装置１０は、他のノード装置１０から受信したデータを保持する。さらに、ノード装置１０は、データの送信先とした中継装置５０がサーバへのフレームの送信に失敗したと判定すると、データの送信先の中継装置５０とは別の中継装置５０に向けてデータを送信しなおす。このため、中継装置５０とサーバの間での通信の失敗により、ノード装置１０で得られたデータがサーバに送信されずに破棄されることを防止できる。また、本実施形態では、中継装置５０ａからサーバにデータが送信できなかった場合は、中継装置５０ａに隣接するノード装置１０がデータを再送するので、中継装置５０ａの隣接ノード装置以外はデータを再送信しなくても良い。従って、中継装置５０とサーバの間での通信の不具合により、アドホックネットワーク中の各ノード装置１０がデータを再取得して送りなおすという事態を避けることもできる。
【００２１】
＜システム構成と装置構成＞
以下、アドホックネットワーク中の各ノード装置１０がメーターから検針データを回収し、中継装置５０を介してサーバに検針データを通知するシステム（検針システム）で行われる通信を例として、詳しく説明する。また、検針システム中では、中継装置５０は、アドホックネットワーク５のゲートウェイとして動作するものとする。
【００２２】
図２は、検針システムの例を示す。検針システム中のアドホックネットワーク５は、ノード装置１０（１０ａ〜１０ｋ、１０ｍ）と中継装置５０（５０ａ〜５０ｃ）を含む。以下の例では、アドホックネットワーク５中では無線通信が行われ、中継装置５０とサーバ９０との間では有線通信が行われるものとする。図２に示すように、アドホックネットワーク５は、ルータ９５を介してサーバ９０に接続されても良い。また、アドホックネットワーク５は、サーバ９０に直接接続されても良く、ハブを介してサーバ９０に接続されてもよいものとする。
【００２３】
各ノード装置１０と各中継装置５０は、各々の装置に隣接する装置との間でＨｅｌｌｏフレームを送受信することにより、経路情報を送受信する。Ｈｅｌｌｏフレームについては後述する。各ノード装置１０は、経路情報を用いて、中継装置５０宛てにデータを送信するためのローカル宛先（Local Destination、ＬＤ）を特定する。「ローカル宛先」は、フレームを最終的な宛先に送信するために行われる１ホップの転送の際に、宛先として指定されるノード装置１０または中継装置５０を示す。以下、フレームの最終的な宛先のことを、「グローバル宛先」（Global Destination、ＧＤ）と記載することがある。さらに、フレームが１ホップ転送される場合の転送元のノード装置１０を「ローカル送信元」（Local Source、ＬＳ）と記載する。
【００２４】
図２に記載されている破線の矢印は、各ノード装置がサーバ９０に送信する対象である対象データを含むデータフレームを送信するときのローカル宛先の例を示す。以下、対象データがメーターの検針結果（検針データ）である場合を例として説明する。例えば、ノード装置１０ｃで取得された検針データを含むフレームは、ノード装置１０ｂに転送される。ノード装置１０ｂはノード装置１０ｃで得られた検針データを含むフレームをノード装置１０ａに転送する。ノード装置１０ａは、ノード装置１０ｂから受信したデータフレーム中の検針データを、ノード装置１０ｃと対応付けて記憶した上で、中継装置５０ａに転送する。他のノード装置１０も同様に検針データを含むフレームを送信する。さらに、中継装置５０ａ〜５０ｃに隣接するノード装置１０は、他のノード装置１０から受信したデータと、そのノード装置１０で得られたデータを記憶することができる。このため、図２の例では、ノード装置１０ａは、ノード装置１０ａ〜１０ｄで得られた検針データを、そのデータが得られたノード装置１０の識別子と対応付けて保持する。同様に、ノード装置１０ｅは、ノード装置１０ｅ〜１０ｈで得られた検針データを、そのデータが得られたノード装置１０の識別子に対応付けて保持する。また、同様に、ノード装置１０ｉは、ノード装置１０ｉとノード装置１０ｊで得られたデータを保持し、ノード装置１０ｋはノード装置１０ｋとノード装置１０ｍでの検針データを保持する。
【００２５】
図３は、ノード装置１０の構成の例を示す。ノード装置１０は、アドホックエンジン２０とアプリケーション処理部３０を備える。アドホックエンジン２０は、受信部２１、送信部２２、Ｈｅｌｌｏフレーム生成部２３、経路情報処理部２４、ルーティングテーブル２５、中継装置テーブル２６、判定部２７、決定部２８、フレーム処理部２９を備える。アプリケーション処理部３０は、データ取得部３１、格納処理部３２、圧縮処理部３３、および、記憶部４０を備える。
【００２６】
受信部２１は、隣接するノード装置１０または中継装置５０からフレームを受信し、受信したフレームをそのフレームの種類に応じた出力先に出力する。例えば、受信部２１は、Ｈｅｌｌｏフレームを経路情報処理部２４に出力し、データフレームをフレーム処理部２９に出力する。送信部２２は、隣接するノード装置１０または中継装置５０にフレームを送信する。送信部２２は、Ｈｅｌｌｏフレーム生成部２３からＨｅｌｌｏフレームを取得し、データフレームをフレーム処理部２９から取得する。
【００２７】
Ｈｅｌｌｏフレーム生成部２３は、Ｈｅｌｌｏフレームを生成する。Ｈｅｌｌｏフレームの生成は、予め設定された周期で行われるものとする。Ｈｅｌｌｏフレーム生成部２３は、生成したＨｅｌｌｏフレームを送信部２２に出力する。経路情報処理部２４は、他の装置から送信されてきたＨｅｌｌｏフレームが受信部２１から入力されると、Ｈｅｌｌｏフレームに含まれている経路情報を取得して、ルーティングテーブル２５を生成する。
【００２８】
図４（ａ）にルーティングテーブル２５の例を示す。ルーティングテーブル２５は、１つのグローバル宛先に対して、１つ以上の任意の数のローカル宛先を記録することができる。例えば、図４（ａ）の例では、ルーティングテーブル２５は、１つのグローバル宛先に対して、３つ以下のローカル宛先を対応付けて記憶することができる。ルーティングテーブル２５は、経路の品質を示す評価値を、経路ごとに含む。なお、ルーティングテーブル２５は、評価値の他にも、例えば、ホップ数や受信電波強度などの経路の品質を表す情報を、グローバル宛先とローカル宛先の組合せごとに記録することができる。経路の品質を現す情報としてルーティングテーブル２５に含まれる情報の数や種類、１つのグローバル宛先に対応付けられるローカル宛先の数は、実装に応じて変更され得る。なお、図４（ａ）の例では、ルーティングテーブル２５の各経路に割り当てられている番号の最初の数字はグローバル宛先に対応し、ハイフンの後の数字は、同じグローバル宛先への経路のうちでの優先度に対応するものとする。例えば、３−１から３−３までの３つの経路は、いずれもグローバル宛先アドレスがＧＷ１である中継装置５０ａまでの経路であるが、優先度は３−１＞３−２＞３−３の順である。なお、優先度が大きな経路ほど、評価値の値が小さく、経路の状況が良好である。例えば、３−１から３−３までの３つの経路では、評価値の値はｖ３１＜ｖ３２＜ｖ３３の順に大きくなる。なお、１つのグローバル宛先に対して得られたローカル宛先の数が１つのグローバル宛先に対応付けることができるローカル宛先の数より多い場合、経路情報処理部２４は、状況の良好な経路を優先的にルーティングテーブル２５に記録する。例えば、図４（ａ）のルーティングテーブル２５を生成する経路情報処理部２４は、ある１つのグローバル宛先について４つ以上の転送先が発見された場合、評価値が小さい順に３つの転送先を選択してルーティングテーブル２５に記録する。
【００２９】
さらに、経路情報処理部２４は、アドホックネットワーク５中の中継装置５０までの経路を、中継装置テーブル２６に記録する。図５（ａ）に、中継装置テーブル２６の例を示す。図５（ａ）の例では、中継装置テーブル２６は、各中継装置５０について、ＭＡＣ（Media Access Control）アドレス、評価値、優先度、通信可否情報を含む。ここで、評価値は、中継装置５０までの経路のうちで比較的良好な経路の評価値である。優先度は、サーバ９０宛のフレームの中継先としての選択されやすさの順序を示し、優先度の値が小さいほど、サーバ９０への中継先として選択されやすいことを意味する。中継装置テーブル２６の使用方法や生成方法の具体例については、後述する。
【００３０】
判定部２７は、ノード装置１０が、検針データを含むフレームの送信先となる中継装置５０に隣接しているかを判定する。フレームの送信先の中継装置５０に隣接していると判定されたノード装置１０では、決定部２８、格納処理部３２、圧縮処理部３３による処理が行われる。判定方法の詳細については後述する。
【００３１】
決定部２８は、検針データを含むフレームの宛先となっている中継装置５０がサーバ９０にフレームを送信できなくなると、サーバ９０宛の検針データを含むフレームのグローバル宛先とする中継装置５０を決定する。例えば、中継装置５０ａからサーバ９０へのフレームの送信ができない場合、決定部２８は、アドホックネットワーク５に含まれている中継装置５０ａ以外の中継装置５０から、検針データを含むフレームのグローバル宛先とする中継装置５０を決定する。中継装置５０を経由してサーバ宛のデータを送信できないと判定される場合は、例えば、ノード装置１０が中継装置５０から通信の失敗を通知された場合や、ノード装置１０が所定の期間以上、中継装置５０からＨｅｌｌｏフレームを受信できない場合などである。決定部２８の動作についても後で詳しく説明する。
【００３２】
フレーム処理部２９は、受信部２１から入力されたフレームの転送処理を行う。さらに、フレーム処理部２９は、データ取得部３１、格納処理部３２、または圧縮処理部３３から入力されたデータを用いてデータフレームを生成する。
【００３３】
データ取得部３１は、サーバ９０に送信するためのデータをセンサやメーター（図示せず）などから取得し、フレーム処理部２９に出力する。さらに、データ取得部３１は、取得したデータを記憶部４０に格納することもできる。
【００３４】
格納処理部３２は、他のノード装置１０から転送されてきた中継装置５０宛のデータフレームに含まれているデータを記憶部４０に格納する。格納処理部３２は、データフレームから取得した検針データを、サーバ９０に向けて送信する可能性がなくなったと判定するまで記憶部４０に格納する。あるデータをサーバ９０に向けて送信する可能性がないと判定される場合は、例えば、そのデータについてのサーバ９０への送信の成功が通知された場合や、そのデータが更新された場合などである。さらに、格納処理部３２は、検針データを含むフレームのグローバル宛先に設定する中継装置５０が変更された場合、新たにグローバル宛先とする中継装置５０に送信するデータをデータ４１から選択し、圧縮処理部３３に出力する。なお、格納処理部３２は、検針データを含むフレームの送信先の中継装置５０に隣接していると判定されたノード装置１０中で動作する。
【００３５】
圧縮処理部３３は、データフレーム中に含めるデータを圧縮してフレーム処理部２９に出力する。なお、圧縮処理部３３はオプションであり、ノード装置１０は、圧縮処理部３３を備えなくても良い。この場合、格納処理部３２は、選択したデータをフレーム処理部２９に出力する。記憶部４０は、データ取得部３１が取得したデータや格納処理部３２が選択したデータを、データ４１として格納する。また、データ４１には、アプリケーション処理部３０やアドホックエンジン２０で使用されるデータが含まれても良い。
【００３６】
図６は、中継装置５０の構成の例を示す。中継装置５０は、送受信部５１、アドホックエンジン６０、アプリケーション処理部７０を備える。アドホックエンジン６０は、受信部６１、送信部６２、通知フレーム生成部６３、Ｈｅｌｌｏフレーム生成部２３、経路情報処理部２４、ルーティングテーブル２５を有する。アプリケーション処理部７０は、フレーム処理部７１、データ集約部７２、通知生成部７３、記憶部８０を有する。
【００３７】
送受信部５１は、サーバ９０と中継装置５０との間でフレームを送受信するための処理を行う。送受信部５１は、検針データを含むフレームをサーバ９０に送信する。送受信部５１は、サーバ９０との通信の成功や失敗を検出すると、受信した通知を通知生成部７３に出力する。
【００３８】
アドホックエンジン６０はアドホックネットワーク５内での通信に使用される。Ｈｅｌｌｏフレーム生成部２３、経路情報処理部２４、ルーティングテーブル２５は、ノード装置１０と同様である。受信部６１は、隣接するノード装置１０から受信したデータフレームをフレーム処理部７１に出力する。
【００３９】
フレーム処理部７１は、データフレーム中のデータをデータ８１として記憶部８０に保持できる。データ集約部７２は、データ８１として保持しているデータを集約することにより、サーバ９０に送信するためのデータを含むフレームを生成し、送受信部５１に出力する。通知生成部７３は、中継装置５０とサーバ９０との間の通信の結果を隣接するノード装置１０に通知するためのデータを生成する。通知生成部７３は、生成したデータを通知フレーム生成部６３に出力する。通知フレーム生成部６３は、通知生成部７３から取得したデータをペイロードに含む通知フレームを生成する。通知フレームには、通信成功通知と通信失敗通知が含まれる。通信成功通知は、アドホックヘッダと送信の成功を示すデータを含むフレームである。同様に、通信失敗通知は、アドホックヘッダと送信の失敗を示すデータを含むフレームである。通知フレーム生成部６３は、生成したフレームを送信部６２に出力する。送信部６２は、入力されたフレームを宛先のノード装置１０に向けて送信する。
【００４０】
図７は、ノード装置１０および中継装置５０のハードウェア構成の例を示す図である。ノード装置１０と中継装置５０は、プロセッサ１００、バス１０１（１０１ａ〜１０１ｃ）、タイマＩＣ１０４、Dynamic Random access Memory（ＤＲＡＭ）１０６、フラッシュメモリ１０７、無線モジュール１０８を備える。中継装置５０は、さらにPHYsical layer（ＰＨＹ）チップ１０２を含む。また、ノード装置１０も、オプションとして、ＰＨＹチップ１０２を含むことができる。バス１０１ａ〜１０１ｃは、プロセッサ１００、ＰＨＹチップ１０２、タイマＩＣ１０４、ＤＲＡＭ１０６、フラッシュメモリ１０７、無線モジュール１０８の間でデータの入出力が可能になるように接続する。
【００４１】
プロセッサ１００は、MicroProcessing Unit（ＭＰＵ）などの任意の処理回路である。プロセッサ１００は、フラッシュメモリ１０７に格納されたファームウェアなどのプログラムを読み込んで処理を行う。このとき、プロセッサ１００は、ＤＲＡＭ１０６をワーキングメモリとして使用できる。ノード装置１０において、プロセッサ１００は、Ｈｅｌｌｏフレーム生成部２３、経路情報処理部２４、判定部２７、決定部２８、フレーム処理部２９、データ取得部３１、格納処理部３２、圧縮処理部３３として動作する。一方、中継装置５０において、プロセッサ１００は、Ｈｅｌｌｏフレーム生成部２３、経路情報処理部２４、通知フレーム生成部６３、フレーム処理部７１、データ集約部７２、通知生成部７３として動作する。ノード装置１０において、ＤＲＡＭ１０６は、記憶部４０として動作し、さらに、ルーティングテーブル２５と中継装置テーブル２６を保持する。中継装置５０において、ＤＲＡＭ１０６は、記憶部８０として動作し、ルーティングテーブル２５を保持する。ノード装置１０において、無線モジュール１０８は、受信部２１および送信部２２として動作する。中継装置５０では、無線モジュール１０８は、受信部６１と送信部６２として動作する。ＰＨＹチップ１０２は、中継装置５０において、送受信部５１として動作する。中継装置５０は、ＰＨＹチップ１０２を介して回線による通信を行うことができる。
【００４２】
タイマＩＣ１０４は、Ｈｅｌｌｏフレーム生成部２３がＨｅｌｌｏフレームを生成する間隔の計測や、隣接するノード装置１０または中継装置５０からＨｅｌｌｏフレームを受信した間隔を計測するときに用いられる。さらに、格納処理部３２において通信結果通知を受信するまでの時間のカウントにも用いられる。つまり、タイマＩＣ１０４は、Ｈｅｌｌｏフレーム生成部２３、経路情報処理部２４、格納処理部３２などの一部として動作する。
【００４３】
なお、ファームウェアなどのプログラムは、コンピュータ読み取り可能な記憶媒体に格納されて提供され、ノード装置１０や中継装置５０にインストールされてもよい。または、プログラムは、ネットワークからＰＨＹチップ１０２や無線モジュール１０８を介してダウンロードされることによりノード装置１０や中継装置５０にインストールされてもよい。また、実施形態に応じて、ＤＲＡＭ１０６やフラッシュメモリ１０７以外の他の種類の記憶装置が利用されることがある。また、ノード装置１０や中継装置５０は、コンピュータによって実現されても良い。
【００４４】
＜第１の実施形態＞
以下、第１の実施形態に係る通信方法を中継装置５０までの経路取得、中継装置５０に隣接しているかの判定、データフレームの生成、検針データを含むフレームの転送処理に分けて説明する。以下の説明では、処理を行っているノード装置１０や中継装置５０を識別しやすくするために、参照番号の末尾に動作を行っているノード装置１０または中継装置５０の番号に含まれるアルファベットと同じアルファベットを記載することがある。例えば、ノード装置１０ｂに含まれているデータ取得部３１のことを、「データ取得部３１ｂ」と記載することがある。
【００４５】
（Ａ）中継装置５０までの経路の取得
アドホックネットワーク５を形成する個々のノード装置１０や中継装置５０は、電源が投入されると、Ｈｅｌｌｏフレームを生成し、隣接する装置にＨｅｌｌｏフレームをブロードキャストする。
【００４６】
図８にＨｅｌｌｏフレームの構成の例を示す。Ｈｅｌｌｏフレームは、アドホックヘッダとペイロードを含む。ペイロードは、ＨｅｌｌｏメッセージヘッダとＨｅｌｌｏヘッダを含む。図８の例では、アドホックヘッダは、ローカル宛先アドレス、ローカル送信元アドレス、グローバル宛先アドレス、グローバル送信元アドレス、タイプ、ゲートウェイ（ＧＷ）フラグを含む。Ｈｅｌｌｏフレームでは、ローカル宛先アドレスとグローバル宛先アドレスは、いずれも全ての隣接ノードを表すブロードキャストアドレスである。また、Ｈｅｌｌｏフレームのローカル送信元アドレスとグローバル送信元アドレスは、いずれも、Ｈｅｌｌｏフレームを生成したノード装置１０に割り当てられたアドレスである。
【００４７】
タイプはフレームの種類を一意に特定できる値である。Ｈｅｌｌｏフレームでは、タイプ＝０であるものとする。ゲートウェイフラグは、Ｈｅｌｌｏフレームの送信元がアドホックネットワーク５のゲートウェイとして動作しているかを特定するために使用される。ＧＷフラグ＝１は、Ｈｅｌｌｏフレームの送信元がゲートウェイとして動作していることを示し、ＧＷフラグ＝０は、Ｈｅｌｌｏフレームの送信元がゲートウェイとして動作していないことを示すものとする。すなわち、中継装置５０に関するＧＷフラグの値は１に設定され、ノード装置１０に関するＧＷフラグの値は０に設定される。
【００４８】
Ｈｅｌｌｏメッセージヘッダには、Ｈｅｌｌｏヘッダ数が含まれる。Ｈｅｌｌｏヘッダ数は、Ｈｅｌｌｏフレームの送信元のノード装置１０がルーティングテーブル２５に記憶しているグローバル宛先の数と同数である。Ｈｅｌｌｏヘッダには、グローバル宛先アドレス、ホップ数、ゲートウェイフラグ、経路品質重み、復路リンク重みが含まれる。ホップ数は、Ｈｅｌｌｏフレームの送信元からＨｅｌｌｏヘッダ中のグローバル宛先までのホップ数を記録する。Ｈｅｌｌｏヘッダ中のゲートウェイフラグは、Ｈｅｌｌｏヘッダ中のグローバル宛先に指定された装置がゲートウェイとして動作しているかを特定するために使用される。グローバル宛先が中継装置５０であるＨｅｌｌｏヘッダ中では、ゲートウェイフラグは１に設定されている。経路品質重みは、経路に含まれている全リンクの通信実績値の和であり、経路の通信品質の計算に用いられる。復路リンク重みフィールドは、Ｈｅｌｌｏヘッダのグローバル宛先がＨｅｌｌｏフレームの送信元の隣接ノードである場合に用いられる。復路リンク重みフィールドは、Ｈｅｌｌｏヘッダのグローバル宛先のノードからＨｅｌｌｏフレームの送信元が受信したＨｅｌｌｏフレームの受信品質を表す。
【００４９】
以下、図２のアドホックネットワーク５において、ノード装置１０ａの処理を例としてルーティングテーブル２５と中継装置テーブル２６の生成方法について説明する。
【００５０】
（Ａ１）ノード装置１０ｂに電源が投入されると、Ｈｅｌｌｏフレーム生成部２３ｂは、グローバル送信元とローカル送信元をノード装置１０ｂに設定したＨｅｌｌｏフレームを生成する。このとき、ノード装置１０ｂは、他のノード装置１０や中継装置５０への経路を保持していないので、ＨｅｌｌｏフレームにはＨｅｌｌｏヘッダが含まれない。ノード装置１０ｂは、Ｈｅｌｌｏフレームを１ホップのブロードキャストで送信する。
【００５１】
（Ａ２）ノード装置１０ａの受信部２１ａは、ノード装置１０ｂから受信したフレームのタイプが０に設定されているので、受信したフレームを経路情報処理部２４ａに出力する。経路情報処理部２４ａは、Ｈｅｌｌｏフレームの送信元をグローバル宛先とグローバル宛先に対応するローカル宛先の両方に登録することにより、Ｈｅｌｌｏフレームの送信元への経路をルーティングテーブル２５ａに記録する。さらに、経路情報処理部２４ａは、評価値を計算する。評価値は、Ｈｅｌｌｏフレームの送信元との間のリンクの状況と、経路品質重みに基づいて計算される値であり、経路の通信品質を表す。例えば、評価値は、ホップ数、電波強度、送信の成功回数などの通信の状況を表す値の１つ以上の関数である。例えば、評価値が小さいほど経路の通信状態が良好であることを示すように、評価値が計算される。この場合、ホップ数が小さいほど評価値は小さくなり、電波強度や送信成功回数が大きいほど評価値は小さくなる。ここでは、経路情報処理部２４ａは、図４（ｂ）のＮｏ．１−１に示す情報をルーティングテーブル２５ａに記録したものとする。なお、以下の記載では、文字列Ａｄｄの後にそのノード装置１０の符号を続けて記載することにより、ノード装置１０に割り当てられたアドレスを示すものとする。例えば、ノード装置１０ｂのアドレスはＡｄｄ１０ｂである。
【００５２】
（Ａ３）ノード装置１０ｂの全ての隣接ノードでも、同様に、ルーティングテーブル２５が更新される。以下の説明では、ノード装置１０ｄはノード装置１０ｂの隣接ノードであるとする。
【００５３】
（Ａ４）次に、ノード装置１０ｄがＨｅｌｌｏフレームを送信したとする。ノード装置１０ｄのＨｅｌｌｏフレーム生成部２３ｄは、ルーティングテーブル２５ｄを用いて、ノード装置１０ｄからノード装置１０ｂに至る経路の情報を、Ｈｅｌｌｏフレームに含める。従って、以下のような経路情報を含むＨｅｌｌｏフレームがノード装置１０ｄからブロードキャストされる。
【００５４】
ＬＳおよびＧＳ                ：  Ａｄｄ１０ｄ
ＬＤおよびＧＤ                ：  ブロードキャストアドレス
タイプ                        ：  ０
ＧＷフラグ                    ：  ０
Ｈｅｌｌｏヘッダ数            ：  １
Ｈｅｌｌｏヘッダ中のＧＤ      ：  Ａｄｄ１０ｂ
ホップ数                      ：  １
Ｈｅｌｌｏヘッダ中のＧＷフラグ：  ０
経路品質重み                  ：  ｄ１
復路リンク重み                ：  ｄ２
【００５５】
（Ａ４）ノード装置１０ａの受信部２１ａは、ノード装置１０ｄから受信したＨｅｌｌｏフレームを、経路情報処理部２４ａに出力する。経路情報処理部２４ａは、手順（Ａ２）と同様にアドホックヘッダの情報を処理することにより、図４（ｂ）のＮｏ．２−１に示す情報をルーティングテーブル２５ａに記録する。
【００５６】
さらに、経路情報処理部２４ａは、Ｈｅｌｌｏヘッダ中の情報をルーティングテーブル２５ａに登録する。このとき、経路情報処理部２４ａは、Ｈｅｌｌｏフレームのローカル送信元アドレスを、Ｈｅｌｌｏヘッダ中のグローバル宛先アドレスに対応付けられたローカル宛先アドレス（ＬＤ）とする。ノード装置１０ｄから受信したＨｅｌｌｏフレーム中のＨｅｌｌｏヘッダを用いて、経路情報処理部２４ａは、図４（ｂ）のＮｏ．１−２に示す情報をルーティングテーブル２５ａに記録する。
【００５７】
（Ａ５）ノード装置１０ｄに隣接する各ノードは、ノード装置１０ｄから送信されたＨｅｌｌｏフレームを手順（Ａ４）と同様に処理することにより、ルーティングテーブル２５を更新する。
【００５８】
（Ａ６）中継装置５０ａは、以下のようなＨｅｌｌｏフレームを生成して隣接するノード装置１０や中継装置５０に送信したとする。以下の記載では、中継装置５０ａ〜５０ｃに割り当てられたアドレスは、ＧＷ１（中継装置５０ａ）、ＧＷ２（中継装置５０ｂ）、ＧＷ３（中継装置５０ｃ）であるものとする。
【００５９】
ＬＳおよびＧＳ            ：  ＧＷ１
ＬＤおよびＧＤ            ：  ブロードキャストアドレス
タイプ                    ：  ０
ＧＷフラグ                ：  １
Ｈｅｌｌｏヘッダ数        ：  ０
【００６０】
（Ａ７）ノード装置１０ａの受信部２１ａは、中継装置５０ａから受信したＨｅｌｌｏフレームを経路情報処理部２４ａに出力する。経路情報処理部２４ａは、中継装置５０ａから受信したＨｅｌｌｏフレームを用いて、図４（ｂ）のＮｏ．３−１に示す情報をルーティングテーブル２５ａに記録する。
【００６１】
（Ａ８）経路情報処理部２４ａは、ルーティングテーブル２５ａに中継装置５０宛の経路を記録すると、中継装置テーブル２６ａを生成する。ここでは、経路情報処理部２４ａは、図４（ｂ）に示すルーティングテーブル２５ａに基づいて、図５（ｂ）に示す中継装置テーブル２６ａを生成する。
【００６２】
（Ａ９）同様に、個々のノード装置１０や中継装置５０がＨｅｌｌｏフレームを用いて経路情報を交換する。このため、アドホックネットワーク５中の個々のノードはアドホックネットワーク５中の他のノード装置１０や中継装置５０への経路情報を含むルーティングテーブル２５を生成できる。また、ルーティングテーブル２５から中継装置テーブル２６が生成、更新される。なお、複数の中継装置５０に至る経路がルーティングテーブル２５に含まれている場合、経路情報処理部２４ａは、評価値を比較することにより、通信に最も有利な中継装置５０を、検針データを含むフレームの送信先の中継装置５０とする。その結果、ノード装置１０ａは、図４（ａ）に示すルーティングテーブル２５ａと図５（ａ）に示す中継装置テーブル２６ａを生成したものとする。
【００６３】
（Ｂ）中継装置５０に隣接しているかの判定
判定部２７は、中継装置テーブル２６を参照することにより、通信可能な中継装置５０の中で優先度が最も高い中継装置５０を、検針データを含むフレームの送信先として特定する。ここで、優先度が高い中継装置５０ほど、評価値が小さくなっており、また、優先度の欄の値も小さいものとする。判定部２７は、ルーティングテーブル２５を参照することにより、検針データを含むフレームの送信先とする中継装置５０に至る経路の情報を取得する。検針データを含むフレームの送信先とする中継装置５０がグローバル宛先とローカル宛先の両方として記録されている場合、判定部２７は、ノード装置１０が検針データを含むフレームの送信先の中継装置５０に隣接していると判定する。判定部２７は、ノード装置１０が検針データを含むフレームの送信先の中継装置５０に隣接していることを、決定部２８、フレーム処理部２９、データ取得部３１、格納処理部３２、圧縮処理部３３に通知する。
【００６４】
例えば、ノード装置１０ａでは、判定部２７ａが図５（ａ）に示す中継装置テーブル２６ａに基づいて、検針データを含むフレームの送信先である中継装置５０に割り当てられているアドレスはＧＷ１であることを特定する。なお、ＧＷ１は、中継装置５０ａに割り当てられている。
【００６５】
次に、判定部２７ａは、図４（ａ）に示すルーティングテーブル２５ａを参照して、検針データを含むフレームの送信先の中継装置５０までの経路を取得する。グローバル宛先のアドレスがＧＷ１であるエントリは、Ｎｏ．３−１〜３−３である。Ｎｏ．３−１のエントリではローカル宛先アドレスもＧＷ１であるため、判定部２７ａは、ノード装置１０ａは、検針データを含むフレームの送信先の中継装置５０に隣接していると判定する。
【００６６】
ノード装置１０ｅ、１０ｉ、１０ｋでもノード装置１０ａと同様の処理が行われる。その結果、ノード装置１０ｅの判定部２７eは、ノード装置１０ｅからサーバ９０に送信するフレームの転送先である中継装置５０ｂに隣接していることを特定する。ノード装置１０ｉ、１０ｋでは、サーバ９０宛のフレームの転送先が中継装置５０ｃであることと、ノード装置１０ｉ、１０ｋが中継装置５０ｃに隣接していることが特定される。
【００６７】
（Ｃ）データフレームの生成
各ノード装置１０のデータ取得部３１は、メーターから検針データを取得する。なお、検針データの取得は、予め決められた周期ごとに行われても良く、また、サーバ９０からの要求に応答して行われても良い。データ取得部３１は、検針データをフレーム処理部２９に出力する。
【００６８】
フレーム処理部２９は、データ取得部３１から入力された検針データを含めたデータフレームを生成する。データフレームのフォーマットの例を図９（ａ）に示す。アドホックヘッダはいずれの種類のフレームでも同じ情報要素を含む。ただし、サーバ９０向けのデータを含むデータフレームでは、タイプ＝１に設定されるものとする。
【００６９】
フレーム処理部２９は、ルーティングテーブル２５と中継装置テーブル２６を用いてアドホックヘッダを生成する。フレーム処理部２９は、中継装置テーブル２６を参照することにより、通信可能な中継装置５０の中から優先度が最も高い中継装置５０を特定し、特定した中継装置５０のアドレスをグローバル宛先アドレスとする。さらに、フレーム処理部２９は、特定した中継装置５０にフレームを送信するときの転送先のアドレスをルーティングテーブル２５から取得し、ローカル宛先アドレスとする。また、フレーム処理部２９は、グローバル送信元アドレスとローカル送信元アドレスを、検針データを取得したノード装置１０に割り当てられたアドレスとする。フレーム処理部２９は、生成したアドホックヘッダを、検針データに付加することにより、データフレームを生成する。なお、図９（ａ）はデータフレームの例であり、例えば、ペイロードには、サーバ９０宛のデータ以外に署名情報などの他の情報要素が含まれていても良い。
【００７０】
（Ｄ）検針データを含むフレームの転送処理
図１０は、データフレームの転送処理の例を示すシーケンス図である。また、図１１は、再送データフレームを用いて検針データが送信される経路の例を示す。以下、図１０と図１１を参照しながら、ノード装置１０ａ〜１０ｃで生成されたデータフレームが転送される場合を例として説明する。
【００７１】
（Ｄ１）ノード装置１０ａのデータ取得部３１ａは、検針データを取得する。ノード装置１０ａは、データフレームの転送先の中継装置５０ａに隣接しているので、データ取得部３１ａは、検針データを格納処理部３２ａとフレーム処理部２９ａに出力する。フレーム処理部２９ａは、前述の方法により、データフレームを生成し、送信部２２ａに出力する。送信部２２ａは、中継装置５０ａにデータフレームを送信する。
【００７２】
（Ｄ２）格納処理部３２ａは、データ取得部３１ａから入力された検針データを記憶部４０ａに格納する。
【００７３】
（Ｄ３）中継装置５０ａは、受信部６１ａを用いて、ノード装置１０ａからデータフレームを受信する。受信部６１ａは、受信したフレームのタイプが１に設定されているので、データフレームを受信したと判定する。受信部６１ａは、データフレームのペイロードを、データフレームのローカル送信元アドレスに対応付けてフレーム処理部７１ａに出力する。フレーム処理部７１ａは、ペイロードに含まれている検針データを、ローカル送信元アドレスに対応付けて記憶部８０に格納する。
【００７４】
（Ｄ４）ノード装置１０ｂのデータ取得部３１ｂは検針データを取得し、フレーム処理部２９ｂに出力する。フレーム処理部２９ｂは、データフレームを生成する。このときノード装置１０ｂで生成されるデータフレームのグローバル宛先は中継装置５０ａ、ローカル宛先はノード装置１０ａ、グローバル送信元はノード装置１０ｂである。生成されたデータフレームはノード装置１０ａに送信される。
【００７５】
（Ｄ５）ノード装置１０ａの受信部２１ａは、データフレームを受信すると、フレーム処理部２９ａに出力する。フレーム処理部２９ａは、ノード装置１０ａがデータフレームの送信先の中継装置５０ａに隣接していることを判定部２７ａから通知されている。そこで、ノード装置１０ｂから受信したデータフレームに含まれているペイロードを、データフレームのグローバル送信元と対応付けて格納処理部３２ａに出力する。さらに、フレーム処理部２９ａは、ノード装置１０ｂから受信したデータフレームのアドホックヘッダ中のローカル送信元をノード装置１０ａ、ローカル宛先を中継装置５０ａに変更して送信部２２ａに出力する。送信部２２ａは、フレーム処理部２９ａから入力されたデータフレームを中継装置５０ａに転送する。
【００７６】
（Ｄ６）格納処理部３２ａは、フレーム処理部２９ａから入力されたペイロードから、サーバ９０宛に送信される対象となっている検針データを抽出し、グローバル送信元（ノード装置１０ｂ）と対応付けて記憶部４０ａに格納する。この処理により、記憶部４０は、ノード装置１０ａとノード装置１０ｂで得られた検針データを保持する。
【００７７】
（Ｄ７）中継装置５０ａは、手順（Ｄ３）と同様の処理により、ノード装置１０ｂで得られた検針データを記憶部８０に格納する。
【００７８】
（Ｄ８）ノード装置１０ｃにおいても、ノード装置１０ｂと同様に、検針データを含むデータフレームが生成される。データフレームは、ノード装置１０ｃからノード装置１０ｂに送信される。
【００７９】
（Ｄ９）ノード装置１０ｂは、ノード装置１０ｃからデータフレームを受信する。受信部２１ｂはノード装置１０ｃから受信したデータフレームをフレーム処理部２９ｂに出力する。判定部２７ｂは、ルーティングテーブル２５ｂと中継装置テーブル２６ｂを用いて、ノード装置１０ｂがいずれの中継装置５０にも隣接していないと判定している。すなわち、判定部２７ｂは、ノード装置１０ｂが受信したデータフレーム中の検針データを保持しなくても良いと判定している。そこで、フレーム処理部２９ｂは、入力されたデータフレームのアドホックヘッダを、ルーティングテーブル２５ｂを用いて変更し、送信部２２ｂを介して、ノード装置１０ａに転送する。
【００８０】
（Ｄ１０）ノード装置１０ｃで生成されたデータフレームを受信したノード装置１０ａでは、手順（Ｄ５）と同様の処理が行われる。このため、データフレームは中継装置５０ａに転送される。
【００８１】
（Ｄ１１）格納処理部３２ａは、手順（Ｄ１０）で受信したデータフレーム中のペイロードから検針データを抽出し、ノード装置１０ｃに対応付けて記憶部４０ａに格納する。この処理により、記憶部４０ａは、ノード装置１０ａ〜１０ｃで得られた検針データを保持する。
【００８２】
（Ｄ１２）中継装置５０ａは、手順（Ｄ１１）でノード装置１０ａから送信されてきたデータフレームを、手順（Ｄ３）と同様に処理する。
【００８３】
検針データをサーバ９０に送信する時刻になると、中継装置５０ａの送受信部５１ａは、サーバ９０との間で通信を確立しようとする。さらに、データ集約部７２ｂは、記憶部８０に記憶している検針データを含むサーバ９０宛のフレームを生成する。ここでは、送受信部５１ａは、中継装置５０ａとサーバ９０の間で通信の確立に失敗したとする。送受信部５１ａは、所定のリトライ回数分、サーバ９０との間での通信の確立を試みるがいずれも失敗したとする。
【００８４】
（Ｄ１３）中継装置５０ａの通知生成部７３ａは、通信の失敗を通知するデータを通知フレーム生成部６３ａに出力する。通知フレーム生成部６３ａは、通信失敗通知を生成する。通信失敗通知のフォーマットの例を図９（ｂ）に示す。通信失敗通知では、タイプ＝３に設定されるものとする。通知フレーム生成部６３ａは、通信失敗通知のグローバル宛先を、１ホップのブロードキャストアドレスに設定する。さらに、通知フレーム生成部６３ａは、通信失敗通知のグローバル送信元とローカル送信元を中継装置５０ａに設定する。通知フレーム生成部６３ａは、生成した通信失敗通知を、送信部６２ａを介して、中継装置５０ａに隣接する全てのノード装置１０に送信する。
【００８５】
（Ｄ１４）ノード装置１０ａの受信部２１ａは、タイプ＝３に設定されたフレームを受信すると格納処理部３２ａに出力する。格納処理部３２ａは、中継装置５０ａから通信失敗通知を受信したと判定し、中継装置テーブル２６ａを図５（ａ）の状態から図５（ｃ）に示すように更新する。また、格納処理部３２ａは、データ４１から検針データを抽出して圧縮処理部３３ａに出力する。圧縮処理部３３ａは、格納処理部３２ａから入力されたデータを圧縮する。圧縮処理部３３ａは、圧縮後のデータと圧縮方式などを示す情報をフレーム処理部２９ａに出力するとともに、再送データフレームの生成を要求する。再送データフレームのフォーマットの例を図９（ｃ）に示す。再送データフレームではタイプ＝５に設定されるものとする。
【００８６】
決定部２８ａは、中継装置テーブル２６ａが更新されたことをトリガとして、通信可能な中継装置５０の中で通信経路の状況が良好な中継装置５０を、検針データの送信先に決定する。ここでは、図５（ｃ）により、決定部２８ａは、中継装置５０ｂを検針データの送信先に決定したとする。決定部２８ａは、中継装置５０ｂを検針データの送信先とすることをフレーム処理部２９ａに通知する。ここでは、図１１に示す経路で再送データフレームが送信されるものとする。すると、フレーム処理部２９ａは、ルーティングテーブル２５ａを参照することにより、以下のようなアドホックヘッダを備えた再送データフレームを生成する。
【００８７】
グローバル送信元    ：ノード装置１０ａ
グローバル宛先      ：中継装置５０ｂ
ローカル送信元      ：ノード装置１０ａ
ローカル宛先        ：ノード装置１０ｅ
タイプ              ：５
ＧＷフラグ          ：０
再送データフレームは、ノード装置１０ａからノード装置１０ｅに送信される。
【００８８】
（Ｄ１５）ノード装置１０ｅの受信部２１ｅは、タイプ＝５に設定されたフレームを受信したと判定すると、受信フレームをフレーム処理部２９ｅに出力する。フレーム処理部２９ｅは、タイプ＝５なので、再送データフレームであると判定し、ルーティングテーブル２５ｅを用いて再送データフレームを中継装置５０ｂに転送する。
【００８９】
このとき、ノード装置１０ｅは、検針データを含むフレームのグローバル宛先である中継装置５０ｂに隣接しているが、再送データフレームについては、ペイロード中のデータをノード装置１０ｅに保持するための処理を行わない。再送データフレーム中のデータは、再送データフレームのグローバル送信元において保持されているためである。
【００９０】
（Ｄ１６）中継装置５０ｂの受信部６１ｂは、タイプ＝５に設定されたフレームを受信したと判定すると、受信フレームのペイロードを、グローバル送信元と対応付けて、フレーム処理部７１ｂに出力する。フレーム処理部７１ｂは、ペイロードに含まれている圧縮方式に関する情報を用いてデータを解凍し、データ集約部７２ｂに出力する。
【００９１】
（Ｄ１７）中継装置５０ｂの送受信部５１ｂは、ノード装置１０ａを介して取得した検針データを送信するために、サーバ９０との間で通信を確立する。
【００９２】
（Ｄ１８）中継装置５０ｂとサーバ９０との間の通信が確立すると、データ集約部７２ｂは、フレーム処理部７１ｂから入力された検針データを含むフレームを生成し、送受信部５１ｂを介してサーバ９０に送信する。
【００９３】
（Ｄ１９）サーバ９０への送信に成功すると、通知生成部７３ｂは、送信に成功したことと、送信した検針データに対応付けられたアドレスを通知フレーム生成部６３ｂに通知する。ここでは、通知生成部７３ｂは、検針データの送信に成功したことと、ノード装置１０ａのアドレスを、通知フレーム生成部６３ｂに通知する。通知フレーム生成部６３ｂは、通知生成部７３ｂから通知されたアドレスをグローバル宛先アドレスとした通信成功通知を生成する。通信成功通知のフォーマットの例を図９（ｄ）に示す。通信成功通知ではタイプ＝２に設定されるものとする。通信成功通知は、図１１の（Ｄ１９）に示す経路でノード装置１０ａに送信される。
【００９４】
（Ｄ２０）ノード装置１０ａの受信部２１ａは、タイプ＝２の受信フレームを格納処理部３２ａに出力する。格納処理部３２ａは、再送データフレームのグローバル宛先から通信成功通知を受信したことから、検針データの送信が成功したと判定する。そこで、格納処理部３２ａは、中継装置５０ｂに送信した検針データについては、再度送信が要求される可能性がないと判定し、記憶部４０ａから削除する。言い換えると、格納処理部３２ａは、ノード装置１０ａで取得された検針データや受信したデータフレーム中の検針データを、サーバ９０への送信が要求される可能性がなくなるまで、記憶部４０に格納しているといえる。
【００９５】
さらに、ノード装置１０ａ〜１０ｃにおいて検針データの送信先が中継装置５０ｂに変更された後に、ノード装置１０ａが、ノード装置１０ｂ、１０ｃなどから中継装置５０ｂ宛のデータを受信したとする。図４に示すように、ノード装置１０ａは中継装置５０ｂに隣接していないので、ノード装置１０ａはノード装置１０ｂやノード装置１０ｃから受信したデータフレーム中の検針データを保持せずに、データフレームの転送処理を行う。
【００９６】
なお、図１０と図１１を参照しながら説明した手順は一例であり、実装に応じて変更される場合があるものとする。例えば、手順（Ｄ１）と手順（Ｄ２）の順序を入れ替えることもできる。同様に、手順（Ｄ５）と手順（Ｄ６）の順序の変更、および、手順（Ｄ１０）と手順（Ｄ１１）の順序の変更も可能である。さらに、圧縮処理部３３を備えていないノード装置１０では、検針データを圧縮しないで再送データフレームを生成することもできる。検針データの圧縮が行われずに生成された再送データフレームのフォーマットの例を図９（ｅ）に示す。また、中継装置５０とサーバ９０の間の通信に用いられるプロトコルはTransmission Control Protocol（ＴＣＰ）に限られない。
【００９７】
図１２は、ノード装置１０で行われる処理の例を示すフローチャートである。なお、図１２では、受信フレームはＨｅｌｌｏフレーム以外のフレームであるものとする。
【００９８】
データ取得部３１は、検針データを取得する周期を記憶しており、時刻情報を用いて、検針データを取得する時刻であるか判断する（ステップＳ１）。検針データを取得する時刻になると、データ取得部３１は、メーターから検針データを取得し、フレーム処理部２９に出力する（ステップＳ１でＹｅｓ、ステップＳ２）。フレーム処理部２９は、ルーティングテーブル２５と中継装置テーブル２６を用いてデータフレームを生成する（ステップＳ３）。次に、判定部２７は、データフレームのグローバル宛先に指定されている中継装置５０に、自ノードが隣接しているかを、ルーティングテーブル２５と中継装置テーブル２６を用いて判定する（ステップＳ６）。データフレームのグローバル宛先に指定されている中継装置５０に、自ノードが隣接している場合、格納処理部３２は、データフレームに含まれている検針データを記憶部４０に格納する（ステップＳ６でＹｅｓ、ステップＳ７）。送信部２２は、データフレームのグローバル宛先に指定されている中継装置５０にデータフレームを送信する（ステップＳ８）。格納処理部３２は、通信結果通知の受信までにかかる時間のカウントを開始する（ステップＳ９）。一方、自ノードがデータフレームのグローバル宛先に指定されている中継装置５０に隣接していない場合、送信部２２は、グローバル宛先に向けて、データフレームを転送する（ステップＳ６でＮｏ、ステップＳ１１）。
【００９９】
検針データを取得する時刻ではなくても、フレーム処理部２９は、フレームを受信すると、中継装置５０宛のデータフレームを受信したかを判定する（ステップＳ１でＮｏ、ステップＳ４でＹｅｓ、ステップＳ５）。中継装置５０宛のデータフレームを受信した場合、ノード装置１０は、ステップＳ６〜Ｓ９の処理か、ステップＳ６、Ｓ１１の処理を行う。一方、受信フレームが中継装置５０宛のデータフレームではない場合、フレーム処理部２９は、自ノード宛のフレームであるかを判定する（ステップＳ５でＮｏ、ステップＳ１０）。フレーム処理部２９が自ノード宛のフレームを受信していないと判定した場合、送信部２２は、受信フレームをグローバル宛先に向けて転送する（ステップＳ１０でＮｏ、ステップＳ１１）。フレーム処理部２９により自ノード宛のフレームだと判定されたフレームは、アプリケーション処理部３０で処理される（ステップＳ１０でＹｅｓ、ステップＳ１２）。なお、検針データを取得する時刻ではなく、フレームも受信していないと判定した場合、ノード装置１０は待機する（ステップＳ１でＮｏ、ステップＳ２でＮｏ）。
【０１００】
図１３は、ノード装置１０で行われる処理の例を示すフローチャートである。図１３は、ノード装置１０が再送データフレームを送信するときに行う処理の例を示している。格納処理部３２は、通信結果通知を受信したかを判定する（ステップＳ２１）。通信結果通知を受信した場合、格納処理部３２は、通信結果通知のグローバル送信元が、自ノードから送信したデータフレームまたは再送データフレームのグローバル宛先と一致するかを判定する（ステップＳ２１でＹｅｓ、ステップＳ２３）。通信結果通知のグローバル送信元と、自ノードから送信したデータフレームまたは再送データフレームのグローバル宛先が一致する場合、自ノードから送信したデータフレームまたは再送データフレームに対する通信結果を受信している。そこで、格納処理部３２は、記憶部４０に検針データが格納されているかを判定する（ステップＳ２３でＹｅｓ、ステップＳ２４）。検針データを格納していない場合、通信結果通知による検針データの削除や検針データの再送などの処理を行うことができないので、通信結果通知を破棄し、処理を終了する（ステップＳ２４でＮｏ、ステップＳ２５）。また、通信結果通知のグローバル送信元と、自ノードから送信したデータフレームまたは再送データフレームのグローバル宛先が一致しない場合も、ノード装置１０は、通信結果通知を破棄して処理を終了する（ステップＳ２３でＮｏ、ステップＳ２５）。
【０１０１】
ステップＳ２４で検針データを格納していると判定した場合、格納処理部３２は、受信した通信結果通知が通信失敗通知であるかを判定する（ステップＳ２４でＹｅｓ、ステップＳ２６）。受信した通信結果通知が通信失敗通知ではない場合、通信の成功が通知されているので、格納処理部３２は、記憶部４０に格納している検針データを削除する（ステップＳ２６でＮｏ、ステップＳ２７）。一方、通信失敗通知を受信した場合、格納処理部３２とフレーム処理部２９は、記憶部４０に格納されている検針データを用いて再送データフレームを生成する（ステップＳ２６でＹｅｓ、ステップＳ２８）。送信部２２は、生成された再送データフレームを、グローバル宛先に向けて送信する（ステップＳ２９）。
【０１０２】
また、ステップＳ２１で通信結果通知を受信していないと判定した場合、格納処理部３２は、データフレームまたは再送データフレームを送信した時刻から経過した時間が、予め決められた通知待ち時間を越えているかを判定する（ステップＳ２２）。経過時刻が通知待ち時間を超えている場合（通知待ちタイムアウト）、ステップＳ２８以降の処理が行われる（ステップＳ２２でＹｅｓ）。一方、通知待ちタイムアウトが発生していない場合、ノード装置１０は、待機する（ステップＳ２２でＮｏ）。
【０１０３】
図１４は、中継装置５０で行われる処理の例を示すフローチャートである。なお、図１４には、Ｈｅｌｌｏフレーム以外のフレームを中継装置５０が受信したときの動作の例が示されている。
【０１０４】
中継装置５０は、フレームを受信するまで待機する（ステップＳ４１）。中継装置５０でフレームを受信すると、フレーム処理部７１は、データフレームを受信したかを判定する（ステップＳ４１でＹｅｓ、ステップＳ４２）。データフレームを受信した場合、フレーム処理部７１はデータフレームから検針データを抽出して記憶部８０に格納する（ステップＳ４３）。フレーム処理部７１は、検針データをサーバ９０に送信できる時刻になるまで、ステップＳ４１〜Ｓ４４に示すデータフレームの受信処理を繰り返す（ステップＳ４４）。ここで、サーバに検針データを送信できる時刻は、予め、中継装置５０に通知されているものとする。
【０１０５】
検針データをサーバ９０に送信できる時刻以降に受信したデータフレームから検針データを取得すると、データ集約部７２は記憶部８０に記憶されているデータを集約してサーバ９０宛のフレームを生成する（ステップＳ４４でＹｅｓ）。さらに、データ集約部７２は、送受信部５１を介してサーバ９０にフレームを送信する（ステップＳ４８）。通知生成部７３は、サーバ９０から送信される制御メッセージをモニタすることにより、サーバ９０へのフレームの送信に成功したかを判定する（ステップＳ４９）。サーバ９０へのフレームの送信に成功したと判定すると、通知生成部７３は送信の成功を通知フレーム生成部６３に通知し、通信成功通知を生成させる。ここで、通信成功フレームのグローバル宛先は、データフレームを中継装置５０に転送したノード装置１０である。通知フレーム生成部６３は、送信部６２を介して、通信成功通知を送信する（ステップＳ５０）。一方、サーバ９０へのフレームの送信に失敗すると、中継装置５０は、送信回数が予め決められたリトライ回数に達するまで、サーバ９０へのフレームの再送信を試みる（ステップＳ４９でＮｏ、ステップＳ５１でＹｅｓ）。リトライ回数に達するまでサーバ９０への送信を行ってもフレームをサーバ９０に送信できなかった場合、通知生成部７３は、通信の失敗を通知フレーム生成部６３に通知する（ステップＳ５１でＮｏ）。通知フレーム生成部６３は、通信失敗通知を生成して、データフレームを中継装置５０に転送したノード装置１０に送信する（ステップＳ５２）。
【０１０６】
一方、ステップＳ４２で受信フレームがデータフレームではないと判定されると、フレーム処理部７１は、再送データフレームを受信したかを判定する（ステップＳ４２でＮｏ、ステップＳ４５）。再送データフレームを受信したと判定すると、フレーム処理部７１は、再送データフレーム中のデータが圧縮されているかを判定する（ステップＳ４５でＹｅｓ、ステップＳ４６）。再送データフレーム中のデータが圧縮されている場合、フレーム処理部７１は、データを解凍する（ステップＳ４６でＹｅｓ、ステップＳ４７）。その後、データ集約部７２は、解凍されたデータを用いてサーバ９０宛のフレームを生成し、サーバ９０に送信する（ステップＳ４８）。一方、データが圧縮されていない場合は、データ集約部７２は、再送データフレームに含まれている検針データを用いてサーバ９０宛のフレームを生成し、送受信部５１を介して送信する（ステップＳ４６でＮｏ、ステップＳ４８）。サーバ９０にフレームを送信した後の処理は、ステップＳ４９からＳ５２を参照しながら説明したとおりである。なお、再送データフレームを用いて中継装置５０に通知された検針データをサーバ９０に送信した場合、通知フレーム生成部６３は、通信成功通知や通信失敗通知のグローバル宛先を、再送データフレームのグローバル送信元に設定する。
【０１０７】
さらに、受信フレームがデータフレームでも再送データフレームでもない場合、受信フレームは、アプリケーション処理部７０によって適宜処理される（ステップＳ４５でＮｏ、ステップＳ５３）。
【０１０８】
このように、第１の実施形態では、データフレームのグローバル宛先に設定されている中継装置５０に隣接しているノード装置１０は、データフレームに含まれている検針データを、サーバ９０への検針データの送信成功が確認できるまで保持する。また、第１の実施形態では、中継装置５０に隣接したノード装置１０は、自ノードで得られた検針データも、他のノード装置１０から受信した検針データと合わせて保持する。このため、データフレームのグローバル宛先に設定されている中継装置５０がサーバ９０にフレームを送信できなかったとしても、検針データは、送信に失敗した中継装置５０に隣接するノード装置１０に保持されており、無駄にならない。
【０１０９】
また、サーバ９０との通信に失敗した中継装置５０とは異なる中継装置５０を介して検針データを送信するときは、検針データを保持しているノード装置１０が、新たに中継先とする中継装置５０に検針データを含む再送データフレームを送ればよい。このため、中継先の中継装置５０が変更されても、個々のノード装置１０が検針データの取得と送信を再度行わなくて良く、ノード装置１０の負担は、第１の実施形態にかかる方法を使用しない場合に比べて軽減される。また、アドホックネットワーク５全体のトラフィックも、再送が行われるときのトラフィックが減少することに伴い、減少する。このため、アドホックネットワークでの通信も効率化できる。
【０１１０】
さらに、図１３を参照しながら説明したように、検針データを送信してから所定の期間中に通信成功通知と通信失敗通知のいずれも受信しない場合も、検針データを保持しているノード装置１０が再送データフレームの送信を行う。このため、中継装置５０とサーバ９０の間の回線で障害が発生した場合だけでなく、中継装置５０で障害が発生した場合であっても、第１の実施形態により、検針データをサーバ９０に送信することができる。
【０１１１】
＜第２の実施形態＞
第２の実施形態では、再送データフレームに含まれるデータの量を一定以下に抑えることにより、特定の中継装置５０に負荷を集中させないようにするための通信方法の例を説明する。第２の実施形態でも、ノード装置１０は、第１の実施形態と同様の方法により、中継装置５０までの経路取得、中継装置５０に隣接しているかの判定、データフレームの生成を行うものとする。また、データフレームの転送処理も、図１０を参照しながら説明した手順（Ｄ１）〜（Ｄ１２）と同様に行われる。中継装置５０からの通信失敗通知の送信も、手順（Ｄ１３）と同様に行われる。
【０１１２】
図１５は、第２の実施形態での再送データフレームの送信経路の例を示す図である。図１６は、再送データフレームの送信処理の例を示すシーケンス図である。以下、図１５と図１６を参照しながら、ノード装置１０ａが記憶している検針データを、中継装置５０ｂ宛の再送データフレームと中継装置５０ｃ宛の再送データフレームに分けた場合について説明する。
【０１１３】
（Ｅ１）手順（Ｄ１３）において、ノード装置１０ａは、中継装置５０ａから通信失敗通知を受信する。ノード装置１０ａの受信部２１ａは、タイプ＝３に設定されたフレームを受信すると格納処理部３２ａに出力する。格納処理部３２ａは、中継装置５０ａから通信失敗通知を受信したと判定し、中継装置テーブル２６ａ中の中継装置５０ａについての通信可否情報を「不可」に更新する。
【０１１４】
次に、格納処理部３２ａは、記憶部４０ａに格納されている検針データの量を求め、得られたデータ量を、予め記憶している閾値と比較する。ここで、閾値は、データ数やデータの容量などを単位として決定される値であるとする。ここでは、記憶部４０ａに格納されている検針データの量は閾値より多いものとする。すると、格納処理部３２ａは、記憶部４０ａに格納されている検針データを閾値以下の量の分割データに分割する。例えば、閾値がデータ数を単位として決定されており、５０個であるとする。一方、記憶部４０ａには、８０個のデータが格納されていたとすると、格納処理部３２ａは、記憶部４０ａに格納されている８０個の検針データを、５０個のデータを含む第１の分割データと３０個のデータを含む第２の分割データに分割する。図１７（ａ）に分割データの例を示す。格納処理部３２は、個々の検針データについて、いずれの分割データに含まれているかを記憶するものとする。
【０１１５】
（Ｅ２）格納処理部３２ａは、第１および第２の分割データを圧縮処理部３３ａに出力する。圧縮処理部３３ａは、格納処理部３２ａから入力されたデータを、分割データごとに圧縮する。圧縮処理部３３ａは、圧縮後のデータと圧縮方式などを示す情報を対応付けて、分割データごとにフレーム処理部２９ａに出力する。以下、第１の分割データを圧縮して得られたデータを第１の圧縮データと記載する。同様に、第２の分割データを圧縮して得られたデータを第２の圧縮データと記載する。
【０１１６】
（Ｅ３）格納処理部３２ａは、生成した分割データの数を決定部２８ａに通知する。決定部２８ａは、中継装置テーブル２６ａを参照することにより、通信可能な中継装置５０の中から通信経路の状況が良好な中継装置５０を優先的に、再送データフレームの送信先として、圧縮データの数だけ選択する。ここでは、決定部２８ａは、中継装置５０ｂと中継装置５０ｃを、再送データフレームの送信先として決定したとする。
【０１１７】
（Ｅ４）フレーム処理部２９ａは、決定部２８ａに、第１の圧縮データを含む再送データフレームの送信先を要求する。すると、決定部２８ａは、決定した送信先のうちで優先度の高いものを、フレーム処理部２９ａに通知する。ここでは、決定部２８ａは、中継装置５０ｂを送信先として通知したものとする。フレーム処理部２９ａは、ルーティングテーブル２５ａを参照することにより、中継装置５０ｂをグローバル宛先とするアドホックヘッダを、以下のように決定する。なお、ここでは、ノード装置１０ａは、中継装置５０ｂに隣接しているとする。
【０１１８】
グローバル送信元    ：ノード装置１０ａ
グローバル宛先      ：中継装置５０ｂ
ローカル送信元      ：ノード装置１０ａ
ローカル宛先        ：中継装置５０ｂ
タイプ              ：５
ＧＷフラグ          ：０
【０１１９】
フレーム処理部２９ａは、生成したアドホックヘッダを、第１の圧縮データを含むペイロードに付加することにより、第１の再送データフレームを生成する。さらに、フレーム処理部２９ａは、第１の圧縮データを含む再送データフレームのグローバル宛先を中継装置５０ｂに設定したことを、格納処理部３２ａに通知する。すると、格納処理部３２ａは、図１７（ｂ）に示す情報を記憶する。
【０１２０】
（Ｅ５）フレーム処理部２９ａは、第１の再送データフレームを送信部２２ａに出力する。送信部２２ａは、第１の再送データフレームを中継装置５０ｂに送信する。
【０１２１】
手順（Ｅ６）〜（Ｅ８）の処理は、図１０を参照しながら説明した手順（Ｄ１６）〜（Ｄ１８）と同様である。
【０１２２】
（Ｅ９）フレーム処理部２９ａは、決定部２８ａに、第２の圧縮データを含む再送データフレームの送信先を要求する。すると、決定部２８ａは、決定した送信先のうちで、まだフレーム処理部２９ａに通知していないものを通知する。ここでは、決定部２８ａは、中継装置５０ｃを送信先として通知する。フレーム処理部２９ａは、ルーティングテーブル２５ａを参照することにより、中継装置５０ｃをグローバル宛先とするアドホックヘッダを、以下のように決定する。
【０１２３】
グローバル送信元    ：ノード装置１０ａ
グローバル宛先      ：中継装置５０ｃ
ローカル送信元      ：ノード装置１０ｆ
ローカル宛先        ：中継装置５０ｃ
タイプ              ：５
ＧＷフラグ          ：０
【０１２４】
フレーム処理部２９ａは、生成したアドホックヘッダを、第２の圧縮データを含むペイロードに付加することにより、第２の再送データフレームを生成する。さらに、フレーム処理部２９ａは、第２の圧縮データを含む再送データフレームのグローバル宛先を中継装置５０ｃに設定したことを、格納処理部３２ａに通知する。すると、格納処理部３２ａは、図１７（ｃ）に示す情報を記憶する。
【０１２５】
（Ｅ１０）フレーム処理部２９ａは、第２の再送データフレームを送信部２２ａに出力する。送信部２２ａは、第２の再送データフレームをノード装置１０ｆに送信する。
【０１２６】
（Ｅ１１）ノード装置１０ｆの受信部２１ｆは、第２の再送データフレームをフレーム処理部２９ｆに出力する。フレーム処理部２９ｆは、ルーティングテーブル２５ｆを参照して、第２の再送データフレームの転送先をノード装置１０ｉに決定する。送信部２２ｆは、第２の再送データフレームをノード装置１０ｉに送信する。
【０１２７】
（Ｅ１２）ノード装置１０ｉの受信部２１ｉは、第２の再送データフレームをフレーム処理部２９ｉに出力する。フレーム処理部２９ｉは、ルーティングテーブル２５ｉを参照して、第２の再送データフレームの転送先を中継装置５０ｃに決定する。送信部２２ｉは、第２の再送データフレームを中継装置５０ｃに送信する。
【０１２８】
手順（Ｅ１３）〜（Ｅ１５）の処理も、図１０を参照しながら説明した手順（Ｄ１６）〜（Ｄ１８）と同様である。
【０１２９】
図１６には図示していないが、中継装置５０ｂがサーバ９０へ第１の再送データフレームを送信できた場合、中継装置５０ｂは、前述の手順（Ｄ１９）で説明したように、ノード装置１０ａに通信成功通知を送信する。中継装置５０ｂから通信成功通知を受信したノード装置１０ａは、図１７（ｃ）のテーブルを用いて、検針データＤ１〜Ｄｍを記憶部４０ａから削除する。同様に、中継装置５０ｃがサーバ９０へ第２の再送データフレームを送信できた場合、中継装置５０ｃは、ノード装置１０ａに通信成功通知を送信する。中継装置５０ｃから通信成功通知を受信したノード装置１０ａは、図１７（ｃ）のテーブルを用いて、検針データＤｍ＋１〜Ｄｎを記憶部４０ａから削除する。
【０１３０】
図１８は、ノード装置で行われる処理の例を示すフローチャートである。ステップＳ６１〜Ｓ６７は、図１３を参照しながら説明したステップＳ２１〜Ｓ２７と同様である。
【０１３１】
通信失敗通知を受信した場合、格納処理部３２は記憶部４０に格納されている検針データの量が閾値を超えているかを判定する（ステップＳ６６でＹｅｓ、ステップＳ６８）。格納された検針データの量が閾値を超えている場合、格納処理部３２は、記憶部４０に格納された検針データを、閾値以下のデータ量の複数の分割データに分割する。格納処理部３２は、複数の分割データをフレーム処理部２９に出力し、フレーム処理部２９は、分割データごとに再送データフレームを生成する。このとき、フレーム処理部２９は、決定部２８から通知された中継装置５０に応じたアドホックヘッダを用いて再送データフレームを生成する（ステップＳ６８でＹｅｓ、ステップＳ６９）。一方、格納された検針データの量が閾値を超えていない場合、格納処理部３２とフレーム処理部２９は、記憶部４０に格納されている検針データを用いて再送データフレームを生成する（ステップＳ６８でＹｅｓ、ステップＳ７０）。送信部２２は、生成された再送データフレームを、グローバル宛先に向けて送信する（ステップＳ７１）。
【０１３２】
このように、格納されている検針データの量が閾値を超えると、ノード装置１０は複数の再送データフレームを用いて、検針データを複数の中継装置５０に分けて送信する。このため、第２の実施形態では、第１の実施形態に比べ、再送データフレームを受信する中継装置５０にかかる負担を軽減することができる。さらに、第１の実施形態と同様に、データフレームのグローバル宛先に設定された中継装置５０とサーバ９０の間で通信ができなくても、すでに収集された検針データをサーバ９０に送信することができる。
【０１３３】
＜その他＞
なお、実施形態は上記に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
【０１３４】
検針データの収集が周期的に行われる場合、中継装置５０に隣接しているノード装置１０は、格納している検針データを削除するタイミングを、検針データの収集の周期に合わせて設定することができる。例えば、毎時０分と３０分に検針データの収集が行われる場合、ノード装置１０は、通信成功通知を受信しても、新たな検針データを受信する時刻まで、送信に成功した検針データを保持しておくことができる。このように変形すると、例えば、中継装置５０とサーバ９０の間の通信が成功した後にサーバ９０で異常が発生した場合に、サーバ９０へのデータの再送信が容易に行われる。サーバ９０から検針データの再取得を要求された中継装置５０は、隣接するノード装置１０に、検針データの再送信を要求する制御メッセージを送信する。制御メッセージを受信したノード装置１０は、記憶部４０に記憶している検針データを、再送データフレームを用いて、中継装置５０に送信する。
【０１３５】
図４（ａ）、図５（ａ）などに示すルーティングテーブル２５や中継装置テーブル２６は例であり、ルーティングテーブル２５や中継装置テーブル２６に含まれる情報要素は、実装に応じて変更される場合がある。同様に、図８に示すアドホックヘッダやＨｅｌｌｏヘッダも例であり、実装に応じて、アドホックヘッダやＨｅｌｌｏヘッダに含まれる情報は変更されることがあるものとする。
【０１３６】
通信成功通知は、中継装置５０がデータフレームを用いて受信した検針データをサーバ９０に送信できた場合にも生成される。このとき、通知フレーム生成部６３は、記憶部８０に記憶されている検針データを中継装置５０に通知したノード装置１０を、通信成功通知のグローバル宛先とする。なお、検針データを通知してきた隣接ノード装置１０の情報は、中継装置５０が検針データを取得するときに、例えば、第１の実施形態の手順（Ｄ３）などに示した方法で、記憶部８０に記録されている。
【０１３７】
以上の記載では、対象データが検針データである場合を例として説明したが、対象データは、検針データに限られないものとする。
【符号の説明】
【０１３８】
５  アドホックネットワーク
１０  ノード装置
２０、６０  アドホックエンジン
２１、６１  受信部
２２、６２  送信部
２３  Ｈｅｌｌｏフレーム生成部
２４  経路情報処理部
２５  ルーティングテーブル
２６  中継装置テーブル
２７  判定部
２８  決定部
２９、７１  フレーム処理部
３０、７０  アプリケーション処理部
３１  データ取得部
３２  格納処理部
３３  圧縮処理部
４０、８０  記憶部
４１、８１  データ
５０  中継装置
６３  通知フレーム生成部
７２  データ集約部
７３  通知生成部
９０  サーバ
９５  ルータ
１００  プロセッサ
１０１  バス
１０２  ＰＨＹチップ
１０４  タイマＩＣ
１０６  ＤＲＡＭ
１０７  フラッシュメモリ
１０８  無線モジュール
【図１】
2014099770.tif 000003
【図３】
2014099770.tif 000004
【図４】
2014099770.tif 000005
【図５】
2014099770.tif 000006
【図６】
2014099770.tif 000007
【図７】
2014099770.tif 000008
【図８】
2014099770.tif 000009
【図９】
2014099770.tif 000010
【図１０】
2014099770.tif 000011
【図１２】
2014099770.tif 000012
【図１３】
2014099770.tif 000013
【図１４】
2014099770.tif 000014
【図１６】
2014099770.tif 000015
【図１７】
2014099770.tif 000016
【図１８】
2014099770.tif 000017
【図２】
2014099770.tif 000018
【図１１】
2014099770.tif 000019
【図１５】
2014099770.tif 000020