以下、実施形態に係る通信システムについて図面を参照して説明する。図1は、実施形態に係る通信システム1の構成の一例を示す図である。
図1に示すように、実施形態に係る通信システム1は、8台のセンサ10a〜10hと、8台のノード(通信端末)20a〜20hと、2台のGW(Gate Way(ゲートウェイ;中継装置))30a,30bと、サーバ40と、表示装置50とを有する。以下の説明において、センサ10a〜10hを区別して説明しない場合には、センサ10と総称し、ノード20a〜20hを区別して説明しない場合には、ノード20と総称し、GW30a,30bを区別して説明しない場合には、GW30と総称する。
なお、GW30の台数は、2台に限られず、1台又は3台以上であってもよい。また、各GW30に直接的又は間接的に接続されるノード20の台数は、複数であれば何台でもよい。
例えば、通信システム1は、工作機械が複数台設置された工場に設けられる。そして、通信システム1では、センサ10が工作機械の状態を検出し、ノード20がセンサ10により検出された工作機械の状態を示すセンサ情報(状態情報とも称される)をGW30を介してサーバ40に送信し、サーバ40がセンサ情報を収集する。なお、センサ情報は、例えば、工作機械が正常に動作している状態(正常状態)又は工作機械の動作が異常である状態(異常状態)のいずれかを示す情報である。そして、サーバ40が、収集したセンサ情報が示す工作機械の状態を表示装置50に表示させる。このようにして、通信システム1は、工場の管理者等のユーザに、複数台の工作機械の状態を把握させることができる。
センサ10は、ノード20に接続されるとともに、工作機械に取り付けられている。センサ10は、所定時間(例えば、5秒)間隔で工作機械の状態を検出し、検出した状態をノード20に通知する。例えば、全ての工作機械の状態が検出されるように、複数のセンサ10のそれぞれが、複数台の工作機械のそれぞれに取り付けられ、複数台の工作機械のそれぞれの状態を検出する。
例えば、センサ10a〜10hのそれぞれは、互いに異なる工作機械に取り付けられている。センサ10aは、ノード20aに接続され、所定時間間隔で、工作機械の状態をノード20aに通知する。センサ10bは、ノード20bに接続され、所定時間間隔で、工作機械の状態をノード20bに通知する。センサ10cは、ノード20cに接続され、所定時間間隔で、工作機械の状態をノード20cに通知する。センサ10dは、ノード20dに接続され、所定時間間隔で、工作機械の状態をノード20dに通知する。センサ10eは、ノード20eに接続され、所定時間間隔で、工作機械の状態をノード20eに通知する。センサ10fは、ノード20fに接続され、所定時間間隔で、工作機械の状態をノード20fに通知する。センサ10gは、ノード20gに接続され、所定時間間隔で、工作機械の状態をノード20gに通知する。センサ10hは、ノード20hに接続され、所定時間間隔で、工作機械の状態をノード20hに通知する。
センサ10は、例えば、温度センサである。センサ10が温度センサである場合には、センサ10は、工作機械の温度を検出し、検出した温度をノード20に通知する。なお、センサ10により検出された工作機械の温度が、工作機械の状態が正常状態である場合の温度の範囲(正常温度範囲)内である場合には、工作機械が正常状態であるとノード20により判断される。一方、センサ10により検出された工作機械の温度が、正常温度範囲内でない場合には、工作機械が異常状態であるとノード20により判断される。
ノード20は、センサ10から通知された工作機械の状態が変化すると、変化後の状態を示すセンサ情報を生成し、GW30に送信する。例えば、ノード20は、工作機械の状態が正常状態から異常状態に変化した場合には、変化後の異常状態を示すセンサ情報をGW30に送信する。また、ノード20は、工作機械の状態が異常状態から正常状態に変化した場合には、変化後の正常状態を示すセンサ情報をGW30に送信する。
ここで、ノード20a〜20d及びGW30aによってメッシュネットワーク91が形成され、ノード20e〜20h及びGW30bによってメッシュネットワーク92が形成されている。
例えば、ノード20a〜20dのうち、ノード20a及びノード20bは、GW30aと直接的に無線通信が可能であり、ノード20cは、ノード20a又はノード20bを介して間接的にGW30aと無線通信が可能であり、ノード20dは、ノード20bを介して間接的にGW30aと無線通信が可能である。
したがって、ノード20a及びノード20bは、GW30aにセンサ情報を直接送信し、ノード20cは、ノード20a又はノード20bを介してGW30aにセンサ情報を送信し、ノード20dは、ノード20bを介してGW30aにセンサ情報を送信する。すなわち、ノード20aは、ノード20cが生成したセンサ情報を中継する。また、ノード20bは、ノード20cが生成したセンサ情報、及び、ノード20dが生成したセンサ情報を中継する。
また、ノード20e〜20hのうち、ノード20e及びノード20fは、GW30bと直接的に無線通信が可能であり、ノード20gは、ノード20e又はノード20fを介して間接的にGW30bと無線通信が可能であり、ノード20hは、ノード20fを介して間接的にGW30bと無線通信が可能である。
したがって、ノード20e及びノード20fは、GW30bにセンサ情報を直接送信し、ノード20gは、ノード20e又はノード20fを介してGW30bにセンサ情報を送信し、ノード20hは、ノード20fを介してGW30bにセンサ情報を送信する。すなわち、ノード20eは、ノード20gが生成したセンサ情報を中継する。また、ノード20fは、ノード20gが生成したセンサ情報、及び、ノード20hが生成したセンサ情報を中継する。
なお、ノード20a〜20dそれぞれが、GW30aに直接的に無線通信可能であってもよいし、ノード20e〜20hそれぞれが、GW30bに直接的に無線通信可能であってもよい。
なお、ノード20は、図示しないパトランプを有し、センサ10から通知された工作機械の状態に応じて、パトランプから発せされる光の色を制御してもよい。例えば、ノード20は、工作機械の状態が正常状態である場合には、緑色の光を発するようにパトランプを制御し、異常状態である場合には、赤色の光を発するようにパトランプを制御してもよい。
GW30は、サーバ40及びノード20と無線通信が可能である。GW30は、ノード20から送信されたセンサ情報を受信するとともに、受信したセンサ情報をサーバ40に送信する。すなわち、GW30は、センサ情報を中継する。また、GW30は、センサ情報を受信すると、センサ情報の送信元のノード20に対してACKを送信する。
サーバ40は、例えば、コンピュータにより実現される。サーバ40は、GW30から送信されたセンサ情報を受信すると、受信したセンサ情報が示す工作機械の状態を表示装置50に表示させる。
表示装置50は、例えば、液晶ディスプレイ等により実現される。表示装置50は、サーバ40の制御を受けて、工場内の全ての工作機械の状態を表示する。これにより、ユーザは、工場内の全ての工作機械の状態を把握することが可能となる。
次に、図2を参照して、実施形態に係るノード20の構成の一例について説明する。図2は、実施形態に係るノード20の構成の一例を示す図である。
図2に示すように、ノード20は、記憶部201と、通信部202と、制御部203とを有する。
記憶部201は、例えば、メモリ等の記憶装置により実現される。記憶部201には、制御部203により実行される各種のプログラムが記憶されている。例えば、記憶部201には、センサ情報を送信するセンサ情報送信処理を実行するためのセンサ情報送信プログラムが記憶されている。また、記憶部201には、制御部203により各種のプログラムが実行される際に用いられる各種のデータが一時的に記憶される。
また、実施形態に係る記憶部201には、第1のデータベース201aが記憶されている。第1のデータベース201aには、GW30とノード20との通信におけるトラフィックのレベルであるトラフィックレベルと、ACKを受信してからセンサ情報が送信可能になるまでの待ち時間を示す送信マスク期間が対応付けられて登録されている。なお、トラフィックレベルは、タイミング情報の一例である。また、送信マスク期間は、ACKを受信したタイミング(所定のタイミング)からの待ち時間である。
通信部202は、例えば、Wifi(登録商標)やBluetooth(登録商標)等の規格に従って無線通信を行うネットワークインタフェースカードにより実現される。通信部202は、GW30と直接通信可能である場合には、GW30との間で無線通信を行う。また、通信部202は、GW30と直接通信可能でない場合には、GW30への中継を行うノード20との間で無線通信を行う。通信部202は、第2の通信部の一例である。
制御部203は、CPU(Central Processing Unit)等のプロセッサにより実現される。制御部203は、ノード20全体を制御する。制御部203は、記憶部201に記憶された各種のプログラムを読み取り、読み取ったプログラムを実行することで、各種の処理を実行する。例えば、制御部203は、センサ情報送信プログラムを実行することで、センサ情報送信処理を実行する。
図2に示すように、センサ情報送信処理を実行する制御部203を機能的に表すと、制御部203は、送信制御部203aを有することとなる。
図3は、実施形態に係る第1のデータベース201aのデータ構造の一例を示す図である。図3に示すように、第1のデータベース201aのレコードは、「トラフィックレベル」及び「送信マスク期間」の各項目を有する。
「トラフィックレベル」の項目には、トラフィックレベルが登録される。例えば、図3に示す第1のデータベース201aには、5段階のトラフィックレベルのうちいずれかのトラフィックレベルが登録される。例えば、トラフィックレベル1は、5段階のトラフィックレベルのうち、最もトラフィックが小さいことを示す。また、トラフィックレベル2は、5段階のトラフィックレベルのうち、2番目にトラフィックが小さいことを示す。また、トラフィックレベル3は、5段階のトラフィックレベルのうち、3番目にトラフィックが小さい又は大きいことを示す。また、トラフィックレベル4は、5段階のトラフィックレベルのうち、2番目にトラフィックが大きいことを示す。また、トラフィックレベル5は、5段階のトラフィックレベルのうち、最もトラフィックが大きいことを示す。
図3に示す第1のデータベース201aの1番目のレコードの「トラフィックレベル」の項目には、トラフィックレベル1が登録されている。また、第1のデータベース201aの2番目のレコードの「トラフィックレベル」の項目には、トラフィックレベル2が登録されている。また、第1のデータベース201aの3番目のレコードの「トラフィックレベル」の項目には、トラフィックレベル3が登録されている。また、第1のデータベース201aの4番目のレコードの「トラフィックレベル」の項目には、トラフィックレベル4が登録されている。また、第1のデータベース201aの5番目のレコードの「トラフィックレベル」の項目には、トラフィックレベル5が登録されている。
「送信マスク期間」の項目には、送信マスク期間が登録される。例えば、図3に示す第1のデータベース201aの1番目のレコードの「送信マスク期間」の項目には、1秒が登録されている。すなわち、第1のデータベース201aの1番目のレコードには、トラフィックレベル1に対応付けられて、1秒の送信マスク期間が登録されている。
また、第1のデータベース201aの2番目のレコードの「送信マスク期間」の項目には、5秒が登録されている。すなわち、第1のデータベース201aの2番目のレコードには、トラフィックレベル2に対応付けられて、5秒の送信マスク期間が登録されている。
また、第1のデータベース201aの3番目のレコードの「送信マスク期間」の項目には、20秒が登録されている。すなわち、第1のデータベース201aの3番目のレコードには、トラフィックレベル3に対応付けられて、20秒の送信マスク期間が登録されている。
また、第1のデータベース201aの4番目のレコードの「送信マスク期間」の項目には、40秒が登録されている。すなわち、第1のデータベース201aの4番目のレコードには、トラフィックレベル4に対応付けられて、40秒の送信マスク期間が登録されている。
また、第1のデータベース201aの5番目のレコードの「送信マスク期間」の項目には、60秒が登録されている。すなわち、第1のデータベース201aの5番目のレコードには、トラフィックレベル5に対応付けられて、60秒の送信マスク期間が登録されている。
なお、第1のデータベース201aの登録内容は、図3に例示した内容に限られない。第1のデータベース201aには、複数のトラフィックレベルのそれぞれと、複数の送信マスク期間のそれぞれとが対応付けられて登録されていればよい。
また、全てのノード20において、同一の登録内容の第1のデータベース201aを保持していてもよいし、ノード20ごとに異なる登録内容の第1のデータベース201aを保持していてもよい。
次に、図4を参照して、実施形態に係るGW30の構成の一例について説明する。図4は、実施形態に係るGW30の構成の一例を示す図である。
図4に示すように、GW30は、記憶部301と、通信部302と、制御部303とを有する。
記憶部301は、例えば、メモリ等の記憶装置により実現される。記憶部301には、制御部303により実行される各種のプログラムが記憶されている。例えば、記憶部301には、センサ情報の送信タイミングに関するタイミング情報を導出するタイミング情報導出処理を実行するためのタイミング情報導出プログラムが記憶されている。また、記憶部301には、制御部303により各種のプログラムが実行される際に用いられる各種のデータが一時的に記憶される。
また、実施形態に係る記憶部301には、第2のデータベース301aが記憶されている。第2のデータベース301aには、GW30が後述するセンサ情報取得時間内に受信したセンサ情報の総数と、トラフィックレベルとが対応付けられて登録されている。
通信部302は、例えば、Wifi(登録商標)やBluetooth(登録商標)等の規格に従って無線通信を行うネットワークインタフェースカードにより実現される。通信部302は、ノード20やサーバ40との間で無線通信を行う。例えば、通信部302は、複数のノード20から送信されたセンサ情報を受信するとともに、受信したセンサ情報をサーバ40に送信する。通信部302は、第1の通信部の一例である。
制御部303は、CPU等のプロセッサにより実現される。制御部303は、GW30全体を制御する。制御部303は、記憶部301に記憶された各種のプログラムを読み取り、読み取ったプログラムを実行することで、各種の処理を実行する。例えば、制御部303は、タイミング情報導出プログラムを実行することで、タイミング情報導出処理を実行する。
図4に示すように、タイミング情報導出処理を実行する制御部303を機能的に表すと、制御部303は、導出部303aを有することとなる。
図5は、実施形態に係る第2のデータベース301aのデータ構造の一例を示す図である。図5に示すように、第2のデータベース301aのレコードは、「センサ情報の総数」及び「トラフィックレベル」の各項目を有する。
「センサ情報の総数」の項目には、GW30がセンサ情報取得時間内に受信するセンサ情報の総数の範囲が登録される。例えば、図5に示す第2のデータベース301aの1番目のレコードの「センサ情報の総数」の項目には、GW30がセンサ情報取得時間内に受信するセンサ情報の総数の範囲として、0個以上5個未満の範囲が登録されている。
また、第2のデータベース301aの2番目のレコードの「センサ情報の総数」の項目には、GW30がセンサ情報取得時間内に受信するセンサ情報の総数の範囲として、5個以上10個未満の範囲が登録されている。
また、第2のデータベース301aの3番目のレコードの「センサ情報の総数」の項目には、GW30がセンサ情報取得時間内に受信するセンサ情報の総数の範囲として、10個以上15個未満の範囲が登録されている。
また、第2のデータベース301aの4番目のレコードの「センサ情報の総数」の項目には、GW30がセンサ情報取得時間内に受信するセンサ情報の総数の範囲として、15個以上20個未満の範囲が登録されている。
また、第2のデータベース301aの5番目のレコードの「センサ情報の総数」の項目には、GW30がセンサ情報取得時間内に受信するセンサ情報の総数の範囲として、20個以上の範囲が登録されている。
「トラフィックレベル」の項目には、トラフィックレベルが登録される。図5に示す第2のデータベース301aの1番目のレコードの「トラフィックレベル」の項目には、トラフィックレベル1が登録されている。すなわち、第2のデータベース301aの1番目のレコードには、0個以上5個未満のセンサ情報の総数の範囲に対応付けられて、トラフィックレベル1が登録されている。
また、第2のデータベース301aの2番目のレコードの「トラフィックレベル」の項目には、トラフィックレベル2が登録されている。すなわち、第2のデータベース301aの2番目のレコードには、5個以上10個未満のセンサ情報の総数の範囲に対応付けられて、トラフィックレベル2が登録されている。
また、第2のデータベース301aの3番目のレコードの「トラフィックレベル」の項目には、トラフィックレベル3が登録されている。すなわち、第2のデータベース301aの3番目のレコードには、10個以上15個未満のセンサ情報の総数の範囲に対応付けられて、トラフィックレベル3が登録されている。
また、第2のデータベース301aの4番目のレコードの「トラフィックレベル」の項目には、トラフィックレベル4が登録されている。すなわち、第2のデータベース301aの4番目のレコードには、15個以上20個未満のセンサ情報の総数の範囲に対応付けられて、トラフィックレベル4が登録されている。
また、第2のデータベース301aの5番目のレコードの「トラフィックレベル」の項目には、トラフィックレベル5が登録されている。すなわち、第2のデータベース301aの5番目のレコードには、20個以上のセンサ情報の総数の範囲に対応付けられて、トラフィックレベル5が登録されている。
なお、第2のデータベース301aの登録内容は、図5に例示した内容に限られない。第2のデータベース301aには、複数のセンサ情報の総数の範囲のそれぞれと、複数のトラフィックレベルのそれぞれとが対応付けられて登録されていればよい。
次に、図6を参照して、実施形態に係るタイミング情報導出処理について説明する。図6は、実施形態に係る制御部303により実行されるタイミング情報導出処理の流れを示すフローチャートである。実施形態に係るタイミング情報導出処理は、制御部303に図示しない電源から電力が供給されると実行される。
図6に示すように、制御部303の導出部303aは、複数のノード20のそれぞれからのセンサ情報をログとして記憶部301に格納するログ格納処理の実行を開始する(ステップS101)。これにより、ステップS101以降では、ステップS102〜S108の処理とは非同期で、受信したセンサ情報がログとして記憶部301に記憶される。
そして、導出部303aは、後述するステップS103で待機する時間であるセンサ情報取得時間(例えば、20秒)を設定する(ステップS102)。
そして、導出部303aは、ソフトウェアによるタイマを用いて、ステップS102でセンサ情報取得時間を設定してからの時間の測定を開始する(ステップS103)。
そして、導出部303aは、ステップS102で設定されたセンサ情報取得時間と、ステップS103で計測が開始されたセンサ情報取得時間が設定されてからの時間とを比較することにより、ステップS102でセンサ情報取得時間が設定されてから、センサ情報取得時間が経過したか否かを判定する(ステップS104)。
ここで、センサ情報取得時間が設定された時点が、センサ情報取得時間の開始時点であり、この開始時点からセンサ情報取得時間が経過した時点が、センサ情報取得時間の終了時点である。すなわち、センサ情報取得時間は、センサ情報取得時間の開始時点から、開始時点より後の終了時点までの時間である。センサ情報取得時間は、所定時間の一例であり、開始時点は、第1の時点の一例であり、終了時点は、第2の時点の一例である。
センサ情報取得時間が経過していないと判定した場合(ステップS104:No)には、導出部303aは、再び、ステップS104の判定を行う。すなわち、ステップS104において、導出部303aは、センサ情報取得時間が経過するまで待機する。
センサ情報取得時間が経過したと判定した場合(ステップS104:Yes)には、導出部303aは、センサ情報取得時間が設定されてからの時間の計測を終了する(ステップS105)。
そして、導出部303aは、記憶部301の記憶内容を参照して、ステップS102でセンサ情報取得時間が設定されてからセンサ情報取得時間が経過するまでの時間の間に、ノード20からのセンサ情報を受信したか否かを判定する(ステップS106)。
センサ情報を受信していないと判定した場合(ステップS106:No)には、導出部303aは、ステップS102に戻り、ステップS102以降の処理を再び実行する。
センサ情報を受信したと判定した場合(ステップS106:Yes)には、導出部303aは、トラフィックレベルを導出する(ステップS107)。
実施形態に係る導出部303aによるトラフィックレベルの導出方法の一例について説明する。例えば、導出部303aは、まず、記憶部301の記憶内容を参照し、ステップS102でセンサ情報取得時間が設定されてからセンサ情報取得時間が経過するまでの時間の間に受信したセンサ情報の総数を導出する。そして、導出部303aは、第2のデータベース301aの全レコードの中から、導出したセンサ情報の総数を含む総数の範囲が「センサ情報の総数」の項目に登録されたレコードを検索する。そして、導出部303aは、検索の結果得られたレコードの「トラフィックレベル」の項目に登録されたトラフィックレベルを取得することにより、トラフィックレベルを導出する。
そして、導出部303aは、ステップS102でセンサ情報取得時間が設定されてからセンサ情報取得時間が経過するまでの時間の間に受信したセンサ情報の送信元のノード20に送信するACKに、導出したトラフィックレベルを含め、トラフィックレベルが含まれたACKをセンサ情報の送信元のノード20に送信するように通信部302を制御する(ステップS108)。これにより、通信部302は、トラフィックレベルが含まれたACKをセンサ情報の送信元のノード20に送信する。そして、導出部303aは、ステップS102に戻り、ステップS102以降の処理を再び実行する。すなわち、導出部303aは、ステップS102〜S108の各処理を何回も繰り返し実行する。
次に、図7を参照して、センサ情報送信処理について説明する。図7は、実施形態に係る制御部203により実行されるセンサ情報送信処理の流れを示すフローチャートである。センサ情報送信処理は、制御部203に図示しない電源から電力が供給されると実行される。
図7に示すように、制御部203の送信制御部203aは、センサ10により通知された工作機械の状態が変化したか否かを判定する(ステップS201)。工作機械の状態が変化していないと判定した場合(ステップS201:No)には、送信制御部203aは、再び、ステップS201の判定を行う。すなわち、ステップS201において、送信制御部203aは、工作機械の状態が変化するまで待機する。
工作機械の状態が変化したと判定した場合(ステップS201:Yes)には、送信制御部203aは、変化後の工作機械の状態を示すセンサ情報を生成し、生成したセンサ情報をGW30に向けて送信するように通信部202を制御する(ステップS202)。これにより、通信部202は、センサ情報をGW30に向けて送信する。
そして、送信制御部203aは、GW30からACKを受信したか否かを判定する(ステップS203)。ACKを受信していないと判定した場合(ステップS203:No)には、送信制御部203aは、再び、S203の判定を行う。すなわち、ステップS203において、送信制御部203aは、ACKを受信するまで待機する。
なお、センサ情報をGW30に向けて送信してから所定の時間経過してもACKを受信しない場合には、送信制御部203aは、センサ情報を再び送信するように通信部202を制御する。なお、所定の回数、センサ情報を再送信してもACKを受信しない場合には、送信制御部203aは、センサ情報を破棄した後に、上述したステップS201に戻る。
ACKを受信したと判定した場合(ステップS203:Yes)には、送信制御部203aは、受信したACKから、送信マスク期間を導出する(ステップS204)。実施形態に係る送信制御部203aによる送信マスク期間の導出方法の一例について説明する。上述したように、ACKには、トラフィックレベルが含まれる。そこで、例えば、送信制御部203aは、まず、ACKに含まれるトラフィックレベルを取得する。そして、送信制御部203aは、第1のデータベース201aの全レコードの中から、取得したトラフィックレベルが「トラフィックレベル」の項目に登録されたレコードを検索する。そして、送信制御部203aは、検索の結果得られたレコードの「送信マスク期間」の項目に登録された送信マスク期間を取得することにより、送信マスク期間を導出する。
そして、送信制御部203aは、ソフトウェアによるタイマを用いて、ACKを受信してからの時間(ステップS203で、ACKを受信したと判定してからの時間)の測定を開始する(ステップS205)。
そして、送信制御部203aは、センサ10により通知された工作機械の状態が変化したか否かを判定する(ステップS206)。工作機械の状態が変化していないと判定した場合(ステップS206:No)には、送信制御部203aは、再び、ステップS206の判定を行う。すなわち、ステップS206において、送信制御部203aは、工作機械の状態が変化するまで待機する。
工作機械の状態が変化したと判定した場合(ステップS206:Yes)には、送信制御部203aは、ステップS204で導出された送信マスク期間と、ステップS205で計測が開始されたACKを受信してからの時間とを比較することにより、ACKを受信してから送信マスク期間が経過したか否かを判定する(ステップS207)。
送信マスク期間が経過していないと判定した場合(ステップS207:No)には、送信制御部203aは、再び、ステップS207の判定を行う。すなわち、ステップS207において、送信制御部203aは、送信マスク期間が経過するまで待機する。
送信マスク期間が経過したと判定した場合(ステップS207:Yes)には、送信制御部203aは、タイマを用いたACKを受信してからの時間の測定を終了する(ステップS208)。そして、送信制御部203aは、上述したステップS202に戻り、変化後の工作機械の状態を示すセンサ情報を生成し、生成したセンサ情報をGW30に向けて送信するように通信部202を制御する。そして、送信制御部203aは、ステップS203以降の処理を再び実行する。すなわち、送信制御部203aは、ステップS202〜S208の各処理を何回も繰り返し実行する。
例えば、送信制御部203aが、ステップS206で工作機械の状態が変化したと判定する前に、ACKを受信してから送信マスク期間が経過した場合について説明する。この場合には、送信制御部203aは、ステップS206で工作機械の状態が変化したと判定した後に、瞬時に、ステップS207で、送信マスク期間が経過したと判定するため、瞬時に、ステップS202に進むことになる。このため、通信部202は、ステップS206で工作機械の状態が変化したと判定されてから、瞬時に、ステップS202でセンサ情報を送信する。
なお、ステップS207において待機中に、工作機械の状態が新たに変化した場合には、送信制御部203aは、変化後の工作機械の状態を示すセンサ情報を新たに生成し、センサ情報をFIFO(First-In First-Out)方式でキューイングし、古いセンサ情報から順次送信されるように制御してもよい。
以上説明した実施形態に係るタイミング情報導出処理では、1回目のステップS107で、導出部303aが、1回目のステップS102で設定されたセンサ情報取得時間の開始時点からセンサ情報取得時間が経過した終了時点までの間に通信部302により受信されたセンサ情報の総数に基づいて、複数のノード20のうち、センサ情報取得時間の間に通信部302により受信されたセンサ情報の送信元のノード20により、センサ情報取得時間の終了時点より後に送信されるセンサ情報の送信タイミングに関する情報であるトラフィックレベルを導出する。そして、1回目のステップS108で、導出部303aが、トラフィックレベルが含まれたACKをセンサ情報の送信元のノード20に送信するように通信部302を制御する。これにより、通信部302は、トラフィックレベルが含まれたACKをセンサ情報の送信元のノード20に送信する。
そして、以上説明した実施形態に係るセンサ情報送信処理では、通信部202が、受信したトラフィックレベルに基づいたタイミングで、センサ情報取得時間の終了時点より後に送信されるセンサ情報を送信する。
ここで、Nを自然数とすると、導出部303a及び通信部302が実行する処理は、次のように一般化することができる。例えば、N回目のステップS107で、導出部303aが、N回目のステップS102で設定されたセンサ情報取得時間の開始時点からセンサ情報取得時間が経過した終了時点までの間に通信部302により受信されたセンサ情報の総数に基づいて、複数のノード20のうち、センサ情報取得時間の間に通信部302により受信されたセンサ情報の送信元のノード20により、センサ情報取得時間の終了時点より後に送信されるセンサ情報の送信タイミングに関する情報であるトラフィックレベルを導出する。そして、N回目のステップS108で、通信部302が、トラフィックレベルが含まれたACKをセンサ情報の送信元のノード20に送信する。
また、タイミング情報導出処理では、N回目のステップS108で、通信部302が、N回目のステップS102で設定されたセンサ情報取得時間の終了時点より後に、トラフィックレベルが含まれたACKをセンサ情報の送信元のノード20に送信する。
ここで、GW30に複数台のノード20から一斉にセンサ情報が送信されて、メッシュネットワーク91、92におけるトラフィックが大きくなる場合がある。このような場合、GW30は、複数台のノード20に対して、1台ずつ順々にACKを送信する。このため、複数台のノード20においてACKを受信するタイミングにばらつきが生じる。よって、複数台のノード20において導出される送信マスク期間が同一であるが、複数台のノード20により送信される複数のセンサ情報の送信タイミングにばらつきが生じる。この結果、複数台のノード20は、次のセンサ情報を互いに異なるタイミングで送信する。したがって、実施形態に係る通信システム1によれば、GW30に多くのノード20から多くのセンサ情報が一斉に送信されるような事態の発生を抑制することができる。
このように、実施形態に係るGW30によれば、導出したトラフィックレベルに応じてノード20のセンサ情報の送信間隔を制御するので、コリジョンやバッファオーバーフロー等の発生を抑制することができる。よって、実施形態に係るGW30によれば、コリジョンやバッファオーバーフロー等の発生によりセンサ情報を正しく受信できなかったり、ACKの送信が遅延したりするような事態の発生を抑制することができる。
したがって、実施形態に係るGW30によれば、センサ情報を確実かつ効率的に受信することができる。
また、実施形態に係るGW30によれば、センサ情報を受信するたびにACKを送信するのではなく、センサ情報取得時間が経過した後にACKを送信するので、GW30の処理負荷が増大することを抑制することができる。
また、実施形態に係るノード20によれば、ACKを受信した後に、センサ情報を送信するので、GW30にセンサ情報を、より確実に受信させることができる。この結果、ノード20とGW30との通信の信頼性が高くなる。
(実施形態の第1の変形例)
なお、上述した実施形態では、GW30が、センサ情報取得時間の終了時点より後に、トラフィックレベルが含まれたACKを送信する例について説明したが、GW30は、センサ情報を受信するたびに、トラフィックレベルが含まれたACKを送信してもよい。そこで、このような形態を、実施形態の第1の変形例として説明する。
図8は、実施形態の第1の変形例に係る制御部303により実行されるタイミング情報導出処理の流れを示すフローチャートである。第1の変形例に係るタイミング情報導出処理は、制御部303に図示しない電源から電力が供給されると実行される。
図8に示すように、第1の変形例に係る制御部303の導出部303aは、複数のノード20のそれぞれからのセンサ情報をログとして記憶部301に格納するログ格納処理の実行を開始する(ステップS301)。これにより、ステップS301以降では、ステップS302〜S305の処理とは非同期で、受信したセンサ情報がログとして記憶部301に記憶される。
そして、導出部303aは、センサ情報取得時間(例えば、20秒)を設定する(ステップS302)。そして、導出部303aは、ノード20からのセンサ情報を受信したか否かを判定する(ステップS303)。
センサ情報を受信していないと判定した場合(ステップS303:No)には、導出部303aは、再び、ステップS303の判定を行う。すなわち、ステップS303において、導出部303aは、センサ情報を受信するまで待機する。
センサ情報を受信したと判定した場合(ステップS303:Yes)には、導出部303aは、トラフィックレベルを導出する(ステップS304)。
第1の変形例に係る導出部303aによるトラフィックレベルの導出方法の一例について説明する。例えば、導出部303aは、まず、記憶部301の記憶内容を参照し、センサ情報を受信した時点(ステップS303でセンサ情報を受信したと判定した時点)から、センサ情報取得時間の分だけ過去に遡った時点までの時間の間に受信したセンサ情報の総数を導出する。そして、導出部303aは、第2のデータベース301aの全レコードの中から、導出したセンサ情報の総数を含む総数の範囲が「センサ情報の総数」の項目に登録されたレコードを検索する。そして、導出部303aは、検索の結果得られたレコードの「トラフィックレベル」の項目に登録されたトラフィックレベルを取得することにより、トラフィックレベルを導出する。
そして、導出部303aは、ステップS303で受信したと判定されたセンサ情報の送信元のノード20に送信するACKに、導出したトラフィックレベルを含め、トラフィックレベルが含まれたACKをセンサ情報の送信元のノード20に送信するように通信部302を制御する(ステップS305)。これにより、通信部302は、トラフィックレベルが含まれたACKをセンサ情報の送信元のノード20に送信する。そして、導出部303aは、ステップS303に戻り、ステップS303以降の処理を再び実行する。すなわち、導出部303aは、ステップS303〜S305の各処理を何回も繰り返し実行する。
以上説明した第1の変形例に係るタイミング情報導出処理では、導出部303aが、通信部302により複数のノード20のそれぞれから送信されたセンサ情報が受信されるたびに、受信されたセンサ情報の受信タイミングよりも過去のセンサ情報取得時間の間に通信部302により受信されたセンサ情報の総数に基づいて、トラフィックレベルを導出する。そして、通信部302は、導出部303aによりトラフィックレベルが導出されるたびに、トラフィックレベルが含まれたACKをセンサ情報の送信元のノード20に送信する。
このように、第1の変形例に係るGW30は、センサ情報を受信するたびに、トラフィックレベルが含まれたACKをノード20に送信する。したがって、第1の変形例に係るGW30によれば、センサ情報を受信してから迅速にトラフィックレベルをノード20に通知するので、ノード20によるセンサ情報の送信間隔の制御を迅速に行うことができる。
(実施形態の第2の変形例)
また、上述した実施形態及び第1の変形例において、GW30が、トラフィックレベルを導出し、導出したトラフィックレベルが含まれたACKをノード20に送信する例について説明した。しかしながら、GW30は、送信マスク期間を導出し、導出した送信マスク期間が含まれたACKをノード20に送信してもよい。そこで、このような形態を、実施形態の第2の変形例として説明する。
図9は、第2の変形例に係る第3のデータベース301bのデータ構造の一例を示す図である。第2の変形例において、ノード20の記憶部201には、第1のデータベース201aが記憶されておらず、GW30の記憶部301には、第2のデータベース301aに代えて、第3のデータベース301bが記憶されている。
図9に示すように、第3のデータベース301bのレコードは、「センサ情報の総数」及び「送信マスク期間」の各項目を有する。
「センサ情報の総数」の項目には、GW30がセンサ情報取得時間内に受信するセンサ情報の総数の範囲が登録される。例えば、図9に示す第3のデータベース301bの1番目のレコードの「センサ情報の総数」の項目には、GW30がセンサ情報取得時間内に受信するセンサ情報の総数の範囲として、0個以上5個未満の範囲が登録されている。
また、第3のデータベース301bの2番目のレコードの「センサ情報の総数」の項目には、GW30がセンサ情報取得時間内に受信するセンサ情報の総数の範囲として、5個以上10個未満の範囲が登録されている。
また、第3のデータベース301bの3番目のレコードの「センサ情報の総数」の項目には、GW30がセンサ情報取得時間内に受信するセンサ情報の総数の範囲として、10個以上15個未満の範囲が登録されている。
また、第3のデータベース301bの4番目のレコードの「センサ情報の総数」の項目には、GW30がセンサ情報取得時間内に受信するセンサ情報の総数の範囲として、15個以上20個未満の範囲が登録されている。
また、第3のデータベース301bの5番目のレコードの「センサ情報の総数」の項目には、GW30がセンサ情報取得時間内に受信するセンサ情報の総数の範囲として、20個以上の範囲が登録されている。
「送信マスク期間」の項目には、送信マスク期間が登録される。なお、送信マスク期間は、タイミング情報の一例である。図9に示す第3のデータベース301bの1番目のレコードの「送信マスク期間」の項目には、1秒が登録されている。すなわち、第3のデータベース301bの1番目のレコードには、0個以上5個未満のセンサ情報の総数の範囲に対応付けられて、1秒の送信マスク期間が登録されている。
また、第3のデータベース301bの2番目のレコードの「送信マスク期間」の項目には、5秒が登録されている。すなわち、第3のデータベース301bの2番目のレコードには、5個以上10個未満のセンサ情報の総数の範囲に対応付けられて、5秒の送信マスク期間が登録されている。
また、第3のデータベース301bの3番目のレコードの「送信マスク期間」の項目には、20秒が登録されている。すなわち、第3のデータベース301bの3番目のレコードには、10個以上15個未満のセンサ情報の総数の範囲に対応付けられて、20秒の送信マスク期間が登録されている。
また、第3のデータベース301bの4番目のレコードの「送信マスク期間」の項目には、40秒が登録されている。すなわち、第3のデータベース301bの4番目のレコードには、15個以上20個未満のセンサ情報の総数の範囲に対応付けられて、40秒の送信マスク期間が登録されている。
また、第3のデータベース301bの5番目のレコードの「送信マスク期間」の項目には、60秒が登録されている。すなわち、第3のデータベース301bの5番目のレコードには、20個以上のセンサ情報の総数の範囲に対応付けられて、60秒の送信マスク期間が登録されている。
次に、図10を参照して、第2の変形例に係るタイミング情報導出処理について説明する。図10は、第2の変形例に係るGW30の制御部303により実行されるタイミング情報導出処理の流れを示すフローチャートである。第2の変形例に係るタイミング情報導出処理は、制御部303に図示しない電源から電力が供給されると実行される。
図10に示す第2の変形例に係るタイミング情報導出処理のステップS101〜S106の各処理は、図6に示す実施形態に係るタイミング情報導出処理のステップS101〜S106の各処理と同様であるため、説明を省略する。
図10に示すように、第2の変形例に係る制御部303の導出部303aは、センサ情報を受信したと判定した場合(ステップS106:Yes)には、送信マスク期間を導出する(ステップS401)。
第2の変形例に係る導出部303aによる送信マスク期間の導出方法の一例について説明する。例えば、導出部303aは、まず、記憶部301の記憶内容を参照し、ステップS102でセンサ情報取得時間が設定されてからセンサ情報取得時間が経過するまでの時間の間に受信したセンサ情報の総数を導出する。そして、導出部303aは、第3のデータベース301bの全レコードの中から、導出したセンサ情報の総数を含む総数の範囲が「センサ情報の総数」の項目に登録されたレコードを検索する。そして、導出部303aは、検索の結果得られたレコードの「送信マスク期間」の項目に登録された送信マスク期間を取得することにより、送信マスク期間を導出する。
そして、導出部303aは、ステップS102でセンサ情報取得時間が設定されてからセンサ情報取得時間が経過するまでの時間の間に受信したセンサ情報の送信元のノード20に送信するACKに、導出した送信マスク期間を含め、送信マスク期間が含まれたACKをセンサ情報の送信元のノード20に送信するように通信部302を制御する(ステップS402)。これにより、通信部302は、送信マスク期間が含まれたACKをセンサ情報の送信元のノード20に送信する。そして、導出部303aは、ステップS102に戻り、ステップS102以降の処理を再び実行する。すなわち、導出部303aは、ステップS102〜S106,S401,S402の各処理を何回も繰り返し実行する。
次に、図11を参照して、第2の変形例に係るセンサ情報送信処理について説明する。図11は、第2の変形例に係るノード20の制御部203により実行されるセンサ情報送信処理の流れを示すフローチャートである。第2の変形例に係るセンサ情報送信処理は、制御部203に図示しない電源から電力が供給されると実行される。
図11に示す第2の変形例に係るセンサ情報送信処理のステップS201〜S203,S205〜S208の各処理は、図7に示す実施形態に係るセンサ情報送信処理のステップS201〜S203,S205〜S208の各処理と同様であるため、説明を省略する。
図11に示すように、第2の変形例に係る制御部203の送信制御部203aは、ACKを受信したと判定した場合(ステップS203:Yes)には、送信制御部203aは、受信したACKから、ACKに含まれる送信マスク期間を抽出する(ステップS403)。
以上説明した第2の変形例に係るタイミング情報導出処理では、1回目のステップS401で、導出部303aが、1回目のステップS102で設定されたセンサ情報取得時間の開始時点からセンサ情報取得時間が経過した終了時点までの間に通信部302により受信されたセンサ情報の総数に基づいて、複数のノード20のうち、センサ情報取得時間の間に通信部302により受信されたセンサ情報の送信元のノード20により、センサ情報取得時間の終了時点より後に送信されるセンサ情報の送信タイミングに関する情報である送信マスク期間を導出する。そして、1回目のステップS402で、導出部303aが、送信マスク期間が含まれたACKをセンサ情報の送信元のノード20に送信するように通信部302を制御する。これにより、通信部302は、送信マスク期間が含まれたACKをセンサ情報の送信元のノード20に送信する。
導出部303a及び通信部302が実行する処理は、次のように一般化することができる。例えば、N回目のステップS401で、導出部303aが、N回目のステップS102で設定されたセンサ情報取得時間の開始時点から終了時点までの間に通信部302により受信されたセンサ情報の総数に基づいて、複数のノード20のうち、センサ情報取得時間の間に通信部302により受信されたセンサ情報の送信元のノード20により、センサ情報取得時間の終了時点より後に送信されるセンサ情報の送信タイミングに関する情報である送信マスク期間を導出する。そして、N回目のステップS402で、通信部302が、送信マスク期間が含まれたACKをセンサ情報の送信元のノード20に送信する。
また、タイミング情報導出処理では、N回目のステップS402で、通信部302が、N回目のステップS102で設定されたセンサ情報取得時間の終了時点より後に、送信マスク期間が含まれたACKをセンサ情報の送信元のノード20に送信する。
第2の変形例に係るGW30によれば、実施形態に係るGW30と同様に、センサ情報を確実かつ効率的に受信することができる。
上述した実施形態や第1の変形例、第2の変形例では、GW30の導出部303aが、センサ情報の送信元のノード20に、トラフィックレベル又は送信マスク期間が含まれたACKを送信するように通信部302を制御する例について説明した。すなわち、通信部302が、センサ情報の送信元のノード20にトラフィックレベル又は送信マスク期間が含まれたACKを送信する例について説明した。
しかしながら、GW30の導出部303aが、少なくとも1つのノード20に、トラフィックレベル又は送信マスク期間が含まれたACKを送信するように通信部302を制御してもよい。すなわち、通信部302が、少なくとも1つのノード20に、トラフィックレベル又は送信マスク期間が含まれたACKを送信してもよい。この場合、少なくとも1つのノード20の通信部202が、導出したトラフィックレベル又は送信マスク期間に基づいたタイミングで、センサ情報取得時間の終了時点より後に送信されるセンサ情報を送信する。
例えば、導出部303aが、GW30と通信可能な全てのノード20(複数のノード20)に、トラフィックレベル又は送信マスク期間が含まれたACKを送信するように通信部302を制御してもよい。すなわち、通信部302が、GW30と通信可能な全てのノード20に、トラフィックレベル又は送信マスク期間が含まれたACKを送信してもよい。
また、上述した実施形態や第1の変形例、第2の変形例では、ノードのセンサ情報をサーバに集約させる通信システムに、上述した技術を適用する例について説明したが、上述した技術を他のシステムに適用してもよい。
また、上記実施の形態により本発明が限定されるものではない。上述した各構成要素を適宜組み合わせて構成したものも本発明に含まれる。また、さらなる効果や変形例は、当業者によって容易に導き出すことができる。よって、本発明のより広範な態様は、上記の実施の形態に限定されるものではなく、様々な変更が可能である。