以下、本発明に係る無線通信システムの実施形態について図面を参照して説明する。ただし、以下に説明する構成は本発明の一例に過ぎない。本発明は、以下の実施形態に限定されず、本発明に係る技術的思想を逸脱しない範囲であれば、設計等に応じて種々の変更が可能である。
図1に本実施形態の無線通信システムの概略構成を示す。本実施形態では、無線通信システムを構成するノードとして、送信元の子機10(第1ノード)と、送信先の親機20(第2ノード)と、子機10と親機20の間の無線通信を中継する複数台(図示例では例えば6台)の中継機30(第3ノード)とを備える。なお、本実施形態の無線通信システムは6台の中継機30を備えているが、中継機30の台数は6台に限定されず、信号の中継に必要な台数があればよい。また、本実施形態の無線通信システムはデータの送信元である子機10を1台備えているが、子機10の台数は1台に限定されず、2台以上でもよく、必要に応じて適宜変更が可能である。また、本実施形態では子機10から親機20にデータを送信しているが、中継機30に所定の物理量を測定するセンサが接続されている場合、親機20が中継機30に対してセンサの測定データを要求する要求データを送信してもよい。この場合、親機20が要求データを送信する送信元の第1ノードとなり、測定データを要求する対象の中継機30が送信先の第2ノードとなる。
子機10と親機20と中継機30とは、それぞれ、無線免許が不要の無線通信機能を備えている。無線免許が不要の通信方式としては例えば特定小電力無線方式がある。なお、子機10と親機20と中継機30とが備える無線通信機能の通信方式はIEEE(The Institute of Electrical and Electronics Engineers, Inc.)802.15.1の規格に準拠した通信方式でもよい。また、子機10と親機20と中継機30とが備える無線通信機能の通信方式は、IEEE802.11の規格に準拠した通信方式でもよい。
ここで、子機10と親機20とが互いの通信圏内にあり、子機10と親機20との間の通信環境が良好であれば、子機10と親機20との間で無線通信が直接行われる。しかしながら、子機10と親機20とが直接通信できない場合や、通信可能であっても通信環境が良好でない場合、子機10と親機20との間では中継機30を介して無線通信が行われる。そのため、複数台の中継機30は、子機10と親機20の間の無線通信を中継できるように、隣接する他の中継機30が通信圏内に存在するように配置されており、子機10と親機20と複数台の中継機30で中継通信網が構築されている。
子機10と親機20と複数台の中継機30には、ネットワーク内で個々のノードを識別するために個別のノード番号(識別情報)が割り当てられている。本実施形態の無線通信システムでは、子機10のノード番号が「11」に設定され、親機20のノード番号が「0」に設定されている。また、6台の中継機30の各々に「1」〜「6」のノード番号が設定されている。なお、図1及び図5〜図11において、子機10、親機20、中継機30のそれぞれを示す四角内の数字は、各ノードに割り当てられたノード番号を示している。
次に、子機10と親機20と中継機30の構成を図2〜図4に基づいて説明する。
子機10は、図2に示すように、MCU(Micro Control Unit)100と、測定部101と、記憶部102と、無線通信部103と、アンテナ104と、操作部105と、表示部106と、電源部107と、有線通信部108とを備えている。子機10は、所定の送信間隔が経過するごとに、測定部101によって測定されたデータを親機20に無線送信する。
測定部101は、例えば周囲温度に応じて電気抵抗が変化するサーミスタを備え、サーミスタの抵抗値を測定することによって周囲温度を測定する。なお、測定部101の測定対象は温度に限定されず、周囲の湿度や照度でもよいし、測定対象の電気機器による消費電力でもよく、使用目的や用途に応じた物理量を測定すればよい。
記憶部102は、例えばEEPROM(electrically erasable and programmable read-only memory)やフラッシュメモリのような電気的に書き換え可能な不揮発性メモリで構成されている。記憶部102は、MCU100によってデータの書き込み及び読み出しが行われる。記憶部102は、子機10に割り当てられた識別情報(例えばアドレスやノード番号)や、測定部101による測定データや、送信先ノードの情報や、候補ノードの情報や、通信経路の情報などを記憶する。
無線通信部103は例えば特定小電力無線の通信方式に適合した無線モジュールからなり、アンテナ104を介して無線信号の送信又は受信を行う。また、無線通信部103は、受信信号の受信信号強度を測定する機能も備える。
有線通信部108は、例えば設定器(図示せず)などの機器に通信線を介して接続され、有線通信方式で通信を行う。
操作部105は、例えば測定部101による測定範囲の下限値及び上限値や、測定間隔や、測定データの送信間隔を設定するために用いられる。また、操作部105は、記憶部102に保存する候補ノードの数の上限などを設定するためにも使用される。
表示部106は例えば1個又は複数個の発光ダイオードからなり、MCU100によって点灯/消灯が制御される。
電源部107は例えば電池を電源として、子機10の内部回路に動作に必要な電力を供給する。
MCU100は、組み込みのプログラムを実行することによって、子機10の全体的な制御を行う。MCU100は、予め設定されたサンプリング間隔でスリープモードから起動し、測定部101によって測定された測定データを記憶部102に記憶させる。またMCU100は、上記のサンプリング間隔よりも長い送信間隔(例えば数秒から数分の間隔)が経過するごとに、記憶部102に記憶された測定データを無線通信部103から無線送信させる。MCU100は、測定部101にデータを測定させる期間と、無線通信部103に測定データを無線送信させる期間とを除いては、子機10の状態をスリープ状態として、子機10の消費電力を低減している。
親機20は、図3に示すように、MCU200と、記憶部201と、無線通信部202と、アンテナ203と、有線通信部204と、操作部205と、表示部206と、電源部207とを備えている。
MCU200は、組込みのプログラムを実行することによって、親機20の全体的な制御を行う。
記憶部201は、例えばEEPROMやフラッシュメモリのような電気的に書き換え可能な不揮発性メモリで構成されている。記憶部201は、MCU200によってデータの書き込み及び読み出しが行われる。記憶部201は、親機20に割り当てられた識別情報(例えばアドレスやノード番号)や、子機10から収集した測定データや、通信経路の情報などを記憶する。
無線通信部202は例えば特定小電力無線の通信方式に適合した無線モジュールからなり、アンテナ203を介して無線信号の送信又は受信を行う。また、無線通信部202は、受信信号の受信信号強度を測定する機能も備える。
有線通信部204は、例えばサーバ(図示せず)に通信線を介して接続されており、子機10から収集したデータを有線通信方式でサーバに送信する。
操作部205は、例えば親機20の動作設定を行うために使用される。また、操作部205は、候補ノードの数の上限などを設定するためにも使用される。
表示部206は例えば1個又は複数個の発光ダイオードからなり、MCU200によって点灯/消灯が制御される。
電源部207は、例えば商用電源のような外部電源から電力の供給を受け、親機20の内部回路に動作に必要な電力を供給する。
中継機30は、図4に示すように、MCU300と、記憶部301と、無線通信部302と、アンテナ303と、操作部304と、表示部305と、電源部306と、有線通信部307とを備える。この中継機30は、子機10と親機20との間の無線通信を中継する機能を有している。
MCU300は、組込みのプログラムを実行することによって、中継機30の全体的な制御を行う。
記憶部301は、例えばEEPROMやフラッシュメモリのような電気的に書き換え可能な不揮発性メモリで構成されている。記憶部301は、MCU300によってデータの書き込み及び読み出しが行われる。記憶部301は、自機に割り当てられた識別情報(例えばアドレスやノード番号)や、無線通信部302が受信したデータや、無線通信部302が過去に送信したデータや、送信先ノードの情報や、候補ノードの情報や、通信経路の情報などを記憶する。
無線通信部302は例えば特定小電力無線の通信方式に適合した無線モジュールからなり、アンテナ303を介して無線信号の送信又は受信を行う。また、無線通信部302は、受信信号の受信信号強度を測定する機能も備える。
有線通信部307は、例えば設定器(図示せず)などの機器に通信線を介して接続され、有線通信方式で通信を行う。
操作部304は、例えば中継機30の動作設定を行うために使用される。また、操作部304は、候補ノードの数の上限などを設定するためにも使用される。
表示部305は例えば1個又は複数個の発光ダイオードからなり、MCU300によって点灯/消灯が制御される。
電源部306は例えば電池を電源として、中継機30の内部回路に動作に必要な電力を供給する。中継機30は電池を電源としているので、中継機30を自由な場所に設置して使用することができる。なお、電源部306は、商用電源などの外部電源から電力の供給を受けて、中継機30の内部回路に動作に必要な電力を供給してもよい。
次に、この無線通信システムにおいて、送信元の子機10と送信先の親機20との間の通信経路が確立されていない状態で、子機10から親機20へデータ(例えば測定データなど)を送信する通信手順について図1、図5、及び図6を参照して説明する。なお、子機10と、親機20と、複数台の中継機30とには、それぞれ別個のノード番号が割り当てられており、以下では複数台の中継機30を区別して説明するために、ノード番号を使用して説明する。例えば、ノード番号が「2」の中継機30は2番の中継機30と表記し、ノード番号が「11」の子機10は11番の子機10と表記する。また、図1及び図5〜図11における矢印線はノード間でのデータの伝送処理を示し、実線の矢印線はデータの送信処理を、点線の矢印線はACKの送信処理を示している。
子機10から親機20までデータを送信する通信経路が確立されていない状態で、子機10が測定データを1回目に送信する場合の通信手順について図1を参照して説明する。本実施形態の無線通信システムでは、子機10及び中継機30の各々は、送信先ノードが決定されていない状態ではデータをブロードキャストで送信し、送信先ノードが決定されると送信先ノードに対してユニキャストでデータを送信する。
子機10のMCU100は、予め設定された送信間隔が経過するごとにスリープモードから起動し、記憶部102から送信対象の測定データ(例えば、前回のデータ送信後に測定部101で測定された測定データ)を読み出す。MCU100は、測定データとシーケンス番号とを格納し、宛先アドレスをブロードキャスト用に割り当てた番号(以下、ブロードキャスト番号という)、送信元アドレス及びデータ元アドレスを自機のノード番号とした送信データを作成する。なお、シーケンス番号は、子機10から送信される送信データに割り付けられた個別の番号であり、このシーケンス番号を用いて送信データを識別することができる。そして、MCU100は、作成した送信データを、無線通信部103からブロードキャストで送信させる(図1の処理T1)。
図1の例では、子機10の通信圏内にノード番号が4番、5番、6番の3台の中継機30が存在し、子機10から送信されたデータは、4番、5番、6番の中継機30の無線通信部302で受信される。4番、5番、6番の中継機30のMCU300は、無線通信部302が受信したデータから、測定データとシーケンス番号と宛先アドレスと送信元アドレスとデータ元アドレスを取り出す。本実施形態では、各中継機30のMCU300は、データを受信した場合にACK(acknowledgement:肯定応答)を送信するまでの返送時間をランダムな時間に設定している。図1の例では、4番の中継機30の返送時間が、5番及び6番の中継機30の返送時間よりも短い時間となっている。そのため、4番の中継機30のMCU300が、5番及び6番の中継機30よりも早く、返送時間の経過後に無線通信部302を制御し、送信元の子機10に宛ててACKを送信させる(図1の処理T2)。子機10のMCU100は、データを送信した後に、上位ノードから送信されてきたACKを受信すると、所定時間の経過後にスリープモードに切り替わり、消費電力の低減を図る。
4番の中継機30の通信圏内には5番、6番の中継機30と子機10とが存在し、4番の中継機30が送信したACKは、子機10だけでなく、5番及び6番の中継機30の無線通信部302によっても受信される。5番及び6番の中継機30のMCU300は、4番の中継機30から送信されたACKに含まれるデータ元アドレス、シーケンス番号などに基づいて、子機10の送信したデータに対するACKを4番の中継機30が送信したと判断する。すなわち、5番及び6番の中継機30のMCU300は、子機10からの送信データに対して、自機がACKを送信する前に、他の中継機30からACKが送信されたと判断し、子機10へのACKの送信を行わず、データの中継送信も行わない。すなわち、中継機30は、他のノードからブロードキャストで送信されたデータを受信した場合、このデータに対するACKを送信する前に、同一のデータに対するACKを他の中継機30が送信すれば、このデータに対するACKを送信しなくてもよい。ブロードキャスト送信されたデータを受信した全ての中継機30のうち、最初にACKを送信した中継機30以外はACKの送信を行わないから、ACKの送信回数が減少し、送信データの衝突が起こりにくくなる。
4番の中継機30のMCU300は、子機10からの送信データから、測定データとシーケンス番号と宛先アドレスと送信元アドレスとデータ元アドレスを取り出す。4番の中継機30のMCU300は、送信データから取り出した測定データとシーケンス番号を含め、宛先アドレスをブロードキャスト番号、送信元アドレスを自機のノード番号、データ元アドレスを子機10のノード番号とした送信データを作成する。そして、4番の中継機30のMCU300は、データの受信時からウェイト時間が経過した時点で、この送信データを無線通信部302からブロードキャストで送信させる(図1の処理T3)。
図1の例では、4番の中継機30の通信圏内に2番、3番、5番、6番の中継機30と子機10とが存在し、4番の中継機30からブロードキャストで送信されたデータは、2番、3番、5番、6番の中継機30の無線通信部302によって受信される。子機10は、データ送信後にACKを受信するとスリープモードに切り替わっているので、4番の中継機30から送信されたデータは子機10では受信されない。なお、中継機30がデータを受信してから受信したデータを中継送信するまでのウェイト時間は、中継機30がACKを送信するまでの返送時間(中継機30ごとにランダムな時間)の最大値よりも長い時間に設定されていてもよい。このようにウェイト時間が設定されていれば、子機10からのデータを受信した全ての中継機30がACKを送信する場合でも、最初にACKを送信した中継機30が上位ノードに中継送信するデータが、他の中継機30から送信されるACKと衝突しにくくなる。
2番、3番、5番、6番の中継機30の無線通信部302が、4番の中継機30からの送信データを受信すると、これらの中継機30のMCU300は受信したデータから測定データとシーケンス番号と宛先アドレスと送信元アドレスとデータ元アドレスを取り出す。上述のように、各中継機30がACKを送信するまでの返送時間はランダムな時間に設定されており、図1の例では、3番の中継機30の返送時間が、2番、5番、6番の中継機30の返送時間よりも短い時間となっている。そのため、3番の中継機30のMCU300が、2番、5番、6番の中継機30よりも早く、返送時間の経過後に無線通信部302を制御して送信元の4番の中継機30に宛ててACKを送信する(図1の処理T4)。
3番の中継機30から4番の中継機30へ送信されたACKは、2番、5番、6番の中継機30の無線通信部302によっても受信される。2番、5番、6番の中継機30のMCU300は、4番の中継機30からの送信データに対するACKを別の中継機(この場合は3番の中継機30)が送信しているので、データの中継送信を行わず、ACKの送信も行わない。
3番の中継機30のMCU300は、4番の中継機30からの送信データから、測定データとシーケンス番号と宛先アドレスと送信元アドレスとデータ元アドレスを取り出す。3番の中継機30のMCU300は、送信データから取り出した測定データとシーケンス番号を含め、宛先アドレスをブロードキャスト番号、送信元アドレスを自機のノード番号、データ元アドレスを子機10のノード番号とした送信データを作成する。そして、3番の中継機30のMCU300は、データの受信時からウェイト時間が経過した時点で、この送信データを無線通信部302からブロードキャストで送信させる(図1の処理T5)。
図1の例では、3番の中継機30の通信圏内に2番、4番、5番の中継機30が存在し、3番の中継機30からブロードキャストで送信されたデータは、2番、4番、5番の中継機30の無線通信部302によって受信される。2番、4番、5番の中継機30では、無線通信部302が3番の中継機30からの送信データを受信すると、MCU300が無線通信部302の受信したデータから測定データとシーケンス番号と宛先アドレスと送信元アドレスとデータ元アドレスを取り出す。
4番の中継機30のMCU300は、データ元アドレスとシーケンス番号とをもとに、自機が以前に送信したデータと判断し、ACKの送信は行わない。本実施形態では、各中継機30のMCU300は、無線通信部302が他のノードからの送信データを受信した場合、送信データに含まれるデータ元アドレスとシーケンス番号とから、自機が以前に送信したデータか否かを判断する。なお、各中継機30のMCU300は、送信データに含まれるデータ元アドレス、シーケンス番号、データ(測定データなど)のうちの複数の項目から、自機が以前に送信したデータか否かを判断してもよい。
2番及び5番の中継機30のMCU300は、それぞれ、データを受信してから返送時間が経過した時点で、無線通信部302を制御して送信元の3番の中継機30に宛ててACKを送信する。図1の例では、2番の中継機30の返送時間が、5番の中継機30の返送時間よりも短い時間となっている。そのため、2番の中継機30のMCU300が、5番の中継機30よりも早く、返送時間の経過後に無線通信部302を制御し、送信元の3番の中継機30に宛ててACKを送信させる(図1の処理T6)。2番の中継機30から3番の中継機30に送信されたACKは5番の中継機30によっても受信される。5番の中継機30のMCU300は、自機が受信したデータに対するACKが、他の中継機(この場合は2番の中継機30)から送信されていると判断し、ACKの送信を行わず、データの中継処理も行わない。
また2番の中継機30のMCU300は、送信データから取り出した測定データとシーケンス番号を含め、宛先アドレスをブロードキャスト番号、送信元アドレスを自機のノード番号、データ元アドレスを子機10のノード番号とした送信データを作成する。そして、2番の中継機30のMCU300は、データの受信時からウェイト時間が経過した時点で、この送信データを無線通信部302からブロードキャストで送信させる(図1の処理T7)。
図1の例では、2番の中継機30の通信圏内に1番及び3番の中継機30が存在し、2番の中継機30からブロードキャストで送信されたデータは、1番及び3番の中継機30の無線通信部302によって受信される。1番の中継機30の無線通信部302が、2番の中継機30からの送信データを受信すると、1番の中継機30のMCU300は、受信したデータから測定データとシーケンス番号と宛先アドレスと送信元アドレスとデータ元アドレスを取り出す。1番の中継機30のMCU300は、データを受信してから返送時間が経過した時点で、無線通信部302を制御して送信元の2番の中継機30に宛ててACKを送信する(図1の処理T8)。なお、2番の中継機30から送信されたデータは3番の中継機30によっても受信されるが、3番の中継機30は、自機が送信したデータであると判断し、ACKの送信やデータの中継処理は行わない。
また、1番の中継機30のMCU300は、2番の中継機30からの送信データから測定データとシーケンス番号と宛先アドレスと送信元アドレスとデータ元アドレスを取り出す。1番の中継機30のMCU300は、送信データから取り出した測定データとシーケンス番号を含め、宛先アドレスをブロードキャスト番号、送信元アドレスを自機のノード番号、データ元アドレスを子機10のノード番号とした送信データを作成する。そして、1番の中継機30のMCU300は、データの受信時からウェイト時間が経過した時点で、この送信データを無線通信部302からブロードキャストで送信させる(図1の処理T9)。
図1の例では、1番の中継機30の通信圏内に親機20が存在し、1番の中継機30からブロードキャストで送信されたデータは、親機20に受信される。
親機20の無線通信部202が、1番の中継機30からの送信データを受信すると、親機20のMCU200は、受信したデータから測定データとシーケンス番号と宛先アドレスと送信元アドレスとデータ元アドレスを取り出す。親機20のMCU200は、受信した測定データとデータ元アドレスを対応付けて記憶部201に記憶させる。
また、親機20のMCU200は、1番の中継機30から送信データを受信すると、返送時間を設けずに、送信元である1番の中継機30に最終宛先情報を付加したACKを送信する(図1の処理T10)。最終宛先情報は、子機10からの最終的な送信先である親機20と通信可能なことを示す情報である。本実施形態では、最終宛先情報を親機20までのホップ数としており、1番の中継機30に対しては親機20までのホップ数、すなわちデータの「1」を付加したACKが送信される。なお、上述した処理T2、T4、T6、T8で1〜4番の中継機30がACKを送信する場合、その時点では1〜4番の中継機30はホップ数の情報を受信していないので、1〜4番の中継機30から送信されるACKにはホップ数の情報が付加されていない。換言すれば、処理T2、T4、T6、T8で各中継機30から送信されるACKには、ホップ数がゼロであることを示すデータが付加されている。
1番の中継機30は、親機20からホップ数(最終宛先情報)が付加されたACKを受信すると、データの送信先である親機20と直接通信可能であると判断し、送信先ノードを親機20に決定する。1番の中継機30は、以後、データを送信する際は親機20にユニキャストでデータを送信する。
次に、子機10が測定データを2回目に送信する場合の通信手順について図5を参照して説明する。なお、図1を参照して説明した1回目の通信手順と同様の通信手順については、簡略な説明とする。
前回のデータ送信時から送信間隔が経過すると、子機10は、スリープモードから起動し、測定データとシーケンス番号とを格納した送信データを、ブロードキャストで送信させる(図5の処理T11)。
図5の例では、4番、5番、6番の中継機30が子機10から送信されたデータを受信する。ここで、4番の中継機30が送信元の子機10に宛てて最初にACKを送信すると(図5の処理T12)、このACKを受信した子機10はスリープモードに戻り、消費電力を抑制する。また、4番の中継機30から送信されたACKは5番及び6番の中継機30によっても受信される。5番及び6番の中継機30は、子機10から送信されたデータを受信した後に、このデータに対するACKが他の中継機30(この場合は、4番の中継機30)から送信されるのを受信すると、ACKの送信を行わず、データの中継送信も行わない。
4番の中継機30は、子機10から送信されたデータに対してACKを最初に送信すると、データの受信時からウェイト時間が経過した時点で、送信データをブロードキャストで送信させる(図5の処理T13)。
4番の中継機30からブロードキャストで送信されたデータは2番、3番、5番、6番の中継機30によって受信される。2番、3番、5番、6番の中継機30は、それぞれ、ランダムな返送時間が経過した後にACKを送信するのであるが、図5の例では、3番の中継機30から、送信元の4番の中継機30に最初にACKが送信される(図5の処理T14)。3番の中継機30から送信されたACKは2番、5番、6番の中継機30によっても受信され、2番、5番、6番の中継機30は、ACKの送信を取りやめ、データの中継送信も行わない。
3番の中継機30が、4番の中継機30から送信されたデータに対してACKを最初に送信すると、データの受信時からウェイト時間が経過した時点で、送信データをブロードキャストで送信させる(図5の処理T15)。
図5の例では、3番の中継機30の通信圏内に2番、4番、5番の中継機30が存在し、3番の中継機30からブロードキャストで送信されたデータは、2番、4番、5番の中継機30の無線通信部302によって受信される。2番、4番、5番の中継機30では、無線通信部302が3番の中継機30からの送信データを受信すると、MCU300が、無線通信部302の受信したデータから測定データとシーケンス番号と宛先アドレスと送信元アドレスとデータ元アドレスを取り出す。
4番の中継機30のMCU300は、データ元アドレスとシーケンス番号とをもとに、3番の中継機30から送信されたデータが、自機が以前に送信したデータであると判断し、ACKの送信を行わず、データの中継送信も行わない。
2番及び5番の中継機30のMCU300は、それぞれ、データを受信してから返送時間が経過した時点で、無線通信部302を制御して送信元の3番の中継機30に宛ててACKを送信する。図5の例では、2番の中継機30の返送時間が、5番の中継機30の返送時間よりも短い時間となっている。そのため、2番の中継機30のMCU300が、5番の中継機30よりも早く、返送時間の経過後に無線通信部302を制御し、送信元の3番の中継機30に宛ててACKを送信させる(図5の処理T16)。2番の中継機30から3番の中継機30に送信されたACKは5番の中継機30によっても受信される。5番の中継機30のMCU300は、自機が受信したデータに対するACKが、他の中継機(この場合は2番の中継機30)から送信されていると判断し、ACKの送信を行わず、データの中継処理も行わない。
また2番の中継機30のMCU300は、送信データから取り出した測定データとシーケンス番号を含め、宛先アドレスをブロードキャスト番号、送信元アドレスを自機のノード番号、データ元アドレスを11番の子機10のノード番号とした送信データを作成する。そして、2番の中継機30のMCU300は、データの受信時からウェイト時間が経過した時点で、この送信データを無線通信部302からブロードキャストで送信させる(図5の処理T17)。
2番の中継機30から送信されたデータは1番の中継機30によって受信され、1番の中継機30から、送信元の2番の中継機30にACKが送信される(図5の処理T18)。ここで、1番の中継機30は、ホップ数の情報(最終宛先情報)を保持しているので、次段のホップ数の情報、すなわち自機のホップ数「1」に1を加えたホップ数「2」の情報を付加したACKを、送信元の2番の中継機30に送信する。2番の中継機30は、1番の中継機30から送信されたACKに付加されているホップ数の情報(最終宛先情報)を取得すると、このホップ数の情報をもとに、自機から親機20までのホップ数を「2」とする。また、2番の中継機30は、送信先ノードを1番の中継機30に決定し、以後、データを送信する際は1番の中継機30にユニキャストでデータを送信する。なお、2番の中継機30から送信されたデータは3番の中継機30によっても受信されるが、3番の中継機30は、自機が送信したデータであると判断し、ACKの送信やデータの中継処理は行わない。
1番の中継機30は、2番の中継機30から送信されたデータに対してACKを最初に送信すると、データの受信時からウェイト時間が経過した時点で、送信データを親機20にユニキャストで送信させる(図5の処理T19)。
親機20は、1番の中継機30からユニキャストで送信されたデータを受信すると、返送時間を設けずに、送信元である1番の中継機30にホップ数の情報(最終宛先情報)を付加したACKを送信する(図5の処理T20)。
このように、子機10から4番の中継機30と3番の中継機30と2番の中継機30と1番の中継機30とを経由して親機20に2回目のデータが送信されると、1番の中継機30から2番の中継機30にホップ数の情報(最終宛先情報)が伝達される。これにより、2番の中継機30は、1番の中継機30から受信したホップ数の情報に基づいて、1番の中継機30を送信先ノードに決定する。そして、以後の通信では、1番及び2番の中継機30は、それぞれ、送信先ノードに対してユニキャストでデータを送信する。
次に、子機10が測定データを3回目に送信する場合の通信手順について図6を参照して説明する。なお、上述した1回目及び2回目のデータ送信時の通信手順と共通する通信手順については、説明を簡略化する。
前回のデータ送信時から送信間隔が経過すると、子機10は、スリープモードから起動し、測定データとシーケンス番号とを格納した送信データを、ブロードキャストで送信させる(図6の処理T21)。
図6の例では、4番、5番、6番の中継機30が子機10から送信されたデータを受信する。ここで、4番の中継機30が送信元の子機10に宛てて最初にACKを送信すると(図6の処理T22)、このACKを受信した子機10はスリープモードに戻り、消費電力を抑制する。また、4番の中継機30から送信されたACKは5番及び6番の中継機30によっても受信される。5番及び6番の中継機30は、子機10から送信されたデータを受信した後に、このデータに対するACKが他の中継機30(この場合は、4番の中継機30)から送信されるのを受信すると、ACKの送信を行わず、データの中継送信も行わない。
4番の中継機30は、子機10から送信されたデータに対してACKを最初に送信すると、データの受信時からウェイト時間が経過した時点で、送信データをブロードキャストで送信させる(図6の処理T23)。
4番の中継機30からブロードキャストで送信されたデータは2番、3番、5番、6番の中継機30によって受信される。2番、3番、5番、6番の中継機30は、それぞれ、ランダムな返送時間が経過した後にACKを送信するのであるが、図6の例では、3番の中継機30から、送信元の4番の中継機30に最初にACKが送信される(図6の処理T24)。3番の中継機30から送信されたACKは2番、5番、6番の中継機30によっても受信され、2番、5番、6番の中継機30は、ACKの送信を取りやめ、データの中継送信も行わない。
3番の中継機30が、4番の中継機30から送信されたデータに対してACKを最初に送信すると、データの受信時からウェイト時間が経過した時点で、送信データをブロードキャストで送信させる(図6の処理T25)。
図6の例では、3番の中継機30の通信圏内に2番、4番、5番の中継機30が存在し、3番の中継機30からブロードキャストで送信されたデータは、2番、4番、5番の中継機30の無線通信部302によって受信される。2番、4番、5番の中継機30では、無線通信部302が3番の中継機30からの送信データを受信すると、MCU300が、無線通信部302の受信したデータから測定データとシーケンス番号と宛先アドレスと送信元アドレスとデータ元アドレスを取り出す。
4番の中継機30のMCU300は、データ元アドレスとシーケンス番号とをもとに、3番の中継機30から送信されたデータが、自機が以前に送信したデータであると判断し、ACKの送信を行わず、データの中継送信も行わない。
2番及び5番の中継機30のMCU300は、それぞれ、データを受信してから返送時間が経過した時点で、無線通信部302を制御して送信元の3番の中継機30に宛ててACKを送信する。図6の例では、2番の中継機30の返送時間が、5番の中継機30の返送時間よりも短い時間となっている。そのため、2番の中継機30のMCU300が、5番の中継機30よりも早く、返送時間の経過後に無線通信部302を制御し、送信元の3番の中継機30に宛ててACKを送信させる(図6の処理T26)。ここで、2番の中継機30は、ホップ数の情報(最終宛先情報)を保持しているので、次段のホップ数の情報、すなわち自機のホップ数「2」に1を加えたホップ数「3」の情報(最終宛先情報)を付加したACKを、送信元の3番の中継機30に送信する。3番の中継機30は、2番の中継機30からのACKに付加されたホップ数の情報(最終宛先情報)を取得すると、このホップ数の情報をもとに、自機から親機20までのホップ数を「3」とする。また、3番の中継機30は、送信先ノードを2番の中継機30に決定し、以後、データを送信する際は2番の中継機30にユニキャストでデータを送信する。
また、2番の中継機30から3番の中継機30に送信されたACKは5番の中継機30によっても受信される。5番の中継機30のMCU300は、自機が受信したデータに対するACKが、他の中継機(この場合は2番の中継機30)から送信されていると判断し、ACKの送信を行わず、データの中継処理も行わない。
2番の中継機30が、3番の中継機30から送信されたデータに対してACKを最初に送信すると、データの受信時からウェイト時間が経過した時点で、1番の中継機30に送信データをユニキャストで送信する(図6の処理T27)。
2番の中継機30からユニキャストで送信されたデータが1番の中継機30によって受信されると、1番の中継機30から、送信元の2番の中継機30に、ホップ数の情報(最終宛先情報)を付加したACKが送信される(図6の処理T28)。
1番の中継機30は、データの受信時からウェイト時間が経過した時点で、送信データを親機20にユニキャストで送信する(図6の処理T29)。
親機20は、1番の中継機30からユニキャストで送信されたデータを受信すると、返送時間を設けずに、送信元である1番の中継機30にホップ数の情報(最終宛先情報)を付加したACKを送信する(図6の処理T30)。
このように、子機10から4番の中継機30と3番の中継機30と2番の中継機30と1番の中継機30とを経由して親機20に3回目のデータが送信されると、2番の中継機30から3番の中継機30にホップ数の情報(最終宛先情報)が送信される。これにより、3番の中継機30は、2番の中継機30から受信したホップ数の情報に基づいて、2番の中継機30を送信先ノードに決定する。そして、以後の通信では、1〜3番の中継機30は、それぞれ、送信先ノードに対してユニキャストでデータを送信する。
次に、子機10が測定データを4回目に送信する場合の通信手順について図7を参照して説明する。なお、上述した1〜3回目のデータ送信時の通信手順と共通する通信手順については、説明を簡略化する。
前回のデータ送信時から送信間隔が経過すると、子機10は、スリープモードから起動し、測定データとシーケンス番号とを格納した送信データを、ブロードキャストで送信させる(図7の処理T31)。
図7の例では、4番、5番、6番の中継機30が子機10から送信されたデータを受信する。ここで、4番の中継機30が送信元の子機10に宛てて最初にACKを送信すると(図7の処理T32)、このACKを受信した子機10はスリープモードに戻り、消費電力を抑制する。また、4番の中継機30から送信されたACKは5番及び6番の中継機30によっても受信される。5番及び6番の中継機30は、子機10から送信されたデータを受信した後に、このデータに対するACKが他の中継機30(この場合は、4番の中継機30)から送信されるのを受信すると、ACKの送信を行わず、データの中継送信も行わない。
4番の中継機30は、子機10から送信されたデータに対してACKを最初に送信すると、データの受信時からウェイト時間が経過した時点で、送信データをブロードキャストで送信させる(図7の処理T33)。
4番の中継機30からブロードキャストで送信されたデータは2番、3番、5番、6番の中継機30によって受信される。2番、3番、5番、6番の中継機30は、それぞれ、ランダムな返送時間が経過した後にACKを送信するのであるが、図7の例では、3番の中継機30から、送信元の4番の中継機30に最初にACKが送信される(図7の処理T34)。ここで、3番の中継機30は、ホップ数の情報(最終宛先情報)を保持しているので、次段のホップ数の情報、すなわち自機のホップ数「3」に1を加えたホップ数「4」の情報(最終宛先情報)を付加したACKを、送信元の4番の中継機30に送信する。4番の中継機30は、3番の中継機30から送信されたACKに付加されたホップ数の情報を取得すると、このホップ数の情報をもとに、自機から親機20までのホップ数を「4」とする。また、4番の中継機30は、送信先ノードを3番の中継機30に決定し、以後、データを送信する際は3番の中継機30にユニキャストでデータを送信する。
3番の中継機30から送信されたACKは2番、5番、6番の中継機30によっても受信され、2番、5番、6番の中継機30は、ACKの送信を取りやめ、データの中継送信も行わない。
また、3番の中継機30は、4番の中継機30から送信されたデータに対してACKを最初に送信すると、データの受信時からウェイト時間が経過した時点で、送信先ノードである2番の中継機30に送信データをユニキャストで送信させる(図7の処理T35)。
3番の中継機30からユニキャストで送信されたデータが2番の中継機30によって受信されると、2番の中継機30は、返送時間の経過後に、送信元の3番の中継機30に宛ててホップ数の情報(最終宛先情報)を付加したACKを送信する(図7の処理T36)。
2番の中継機30は、データの受信時からウェイト時間が経過した時点で、送信データを1番の中継機30にユニキャストで送信する(図7の処理T37)。
2番の中継機30からユニキャストで送信されたデータが1番の中継機30によって受信されると、1番の中継機30は、返送時間の経過後に、送信元の2番の中継機30に宛ててホップ数の情報(最終宛先情報)を付加したACKを送信する(図7の処理T38)。
1番の中継機30は、データの受信時からウェイト時間が経過した時点で、送信データを親機20にユニキャストで送信する(図7の処理T39)。
親機20は、1番の中継機30からユニキャストで送信されたデータを受信すると、返送時間を設けずに、送信元である1番の中継機30にホップ数の情報(最終宛先情報)を付加したACKを送信する(図7の処理T40)。
このように、子機10から4番の中継機30と3番の中継機30と2番の中継機30と1番の中継機30とを経由して親機20に4回目のデータが送信されると、3番の中継機30から4番の中継機30にホップ数の情報(最終宛先情報)が送信される。これにより、4番の中継機30は、3番の中継機30から受信したホップ数の情報(最終宛先情報)に基づいて、3番の中継機30を送信先ノードに決定する。そして、以後の通信では、1〜4番の中継機30は、それぞれ、送信先ノードに対してユニキャストでデータを送信する。
その後、前回のデータ送信時から送信間隔が経過して、子機10から送信データがブロードキャストで送信された場合に、この送信データに対するACKが4番の中継機30から送信されると、子機10にホップ数の情報が付加されたACKが送信される。これにより、子機10は、送信先ノードを4番の中継機30と決定し、以後のデータ送信では4番の中継機30にユニキャストでデータを送信する。
ところで、本実施形態では、各中継機30は、送信先ノードを決めた後で、他の中継機30宛てに送信されたACKに付加されているホップ数の情報をもとに、よりホップ数が少なくなる中継機30を検出すると、この中継機30に送信先ノードを変更する。この中継機30の動作を図8に基づいて説明する。図8において、図7と同一の通信処理には同一の符号を付している。
図7を参照して説明した子機10から親機20への4回目のデータ送信において、3番の中継機30が2番の中継機30に送信データを送信すると(処理T35)、2番の中継機30は送信元の3番の中継機30にACKを送信する(処理T36)。ここで、図8に示すように、2番の中継機30から送信されたACKが4番の中継機30によって受信されると、4番の中継機30のMCU300は、このACKが、自機が以前に送信したデータに対するACKか否かを判断する。2番の中継機30から受信したACKが、自機が以前に送信したデータに対するACKであれば、4番の中継機30のMCU300は、このACKにホップ数の情報(最終宛先情報)が付加されているか否かを判断する。2番の中継機30から受信したACK(第2ACK)にホップ数の情報が付加されている場合、4番の中継機30のMCU300は、このホップ数「3」をもとに、送信先ノードを2番の中継機30(第2の上位ノード)とした場合の第2ホップ数「3」を求める。4番の中継機30のMCU300は、以前の通信(処理T34)で受信した3番の中継機30からのACK(第1ACK)にホップ数が付加されていることから、送信先ノードを3番の中継機30に決定している。また4番の中継機30のMCU300は、第1ACKに付加されたホップ数の情報をもとに、送信先ノードを3番の中継機30(第1の上位ノード)とした場合の第1ホップ数「4」を求めている。4番の中継機30のMCU300は、送信先ノードを3番の中継機30とした場合の第1ホップ数「4」と、送信先ノードを2番の中継機30とした場合の第2ホップ数「3」との大小を比較する。ここで、送信先ノードを2番の中継機30とした場合の方が、送信先ノードを3番の中継機30とした場合よりもホップ数が少なくなるので、4番の中継機30のMCU300は、送信先ノードを3番の中継機30から2番の中継機30に変更する。また、4番の中継機30のMCU300は、送信先ノードを3番の中継機30から2番の中継機30に変更すると、変更前の送信先ノードである3番の中継機30を送信先の候補ノードとして記憶部301に保存する。なお、送信先ノードを2番の中継機30とした場合の方が、送信先ノードを3番の中継機30とした場合よりも、ホップ数が多くなる場合、4番の中継機30のMCU300は送信先ノードを3番の中継機30から変更しない。
このようにして、4番の中継機30のMCU300が送信先ノードを2番の中継機30に変更すると、次回のデータ送信時には、図9に示すように、4番の中継機30から2番の中継機30にユニキャストでデータが送信されることになる(図9の処理T51)。この場合、2番の中継機30から1番の中継機30にユニキャストでデータが送信された後(図9の処理T51)、1番の中継機30から親機20にユニキャストでデータを送信される(図9の処理T52)。
ところで、図8の例では、4番の中継機30は、送信先ノードが決まっていない状態で、送信先ノードを、一旦、3番の中継機30に決めた後に、2番の中継機30に変更しているが、送信先ノードが決まっている状態で同様の処理を行ってもよい。
図10に示すように、子機10から親機20までの通信経路が、子機10→4番の中継機30→3番の中継機30→2番の中継機30→1番の中継機30→親機20のように決定された場合について説明する。
前回のデータ送信時から送信間隔が経過すると、子機10は、スリープモードから起動し、4番の中継機30にユニキャストで送信データを送信する(図10の処理T61)。
4番の中継機30は、子機10から送信データを受信すると、ホップ数の情報(最終宛先情報)を付加したACKを子機10に送信する(図10の処理T62)。子機10は、データ送信後にACKを受信すると、スリープモードに戻り、消費電力を低減する。
4番の中継機30は、データ受信時からウェイト時間が経過した時点で、送信先ノードである3番の中継機30にユニキャストで送信データを送信する(図10の処理T63)。
3番の中継機30は、4番の中継機30から送信データを受信すると、ホップ数の情報(最終宛先情報)を付加したACKを4番の中継機30に送信する(図10の処理T64)。また、3番の中継機30は、データ受信時からウェイト時間が経過した時点で、送信先ノードである2番の中継機30にユニキャストで送信データを送信する(図10の処理T65)。
2番の中継機30は、3番の中継機30から送信データを受信すると、ホップ数の情報(最終宛先情報)を付加したACKを3番の中継機30に送信する(図10の処理T66)。また、2番の中継機30は、データ受信時からウェイト時間が経過した時点で、送信先ノードである1番の中継機30にユニキャストで送信データを送信する(図10の処理T67)。
1番の中継機30は、2番の中継機30から送信データを受信すると、ホップ数の情報(最終宛先情報)を付加したACKを2番の中継機30に送信する(図10の処理T68)。また、1番の中継機30は、データ受信時からウェイト時間が経過した時点で、送信先ノードである親機20にユニキャストで送信データを送信する(図10の処理T69)。
親機20は、1番の中継機30からの送信データを受信すると、送信元の1番の中継機30にACKを送信しており(図10の処理T70)、これによって子機10から親機20への1回のデータ送信が完了する。
ここで、処理T66で2番の中継機30から送信されたACKが4番の中継機30によって受信された場合について説明する。4番の中継機30では、無線通信部302が2番の中継機30から送信されたACKを受信すると、MCU300はこのACKに含まれるデータ元アドレスやシーケンス番号をもとに、自機が以前に送信したデータに対するACKであるか否かを判断する。2番の中継機30から受信したACKが、自機が以前に送信したデータに対するACKであれば、4番の中継機30のMCU300は、このACKにホップ数の情報(最終宛先情報)が付加されているか否かを判断する。このACKにホップ数の情報が付加されていれば、4番の中継機30のMCU300は、ACKに付加されたホップ数の情報「3」をもとに、送信先ノードを2番の中継機30(第2の上位ノード)とした場合の第2ホップ数「3」を求める。4番の中継機30は、決定済みの通信経路では3番の中継機30(第1の上位ノード)を送信先ノードとしており、この場合の第1ホップ数は「4」となっている。4番の中継機30は、第1ホップ数「4」と、2番の中継機30を送信先ノードとした場合の第2ホップ数「3」との大小を比較する。ここで、送信先ノードを2番の中継機30とした場合の方が、送信先ノードを3番の中継機30とした場合よりもホップ数が少なくなるので、4番の中継機30のMCU300は、送信先ノードを3番の中継機30から2番の中継機30に変更する。また、4番の中継機30のMCU300は、送信先ノードを3番の中継機30から2番の中継機30に変更すると、変更前の送信先ノードである3番の中継機30を送信先の候補ノードとして記憶部301に保存する。なお、送信先ノードを2番の中継機30とした場合の方が、送信先ノードを3番の中継機30とした場合よりも、ホップ数が多くなる場合、4番の中継機30のMCU300は送信先ノードを3番の中継機30から変更しない。
次に、次回のデータ送信時での通信手順について図11を参照して説明する。前回のデータ送信時から送信間隔が経過すると、子機10は、スリープモードから起動し、4番の中継機30にユニキャストで送信データを送信する(図11の処理T71)。
4番の中継機30は、子機10から送信データを受信すると、自機のホップ数「3」に1を加えた次段のホップ数の情報「4」をACKに付加して、子機10に送信する(図11の処理T72)。子機10は、データ送信後にACKを受信すると、スリープモードに戻り、消費電力を低減する。また4番の中継機30は、データ受信時からウェイト時間が経過した時点で、送信先ノードである2番の中継機30にユニキャストで送信データを送信する(図11の処理T73)。
2番の中継機30は、4番の中継機30から送信データを受信すると、ホップ数の情報(最終宛先情報)を付加したACKを4番の中継機30に送信する(図11の処理T74)。また、2番の中継機30は、データ受信時からウェイト時間が経過した時点で、送信先ノードである1番の中継機30にユニキャストで送信データを送信する(図11の処理T75)。
1番の中継機30は、2番の中継機30から送信データを受信すると、ホップ数の情報(最終宛先情報)を付加したACKを2番の中継機30に送信する(図11の処理T76)。また、1番の中継機30は、データ受信時からウェイト時間が経過した時点で、送信先ノードである親機20にユニキャストで送信データを送信する(図11の処理T77)。
親機20は、1番の中継機30からの送信データを受信すると、送信元の1番の中継機30にACKを送信しており(図11の処理T78)、これによって子機10から親機20への1回のデータ送信が完了する。4番の中継機30が、送信先ノードを3番の中継機30から2番の中継機30に変更することによって、ホップ数が少なくなる。したがって、送信元の子機10から送信先の親機20までデータを送信する間にノード間で行われる通信回数が少なくなり、その結果、送信データの衝突が起こりにくくなる。
ところで、上述の実施形態において、子機10は、データ送信後にACKを受信すると、スリープモードに戻って電池の消耗を抑制しているが、外部電源から電力が供給される場合はスリープモードに戻る必要が無い。その場合、子機10も、中継機30と同様に、第2の上位ノードから他のノード宛てに送信されるACKを受信して、このACKに付加されたホップ数の情報から第2ホップ数を求めても良い。そして、子機10が、送信先ノードを第1の上位ノードとする場合の第1ホップ数と第2ホップ数を比較し、第2ホップ数が第1ホップ数よりも少なければ、送信先ノードを第1の上位ノードから第2の上位ノードに変更してもよい。
以上説明したように、本実施形態の無線通信システムでは、子機10から親機20までデータを送信する通信経路が確立していない状態では、子機10及び中継機30の各々はブロードキャストでデータを送信する。上記の通信経路の少なくとも一部で送信先ノードが決まると、子機10及び中継機30のうち送信先ノードが決まったノードは、送信先ノードへユニキャストでデータを送信する。そして、通信経路における下位ノード(子機10又は中継機30)は、下位ノードが送信したデータに対して第1の上位ノードから下位ノード宛てに送信された第1ACKを受信すると、第1ACKに付加されたホップ数をもとに第1ホップ数を求める。また下位ノードは、第1ACKの受信後に、下位ノードが送信したデータに対して第2の上位ノードから他のノードに宛てて送信された第2ACKを受信すると、第2ACKに付加されたホップ数をもとに第2ホップ数を求める。そして、下位ノードは、第1ホップ数よりも第2ホップ数の方が少なければ、第2の上位ノードを送信先ノードに決定するので、ホップ数がより少なくなるように送信先ノードを設定できる。したがって、子機10から親機20までデータを中継伝送する間の通信回数が減り、送信データが衝突する可能性が減少する。
本実施形態において、親機20は、データ受信時に次段のホップ数を付加したACKを送信元ノードに送信してもよい。また、中継機30は、上位ノードからホップ数が付加されたACKを受信すると、ACKに付加されたホップ数から次段のホップ数を求め、次回のデータ受信時に次段のホップ数を付加したACKを送信元ノードに送信してもよい。このように、子機10と親機20との間で通信が行われるたびに、ホップ数の情報が下位のノードへと伝達されていくから、各々の中継機30に予めホップ数の情報を設定しておく必要が無い。
本実施形態において、下位ノードが送信先ノードを決定していない状態で、下位ノードが、第1の上位ノードを送信先ノードに決定した後に、第1ホップ数よりも第2ホップ数の方が少なくなると、送信先ノードを第2の上位ノードに変更してもよい。下位ノードは、ホップ数がより少なくなるように送信先ノードを設定できるから、子機10から親機20までデータを中継伝送する間の通信回数が減り、送信データが衝突する可能性が減少する。
本実施形態において、下位ノードが送信先ノードを第1の上位ノードに決定している状態で、第2ACKから求められた第2ホップ数の方が第1ホップ数よりも少なくなると、下位のノードが、送信先ノードを第2の上位ノードに変更してもよい。下位ノードは、ホップ数がより少なくなるように送信先ノードを設定できるから、子機10から親機20までデータを中継伝送する間の通信回数が減り、送信データが衝突する可能性が減少する。
また、本実施形態の無線通信システムにおいて、下位ノード(子機10及び中継機30)は、送信先ノードを第1の上位ノードから第2の上位ノードに変更する場合、第1の上位ノードを送信先の候補ノードとしてメモリ(記憶部102,301)に保存してもよい。下位ノードは、メモリに候補ノードとして保存している第1の上位ノードと通信が可能である。したがって、下位ノードは、第2の上位ノードとの通信に失敗した場合に、候補ノードの第1の上位ノードと通信することで、子機10と親機20との間の通信が不能になる可能性を低減できる。
本実施形態において、下位ノードは、送信先ノードを決定している状態で、送信先ノードへのデータ送信に失敗すると、送信先ノードへユニキャストでデータを再送信すればよい。また下位ノードは、送信先ノードへの再送信でもデータ送信に失敗すると、メモリに保存されている候補ノードにユニキャストでデータを送信すればよい。また下位ノードは、候補ノードの全てでデータ送信に失敗すると、ブロードキャストでデータを送信して、通信経路を再構築すればよい。このように、下位ノードは、送信先ノードへのデータ送信に失敗すると、送信先ノード及び候補ノードへのユニキャスト送信を順番に試した後、ブロードキャストでデータを送信しているから、データ送信が行えなくなる可能性を低減できる。なお、候補ノードが複数存在する場合、下位ノードは、例えば、ホップ数の少ない候補ノードから順番にデータをユニキャストで送信してもよいし、受信信号強度が大きい候補ノードから順番にデータをユニキャストで送信してもよい。
本実施形態において、中継機30は、他のノードからブロードキャストで送信されたデータを受信した場合、このデータに対するACKを送信する前に、同一のデータに対するACKを親機20が送信していれば、このデータに対するACKを送信しなくてもよい。他のノードが親機20と通信可能である場合、このノードは親機20を送信先ノードにすればホップ数が最小になるから、中継機30はACKを送信する必要は無い。したがって、中継機30がACKの送信を行わないことで、送信データの衝突が起こりにくくなり、送信データのロスが少なくなる。
また、子機10から親機20までの通信経路が確定すると、子機10及び中継機30の各々は、次に上位ノードへデータを送信する場合に、個々のノードに割り当てられた識別情報(例えばノード番号)をデータに付加して送信してもよい。
子機10は、ホップ数が付加されたACKを受信すると、このACKを送信してきた中継機30を送信先ノードに決定しており、親機20までの通信経路が確定したと判断する。この子機10は、次にデータを送信する際に、自機の識別情報と、中継機30に通信経路を通知させるコマンドとをデータに付加して上位ノードに送信する。このデータを受信した中継機30は、データに付加されたコマンドに応じて、受信したデータに自機の識別情報をさらに付加して上位ノードに送信する。これにより、親機20が受信したデータには、子機10から親機20までの通信経路を構成する各ノードの識別情報が順番に付加されることになる。よって、親機20は、子機10から親機20までの通信経路を把握することができる。