以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、以下で説明する実施の形態は、いずれも包括的又は具体的な例を示すものである。以下の実施の形態で示される数値、形状、材料、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序等は、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、独立請求項に記載されていない構成要素については、任意の構成要素として説明される。
(実施の形態)
[構成]
<概要>
まず、図1~図3を参照しながら、実施の形態に係る通信装置及び当該通信装置を複数備える通信システムについて説明する。
図1は、実施の形態に係る通信システム500の概要を説明するための模式図である。図2は、実施の形態に係る通信装置100の特徴的な機能構成を示すブロック図である。
なお、以下の説明では、子機101~104を特に区別しない場合、子機101~104を一般化して子機100と呼称して説明する場合がある。
また、以下の説明では、センサ401~404を特に区別しない場合、センサ401~404を一般化してセンサ400と呼称して説明する場合がある。
通信システム500は、例えば、複数のセンサ400によって検出されたデータを、そのそれぞれに接続された複数の子機(通信装置)100、及び、複数の子機100それぞれと無線通信可能な親機200を介して端末装置300に集めるシステムである。
本実施の形態では、通信システム500は、複数の子機100と、親機200と、端末装置300と、複数のセンサ400と、を備える。
本実施の形態では、通信システム500は、4個の子機100と、4個の子機100に1つずつ通信可能に接続された4個のセンサ400と、4個の子機100と通信可能に接続された1つの親機200と、親機200と通信可能に接続された端末装置300と、を備える。なお、通信システム500が備える子機100及びセンサ400の数は、特に限定されない。通信システム500は、N(Nは2以上の整数)個の子機100と、N個の子機100に1つずつ通信可能に接続されたN個のセンサ400と、を備えていればよい。
子機100は、通信システム500において、センサ400、及び、親機200と通信する複数の通信装置である。具体的には、子機100は、センサ400で検出されたデータ(センサデータ)を取得し、親機200に無線通信によって送信する。子機100は、センサ400が検出したセンサデータを親機200に送信する中継機として機能する。
親機200は、複数の子機100と無線通信可能に接続されており、且つ、端末装置300と通信可能に接続されている通信装置である。親機200は、例えば、アクセスポイントである。なお、親機200は、端末装置300と無線通信可能に接続されていてもよいし、有線通信可能に接続されていてもよい。
端末装置300は、複数のセンサ400で検出された温度を示すセンサデータを収集する装置である。端末装置300は、例えば、パーソナルコンピュータ、サーバ装置等のコンピュータ、タブレット端末、スマートフォン等である。
センサ400は、任意の情報を検出することができるセンサである。センサ400は、例えば、産業機器に設置され当該産業機器の稼働状態(温度や可動部品の座標位置情報など)を検出するセンサであって、本実施の形態では、温度を検出するための温度センサとする。センサ400は、例えば、検出した温度を示すセンサデータ(温度データ)を、センサ400と通信可能に接続された子機100に送信する。子機100は、センサ400が送信した温度データを受信することで、当該温度データであるセンサデータを取得する。例えば、センサ400は、予め定められた時刻に、温度を検出して、検出した温度を示すセンサデータを子機100に送信する。
また、子機100は、センサ400から取得したセンサデータを、Bluetooth(登録商標)に基づく無線通信で他の子機105に送信する。
なお、他の子機105とは、例えば、図1に示す子機101を図2における通信装置100とする場合、子機102~104である。
ここで、本実施の形態では、子機100のそれぞれと他の子機105のそれぞれの間で行う無線通信は、例えば、BLE(Bluetooth Low Energy)に準拠したアドバタイズ通信によって行われる。より具体的には、子機100のそれぞれはセンサ400のそれぞれから取得したデータをBLEの通信パケットであるアドバタイジングパケットに格納し、他の子機105との間で送受信を行う。なお、アドバタイズ通信は、ブロードキャスト方式で通信される。
また、子機100は、他の子機105から送信されてきたセンサデータ(以下、第1データという)を含むパケットを受信した場合、自装置に接続するセンサ400から取得したセンサデータ(以下、第2データという)、及び、他の子機105から受信したパケットに含まれる第1データを含むパケットを親機200に無線通信で送信する。より具体的には、子機100は、自装置に接続するセンサ400から取得したセンサデータである第2データ、及び、他の子機105から受信したパケットに含まれるセンサデータである第1データを、それぞれのセンサデータを検出したセンサ400と接続されている子機を識別できる情報(例えば、後述する識別子情報163やMAC(Media Access Control)アドレス等)と紐づけて、当該情報と紐付けられたこれらのセンサデータを親機200に無線通信で送信する。
例えば、子機101が、センサ401から取得した第1センサデータである第2データを含むパケットを無線通信で親機200に送信し、且つ、センサ401から取得した第1センサデータを含むパケットをBluetoothに基づく無線通信で子機102~104へ送信したとする。この場合、子機102は、子機101から送信された第1センサデータである第1データを含むパケットを受信した場合に、第1データ(子機101がセンサ401から取得した第1センサデータ)及び第2データ(センサ402から取得した第2センサデータ)を含むパケットを送信する時刻である送信タイミングを算出し、算出した送信タイミングで当該パケットを送信する。具体的には、子機102は、子機101が送信した第1センサデータである第1データを含むパケットを受信した時刻に基づいて、パケットを送信する送信タイミングを算出し、算出した送信タイミングで、第1データ及び第2データを含むパケットを親機200に送信する。
さらに、子機100は、算出した送信タイミングで、第2データを含むパケットを、Bluetoothに基づく無線通信で他の子機105に送信する。(前述の例で言うと、子機102はセンサ402から取得した第2センサデータを第2データとしてこれを含むパケットを他の子機105に送信する。)具体的には、複数の子機100は、パケットを送信するタイミングである送信タイミングが互いに異なるように、送信タイミングを算出する。
このように、通信システム500が備える複数の子機100は、それぞれ、自装置に接続したセンサ400から取得したセンサデータ(第2データ)及び他の子機105から取得したセンサデータ(第1データ)を親機200に無線通信(例えば無線LANに基づく無線通信)で送信し、且つ、自装置に接続したセンサ400から取得したセンサデータ(第2データ)のみをBluetoothに基づく無線通信で他の子機105に送信する。また、子機100のBluetoothに基づく無線通信では、それぞれ、互いに異なる送信タイミングでパケットを送信する。
ここで、本実施の形態では、上述したように子機100が親機200に第1データ及び第2データを含むパケット送信するタイミングは、子機100が第1データを含むパケットを受信した時刻に基づいて算出する送信タイミングとしているが、当該送信タイミングは、子機100と親機200との間の無線通信(例えば無線LANに基づく無線通信)であるIEEE802.11に基づく通信規格に準拠した送信タイミングでもよい。つまり、子機100のそれぞれが他の子機105に第1データを含むパケットを送信するタイミングと子機100のそれぞれが親機200に第1データ及び第2データを含むパケットを送信するタイミングは異なっていてもよい。
なお、複数の子機100のうち、1番目にパケットを送信する子機100のBluetoothに基づく無線通信では、送信タイミングを算出しなくてもよい。
例えば、図1に示す子機101が1番目にパケットを送信し、2番目以降、順に子機102、103、104がパケットを送信する場合、子機101(第1通信装置)は、送信タイミングを算出せずに予め定められた送信タイミングに無線通信で第2データを含むパケットを親機200に送信し、且つ、Bluetoothに基づく無線通信で第2データを含むパケットを子機102、103、104(第2通信装置)送信する。
<子機>
続いて、図2及び図3を参照しながら、実施の形態に係る子機100の構成の詳細について説明する。
図2に示されるように、子機100は、第1通信部110と、第2通信部120と、算出部130と、制御部140と、取得部150と、記憶部160と、を備える。
第1通信部110は、親機200と無線通信するための無線アダプタ等を有する通信インターフェースである。第1通信部110は、例えば、制御部140に制御されることで、センサ400から取得したセンサデータを親機200に送信する。
第1通信部110による無線通信に採用される通信規格は、特に限定されない。第1通信部110による無線通信に採用される通信規格は、例えば、Wi-Fi(登録商標)、Bluetooth、BLE、ANT(登録商標)、Zigbee(登録商標)等の一般的に普及されている通信規格でもよいし、独自の通信規格でもよい。なお、本実施の形態では、第1通信部110は、IEEE802.11に基づいて(つまり、IEEE802.11に基づく通信規格で)無線通信をするものとして説明する。
第2通信部120は、Bluetoothに基づく通信規格で他の子機105と無線通信するための無線アダプタ等を有する通信インターフェースである。より具体的には、本実施の形態では、第2通信部120は、Bluetoothに基づく無線通信に、BLEを用いるものとして説明する。
算出部130は、他の子機105から第2通信部120を介してセンサデータ(第1データ)を含むパケットを受信した場合に、当該第1データを含むパケットを受信した時刻に基づいて、パケットを送信する送信タイミングを算出する処理部である。
制御部140は、算出部130が算出した送信タイミングで、第1データ及びセンサ400から取得したセンサデータ(第2データ)を含むパケットを、第1通信部110を介して親機200に送信する処理部である。
また、制御部140は、算出部130が算出した送信タイミングで、さらに、センサ400から取得した第2データを含むパケットを、第2通信部120を介して送信する。すなわち、制御部140は、センサ400から取得した第2データを含むパケットを、Bluetoothに基づく通信規格で他の子機105に送信する。
このように、制御部140は、算出部130が算出した送信タイミングで第1通信部110を介して親機200にパケットを送信し、且つ、第2通信部120を介してBluetoothに基づく無線通信で他の子機105にパケットを送信する。
なお、子機100は、時間を計測するためのRTC(Real Time Clock)等の計時部を備えてもよい。
取得部150は、自装置に接続したセンサ400で検出されたセンサデータを取得するための処理部である。取得部150は、具体的には、通信インターフェース(例えばシリアルインターフェースなど)を有し、当該通信インターフェースを介してセンサ400と通信可能に接続されている。取得部150は、通信インターフェースを介してセンサ400からセンサデータである第2データを取得する。取得部150は、通信線でセンサ400と通信可能に接続されていてもよいし、無線通信によってセンサ400と接続されていてもよい。
算出部130、制御部140、及び、取得部150等の子機100が備える各処理部は、例えば、記憶部160に記憶されている制御プログラムと、当該制御プログラムを実行するCPU(Centrral Proseccing Unit)と、により実現される。
また、例えば、算出部130は、第1データを含むパケットを受信した時刻及び時間情報161に基づいて送信タイミングを算出する。また、この場合、例えば、制御部140は、時間情報161が示す時間Tadv(図3に示す)内に、第1データ及び第2データを含むパケットを、第1通信部110を介して送信し、且つ、第2データを含むパケットを、第2通信部120を介して送信する。例えば、時間情報161は、記憶部160に記憶されている。
記憶部160は、時間情報161を記憶する記憶装置である。
時間情報161は、パケットの送信を許可する時間Tadv(図3に示す)を示す情報である。子機100は、親機200及び他の子機105に第2データを含むパケットを送信する場合、各子機101~104(図1に示す)における送信タイミングから時間情報161が示す時間Tadv(図3に示す)の間だけ当該パケットを送信し、他の時刻においては、パケットを送信しない。
時間情報161が示す時間Tadv(図3に示す)は、予め任意に定められてよく、特に限定されない。時間Tadv(図3に示す)は、例えば、150msec.と定められている。
また、記憶部160は、例えば、算出部130、制御部140、及び、取得部150等の子機100が備える各処理部が実行する制御プログラムを記憶する。
記憶部160は、例えば、ROM(ReadOnly Memory)、RAM(Random Access Memory)等により実現される。
また、例えば、算出部130は、第1データを含むパケットを受信した時刻、時間情報161、及び、順序情報162に基づいて送信タイミングを算出する。順序情報162は、複数の子機100がパケットを送信する順序を示すデータである。例えば、記憶部160は、さらに、複数の子機100がパケットを送信する順序を示す順序情報162を記憶する。
図3は、順序情報162の具体例を示す図である。
図3に示すように、順序情報162には、複数の子機100を識別するための識別子と、それぞれの識別子が示す子機100がパケットを送信してもよい順序を示す情報とが記憶されている。図3には、4個の子機100それぞれに、1から4までの互いに異なる識別子が割り振られており、且つ、1から4までの順で順番に子機100がパケットを送信する順序が割り振られている場合を例示している。
記憶部160は、自装置及び他の子機105の識別子を示す識別子情報163を予め記憶している。算出部130は、第1データを含むパケットを受信した時刻、時間情報161、及び、順序情報162に基づいて送信タイミングを算出する。
例えば、識別子情報163が示す識別子が1の子機100が備える制御部140は、任意の送信タイミング(時刻t0)から時間情報161が示す時刻t1までの間(時間Tadvの間)にパケットを送信する。
このように、例えば、算出部130は、順序情報162が示す、複数の子機100のうちパケットを送信する順序が1番目である場合、送信タイミングを算出しない。この場合、制御部140は、予め定められた送信タイミングで第1データを含むパケットを送信する。
そのため、順序情報162が示す、複数の子機100のうちパケットを送信する順序が1番目である子機は、算出部130を有さなくてもよい。つまり、パケットを送信する順序が1番目である子機は、他の子機105からデータ(第1データ)が送信されておらず、自装置と他の子機105との間でパケットの衝突が起こらないため、自装置の送信タイミングで送信することができるからである。
もちろん、複数の子機100のうちで初めにパケットを送信する子機100は、2回目以降にさらにパケットを送信する場合には、他の子機105が送信したパケットを受信した時刻に基づいて送信タイミングを算出してもよい。
図3の説明に戻って、例えば、識別子が1の子機100が備える制御部140は、時刻t0にパケットを送信したとする。
これを受け、識別子が2の子機100は、時刻t0に第2通信部120を介して、第1データを含むパケットを識別子が1の子機(他の子機105)から受信する。この場合、識別子が2の子機100が備える算出部130は、時刻t0から時間Tadv後の時刻t1を送信タイミングとして算出する。
例えば、子機100が第2通信部120を介して送信するパケットには、送信元である子機100の識別子を示す情報が含まれている。算出部130は、制御部140が第2通信部120を介して受信したパケットから、当該パケットに含まれる送信元の他の子機105を示す識別子を取得し、送信タイミングを算出する。
ここで、本実施の形態では、予め割り振られる識別子が1の子機100を、パケットを送信する順序の1番目と決めたが、どの識別子の子機100を1番目にするかはユーザーが任意(例えば識別子が5の子機100を1番目とするなど)に決めることにしてもよい。
また、順序情報162には、複数の子機100それぞれのMACアドレス等の、パケットに含まれ、且つ、機器固有の情報が、複数の子機100それぞれに紐づけられて含まれていてもよい。これによれば、子機100が第2通信部120を介して送信するパケットに子機100の識別子を示す情報が含まれていなくても、子機100の識別子は、特定され得る。
図3に戻り、識別子が2の子機100が備える制御部140は、時刻t1から、時間Tadv後である時刻t2までの間にパケットを送信する。
また、識別子が3の子機100は、時刻t0に第2通信部120を介して、第1データを含むパケットを識別子が1の子機(他の子機105)から受信する。この場合、識別子が3の子機100が備える算出部130は、時刻t0から時間Tadv×2後の時刻t2を送信タイミングとして算出する。
また、識別子が3の子機100が備える制御部140は、時刻t2から、時間Tadv後である時刻t3までの間にパケットを送信する。
このように、他の子機105からパケットを受信した子機100は、順序情報162及び識別子情報163に基づいて、受信したパケットを送信した他の子機105及び自装置の識別子から、自装置がパケットを送信する送信タイミングを算出する。
なお、時間情報161、順序情報162、及び、識別子情報163は、例えば、子機100が特定の箇所に設置される前に予め記憶部160に記憶されていてもよい。また、例えば、子機100がそれぞれ特定の箇所に設置された後で、制御部140は、端末装置300から親機200を介して送信された時間情報161、順序情報162、及び、識別子情報163を含むパケットを、第1通信部110を介して受信し、受信したパケットに含まれている時間情報161、順序情報162、及び、識別子情報163を記憶部160に記憶させてもよい。
また、図3に示すように、例えば、制御部140は、他の子機105に第2通信部120を介してパケットを送信していない間、他の子機105が送信したパケットを受信できるような状態となっている。例えば、通信システム500がN個の子機100を備える場合、子機100が他の子機105が送信したパケットを受信できるような状態となる時間Tscanは、時間情報161が示す時間Tadv×(N-1)となる。
また、子機100がパケットを受信した時刻と他の子機105が当該パケットを送信した時刻とを同じ時刻として説明したが、これらの時刻は異なることが想定される。そのため、算出部130は、例えば、送信タイミングを算出する際に、予め定められた定数を加算等してもよい。つまり、子機100がパケットの送信を許可される時間(時間Tadv)は、複数の子機100のそれぞれの時刻同期がなされていなくても(受信した時刻が同じでなくても)、実際にパケットの送信に必要な時間と複数の子機100間で時刻のずれを十分に考慮した数値を予め設定することで対応できる。
[処理手順]
続いて、図4~図6を参照しながら、子機100の処理手順及び通信システム500の処理手順について説明する。
図4は、実施の形態に係る子機100がデータを送信する処理手順を説明するためのフローチャートである。
まず、取得部150は、自装置に接続するセンサ400が検出した情報を示すセンサデータ(第2データ)を取得する(ステップS101)。なお、ステップS101は、任意のタイミングで実行されればよい。
次に、制御部140は、子機100が他の子機105から送信された、センサデータ(第1データ)を含むパケットを、第2通信部120を介して受信する(ステップS102)。
次に、算出部130は、例えば、記憶部160に記憶されている時間情報161及び順序情報162を記憶部160から取得する(ステップS103)。なお、ステップS103では、算出部130は、例えば、端末装置300から親機200及び第1通信部110を介して、時間情報161及び順序情報162を含むパケットを受信することで、時間情報161及び順序情報162を取得してもよい。
次に、算出部130は、時間情報161及び順序情報162に基づいて、送信タイミングを算出する(ステップS104)。
次に、制御部140は、ステップS104で算出部130が算出した送信タイミングで、第1通信部110を介してステップS102で受信したパケットに含まれる第1データ及びステップS101で自装置に接続するセンサ400から取得した第2データを含むパケットを親機200に送信する(ステップS105)。具体的には、ステップS105では、制御部140は、ステップS104で算出部130が算出した送信タイミングから時間情報161が示す時間Tadv後の時刻までの間に、第1通信部110を介してステップS102で受信したパケットに含まれる第1データ及びステップS101でセンサ400から取得した第2データを含むパケットを親機200に送信する。
次に、制御部140は、ステップS104で算出部130が算出した送信タイミングで、第1通信部110を介してステップS102で受信したパケットに含まれる第1データ及びステップS101でセンサ400から取得した第2データを含むパケットを送信する(ステップS106)。具体的には、ステップS106では、制御部140は、ステップS104で算出部130が算出した送信タイミングから時間情報161が示す時間Tadv後の時刻までの間に、第2通信部120を介してステップS101で受信したパケットに含まれる第2データを含むパケットを送信する。
なお、ステップS106では、制御部140は、第2通信部120を介して、ブロードキャストで他の子機105にパケットを送信する。
また、図4示す各ステップの順序は、あくまで一例である。例えば、ステップS101は、ステップS105を実行する前までに実行されればよく、例えば、ステップS104の後に実行されてもよい。また、例えば、ステップS105とステップS106とが実行される順序は、逆でもよい。
また、ステップS105では、制御部140は、複数の他の子機105から複数の第1データを取得している場合、全ての第1データを含めたパケットを親機200に送信してもよいし、一部の第1データを含むパケットを親機200に送信してもよい。例えば、制御部140は、センサ400から取得部150が取得した第2データと、複数の他の子機105から取得した複数の第1データのうちの予め定められた数の第1データとを含むパケットを、親機200に送信してもよい。複数の他の子機105から取得した複数の第1データのうちの予め定められた数及び選択基準は、任意に定められてよい。例えば、制御部140は、遅い時刻に受信したパケットに含まれる第1データを5つまでパケットに含めて、当該パケットを、第1通信部110を介して親機200に送信してもよい。
図5は、実施の形態に係る通信システム500が備える各装置の処理手順の第1例を説明するためのシーケンス図である。なお、以下の説明では、子機101を示す識別子が1であり、子機102を示す識別子が2であり、子機103を示す識別子が3であるとする。また、順序情報162は、識別子が1、2、3、・・・の順で送信する情報であるとする。また、子機101と接続されたセンサ401により取得されたセンサデータを第1センサデータとし、子機102と接続されたセンサ402により取得されたセンサデータを第2センサデータとし、子機103と接続されたセンサ403により取得されたセンサデータを第3センサデータとしている。
また、図5に示す破線矢印は、第1通信部110を介した無線通信(例えば、IEEE802.11に基づく無線通信)であることを示す。また、図5に示す一点鎖線矢印は、第2通信部120を介した無線通信(Bluetoothに基づく無線通信)であることを示す。
まず、子機101~104は、それぞれに接続するセンサ401~404(図1参照)からセンサデータを取得する(ステップS201)。ステップS201では、それぞれの子機101~104は、図4に示すステップS101を実行する。ステップS201では、子機101はセンサ401から第1センサデータを取得し、子機102はセンサ402から第2センサデータを取得し、子機103はセンサ403から第3センサデータを取得する。
次に、識別子1が示す子機101は、センサ401から取得した第1センサデータ(第2データ)を含むパケットを親機200に無線通信で送信する(ステップS202)。
次に、子機101は、第2データを含むパケットを他の子機105にBluetoothに基づく無線通信(ブロードキャスト通信)で送信する(ステップS203)。
親機200は、例えば、受信したパケットに含まれる第1センサデータを端末装置300に送信する(ステップS204)。
次に、各子機102~104は、それぞれ送信タイミングを算出する(ステップS205)。具体的には、ステップS205では、各子機102~104は、それぞれ、図4に示すステップS103及びステップS104を実行する。
次に、識別子2が示す子機102は、子機101から受信したパケットに含まれる第1センサデータ(第1データ)、及び、センサ402から取得した第2センサデータ(第2データ)を含むパケットを親機200に無線通信で送信する(ステップS206)。
次に、子機102は、第2データを含むパケットを他の子機101、103、104にBluetoothに基づく無線通信で送信する(ステップS207)。
親機200は、例えば、受信したパケットに含まれる子機101がセンサ401から取得した第1センサデータ、及び、子機102がセンサ402から取得した第2センサデータを端末装置300に送信する(ステップS208)。
なお、ステップS208では、親機200は、既に子機101がセンサ401から取得した第1センサデータを端末装置300に送信成功している場合、子機102がセンサ402から取得した第2センサデータのみを端末装置300に送信し、第1センサデータを端末装置300に送信しなくてもよい。
次に、識別子3が示す子機103は、子機101から受信したパケットに含まれる第1センサデータ(第1データ)、子機102から受信したパケットに含まれる第2センサデータ(第1データ)、及び、センサ403から取得した第3センサデータ(第2データ)を含むパケットを親機200に無線通信で送信する(ステップS209)。
次に、子機103は、第3センサデータ(第2データ)を含むパケットを他の子機101、102、104にBluetoothに基づく無線通信で送信する(ステップS210)。
親機200は、例えば、受信したパケットに含まれる子機101がセンサ401から取得した第1センサデータ、子機102がセンサ402から取得した第2センサデータ、及び、センサ403から取得した第3センサデータを端末装置300に送信する(ステップS211)。
なお、ステップS211では、親機200は、既に子機101がセンサ401から取得した第1センサデータ、及び、子機102がセンサ402から取得した第2センサデータを端末装置300に送信成功している場合、センサ403から取得した第3センサデータのみを端末装置300に送信し、子機101がセンサ401から取得した第1センサデータ、及び、子機102がセンサ402から取得した第2センサデータを端末装置300に送信しなくてもよい。
以上のように、通信システム500が備える複数の子機100は、自装置の送信タイミングを算出して、他の子機105と異なるタイミングでセンサ400が検出した情報を示すセンサデータを含むパケットを送信する。
図6は、実施の形態に係る通信システム500が備える各装置の処理手順の第2例を説明するためのシーケンス図である。
まず、子機101~104は、センサ401~404(図1参照)からセンサデータを取得する(ステップS201)。
次に、識別子1が示す子機101は、センサ401から取得した第1センサデータ(第2データ)を含むパケットを親機200に無線通信で送信する(ステップS202a)。ここで、例えば、ステップS202aでは、第2データを含むパケットが親機200で受信されなかったとする。
次に、子機101は、子機101がセンサ401から取得した第2データ(第1センサデータ)を含むパケットを他の子機102~104にBluetoothに基づく無線通信で送信する(ステップS203a)。ここで、例えば、ステップS203aでは、子機101がセンサ401から取得した第1センサデータ含むパケットが子機103で受信されなかったとする。
次に、子機102は、送信タイミングを算出する(ステップS205a)。具体的には、ステップS205aでは、子機102は、図4に示すステップS103及びステップS104を実行する。
同様に、子機104は、送信タイミングを算出する(ステップS205b)。具体的には、ステップS205bでは、子機104は、図4に示すステップS103及びステップS104を実行する。
ここでは、図5に示すステップS205とは異なり、子機103は、ステップS203aで子機101がセンサ401から取得した第1センサデータを含むパケットを受信できていないために、送信タイミングを算出しない。
次に、子機102は、子機101から受信したパケットに含まれる第1センサデータ(第1データ)、及び、センサ402から取得した第2センサデータ(第2データ)を親機200に無線通信で送信する(ステップS206)。
次に、子機102は、センサ402から取得した第2センサデータ(第2データ)を他の子機101、103、104にBluetoothに基づく無線通信で送信する(ステップS207)。
親機200は、例えば、受信したパケットに含まれる子機101がセンサ401から取得した第1センサデータ及び子機102がセンサ402から取得した第2センサデータを端末装置300に送信する(ステップS208)。
このように、通信システム500によれば、子機101が送信したセンサ401から取得した第1センサデータを子機102も送信するために、例えば、ステップS202aのように子機102より前の子機101が親機200に送信した子機101がセンサ401から取得した第1センサデータが親機200に到達していない場合においても、子機101がセンサ401から取得した第1センサデータを親機200に送信できる。
また、子機103は、ステップS207で子機102から送信された子機102がセンサ402から取得した第2センサデータを含むパケットを受信したとする。この場合、子機103は、送信タイミングを算出する(ステップS205c)。具体的には、ステップS205cでは、子機103は、図4に示すステップS103及びステップS104を実行する。
次に、子機103は、子機102から受信したパケットに含まれる第2センサデータ(第1データ)、及び、センサ403から取得した第3センサデータ(第2データ)を含むパケットを親機200に無線通信で送信する(ステップS209a)。
次に、子機103は、センサ403から取得した第2データ(第3センサデータ)を含むパケットを他の子機101、102、104にBluetoothに基づく無線通信で送信する(ステップS210)。
親機200は、例えば、受信したパケットに含まれる子機102がセンサ402から取得した第2センサデータ、及び、子機103がセンサ403から取得した第3センサデータを端末装置300に送信する(ステップS211a)。
なお、ステップS211aでは、親機200は、既に子機102がセンサ402から取得した第2センサデータを端末装置300に送信成功している場合、子機103がセンサ403から取得した第3センサデータのみを端末装置300に送信し、第2センサデータを端末装置300に送信しなくてもよい。
また、子機102~104は、他の子機から初めてパケットを受信した場合に、送信タイミングを算出するが、他の子機からパケットを受信した度に、送信タイミングを算出してもよい。これによれば、例えば、複数の子機100のうちのいずれかの子機100の送信タイミングが意図しない誤動作によりずれた場合においても、常に最新の情報で送信タイミングを算出し直すことができる。そのため、複数の子機100が同じタイミングでパケットを送信することによるパケット同士の衝突をさらに抑制できる。
[効果等]
以上説明したように、実施の形態に係る子機100は、親機200、及び、それぞれが親機200と通信する子機として機能する複数の通信装置を備えるシステムにおける当該複数の通信装置のうちの1つの通信装置である。子機100は、親機200と無線通信するための第1通信部110と、Bluetoothに基づいて他の通信装置105と無線通信するための第2通信部120と、他の通信装置105から第2通信部120を介して第1データを含むパケットを受信した場合に、第1データを含むパケットを受信した時刻に基づいて、自装置がパケットを送信する送信タイミングを算出する算出部130と、算出部130が算出した送信タイミングで、第1データ及び第2データを含むパケットを、第1通信部110を介して送信する制御部140と、を備える。第2データは、例えば、取得部150によってセンサ400から取得されたセンサデータである。
このような構成によれば、他の通信装置105が送信したBluetoothに基づくパケットを受信した時刻から、自装置がパケットを送信する送信タイミングを算出して送信する。そのため、例えば、複数の子機100が算出する送信タイミングを異なるように設定しておくことで、複数の子機100のそれぞれは、互いに異なるタイミングでパケットを送信する。これにより、Bluetoothに基づく無線通信において、パケットの衝突を抑制できる。例えば、このような構成によれば、Bluetoothに基づく無線通信で親機200と複数の子機100のそれぞれとがパケットを送信する場合において、パケットの衝突を抑制できる。
また、例えば、制御部140は、算出部130が算出した送信タイミングで、さらに、第2データを含むパケットを、第2通信部120を介して送信する。
このような構成によれば、複数の子機100のそれぞれがBluetoothに基づく無線通信でパケットを送信する場合において、パケットの衝突を抑制できる。
また、例えば、子機100は、さらに、パケットの送信を許可する時間を示す時間情報161を記憶する記憶部160を備える。この場合、例えば、算出部130は、第1データを含むパケットを受信した時刻及び時間情報161に基づいて送信タイミングを算出する。また、この場合、例えば、制御部140は、算出部130が算出した送信タイミングから時間情報161が示す時間Tadv内に、第1データ及び第2データを含むパケットを、第1通信部110を介して送信し、且つ、第2データを含むパケットを、第2通信部120を介して送信する。例えば、第2データを含むパケットには、他の通信装置105から受信したパケットに含まれる第1データ等のデータを含まない。
このような構成によれば、複数の子機100のそれぞれの通信に係る時間を算出するタイミングに反映することができる。そのため、算出部130は、パケットの衝突を回避するためのタイミングをさらに精度よく算出できる。
また、例えば、記憶部160は、さらに、複数の子機100がパケットを送信する順序を示す順序情報162を記憶している。この場合、例えば、算出部130は、第1データを含むパケットを受信した時刻、時間情報161、及び、順序情報162に基づいて送信タイミングを算出する。
このような構成によれば、複数の子機100のそれぞれがパケットを送信する時刻を算出する送信タイミングに反映することができる。そのため、算出部130は、パケットの衝突を回避するための送信タイミングをさらに精度よく算出できる。
また、実施の形態に係る通信システム500は、子機100を複数備える。
このような構成によれば、他の子機105が送信したBluetoothに基づくパケットを受信した時刻から、自装置がパケットを送信する送信タイミングを算出して送信する。そのため、例えば、複数の子機100が算出する送信タイミングを異なるように設定しておくことで、複数の通信装置のそれぞれは、互いに異なる送信タイミングでパケットを送信する。これにより、Bluetoothに基づく無線通信において、パケットの衝突を抑制できる。
また、実施の形態に係る通信方法は、親機200、及び、それぞれが親機200と通信する子機100として機能する複数の通信装置を備えるシステムにおける複数の通信装置のうちの1つの通信装置が実行する通信方法である。本実施の形態に係る通信方法は、Bluetooth(登録商標)に基づいて他の通信装置105から第1データを含むパケットを受信する受信ステップと、受信ステップで第1データを含むパケットを受信した時刻に基づいて、自装置がパケットを送信する送信タイミングを算出する算出ステップと、算出ステップで算出した送信タイミングで、第1データ及び第2データを含むパケットを無線通信で親機200に送信する送信ステップと、を含む。
このような方法によれば、Bluetoothに基づくパケットを受信した時刻から、パケットを送信する送信タイミングを算出して送信する。そのため、例えば、それぞれが実施の形態に係る通信方法を実行する複数の通信装置(例えば、子機100)が算出する送信タイミングを異なるように設定しておくことで、複数の通信装置のそれぞれは、互いに異なるタイミングでパケットを送信する。これにより、Bluetoothに基づく無線通信において、パケットの衝突を抑制できる。例えば、このような方法によれば、Bluetoothに基づく無線通信で親機200とそれぞれがこのような通信方法を実行する複数の通信装置のそれぞれとがパケットを送信する場合において、パケットの衝突を抑制できる。
なお、本発明は、上記通信方法に含まれるステップをコンピュータに実行させるプログラムとして実現されてもよい。また、本発明は、そのプログラムを記録したコンピュータによって読み取り可能なCD-ROM等の記録媒体として実現されてもよい。また、本発明は、そのプログラムを示す情報、データ又は信号として実現されてもよい。そして、それらプログラム、情報、データ及び信号は、インターネット等の通信ネットワークを介して配信されてもよい。
(その他の実施の形態)
以上、本発明の通信装置等について、実施の形態に基づいて説明したが、本発明は、上記実施の形態に限定されるものではない。上記実施の形態に対して当業者が思い付く変形を施して得られる形態、及び、上記実施の形態における構成要素を任意に組み合わせて実現される別の形態も本発明に含まれる。
例えば、上記実施の形態では、複数の子機100の各々が1つのセンサ400と接続されているとしたが、これに限定されず、複数のセンサと接続されていてもよい。
また、例えば、センサ400は、温度センサに限定されない。センサ400は、例えば、湿度管理を行う必要がある倉庫等で利用するための湿度センサ、工場内に入出庫する際に物品の有無等を検出するのに利用するための赤外線センサ、荷載センサのような機械的な機構で状態を検知するためのメカニカルセンサ、パワーモジュールの過電流保護等の目的に使用するための電流センサ、又は、工作機械において油等の液体又は空気等の気体の流れる量をもとに状態を検知するための流量センサ等にも適用することができる。すなわち、複数の子機100の各々は、例えば温度センサ、湿度センサ、赤外線センサ、メカニカルセンサ、電流センサ及び流量センサのうち少なくとも1つ以上のセンサと接続されていればよい。
また、例えば、上記実施の形態では、算出部130、制御部140、及び、取得部150は、CPUと制御プログラムとによって構成されると説明した。例えば、子機100が備える算出部130、制御部140、及び、取得部150等の処理部の構成要素は、1つ又は複数の電子回路で構成されてもよい。1つ又は複数の電子回路は、それぞれ、汎用的な回路でもよいし、専用の回路でもよい。1つ又は複数の電子回路には、例えば、半導体装置、IC(Integrated Circuit)、又は、LSI(Large Scale Integration)等が含まれてもよい。IC又はLSIは、1つのチップに集積されてもよく、複数のチップに集積されてもよい。ここでは、IC又はLSIと呼んでいるが、集積の度合いによって呼び方が変わり、システムLSI、VLSI(Very Large Scale Integration)、又は、ULSI(Ultra Large Scale Integration)と呼ばれるかもしれない。また、LSIの製造後にプログラムされるFPGA(Field Programmable Gate Array)も同じ目的で使うことができる。
また、本発明の全般的又は具体的な態様は、システム、装置、方法、集積回路又はコンピュータプログラムで実現されてもよい。或いは、当該コンピュータプログラムが記憶された光学ディスク、HDD(Hard Disk Drive)若しくは半導体メモリ等のコンピュータ読み取り可能な非一時的記録媒体で実現されてもよい。また、システム、装置、方法、集積回路、コンピュータプログラム及び記録媒体の任意な組み合わせで実現されてもよい。