以下に、本願の開示するノード装置、時間同期システム、時間同期方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
本実施例にかかるセンサーネットワークのシステム構成について説明する。図1は、本実施例にかかるセンサーネットワークのシステム構成を示す図である。図1に示すように、このセンサーネットワークは、ノード装置100a〜100g、中継ノード装置200、集約サーバ300を有する。
ノード装置100a〜100gは、水位や温度などを定期的に計測する装置である。ノード装置100a〜100gが計測したデータをセンシングデータと表記する。ノード装置100a〜100gは、センシングデータを中継ノード装置200に通知する。
また、ノード装置100a〜100gでは、上位のノード装置から下位のノード装置に、時間に関する情報を含んだパケットを順に伝送することで、時間を同期させる。ノード装置100a〜100gの詳細な処理は後述する。
ところで、ノード装置100a〜100gは、隣接するノード装置または中継ノード装置200と無線通信を行う。例えば、ノード装置100a〜100gは、CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance)方式に基づいて無線通信を行うものとする。
例えば、ノード装置100aは、中継ノード装置200、ノード装置100bと無線通信を行う。ノード装置100bは、ノード装置100a、100c、100dと無線通信を行う。ノード装置100cは、ノード装置100bと無線通信を行う。ノード装置100dは、ノード装置100bと無線通信を行う。ノード装置100eは、中継ノード装置200、ノード装置100fと無線通信を行う。ノード装置100fは、ノード装置100e,100gと無線通信を行う。ノード装置100gは、ノード装置100fと無線通信を行う。なお、本実施例では、各ノード装置間の距離を1km程度とする。
中継ノード装置200は、ノード装置100a〜100gからセンシングデータを収集し、収集したセンシングデータを集約サーバ300に通知する装置である。また、中継ノード装置200は、有線ネットワーク50を介して集約サーバ300に接続され、集約サーバ300との間で時間を同期させる。そして、中継ノード装置200は、時間に関する情報を含んだパケットをノード装置100a、100eに送信する。
集約サーバ300は、中継サーバ装置200からセンシングデータを受信し、センシングデータをデータベースに保存する装置である。管理者は、入力装置等を用いて集約サーバ300を操作することで、センシングデータを確認することができる。また、集約サーバ300は時刻管理機能を有し、自身の時間情報を中継ノード装置200に通知する。
次に、図1に示した中継ノード装置200、ノード装置100a〜100gの構成について説明する。
図2は、中継ノード装置200の構成を示す機能ブロック図である。図2に示すように、中継ノード装置200は、有線インターフェース部210、有線通信制御部220、時間管理部230、センシングデータ要求部240、時間同期制御部250、伝送遅延時間算出部260、無線インターフェース部270を有する。
有線インターフェース部210は、集約サーバ300との間で有線による通信を行う処理部である。有線インターフェース部210は、集約サーバ300から受信したデータを、有線通信制御部220に出力する。この集約サーバ300から受信するデータには、例えば、集約サーバ300の時間情報が含まれる。また、集約サーバ300から受信するデータには、センシングデータの収集要求が含まれる。
また、有線インターフェース部210は、有線通信制御部220から取得したデータを集約サーバ300に送信する。この有線通信制御部220から取得するデータには、センシングデータ等が含まれる。
有線通信制御部220は、集約サーバ300からのデータに応答して、センシングデータの収集や時間管理部230の時間を修正する処理部である。
有線通信制御部220は、集約サーバ300からのデータにセンシングデータの収集要求が含まれている場合には、センシングデータの収集要求をセンシングデータ要求部240に出力する。ノード装置100a〜100gのセンシングデータは、センシングデータ要求部240によって収集させる。有線通信制御部220は、センシングデータ要求部240からセンシングデータを取得し、センシングデータを有線インターフェース部210に出力する。
有線通信制御部220は、集約サーバ300からのデータに時間情報が含まれている場合には、この時間情報と同じ時間となるように時間管理部230の時間を修正する。
時間管理部230は、時計機能を有し、自中継ノード装置200の時間を管理する処理部である。センサーネットワークのノード装置100a〜100gは、この時間管理部230の時間と同期するように処理を行うことになる。以下の説明において、時間管理部230の時間を基準時間と表記する。
センシングデータ要求部240は、センシングデータの収集要求を取得した場合に、各ノード装置にセンシングデータを要求するための要求パケットを生成する処理部である。センシングデータ要求部240は、要求パケットを時間同期制御部250に出力する。
ここで、センシングデータ要求部240が生成する要求パケットのデータ構造について説明する。図3は、要求パケットのデータ構造を示す図である。図3に示すように、この要求パケットは、無線ヘッダ、基準時間、伝送遅延時間、センシング要求を含む。
ここで、無線ヘッダは、宛先となるノード装置のアドレスと、送信元となる中継ノード装置200のアドレスとを含む。例えば、センシングデータ要求部240は、各ノード装置100a〜100gのアドレステーブルを保持し、このアドレステーブルを利用して、無線ヘッダに宛先となるノード装置のアドレスを設定する。センシングデータ要求部240は、要求パケットを、複数のノード装置に送信する場合には、送信対象となるノード装置の数だけ要求パケットを生成し、各要求パケットの無線ヘッダに送信対象となるノード装置のアドレスをそれぞれ設定する。
基準時間は、時間管理部230の基準時間に対応する。この基準時間は、時間同期制御部250によって設定される。伝送遅延時間は、要求パケットを伝送する場合に発生する遅延時間に対応する。この伝送遅延時間は、伝送遅延時間算出部260に設定され、無線インターフェース部270によって補正される。センシング要求は、要求パケットがセンシングデータを要求している旨を示す情報である。
センシングデータ要求部240は、要求パケットをノード装置に送信した後に、宛先のノード装置から応答パケットを受信する。センシングデータ要求部240は、応答パケットに含まれるセンシングデータを、有線通信制御部220に出力する。
ここで、応答パケットのデータ構造について説明する。図4は、応答パケットのデータ構造を示す図である。図4に示すように、この応答パケットは、無線ヘッダ、センシングデータを含む。この無線ヘッダは、応答パケットの送信元となるノード装置のアドレスが含まれる。
図2の説明に戻る。時間同期制御部250は、配下のノード装置100a〜100gに基準時間を通知する処理部である。ここでは、時間同期制御部250が、ユニキャストメッセージによって基準時間を通知する処理とブロードキャストメッセージによって基準時間を通知する処理について順に説明する。
まず、ユニキャストメッセージによって基準時間を通知する処理について説明する。時間同期制御部250は、センシングデータ要求部240から要求パケットを取得した場合に、ユニキャストメッセージによって基準時間を通知する。時間同期制御部250は、要求パケットを取得した場合に、時間管理部230から基準時間を取得する。そして、時間同期制御部250は、基準時間を要求パケットに格納し、要求パケットを伝送遅延時間算出部260に出力する。
次に、ブロードキャストメッセージによって基準時間を通知する処理について説明する。時間同期制御部250は、一定時間毎、または、所定の時間に同報パケットを生成する。
同報パケットのデータ構造について説明する。図5は、同報パケットのデータ構造を示す図である。図5に示すように、この同報パケットは、無線ヘッダ、基準時間、伝送遅延時間を含む。この無線ヘッダには、ブロードキャストメッセージである旨を示すアドレスが含まれる。このアドレスは、例えば、全て「1」のビット列となる。基準時間、伝送遅延時間に関する説明は、図3にて説明した基準時間および伝送遅延時間に関する説明と同様である。
時間同期制御部250は、同報パケットを生成した後に、時間管理部230から基準時間を取得する。そして、時間同期制御部250は、基準時間を同報パケットに格納し、同報パケットを伝送遅延時間算出部260に出力する。
伝送遅延時間算出部260は、パケットサイズと現在の伝送レートから、隣接するノード装置にパケットが伝送されるまでの時間を伝送遅延時間として算出する処理部である。具体的に、伝送レートがA[bps]、パケットサイズがB[bit]の場合には、伝送遅延時間算出部260は、B÷Aによって伝送遅延時間を算出する。
ここで、要求パケット、同報パケットを取得した場合の伝送遅延時間算出部260の処理を説明する。伝送遅延時間算出部260は、時間同期制御部250から要求パケットを取得した場合には、要求パケットのパケットサイズを伝送レートで割った値を、要求パケットの伝送遅延時間に設定する。そして、伝送遅延時間算出部260は、要求パケットを無線インターフェース部270に出力する。
伝送遅延時間算出部260は、時間同期制御部250から同報パケットを取得した場合には、同報パケットのパケットサイズを伝送レートで割った値を、同報パケットの伝送遅延時間に設定する。そして、伝送遅延時間算出部260は、同報パケットを無線インターフェース部270に出力する。
ところで、伝送遅延時間算出部260は、パケットサイズと伝送レートとを基にして伝送遅延時間を算出し、各ノード装置間の距離に基づく遅延を無視する。無線通信では、光の速度によってデータが移動するため、中継ノード装置とノード装置との間またはノード装置間の距離が短ければ、距離に基づく遅延を無視しても問題がない。
ここで、光の速度を30万km/sとし、装置間の距離を1kmとすると、データが装置間を移動するのに要する時間は、約3μsecとなる。中継ノード装置200およびノード装置100a〜100gが管理する時間の最小単位を1msecとすると、この最小単位に対して、3μsecは、0.3%の時間に過ぎない。このため、伝送遅延時間算出部260が距離に基づく遅延を無視しても問題ない。
無線インターフェース部270は、CSMA/CA方式によって、ノード装置100a、100eとの間で無線通信を行う処理部である。図2に示すように、無線インターフェース部270は、パケット送受信部271および待機時間測定部272を有する。なお、無線インターフェース部270は、無線アンテナに接続される。
パケット送受信部271は、パケットを送受信する処理部である。パケット送受信部271がパケットを送信する場合の処理と、パケット送受信部271がパケットを受信する場合の処理について順に説明する。
パケット送受信部271がパケットを送信する場合の処理について説明する。パケット送受信部271が送信するパケットは、上記の要求パケットまたは同報パケットに対応する。パケット送受信部271は、パケットを送信する場合には、他のノード装置が送信対象のノード装置にパケットを送信しているか否かを判定する。例えば、パケット送受信部271は、無線アンテナを介して、他のノード装置から送信されたパケットを受信している場合には、他のノード装置がパケットを送信していると判定する。
パケット送受信部271は、他のノード装置がパケットを送信していない場合には、パケットを隣接のノード装置に送信する。一方、パケット送受信部271は、他のノード装置がパケットを送信している場合には、一定時間待機した後に、再度他のノード装置がパケットを送信しているか否かを判定し、上記の処理を繰り返す。
パケット送受信部271がパケットを受信した場合の処理について説明する。ここでは、パケット送受信部271が受信するパケットは、上記の応答パケットとする。パケット送受信部271は、応答パケットを受信した場合に、応答パケットをセンシングデータ要求部240に出力する。
待機時間測定部272は、パケット送受信部271が送信対象となるパケットを伝送遅延時間算出部260から取得してから、該パケットを送信するまでの待機時間を測定し、測定した待機時間を、パケットの伝送遅延時間に加算する処理部である。
例えば、パケット送受信部271が要求パケットを送信するまでにC秒かかった場合には、待機時間測定部272は、要求パケットの伝送遅延時間にC秒加算する。パケット送受信部271は、このように、伝送遅延時間が補正された後に、要求パケットを送信するものとする。
同様に、パケット送受信部271が同報パケットを送信するまでにC秒かかった場合には、待機時間測定部272は、同報パケットの伝送遅延時間にC秒加算する。パケット送受信部271は、このように、伝送遅延時間が補正された後に、同報パケットを送信するものとする。
なお、図2において、パケット送受信部271は、送信部の一例である。伝送遅延時間算出部260、待機時間測定部272は、遅延時間調整部の一例である。
次に、ノード装置100aの構成について説明する。図6は、ノード装置の構成を示す機能ブロック図である。なお、ノード装置100b〜100gの構成は、ノード装置100aと同じであるため、説明を省略する。図6に示すように、無線インターフェース部110、受信制御部120、センシングデータ通知部130、伝送遅延時間算出部140、時間同期部150、時間管理部160、スリープ制御部170を有する。
無線インターフェース部110は、CSMA/CA方式によって、中継ノード装置200または他のノード装置との間で無線通信を行う処理部である。図6に示すように、無線インターフェース部110は、パケット送受信部111および待機時間計測部112を有する。なお、無線インターフェース部110は、無線アンテナに接続される。
パケット送受信部111は、パケットを送受信する処理部である。パケット送受信部111がパケットを送信する場合の処理と、パケット送受信部111がパケットを受信する場合の処理について順に説明する。
パケット送受信部111がパケットを送信する場合の処理について説明する。パケット送受信部111が送信するパケットは、要求パケット、応答パケット、同報パケットに対応する。パケット送受信部111は、パケットを送信する場合には、他のノード装置がパケットを送信しているか否かを判定する。例えば、パケット送受信部111は、無線アンテナを介して、他のノード装置から送信されたパケットを受信している場合には、他のノード装置がパケットを送信していると判定する。
パケット送受信部111は、他のノード装置がパケットを送信していない場合には、パケットを隣接のノード装置に送信する。一方、パケット送受信部111は、他のノード装置がパケットを送信している場合には、一定時間待機した後に、再度他のノード装置がパケットを送信しているか否かを判定し、上記の処理を繰り返す。
パケット送受信部111がパケットを受信した場合の処理について説明する。ここでは、パケット送受信部111が受信するパケットは、要求パケット、応答パケットまたは同報パケットに対応する。パケット送受信部111は、受信したパケットを、受信制御部120に出力する。
待機時間測定部112は、パケット送受信部111が送信対象となるパケットを伝送遅延時間算出部140から取得してから、該パケットを送信するまでの待機時間を測定し、測定した待機時間を、パケットの伝送遅延時間に加算する処理部である。なお、応答パケットには、伝送遅延時間が含まれない。このため、待機時間測定部112は、応答パケットに対して待機時間の加算を行わないものとする。
例えば、パケット送受信部111が要求パケットを送信するまでにC秒かかった場合には、待機時間測定部112は、要求パケットの伝送遅延時間にC秒加算する。パケット送受信部111は、このように、伝送遅延時間が補正された後に、要求パケットを送信するものとする。
同様に、パケット送受信部111が同報パケットを送信するまでにC秒かかった場合には、待機時間測定部112は、同報パケットの伝送遅延時間にC秒加算する。パケット送受信部111は、このように、伝送遅延時間が補正された後に、同報パケットを送信するものとする。
受信制御部120は、無線インターフェース部110からパケットを取得し、取得したパケットに応じて各種の処理を実行する処理部である。以下において、受信制御部120が、要求パケットを取得した場合の処理、同報パケットを取得した場合の処理、応答パケットを取得した場合の処理の順に、受信制御部120の処理を説明する。
受信制御部120が要求パケットを取得した場合の処理について説明する。受信制御部120は、要求パケットの無線ヘッダを参照し、自ノード装置100a宛の要求パケットであるか否かを判定する。自ノード装置宛の要求パケットの場合には、要求パケットをセンシングデータ通知部130および時間同期部150に出力する。これに対して、自ノード装置宛の要求パケットではない場合には、要求パケットを伝送遅延時間算出部140に出力する。
受信制御部120が同様パケットを取得した場合の処理について説明する。受信制御部120は、同報パケットを伝送遅延時間算出部140および時間同期部150に出力する。
受信制御部120が応答パケットを取得した場合の処理について説明する。受信制御部120は、応答パケットを無線インターフェース部110に出力する。
センシングデータ通知部130は、要求パケットを取得した場合に、温度センサーや水位センサーからセンシングデータを取得し、応答パケットにてセンシングデータを中継ノード装置に通知する処理部である。
例えば、センシングデータ通知部130は、受信制御部120から要求パケットを取得した場合に、応答パケットを生成する。また、センシングデータ通知部130は、応答パケットの無線ヘッダに宛先として中継ノード装置のアドレスを設定する。また、センシングデータ通知部130は、センシングデータを応答パケットに格納する。そして、センシングデータ通知部130は、応答パケットを無線インターフェース部110に出力する。
伝送遅延時間算出部140は、パケットサイズと現在の伝送レートから、隣接するノード装置にパケットが伝送されるまでの時間を伝送遅延時間として算出する処理部である。具体的に、伝送レートがA[bps]、パケットサイズがB[bit]の場合には、伝送遅延時間算出部140は、B÷Aによって伝送遅延時間を算出する。
ここで、要求パケット、同報パケットを取得した場合の伝送遅延時間算出部140の処理を説明する。伝送遅延時間算出部140は、受信制御部120から要求パケットを取得した場合には、要求パケットのパケットサイズを伝送レートで割った値を、伝送遅延時間として算出する。そして、伝送遅延時間算出部140は、算出した伝送遅延時間を、要求パケットの伝送遅延時間に加算する。そして、伝送遅延時間算出部140は、要求パケットを無線インターフェース部110に出力する。
例えば、要求パケットのパケットサイズから算出した伝送遅延時間をD秒とし、要求パケットの伝送遅延時間をE秒とすると、伝送遅延時間算出部140は、要求パケットの伝送遅延時間を「D+E秒」に設定し、無線インターフェース部110に出力する。
同様に、伝送遅延時間算出部140は、受信制御部120から同報パケットを取得した場合には、同報パケットのパケットサイズを伝送レートで割った値を、伝送遅延時間として算出する。そして、伝送遅延時間算出部140は、算出した伝送遅延時間を、同報パケットの伝送遅延時間に加算する。そして、伝送遅延時間算出部140は、同報パケットを無線インターフェース部110に出力する。
例えば、同報パケットのパケットサイズから算出した伝送遅延時間をD秒とし、同報パケットの伝送遅延時間をE秒とすると、伝送遅延時間算出部140は、同報パケットの伝送遅延時間を「D+E秒」に設定し、無線インターフェース部110に出力する。
時間同期部150は、要求パケットまたは同報パケットに含まれる基準時間および伝送遅延時間に基づいて、時間管理部160の時間を同期させる処理部である。時間同期部150は、基準時間と伝送遅延時間を加算した時間と同じ時間となるように、時間管理部160の時間を修正する。
ここで、時間同期部150の処理を具体的に説明する。ここでは説明の便宜上、時間管理部160の時間精度を秒オーダーとし、基準時間と伝送遅延時間とを加算した時間の時間精度をミリ秒オーダーとする。
まず、時間同期部150は、基準時間と伝送遅延時間を加算し、加算した時間のミリ秒の桁の数が0か否かを判定する。例えば、時間が「2010/1/1 0:00:2.000」の場合には、時間同期部150は、時間のミリ秒の桁の数が0と判定する。この場合には、時間同期部150は、算出した時間によって時間管理部160の時間を修正する。
これに対して、例えば、基準時間と伝送遅延時間を加算した時間が「2010/1/1 0:00:1.130」の場合には、時間同期部150は、時間のミリ秒の桁の数が0ではないと判定する。この場合には、時間同期部150は、時間のミリ行の桁の数が0となるまでの時間「2010/1/1 0:00:2.000」まで待機する。時間「2010/1/1 0:00:1.130」から時間「2010/1/1 0:00:2.000」となるまでには、870msecかかるため、時間同期部150は、870msec待機することになる。
時間同期部150は、待機する間、経過時間に合わせて時間をカウントアップする。そして、時間同期部150は、時間のミリ秒の桁の数が0となった時点で、カウントアップした時間「2010/1/1 0:00:2.000」によって、時間管理部160の時間を修正する。
時間管理部160は、時計機能を有し、自ノード装置100aの時間を管理する処理部である。上記のように、時間管理部160の時間は、時間同期部150によって修正される。
スリープ制御部170は、時間管理部160から時間情報を取得し、時間管理部160以外の処理部をスリープ状態に移行させる処理およびスリープ状態を解除する処理を行う処理部である。例えば、スリープ制御部170は、所定の時間間隔で、スリープ状態に移行させ、所定の時間間隔でスリープ状態を解除する。例えば、スリープ制御部170は、無線インターフェース部110、受信制御部120、センシングデータ通知部130、伝送遅延時間算出部140、時間同期部150をスリープ状態に移行させる。
なお、図6において、パケット送受信部111は、送信部の一例である。伝送遅延時間算出部140、待機時間測定部112は、遅延時間調整部の一例である。時間同期部150は、補正部の一例である。
次に、中継ノード装置200の処理手順について説明する。図7は、中継ノード装置の処理手順を示すフローチャートである。図7に示す処理は、例えば、要求パケットや同報パケットを送信する場合に実行される。なお、図7において、パケットは、要求パケットまたは同報パケットに対応するものとする。
図7に示すように、中継ノード装置200は、基準時間を取得し(ステップS101)、パケットに基準時間を格納する(ステップS102)。中継ノード装置200は、伝送遅延時間を算出し(ステップS103)、パケットに伝送遅延時間を格納する(ステップS104)。
中継ノード装置200は、送信対象のノード装置が、他のノード装置と通信を行っているか否かを判定する(ステップS105)。通信を行っていない場合には(ステップS106,No)、中継ノード装置200は、伝送遅延時間に待機時間を加算し(ステップS107)、パケットを送信する(ステップS108)。
一方、ステップS106において、通信を行っている場合には(ステップS106,Yes)、中継ノード装置200は、一定時間待機する(ステップS109)。そして、中継ノード装置200は、待機時間を更新し(ステップS110)、ステップS106に移行する。
次に、中継ノード装置200におけるパケットのデータの変化の一例に説明する。図8は、中継ノード装置におけるパケットのデータの変化を説明する図である。前提として、時間管理部230の基準時間を「2010/1/1 0:00:0.000」とする。また、伝送遅延時間算出部260が算出する伝送遅延時間を「500ms」とする。また、待機時間測定部272が測定する待機時間を「30ms」とする。
図8に示すように、時間同期制御部250は、パケットの基準時間に「2010/1/1 0:00:0.000」を設定する(ステップS10)。そして、伝送遅延時間算出部260は、伝送遅延時間に「500ms」を設定する(ステップS11)。そして、待機時間測定部272は、待機時間「30ms」を伝送遅延時間「500ms」に加算して、伝送遅延時間を「530ms」に設定する(ステップS12)。無線インターフェース部270は、ステップS12の状態のパケットを隣接するノード装置に送信することになる。
次に、ノード装置100aの処理手順について説明する。図9は、ノード装置の処理手順を示すフローチャートである。図9に示す処理は、他のノード装置から要求パケットや同報パケットを受信した場合に実行される。図9において、パケットは、要求パケットまたは同報パケットに対応するものとする。
図9に示すように、ノード装置100aは、パケットを受信し(ステップS201)、自ノード装置宛のパケットか否かを判定する(ステップS202)。ノード装置100aは、自ノード装置宛のパケットの場合には(ステップS202,Yes)、時間反映処理を実行する(ステップS203)。
一方、ノード装置100aは、自ノード装置宛のパケットではない場合には(ステップS202,No)、中継処理を実行する(ステップS204)。
続いて、図9のステップS203に示した時間反映処理の処理手順と図9のステップS204に示した中継処理の処理手順について順に説明する。
図10は、時間反映処理の処理手順を示すフローチャートである。図10に示すように、ノード装置100aは、基準時間と遅延時間とを加算して現在の時間を算出する(ステップS301)。
ノード装置100aは、現在の時間のミリ秒の桁の数が0か否かを判定する(ステップS302)。ノード装置100aは、現在の時間のミリ秒の桁の数が0の場合には(ステップS302,Yes)、時間を反映する(ステップS303)。
一方、ノード装置100aは、現在の時間のミリ秒の桁の数が0ではない場合には(ステップS302,No)、現在の時間に1msec加算する(ステップS304)。ノード装置100aは、1msec待機し(ステップS305)、ステップS302に移行する。
図11は、中継処理の処理手順を示すフローチャートである。図11に示すように、ノード装置100aは、伝送遅延時間を算出し(ステップS401)、パケットの伝送遅延時間に算出した伝送遅延時間を加算する(ステップS402)。
ノード装置100aは、送信対象のノード装置が、他のノード装置と通信を行っているか否かを判定する(ステップS403)。ノード装置100aは、送信対象のノード装置が他のノードと通信を行っていない場合には(ステップS404,No)、伝送遅延時間に待機時間を加算し(ステップS405)、パケットを送信する(ステップS406)。
一方、ノード装置100aは、送信対象のノード装置が他のノードと通信を行っている場合には(ステップS404,Yes)、一定時間待機する(ステップS407)。そして、ノード装置100aは、待機時間を更新し(ステップS408)、ステップS404に移行する。
次に、ノード装置100aがパケットを中継する場合のパケットのデータの変化について説明する。図12は、ノード装置がパケットを中継する場合のパケットのデータの変化を説明する図である。前提として、他のノード装置から受信したパケットの基準時間を「2010/1/1 0:00:0.000」とし、伝送遅延時間を「530ms」とする。また、伝送遅延時間算出部140が算出する伝送遅延時間を「500ms」とする。また、待機時間測定部112が測定する待機時間を「100ms」とする。
図12に示すように、伝送遅延時間算出部140は、パケットを取得する(ステップS13)。伝送遅延時間算出部140は、伝送遅延時間に「500ms」加算し、伝送遅延時間を「1030ms」に設定する(ステップS14)。そして、待機時間測定部140は、待機時間「100ms」を伝送遅延時間「1030ms」に加算して、伝送遅延時間を「1130ms」に設定する(ステップS15)。無線インターフェース部110は、ステップS15の状態のパケットを隣接するノード装置に送信することになる。
次に、センサーネットワークの全体の処理手順について説明する。図13は、センサーネットワークの全体の処理手順を示すフローチャートである。ここでは一例として、中継ノード装置200が、ノード装置100bに要求パケットを送信する場合について説明する。また、要求パケットの基準時間および伝送遅延時間も合わせて説明する。図14は、図13に示した要求パケットの基準時間および伝送遅延時間を示す図である。
図13において、中継ノード装置200は、基準時間を読み出し、基準時間を要求パケットに設定する(ステップS501)。例えば、基準時間を「xx分yy秒」とすると、図14のステップS20のように、要求パケットの基準時間に「xx分yy秒」が設定される。
図13において、中継ノード装置200は、伝送遅延時間を算出し、伝送遅延時間を要求パケットに設定する(ステップS502)。例えば、伝送遅延時間を「a秒」とすると、図14のステップS21のように、要求パケットの伝送遅延時間に「a秒」が設定される。
図13において、中継ノード装置200は、CSMA/CAを実施して、伝送遅延時間に待機時間を加算し、要求パケットをノード装置100aに送信する(ステップS503)。例えば、待機時間を「b秒」とすると、図14のステップS22のように、要求パケットの伝送遅延時間に「a秒+b秒」が設定される。
図13において、ノード装置100aは、中継ノード装置200から要求パケットを受信し(ステップS504)、伝送遅延時間を算出し、伝送遅延時間を加算する(ステップS505)。例えば、ノード装置100aが算出した伝送遅延時間を「a秒」とすると、図14のステップS23のように、要求パケットの伝送遅延時間に「a秒+b秒+a秒」が設定される。
図13において、ノード装置100aは、CSMA/CAを実施して、伝送遅延時間に待機時間を加算し、要求パケットをノード装置100bに送信する(ステップS506)。例えば、待機時間を「c秒」とすると、図14のステップS24に示すように、要求パケットの伝送遅延時間に「a秒+b秒+a秒+c秒」が設定される。
図13において、ノード装置100bは、ノード装置100aから要求パケットを受信し(ステップS507)、現在の時間を算出する(ステップS508)。例えば、要求パケットの基準時間が「xx分yy秒」、伝送遅延時間が「a秒+b秒+a秒+c秒」の場合には、現在の時間は、「(xx分yy秒)+(a秒+b秒+a秒+c秒)」となる。ノード装置100bは、時間を修正する(ステップS509)。
次に、センシングデータを収集するセンサーネットワークの処理手順について説明する。図15および図16は、センシングデータを収集するセンサーネットワークの処理手順を示すフローチャートである。ここでは一例として、中継ノード装置200が、ノード装置100aに要求パケットを送信した後に、ノード装置100bに要求パケットを送信するものとする。
図15に示すように、中継ノード装置200は、要求パケットにセンシング要求を設定し(ステップS601)、基準時間および伝送遅延時間を設定する(ステップS602)。中継ノード装置200は、CSMA/CAを実施して伝送遅延時間を修正し、要求パケットをノード装置100aに送信する(ステップS603)。
ノード装置100aは、要求パケットを受信し(ステップS604)、現在の時間を算出する(ステップS605)。ノード装置100aは、時間を修正し(ステップS606)、センシングデータを応答パケットに格納する(ステップS607)。
ノード装置100aは、CSMA/CAを実施して、応答パケットを中継ノード装置200に送信する(ステップS608)。中継ノード装置200は、応答パケットを受信する(ステップS609)。
図16の説明に移行する。中継ノード装置200は、新たな要求パケットにセンシング要求を設定し(ステップS610)、基準時間および伝送遅延時間を設定する(ステップS611)。中継ノード装置200は、CSMA/CAを実施して伝送遅延時間を修正し、要求パケットをノード装置100aに送信する(ステップS612)。
ノード装置100aは、要求パケットを受信し(ステップS613)、要求パケットの伝送遅延時間を更新する(ステップS614)。ノード装置100aは、CSMA/CAを実施して伝送遅延時間を修正し、要求パケットをノード装置100bに送信する(ステップS615)。
ノード装置100bは、要求パケットを受信し(ステップS616)、現在の時間を算出する(ステップS617)。ノード装置100bは、時間を補正し(ステップS618)、センシングデータを応答パケットに格納する(ステップS619)。
ノード装置100bは、CSMA/CAを実施して、応答パケットをノード装置100aに送信する(ステップS620)。ノード装置100aは、応答パケットを受信し(ステップS621)、CSMA/CAを実施して、応答パケットを中継ノード装置200に送信する(ステップS622)。中継ノード装置200は、応答パケットを受信する(ステップS623)。
次に、同報パケットをブロードキャストすることで、ノード装置100a〜100fの時間が同期される場合の処理について説明する。図17は、同報パケットによって各ノード装置の時間が同期される場合の処理を説明するための図である。例えば、中継ノード装置200の基準時間を「2010/1/1 1:30:15.000」とし、伝送遅延時間を「600ms」とする。この伝送遅延時間は、同報パケットを送信する場合の待機時間を含むものとする。
中継ノード装置200は、基準時間に「2010/1/1 1:30:15.000」を格納し、伝送遅延時間に「600ms」を格納した同報パケット20aを送信する。この同報パケット20aは、ノード装置100a、100dに到達する。
ノード装置100aは、同報パケット20aの基準時間および伝送遅延時間を加算した時間に基づいて、時間を修正する。その後、ノード装置100aは、同報パケット20bを送信する。例えば、ノード装置100aの待機時間を含む伝送遅延時間を「300ms」とする。ノード装置100aが伝送遅延時間を加算することで、同報パケット20bの伝送遅延時間は「900ms」となる。この同報パケット20bは、ノード装置100bに到達する。
ノード装置100bは、同報パケット20bの基準時間および伝送遅延時間を加算した時間に基づいて、時間を修正する。その後、ノード装置100bは、同報パケット20cを送信する。例えば、ノード装置100bの待機時間を含む伝送遅延時間を「400ms」とする。ノード装置100bは、伝送遅延時間を加算することで、同報パケット20cの伝送遅延時間は「1300ms」となる。この同報パケットは、ノード装置100cに到達する。ノード装置100cは、同報パケット20cの基準時間および伝送遅延時間を加算した時間に基づいて、時間を修正する。
ノード装置100dは、同報パケット20aの基準時間および伝送遅延時間を加算した時間に基づいて、時間を修正する。その後、ノード装置100dは、同報パケット20dを送信する。例えば、ノード装置100dの待機時間を含む伝送遅延時間を「500ms」とする。ノード装置100dは、伝送遅延時間を加算することで、同報パケット20dの伝送遅延時間は「1100ms」となる。この同報パケットは、ノード装置100e、100fに到達する。
ノード装置100eは、同報パケット20dの基準時間および伝送遅延時間を加算した時間に基づいて、時間を修正する。また、ノード装置100fは、同報パケット20dの基準時間および伝送遅延時間を加算した時間に基づいて、時間を修正する。
次に、要求パケットをユニキャストすることで、ノード装置100cの時間が同期される場合の処理について説明する。図18は、要求パケットをユニキャストすることでノード装置200の時間が同期される場合の処理を説明するための図である。例えば、中継ノード装置の基準時間を「2010/1/1 1:30:15.000」とし、伝送遅延時間を「600ms」とする。この伝送遅延時間は、要求パケットを送信する場合の待機時間を含むものとする。
中継ノード装置200は、基準時間に「2010/1/1 1:30:15.000」を格納し、伝送遅延時間に「600ms」を格納した要求パケット30aをノード装置100aに送信する。
ノード装置100aは、要求パケット30aを受信した後に、要求パケット30bをノード装置100bに送信する。例えば、ノード装置100aの待機時間を含む伝送遅延時間を「300ms」とする。ノード装置100aは、伝送遅延時間を加算することで、要求パケット30bの伝送遅延時間は「900ms」となる。
ノード装置100bは、要求パケット30bを受信した後に、要求パケット30cをノード装置100cに送信する。例えば、ノード装置100bの待機時間を含む伝送遅延時間を「400ms」とする。ノード装置100bは、伝送遅延時間を加算することで、要求パケット30cの伝送遅延時間は「1300ms」となる。
ノード装置100cは、基準時間および伝送遅延時間を加算した時間に基づいて、時間を修正する。また、ノード装置100cはセンシングデータを含む応答パケットを、ノード装置100b、100aを介して、中継ノード装置200に送信する。
次に、本実施例にかかる中継ノード装置200およびノード装置100の効果について説明する。中継ノード装置200は、パケットを送信する場合の待機時間を伝送遅延時間に加算し、加算した伝送遅延時間と基準時間とをパケットに格納し、パケットを送信対象のノード装置に送信する。また、ノード装置100は、上位のノード装置からパケットを受信した場合には、パケットの伝送遅延時間に、待機時間を加味した伝送遅延時間を加算し、送信対象のノード装置にパケットを送信する。このため、CSMA/CA方式によるパケット送信の待機時間を加味した伝送遅延時間と基準時間とを各ノード装置に通知することができ、各ノード装置は、この伝送遅延時間と基準時間により、正確に時間を同期することができる。
このように、中継ノード装置200およびノード装置100は、正確に時間を同期することができるため、各ノード装置間で誤差なくスリープ機能を利用でき、効率的に消費電力を低下させることができる。
また、本実施例にかかる中継ノード装置200およびノード装置100は、パケットのデータ量と伝送レートとを基にして、伝送遅延時間を算出し、この伝送遅延時間に待機時間を加算して、最終的な伝送遅延時間を算出する。このため、中継ノード装置200およびノード装置100は、自ノード装置から送信対象のノード装置までに発生する伝送遅延時間を正確に求めることができ、この伝送遅延時間を順次配下のノード装置に通知することができる。
また、本実施例にかかるノード装置100は、パケットを受信した場合に、基準時間と伝送遅延時間とを加算した時間に基づいて時間管理部160の時間を補正する。このため、各ノード装置100は正確に時間を同期させることができる。また、この補正方法によれば、各ノード装置間でパケットを送受信しなくても、正確な伝送遅延時間を知ることができるので、効率的に時間を同期させることもできる。
ところで、図2に示した中継ノード装置200、図6に示したノード装置100の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、中継ノード装置200、ノード装置100の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、無線インターフェース部270の機能を、外部の通信装置などに組み込んでも良い。
また、図2、図6に示した各処理部は、各種の装置に対応する。例えば、有線インターフェース部210は、通信カードに対応する。無線インターフェース110,270は、無線通信カードに対応する。また各処理部130〜170、220〜260は、ASIC(Application Specific Integrated Circuit)や、FPGA(Field Programmable Gate Array)などの集積装置に対応する。または、上記処理部130〜170、220〜260は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)等の電子回路に対応する。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)送信対象のノード装置の通信状況を監視し、前記送信対象のノード装置が他のノード装置と通信を行っている場合には、前記送信対象のノード装置にパケットを送信することを待機し、前記通信対象のノード装置が他のノード装置と通信を行っていない場合には、前記送信対象のノード装置にパケットを送信する送信部と、
自ノード装置の基準時間を送信対象のノード装置に通知する場合には、自ノード装置から前記送信対象のノード装置までの伝送遅延時間に、前記送信部の待機時間を加算し、基準時間と伝送遅延時間とを前記送信部が送信するパケットに格納し、
上位のノード装置から基準時間と伝送遅延時間とを含むパケットを受信した場合には、該伝送遅延時間に、自ノード装置から中継先のノード装置までの伝送遅延時間と、前記送信部の待機時間とを加算し、基準時間と伝送遅延時間とを前記送信部が送信するパケットに格納する遅延時間調整部と
を有することを特徴とするノード装置。
(付記2)前記遅延時間調整部は、パケットのデータ量と伝送レートとを基にして、前記伝送遅延時間を算出することを特徴とする付記1に記載のノード装置。
(付記3)前記上位のノード装置から基準時間と伝送遅延時間とを含むパケットを受信した場合に、前記基準時間と前記伝送遅延時間とを加算した時間に基づいて、自装置の基準時間を補正する補正部を更に備えたことを特徴とする付記1または2に記載のノード装置。
(付記4)複数のノード装置が無線通信によってパケットを伝送し、各ノード装置で時間を同期する時間同期システムであって、
前記ノード装置は、
送信対象のノード装置の通信状況を監視し、前記送信対象のノード装置が他のノード装置と通信を行っている場合には、前記送信対象のノード装置にパケットを送信することを待機し、前記通信対象のノード装置が他のノード装置と通信を行っていない場合には、前記送信対象のノード装置にパケットを送信する送信部と、
自ノード装置の基準時間を送信対象のノード装置に通知する場合には、自ノード装置から前記送信対象のノード装置までの伝送遅延時間に、前記送信部の待機時間を加算し、基準時間と伝送遅延時間とを前記送信部が送信するパケットに格納し、
上位のノード装置から基準時間と伝送遅延時間とを含むパケットを受信した場合には、該伝送遅延時間に、自ノード装置から中継先のノード装置までの伝送遅延時間と、前記送信部の待機時間とを加算し、基準時間と伝送遅延時間とを前記送信部が送信するパケットに格納する遅延時間調整部と
を有することを特徴とする時間同期システム。
(付記5)前記遅延時間調整部は、パケットのデータ量と伝送レートとを基にして、前記伝送遅延時間を算出することを特徴とする付記4に記載の時間同期システム。
(付記6)前記上位のノード装置から基準時間と伝送遅延時間とを含むパケットを受信した場合に、前記基準時間と前記伝送遅延時間とを加算した時間に基づいて、自ノード装置の基準時間を補正する補正部を更に備えたことを特徴とする付記4または5に記載の時間同期システム。
(付記7)コンピュータが実行する時間同期方法であって、
自コンピュータの基準時間を送信対象のノード装置に通知する場合には、自コンピュータから前記送信対象のノード装置までの伝送遅延時間に、パケットを送信するまで待機した待機時間を加算し、基準時間と伝送遅延時間とをパケットに格納して、該パケットを送信し、
上位のノード装置から基準時間と伝送遅延時間とを含むパケットを受信した場合には、該伝送遅延時間に、自コンピュータから中継先のノード装置までの伝送遅延時間と、前記待機時間とを加算し、基準時間と伝送遅延時間とをパケットに格納して、該パケットを送信することを特徴とする時間同期方法。
(付記8)パケットのデータ量と伝送レートとを基にして、前記伝送遅延時間を算出することを特徴とする付記7に記載の時間同期方法。
(付記9)前記上位のノード装置から基準時間と伝送遅延時間とを含むパケットを受信した場合に、前記基準時間と前記伝送遅延時間とを加算した時間に基づいて、自コンピュータの基準時間を補正することを特徴とする付記7または8に記載の時間同期方法。