以下、実施の形態について図面を参照して説明する。
まず、図1を参照して、一実施形態に係る電子装置を含む無線通信システム5−1の構成を説明する。無線通信システム5−1は、マスタ装置として機能する1台の電子装置M1と、スレーブ装置として機能するN台の電子装置S1−1,S1−2,……,S1−Nとで構成される。Nは1以上の整数である。以下では、マスタ装置として機能する電子装置をマスタと称し、スレーブ装置として機能する電子装置をスレーブとも称する。
マスタM1と各スレーブS1−1,S1−2,……,S1−Nとは、無線通信を行うための無線通信機能をそれぞれ有する。マスタM1と各スレーブS1−1,S1−2,……,S1−Nとは無線通信機能を用いて、例えばBluetooth(登録商標) Low Energy(BLE)に準拠した無線通信を行う。
マスタM1は無線通信により、各スレーブS1−1,S1−2,……,S1−Nを管理する。マスタM1は、コンピュータ、携帯情報端末、または各種電子装置に内蔵される組み込みシステムとして実現され得る。
各スレーブS1−1,S1−2,……,S1−Nは無線通信により、そのスレーブで取得された情報をマスタM1に提供する。各スレーブS1−1,S1−2,……,S1−Nは、マスタM1によって管理されるべき構成を備える電子装置として実現され得る。このマスタM1によって管理されるべき構成は、例えばアクチュエータ、センサ、プロセッサ、電池モジュール、または発電モジュールである。各スレーブS1−1,S1−2,……,S1−Nは、このような構成に関する様々な情報をマスタM1に送信し得る。
以下では一例として、マスタM1と各スレーブS1−1,S1−2,……,S1−NとがBLEに準拠した無線通信を行う場合について主に説明する。
図2はマスタM1と各スレーブS1−1,S1−2,……,S1−Nの機能構成例を示す。マスタM1は、同期部101、周波数選択送信部102、受信復調部103、パケット衝突検知部104、再設定部105、およびアンテナ106を備える。同期部101、周波数選択送信部102、受信復調部103、パケット衝突検知部104、および再設定部105は、回路のようなハードウェアで、プロセッサによって実行されるソフトウェアで、あるいはそれらの組み合わせで、実現され得る。
同期部101はマスタM1と別の電子装置とを同期させるための処理を行う。この別の電子装置は、各スレーブS1−1,S1−2,……,S1−Nであってもよいし、別の無線通信システム内のマスタであってもよい。同期のための具体的な動作については、図15から図19を参照して後述する。
周波数選択送信部102、受信復調部103、パケット衝突検知部104、および再設定部105は、スレーブS1−Xとのコネクション(接続)が確立した場合、使用する周波数帯(すなわちチャネル)の遷移パターンを通信状況に応じて選択するキャリブレーション処理を行って、他の無線通信システムとの干渉が少ない遷移パターンを選択する。通信状況は、例えば、他の無線通信システムで使用されているチャネルの遷移パターンに応じて変化し得る。周波数選択送信部102は、選択された遷移パターンに従う周波数帯で信号をスレーブS1−Xへ送信する。なお、スレーブS1−Xは、スレーブS1−1,S1−2,……,S1−Nのいずれか1つである。
周波数選択送信部102は、第1乃至第n期間において第1乃至第n周波数帯を用いる第1順番である第1遷移パターンと、第1乃至第n期間において第1乃至第n周波数帯を用いる第1順番とは異なる第2順番である第2遷移パターンと、を少なくとも含む複数の遷移パターンのいずれかにより、スレーブS1−Xへ信号を送信する。なお、nは2以上の整数である。周波数選択送信部102は、これら複数の遷移パターンのいずれか1つの遷移パターンで、スレーブS1−Xへアンテナ106を介して信号を送信する。
周波数選択送信部102は周波数帯を周期的に変更する第1方式で、各遷移パターンを決定する。各遷移パターンは、マスタM1とスレーブS1−Xとのリンクで信号を送受信するために用いるべき周波数帯の周期的な遷移パターンである。
より詳しくは、周波数選択送信部102は、複数の遷移パターンの各々を、ランダムに決定されたパラメータを用いて第1方式で決定する。例えば、周波数選択送信部102は、ランダムに決定された第1パラメータを用いて、第1方式で第1遷移パターンを決定する。また、周波数選択送信部102は、ランダムに決定された第2パラメータを用いて、第1方式で第2遷移パターンを決定する。このパラメータは、対応する遷移パターンにおいて連続する2つの周波数帯の周波数間隔(HopIncrementとも称する)に相当する。この第1方式は、例えばBLEで用いられる周波数ホッピング方式である。
受信復調部103は、直前に信号を送信したときに用いた第1乃至第n周波数帯のいずれかと同一の周波数帯により、スレーブS1−Xからアンテナ106を介して信号を受信し得る。受信復調部103は、受信した信号を復調して、その信号に応じた処理を行ってもよい。
周波数選択送信部102、パケット衝突検知部104、および再設定部105は、通信状況に応じて、上記の複数の遷移パターンのうちいずれを用いるかを切り替える。より詳しくは、再設定部105は、受信復調部103およびパケット衝突検知部104によって取得される通信状況に応じて、スレーブS1−Xとの接続を解除して、スレーブS1−Xとの接続を再度確立することにより、複数の遷移パターンのうちいずれを用いるかを切り替える。周波数選択送信部102は、切り替えた後に遷移パターンでスレーブS1−Xへ信号を送信する。
あるいは、再設定部105は、受信復調部103およびパケット衝突検知部104によって取得される通信状況に応じて、周波数選択送信部102と受信復調部103の少なくとも一方を再起動することにより、複数の遷移パターンのうちいずれを用いるかを切り替えてもよい。再設定部105は、例えば周波数選択送信部102を含む回路、受信復調部103を含む回路、または周波数選択送信部102および受信復調部103を含む回路に対して、供給される電力を遮断した後、その電力供給を再開することにより、周波数選択送信部102と受信復調部103の少なくとも一方を再起動する。
パケット衝突検知部104は、いずれかの遷移パターンで送信した信号が、最大許容遅延時間を超えてスレーブS1−Xに到達していないことを検知する。最大許容遅延時間は、あるパケットを送信する際に許容される遅延の最大の時間である。つまり、パケット衝突検知部104は、いずれかの遷移パターンで、あるパケットを伝送するための信号を送信した場合に、その信号が最大許容遅延時間を超えてスレーブS1−Xに到達していないことを検知する。マスタM1からスレーブS1−Xへ伝送されるパケットと、スレーブS1−XからマスタM1へ伝送されるパケットの少なくとも一方は、無線通信システム5−1と別の無線通信システムとの干渉によるパケット衝突が発生した場合に、到達しない可能性がある。
例えば、パケット衝突検知部104が、第1遷移パターンで送信した信号が最大許容遅延時間を超えてスレーブS1−Xに到達していないことを検知した場合、再設定部105は第2パラメータをランダムに決定する。そして、周波数選択送信部102は、第2パラメータを用いて第1方式で第2遷移パターンを決定する。つまり、再設定部105は、スレーブS1−Xに対する遷移パターンの割り当てを再設定する(すなわち切り替える)。この再設定に応じて、周波数選択送信部102は、第2遷移パターンで信号をスレーブS1−Xへ送信する。
さらに、パケット衝突検知部104によって、第2遷移パターンで送信した信号が最大許容遅延時間を超えてスレーブS1−Xに到達していないことが検知された場合、再設定部105は第3パラメータをランダムに決定する。そして、周波数選択送信部102は、第3パラメータを用いて第1方式で第3遷移パターンを決定する。周波数選択送信部102は、例えば第1乃至第n期間において第1乃至第n周波数帯を用いる第1順番および第2順番とは異なる第3順番である第3遷移パターンを決定する。つまり、再設定部105は、スレーブS1−Xに対する遷移パターンの割り当てを再設定する。この再設定に応じて、周波数選択送信部102は第3遷移パターンで信号をスレーブS1−Xへ送信する。
各スレーブS1−1,S1−2,……,S1−Nは、同期部201、受信復調部202、送信部203、およびアンテナ204を備える。同期部201、受信復調部202、および送信部203は、回路のようなハードウェアで、プロセッサによって実行されるソフトウェアで、あるいはそれらの組み合わせで、実現され得る。
スレーブS1−Xの同期部201は、スレーブS1−XとマスタM1とを同期させるための処理を行う。同期のための具体的な動作については、図18および図19を参照して後述する。
受信復調部202は、第1乃至第n期間において第1乃至第n周波数帯を用いる第1順番である第1遷移パターンと、第1乃至第n期間において第1乃至第n周波数帯を用いる第1順番とは異なる第2順番である第2遷移パターンと、を少なくとも含む複数の遷移パターンのうち、マスタM1によって通信状況に応じて切り替えられたいずれか1つの遷移パターンにより、マスタM1から信号を、アンテナ204を介して受信する。受信復調部202は、受信した信号を復調して、その信号に応じた処理を行ってもよい。
送信部203は、マスタM1から直前に信号を受信したときに用いた第1乃至第n周波数帯のいずれかと同一の周波数帯により、マスタM1へアンテナ204を介して信号を送信する。送信部203は、例えば受信した信号に対する応答として、ACKや情報を伝送するための信号をマスタM1へ送信する。
より具体的な動作の例として、あるパケットを伝送するための第1信号をマスタM1からスレーブS1−Xへ送信する場合について説明する。
まず、マスタM1の周波数選択送信部102は、第1遷移パターンに含まれる第1周波数帯で第1信号をスレーブS1−Xへ送信する。第1信号がスレーブS1−Xに到達したならば、受信復調部103はスレーブS1−Xから第1周波数帯で第2信号を受信し得る。受信復調部103が第2信号を受信した場合、周波数選択送信部102は第1信号とは別の信号を第2周波数帯でスレーブS1−Xへ送信する。この別の信号がスレーブS1−Xに到達したならば、受信復調部103はさらに、スレーブS1−Xから第2周波数帯で信号を受信し得る。
このように、第1遷移パターンに従って遷移(ホッピング)する周波数帯で、マスタM1からスレーブS1−Xへの信号とスレーブS1−XからマスタM1への信号がいずれも到達する場合、周波数選択送信部102は、この第1遷移パターンで、異なる信号(例えば異なるデータ部を含むパケット)を次々にスレーブS1−Xへ送信すると共に、その応答の信号をスレーブS1−Xから受信する。つまり、マスタM1は、他の無線通信システムとの干渉が少ない良好な第1遷移パターンで、スレーブS1−Xと継続的に通信できる。
しかしながら、受信復調部103は、周波数選択送信部102が第1信号を送信した後に、スレーブS1−Xから第1周波数帯で第2信号を受信できない場合がある。受信復調部103が第1周波数帯でスレーブS1−Xから第2信号を受信しない原因は、以下の2つのいずれかである。
第1の原因は、送信された第1信号が干渉によりスレーブS1−Xに到達せず、スレーブS1−Xの受信復調部202が第1信号を受信していない場合に、送信部203が応答のための第2信号をマスタM1に送信していないことである。第2の原因は、第1信号がスレーブS1−Xに到達して、スレーブS1−Xの受信復調部202が第1信号を受信したものの、送信部203が応答のために送信した第2信号がマスタM1に到達していないことである。これら2つのいずれか一方の原因により、周波数選択送信部102が第1信号を送信した後に、受信復調部103は第1周波数帯でスレーブS1−Xから第2信号を受信できない。
パケット衝突検知部104は、周波数選択送信部102が第1周波数帯で第1信号を送信した後に、受信復調部103がスレーブS1−Xから第1周波数帯で第2信号を受信しなかったことにより、他の無線通信システムとの干渉(例えばパケット衝突)を検知する。この場合、周波数選択送信部102は、スレーブS1−Xへ第2周波数帯で第1信号を送信(再送)する。上述したように、第2周波数帯は第1遷移パターンに含まれ、第1周波数帯の後に用いられるべき周波数帯である。
なお、パケット衝突検知部104は、周波数選択送信部102が第1周波数帯で第1信号を送信してからホッピング時間間隔(hopping interval)が経過しても、スレーブS1−Xから第1周波数帯で第2信号を受信しなかった場合に、他の無線通信システムとの干渉(例えばパケット衝突)を検知してもよい。周波数選択送信部102は、ホッピング時間間隔毎に、スレーブS1−Xとの通信に用いるべき周波数帯を変更し得る。なお、ホッピング時間間隔は、例えば最大許容遅延時間の整数分の1である。
パケット衝突検知部104はさらに、周波数選択送信部102が第2周波数帯で第1信号を送信した後に、スレーブS1−Xから第2周波数帯で第3信号を受信しなかったことにより、他の無線通信システムとの干渉を検知する。この場合、周波数選択送信部102は、スレーブS1−Xへ第3周波数帯で第1信号を送信する。上述したように、第3周波数帯は第2遷移パターンに含まれる最初の周波数帯である。なお、パケット衝突検知部104は、周波数選択送信部102が第2周波数帯で第1信号を送信してホッピング時間間隔が経過しても、スレーブS1−Xから第2周波数帯で第3信号を受信しなかった場合に、他の無線通信システムとの干渉を検知してもよい。
また、パケット衝突検知部104は、第1遷移パターンでの第1信号の送信を開始してから最大許容遅延時間を超えるまで連続して、第1遷移パターンの周波数帯でスレーブS1−Xから信号を受信しなかったことを検知し得る。パケット衝突検知部104は、例えば、第1遷移パターンでの第1信号の送信を開始してから、スレーブS1−Xから第1遷移パターンの周波数帯で連続して信号を受信しなかった回数をカウントする。この場合、パケット衝突検知部104は、カウントされた回数が、最大許容遅延時間内に信号を送信可能な回数(=最大許容遅延時間/ホッピング時間間隔)を超えた場合に、第1遷移パターンでの第1信号の送信を開始してから最大許容遅延時間を超えるまで連続して、第1遷移パターンの周波数帯でスレーブS1−Xから信号を受信しなかったと判断してもよい。
さらに、マスタM1において既知であるデータをスレーブS1−Xが送信するようにして、パケット衝突検知部104がスレーブS1−Xから受信したデータの誤り率を算出してもよい。この場合、算出した誤り率が閾値を超えたならば、パケット衝突検知部104は、第1遷移パターンでの第1信号の送信を開始してから最大許容遅延時間を超えるまで連続して、第1遷移パターンの周波数帯でスレーブS1−Xから信号を受信しなかったと判断する。
第1遷移パターンでの第1信号の送信を開始してから最大許容遅延時間を超えるまで連続して、スレーブS1−Xから第1遷移パターンの周波数帯で信号を受信しなかった場合、再設定部105は、周波数選択送信部102が第1遷移パターンとは別の第2遷移パターンで、スレーブS1−Xへ信号を送信するように切り替える。つまり、再設定部105は、第1遷移パターンを、他の無線通信システムとの干渉の頻度が高い悪い遷移パターンであると判断する。再設定部105による切り替えに応じて、周波数選択送信部102は第2遷移パターンに示される第3周波数帯で、第1信号をスレーブS1−Xへ送信する。その際、再設定部105が第2パラメータをランダムに選択した後、周波数選択送信部102が第2パラメータを用いて、第1方式で第2遷移パターンを決定してもよい。
第2遷移パターンに従って遷移する周波数帯で、マスタM1からスレーブS1−Xへの信号とスレーブS1−XからマスタM1への信号がいずれも到達する場合、周波数選択送信部102は、この第2遷移パターンで、異なる信号を次々にスレーブS1−Xへ送信する共に、その応答の信号をスレーブS1−Xから受信する。つまり、マスタM1は、他の無線通信システムとの干渉が少ない良好な第2遷移パターンで、スレーブS1−Xと継続的に通信できる。
周波数選択送信部102、パケット衝突検知部104、および再設定部105は、スレーブS1−1,S1−2,……,S1−Nの各々に対して、良好な遷移パターンが選択されるまで、上述した動作を繰り返し行う。これにより、マスタM1と各スレーブS1−1,S1−2,……,S1−Nとは、他の無線通信システムとの干渉が軽減される遷移パターンで通信を行うことができる。
<マスタ−スレーブ間の無線通信>
図3は、マスタM1とスレーブS1−1,S1−2,……,S1−Nとの間の通信シーケンスの例を示す。マスタM1とスレーブS1−1,S1−2,……,S1−Nが、例えばBLEに準拠した無線通信を行う場合、マスタM1から1つのスレーブへの情報の送信と、その1つのスレーブからマスタM1への情報の送信とは、対(すなわちペア)になっている。
より具体的には、図3に示すように、マスタM1からスレーブS1−1への情報の送信A1と、スレーブS1−1からマスタM1への情報の送信A2とが、対になっている。マスタM1からスレーブS1−2への情報の送信B1と、スレーブS1−2からマスタM1への情報の送信B2とが、対になっている。また、マスタM1からスレーブS1−Nへの情報の送信C1と、スレーブS1−NからマスタM1への情報の送信C2とが対になっている。
このように、無線通信システム5−1では、マスタM1から1つのスレーブへの情報の送信と、その1つのスレーブからマスタM1への情報の送信との対が、マスタM1に接続されているスレーブの台数だけ存在し得る。
図4は、マスタM1からスレーブS1−Xへの情報の送信と、スレーブS1−XからマスタM1への情報の送信との対を実現するための、パケットのやり取りの例を示す。図4に示す例では、まず、ある時刻にマスタM1からスレーブS1−Xへのパケット301が送信されている。このパケット301の送信が完了してから一定の時間303が経過した時刻に、スレーブS1−XからマスタM1へのパケット302が送信(返信)される。マスタM1からスレーブS1−Xへのパケット301の送信と、スレーブS1−XからマスタM1へのパケット302の送信とは、タイムスロットと称される期間内に行われ得る。
なお、パケット301はマスタM1からスレーブS1−Xに送信すべき情報を含む。パケット301は、例えばマスタM1によるスレーブS1−Xへの要求を示す情報を含む。また、パケット302はパケット301に応答するための情報を含む。パケット302は、例えば、ACK、マスタM1によって管理されるべきスレーブS1−Xに関する情報を含む。
図5はさらに、特定のタイムスロットにおいて、特定の部分周波数帯で、マスタM1とスレーブS1−Xとの間でパケットがやり取りされる例を示す。マスタM1は無線通信に利用可能な周波数帯を均等に分割して得られる複数の部分周波数帯を、各スレーブS1−1,S1−2,……,S1−Nとの無線通信にそれぞれ使用し得る。部分周波数帯はチャネルとも称される。
図5では、タイムスロット311内において、マスタM1がスレーブS1−Xにチャネル312でパケットを送信した後、スレーブS1−XがマスタM1にチャネル312でパケットを送信する例が、示されている。このように、1つのタイムスロット311では、マスタM1からスレーブS1−Xへのパケットの送信と、これに応じたスレーブS1−XからマスタM1へのパケットの送信とが、同一のチャネル312を用いて行われる。換言すると、マスタM1からスレーブS1−Xへのパケットの送信と、これに応じたスレーブS1−XからマスタM1へのパケットの送信のために、1つのタイムスロット311と1つのチャネル312とが割り当てられている。
<周波数ホッピング方式>
マスタM1に複数のスレーブS1−1,S1−2,……,S1−Nが接続される場合、マスタM1はスレーブS1−1,S1−2,……,S1−Nそれぞれとの通信にチャネルを割り当てるために、例えば周波数ホッピング方式を用いる。周波数ホッピング方式では、各スレーブS1−1,S1−2,……,S1−Nとの通信のために割り当てられるチャネルが、時間の経過に従って周期的に変化する。
より詳しくは、周波数ホッピング方式では、マスタM1とスレーブS1−Xとのコネクションが確立された場合、スレーブS1−Xと通信するために、一定の周波数間隔でホッピングするチャネルが順次割り当てられる。マスタM1は、周波数ホッピング方式により、時間の経過に従って、スレーブS1−Xとの通信に用いられるチャネルが周期的に変化(ホッピング)するように割り当てる。
以下では、周波数ホッピング方式で用いられる周波数間隔をHopIncrementと称する。HopIncrementには、スレーブS1−1,S1−2,……,S1−N毎に決定される値が用いられ得る。HopIncrementには、例えばチャネル単位の値が設定される。
マスタM1はアドバタイズの状態を経てスレーブS1−Xとのコネクションが確立した後、スレーブS1−Xとの通信に用いられるチャネルを、時間の経過に従って順次決定する。上述したように、周波数ホッピング方式ではスレーブS1−Xとの通信のために割り当てられるチャネルが、時間の経過に従って周期的に変化する。マスタM1は、例えばBLEで規定された以下の式(1)に基づいて、各スレーブS1−1,S1−2,……,S1−Nとの通信のために割り当てられるチャネルを決定する。
UnmappedChannel=(LastUnmappedChannel+HopIncrement) mod 37 (式1)
UnmappedChannelは、スレーブS1−Xとの通信に割り当てられるべきチャネル(より詳しくはチャネル番号)を示す。LastUnmappedChannelは、スレーブS1−Xとの通信のために直前に割り当てられていたチャネルを示す。マスタM1とスレーブS1−Xとのコネクションが確立した後に、最初にUnmappedChannelを算出する場合には、LastUnmappedChannelとして0が設定される。
HopIncrementは、ホッピングにより変化するチャネル単位の周波数間隔を示す。HopIncrementは、周波数ホッピング方式で用いられる、ランダムに決定されるパラメータである。マスタM1はスレーブS1−Xとのコネクションが確立したことに応じて、例えば5から16までの整数値から1つの整数値をランダムに選択して、スレーブS1−Xに対応するHopIncrementとして用いる。
式(1)では、LastUnmappedChannelとHopIncrementの和を37で除した場合の剰余が、UnmappedChannelとして算出される。マスタM1はランダムに選択されたHopIncrementを式(1)に適用することにより、コネクションが確立したスレーブS1−Xに対して、ランダム性と周期性とを有する時系列のチャネルの遷移パターンを割り当てることができる。
なお、式(1)では、マスタM1とスレーブS1−1,S1−2,……,S1−Nとの通信に37個のチャネルが利用可能であることが想定されている。利用可能なチャネルは任意の数であってもよく、その数に応じて式(1)を適宜変更できる。また、HopIncrementとして選択され得る値も、上述した5から16までの整数値に限らず、任意の値を用いることができる。
図6は周波数ホッピング方式で割り当てられるチャネルの遷移パターンの例を示す。より詳しくは、式(1)に従って、HopIncrementが5である場合に割り当てられるチャネルの遷移パターン321と、HopIncrementが16である場合に割り当てられるチャネルの遷移パターン322とが示されている。図6では、水平方向の軸がホッピングの回数を示し、垂直方向の軸がチャネル番号を示す。ここでは、0から36までの37個のチャネルが、マスタM1とスレーブS1−1,S1−2,……,S1−Nとの通信に利用可能であることを想定する。
それぞれのチャネルの遷移パターン321,322において、37回のホッピングが1周期に相当する。遷移パターン321,322に示すように、HopIncrementとしていずれの値が用いられる場合にも、37回のホッピングに相当する1周期のチャネルの遷移において全チャネルをそれぞれ1回ずつ経由した後、最初に割り当てられたチャネルに戻る。これは例えばHopIncrementを37回足して、37で除した場合の剰余が0になることからも分かる。したがって、静的な伝搬環境であれば、37回のホッピングによるチャネルの遷移パターンに応じた通信特性が、周期的に繰り返される。静的な伝搬環境とは、例えば金属で囲まれた電波を遮蔽する空間内の環境である。
図7は、マスタM1が、2つのスレーブS1−1,S1−2の各々に対して(すなわち各スレーブS1−1,S1−2とのリンクに対して)、タイムスロットとチャネルの組を割り当てたチャネルマップ400の例を示す。ここでは、0から36までの37個のチャネルが、マスタM1とスレーブS1−1,S1−2との通信に利用可能であることを想定する。
マスタM1は、各スレーブS1−1,S1−2に対して、時間の経過に従って、一定の時間間隔でタイムスロットを割り当てると共に、上述した周波数ホッピング方式でチャネルを割り当てる。つまり、マスタM1は、各スレーブS1−1,S1−2に対して、時間の経過に従って、タイムスロットとチャネルの組を割り当てる。
なお、あるスレーブに対してタイムスロットとチャネルの組を割り当てるとは、マスタM1とそのスレーブとの通信(例えばパケットの送受信)に、そのタイムスロットとチャネルの組が用いられることを意味する。
各スレーブに対して、あるチャネルとタイムスロットの組が割り当てられる一定の時間間隔を、ホッピング時間間隔、あるいはコネクション時間間隔(connection interval)と称する。マスタM1は、ホッピング時間間隔として、複数のスレーブS1−1,S1−2,……,S1−Nに共通の値を用い得る。マスタM1は、ホッピング時間間隔として予め決められた値を用いてもよいし、最初のスレーブとのコネクションを確立したことに応じて、ホッピング時間間隔として任意の値を設定してもよい。
チャネルマップ400において、斜線のパターンで示される時間−周波数領域401〜406は、スレーブS1−1に対して順に割り当てられるタイムスロットとチャネルの組を表す。また、格子のパターンで示される時間−周波数領域411〜416は、スレーブS1−2に対して順に割り当てられるタイムスロットとチャネルの組を表す。以下では、時間−周波数領域を、単に領域とも称する。
図7に示す例において、スレーブS1−1に対するHopIncrementは5である。したがって、スレーブS1−1に対して連続して割り当てられる2つのチャネルの間には、5チャネル分の周波数間隔がある。例えば領域401と領域402の間には5チャネル分の周波数間隔がある。
スレーブS1−2に対するHopIncrementは2である。したがって、スレーブS1−2に対して連続して割り当てられる2つのチャネルの間には、2チャネル分の周波数間隔がある。例えば領域411と領域412の間には2チャネル分の周波数間隔がある。
また上述したように、スレーブS1−1およびスレーブS1−2に対して、共通のホッピング時間間隔が用いられている。したがって、スレーブS1−1に対して連続して割り当てられる2つのタイムスロットの間隔はホッピング時間間隔に対応し、スレーブS1−2に対して連続して割り当てられる2つのタイムスロットの間隔はホッピング時間間隔に対応する。例えば領域401と領域402の間隔はホッピング時間間隔に対応し、領域411と領域412の間隔はホッピング時間間隔に対応する。
図4を参照して上述したように、スレーブS1−1に対して割り当てられた各領域401〜406は、その領域に対応するタイムスロットにおいて、その領域に対応するチャネルで、マスタM1からスレーブS1−1へのパケットが送信された後、スレーブS1−1からマスタM1へのパケットが送信されることを示す。同様に、スレーブS1−2に対して割り当てられた各領域411〜416は、その領域に対応するタイムスロットにおいて、その領域に対応するチャネルで、マスタM1からスレーブS1−2へのパケットが送信された後、スレーブS1−2からマスタM1へのパケットが送信されることを示す。
なお、図7では、スレーブS1−1に対応するHopIncrementが5であって、スレーブS1−2に対応するHopIncrementが2であり、2つのスレーブS1−1,S1−2に対応するHopIncrementが異なる例を示した。しかしながら、スレーブS1−1に対応するHopIncrementとスレーブS1−2に対応するHopIncrementとはそれぞれランダムに選択されるので、同一になる場合もある。
マスタM1は図7に示すように、スレーブS1−1,S1−2に対して異なるタイムスロットを割り当てる。そのため、2つのスレーブS1−1,S1−2に対応するHopIncrementとして同一の値が選択されたとしても、マスタM1とスレーブS1−1との通信と、マスタM1とスレーブS1−2との通信との間で、干渉は発生しない。
図8は、マスタM1が20個のスレーブの各々に対して、タイムスロットとチャネルの組を割り当てたチャネルマップ50の例を示す。ここでは、0から36までの37個のチャネルが、マスタM1と20個のスレーブとの通信に利用可能であることを想定する。
チャネルマップ50では、20個のスレーブに割り当てられたタイムスロットとチャネルの組を表す多数の領域が、スレーブ毎に異なるパターンを付して図示されている。チャネルマップ50は、例えば、スレーブS1−Xに対して、領域501で表されるタイムスロットとチャネルの組が割り当てられた後に、領域502で表されるタイムスロットとチャネルの組が割り当てられることを示している。
上述したように、マスタM1はスレーブS1−Xとのコネクションを確立したことに応じて、HopIncrementの値をランダムに決定する。そして、マスタM1は、スレーブS1−Xに対して、他のスレーブに割り当てられるタイムスロットと重複しないタイムスロットを起点として、ホッピング時間間隔毎のタイムスロットを順次割り当てると共に、ランダムに決定されたHopIncrementを用いた周波数ホッピング方式でチャネルを順次割り当てる。マスタM1は、各スレーブとのコネクションが確立される毎に割り当てを開始し、そのスレーブとのコネクションが解除された場合、割り当てを終了する。
このように、20個のスレーブに対するタイムスロットとチャネルの組の割り当ては、予めスケジューリングされるものではない。そのため、図8に示すように、いずれのスレーブにも割り当てられていない空きのタイムスロットが存在し得る。
<複数の無線通信システムが設けられる場合の通信>
図9は、無線通信システム5−1を含む複数の無線通信システムの構成例を示す。ここでは、M個の無線通信システム5−1,5−2,……,5−Mが設けられる場合を例示する。各無線通信システム5−1,5−2,……,5−Mで通信に用いられる周波数帯域は少なくとも一部が重複している。
図1を参照して上述したように、無線通信システム5−1は1台のマスタM1とN台のスレーブS1−1,S1−2,……,S1−Nとで構成される。また、無線通信システム5−2はマスタM2とN台のスレーブS2−1,S2−2,……,S2−Nとで構成され、無線通信システム5−MはマスタMMとN台のスレーブSM−1,SM−2,……,SM−Nとで構成される。各無線通信システム5−1,5−2,……,5−Mには任意の台数のスレーブが設けられ、無線通信システム毎に異なっていてもよい。
無線通信システム5−1の動作は上述した通りである。他の無線通信システム5−2,……,5−Mも、無線通信システム5−1と同様に動作する。
各無線通信システム5−1,5−2,……,5−M内では、図7および図8を参照して上述したスレーブに対するタイムスロットとチャネルの組の割り当てにより、マスタと複数のスレーブの各々との通信において干渉が発生しない。
しかし、図10に示すように、複数の無線通信システム5−1,5−2,……,5−M間では干渉が発生する場合がある。例えば、マスタM1とスレーブS1−Nとの通信に用いられるタイムスロットとチャネルの組が、マスタM2とスレーブS2−1との通信に用いられるタイムスロットとチャネルの組と重複することにより、干渉が発生する。なお、ここでは、各無線通信システム5−1,5−2,……,5−MがBLEに準拠した通信を行うことを想定しているが、1台のマスタと複数のスレーブとをそれぞれ備える複数の無線通信システム間で通信に用いる周波数帯の少なくとも一部が重複しているならば、同様の干渉が発生し得る。
図11は、干渉により、無線通信システム5−1にシステムダウンが発生する場合のチャネルマップ500の例を示す。ここでは、無線通信システム5−1において、マスタM1がスレーブS1−Xと通信する場合を想定する。
チャネルマップ500において、斜線のパターンで示される時間−周波数領域511〜517は、スレーブS1−Xに対して順に割り当てられるタイムスロットとチャネルの組を表す。つまり、マスタM1とスレーブS1−Xとの間で送受信すべき信号は、領域511〜517で表されるタイムスロットとチャネルの組を用いて伝送される。
また、格子のパターンで示される時間−周波数領域521〜527は、他の無線通信システム5−2,……,5−Mで割り当てられるタイムスロットとチャネルの組を表す。これら領域521〜527は、上述した領域511〜517とそれぞれ同一のタイムスロットとチャネルの組を表す。したがって、他の無線通信システム5−2,……,5−Mにおいて領域521〜527で表されるタイムスロットとチャネルの組を用いて伝送される信号は、マスタM1とスレーブS1−Xとの間で送受信される信号に干渉する。
より具体的には、領域511〜517で示されるように、マスタM1はホッピング時間間隔毎に変更(ホッピング)したチャネルの遷移パターンでスレーブS1−Xと通信する。しかし、他の無線通信システム5−2,……,5−Mのいずれかでも、領域521〜527で示されるように、同じタイミングで、且つ同じチャネルの遷移パターンで、通信が行われたならば、2つの無線通信システムの間で、伝送されるパケットの衝突が繰り返し発生することになる。
マスタM1では、スレーブS1−Xとの間のパケット伝送において最大許容遅延時間を超えて連続したパケット衝突が発生した場合、スレーブS1−Xとのコネクションが失われ、システムダウンが発生する。上述したように、最大許容遅延時間は、あるパケットを送信する際に許容される遅延の最大の時間である。最大許容遅延時間として、例えばホッピング時間間隔の整数倍(図11では6倍)の時間が設定される。
図12は、2つの無線通信システム5−1,5−2間でパケット衝突が発生し続ける場合のチャネルマップの例を示す。マスタM1のチャネルマップ50−1では、スレーブS1−1に対して(すなわちマスタM1とスレーブS1−1とのリンクに対して)割り当てられた周波数−時間領域551と、スレーブS1−2に対して(すなわちマスタM1とスレーブS1−2とのリンクに対して)割り当てられた周波数−時間領域552とが、それぞれ異なるパターンを付して図示されている。また、マスタM2のチャネルマップ50−2でも、スレーブS2−1に対して割り当てられた周波数−時間領域553と、スレーブS2−2に対して割り当てられた周波数−時間領域554とが、それぞれさらに異なるパターンを付して図示されている。
図7と同様に、パターンが付された各周波数−時間領域は、対応するスレーブに割り当てられたタイムスロットとチャネルの組を表す。したがって、スレーブS1−1に対して割り当てられた周波数−時間領域551は、スレーブS1−1に対して割り当てられた時系列のチャネルの遷移パターンを示す。スレーブS1−2に対して割り当てられた周波数−時間領域552は、スレーブS1−2に対して割り当てられた時系列のチャネルの遷移パターンを示す。スレーブS2−1に対して割り当てられた周波数−時間領域553は、スレーブS2−1に対して割り当てられた時系列のチャネルの遷移パターンを示す。また、スレーブS2−2に対して割り当てられた周波数−時間領域554は、スレーブS2−2に対して割り当てられた時系列のチャネルの遷移パターンを示す。
スレーブS1−2に対応する時系列のチャネルの遷移パターン(周波数−時間領域552に相当)は、別の無線通信システム5−2内のスレーブS2−1,S2−2に対応する時系列のチャネルの遷移パターンと重複していないので、マスタM1とスレーブS1−2との通信においてパケット衝突(干渉)は発生しない。同様に、スレーブS2−2に対応する時系列のチャネルの遷移パターン(周波数−時間領域554に相当)は、別の無線通信システム5−1内のスレーブS1−1,S1−2に対応する時系列のチャネルの遷移パターンと重複していないので、マスタM2とスレーブS2−2との通信においてパケット衝突は発生しない。
これに対して、スレーブS1−1に対応する時系列のチャネルの遷移パターン(周波数−時間領域551に相当)は、別の無線通信システム5−2内のスレーブS2−1に対応する時系列のチャネルの遷移パターン(周波数−時間領域553に相当)と重複しているので、マスタM1とスレーブS1−1との通信と、マスタM2とスレーブS2−1との通信の間で、パケット衝突が繰り返し発生する。つまり、スレーブS1−1に対応する時系列のチャネルの遷移パターンと、スレーブS2−1に対応する時系列のチャネルの遷移パターンとが、同一のタイムスロットとチャネルの組を占有しているので、パケット衝突が繰り返し発生する。
なお実際には、複数のマスタM1,M2,……,MM間で同一のタイミングのタイムスロットが規定されるのではなく、複数のマスタM1,M2,……,MMでそれぞれ異なるタイミングのタイムスロットが規定されることがある。例えば、ある時刻は、マスタM1ではタイムスロットの開始タイミングであるのに対して、マスタM2ではタイムスロットの途中のタイミングである可能性がある。
さらに、スペクトルマスクを考慮すると、あるチャネルを使用した通信は、そのチャネルを使用した通信だけでなく、隣接するチャネルを使用した通信にも影響を及ぼす可能性がある。
図13は、2つの無線通信システム5−1,5−2間で干渉が発生する時間領域および周波数領域のパターンの例を示す。ここでは、マスタM1が時間−周波数領域561に対応する第1タイムスロットと第1チャネルの組でスレーブと通信する場合に、時間領域と周波数領域の各々に関して、パケット衝突が発生する例を説明する。
時間領域に関しては、マスタM2が、第1タイムスロットと少なくとも一部が重複するタイムスロットと第1チャネルとの組に対応する2つの時間−周波数領域562,563でスレーブと通信する場合に、パケット衝突が発生し得る。つまり、マスタM1およびマスタM2が同一のチャネルで、且つ少なくとも一部が重複したタイムスロットで、各々のスレーブと通信した場合に、パケット衝突が発生し得る。
周波数領域に関しては、スペクトルマスクを考慮すると、マスタM2が、(A)第1タイムスロットと第1チャネルの組に対応する時間−周波数領域564、(B)第1タイムスロットと、第1チャネルに隣接するより高い周波数のチャネルとの組に対応する時間−周波数領域565、または(C)第1タイムスロットと、第1チャネルに隣接するより低い周波数のチャネルとの組に対応する時間−周波数領域566で、スレーブと通信する場合に、パケット衝突が発生し得る。つまり、マスタM1およびマスタM2が同一のタイムスロットで、且つ同一または隣接するチャネルで、各々のスレーブと通信した場合に、パケット衝突が発生し得る。
したがって、時間領域と周波数領域の双方を考慮したならば、マスタM1およびマスタM2が少なくとも一部が重複したタイムスロットで、且つ同一または隣接するチャネルで、各々のスレーブと通信した場合に、パケット衝突が発生し得ると云える。
図14は、複数の無線通信システム5−1,5−2,……,5−Mの各々のチャネルマップ50−1,50−2,……,50−Mの関係の例を示す。
無線通信システム5−1,5−2,……,5−M内のマスタM1,M2,……,MMがそれぞれ独立したクロックを用いて動作しているならば、マスタM1が基準とするクロックとマスタM2が基準とするクロックとの時間差Aが変動し、マスタM1が基準とするクロックとマスタMMが基準とするクロックとの時間差Bが変動する可能性がある。
これに対して、マスタM1,M2,……,MMが共通のクロックを用いて動作しているならば、時間差A,Bは変動しない。あるいは、マスタM1,M2,……,MMがそれぞれ独立したクロックを用いて動作している場合にも、各クロックが揺らぎの少ない高性能なクロックであるならば、時間差A,Bの変動が低減される。
時間差A,Bの変動が無い、あるいは十分に小さい静的な環境であれば、パケット衝突の発生に関する通信特性は、各無線通信システム5−1,5−2,……,5−Mの時系列のチャネルの遷移パターン(すなわちチャネルマップ50−1,50−2,……,50−Mのパターン)に従う。そして、この時系列のチャネルの遷移パターンは、周期的に、例えば37回の周波数ホッピング毎に、繰り返されるので、無線通信システム5−1,5−2,……,5−M間で通信特性が維持される。
<マスタ間の同期>
図15を参照して、複数のマスタM1,M2,……,MMを有線で同期させるための構成例を説明する。
図15(A)は複数のマスタM1,M2,……,MMを同期できない構成例を示す。図15(A)に示すように、マスタM1,M2,……,MMに対して水晶発振器51,52,……,5Mがそれぞれ独立して設けられ、各水晶発振器51,52,……,5Mの性能が低い場合、マスタM1,M2,……,MM間のクロックのずれが変動する。例えば図14に示したような、マスタM1が基準とするクロックとマスタM2が基準とするクロックとの時間差Aが変動し、マスタM1が基準とするクロックとマスタMMが基準とするクロックとの時間差Bが変動する。キャリブレーションにより無線通信システム5−1,5−2,……,5−M間の干渉が発生しないようにチャネル遷移パターン(すなわちチャネルマップ)が設定されたとしても、時間差A,Bが変動したならば、それら遷移パターンの周期性が破綻して、無線通信システム5−1,5−2,……,5−M間で干渉が発生する可能性がある。
これに対して、図15(B)は複数のマスタM1,M2,……,MMを同期できる構成例を示す。図15(B)に示すように、本実施形態では、全てのマスタM1,M2,……,MMに有線接続される1つの水晶発振器6が設けられ得る。この構成では、全てのマスタM1,M2,……,MMに1つの水晶発振器6の影響が及ぶ。この場合、水晶発振器6の性能が低く、出力する信号のタイミングが揺らいだとしても、その揺らいだ信号の影響が全てのマスタM1,M2,……,MMに及ぶ。
そのため、この構成では、水晶発振器6の性能に関わらず、マスタM1,M2,……,MMがそれぞれ基準とするクロック間の時間差が変動しない。つまり、マスタM1,M2,……,MMがそれぞれ基準とするクロック間の時間差を常に一定にできる。より具体的には、例えばマスタM1の同期部101は、水晶発振器6を用いて、マスタM1と他の各マスタM2,……,MMとを同期させる。これにより、一旦、キャリブレーションによって無線通信システム5−1,5−2,……,5−M間の干渉が発生しないように複数のチャネル遷移パターンが設定されたならば、それらチャネル遷移パターンが同期して継続されるので、無線通信システム5−1,5−2,……,5−M間で干渉が発生しない状態を維持できる。
なお、水晶発振器6を有線接続するためのケーブルは、各マスタM1,M2,……,MMに対して等長配線でなくてもよい。つまり、マスタM1,M2,……,MM間で位相がずれていてもよく、周波数が同期していればよい。また、水晶発振器6の代わりに、各マスタM1,M2,……,MMに同期信号を配信するイーサークロックが用いられてもよい。
図16は、複数のマスタM1,M2,……,MMを無線で同期させるための構成例を示す。例えばマスタM1,M2,……,MMに対して水晶発振器51,52,……,5Mがそれぞれ独立して設けられる場合に、いずれか1つのマスタ(ここではマスタM1)の同期部101が他のマスタ(ここではマスタM2,……,MM)に同期信号を送信して、それらマスタを同期させる。同期信号を受信したマスタの同期部101は、その同期信号に基づいてクロックを同期させる。これにより、同期信号を送信したマスタのクロックと同期信号を受信したマスタのクロックとを同期できる。各マスタのM1,M2,……,MMの周波数選択送信部102は、同期部101により定められたクロックに基づく時刻に、パケット(すなわちパケット伝送のための信号)をあるスレーブへ送信する。
図17は同期信号の例を示す。同期信号611は、一定の頻度で、プリアンブルとデータ部とを含むパケット612に先行して送信され得る。例えば、1つのパケットが送信される毎に1つの同期信号611が送信されてもよいし、3つのパケットが送信される毎に1つの同期信号611が送信されてもよい。同期信号611が送信される頻度は、受信側のマスタに対して設けられている水晶発振器の性能に応じて決定され得る。例えば、受信側のマスタに対して設けられている水晶発振器の性能が低いほど、高頻度に同期信号611が送信される。
以上の有線または無線の構成により、複数のマスタM1,M2,……,MMを同期できる。
<マスタ−スレーブ間の同期>
図18は複数のスレーブをマスタに無線で同期させる例を示す。ここでは一例として、無線通信システム5−1において複数のスレーブS1−1,……,S1−NをマスタM1に同期させる場合について説明するが、他の無線通信システム5−2,……,5−Nでも同様にして、複数のスレーブをマスタに同期できる。
例えば、マスタM1に対して水晶発振器51が設けられ、スレーブS1−1,……,S1−Nに対して水晶発振器71,……,7Nがそれぞれ設けられる場合、マスタM1の同期部101が各スレーブS1−1,……,S1−Nに同期信号を送信して、マスタM1と各スレーブS1−1,……,S1−Nとを同期させる。同期信号を受信した各スレーブS1−1,……,S1−Nの同期部201は、その同期信号に基づいてクロックを同期させる。これにより、同期信号を送信したマスタのクロックと同期信号を受信した各スレーブS1−1,……,S1−Nのクロックとを同期できる。各マスタのM1,M2,……,MMの受信復調部103は、同期部101により定められたクロックに基づく時刻に、あるスレーブから送信されたパケット(すなわちパケット伝送のための信号)を受信する。同期信号の例については、図17を参照して上述した通りである。
図19を参照して、同期または非同期の場合に、マスタM1が各スレーブS1−1,S1−2,……,S1−Nからパケットを受信するタイミングの例を説明する。
図19(A)は、マスタM1とスレーブS1−1,S1−2,……,S1−Nとが同期している場合の例を示す。マスタM1とスレーブS1−1,S1−2,……,S1−Nとは同期したクロックを用いている。ここで、マスタM1が、スレーブS1−1,S1−2,……,S1−NからマスタM1へのパケットの送信を特定の時刻(ここではタイムスロットの先頭の時刻)に行うことを規定している場合を想定する。
この場合、スレーブS1−1のクロックに基づく時刻T1に、スレーブS1−1がパケットP1をマスタM1に送信したならば、マスタM1は、マスタM1のクロックに基づく時刻T1に、そのパケットP1を受信できる。スレーブS1−2のクロックに基づく時刻T2に、スレーブS1−2がパケットP2をマスタM1に送信したならば、マスタM1は、マスタM1のクロックに基づく時刻T2に、そのパケットP2を受信できる。また、スレーブS1−Nのクロックに基づく時刻TNに、スレーブS1−NがパケットPNをマスタM1に送信したならば、マスタM1は、マスタM1のクロックに基づく時刻TNに、そのパケットPNを受信できる。
このように、マスタM1とスレーブS1−1,S1−2,……,S1−Nとが同期したクロックを用いている場合、マスタM1は、規定された特定の時刻からずれのないタイミングでパケットを受信できる。
これに対して、図19(B)は、マスタM1とスレーブS1−1,S1−2,……,S1−Nとが同期していない場合の例を示す。マスタM1のクロックと、各スレーブS1−1,S1−2,……,S1−Nのクロックとは非同期である。ここで、マスタM1が、スレーブS1−1,S1−2,……,S1−NからマスタM1へのパケットの送信を特定の時刻(ここではタイムスロットの先頭の時刻)に行うことを規定している場合を想定する。
この場合、スレーブS1−1のクロックに基づく時刻T1に、スレーブS1−1がパケットP1をマスタM1に送信したならば、マスタM1は、スレーブS1−1のクロックとマスタM1のクロックの時間のずれに応じて、マスタM1のクロックに基づく時刻T1よりも早く、あるいは遅く、パケットP1を受信する可能性がある。スレーブS1−2のクロックに基づく時刻T2に、スレーブS1−2がパケットP2をマスタM1に送信したならば、マスタM1は、スレーブS1−2のクロックとマスタM1のクロックの時間のずれに応じて、マスタM1のクロックに基づく時刻T2よりも早く、あるいは遅く、パケットP2を受信する可能性がある。また、スレーブS1−Nのクロックに基づく時刻TNに、スレーブS1−NがパケットPNをマスタM1に送信したならば、マスタM1は、スレーブS1−NのクロックとマスタM1のクロックの時間のずれに応じて、マスタM1のクロックに基づく時刻TNよりも早く、あるいは遅く、パケットPNを受信する可能性がある。
このように、マスタM1とスレーブS1−1,S1−2,……,S1−Nとが非同期のクロックを用いている場合、マスタM1は、規定された特定の時刻からずれたタイミングでパケットを受信する可能性がある。つまり、マスタM1とスレーブS1−1,S1−2,……,S1−Nとが非同期である場合、マスタM1がスレーブS1−1,S1−2,……,S1−Nからパケットを受信するタイミングに揺らぎが生じ得る。
本実施形態では、図17を参照して上述したように、スレーブS1−1,S1−2,……,S1−NをマスタM1に同期させることにより、マスタM1が、規定した特定の時刻に、すなわち規定した特定のタイムスロットで、各スレーブS1−1,S1−2,……,S1−Nと通信できる。また、マスタM1は、同期したクロックに基づく別々のタイムスロットで、スレーブS1−1,S1−2,……,S1−Nそれぞれと通信できる。例えば、マスタM1がスレーブS1−1との通信に用いるタイムスロットは、マスタM1がスレーブS1−2との通信に用いるタイムスロットとは異なる。これにより、マスタM1と複数のスレーブS1−1,S1−2,……,S1−Nとの通信が並行して行われる場合にも、干渉が発生しない。
<パケット衝突の検知>
図20から図22を参照して、複数の無線通信システム5−1,5−2,……,5−N間の干渉により、パケット衝突が発生する例を説明する。ここでは、パケット衝突が発生する例を、動作無線通信システム5−1内のマスタM1がスレーブS1−Xへパケットを送信または再送する動作において説明する。なお、マスタM1がスレーブS1−Xへパケットを再送するとは、マスタM1が、スレーブS1−Xへ既に送信したパケットを、スレーブS1−Xへの到達が確認できなかったために、再度送信することを意味するものとする。
図20から図22に示す例において、同一のパターンを付して図示される矩形は、同一のデータ部を含むパケットを示す。また、「OK」が付されたパケットはスレーブS1−Xへの到達を確認できたパケットを示し、「NG」が付されたパケットはスレーブS1−Xへの到達を確認できなかったパケットを示す。
マスタM1はホッピング時間間隔毎にスレーブS1−Xに対してパケットを送信し得る。マスタM1は、スレーブS1−Xに対する、あるパケットの送信を開始してから最大許容遅延時間が経過するまでの間、そのパケットのスレーブS1−Xへの到達が確認できないならば、当該パケットの再送をホッピング時間間隔毎に繰り返し行う。最大許容遅延時間が経過しても、そのパケットのスレーブS1−Xへの到達が確認できなかった場合、マスタM1でシステムダウンが発生する。
なお、マスタM1(より詳しくはパケット衝突検知部104)は、第1パケットをスレーブS1−Xへ送信し、第1パケットに応答する第2パケットをホッピング時間間隔内にスレーブS1−Xから受信した場合、第1パケットがスレーブS1−Xに到達したと判断する。これに対して、第1パケットに応答する第2パケットをホッピング時間間隔内にスレーブS1−Xから受信できなかった場合、マスタM1は第1パケットがスレーブS1−Xに到達しなかったと判断する。
マスタM1とスレーブS1−Xとの通信に、別の無線通信システム5−2,……,5−Mにおける通信が干渉している場合、例えばマスタM1とスレーブS1−Xとの間で伝送されるパケットと、別の無線通信システム5−2,……,5−M内のマスタとスレーブとの間で伝送されるパケット(例えばマスタM2とスレーブS2−Yとの間で伝送されるパケット)とが衝突し得る。したがって例えば、マスタM1が送信したパケットがスレーブS1−Xに到達しないか、あるいはスレーブS1−Xが送信したパケットがマスタM1に到達しない。マスタM1は、上述した通り、最大許容遅延時間が経過するまでの間、あるパケットのスレーブS1−Xへの到達が確認できないならば、当該パケットの再送を繰り返し行う。
図20は最大許容遅延時間内にパケット衝突が発生する例を示す。
まず、マスタM1は、第1データ部を含むパケット621がスレーブS1−Xに到達したことを確認している。つまり、パケット621と、別の無線通信システム5−2,……,5−Mにおいて伝送されるパケットとの衝突が発生していない。
次に、マスタM1は、第2データ部を含むパケット622がスレーブS1−Xに到達したことを確認できていない。つまり、パケット622と、別の無線通信システム5−2,……,5−Mにおいて伝送されるパケットとの衝突が発生している。そのため、マスタM1は、パケット622と同一の第2データ部を含むパケット623をスレーブS1−Xへ再送して、このパケット623がスレーブS1−Xに到達したことを確認している。
次いで、マスタM1は、第3データ部を含むパケット624がスレーブS1−Xに到達したことを確認できず、その後に再送した第3データ部を含むパケット625がスレーブS1−Xに到達したことも確認できていない。そのため、マスタM1は、第3データ部を含むパケット626をさらに再送して、このパケット626がスレーブS1−Xに到達したことを確認している。
このように、マスタM1は、パケット衝突が発生したとしても、最大許容遅延時間内の再送でパケットがスレーブS1−Xに到達したことを確認できたならば、システムダウンすることなく、スレーブS1−Xとの通信を続行できる。
図21は最大許容遅延時間内にパケット衝突が発生する別の例を示す。
まず、マスタM1は、第1データ部を含むパケット631がスレーブS1−Xに到達したことを確認できていない。つまり、パケット631と、別の無線通信システム5−2,……,5−Mにおいて伝送されるパケットとの衝突が発生している。そのため、マスタM1は、パケット631と同一の第1データ部を含むパケット632をスレーブS1−Xへ再送して、このパケット632がスレーブS1−Xに到達したことを確認している。
次いで、マスタM1は、第2データ部を含むパケット633がスレーブS1−Xに到達したことを確認できていない。つまり、パケット633と、別の無線通信システム5−2,……,5−Mにおいて伝送されるパケットとの衝突が発生している。そのため、マスタM1は、パケット633と同一の第2データ部を含むパケット634をスレーブS1−Xへ再送して、このパケット634がスレーブS1−Xに到達したことを確認している。
さらに、マスタM1は、第3データ部を含むパケット635がスレーブS1−Xに到達したことを確認できていない。つまり、パケット635と、別の無線通信システム5−2,……,5−Mにおいて伝送されるパケットとの衝突が発生している。そのため、マスタM1は、パケット635と同一の第3データ部を含むパケット636をスレーブS1−Xへ再送して、このパケット636がスレーブS1−Xに到達したことを確認している。
したがって、図20に示した例と同様に、マスタM1は、パケット衝突が発生したとしても、最大許容遅延時間内の再送でパケットがスレーブS1−Xに到達したことを確認できたならば、システムダウンすることなく、スレーブS1−Xとの通信を続行できる。
図22は、最大許容遅延時間を超えてパケット衝突が発生し続ける例を示す。
まず、マスタM1は、第1データ部を含むパケット641がスレーブS1−Xに到達したことを確認できていない。つまり、パケット641と、別の無線通信システム5−2,……,5−Mにおいて伝送されるパケットとの衝突が発生している。
パケット641がS1−Xに到達したことを確認できなかったので、マスタM1は、パケット641と同一の第1データ部を含むパケット642をスレーブS1−Xへ再送するが、このパケット642がスレーブS1−Xに到達したことを確認できていない。パケット642がS1−Xに到達したことを確認できなかったので、マスタM1は、第1データ部を含むパケット643をスレーブS1−Xへさらに再送するが、このパケット643がスレーブS1−Xに到達したことを確認できていない。
そして、パケット643がS1−Xに到達したことを確認できなかったので、マスタM1は、第1データ部を含むパケット644をスレーブS1−Xへさらに再送するが、このパケット644がスレーブS1−Xに到達したことを確認できていない。この場合、マスタM1は、第1データ部を含む最初のパケット641の送信を開始してからの経過時間が最大許容遅延時間を超えても、第1データ部を含むパケットがスレーブS1−Xに到達したことを確認できていないので、システムダウンする。
このように、第1データ部を含むパケットが最大許容遅延時間内にスレーブS1−Xに到達しなかった場合、マスタM1はシステムダウンして、スレーブS1−Xとの通信を継続できない。
本実施形態において、マスタM1のパケット衝突検知部104は、あるパケット(より詳しくは、あるデータ部を含むパケット)が最大許容遅延時間内にスレーブS1−Xに到達したか否かを検知する。ある遷移パターンで送信したパケットが最大許容遅延時間を超えてスレーブS1−Xに到達していないことを検知した場合、再設定部105は、周波数選択送信部102が別の遷移パターンでパケットをスレーブS1−Xへ送信するように制御する。この制御に応じて、周波数選択送信部102は、その別の遷移パターンでパケットをスレーブS1−Xへ送信する。周波数選択送信部102、パケット衝突検知部104、および再設定部105は、スレーブS1−Xに対して、良好な遷移パターンが選択されるまで、上述した動作を繰り返し行う。これにより、マスタM1とスレーブS1−Xとは、他の無線通信システム5−2,……,5−Mとの干渉が軽減された良好な遷移パターン(チャネルマップ)で通信を行うことができる。
あるいは、マスタM1が各スレーブS1−1,S1−2,……,S1−Nとのコネクションを確立し、チャネルの遷移パターンを選択する動作を開始した後に、稼働する別のマスタを徐々に増やしていくように構成してもよい。この場合、マスタM1とスレーブS1−1,S1−2,……,S1−Nとの通信に、別のマスタとスレーブとの通信が干渉するならば、受信電力が増加すると推定される。これは、干渉信号がない場合と比較して、干渉信号がある(すなわち無相関な信号が加わる)場合には、受信信号が増加するためである。そのため、パケット衝突検知部104は、マスタM1の受信電力が増加したか否かに応じて、マスタM1とスレーブとの通信と、別のマスタとスレーブとの通信とが干渉しているかどうかを判断できる。より具体的には、パケット衝突検知部104は、例えばマスタM1の受信電力の増加量が閾値以上である場合に、あるパケットが最大許容遅延時間内にスレーブS1−Xに到達していないと判断し得る。
<干渉の回避>
図23は、チャネルマップの多数の組み合わせを用いたシミュレーションにおいてシステムダウンが起きた回数(すなわち最大許容遅延時間を超えて連続するパケット衝突が起きた回数)に対する、チャネルマップの組み合わせの累積確率分布(Cumulative Distribution Function:CDF)の例を示す。このシミュレーションでは3つの無線通信システムがあるものとした。3つの無線通信システムには3台のマスタM1,M2,M3がそれぞれ設けられ、それら3台のマスタM1,M2,M3にそれぞれ20台のスレーブが接続される。また、最大許容遅延時間内にパケットを送信可能な回数は6回であるとした。つまり、最大許容遅延時間をホッピング時間間隔の6倍とした。
図14に示した例と同様に、マスタM1が20台のスレーブとの通信を開始する時刻と、マスタM2が20台のスレーブとの通信を開始する時刻とには、時間差Aがある。また、マスタM1が20台のスレーブとの通信を開始する時刻と、マスタM3が20台のスレーブとの通信を開始する時刻とには、時間差Bがある。各マスタM1,M2,M3が20台のスレーブとの通信を開始する時刻は、シミュレーションのために各マスタM1,M2,M3に対して生成されるチャネルマップの先頭の時刻に相当する。シミュレーションでは、時間差A,Bがランダムに変更され、HopIncrementの値がランダムに選択される周波数ホッピング方式で、各マスタM1,M2,M3のためのチャネルマップが生成される。
そして、3つのマスタM1,M2,M3に対してそれぞれ生成されるチャネルマップの組み合わせを用いたシミュレーションにおいて、最大許容遅延時間を超えて連続したパケット衝突(すなわちシステムダウン)を観測することにより、図23に示すCDFを導出している。
図23に示す例では、3台のマスタM1,M2,M3が存在する環境において、あるマスタに接続された1台のスレーブに着目した場合、98.7%のチャネルマップの組み合わせでは、最大許容遅延時間を超えて連続したパケット衝突が発生しないことが分かる。
図24は、チャネルマップの組み合わせを複数ランダムに発生させて行うシミュレーションにおいて、最大許容遅延時間を超えて連続したパケット衝突(システムダウン)が発生する例を示す。図24に示す例では、ある順番のチャネルマップの組み合わせ(ここでは36組目のチャネルマップ)を用いたシミュレーションを行った時点で、システムダウンが発生していることが分かる。
図25Aおよび図25Bは、周波数ホッピング毎に、マスタM1とスレーブS1−Xとの間で伝送されるパケットと、マスタM2とスレーブS2−Yとの間で伝送されるパケットが衝突し続ける場合の、2つのマスタM1,M2のチャネルマップの例をそれぞれ示す。図25AはマスタM1のチャネルマップ50−1を示し、図25BはマスタM2のチャネルマップ50−2を示す。
マスタM1のチャネルマップ50−1において、各領域651,652は、マスタM1とスレーブS1−Xとの通信のために割り当てられたタイムスロットとチャネルの組を示す。領域652に示されるタイムスロットとチャネルの組は、周波数ホッピングにより、領域651に示されるタイムスロットとチャネルの組に後続して、スレーブS1−Xに対して割り当てられる。
マスタM2のチャネルマップ50−2において、各領域661,662は、マスタM2とスレーブS2−Yとの通信のために割り当てられたタイムスロットとチャネルの組を示す。領域662に示されるタイムスロットとチャネルの組は、周波数ホッピングにより、領域661に示されるタイムスロットとチャネルの組に後続して、スレーブS2−Yに対して割り当てられる。
チャネルマップ50−1内の領域651と、チャネルマップ50−2内の領域661とは、同一のタイムスロットとチャネルの組を示している。したがって、これら領域651,661に相当する期間において、マスタM1とスレーブS1−Xとの通信は、マスタM2とスレーブS2−Yとの通信と干渉する。
さらに、周波数ホッピング後に割り当てられるチャネルマップ50−1内の領域652と、チャネルマップ50−2内の領域662も、同一のタイムスロットとチャネル番号の組を示している。したがって、これら領域652,662に相当する期間において、マスタM1とスレーブS1−Xとの通信は、マスタM2とスレーブS2−Yとの通信と干渉する。
このような場合には、周波数ホッピングを経ても、マスタM1とスレーブS1−Xとの通信が、マスタM2とスレーブS2−Yとの通信に干渉するので、最大許容遅延時間を超える連続したパケット衝突が発生し得る。しかしながら、マスタM1と他のスレーブ群との通信と、マスタM2と他のスレーブ群との通信とは、干渉しておらず、最大許容遅延時間を超える連続したパケット衝突が発生する確率は低いことが分かる。
図23に示したシミュレーション結果では、ある1台のスレーブとの通信において、98.7%のチャネルマップの組み合わせでシステムダウンが発生しない。この場合、あるマスタに接続される20台全てのスレーブとの通信においてシステムダウンが発生しない確率は約70%(≒98.720)である。つまり、統計上、3つの無線通信システムにおける10回の通信処理の内、7回の通信処理ではシステムダウンが発生しない良いチャネルマップの組み合わせが取得され、3回の通信処理ではシステムダウンが発生する悪いチャネルマップの組み合わせが取得されることになる。良いチャネルマップの組み合わせは、複数の無線通信システム間で干渉が発生しにくいチャネルマップの組み合わせである。悪いチャネルマップの組み合わせは、複数の無線通信システム間で干渉が発生しやすいチャネルマップの組み合わせである。
本実施形態では、この結果を考慮して、各マスタが、あるスレーブとの通信を運用し始める前に、他の無線通信システムとの干渉が発生しにくい、良い時系列のチャネルの遷移パターンを取得する。良い時系列のチャネルの遷移パターンは、上述した良いチャネルマップの組み合わせを構成するものである。
例えばマスタM1は、良い時系列のチャネルの遷移パターンを取得できるまで、スレーブS1−Xとのコネクションの確立と解除を繰り返し行う。上述した統計的な傾向によれば、マスタM1は少ない試行回数で、良い時系列のチャネルの遷移パターンを取得できる。取得された時系列のチャネルの遷移パターンは周期性を有するので、スレーブS1−Xとの通信を運用し始めた後も、他の無線通信システムとの干渉が発生しにくい良好な通信特性を維持できる。
なお、マスタM1は、スレーブS1−Xとの通信に割り当てる時系列のチャネルの遷移パターンが良好であるか否かを、最大許容遅延時間を超えて連続したパケット衝突が発生したか否かに応じて判断できる。したがって、マスタM1は、ある時系列のチャネルの遷移パターンが良好であるか否かを、最大許容遅延時間程度の短時間で判断できると云える。
図8に示したように、1台のマスタM1に20台のスレーブが接続される場合にも、チャネルマップ50にはいずれのスレーブにも割り当てられていない空きのタイムスロットが存在し得る。そのため、多数の無線通信システムによる通信処理が並行して行われる環境であっても、ある時系列のチャネルの遷移パターンによる通信を特定の時間以上試行するキャリブレーションが行われたことに応じて、マスタM1は良好な時系列のチャネルの遷移パターンを取得できる。
例えば、最大許容遅延時間が360ミリ秒であり、ホッピング時間間隔が60ミリ秒である場合を考える。悪い遷移パターンが用いられる場合には、ホッピング時間間隔毎にパケット衝突が発生するので、最大許容遅延時間(360ミリ秒)の計測を行ったならば、その遷移パターンが悪い遷移パターンであると判断できる。これに対して、最大許容遅延時間を超えてもパケット衝突が連続しない場合には、以降も周期性を利用して、その遷移パターンで安定した通信を行うことができる。したがって、ある遷移パターンによる通信を試行するキャリブレーションの時間は、理論的には最大許容遅延時間以上であればよいが、実際の無線通信システム5−1における運用上のマージンを考慮して、例えば数秒に設定され得る。
なお、マスタM1のパケット衝突検知部104は、図23を参照して上述したようなシミュレーションを利用することにより、統計的なパケット衝突確率を計算して、パケット衝突の検知を判断してもよい。パケット衝突検知部104はシミュレーションにおいて、例えば1台のスレーブに着目して干渉が発生する頻度を観測して、最大許容遅延時間を超えて連続するパケット衝突の確率Pを取得する。パケット衝突検知部104は、P1/Nを計算することにより、マスタM1とN台のスレーブS1−1,S1−2,……,S1−Nの各々の通信の全体について最大許容遅延時間を超えて連続するパケット衝突の確率を推定できる。
図26は、2つの無線通信システム5−1,5−2間で干渉が発生する例を示す。ここでは、図26(A)に示すように、マスタM1からスレーブS1−1への通信が、マスタM2からスレーブS2−1への通信に干渉している場合を例示する。
図26(B)を参照し、マスタM1のチャネルマップ50−1とマスタM2のチャネルマップ50−2とを用いてより具体的に説明する。チャネルマップ50−1内の領域711は、マスタM1とスレーブS1−1との通信に用いられるタイムスロットとチャネルの組を示す。チャネルマップ50−2内の領域721は、マスタM2とスレーブS2−1との通信に用いられるタイムスロットとチャネルの組を示す。
これら領域711,721は同一のタイムスロットとチャネルの組を示しているので、例えば、マスタM1からスレーブS1−1へ送信されたパケット712が、マスタM2からスレーブS2−1へ送信されたパケット722と衝突し得る。
図27は、2つの無線通信システム5−1,5−2間で干渉が発生する別の例を示す。ここでは、図27(A)に示すように、スレーブS2−1からマスタM2への通信が、スレーブS1−1からマスタM1への通信に干渉している場合を例示する。
図27(B)に示すマスタM1のチャネルマップ50−1とマスタM2のチャネルマップ50−2の内容は、図26(B)を参照した上述した通りである。2つの領域711,721は同一のタイムスロットとチャネルの組を示しているので、例えば、スレーブS2−1からマスタM2へ送信されたパケット723が、スレーブS1−1からマスタM1へ送信されたパケット713と衝突し得る。
したがって、図26および図27に示したように、マスタからスレーブへの通信とスレーブからマスタへの通信のいずれでも、干渉が発生し得る。
また、図28は、マスタM1とスレーブS1−Xとの間の通信シーケンスの別の例を示す。上述したように、マスタM1とスレーブS1−Xが、例えばBLEに準拠した無線通信を行う場合、マスタM1からスレーブS1−Xへの情報の送信と、スレーブS1−XからマスタM1への情報の送信とは、ペアになっている。
このペアは、図28に示すように、マスタM1からスレーブS1−Xへの情報の送信D1と、スレーブS1−XからマスタM1へのACKの送信D2とで構成されていてもよい。マスタM1は、情報をスレーブS1−Xに送信した後に、スレーブS1−XからACKを受信したかどうかに応じて、干渉の有無を判断できる。
より具体的には、マスタM1のパケット衝突検知部104は、情報を含むパケットをスレーブS1−Xに送信してホッピング時間間隔が経過するまでに、スレーブS1−XからACKを含むパケットを受信した場合、パケット衝突が発生していないと判断する。また、パケット衝突検知部104は、情報を含むパケットをスレーブS1−Xに送信してホッピング時間間隔を超えても、スレーブS1−XからACKを含むパケットを受信しなかった場合、パケット衝突が発生していると判断する。このような判断を用いて、パケット衝突検知部104は、スレーブとの通信において最大許容遅延時間を超えて連続したパケット衝突(システムダウン)が発生したこと検知し得る。
<タイムスロットおよびチャネルの割り当ての再設定>
図29は、マスタM1がスレーブS1−Xに対して、タイムスロットとチャネルの組の割り当てに関する再設定を行った場合のチャネルマップ8の例を示す。
マスタM1の再設定部105は、パケット衝突検知部104によって最大許容遅延時間を超えて連続したパケット衝突が検知された場合、チャネルの割り当てに関する再設定を行う。この場合、再設定部105は、例えばHopIncrementとして用いられる値をランダムに選択することにより、HopIncrementを変更(再設定)する。
チャネルマップ8内の領域801〜805は、再設定前のHopIncrement(ここではHopIncrement=1)を用いて決定されたチャネルの遷移パターンを示す。領域806〜809は、再設定後のHopIncrement(ここではHopIncrement=4)を用いて決定されたチャネルの遷移パターンを示す。このように、再設定の前後では、HopIncrementが変更されたことにより、チャネルの遷移パターンが変化する。
再設定部105はさらに、パケット衝突検知部104によって最大許容遅延時間を超えて連続したパケット衝突が検知された場合に、タイムスロットの割り当てに関する再設定を行ってもよい。この場合、再設定部105はホッピング時間間隔を変更(再設定)する。なお、HopIncrementがスレーブ毎に変更されるのに対して、ホッピング時間間隔はマスタM1に接続される全てのスレーブS1−1,S1−2,……,S1−Nに対して変更される。これは、ホッピング時間間隔が全てのスレーブS1−1,S1−2,……,S1−Nに共通の値として用いられるためである。
次いで、図30および図31を参照して、最大許容遅延時間を超えて連続したパケット衝突が検知された場合に再設定の対象となるリンクの例を説明する。
図30は、複数の無線通信システム5−1,5−2,……,5−Nにおいて、最大許容遅延時間を超えて連続したパケット衝突が検知された例を示す。ここでは、マスタM1と複数のスレーブS1−1,S1−2,……,S1−Nそれぞれとの通信のための複数のコネクションを、それぞれリンクL1−1,L1−2,……,L1−Nと称している。また、マスタM2と複数のスレーブS2−1,S2−2,……,S2−Nそれぞれとの通信のための複数のコネクションを、それぞれリンクL2−1,L2−2,……,L2−Nと称している。
図30に示す例では、マスタM1とスレーブS1−1とのリンクL1−1と、マスタM2とスレーブS2−1とのリンクL2−1との間で、最大許容遅延時間を超えて連続したパケット衝突が検知されている。2つのリンクL1−1,L2−1間の干渉は、例えば図31に示すようなチャネルマップ50−1,50−2,……,50−Nからも確認できる。
この場合、マスタM1の再設定部105は、例えばリンクL1−1に対してチャネル割り当ての再設定(すなわちチャネル遷移パターンの再設定)を行う。マスタM1の再設定部105は、マスタM1の全てのリンクL1−1,L1−2,……,L1−Nに対してチャネル割り当ての再設定を行ってもよい。あるいは、マスタM1の再設定部105は、マスタM1の全てのリンクL1−1,L1−2,……,L1−Nに対してチャネルおよびタイムスロットの割り当ての再設定を行ってもよい。
また、マスタM2の再設定部105は、例えばリンクL2−1に対してチャネル割り当ての再設定を行う。マスタM2の再設定部105は、マスタM2の全てのリンクL2−1,L2−2,……,L2−Nに対してチャネル割り当ての再設定を行ってもよい。あるいは、マスタM2の再設定部105は、マスタM2の全てのリンクL2−1,L2−2,……,L2−Nに対してチャネルおよびタイムスロットの割り当ての再設定を行ってもよい。
なお、上述したマスタM1の再設定部105による再設定の動作と、マスタM2の再設定部105による動作は、いずれか一方が行われてもよいし、両方が行われてもよい。
図32から図34を参照して、各マスタM1,M2,……,MMによって実行される通信制御処理の手順の例について説明する。以下では、説明を分かりやすくするために、これらマスタM1,M2,……,MMの内のマスタM1が通信制御処理を実行する場合について例示するが、いずれのマスタも同様にして通信制御処理を実行し得る。
図32は、マスタM1によって実行される通信制御処理の手順の例を示すフローチャートである。
まず、マスタM1は別のマスタM2,……,MMと同期する(ステップS11)。マスタM1は、全てのマスタM1,M2,……,MMが有線接続されている水晶発振器6を用いて、別のマスタM2,……,MMと同期し得る。あるいは、マスタM1は別のマスタM2,……,MMの各々に同期信号を無線送信することにより、それら別のマスタM2,……,MMと同期してもよい。
次に、マスタM1は複数のスレーブS1−1,S1−2,……S1−Nの少なくともいずれかと同期する(ステップS12)。同期するスレーブは、例えばマスタM1とのコネクションを確立すべきスレーブである。マスタM1は同期信号を無線送信することにより、このスレーブと同期する。
なお、別のマスタM2,……,MMとの同期、および各スレーブS1−1,S1−2,……S1−Nとの同期は、以降、定期的に行われてもよい。
次いで、マスタM1は同期したスレーブS1−Xとの通信で用いられる時系列のチャネルの遷移パターンに関するキャリブレーション処理を行う(ステップS13)。キャリブレーション処理では、マスタM1を含む無線通信システム5−1と、他の無線通信システム5−2,……,5−Mとの干渉を軽減するように、スレーブS1−Xとの通信で用いられるチャネルを決定するための周波数ホッピングのパターンが選択される。キャリブレーション処理が完了したことに応じて、スレーブS1−Xとの通信で用いられる時系列のチャネルの遷移パターンが決定される。キャリブレーション処理の詳細な手順の例については、図33のフローチャートを参照して後述する。
マスタM1は決定された時系列のチャネルの遷移パターンを用いて、スレーブS1−Xとの通信処理を開始する(ステップS14)。マスタM1は、通信処理において、決定された時系列のチャネルの遷移パターンに従って特定されるチャネルで、スレーブS1−Xにパケットを送信すると共に、スレーブS1−Xからパケットを受信する。通信処理ではさらに、他の無線通信システム5−2,……,5−Mとの新たな干渉が発生した場合に、その干渉を軽減するようにキャリブレーション処理が行われ得る。通信処理の詳細な手順の例については、図34のフローチャートを参照して後述する。
次いで、マスタM1は、マスタM1とのコネクションを確立すべき別のスレーブがあるか否かを判定する(ステップS15)。コネクションを確立すべき別のスレーブがある場合(ステップS15のYES)、ステップS12に戻り、その別のスレーブに関する処理が行われる。
コネクションを確立すべき別のスレーブがない場合(ステップS15のNO)、通信制御処理を終了する。
以上の通信制御処理により、コネクションを確立した各スレーブS1−1,S1−2,……,S1−Nと、他の無線通信システム5−2,……,5−Mとの干渉を軽減するように選択した良好なチャネルの遷移パターンで通信を行うことができる。
図33は、マスタM1によって実行されるキャリブレーション処理の手順の例を示すフローチャートである。ここでは、マスタM1がスレーブS1−1,S1−2,……,S1−Nの1つを示すスレーブS1−Xに対するキャリブレーション処理を行う場合について例示するが、他のマスタM2,……,MMも、それぞれに接続されるスレーブS2−1,S2−2,……,S2−N、SM−1,SM−2,……,SM−Nの各々に対して、同様にキャリブレーション処理を行い得る。
まず、マスタM1はスレーブS1−Xとのコネクションを確立する(ステップS201)。例えばBLEに準拠したマスタM1とスレーブS1−Xとは、アドバタイズの状態を経てコネクションを確立する。
次いで、マスタM1はスレーブS1−Xとの通信に用いるチャネルの遷移パターンを決定するためのHopIncrementの値を決定し、直前のチャネル番号に0を設定し、キャリブレーション時間の計測を開始する(ステップS202)。HopIncrementは、スレーブS1−Xとの通信に用いるチャネルがホッピングする周波数間隔を示す。例えばBLEに準拠したマスタM1は、5から16までの整数値からランダムに選択した1つの整数値を、HopIncrementとして用いる。
直前のチャネル番号は、直前にスレーブS1−Xとの通信に用いられたチャネルの番号を示す。コネクションを確立した後、通信を開始する前の初期状態では、マスタM1は直前のチャネル番号として0を設定する。キャリブレーション時間は、決定したHopIncrementの値を用いた時系列のチャネルの遷移パターンによる通信が試行された時間(期間)を示す。
マスタM1は直前のチャネル番号とHopIncrementを用いて、スレーブS1−Xとの通信に用いるチャネルを決定する(ステップS203)。マスタM1は、例えば上述した式(1)に直前のチャネル番号(すなわちLastUnmappedChannel)とHopIncrementとを代入して、スレーブS1−Xとの通信に用いるチャネルを決定する。そして、マスタM1は決定したチャネルでスレーブS1−Xにパケットを送信すると共に、伝送時間の計測を開始する(ステップS204)。伝送時間は、マスタM1が第1情報(データ部)を含むパケットをスレーブS1−Xへ送信してから、この第1情報に応じた第2情報を含むパケットをスレーブS1−Xから受信するまでの時間を示す。第2情報は、スレーブS1−Xで取得された情報や、第1情報に対する応答を示す情報(例えばACK)である。
マスタM1はスレーブS1−Xからホッピング時間間隔内に、決定したチャネルでパケットを受信したか否かを判定する(ステップS205)。パケットを受信した場合(ステップS205のYES)、すなわち他の無線通信システム5−2,……,5−Mとの干渉によるパケット衝突が発生することなく、パケットの送受信が行われた場合、マスタM1は直前のチャネル番号として、現在使用しているチャネルの番号を設定する(ステップS206)。そして、マスタM1はキャリブレーション時間が閾値を超えたか否かを判定する(ステップS207)。この閾値は、ステップS202で決定したHopIncrementの値を用いた時系列のチャネルの遷移パターンによる通信が、他の無線通信システム5−2,……,5−Mに対して干渉しにくいことを十分に確認できる期間(例えば数秒)に相当する。
キャリブレーション時間が閾値以下である場合(ステップS207のNO)、ステップS203に戻り、HopIncrementの値を用いて決定される時系列のチャネルの遷移パターンによる通信の試行を続行する。
キャリブレーション時間が閾値を超えた場合(ステップS207のYES)、マスタM1はキャリブレーション処理を終了する。つまり、マスタM1はHopIncrementの値を用いて決定される時系列のチャネルの遷移パターンによる通信の試行が十分に行われたので、スレーブS1−Xとの通信に適切なチャネルの遷移パターンが選択されたと判断する。これにより、他の無線通信システム5−2,……,5−Mとの間でパケット衝突が継続的に発生することを回避できる。
また、スレーブS1−Xからホッピング時間間隔内に、決定したチャネルでパケットを受信しなかった場合(ステップS205のNO)、すなわちパケットの送信と受信の少なくとも一方で、他の無線通信システム5−2,……,5−Mとの干渉によるパケット衝突が発生したと推定される場合、マスタM1は伝送時間が最大許容遅延時間を超えたか否かを判定する(ステップS208)。
伝送時間が最大許容遅延時間以下である場合(ステップS208のNO)、マスタM1は直前のチャネル番号として、現在使用しているチャネルの番号を設定する(ステップS209)。マスタM1は直前のチャネル番号とHopIncrementを用いて、スレーブS1−Xとの通信に用いる新たなチャネルを決定する(ステップS210)。そして、マスタM1は、決定したチャネルでスレーブS1−Xにパケットを再送し(ステップS211)、ステップS205に戻る。つまり、新たなチャネルでスレーブS1−Xからパケットが受信されたか否かに応じた処理を行う。
これに対して、伝送時間が最大許容遅延時間を超えた場合(ステップS208のYES)、マスタM1はスレーブS1−Xとのコネクションを解除し(ステップS212)、ステップS201に戻る。より詳しくは、マスタM1は現在のHopIncrementの値を用いて決定される時系列のチャネルの遷移パターンによる通信では、他の無線通信システム5−2,……,5−Mとの間でパケット衝突が継続的に発生しているので、適切なチャネルの遷移パターンが選択されていないと判断する。そのため、マスタM1はスレーブS1−Xとのコネクションを確立し直すことにより、新たなHopIncrementの値を用いて決定されるチャネルの遷移パターンによる通信をさらに試行する。このように、適切なチャネルの遷移パターンが選択されるまで、キャリブレーション処理の手順が繰り返し行われる。
以上のキャリブレーション処理により、マスタM1はスレーブS1−Xに対して、現在の通信状況に対して良好な時系列のチャネルの遷移パターンを選択できる。マスタM1は、スレーブS1−Xとのコネクションを確立して最初に、良好なチャネルの遷移パターンを選択する。選択されたチャネルの遷移パターンは周期性を有しているので、他の無線通信システム5−2,……,5−Mとの干渉が軽減された状態を維持して、スレーブS1−1との通信を継続できる。
図34は、マスタM1によって実行される通信処理の手順の例を示すフローチャートである。図32のフローチャートを参照して上述したように、マスタM1はキャリブレーション処理が完了した後に通信処理を開始する。ここでは、マスタM1がスレーブS1−Xに対する通信処理を行う場合について例示するが、他のマスタM2,……,MMも、それぞれに接続されるスレーブS2−1,S2−2,……,S2−N、SM−1,SM−2,……,SM−Nの各々に対して、同様に通信処理を行い得る。
まず、マスタM1は直前のチャネル番号とHopIncrementとを用いて、スレーブS1−Xとの通信に用いるチャネルを決定する(ステップS301)。マスタM1は、決定したチャネルでスレーブS1−Xにパケットを送信すると共に、伝送時間の計測を開始する(ステップS302)。
次いで、マスタM1はホッピング時間間隔内に、スレーブS1−Xから、決定したチャネルでパケットを受信したか否かを判定する(ステップS303)。パケットを受信した場合(ステップS303のYES)、すなわち他の無線通信システム5−2,……,5−Mとの干渉によるパケット衝突が発生することなく、パケットの送受信が行われた場合、マスタM1は受信したパケットに応じた処理を行い(ステップS304)、直前のチャネル番号として、現在使用しているチャネルの番号を設定する(ステップS305)。
そして、マスタM1はスレーブS1−Xとの通信を終了するか否かを判定する(ステップS306)。スレーブS1−Xとの通信を続行する場合(ステップS306のNO)、ステップS301に戻り、周波数ホッピング方式で決定される次のチャネルでパケットを送受信するための処理が行われる。
一方、スレーブS1−Xとの通信を終了する場合(ステップS306のYES)、マスタM1はスレーブS1−Xとのコネクションを解除し(ステップS307)、通信処理を終了する。
また、スレーブS1−Xからホッピング時間間隔内に、決定したチャネルでパケットを受信しなかった場合(ステップS303のNO)、マスタM1は伝送時間が最大許容遅延時間を超えたか否かを判定する(ステップS308)。伝送時間が最大許容遅延時間以下である場合(ステップS308のNO)、マスタM1は直前のチャネル番号として、現在使用しているチャネルの番号を設定する(ステップS309)。マスタM1は直前のチャネル番号とHopIncrementを用いて、スレーブS1−Xとの通信に用いる新たなチャネルを決定する(ステップS310)。そして、マスタM1は、決定したチャネルでスレーブS1−Xにパケットを再送し(ステップS311)、ステップS303に戻る。つまり、新たなチャネルでスレーブS1−Xからパケットが受信されたか否かに応じた処理を行う。
これに対して、伝送時間が最大許容遅延時間を超えた場合(ステップS308のYES)、マスタM1はスレーブS1−Xとのコネクションを解除する(ステップS212)。そして、マスタM1はスレーブS1−Xに対するキャリブレーション処理を行い(ステップS313)、ステップS301に戻る。キャリブレーション処理の具体的な手順については、図33のフローチャートを参照して上述した通りである。つまり、マスタM1は現在のHopIncrementの値を用いて決定されるチャネルの遷移パターンによる通信では、他の無線通信システム5−2,……,5−Mとの間でパケット衝突が継続的に発生しているので、適切なチャネルの遷移パターンが選択されていないと判断する。そのため、マスタM1はキャリブレーション処理を再度行うことにより、スレーブS1−Xに対して、現在の通信状況に適した時系列のチャネルの遷移パターンを選択する。
なお、伝送時間が最大許容遅延時間を超えた場合、マスタM1はスレーブS1−Xだけに対するキャリブレーション処理を行うのではなく、マスタM1に接続されている全てのスレーブS1−1,S1−2,……,S1−Nに対するキャリブレーション処理を行ってもよい。つまり、マスタM1はこれらスレーブS1−1,S1−2,……,S1−Nの各々に関して、適切な時系列のチャネルの遷移パターンを選択し直してもよい。
以上の通信処理により、マスタM1はキャリブレーション処理で取得された良好な時系列のチャネルの遷移パターンに従ってパケットの送受信を行うと共に、通信状況が悪化した場合にはキャリブレーション処理を再度行って、良好な時系列のチャネルの遷移パターンを選択し直すことができる。
図35は、各スレーブS1−1,S1−2,……,S1−N,S2−1,S2−2,……,S2−N、SM−1,SM−2,……,SM−Nによって実行される通信制御処理の手順の例を示すフローチャートである。以下では、説明を分かりやすくするために、スレーブS1−Xが通信制御処理を実行する場合について例示するが、いずれのスレーブも同様にして通信制御処理を実行し得る。
まず、スレーブS1−Xは、このスレーブS1−Xが接続すべきマスタM1と同期する(ステップS51)。スレーブS1−Xは、例えばマスタM1から受信した同期信号を用いて、マスタM1と同期する。スレーブS1−XはマスタM1から定期的に同期信号を受信して、マスタM1と同期し得る。
スレーブS1−XはマスタM1とのコネクションを確立する(ステップS52)。例えばBLEに準拠したスレーブS1−XとマスタM1とは、アドバタイズの状態を経てコネクションを確立する。
スレーブS1−XはマスタM1からパケットを受信したか否かを判定する(ステップS53)。パケットを受信した場合(ステップS53のYES)、スレーブS1−Xは、そのパケットを受信したチャネルで、応答のためのパケットをマスタM1に送信する(ステップS54)。パケットの送受信に用いるチャネルは、マスタM1からスレーブS1−Xに予め通知され得る。あるいは、スレーブS1−Xが、マスタM1からパケットを受信したチャネルを、応答のためのパケットをマスタM1に送信するために用いるべきチャネルと判断してもよい。
なお、マスタM1からパケットを受信していない場合(ステップS53のNO)、ステップS54の手順はスキップされる。
次いで、スレーブS1−XはマスタM1とのコネクションが解除されたか否かを判定する(ステップS55)。マスタM1とのコネクションが解除されていない場合(ステップS55のNO)、ステップS53に戻り、パケットの受信と送信のための処理が続行される。
一方、マスタM1とのコネクションが解除された場合(ステップS55のYES)、スレーブS1−Xは通信制御処理を終了する。スレーブS1−Xは、例えばアドバタイズの状態に戻る。
以上の通信制御処理により、スレーブS1−Xは、マスタM1によって決定されたチャネルで、マスタM1からパケットを受信し、マスタM1にパケットを送信できる。
以上説明したように、本実施形態によれば、他の無線通信システムとの干渉を軽減できる。マスタM1の周波数選択送信部102は、通信状況に応じて、第1乃至第n(nは2以上の整数)期間において第1乃至第n周波数帯を用いる第1順番である第1パターンと、第1乃至第n期間において第1乃至第n周波数帯を用いる第1順番とは異なる第2順番である第2パターンと、を少なくとも含む複数のパターンのいずれかにより、スレーブS1−Xへ信号を送信する。パケット衝突検知部104、再設定部105、および周波数選択送信部102は、通信状況に応じて、これら複数のパターンのうちいずれを用いるかを切り替える。受信復調部103は、スレーブS1−Xへ直前に信号を送信したときに用いた第1乃至第n周波数帯のいずれかと同一の周波数帯により、スレーブS1−Xから信号を受信する。
また、スレーブS1−Xの受信復調部202は、第1乃至第n(nは2以上の整数)期間において第1乃至第n周波数帯を用いる第1順番である第1パターンと、第1乃至第n期間において第1乃至第n周波数帯を用いる第1順番とは異なる第2順番である第2パターンと、を少なくとも含む複数のパターンのうち、マスタM1によって通信状況に応じて切り替えられた1つのパターンにより、マスタM1から信号を受信する。送信部203は、マスタM1から直前に信号を受信したときに用いた第1乃至第n周波数帯のいずれかと同一の周波数帯により、マスタM1へ信号を送信する。
これにより、マスタM1とスレーブS1−Xとは通信状況に応じて切り替えた良好な遷移パターンで通信を行うので、他の無線通信システム5−2,……,5−Mとの干渉を軽減できる。
本実施形態に記載された様々な機能の各々は、回路(処理回路)によって実現されてもよい。処理回路の例には、中央処理装置(CPU)のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム(命令群)を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。本実施形態に記載されたCPU以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
また、本実施形態の各種処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。