(57)【要約】【課題】簡易なハードウェア構成を有する低消費電力な無線通信装置を提供する。【解決手段】一実施形態に係る無線通信装置は、無線インタフェース部と、スリープ制御部とを備える。無線インタフェース部は、無線信号の送受信を行うことができる。スリープ制御部は、現在時刻から次のタスクの開始タイミングまでの第１期間が割り込み期間より長い場合、割り込み期間以下の期間でスリープ動作を行うように無線インタフェース部を制御する。【選択図】図１
2017121040.tif 000002
【特許請求の範囲】
【請求項１】
無線信号の送受信を行うことができる無線インタフェース部と、
現在時刻から次の前記タスクの開始タイミングまでの第１期間が割り込み期間より長い場合、前記割り込み期間以下の期間でスリープ動作を行うように前記無線インタフェース部を制御するスリープ制御部を備える無線通信装置。
【請求項２】
前記スリープ制御部は、前記第１期間が前記割り込み期間以下の場合、前記第１期間に基づいて、前記第１期間より短い前記スリープ期間を計算する
請求項１に記載の無線通信装置。
【請求項３】
前記割り込み期間以下の前記期間経過後に前記インタフェース部を起床させる設定部を有する
請求項１又は請求項２に記載の無線通信装置。
【請求項４】
前記インタフェース部の前記無線信号の送信および受信を制御するメイン処理部をさらに備え、
前記メイン処理部も、前記割り込み期間以下の期間にスリープ動作を行う、
請求項１乃至請求項３のいずれか１項に記載の無線通信装置。
【請求項５】
前記メイン処理部は、前記前記無線信号の送信および受信を開始するタイミングを、時刻又はスロットにより制御する
請求項４に記載の無線通信装置。
【請求項６】
前記スリープ期間は、前記第１期間よりも短く、
前記第１期間と前記スリープ期間との差は、前記無線インタフェース部及び前記メイン処理部がスリープ状態から起床状態に遷移する時間の和以上である、
請求項４に記載の無線通信装置。
【請求項７】
現在時刻において前記無線インタフェース部が起床状態の場合、
前記第１期間と前記スリープ期間との差は、前記無線インタフェース部が起床状態からスリープ状態に遷移する時間と、前記無線インタフェース部がスリープ状態から起床状態に遷移する時間と、前記メイン処理部がスリープ状態から起床状態に遷移する時間と、の和以上である、
請求項４に記載の無線通信装置。
【請求項８】
前記メイン処理部は、同期対象から前記無線信号を受信した場合、前記同期対象との間の同期誤差を計算し、
前記スリープ制御部は、前記同期誤差に基づいて、前記スリープ期間を補正する
請求項４に記載の無線通信装置。
【請求項９】
互いに無線信号を送受信する複数の請求項１に記載の無線通信装置を備える無線通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、無線通信装置に関する。
【背景技術】
【０００２】
従来、無線通信装置を省電力化する方法として、無線通信装置の起床及びスリープを間欠的に繰り返す方法が知られている。しかしながら、従来の無線通信装置では、無線通信装置をスリープさせる期間が固定されていた。このため、設定可能なスリープ期間が制限された簡便なハードウェア構成を有する無線通信装置では、スリープ期間の制限値より、実際のスリープ期間が長すぎる、又は短すぎる恐れがあった。すなわち、スリープ期間の制限値に応じた適切なスリープ期間を設定することが困難であった。結果として、無線通信装置の消費電力を十分に低下させることができなかった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−７２４１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
簡易なハードウェア構成を有する低消費電力な無線通信装置を提供する。
【課題を解決するための手段】
【０００５】
一実施形態に係る無線通信装置は、無線インタフェース部と、スリープ制御部とを備える。無線インタフェース部は、無線信号の送受信を行うことができる。スリープ制御部は、現在時刻から次のタスクの開始タイミングまでの第１期間が割り込み期間より長い場合、割り込み期間以下の期間でスリープ動作を行うように無線インタフェース部を制御する。
【図面の簡単な説明】
【０００６】
【図１】第１実施形態に係る無線通信装置の機能構成の一例を示す図。
【図２】タスクテーブルの一例を示す図。
【図３Ａ】第１実施形態に係る無線通信装置の動作の一例を示すフローチャート。
【図３Ｂ】第１期間T1が割り込み期間Th以下の場合における、第１期間T1と割り込み期間Thと第３期間T3との大小関係を説明する図。
【図３Ｃ】第１期間T1が割り込み期間Thよりも大きい場合における、第１期間T1と割り込み期間Thと第２期間T2と第３期間T3との大小関係を説明する図。
【図４】スロット番号の割当て方法の一例を示す図。
【図５】タスクテーブルの一例を示す図。
【図６Ａ】第２実施形態に係る無線通信装置の動作の一例を示すフローチャート。
【図６Ｂ】第１期間S1が割り込み期間Sh以下の場合における、第１期間S1と割り込み期間Thと第３期間S3との大小関係を説明する図。
【図６Ｃ】第１期間S1が割り込み期間Shよりも大きい場合における、第１期間S1と割り込み期間Shと第２期間S2と第３期間S3との大小関係を説明する図。
【図７】第３実施形態に係る無線通信装置の機能構成の一例を示す図。
【図８】第３実施形態に係る無線通信装置の動作の一例を示すフローチャート。
【図９】第３実施形態に係る無線通信装置の動作の一例を示すフローチャート。
【図１０】第４実施形態に係る無線通信装置の動作の一例を示すフローチャート。
【図１１】第４実施形態に係る無線通信装置の動作の一例を示すフローチャート。
【図１２】メイン処理部とスリープ制御部をマイコンで構成した場合のハードウェアブロック図。
【発明を実施するための形態】
【０００７】
従来の無線通信装置は、特に、マイコン（マイクロコンピュータ）などの簡便なハードウェアを使用した場合、スリープ期間を長くすることで消費電力を極小化することができ、これにより例えば電池で駆動させる場合においては電池寿命を長くすることができる。加えて無線通信に用いるアンプなどのアナログ処理回路の電源供給を停止させることで、より消費電力を抑えることができ、さらなる電池寿命の延伸につながる。ただしこの場合、スリープ状態においては無線信号の受信に関するハードウェアの電源供給を遮断してしまうため、無線信号を受信することができない。そのため、無線通信を行うためには送受信を行う無線通信装置間での時刻同期が必須となる。具体的には、無線信号を送信する無線通信装置は、受信側の無線通信装置が起床状態にあるタイミングで無線信号を送信する必要がある。
【０００８】
送受信をするタイミングを決定する方法として、時分割通信が上げられる。時分割通信では、時間で区切られた一定の期間を各無線通信装置用に割り当て、送受信を行う無線通信装置間で事前にお互いの通信期間を共有することで実現できる。通信期間については、例えばＩＤなどによって事前に決定される方法や、送受信を行う前に無線通信を介して通信期間を共有しておく方法など、様々な方法が適用できる。
【０００９】
時分割通信により送受信するタイミングの同期は可能であるが、マイコンなどの簡便なハードウェアを用いた場合、設定可能なスリープ期間に制限があり、長期間スリープ状態を実行することが困難であった。あるいは長時間設定可能な場合でも設定分解能が低いため、無線通信装置間の時刻同期の精度が劣化するという課題があった。
以下、本発明の実施形態について図面を参照して説明する。
【００１０】
（第１実施形態）
第１実施形態に係る無線通信装置について、図１〜図３Ｃを参照して説明する。本実施形態に係る無線通信装置は、例えば、メッシュ型やツリー型の無線ネットワークの各ノードとして利用される。以下では、無線通信装置がセンサネットワークに適用される場合を想定して説明するが、適用可能な無線ネットワークはこれに限られない。
【００１１】
まず、本実施形態に係る無線通信装置の構成について説明する。図１は、本実施形態に係る無線通信装置の機能構成の一例を示す図である。図１の無線通信装置は、無線インタフェース部１と、センシング部２と、クロック部３と、メイン処理部４と、スリープ制御部５と、設定部６と、を備える。
【００１２】
無線インタフェース部１は、無線信号の送信及び受信を行う。無線インタフェース部１は、受信した無線信号にダウンコンバートなどの所定の信号処理を施すことにより、無線信号に含まれる受信データを取得する。無線インタフェース部１は、得られた受信データを、メイン処理部４に入力する。また、無線インタフェース部１は、メイン処理部４から入力された送信データにアップコンバートなどの所定の信号処理を施すことにより、送信データを含む無線信号を生成し、生成した無線信号を外部に送信する。無線インタフェース部１による無線信号の送信及び受信は、メイン処理部４により制御される。
【００１３】
無線インタフェース部１は、動作状態として、起床状態と、スリープ状態と、を有する。無線インタフェース部１の起床状態とは、無線インタフェース部１が、無線信号の送信及び受信を可能な状態のことである。起床状態は、例えば、電源が投入された状態に相当する。無線インタフェース部１のスリープ状態とは、無線インタフェース部１が、無線信号の送信及び受信を不能な状態のことである。スリープ状態は、例えば、電源が切断された状態に相当する。無線インタフェース部１は、スリープ状態の場合、起床状態の場合に比べて消費電力が大幅に小さくなる。
【００１４】
以下では、無線インタフェース部１などの動作状態が、起床状態からスリープ状態に遷移することをスリープするという。また、起床状態からスリープ状態に遷移させる処理をスリープ処理という。
【００１５】
同様に、無線インタフェース部１などの動作状態が、スリープ状態から起床状態に遷移することを起床するという。また、スリープ状態から起床状態に遷移させる処理を起床処理という。
【００１６】
無線インタフェース部１は、ＲＦ（Radio Frequency）回路により構成される。ＲＦ回路は、アンテナ、ミキサ、アンプ、フィルタ、及び発振器などを備えるアナログ処理回路である。無線インタフェース部１は、１チップのＩＣ（Integration Circuit）により構成されてもよいし、２つ以上のＩＣにより構成されてもよい。また、無線インタフェース部１は、ＡＤＣ（Analog to Digital Converter）やＤＡＣ（Digital to Analog Converter）を備えてもよい。
【００１７】
センシング部２は、温度、圧力、湿度、電圧、電流、及び電力などの、任意の物理量を計測する。センシング部２は、計測により得られたセンサデータを、メイン処理部４に入力する。センシング部２は、計測対象に応じた、１つ又は複数のセンサにより構成される。
【００１８】
なお、本実施形態において、無線通信装置は、センシング部２を備えない構成も可能である。この場合、無線通信装置は、外部のセンサと接続され、接続されたセンサからセンサデータを取得してもよい。
【００１９】
クロック部３は、無線通信装置の電源状態（オン又はオフ）や動作状態（スリープ状態又は起床状態）に依存せずに、所定の周期でクロックを発生させる。クロック部３は、クロックに基づいて現在時刻Tlocalをカウントするカウント機能を有する。クロック部３は、現在時刻Tlocalをメイン処理部４に入力する。
【００２０】
また、図１の例では、クロック部３は、設定部６を備える。設定部６は、タイマ割り込み機能を有する。タイマ割り込み機能は、予め設定された割り込み時刻Tintに、割り込み要求を出力する機能である。本実施形態において、設定部６は、設定された割り込み時刻Tintに、メイン処理部４を起床させる起床割り込み要求を出力する。設定部６が出力した起床割り込み要求は、メイン処理部４に入力される。
【００２１】
設定部６は、割り込み時刻Tintを設定可能な期間である、割り込み期間Thを有する。割り込み時刻Tintは、割り込みを行う時刻である。割り込みとは、例えば、無線インタフェース部１にタスクを実行させるために、スリープ状態にある無線インタフェース部１およびメイン処理部４を起床させる信号である。
【００２２】
設定部６は、現在時刻TlocalからTlocal＋Thまでの任意の時刻を、割り込み時刻Tintとして設定することができる（Tlocal＜Tint≦Tlocal＋Th）。逆に言うと、設定部６は、現在時刻Tlocal＋Th以降の時刻を、割り込み時刻Tintとして設定することができない。割り込み期間Thは、設定部６のハードウェア構成に依存する。一般に、設定部６のハードウェア構成が簡易なほど、割り込み期間Thは短くなる。割り込み時刻Tintの設定方法について、詳しくは後述する。
【００２３】
クロック部３は、発振回路などを備えたクロック生成回路により構成される。カウント機能及びタイマ割り込み機能（設定部６）を有するクロック部３として、例えば、リアルタイムクロックを利用できる。
【００２４】
メイン処理部４は、自装置が実行するタスク（処理）を管理する。また、メイン処理部４は、無線インタフェース部１を制御してタスクを実行する。ここでいうタスクには、センシング部２からセンサデータを取得するセンサ取得タスクと、無線インタフェース部１により無線信号を送信する送信タスクと、無線インタフェース部１により無線信号を受信する受信タスクと、が含まれる。メイン処理部４は、各タスクについて、タスクの種類、実行タイミング、及び実行期間を予め記憶している。
【００２５】
メイン処理部４は、タスクを管理するために、自装置に登録されたタスクに関する情報を格納したタスクテーブルを記憶している。タスクテーブルにおいて、各タスクは、タスクの種類、実行タイミング、及び実行期間が対応付けられている。
【００２６】
図２は、本実施形態におけるタスクテーブルの一例を示す図である。図２の例では、各レコードが各タスクに相当する。各レコードには、そのタスクの種類と、開始時刻（実行タイミング）と、実行期間と、が格納されている。例えば、１行目のレコードは、１：００：００から１００ｍｓｅｃ間実行される送信タスクを示している。以下、本実施形態では、図２のタスクテーブルのように、実行タイミングは時刻で管理され、実行期間は時間で管理されているものとする。
【００２７】
メイン処理部４は、このようなタスクテーブルを参照して、自装置が現在時刻Tlocalにおいて、どのタスクを実行すべきかを判断する。メイン処理部４は、現在時刻Tlocalにおいて、実行すべきタスクが存在する場合、そのタスクを実行する。
【００２８】
センサ取得タスクを実行する場合、メイン処理部４は、センシング部２からセンサデータを取得し、取得したセンサデータを記憶する。
【００２９】
送信タスクを実行する場合、メイン処理部４は、送信データを生成する。送信データには、例えば、メイン制御装置４が記憶している、センサデータ、自装置の基本情報（識別子（ＩＤ）など）、及び宛先情報などが含まれる。
【００３０】
その後、メイン処理部４は、送信データと、送信指示と、を無線インタフェース部１に入力する。送信指示を入力された無線インタフェース部１は、送信データに応じた無線信号を送信する。
【００３１】
受信タスクを実行する場合、メイン処理部４は、無線インタフェース部１に受信指示を入力する。受信指示を入力された無線インタフェース部１は、無線信号を受信し、受信した無線信号に含まれる受信データを、メイン処理部４に入力する。受信データを入力されたメイン処理部４は、受信データに含まれる宛先情報の確認などの、所定の処理を実行する。
【００３２】
また、メイン処理部４は、無線インタフェース部１の動作状態を制御する。具体的には、メイン処理部４は、無線インタフェース部１にスリープ指示を入力することにより、無線インタフェース部１をスリープさせる。また、メイン処理部４は、無線インタフェース部１に起床指示を入力することにより、無線インタフェース部１を起床させる。
【００３３】
また、メイン処理部４は、動作状態として、起床状態と、スリープ状態と、を有する。メイン処理部４の起床状態とは、メイン処理部４が、タスクを実行可能な状態のことである。起床状態は、例えば、電源が投入された状態に相当する。メイン処理部４のスリープ状態とは、メイン処理部４が、タスクを実行不能な状態のことである。スリープ状態は、例えば、電源が切断された状態に相当する。メイン処理部４は、スリープ状態の場合、起床状態の場合に比べて消費電力が大幅に小さくなる。
【００３４】
メイン処理部４は、例えば、ベースバンド回路を備えたプロセッサにより構成される。プロセッサとして、例えば、汎用目的プロセッサ、中央処理装置（ＣＰＵ）、マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、コントローラ、マイクロコントローラ、状態マシン、特定用途向け集積回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラム可能論理回路（ＰＬＤ）、及びこれらの組合せを用いることができる。メイン処理部４は、１チップのＩＣにより構成されてもよいし、２つ以上のＩＣにより構成されてもよい。
【００３５】
なお、本実施形態に係るメイン処理部４は、現在時刻Tlocalをカウントするカウント機能を備えてもよい。クロック部３からメイン処理部４にクロックを入力することにより、メイン処理部４は、現在時刻Tlocalをカウントすることができる。メイン処理部４がカウント機能を備える場合、クロック部３はカウント機能を備えなくてもよい。メイン処理部４のカウント機能は、メイン処理部４がスリープ状態の場合であっても機能する。
【００３６】
また、本実施形態に係るメイン処理部４は、タイマ割り込み機能を備えてもよい。すなわち、メイン処理部４はタスクを実行する部分に加えて設定部６を含んでいてもよい。メイン処理部４がタイマ割り込み機能（設定部６）を備える場合、クロック部３はタイマ割り込み機能（設定部６）を備えなくてもよい。メイン処理部４のタイマ割り込み機能は、メイン処理部４がスリープ状態の場合であっても機能する。
【００３７】
スリープ制御部５は、メイン処理部４の動作状態を制御する。具体的には、スリープ制御部５は、メイン処理部４にスリープ指示を入力することにより、メイン処理部４をスリープさせる。
【００３８】
また、スリープ制御部５は、現在時刻Tlocalと、次のタスクの開始時刻（実行タイミング）と、に基づいて、スリープ期間Tsを設定し、スリープ期間Tsを設定部６に通知する。スリープ期間Tsとは、無線インタフェース部１及びメイン処理部４をスリープさせる期間のことである。スリープ期間について、詳しくは後述する。
【００３９】
スリープ制御部５からスリープ期間Tsを通知されると、設定部６は起床割り込みを設定する。この起床割り込みが実行される割り込み時刻Tintは、現在時刻Tlocalのスリープ期間Ts後である（Tint＝Tlocal＋Ts）。
【００４０】
本実施形態において、メイン処理部４は、スリープ制御部５からスリープ指示を入力された場合に、無線インタフェース部１をスリープさせる。結果として、スリープ制御部５は、無線インタフェース部１及びメイン処理部４の両方の動作状態を制御する。このように、スリープ制御部５は、制御対象の動作状態を直接制御してもよいし、メイン処理部４やクロック部３など他の要素を介して制御対象の動作状態を制御してもよい。
【００４１】
スリープ制御部５は、例えば、プロセッサにより構成される。利用可能なプロセッサは、上述の通りである。スリープ制御部５は、１チップのＩＣにより構成されてもよいし、２つ以上のＩＣにより構成されてもよい。
【００４２】
無線通信装置は、さらに記憶部７を備えてもよい。記憶部７は、例えば受信データ、送信データやセンサデータを記憶する。また、記憶部７は、スリープ指示や起床割り込みに関する情報を記憶してもよい。記憶部７に記憶されるデータは、例えば、メイン処理部４から入力されたりメイン処理部に入力されたりする。
【００４３】
以上説明した、無線インタフェース部１、クロック部３、メイン処理部４、スリープ制御部５、及び設定部６は、それぞれ異なるＩＣにより構成されてもよいし、いずれか２つ以上が同一のＩＣにより構成されてもよい。
【００４４】
次に、本実施形態に係る無線通信装置の動作について説明する。図３Ａは、本実施形態に係る無線通信装置の動作の一例を示すフローチャートである。以下では、動作の開始時点において、無線インタフェース部１はスリープしており、メイン処理部４は起床しているものとする。
【００４５】
まず、メイン処理部４が、タスクテーブルを参照して、現在時刻Tlocalに実行するべきタスクが存在するか確認する（ステップＳ１）。具体的には、メイン処理部４は、クロック部３から入力された現在時刻Tlocalと、各タスクの開始時刻と、を比較する。そして、開始時刻が現在時刻Tlocalと一致するタスク、又は開始時刻が現在時刻Tlocalより早く、かつ、現在時刻Tlocalがその実行期間に含まれるタスクを、現在時刻Tlocalに実行するべきタスクとして把握する。
【００４６】
現在時刻Tlocalに実行するべきタスクとして、送信タスクが存在した場合（ステップＳ２のＹＥＳ）、メイン処理部４は、無線インタフェース部１に起床指示を入力して、無線インタフェース部１を起床させる。そして、メイン処理部４は、実行期間の間、送信タスクを実行する（ステップＳ３）。その後、処理はステップＳ８に進む。
【００４７】
現在時刻Tlocalに実行するべきタスクとして、受信タスクが存在した場合（ステップＳ４のＹＥＳ）、メイン処理部４は、無線インタフェース部１に起床指示を入力して、無線インタフェース部１を起床させる。そして、メイン処理部４は、実行期間の間、受信タスクを実行する（ステップＳ５）。その後、処理はステップＳ８に進む。
【００４８】
現在時刻Tlocalに実行するべきタスクとして、センサ取得タスクが存在した場合（ステップＳ６のＹＥＳ）、メイン処理部４は、実行期間の間、センサ取得タスクを実行する。すなわち、メイン処理部４は、センシング部２からセンサデータを取得し、取得したセンサデータを記憶する（ステップＳ７）。その後、処理はステップＳ８に進む。
【００４９】
現在時刻Tlocalに実行するべきタスクが存在しなかった場合（ステップＳ６のＮＯ）、処理はステップＳ８に進む。
【００５０】
ステップＳ８において、スリープ制御部５は、第１期間T1を計算する。第１期間T1は、現在時刻Tlocalから次のタスクの開始時刻までの期間に相当する。次のタスクとは、現在時刻Tlocal以降に実行されるタスクの内、開始時刻が最も早いタスクのことである。
【００５１】
スリープ制御部５は、メイン制御部４から、現在時刻Tlocalと、タスクテーブルに格納された各タスクの開始時刻と、を取得し、以下の式により第１期間T1を計算する。
【００５２】
【数１】
2017121040.tif 000003
【００５３】
式（１）において、Time[k]は、各タスクの開始時刻である。kは、開始時刻が現在時刻Tlocal以降（Time[k]＞Tlocal）の各タスクに割当てられた番号である。タスクテーブルに格納されたタスクの総数がNである場合、0≦k＜Nとなる。
【００５４】
次に、スリープ制御部５は、第１期間T1と、割り込み期間Thと、を比較する（ステップＳ９）。第１期間T1が割り込み期間Th以下（T1≦Th）の場合（ステップＳ９のＮＯ）、スリープ制御部５は、第１期間T1を第３期間T3に設定する（ステップＳ１０）。すなわち、T3＝T1≦Thとなる。これら、第１期間T1と、割り込み期間Thと、第３期間T3との大小関係を図示すると、図３Ｂのようになる。
【００５５】
一方、第１期間T1が割り込み期間Thより長い（T1＞Th）場合（ステップＳ９のＹＥＳ）、スリープ制御部５は、割り込み期間Thに基づいて、第２期間T2を計算する（ステップＳ１１）。第２期間T2は、割り込み期間Th以下の期間であり、例えば、以下の式で計算される。
【００５６】
【数２】
2017121040.tif 000004
【００５７】
式（２）において、α（０≦α＜Th）は、予め設定されたマージンである。割り込み期間Thからマージンαを減算することにより、第２期間T2は、割り込み期間Th以下となる。その後、スリープ制御部５は、第２期間T2を第３期間T3に設定する（ステップＳ１０）。すなわち、T3＝T2≦Thとなる。これら、第１期間T1と、割り込み期間Thと、第２期間T2と、第３期間T3との大小関係を図示すると、図３Ｃのようになる。
【００５８】
以上の説明からわかるように、本実施形態に係る無線通信装置では、いずれの場合も、第３期間T3が割り込み期間Th以下に設定される。
【００５９】
続いて、スリープ制御部５は、第３期間T3の間に、無線インタフェース部１及びメイン処理部４のスリープ処理及び起床処理を実行可能であるか判定する。このために、まず、スリープ制御部５は、タスクテーブルを参照して、次のタスクの種類を把握する。次に、スリープ制御部５は、現在の無線インタフェース部１の動作状態と、次のタスクの種類と、に基づいて、判定期間Tjを計算する。判定期間Tjは、無線インタフェース部１及びメイン処理部４のスリープ処理及び起床処理を実行するために必要な期間である。
【００６０】
そして、スリープ制御部５は、第３期間T3と、判定期間Tjと、を比較する（ステップＳ１２）。スリープ制御部５は、第３期間T3が判定期間Tj以上の場合（T3≧Tj）、スリープ処理及び起床処理を実行可能と判定し、第３期間T3が判定期間Tjより短い場合（T3＜Tj）、スリープ処理及び起床処理を実行不能と判定する。
【００６１】
ここで、無線インタフェース部１及びメイン処理部４の遅延時間に基づく判定期間Tjの計算方法の例について説明する。以下では、無線インタフェース部１が起床状態からスリープ状態に遷移するまでの遅延時間をTdw1、無線インタフェース部１がスリープ状態から起床状態に遷移するまでの遅延時間をTdw2、メイン処理部４が起床状態からスリープ状態に遷移するまでの遅延時間をTdm1、メイン処理部４がスリープ状態から起床状態に遷移するまでの遅延時間をTdm2とする。以下の説明において、β（≧０）は予め設定されたマージンである。マージンβは、無線通信装置のアプリケーションなどに応じて任意に設定可能である。
【００６２】
まず、無線インタフェース部１の起床及びスリープと、メイン処理部４の起床及びスリープと、が順番に実行される場合における、判定期間Tjの計算方法について説明する。
【００６３】
（ケース１）
ケース１は、判定の時点で無線インタフェース部１が起床状態であり、かつ、次のタスクを実行するために無線インタフェース部１が起床状態である必要がある場合である。
【００６４】
判定の時点で無線インタフェース部１が起床状態である場合とは、判定直前に送信タスクが実行された場合（ステップＳ２のＹＥＳ）、及び判定直前に受信タスクが実行された場合（ステップＳ４のＹＥＳ）に相当する。
【００６５】
また、次のタスクを実行するために無線インタフェース部１が起床状態である必要がある場合とは、次のタスクが送信タスク又は受信タスクである場合に相当する。
【００６６】
ケース１では、スリープ制御部５がメイン処理部４をスリープさせてから、次のタスクの実行が開始されるまでメイン処理部４をスリープさせ、無線インタフェース部１をスリープさせ、その後メイン処理部４を起床させ、無線インタフェース部１を起床させる、という一連の処理が行われる。そこで、ケース１では、判定期間Tjは、以下の式で計算される。
【００６７】
【数３】
2017121040.tif 000005
【００６８】
（ケース２）
ケース２は、判定の時点で無線インタフェース部１がスリープ状態であり、かつ、次のタスクを実行するために無線インタフェース部１が起床状態である必要がある場合である。
【００６９】
判定の時点で無線インタフェース部１がスリープ状態である場合とは、判定直前にセンサ取得タスクを実行した場合（ステップＳ６のＹＥＳ）、及び判定直前にいずれのタスクも実行されていなかった場合（ステップＳ６のＮＯ）に相当する。
【００７０】
ケース２では、スリープ制御部５がメイン処理部４をスリープさせてから、次のタスクの実行が開始されるまで、メイン処理部４をスリープさせ、その後メイン処理部４を起床させ、無線インタフェース部１を起床させる、という一連の処理が行われる。そこで、ケース２では、判定期間Tjは、以下の式で計算される。
【００７１】
【数４】
2017121040.tif 000006
【００７２】
（ケース３）
ケース３は、判定の時点で無線インタフェース部１が起床状態であり、かつ、次のタスクを実行するために無線インタフェース部１が起床状態である必要がない場合である。
【００７３】
次のタスクを実行するために無線インタフェース部１が起床状態である必要がない場合とは、次のタスクがセンサ取得タスクである場合に相当する。
【００７４】
ケース３では、スリープ制御部５がメイン処理部４をスリープさせてから、次のタスクの実行が開始されるまでに、無線インタフェース部１をスリープさせ、メイン処理部４をスリープさせ、メイン処理部４を起床させる、という一連の処理が行われる。そこで、ケース３では、判定期間Tjは、以下の式で計算される。
【００７５】
【数５】
2017121040.tif 000007
【００７６】
（ケース４）
ケース４は、判定の時点で無線インタフェース部１がスリープ状態であり、かつ、次のタスクを実行するために無線インタフェース部１が起床状態である必要がない場合である。
【００７７】
ケース４では、スリープ制御部５がメイン処理部４をスリープさせてから、次のタスクの実行が開始されるまでに、メイン処理部４をスリープさせ、メイン処理部４を起床させる、という一連の処理が行われる。そこで、ケース４では、判定期間Tjは、以下の式で計算される。
【００７８】
【数６】
2017121040.tif 000008
【００７９】
次に、無線インタフェース部１の起床及びスリープと、メイン処理部４の起床及びスリープと、が並行して実行される場合における、判定期間Tjの計算方法について説明する。
【００８０】
この場合、無線インタフェース部１のスリープ処理と、メイン処理部４のスリープ処理と、が並行して実行される。ただし、メイン処理部４は、無線インタフェース部１にスリープ指示を入力し、無線インタフェース部１がスリープ指示を受け取ったことを確認した後に、スリープ処理を開始する。したがって、メイン処理部４のスリープ処理は、無線インタフェース部１のスリープ処理より遅れて開始される。
【００８１】
ここで、無線インタフェース部１がスリープ処理を開始してからメイン処理部４がスリープ処理を開始するまでの遅延時間をTd1、無線インタフェース部１及びメイン処理部４のスリープ処理の総遅延時間をTdmw1とすると、Tdw1＞Tdm1＋Td1の場合、Tdmw1＝Tdw1となる。また、Tdw1≦Tdm1＋Td1の場合、Tdmw1＝Tdm1＋Td1となる。
【００８２】
また、無線インタフェース部１の起床処理と、メイン処理部４の起床処理と、が並行して実行される。ただし、メイン処理部４は、自身の起床処理を開始してから、無線インタフェース部１に起床指示を入力できるようになるまで、所定の時間を要する。したがって、無線インタフェース部１の起床処理は、メイン処理部４の起床処理より遅れて開始される。
【００８３】
ここで、メイン処理部４が起床処理を開始してから無線インタフェース部１が起床処理を開始するまでの遅延時間をTd2、無線インタフェース部１及びメイン処理部４の起床処理の総遅延時間をTdmw2とすると、Tdm2＞Tdw2＋Td2の場合、Tdmw2＝Tdm2となる。また、Tdm2≦Tdw2＋Td2の場合、Tdmw2＝Tdw2＋Td2となる。
【００８４】
総遅延時間Tdmw1，Tdmw2を用いると、スリープ処理及び起床処理を並行して実行可能な場合における、ケース１〜ケース３における判定期間Tjは、それぞれ以下の式で計算される。
【００８５】
【数７】
2017121040.tif 000009
【００８６】
式（７）はケース１における判定期間Tjを示し、式（８）はケース２における判定期間Tjを示し、式（９）はケース３における判定期間Tjを示している。ケース４では、無線インタフェース部１のスリープ処理及び起床処理が行われないため、判定期間Tjは、式（６）で計算される。
【００８７】
さらに、メイン処理部４がＯＳ（Operating System）を搭載しており、このＯＳが、自動的に、メイン処理部４が起床処理及びスリープ処理を実行可能か判定し、可能な場合に起床処理及びスリープ処理を実行する場合における、判定期間Tjの計算方法について説明する。
【００８８】
この場合、スリープ制御部５は、第３期間T3の間に、無線インタフェース部１がスリープ処理及び起床処理を実行可能であるか判定すればよい。したがって、上記のケース１〜ケース４における判定期間Tjは、それぞれ以下の式で計算される。
【００８９】
【数８】
2017121040.tif 000010
【００９０】
式（１０）はケース１における判定期間Tjを示し、式（１１）はケース２における判定期間Tjを示し、式（１２）はケース３における判定期間Tjを示し、式（１３）はケース４における判定期間Tjを示している。
【００９１】
なお、判定期間Tjの計算方法は、上記の例に限られない。また、計算を簡易化するために、判定期間Tjとして、ケース１〜ケース４で共通の値が予め設定されていてもよい。例えば、判定期間Tjとして、Tdm1＋Tdw1＋Tdm2＋Tdw2を設定することが考えられる。
【００９２】
スリープ処理及び起床処理を実行可能と判定された場合（ステップＳ１２のＹＥＳ）、すなわち、T3≧Tjの場合、スリープ制御部５は、第３期間T3に基づいて、スリープ期間Tsを設定する（ステップＳ１３）。スリープ期間Tsは、第３期間T3より、無線インタフェース部１及びメイン処理部４の起床処理の総遅延時間以上短くなるように設定される。スリープ期間Tsは、例えば、以下の式で設定される。
【００９３】
【数９】
2017121040.tif 000011
【００９４】
式（１４）はケース１及びケース２におけるスリープ期間Tsを示し、式（１５）はケース３及びケース４におけるスリープ期間Tsを示す。式（１４）及び式（１５）におけるγは、予め設定されたマージンである。
【００９５】
ケース１及びケース２では、メイン処理部４に起床割り込み要求が入力された後、無線インタフェース部１及びメイン処理部４の起床処理が実行されるため、第３期間T3から遅延時間Tdm2，Tdw2が減算される。また、ケース３及びケース４では、メイン処理部４に起床割り込み要求が入力された後、メイン処理部４の起床処理のみが実行されるため、第３期間T3から遅延時間Tdm2が減算される。
【００９６】
なお、スリープ期間Tsの設定方法は、上記の例に限られない。また、計算を簡易化するために、第３期間T3から減算される値が予め設定されていてもよい。例えば、減算される値として、Tdm2＋Tdw2＋γを設定することが考えられる。いずれの場合も、スリープ期間Tsは、割り込み期間Thより短くなる。
【００９７】
その後、スリープ制御部５は、設定部６にスリープ期間Tsを通知する（ステップＳ１４）。スリープ期間Tsを通知された設定部６は、現在時刻Tlocalからスリープ期間Tsを経過後に起床割り込み要求を出力する起床割り込みを設定する。割り込み時刻Tintは、Tlocal＋Tsとなる。
【００９８】
また、スリープ制御部５は、メイン処理部４にスリープ指示を入力する。メイン処理部４は、無線インタフェース部１がスリープしている場合、直ちにスリープする。一方、メイン処理部４は、無線インタフェース部１が起床している場合、無線インタフェース部１にスリープ指示を入力した後、スリープする。これにより、無線インタフェース部１及びメイン処理部４がスリープする。
【００９９】
なお、スリープ制御部５は、スリープ指示の代わりに、スリープ期間Tsをメイン処理部４に通知してもよい。メイン処理部４は、０より長いスリープ期間Ts（＞０）を、スリープ指示として認識すればよい。
【０１００】
以降、スリープ期間Tsの間、無線インタフェース部１及びメイン処理部４がスリープした状態が維持される。
【０１０１】
その後、スリープ期間Tsが経過する（ステップＳ１５のＹＥＳ）、すなわち、割り込み時刻Tintになると、設定部６が起床割り込み要求を出力する。この起床割り込み要求がメイン処理部４に入力されることにより、メイン処理部４が起床する（ステップＳ１６）。その後、処理はステップＳ１に戻る。
【０１０２】
なお、ステップＳ３で送信タスクを実行した場合か、ステップＳ５で受信タスクを実行かステップＳ７でセンサタスクを実行した場合においては、ステップ１６の実行時に各タスクの時刻を更新することで周期的な送受信及びセンサデータ取得を実現することができる。
【０１０３】
一方、スリープ処理及び起床処理を実行可能と判定された場合（ステップＳ１２のＮＯ）、すなわち、T3＜Tjの場合、スリープ制御部５は処理を終了し、処理はステップＳ１に戻る。この際、スリープ制御部５は、設定部６に、スリープ期間Tsを通知しなくてもよいし、スリープ期間Tsとして０を通知してもよいし、終了通知を通知してもよい。また、スリープ制御部５は、メイン処理部４に、スリープ指示を入力しなくてもよいし、スリープ期間Tsとして０を通知してもよいし、終了通知を通知してもよい。
【０１０４】
スリープ制御部５が設定部６及びメイン処理部４に、スリープ期間Tsとして０を通知したり、終了通知を通知したりすることにより、スリープ制御部５による処理を明示的に終了することができる。
【０１０５】
以上説明した通り、本実施形態に係る無線通信装置は、スリープ期間Tsの間、無線インタフェース部１及びメイン処理部４をスリープさせる。これにより、消費電力を低下させることができる。
【０１０６】
また、従来の無線通信装置は、スリープ期間が固定されていたため、スリープ期間の固定値より短い期間の間、無線インタフェース部１などをスリープさせることができなかった。
【０１０７】
これに対して、本実施形態では、スリープ期間Tsは、自装置のタスクの登録状況に応じて計算されるため、短い期間であっても、無線インタフェース部１及びメイン処理部４をスリープさせることができる。したがって、従来の無線通信装置より効率的に消費電力を低下させることができる。本実施形態の無線通信装置は、ハードウェアに起因するスリープ期間の設定制限を考慮し、同期精度を維持しつつ、長期間のスリープを可能とする。
【０１０８】
さらに、従来の無線通信装置は、スリープ期間の固定値より長い割り込み期間を有するクロック部、又は割り込み期間の制約がないクロック部を備える必要であった。しかしながら、このようなクロック部は、複雑な構成を有するため、高価であり、かつ、回路設計を困難にする原因となった。
【０１０９】
これに対して、本実施形態では、スリープ制御部５により、割り込み期間Thより短いスリープ期間Tsが計算され、設定部６に通知される。このため、割り込み期間Thの制約がある簡易なハードウェア構成の設定部６であっても、無線インタフェース部１及びメイン処理部４をスリープさせ、消費電力を低下させることができる。この結果、無線通信装置の回路設計を容易にし、かつ、無線通信装置を安価に製造することができる。
【０１１０】
なお、本実施形態に係る無線通信装置は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、無線通信装置は、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、ＣＤ−ＲＯＭなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。また、上記のコンピュータ装置に内蔵あるいは外付けされたメモリ、ハードディスクもしくはＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒなどの記憶媒体などを適宜利用して実現することができる。
【０１１１】
（第２実施形態）
第２実施形態に係る無線通信装置について、図４〜図６Ｃを参照して説明する。第１実施形態では、タスクの実行タイミングが時刻で管理される場合について説明した。これに対して、本実施形態では、タスクの実行タイミングがスロットで管理される場合について説明する。なお、本実施形態に係る無線通信装置の機能構成及びハードウェア構成は、第１実施形態と同様である。
【０１１２】
まず、スロットについて説明する。スロットとは、時間軸上に複数設定された、所定の時間幅（例えば、１０ｍｓｅｃや１００ｍｓｅｃなど）を有する各期間のことである。各スロットは、時間軸上で重なり合わないように、かつ、連続するように設定される。各スロットが有する時間幅をスロット長Stという。
【０１１３】
各スロットは、スロット番号を割当てられる。スロット番号は、時間が早いスロットから順に昇順又は降順で割当てられる。また、スロット番号は、スロットに対して一意に割当てられてもよいし、周期的に割当てられてもよい。
【０１１４】
図４は、スロット番号の割当て方法の一例を示す図である。図４の例では、スロット番号は、時間が早いスロットから順に昇順で割当てられている。
【０１１５】
図４の上の例では、スロット番号は、スロットに対して一意に割当てられている。すなわち、各スロットは、それぞれ異なるスロット番号を割当てられている。
【０１１６】
図４の下の例では、スロット番号０〜ｎ−１が、スロットに対して周期的に割当てられている。すなわち、あるスロットと、そのスロットと１周期ずれたスロットと、は同一のスロット番号を割当てられている。このように、スロット番号を周期的に割当てることにより、スロット番号を記憶するためにメイン処理部４に要求される容量を、小さくすることができる。また、周期的に動作する無線通信装置のタスクを容易に管理することができる。
【０１１７】
例えば、無線通信装置をセンサネットワークに適用する場合、無線通信装置の動作周期が長期間となることが考えられる。例えば、動作周期が１分、スロット長Stが１００ｍｓｅｃの場合、１周期に６００スロットが含まれる（１分＝６００スロット×１００ｍｓｅｃ）。この６００スロットに対して、例えば、スロット番号１〜６００を割当て、６００スロットの終了後に、割当て済みのスロット番号１〜６００をリセットする。そして、次の周期の６００スロットに対して、再びスロット番号１〜６００を割当てる。このような割当を繰り返すことにより、１分の動作周期に含まれる各スロットを、少ないスロット番号で容易に管理することができる。動作周期が３０分や１時間の場合も同様である。
【０１１８】
なお、以下では、スロット番号は、時間の早いスロットから順に昇順で割当てられているものとする。また、スロット番号Xを割当てられたスロットを、スロットXという。この場合、スロットXの次のスロットは、スロットX＋1となる。
【０１１９】
次に、本実施形態におけるタスクの管理方法について説明する。本実施形態では、タスクの実行タイミングはスロット番号で管理され、タスクの実行期間はスロット数で管理される。
【０１２０】
メイン処理部４は、各タスクについて、タスクの種類と、スロット番号X（実行タイミング）と、スロット数（実行期間）と、を対応付けて予め記憶する。各タスクは、スロットXの開始時刻に開始され、スロット数に相当する期間、すなわち、スロット数×スロット長Stの間実行される。メイン処理部４は、スロット長Stを予め記憶している。
【０１２１】
図５は、本実施形態におけるタスクテーブルの一例を示す図である。図５の例では、各レコードが各タスクに相当する。各レコードには、そのタスクの種類と、スロット番号（実行タイミング）と、スロット数（実行期間）と、が格納されている。例えば、１行目のレコードは、スロット０００の開始時刻に開始され、１スロット×スロット長Stの間実行される送信タスクを示している。
【０１２２】
また、メイン処理部４は、起床状態の間、現在のスロット番号NowSlotをカウントしている。現在のスロット番号NowSlotとは、現在時刻を含むスロットNowSlotのスロット番号のことである。メイン処理部４は、スロット長Stが経過する毎に、現在のスロット番号NowSlotを１増加させることにより、現在のスロット番号NowSlotをカウントすることができる。
【０１２３】
次に、本実施形態に係る無線通信装置の動作について説明する。図６Ａは、本実施形態に係る無線通信装置の動作の一例を示すフローチャートである。図６ＡのステップＳ１〜Ｓ１６は、図３ＡのステップＳ１〜Ｓ１６にそれぞれ対応する。以下では、図３Ａとの相違点を中心に説明する。
【０１２４】
まず、メイン処理部４が、タスクテーブルを参照して、現在時刻Tlocalに実行するべきタスクが存在するか確認する（ステップＳ１）。具体的には、メイン処理部４は、現在のスロット番号NowSlotと、各タスクのスロット番号（実行タイミング）と、を比較する。そして、メイン処理部４は、現在のスロット番号NowSlotと一致するスロット番号を有するタスクを、現在時刻Tlocalに実行するべきタスクとして把握する。
【０１２５】
以降、ステップＳ２〜Ｓ７は、図３Ａと同様である。すなわち、現在時刻Tlocalに実行するべきタスクとして、送信タスク、受信タスク、又はセンサ取得タスクが存在した場合、メイン処理部４は、そのタスクを、実行期間の間、実行する。ただし、本実施形態では、上述の通り、実行期間はスロット数×スロット長Stとなる。そして、タスクの実行後、又は現在時刻Tlocalに実行するべきタスクが存在しなかった場合、処理はステップＳ８に進む。
【０１２６】
ステップＳ８において、スリープ制御部５は、第１期間S1を計算する。第１期間S1は、第１期間T1に相当するスロット数であり、S1＝T1／Stで表される。スリープ制御部５は、メイン制御部４から、タスクテーブルに格納された各タスクが開始されるスロット番号を取得し、以下の式により第１期間S1を計算する。
【０１２７】
【数１０】
2017121040.tif 000012
【０１２８】
式（１６）において、Slot[k]は、各タスクが開始されるスロット番号である。kは、スロット番号が現在のスロット番号NowSlot以降（Time[k]＞NowSlot）の各タスクに割当てられた番号である。タスクテーブルに格納されたタスクの総数がNである場合、0≦k＜Nとなる。
【０１２９】
次に、スリープ制御部５は、第１期間S1と、割り込み期間Shと、を比較する（ステップＳ９）。割り込み期間Shは、割り込み期間Thに対応するスロット数であり、Sh＝Th／Stで表される。第１期間S1が割り込み期間Sh以下（S1≦Sh）の場合（ステップＳ９のＮＯ）、スリープ制御部５は、第１期間S1を第３期間S3に設定する（ステップＳ１０）。すなわち、S3＝S1≦Shとなる。これら、第１期間S1と、割り込み期間Shと、第３期間S3との大小関係を図示すると、図６Ｂのようになる。
【０１３０】
一方、第１期間S1が割り込み期間Shより大きい（S1＞Sh）場合（ステップＳ９のＹＥＳ）、スリープ制御部５は、割り込み期間Shに基づいて、第２期間S2を計算する（ステップＳ１１）。第２期間S2は、第２期間T2に相当するスロット数であり、S2＝T2／Stで表される。第２期間S2は、例えば、以下の式で計算される。
【０１３１】
【数１１】
2017121040.tif 000013
【０１３２】
本実施形態では、マージンαは、スロット数である。割り込み期間Shからマージンαを減算することにより、第２期間S2は、割り込み期間Sh以下となる。その後、スリープ制御部５は、第２期間S2を第３期間S3に設定する（ステップＳ１０）。すなわち、S3＝S2≦Shとなる。これら、第１期間S1と、割り込み期間Shと、第２期間S2と、第３期間S3との大小関係を図示すると、図６Ｃのようになる。
【０１３３】
以上の説明からわかるように、本実施形態に係る無線通信装置では、いずれの場合も、第３期間S3が割り込み期間Sh以下に設定される。
【０１３４】
続いて、スリープ制御部５は、第３期間S3の間に、無線インタフェース部１及びメイン処理部４のスリープ処理及び起床処理を実行可能であるか判定する。このために、まず、スリープ制御部５は、タスクテーブルを参照して、次のタスクの種類を把握する。次に、スリープ制御部５は、現在の無線インタフェース部１の動作状態と、次のタスクの種類と、に基づいて、判定期間Sjを計算する。判定期間Sjは、判定期間Tjに相当するスロット数であり、Sj＝Tj／Stで表される。
【０１３５】
そして、スリープ制御部５は、第３期間S3と、判定期間Sjと、を比較する（ステップＳ１２）。スリープ制御部５は、第３期間S3が判定期間Sj以上の場合（S3≧Sj）、スリープ処理及び起床処理を実行可能と判定し、第３期間S3が判定期間Sjより小さい場合（S3＜Sj）、スリープ処理及び起床処理を実行不能と判定する。
【０１３６】
ここで、無線インタフェース部１及びメイン処理部４の遅延時間Tdm1，Tdw1，Tdm2，Tdw2に基づく判定期間Sjの計算方法の例について説明する。以下のケース１〜ケース４は、第１実施形態と同様である。
【０１３７】
まず、無線インタフェース部１の起床及びスリープと、メイン処理部４の起床及びスリープと、が順番に実行される場合における、判定期間Sjの計算方法について説明する。
【０１３８】
ケース１〜ケース４における判定期間Sjは、それぞれ以下の式で計算される。
【０１３９】
【数１２】
2017121040.tif 000014
【０１４０】
式（１８）はケース１における判定期間Sjを示し、式（１９）はケース２における判定期間Sjを示し、式（２０）はケース３における判定期間Sjを示し、式（２１）はケース４における判定期間Sjを示す。式（１８）〜式（２１）において、マージンβは、時間であるが、スロット数であってもよい。マージンβがスロット数である場合、ケース１〜ケース４における判定期間Sjは、それぞれ以下の式で計算される。
【数１３】
2017121040.tif 000015
【０１４１】
式（２２）〜式（２５）は、式（１８）〜式（２１）にそれぞれ対応する。すなわち、式（２２）はケース１における判定期間Sjを示し、式（２３）はケース２における判定期間Sjを示し、式（２４）はケース３における判定期間Sjを示し、式（２５）はケース４における判定期間Sjを示す。
【０１４２】
次に、無線インタフェース部１の起床及びスリープと、メイン処理部４の起床及びスリープと、が並行して実行される場合における、判定期間Sjの計算方法について説明する。
【０１４３】
総遅延時間Tdmw1，Tdmw2を用いると、スリープ処理及び起床処理を並行して実行可能な場合における、ケース１〜ケース３における判定期間Tjは、それぞれ以下の式で計算される。
【０１４４】
【数１４】
2017121040.tif 000016
【０１４５】
式（２６）〜式（２８）は、マージンβが時間である場合のケース１〜ケース３における判定期間Sjをそれぞれ示す。式（２９）〜式（３１）は、マージンβがスロット数である場合のケース１〜ケース３における判定期間Sjをそれぞれ示す。
【０１４６】
さらに、メイン処理部４がＯＳ（Operating System）を搭載しており、このＯＳが、自動的に、メイン処理部４が起床処理及びスリープ処理を実行可能か判定し、可能な場合に起床処理及びスリープ処理を実行する場合における、判定期間Sjの計算方法について説明する。
【０１４７】
この場合、スリープ制御部５は、第３期間S3の間に、無線インタフェース部１がスリープ処理及び起床処理を実行可能であるか判定すればよい。したがって、上記のケース１〜ケース４における判定期間Sjは、それぞれ以下の式で計算される。
【０１４８】
【数１５】
2017121040.tif 000017
【０１４９】
式（３２）〜式（３５）は、マージンβが時間である場合のケース１〜ケース４における判定期間Sjをそれぞれ示す。式（３６）〜式（３９）は、マージンβがスロット数である場合のケース１〜ケース４における判定期間Sjをそれぞれ示す。
【０１５０】
なお、判定期間Sjの計算方法は、上記の例に限られない。また、計算を簡易化するために、判定期間Sjとして、ケース１〜ケース４で共通の値が予め設定されていてもよい。例えば、判定期間Sjとして、（Tdm1＋Tdw1＋Tdm2＋Tdw2S）／Stを設定することが考えられる。
【０１５１】
スリープ処理及び起床処理を実行可能と判定された場合（ステップＳ１２のＹＥＳ）、すなわち、S3≧Sjの場合、スリープ制御部５は、第３期間S3に基づいて、スリープ期間Ssを設定する（ステップＳ１３）。スリープ期間Ssは、スリープ期間Tsに相当するスロット数であり、Ss＝Tt／Stで表される。スリープ期間Ssは、第３期間S3より、無線インタフェース部１及びメイン処理部４の起床処理の総遅延時間以上短くなるように設定される。スリープ期間Ssは、例えば、以下の式で設定される。
【０１５２】
【数１６】
2017121040.tif 000018
【０１５３】
式（４０）及び式（４１）はマージンγが時間である場合のケース１及びケース２におけるスリープ期間Ssをそれぞれ示す。式（４２）及び式（４３）はマージンγがスロット数である場合のケース１及びケース２におけるスリープ期間Ssをそれぞれ示す。
【０１５４】
ケース１及びケース２では、メイン処理部４に起床割り込み要求が入力された後、無線インタフェース部１及びメイン処理部４の起床処理が実行されるため、第３期間S3から遅延時間Tdm2，Tdw2に応じたスロット数が減算される。また、ケース３及びケース４では、メイン処理部４に起床割り込み要求が入力された後、メイン処理部４の起床処理のみが実行されるため、第３期間S3から遅延時間Tdm2に応じたスロット数が減算される。
【０１５５】
なお、スリープ期間Ssの設定方法は、上記の例に限られない。また、計算を簡易化するために、第３期間S3から減算される値が予め設定されていてもよい。例えば、減算される値として、（Tdm2＋Tdw2＋γ）／Stを設定することが考えられる。いずれの場合も、スリープ期間Ssは、割り込み期間Shより短くなる。
【０１５６】
その後、スリープ制御部５は、設定部６にスリープ期間Ssを通知する（ステップＳ１４）。スリープ期間Ssを通知された設定部６は、現在のスロットNowSlotからスリープ期間Ssを経過後に起床割り込み要求を出力する起床割り込みを設定する。割り込み時刻Tintは、スロット（NowSlot＋Ss＋１）の開始時刻となる。なお、スリープ制御部５は、スリップ期間Ssに応じた時間、すなわち、スリープ期間Tsを通知してもよい。スリープ期間Tsは、Ts＝Ss×Stで表される。
【０１５７】
また、スリープ制御部５は、メイン処理部４にスリープ指示を入力する。メイン処理部４は、無線インタフェース部１がスリープしている場合、直ちにスリープする。一方、メイン処理部４は、無線インタフェース部１が起床している場合、無線インタフェース部１にスリープ指示を入力した後、スリープする。これにより、無線インタフェース部１及びメイン処理部４がスリープする。
【０１５８】
なお、スリープ制御部５は、スリープ指示の代わりに、スリープ期間Ssをメイン処理部４に通知してもよい。メイン処理部４は、０より大きいスリープ期間Ss（＞０）を、スリープ指示として認識すればよい。
【０１５９】
以降、スリープ期間Ssの間、無線インタフェース部１及びメイン処理部４がスリープした状態が維持される。
【０１６０】
その後、スリープ期間Ssが経過する（ステップＳ１５のＹＥＳ）、すなわち、割り込み時刻Tintになると、設定部６が起床割り込み要求を出力する。この起床割り込み要求がメイン処理部４に入力されることにより、メイン処理部４が起床する（ステップＳ１６）。
【０１６１】
本実施形態において、メイン処理部４は、起床後に、現在のスロット番号を計算する（ステップＳ１７）。これは、スリープ状態の間、メイン処理部４は、現在のスロット番号をカウントできないためである。現在のカウント番号は、スリープ時のカウント番号に、スリープ期間Ssを加えることにより計算できる。その後、処理はステップＳ１に戻る。なお、メイン処理部４は、スリープする前に、起床時のスロット番号を計算しておいてもよい。
【０１６２】
一方、スリープ処理及び起床処理を実行可能と判定された場合（ステップＳ１２のＮＯ）、すなわち、S3＜Sjの場合、スリープ制御部５は処理を終了し、処理はステップＳ１に戻る。この際、スリープ制御部５は、設定部６に、スリープ期間Ssを通知しなくてもよいし、スリープ期間Ssとして０を通知してもよいし、終了通知を通知してもよい。また、スリープ制御部５は、メイン処理部４に、スリープ指示を入力しなくてもよいし、スリープ期間Ssとして０を通知してもよいし、終了通知を通知してもよい。
【０１６３】
スリープ制御部５が設定部６及びメイン処理部４に、スリープ期間Ssとして０を通知したり、終了通知を通知したりすることにより、スリープ制御部５による処理を明示的に終了することができる。
【０１６４】
以上説明した通り、無線通信装置は、タスクの実行タイミングや実行期間をスロットで管理した場合であっても、第１実施形態と同様の動作が可能である。したがって、本実施形態でも、第１実施形態と同様に、簡易なハードウェア構成を有する低消費電力な無線通信装置を実現することができる。
【０１６５】
なお、以上では、無線通信装置が、全ての処理をスロット数に基づいて実行する場合を例に説明した。しかしながら、本実施形態に係る無線通信装置は、一部の処理を、時間に基づいて実行することも可能である。
【０１６６】
（第３実施形態）
第３実施形態に係る無線通信装置について、図７〜図９を参照して説明する。本実施形態では、他の無線通信装置との同期誤差に応じて、スリープ期間Tsを補正する無線通信装置について説明する。
【０１６７】
図７は、本実施形態に係る無線通信装置の機能構成の一例を示す図である。図７の無線通信装置は、メイン処理部４が、スリープ制御部５に同期誤差を入力する。本実施形態に係る無線通信装置の他の機能構成及びハードウェア構成は、第１実施形態と同様である。
【０１６８】
図８は、本実施形態に係る無線通信装置の動作の一例を示すフローチャートである。図８のステップＳ１〜Ｓ１６は、図３ＡのステップＳ１〜Ｓ１６にそれぞれ対応する。以下では、図１との相違点を中心に説明する。
【０１６９】
本実施形態では、現在時刻Tlocalに実行すべき受信タスクが存在した場合（ステップＳ４のＹＥＳ）、メイン処理部４は、受信タスクを実行し（ステップＳ５）、受信タスクの実行中に同期対象から受信データを受信したか判定する（ステップＳ１８）。同期対象とは、同期対象とは、無線通信装置が時刻を同期する対象となる他の無線通信装置のことである。同期対象は、例えば、メッシュ型若しくはツリー型のネットワークにおける親ノード、又はスター型のネットワークにおける宛先ノードである。メイン処理部４は、受信した各受信データに含まれる送信元の識別子を参照することにより、受信データが同期対象からの受信データであるか判定できる。
【０１７０】
同期対象から受信データを受信していない場合（ステップ１８のＮＯ）、処理はステップＳ８に進む。
【０１７１】
一方、同期対象から受信データを受信していた場合（ステップ１８のＹＥＳ）、メイン処理部４は、同期対象との間の同期誤差Tdを計算する（ステップＳ１９）。同期誤差Tdとは、自装置がカウントしている現在時刻と、同期対象がカウントしている現在時刻と、の差のことである。同期誤差Tdは、例えば、以下の式により計算される。
【０１７２】
【数１７】
2017121040.tif 000019
【０１７３】
式（４４）において、Tsendは受信データの送信時刻、Tdelayは送受信に関する遅延時間である。送信時刻Tsendは、受信データに含まれる。また、遅延時間Tdelayは、テーブルなどとして予め用意され、メイン処理部４に記憶される。
【０１７４】
なお、同期誤差Tdの計算方法は、式（４４）に限られない。
【０１７５】
一般に、同期誤差には、クロック誤差と、ジッタ成分に起因する誤差と、が含まれる。クロック誤差とは、無線通信装置のクロック部３の周波数と、同期対象のクロック部の周波数と、の間の誤差に起因する誤差である。また、ジッタ成分に起因する誤差とは、各クロックの初期値のずれに起因する誤差である。
【０１７６】
メイン処理部４は、これらの各誤差を補正するフィルタを備えてもよい。上記の誤差をフィルタで補正することにより、メイン処理部４は、同期誤差Tdを精度よく計算できる。結果として、スリープ制御部５は、同期誤差Tdを精度よく補正できる。
【０１７７】
また、複数の同期対象から受信データを受信した場合、メイン処理部４は、各同期対象に対して計算した同期誤差の平均値、中央値、重み付け平均値などを、同期誤差Tdとして計算してもよい。
【０１７８】
メイン処理部４は、こうして計算した同期誤差Tdをスリープ制御部５に入力する。その後、処理はステップＳ８に進む。以降、ステップＳ８〜ステップＳ１０の処理は、第１実施形態と同様である。
【０１７９】
なお、ステップＳ１８及びステップＳ１９の処理は、受信タスクの実行後に、受信した全ての受信データに対してまとめて行われてもよいし、受信タスクの実行中に、受信データを受信する毎に行われてもよい。
【０１８０】
スリープ制御部５は、ステップＳ１０において第３期間T3を設定した後、動作周期が終了したか判定する（ステップＳ２０）。具体的には、スリープ制御部５は、周期的に設定された、同期対象から受信データを受信する受信タスクが終了したか判定する。
【０１８１】
動作周期が終了していない場合（ステップＳ２０のＮＯ）、処理はステップＳ１２に進む。以降、ステップＳ１２〜Ｓ１６の処理は、第１実施形態と同様である。
【０１８２】
一方、動作周期が終了している場合（ステップＳ２０のＹＥＳ）、スリープ制御部５は、同期誤差Tdに基づいて、第３期間T3を補正する（ステップＳ２１）。結果として、スリープ期間Tsが、同期誤差Tdに基づいて補正される。補正された第３期間T3を、第４期間T4という。第４期間T4は、同期誤差Tdが０になるように補正された第３期間T3に相当する。第４期間T4は、例えば、以下の式で計算される。
【０１８３】
【数１８】
2017121040.tif 000020
【０１８４】
同期対象の現在時刻より、自装置の現在時刻Tlocalが進んでいる場合、同期誤差Tdは正の値になる。したがって、同期誤差Tdを第３期間T3から減算することにより、第３期間T3を、進んでいる同期誤差Tdの分だけ小さくすることができる。
【０１８５】
同様に、同期対象の現在時刻より、自装置の現在時刻Tlocalが遅れている場合、同期誤差Tdは負の値になる。したがって、同期誤差Tdを第３期間T3から減算することにより、第３期間T3を、遅れている同期誤差Tdの分だけ大きくすることができる。
【０１８６】
以降、第３期間T3の代わりに、第４期間T4を用いて、ステップＳ１２〜Ｓ１６の処理が行われる。すなわち、スリープ制御部５は、第４期間T4と判定期間Tjとを比較して、スリープ処理及び起床処理が実行可能か判定する（ステップＳ１２）。実行可能な場合（ステップＳ１２のＹＥＳ）、第４期間T4に基づいて、スリープ期間Tsを設定する（ステップＳ１３）。スリープ期間Tsは、式（１４）及び式（１５）のT3をT4に置換して設定すればよい。以降、ステップＳ１４〜ステップＳ１６の処理は、第１実施形態と同様である。
【０１８７】
以上説明した通り、本実施形態によれば、無線通信装置と同期対象との間の同期誤差Tdを補正することができる。これにより、無線通信装置の動作と同期対象の動作とを同期させることができる。
【０１８８】
また、同期誤差Tdの補正は、１回の動作周期につき１度だけ実行されるため、少ない処理量で、高い同期精度を維持することができる。
【０１８９】
なお、本実施形態において、マージンαは、同期誤差Tdの取り得る最大値以上に設定されるのが好ましい。これにより、同期誤差Tdを補正した場合であっても、第４期間T4を割り込み期間Th以下に設定することができる。
【０１９０】
ここで、図９は、本実施形態に係る無線通信装置の動作の他の例を示すフローチャートである。本実施形態では、図９に示すように、ステップＳ２０，Ｓ２１の処理は、スリープ期間Tsの計算後に実行されてもよい。
【０１９１】
この場合、ステップＳ２１において、スリープ制御部５は、同期誤差Tdに基づいて、スリープ期間Tsを補正する。補正されたスリープ期間Tsを、スリープ期間Ts’という。スリープ期間Ts’は、同期誤差Tdが０になるように補正されたスリープ期間Tsに相当する。スリープ期間Ts’は、例えば、以下の式で計算される。
【０１９２】
【数１９】
2017121040.tif 000021
【０１９３】
その後、スリープ制御部５は、設定部６にスリープ期間Ts’を通知する。このような動作であっても、上記と同様に、無線通信装置と同期対象との間の同期誤差Tdを補正し、無線通信装置の動作と同期対象の動作とを同期させることができる。
【０１９４】
（第４実施形態）
第４実施形態に係る無線通信装置について、図１０及び図１１を参照して説明する。本実施形態では、他の無線通信装置との同期誤差に応じて、スリープ期間Ssを補正する無線通信装置について説明する。なお、本実施形態に係る無線通信装置の機能構成及びハードウェア構成は、第３実施形態と同様である。
【０１９５】
図１０は、本実施形態に係る無線通信装置の動作の一例を示すフローチャートである。図１０のステップＳ１〜Ｓ１７は、図６ＡのステップＳ１〜Ｓ１７にそれぞれ対応する。以下では、図６Ａとの相違点を中心に説明する。
【０１９６】
本実施形態では、現在時刻Tlocalに実行すべき受信タスクが存在した場合（ステップＳ４のＹＥＳ）、メイン処理部４は、受信タスクを実行し（ステップＳ５）、受信タスクの実行中に同期対象から受信データを受信したか判定する（ステップＳ１８）。同期対象から受信データを受信していない場合（ステップ１８のＮＯ）、処理はステップＳ８に進む。
【０１９７】
一方、同期対象から受信データを受信していた場合（ステップ１８のＹＥＳ）、メイン処理部４は、同期対象との間の同期誤差Sdを計算する（ステップＳ１９）。同期誤差Sdは、同期誤差Tdに相当するスロット数であり、Sd＝Td／Stで表される。同期誤差Sdは、例えば、以下の式により計算される。
【０１９８】
【数２０】
2017121040.tif 000022
【０１９９】
なお、同期誤差Sdの計算方法は、式（４７）に限られない。メイン処理部４は、クロック誤差及びジッタ成分に起因する誤差の少なくとも一方を補正するフィルタを備えてもよい。上記の誤差をフィルタで補正することにより、メイン処理部４は、同期誤差Sdを精度よく計算できる。結果として、スリープ制御部５は、同期誤差Sdを精度よく補正できる。
【０２００】
また、複数の同期対象から受信データを受信した場合、メイン処理部４は、各同期対象に対して計算した同期誤差の平均値、中央値、重み付け平均値などを、同期誤差Sdとして計算してもよい。
【０２０１】
メイン処理部４は、こうして計算した同期誤差Sdをスリープ制御部５に入力する。その後、処理はステップＳ８に進む。以降、ステップＳ８〜ステップＳ１０の処理は、第２実施形態と同様である。
【０２０２】
なお、ステップＳ１８及びステップＳ１９の処理は、受信タスクの実行後に、受信した全ての受信データに対してまとめて行われてもよいし、受信タスクの実行中に、受信データを受信する毎に行われてもよい。
【０２０３】
スリープ制御部５は、ステップＳ１０において第３期間S3を設定した後、動作周期が終了したか判定する（ステップＳ２０）。具体的には、スリープ制御部５は、周期的に設定された、同期対象から受信データを受信する受信タスクが終了したか判定する。
【０２０４】
動作周期が終了していない場合（ステップＳ２０のＮＯ）、処理はステップＳ１２に進む。以降、ステップＳ１２〜Ｓ１７の処理は、第２実施形態と同様である。
【０２０５】
一方、動作周期が終了している場合（ステップＳ２０のＹＥＳ）、スリープ制御部５は、同期誤差Sdに基づいて、第３期間S3を補正する（ステップＳ２１）。補正された第３期間S3を、第４期間S4という。第４期間S4は、第４期間T4に相当するスロット数であり、S4＝T4／Stで表される。第４期間S4は、例えば、以下の式で計算される。
【０２０６】
【数２１】
2017121040.tif 000023
【０２０７】
同期対象の現在時刻より、自装置の現在時刻Tlocalが進んでいる場合、同期誤差Sdは正の値になる。したがって、同期誤差Sdを第３期間S3から減算することにより、第３期間S3を、進んでいる同期誤差Sdの分だけ小さくすることができる。
【０２０８】
同様に、同期対象の現在時刻より、自装置の現在時刻Tlocalが遅れている場合、同期誤差Sdは負の値になる。したがって、同期誤差Sdを第３期間S3から減算することにより、第３期間S3を、遅れている同期誤差Sdの分だけ大きくすることができる。
【０２０９】
以降、第３期間S3の代わりに、第４期間S4を用いて、ステップＳ１２〜Ｓ１７の処理が行われる。すなわち、スリープ制御部５は、第４期間S4と判定期間Sjとを比較して、スリープ処理及び起床処理が実行可能か判定する（ステップＳ１２）。実行可能な場合（ステップＳ１２のＹＥＳ）、第４期間S4に基づいて、スリープ期間Ssを設定する（ステップＳ１３）。スリープ期間Ssは、式（４０）〜式（４３）のS3をS4に置換して計算すればよい。以降、ステップＳ１４〜ステップＳ１７の処理は、第２実施形態と同様である。
【０２１０】
以上説明した通り、無線通信装置は、タスクの実行タイミングや実行期間をスロットで管理した場合であっても、第３実施形態と同様の動作が可能である。したがって、本実施形態でも、第３実施形態と同様に、無線通信装置と同期対象との間の同期誤差し、無線通信装置の動作と同期対象の動作とを同期させることができる。
【０２１１】
なお、本実施形態において、マージンαは、同期誤差Sdの取り得る最大値以上に設定されるのが好ましい。これにより、同期誤差Sdを補正した場合であっても、第４期間S4を割り込み期間Sh以下に設定することができる。
【０２１２】
ここで、図１１は、本実施形態に係る無線通信装置の動作の他の例を示すフローチャートである。本実施形態では、図１１に示すように、ステップＳ２０，Ｓ２１の処理は、スリープ期間Ssの計算後に実行されてもよい。
【０２１３】
この場合、ステップＳ２１において、スリープ制御部５は、同期誤差Sdに基づいて、スリープ期間Ssを補正する。補正されたスリープ期間Ssを、スリープ期間Ss’という。スリープ期間Ss’は、スリープ期間Ts’に相当するスロット数であり、Ss’＝Ts’／Stで表される。スリープ期間Ss’は、例えば、以下の式で計算される。
【０２１４】
【数２２】
2017121040.tif 000024
【０２１５】
その後、スリープ制御部５は、設定部６にスリープ期間Ss’を通知する。このような動作であっても、上記と同様に、無線通信装置と同期対象との間の同期誤差Sdを補正し、無線通信装置の動作と同期対象の動作とを同期させることができる。
【０２１６】
なお、以上では、無線通信装置が、全ての処理をスロット数に基づいて実行する場合を例に説明した。しかしながら、本実施形態に係る無線通信装置は、一部の処理を、時間に基づいて実行することも可能である。
【０２１７】
また、図１２に示すように、上述した各実施形態においては、メイン処理部４とスリープ制御部５は、例えばマイコン１００に含まれるＣＰＵ（Central Processing Unit）１０２やＲＯＭ（Read Only Memory）１０４やＲＡＭ（Random Access Memory）１０６により構成されてもよい。さらに、メイン処理部４とスリープ処理部５は、１つのＣＰＵ、ＲＯＭまたはＲＡＭに含まれてもよいし、それぞれ別のＣＰＵ、ＲＯＭまたはＲＡＭに含まれてもよい。また、マイコン１００は、例えばＣＰＵ１０２、ＲＯＭ１０４およびＲＡＭ１０６の少なくとも１つに加えて、メモリ１０８を含んでいてもよい。メモリ１０８は、例えばハードディスクやフラッシュメモリなどの記憶装置であり、メイン処理部４とスリープ処理部５を動作させるための各種のプログラムやデータを記憶する。
【０２１８】
なお、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素を適宜組み合わせることによって種々の発明を形成できる。また例えば、各実施形態に示される全構成要素からいくつかの構成要素を削除した構成も考えられる。さらに、異なる実施形態に記載した構成要素を適宜組み合わせてもよい。
【符号の説明】
【０２１９】
１：無線インタフェース部、２：センシング部、３：クロック部、４：メイン処理部、５：スリープ制御部、設定部：６
【図１】
2017121040.tif 000025
【図２】
2017121040.tif 000026
【図３Ａ】
2017121040.tif 000027
【図３Ｂ】
2017121040.tif 000028
【図３Ｃ】
2017121040.tif 000029
【図４】
2017121040.tif 000030
【図５】
2017121040.tif 000031
【図６Ａ】
2017121040.tif 000032
【図６Ｂ】
2017121040.tif 000033
【図６Ｃ】
2017121040.tif 000034
【図７】
2017121040.tif 000035
【図８】
2017121040.tif 000036
【図９】
2017121040.tif 000037
【図１０】
2017121040.tif 000038
【図１１】
2017121040.tif 000039
【図１２】
2017121040.tif 000040