まず、発明の原理(概要)について説明する。センサ装置は中継装置であるゲートウェイ装置に対して計測結果を記したパケットを送信する際に、センサデータの送信元のセンサ装置の識別子等の識別情報と、センサ装置における計測のタイミングを示すタイミング情報、例えば、計測通番を示すシーケンス番号を、パケットに格納するものとする。同一時刻に行われた計測処理の結果を、複数パケットに分けて順次送信する場合は、当該シーケンス番号の値を統一してパケットを送信する。
ゲートウェイ装置は、センサ装置から受信したパケットに対して受信時刻を付与する受信時刻付与部を持ち、センサ装置からパケットを受信すると、受信時刻をパケットに付与して、当該パケットをサーバ装置に対して転送する。
サーバ装置は、ゲートウェイ装置からパケットを受信すると、パケットに格納された送信元の識別情報やシーケンス番号、センサ値の他、前述のゲートウェイ装置における受信時刻情報等を収集データ管理部にて管理する。
サーバ装置は、センサ装置から計測処理結果に関する全データが送られた後(具体的には、例えば基準時刻から一定のタイムアウト時間が経過した後)、タイムスタンプ補正処理を実行するタイムスタンプ補正部を持ち、収集データ管理部を参照して、同一の送信元の識別情報、且つ同一のシーケンス番号を持つデータを抽出する。計測通番を示すシーケンス番号が同一である事を以って、サーバ装置は当該データが同一の時刻に計測されたデータである事が判定出来る。
そして、抽出された全データのゲートウェイ装置における受信時刻を参照して、最も早い受信時刻を判定し、最も早い受信時刻を前述の抽出データにおける補正後のタイムスタンプとして適用する。同一時刻に計測された複数データについて、最初にゲートウェイ装置に受信された時刻が、本来の計測時刻に最も近い事は明らかである。
このようなタイムスタンプ補正処理を施す事により、センサ装置による計測時刻情報の通知を必要とせず、且つ異なる時刻に受信した複数データに対して、計測時刻の同時性を判定する事が出来る。さらに、ゲートウェイ装置の受信時刻を基に本来の計測時刻に近い時刻にタイムスタンプを補正する事が可能となる。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明では、[AAAテーブル]の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、[AAAテーブル]を[AAA情報]とすることができる。
また、以下の説明では、プロセッサは、典型的には、CPU(Central Processing Unit)である。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
また、以下の説明では、[プログラム]を動作の主体として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)等を用いながら行うため、実際の処理の主体はプロセッサである。従って、プログラムを動作の主体として説明された処理は、プロセッサを含む装置が行う処理としてもよい。また、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでもよい。
コンピュータプログラムは、プログラムソースから装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ、又は、計算機が読み取り可能な記憶メディアであってもよい。
以下に、本発明のタイムスタンプ補正方法に係る実施例を図1〜図14を用いて説明する。実施例1を図1〜図8を用いて説明し、実施例2を図9〜図12、実施例3を図13〜図14を用いて説明する。
実施例1では、センサ装置から収集されたデータのタイムスタンプ補正手法について基本形を説明する。まず、図1を用いて通信システムの構成について説明する。次に、図2を用いてセンサ装置が送信するパケットのペイロード部の構成、図3〜図5を用いてサーバ装置が管理するテーブル情報を説明する。その後、図6〜図8を用いて収集データに対するタイムスタンプ補正処理と、タイムスタンプ補正結果を含む収集データ情報を出力する画面表示例を説明する。
<システム構成>
図1を参照して、通信システムの構成を説明する。図1は、実施例1における通信システムの構成のハードウェア構成を説明するブロック図である。
図1において、通信システム1は、複数のセンサ装置101(101−A〜101−C)、ならびに中継装置であるゲートウェイ装置102(102−a)と、サーバ装置103から構成されている。例えば現場機器の温度情報など、センサ装置101で取得されたデータは、無線通信等によりゲートウェイ装置102宛てに送信される。そして、ゲートウェイ装置102は、センサ装置101から収集したデータをサーバ装置103へ転送する。サーバ装置103は、現場データを活用したサービスを提供するアプリケーションプログラム139が実装された装置であり、実施例1によるタイムスタンプの補正処理も担う装置である。
尚、図1ではゲートウェイ装置102が、有線または無線のネットワーク104でサーバ装置103に接続されるケースを示しているが、ゲートウェイ装置102とサーバ装置103を分離せずに、サーバ装置103の機能をゲートウェイ装置102に統合し、一つの装置として提供しても構わない。
ここで、センサ装置101のハードウェア構成を説明する。センサ装置101は、現場からデータを取得してゲートウェイ装置102に送信するものであり、ゲートウェイ装置102との通信機能を有する組込み機器である。センサ装置101は、取得する現場データの種類に応じて種々の構成を有する。例えば、現場の温度センサを計測する温度計測装置、現場の映像を取得するカメラ装置、現場の音(ノイズ)などを収集する音響センサ装置などである。
図1において、センサ装置101は、通信I/F(Interface)111と、センサ112、CPU113、記憶装置114、これらを接続するバス117から構成されている。通信I/F111は、例えば無線通信を介してゲートウェイ装置102とデータの送受信を行う場合、デジタル信号と無線信号とを相互に変換し、生成したデジタルデータを無線信号に変換して送信する送信部と、受信した無線信号からデジタルデータを取り出す受信部から構成される。尚、ゲートウェイ装置102との通信手段は無線通信に限定するものではなく、有線通信であっても構わない。
センサ112は前述の通り、取得する現場データの種類に応じて様々であり、温度センサや音響センサ等を有する形となる。CPU113は、記憶装置114に格納されている各種コンピュータプログラムを実行し、これによりセンサ装置101の有する各種機能が実現される。
記憶装置114は、センサプログラム115、通信処理部116を備えている。記憶装置114は、例えば読み出し専用の半導体メモリなどから構成される記憶装置と、書き換え可能な半導体メモリ素子などから構成される記憶装置を備え、各種処理を実現するコンピュータプログラムや、取得した現場データなどを格納する。
センサプログラム115では、センサ112に対応する計測方法や計測スケジュール(計測タイミング)などの各種設定が管理され、内部バス117を介して接続されたCPU113により計測処理が実行される。通信処理部116は、通信における送受信処理を実現するものである。具体的には、送信する際の送信宛先指定等のパケット組立て処理や、受信する際の自装置宛のパケットか否かの判定等を始めとした、パケット解析処理を行う。
尚、センサ装置101は組み込み機器でなく、独立した装置であっても良い。また、必ずしも図1の構成を全て備える必要は無く、例えば他装置が送信するパケットの中継装置としてのみ動作させる場合は、センサ112を持たない構成であっても構わない。
次に、ゲートウェイ装置102のハードウェア構成を説明する。ゲートウェイ装置102は、受信したデータを他の装置へ中継する中継装置である。ゲートウェイ装置102は、センサ装置101と同様に、通信I/F121と、CPU122、記憶装置123と、これらを接続するバス126を有する。CPU122は、記憶装置123に格納されている各種コンピュータプログラムを実行し、これにゲートウェイ装置102の有する各種機能が実現される。
尚、通信I/F121には、センサ装置101との通信手段以外に、サーバ装置103との通信手段を備え、Ethernet(登録商標)、WiFi(登録商標)、光回線、電話網等の外部ネットワークを利用するための機能を有する。ただし、ゲートウェイ装置102とサーバ装置103を統合し、一つの装置として提供する場合などは、必ずしも搭載する必要は無い。
また、記憶装置123には通信処理部124の他に、受信時刻付与部125を有する。受信時刻付与部125では、センサ装置101からデータを受信した際に、当該データに対して、ゲートウェイ装置102における受信時刻を付与する処理を行う。受信時刻付与部125により、ゲートウェイ装置102での受信時刻を付与されたデータはサーバ装置103宛てに転送される。
続いて、サーバ装置103のハードウェア構成を説明する。通信I/F131と、CPU132、記憶装置133、操作部140、表示部141、これらを接続するバス142は前述のものと同様である。CPU132は、記憶装置133に格納されている各種コンピュータプログラムを実行し、これにサーバ装置103の有する各種機能が実現される。
図1において、タイムスタンプ補正部135は、ゲートウェイ装置102を介してセンサ装置101から収集したデータに対して、ゲートウェイ装置102の受信時刻を基に補正後のタイムスタンプを付与する処理を行う。
収集データ管理部136は、センサ値など、センサ装置101から受信したデータを管理する。タイムスタンプ補正部135により補正されたタイムスタンプ情報も、収集データ管理部136にて管理される。
センサ装置情報管理部137は、各センサ装置101について、センサ装置101の識別子となる固有のID情報や、計測対象の種別情報やデータ数、データ収集スケジュール等を記録したテーブルを管理する。
ネットワーク管理部138は、各センサ装置101について、各々が通信可能なゲートウェイ装置情報を管理するテーブルである。例えば、サーバ装置103からセンサ装置101にパケットを送信する際に、どのゲートウェイ装置102を介して送信すべきかを決定する際にも、ネットワーク管理部138の情報が参照される。
アプリケーションプログラム139は、収集データを活用したサービスをユーザに提供するプログラムであり、例えば各センサ装置101から受信したセンサ値の単位時間あたりの平均値を提供するプログラムの場合、収集データ管理部136からセンサ値を参照して平均値を算出し、出力するデータ解析処理などを行う。
また、操作部140は、例えばキーボードやマウスなどから構成され、ユーザが各種操作や指令を入力するために用いられる。表示部141は、例えば液晶ディスプレイモニタなどから構成され、必要な画面や各種処理の結果を表示する。
尚、前述の通り、サーバ装置103の機能をゲートウェイ装置102に統合し、一つの装置として統合する他、サーバ装置103の一部機能を分離して、複数のサーバ装置を設けても構わない。例えば、ネットワーク管理を担うネットワーク管理サーバ装置と、タイムスタンプ補正処理や収集データの管理を担うアプリケーションサーバ装置に分けて設置する形態なども考えられる。また、図1のようにサーバ装置103と、ゲートウェイ装置102を分離する場合、サーバ装置103とゲートウェイ装置102の両方を現場に設置する他、ゲートウェイ装置102を現場に設置して、サーバ装置103をクラウド上など別拠点に設置する構成でも構わない。
<パケットデータ>
図2を参照して、センサ装置101が送信するパケットのペイロード部について説明する。図2は、実施例1におけるセンサ装置101が送信するパケットのペイロード部の構成図である。センサ装置101が送信するパケットのペイロード部200には、送信元ID201、シーケンス番号202、データ通番203、センサ値204が格納される。勿論、これら以外にもアプリケーションプログラムに必要なデータ等、任意の情報をペイロード部に追加して構わない。
送信元ID201は、当該パケットの送信元となるセンサ装置101の識別子を示し、送信元識別情報となる。具体的には、センサ装置101のアドレスやホスト名などを記載するフィールドであり、このフィールドに記載する識別子は、センサ装置とケートウェイ装置間の通信システムで採用している方式に準拠する。IPアドレス、MACアドレスまたは独自の識別子でセンサ装置101を識別しているのであれば、それらの識別子を用いても良い。ただし、パケットのヘッダ部に同様の識別子が付与される場合は、送信元ID201をペイロード部に格納する事は必須ではない。
シーケンス番号202は、センサ装置101における計測処理のタイミングを示すタイミング情報である。例えば、各センサ装置101における計測通番や記号を示している。例えば、シーケンス番号を「0」から開始する場合、1回目の計測処理で得られたデータを送信する際は当該フィールドに「0」を格納し、2回目の計測処理で得られたデータを送信する際はインクリメントして「1」を格納する。勿論、シーケンス番号202のフィールド長は有限値であり、例えばシーケンス番号202のフィールドを1バイト長で表現する場合、通番の最大値は「255」となる。シーケンス番号202が最大値に達した場合は、再び「0」に戻って通番を記載する。シーケンス番号202の最大値(フィールド長)の設定は任意であり、例えば1度に送信可能なパケットサイズが極めて小さく、当該フィールドが占める領域を削減したい場合は1バイト以下、例えば1ビット(シーケンス番号は「0」か「1」)の表現であっても構わない。
データ通番203は、1回の計測処理で得られたデータを識別するための情報であり、例えば、1回の計測処理で得られたデータに対する通番を示す番号である。例えば、センサ装置101が1回の計測処理で同時に3点の温度情報を計測する場合、3つのデータを区別するための識別子としてデータ通番を付与し、例えば「1〜3」を格納する。この時、3つのデータを分けて送信する場合、「シーケンス番号:0、データ通番:1」、「シーケンス番号:0、データ通番:2」、「シーケンス番号:0、データ通番:3」のように、同じ計測処理で得られたデータを格納するパケットについては、シーケンス番号202の値を統一して送信する。
センサ値204は、前述のシーケンス番号202、データ通番203に対応するセンサ値(計測処理結果に関するデータ)を格納するフィールドである。尚、十分に大きなサイズのパケットが送信可能な場合などにおいて、必ずしもデータ数と同じ数のパケットに分ける必要は無く、例えばデータ通番「1」と「2」に対する複数データを1つのパケットにマージして、送信しても構わない。
図2で示した送信元ID201、シーケンス番号202、データ通番203は、それぞれを識別可能な情報であれば、数字以外の値であっても構わない。
<各種テーブル>
図3を参照して、サーバ装置103の収集データ管理部136が保持する収集データ管理テーブル300について説明する。収集データ管理テーブル300は、センサ装置101からの収集データに関する情報を管理するものであり、サーバ装置103はゲートウェイ装置102を介してセンサ装置101からパケットを受信すると、当該テーブル300に情報を登録する。図3は、実施例1におけるサーバ装置103が保持する収集データ管理テーブル300の構成図である。
センサ装置ID301は、パケット送信元のセンサ装置101の識別子、即ち、センサデータの送信元のセンサ装置の識別情報を示している。前述の通り、当該識別情報はIPアドレス、MACアドレスまたは独自の識別子であっても構わない。図3の例では、センサ装置101の識別子を図1の添字部分で示している。
シーケンス番号302は、受信したパケットのペイロード部に格納されている図2のシーケンス番号202の値を記載するフィールドであり、センサ装置におけるセンシングのタイミングを示すタイミング情報、例えば、計測通番を示すものである。
データ通番303は、受信したパケットのペイロード部に格納されている図2のデータ通番203の値を記載するフィールドであり、データに対する通番を示すものである。
センサ値304は、受信したパケットのペイロード部に格納されている図2のセンサ値204の値を記載するフィールドであり、センサ装置101の計測処理によって取得されたセンサ値を示すものである。
ゲートウェイ受信時刻305は、ゲートウェイ装置102の受信時刻付与部125が付与した受信時刻を記載するフィールドであり、当該パケットをゲートウェイ装置102が受信した時刻を示すものである。
補正タイムスタンプ306は、サーバ装置103のタイムスタンプ補正部135が補正した時刻情報を記載するフィールドである。当該補正処理の詳細は、図7にて後述する。尚、パケットを受信してタイムスタンプ補正処理が行われるまでは、当該フィールドは空欄であっても構わない。
図3に収集データ管理テーブル300の構成図を示したが、アプリケーションプログラム139などを実行する上で、収集データに関して追加で管理すべき情報が存在する場合は、収集データ管理テーブルに適宜追加しても構わない。図3で示した送信元ID301、シーケンス番号302、データ通番303は、それぞれを識別可能な情報であれば、数字以外の値であっても構わない。
図4を参照して、サーバ装置103のセンサ装置情報管理部137が保持するセンサ装置情報管理テーブル400について説明する。センサ装置情報管理テーブル400は、現場に設置した各センサ装置101に関する情報を管理するものであり、図4は当該テーブルの構成図を示している。
センサ装置ID401は、センサ装置101の識別子等の識別情報を示している。前述の通り、当該識別子の形式は任意であり、図4の例においてもセンサ装置101の識別子を図1の添字部分で示している。
計測種別402は、各センサ装置101が計測する種別情報を示している。尚、全てのセンサ装置101が同じ種別情報を計測している場合などにおいて、計測種別402は省略しても構わない。
データ数403は、各センサ装置101が計測するデータ数を示している。図4の例では、センサ装置101−Aが3点の温度情報を計測している事を示している。
シーケンス番号最大値404は、各センサ装置101が送信するパケットのペイロード部に記載されるシーケンス番号202の最大値を示している。センサ装置101毎にペイロード部の各フィールド長を可変とする場合などにおいて、当該テーブルにて各々のシーケンス番号の最大値を管理する。ただし、全てのセンサ装置101においてシーケンス番号の最大値が共通である場合などは、当該テーブルでの管理を省略しても構わない。
収集周期405は、各センサ装置101の収集データに関するスケジューリング情報を示している。例えば、図4の例では、センサ装置101−Aから60分毎に3点の温度情報を収集する事を示している。尚、分単位の記載を例として挙げたが、単位の設定は任意である。また、収集のスケジューリング情報として、収集周期以外に収集起点時刻、再送回数、再送間隔等を個別に設定・管理する場合は、当該テーブルに適宜追加して管理を行っても構わない。
尚、センサ装置情報管理テーブル400にて、シーケンス番号最大値404と、収集周期405を管理する理由として、収集データに対するタイムアウト判定の適用が挙げられる。例えば、シーケンス番号の最大値が非常に小さい場合に、「シーケンス番号:0、データ通番:1」のパケットを受信した後、一定時間が経過した後に遅れて「シーケンス番号0、データ通番:2」のパケットを受信したとする。この時、当該パケットが、前回のシーケンス番号「0」の計測結果に関するパケットなのか、或いは前回計測分は欠損し、シーケンス番号が最大値に達してシーケンス番号が「0」に戻った後の、新規計測結果に関するパケットなのかを判定する必要がある。
ここで、例えば「(シーケンス番号最大値+1)×収集周期」以上の時間が経過していれば、シーケンス番号が最大値に達してシーケンス番号が「0」に戻った後の、新規計測結果に関するパケットである事が推定出来る。このように、遅れて受信されるパケットに対してタイムアウト時間の判定を設ける事で、シーケンス番号の最大値が小さい場合でも、前回計測に関する収集データなのか、新規計測に関する収集データなのかを判定する事が可能となる。尚、「(シーケンス番号最大値+1)×収集周期」をタイムアウト時間とする例を挙げたが、より短く設定し、タイムアウト時間を超過して遅れて受信したパケットを無効として破棄するなど、任意の方法でタイムアウト時間を設定しても構わない。
図4で示したセンサ装置ID401等は、例示したもの以外に識別可能な情報であればよい。
図5を参照して、サーバ装置103のネットワーク管理部138が保持するネットワーク管理テーブル500について説明する。ネットワーク管理テーブル500は、現場に設置した各センサ装置101に関するネットワーク構成情報を管理するものであり、各々が通信可能なゲートウェイ装置102の情報を管理する。図5は、実施例1におけるサーバ装置103が保持するネットワーク管理テーブルの構成図である。
センサ装置ID501は、センサ装置101の識別子等の識別情報を示している。前述の通り、当該識別子の形式は任意であり、図5の例においてもセンサ装置101の識別子を図1の添字部分で示している。
通信可能ゲートウェイ装置ID502は、各センサ装置501が通信可能なゲートウェイ装置102の識別子を示している。ゲートウェイ装置102の識別子も形式は任意であり、図5の例ではゲートウェイ装置102の識別子を図1の添字部分で示している。尚、図1の例では、各センサ装置101が1台のゲートウェイ装置102(102−a)と通信可能であるネットワーク構成を示しているが、複数のゲートウェイ装置102と通信可能な場合は、当該テーブルにゲートウェイ装置102の識別子を複数記述する。
また、ネットワーク管理を行う上で、センサ装置101とゲートウェイ装置102との間の通信品質等を管理する必要がある場合は、これらの情報を当該テーブルに適宜追加して管理しても構わない。図5で示したセンサ装置ID401等は、例示したもの以外に識別可能な情報であればよい。
<収集データに対するタイムスタンプ補正処理>
図6を参照して、センサ装置101が送信したデータを収集し、サーバ装置103にてタイムスタンプ補正処理を行うまでの全体的な流れを説明する。
図6は、実施例1におけるデータ収集、及びタイムスタンプ補正処理の流れを示すシーケンス図である。センサ装置101は各々のセンサプログラム115で定義された計測スケジュールに従って計測処理を行い、計測処理によって取得したセンサ値を格納したパケットを送信する。図6の例では、センサ装置101が1回の計測処理で、n個(nは1以上の任意の整数)のデータをn個のパケットにて順次送信する想定とする。サーバ装置103は、異なる時刻に受信された当該パケットに対してタイムスタンプ補正処理を実行する。
図6において、ステップS601は、センサ装置101がセンサ値を取得するために行う計測処理である。本処理のタイミングは、前述の通り、センサプログラム115で定義された計測スケジュールに準拠する。
ステップS602は、センサ装置101がセンサ値を通知するためのパケットを組み立てる処理である。具体的には、センサ装置101の通信処理部116にてパケットの組み立てが行われ、この時、パケットのペイロード部に図2の送信元ID201、シーケンス番号202、データ通番203、センサ値204が格納される。図6の例では、シーケンス番号を「x」(xは0以上、シーケンス番号最大値以下の整数)としており、n個のデータのうち1つ目のデータを送信するため、データ通番を「1」としている。
ステップS603は、ステップS602で組み立てたパケットをゲートウェイ装置102宛てに送信する処理である。尚、センサ装置101は、データ通番「1」のパケットを送信後、一定時間(例えば「収集周期÷データ数n」)経過後に、同様にデータ通番「2」に該当するセンサ値を通知するため、次のパケットの組み立て処理を行い、順次送信する。
ステップS604は、ステップS603でセンサ装置101が送信したパケットを、ゲートウェイ装置102が受信する処理である。
ステップS605は、ゲートウェイ装置102がステップS604でパケットを受信した時刻を、当該パケットに付与する処理である。具体的には、ゲートウェイ装置102はセンサ装置101からパケットを受信すると、受信時刻付与部125にて受信時刻の付与を行う。
ステップS606は、ゲートウェイ装置102がステップS605で受信時刻を付与したパケットを、サーバ装置103宛てに転送する処理である。
ステップS607は、ステップS606でゲートウェイ装置102が送信したパケットを、サーバ装置103が受信する処理である。
ステップS608は、ステップS607で受信したパケットを基に、サーバ装置にて収集データ情報を登録する処理である。具体的には、サーバ装置103の通信処理部134で受信パケットの解析処理を行い、ペイロード部に格納された送信元ID(センサ装置ID)、シーケンス番号、データ通番、センサ値、及びゲートウェイ装置102が付与した受信時刻を取得し、収集データ管理部136が管理する図3の収集データ管理テーブル300に登録を行う。ただし、後述のタイムスタンプ補正処理を行うまでは、当該テーブルにおける補正タイムスタンプ306は空欄のままで構わない。
ステップS609は、センサ装置101がステップS601の計測処理で取得したセンサ値を順次送信した後、最後のn個目のパケットを組み立てる処理である。この時、前述の通り、シーケンス番号は「x」に統一され、データ通番は「n」となる。
ステップS610は、ステップS609で組み立てたパケットをゲートウェイ装置102宛てに送信する処理である。
ステップS611は、ステップS610でセンサ装置101が送信したパケットを、ゲートウェイ装置102が受信する処理である。
ステップS612は、ゲートウェイ装置102がステップS611でパケットを受信した時刻を、受信時刻付与部125にてパケットに付与する処理である。
ステップS613は、ゲートウェイ装置102がステップS612で受信時刻を付与したパケットを、サーバ装置103宛てに転送する処理である。
ステップS614は、ステップS613でゲートウェイ装置102が送信したパケットを、サーバ装置103が受信する処理である。
ステップS615は、ステップS614で受信したパケットを基に、サーバ装置にて収集データ情報を登録する処理である。
ステップS616は、センサ装置101から収集した複数データに対して、サーバ装置103のタイムスタンプ補正部135にてタイムスタンプ補正を行う処理である。具体的には、基準時刻から前述のタイムアウト時間が経過した事などをトリガにして、収集したデータに対するタイムスタンプ補正処理をタイムスタンプ補正部135にて実行する。
当該基準時刻の設定は特定の方法に限定されるものではなく、例えばセンサ装置101における計測実行の期待時刻、或いはステップS607で1つ目のパケットを確認した時刻を基準時刻に設定する方法などが挙げられる。その他、センサ装置101からn個目のパケットを送信後、全センサ値の送信が完了した旨をセンサ装置101から明示的に通知させ、本通知を以ってタイムスタンプ補正処理をサーバ装置103にて実行する形態であっても構わない。また、タイムスタンプ補正処理を開始する際に、幾つかのパケットが欠損しており、図4のセンサ装置情報管理テーブルで管理されるデータ数が揃っていない場合は、適宜サーバ装置103からセンサ装置101に対して再送要求等を行っても良い。勿論、予めパケットの欠損を見越して、センサ装置101が同一パケットを複数回送信する形であっても構わない。ステップS616におけるタイムスタンプ補正処理の詳細については、図7にて詳述する。
図7を参照して、図6のステップS616で行うタイムスタンプ補正処理について説明する。図7は、実施例1におけるサーバ装置103のタイムスタンプ補正部135で行うタイムスタンプ補正処理を示すフローチャートである。サーバ装置103は、センサ装置101から受信したパケットに格納されたシーケンス番号を基に、同一時刻に計測されたデータの組み合わせを判定し、さらにゲートウェイ装置102における各々の受信時刻を基に、本来の計測時刻に近い時間へのタイムスタンプ補正を実行する。以下、詳細を説明する。
図7のステップS701は、サーバ装置103において基準時刻からタイムアウト時間までに受信・登録されたデータのうち、例えば同一送信元の識別情報、且つ同一シーケンス番号(同一のタイミングで取得されたセンサ情報であることを示すタイミング情報)を持つパケットデータを、同一タイミングで計測されたセンサデータとして処理されるべき関連データとして抽出する処理である。具体的には、収集データ管理部136で保持する図3の収集データ管理テーブルを参照し、同一のセンサ装置ID301、且つ同一のシーケンス番号302を持つデータを抽出する。ステップS701の処理が終了すると、ステップS702に進む。
ステップS702は、ステップS701で抽出されたデータ(関連データ)が複数存在するか否かを判定する処理である。複数存在する場合(YES)はステップS703に進み、一つしか存在しない場合(NO)はステップS705に進む。
ステップS703は、ステップS701で抽出された複数のデータ(関連データ)に対して、各々のゲートウェイ装置102における受信時刻を比較し、最も早い受信時刻を判定する処理である。具体的には、図3の収集データ管理テーブルのゲートウェイ受信時刻305を参照し、ステップS701で抽出された複数データの中から最も早い受信時刻を判定する。ステップS703の処理が終了すると、ステップS704に進む。
ステップS704は、ステップS703で判定された最も早い受信時刻を、ステップS701で抽出された各データの補正後のタイムスタンプとして登録する処理である。従って、補正後のタイムスタンプは、抽出された関連データに対して共通の値となる。具体的には、図3の収集データ管理テーブルの補正タイムスタンプ306に、前述の最も早い受信時刻を登録する。例えば図3のテーブル例では、センサ装置IDが「A」、シーケンス番号が「0」のデータのうち、最もゲートウェイ装置における受信時刻が早いのはデータ通番が「1」のデータであり、当該受信時刻を補正後のタイムスタンプとして、データ通番「2」・「3」にも登録する。
最も早いゲートウェイ受信時刻305が、センサ装置101における本来の計測時刻に最も近いのは明らかであり、当該時刻を補正タイムスタンプ306として採用する事で、センサ装置101が計測時刻を通知出来ない条件下においても、本来の計測時刻に近い時刻を再現する事が可能となる。センサ装置101が、データ通番が若い順にパケットを順次送信する場合、全て欠損無く受信されれば、必ずデータ通番が最も小さいデータのゲートウェイ受信時刻305が最も早い時刻となるが、例えばデータ通番が最も小さいデータが欠損し、遅れて再送された場合にはこの限りではない。そのため、本処理ではデータ通番だけで補正後のタイムスタンプを決定するのではなく、ゲートウェイ装置102における最も早い受信時刻を判定する事で、補正後のタイムスタンプを決定している。ステップS704の処理が終了すると、図7のタイムスタンプ補正処理に関するフローチャートを終了する。
ステップS705は、ステップS701で抽出された単一のデータに対して、ゲートウェイ装置102における受信時刻を、補正後のタイムスタンプとしても登録する処理である。具体的には、図3の収集データ管理テーブルの補正タイムスタンプ306に、ゲートウェイ受信時刻305の時刻をコピーする。図3のテーブル例では、センサ装置ID「B」・「C」に関するデータが該当する箇所であり、ゲートウェイ受信時刻305を補正タイムスタンプ306として採用している。ステップS705の処理が終了すると、図7のタイムスタンプ補正処理に関するフローチャートを終了する。
図7の処理で補正されたタイムスタンプを参照する事で、本来同一の時刻に計測された複数データが、分割送信によって異なる時刻に受信されたとしても、計測時刻の同時性を把握する事が出来、且つ本来の計測時刻に近い形で時刻情報を管理する事が可能となる。
図7の例では、複数データの中から最も早いゲートウェイ装置における受信時刻に基づいて、補正タイムスタンプとする方法を示したが、同一タイミングで計測されたセンサデータを把握するためには、複数データの受信時刻の平均値等に基づいて補正タイムスタンプとしても良い。例えば、サーバ装置103が複数のゲートウェイ装置を経由しての時刻情報を受信する場合、ゲートウェイ装置の時刻情報に誤差がある場合等に、本来の計測タイミングを把握するために有効となる場合がある。
尚、図6のシーケンス図では、n個のデータ収集が完了した後に図7のタイムスタンプ補正処理を行う形態を例示したが、n個のデータ収集完了を待たずに逐次タイムスタンプ補正処理を行う形であっても構わない。
<画面表示例>
図8を参照して、図7のタイムスタンプ補正処理によって補正された時刻情報を含む、収集データ情報を出力する画面表示例を説明する。図8は、実施例1における収集データに関する画面表示例を示す説明図である。図8において、サーバ装置103の表示部141は、表示画面800を有し、表示画面800には、地図情報やセンサ装置101等を表示するための表示エリア801が設定されている。また、表示画面800には、収集データに関する表示内容を切り換える項目802が表示される。
図8のように、地図などの現場レイアウト上にセンサ装置101やゲートウェイ装置102を表示し、ポップアップ表示などで収集されたセンサ値や、時刻情報を出力する事で、ユーザは収集データ情報を容易に視認する事が可能となる。図8の例では、収集データ管理部136で保持する収集データ管理テーブルにおけるセンサ値、ゲートウェイ受信時刻(補正前)、補正タイムスタンプの値を表示している。センサ値の単位は、センサ装置情報管理部137が保持するセンサ装置情報管理テーブルの計測種別等から定義可能である。補正タイムスタンプだけでなく、補正前の時刻情報としてゲートウェイ受信時刻を表示する事で、例えばユーザは複数データを計測・通知するセンサ装置101にて、各データがどの程度の時刻ずれ(遅延)を以って収集されたのかを把握する事も可能となる。
図8の項目802は、収集データに関する表示内容を切り替えるものであり、サーバ装置103の操作部140のマウス操作などで、ユーザは表示/非表示の切り替えを行う。例えば、センサ装置101の数が多い場合などにおいて、補正前後の時刻情報を全て表示すると、画面上の出力情報が多くなり、視認性が低下する恐れがある。その場合は、項目802において表示内容の制御を行う事で、視認性を改善する事が可能となる。尚、収集データに関する表示については、図8のような画面例の他に収集データ管理テーブルを表形式で表示するなど、特定の方法に限定されるものではなく、表示内容を切り替える項目802の機能の搭載も必須ではない。
以上のように、本実施例によれば、センサ装置101が計測時刻を通知出来ない条件下で、本来同一の時刻に計測されたデータが複数パケットに分けて送信され、サーバ装置103にて異なる時刻に受信されたとしても、パケットに格納された送信元IDと、計測通番を示すシーケンス番号を基に同一時刻に計測されたデータである事を判定可能となる。また、ゲートウェイ装置102における当該パケットの各々の受信時刻の中から、最も早い受信時刻を補正後のタイムスタンプとして採用する事で、本来の計測時刻に近い時刻を示す事が可能となる。
実施例1では、1台のセンサ装置が同一時刻に計測したデータに対するタイムスタンプ補正方法について説明したが、複数のセンサ装置が同一時刻に計測したデータに対しても、計測時刻の同時性を示すタイムスタンプ補正が求められるケースも考えられる。例えば、ある時刻における機器の温度情報と圧力情報を収集し、これらを基に容積値を算出するケースにおいて、温度を計測するセンサ装置と、圧力を計測するセンサ装置を設置し、同時刻に計測を行うとする。しかし、例えば無線通信を用いて計測値をゲートウェイ装置宛てに送信する場合、2台のセンサ装置が同時にパケットを送信すると電波干渉を起こしてしまうため、時間をずらして送信する必要がある。この時、ゲートウェイ装置における受信時刻だけでは異なる時刻情報が付与されるため、本来の計測時刻の同時性を示すためのタイムスタンプ補正を行う必要がある。
そこで、実施例2では、複数のセンサ装置が同一時刻に計測したデータに対するタイムスタンプ補正方法について説明する。
実施例2において、サーバ装置のセンサ装置情報管理部で保持するテーブルの構成を、図9を用いて説明する。その後、収集データに対するタイムスタンプ補正処理の流れについて図10〜図11で説明し、センサ装置情報等を入力する画面表示例を図12にて説明する。尚、実施例2に係る各種構成等について、図9〜図12に示す構成・処理以外は第1の実施例と同様であるため、これらの説明は省略する。
図9を参照して、第2の実施例において、サーバ装置103のセンサ装置情報管理部137が保持するセンサ装置情報管理テーブル900について説明する。グループID906を管理する点を除けば、第1の実施例におけるテーブル構成と同様である。
グループID906は、計測時刻の同時性を示すべきセンサ装置101の組み合わせを把握するための識別子である。図9の例では、センサ装置ID901が「B」・「C」のセンサ装置101に対して、同じグループID906「II」が付与されており、当該2台のセンサ装置101(101−B、101−C)に対して計測時刻の同時性を示すタイムスタンプ補正を施す必要がある事を示している。グループID906は、特定の識別子に限定するものではなく、例えばセンサ装置101の計測対象となる機器の固有IDなどであっても構わない。
図10を参照して、センサ装置101が送信したデータを収集し、サーバ装置103にてタイムスタンプ補正処理を行うまでの第2の実施例に係る全体的な流れを説明する。図10は、実施例2におけるデータ収集、及びタイムスタンプ補正処理の流れを示すシーケンス図である。図10の例では簡単化のため、センサ装置101(101−B、101−C)が1回の計測処理で、1個のパケットを送信する想定とする。勿論、実施例1で示した通り、任意のn個のパケットを送信する形であっても構わない。
図10において、ステップS1001とステップS1002は、センサ装置101−B、101−Cがセンサ値を取得するために行う計測処理である。本処理のタイミングは、前述の通り、センサプログラム115で定義された計測スケジュールに準拠する。
ステップS1003とステップS1004は、センサ装置101−B、101−Cがセンサ値を通知するためのパケットを組み立てる処理である。通信処理部116にてパケットの組み立てが行われ、図10の例では、シーケンス番号を「x」(xは0以上、シーケンス番号最大値以下の整数)としており、各々1つ目のデータを送信するため、データ通番を「1」としている。
ステップS1005は、ステップS1003でセンサ装置101−Bが組み立てたパケットを、ゲートウェイ装置102宛てに送信する処理である。ここで、センサ装置101−Cが同時に送信してしまうと電波干渉等を招いてしまうため、後述のステップS1011にて、時間をずらして送信する。
ステップS1006は、ステップS1005でセンサ装置101−Bが送信したパケットを、ゲートウェイ装置102が受信する処理である。
ステップS1007は、ゲートウェイ装置102がステップS1006でパケットを受信した時刻を、当該パケットに付与する処理である。
ステップS1008は、ゲートウェイ装置102がステップS1007で受信時刻を付与したパケットを、サーバ装置103宛てに転送する処理である。
ステップS1009は、ステップS1008でゲートウェイ装置102が送信したパケットを、サーバ装置103が受信する処理である。
ステップS1010は、ステップS1009で受信したパケットを基に、サーバ装置にて収集データ情報を登録する処理である。具体的には、サーバ装置103の収集データ管理部136が管理する図3の収集データ管理テーブルへの登録を行う。ただし、後述のタイムスタンプ補正処理を行うまでは、当該テーブルにおける補正タイムスタンプ306は空欄のままで構わない。
ステップS1011は、ステップS1005でセンサ装置101−Bがパケット送信後、センサ装置101−CがステップS1004で組み立てたパケットを、ゲートウェイ装置102宛てに送信する処理である。
ステップS1012は、ステップS1011でセンサ装置101−Cが送信したパケットを、ゲートウェイ装置102が受信する処理である。
ステップS1013は、ゲートウェイ装置102がステップS1012でパケットを受信した時刻を、当該パケットに付与する処理である。
ステップS1014は、ゲートウェイ装置102がステップS1013で受信時刻を付与したパケットを、サーバ装置103宛てに転送する処理である。
ステップS1015は、ステップS1014でゲートウェイ装置102が送信したパケットを、サーバ装置103が受信する処理である。
ステップS1016は、ステップS1015で受信したパケットを基に、サーバ装置にて収集データ情報を登録する処理である。
ステップS1017は、センサ装置101(101−B、101−C)から収集した複数データに対して、サーバ装置103のタイムスタンプ補正部135にてタイムスタンプ補正を行う処理である。具体的には、第1の実施例と同様、基準時刻から前述のタイムアウト時間が経過した事などをトリガにして、収集したデータに対するタイムスタンプ補正処理をタイムスタンプ補正部135にて実行する。前述の通り、当該基準時刻やタイムアウト時間の設定は、特定の方法に限定されるものではない。ステップS1017におけるタイムスタンプ補正処理の詳細については、図11にて詳述する。
図11を参照して、図10のステップS1017で行うタイムスタンプ補正処理について説明する。図11は、実施例2におけるサーバ装置103のタイムスタンプ補正部135で行うタイムスタンプ補正処理を示すフローチャートである。
ステップS1101は、サーバ装置103において基準時刻からタイムアウト時間までに受信・登録されたデータのうち、例えば、送信元のグループIDが同一、且つ同一シーケンス番号を持つデータを、同一タイミングで計測されたセンサデータとして処理されるべき関連データとして抽出する処理である。具体的には、収集データ管理部136で保持する図3の収集データ管理テーブルと、センサ装置情報管理部137で保持する図9のセンサ装置情報管理テーブルを参照し、センサ装置ID301に対応するグループID906が同一であり、且つ同一のシーケンス番号302を持つデータを、関連データとして抽出する。実施例2の当該処理では、センサ装置IDが異なっていても、当該センサ装置101に対応するグループID906が同一であれば、同一の抽出対象になる点で実施例1と異なる。図9に示す例の場合、センサ装置ID「B」・「C」のセンサ装置101(101−B、101−C)が同じグループID906を保持しているため、図3の収集データ例においては、センサ装置ID「B」・「C」のデータが当該処理にて同一の抽出対象として選択される。
ステップS1101の処理が終了すると、ステップ1102に進む。以降の処理は、実施例1の図7におけるステップS702以降と同様である。
ステップS1102は、ステップS1101で抽出されたデータ(関連データ)が複数存在するか否かを判定する処理である。複数存在する場合(YES)はステップS1103に進み、一つしか存在しない場合(NO)はステップS1105に進む。
ステップS1103は、ステップS1101で抽出された複数データに対して、各々のゲートウェイ装置102における受信時刻を比較し、最も早い受信時刻を判定する処理である。具体的には、図3の収集データ管理テーブルのゲートウェイ受信時刻305を参照し、ステップS1101で抽出された複数データの中から最も早い受信時刻を判定する。ステップS1103の処理が終了すると、ステップS1104に進む。
ステップS1104は、ステップS1103で判定された最も早い受信時刻を、ステップS1101で抽出された各データの補正後のタイムスタンプとして登録する処理である。従って、補正後のタイムスタンプは、抽出された関連データに対して共通の値となる。具体的には、図3の収集データ管理テーブルの補正タイムスタンプ306に、前述の最も早い受信時刻を登録する。例えば図3のテーブル例では、センサ装置ID「B」・「C」のデータについてゲートウェイ受信時刻305を比較した時、センサ装置ID「B」のデータに関する受信時刻の方が早いため、実施例2の場合においては、センサ装置ID「B」・「C」のデータに関する補正タイムスタンプ306に、センサ装置ID「B」のデータに関するゲートウェイ受信時刻(図の例では「2018−12−13 00:06:10」)が登録される。ステップS1104の処理が終了すると、図11のタイムスタンプ補正処理に関するフローチャートを終了する。
図11の例では、センサ装置「B」・「C」の複数データの中から最も早い受信時刻に基づいて、補正タイムスタンプとする方法を示したが、同一タイミングで計測されたセンサデータとして把握するためには、複数データの受信時刻の平均値等に基づいて補正タイムスタンプとしても良い。例えば、サーバ装置103が複数のゲートウェイ装置を経由しての時刻情報を受信する場合、ゲートウェイ装置の時刻情報に誤差がある場合等に、本来の計測タイミングを把握するために有効となる場合がある。
ステップS1105は、ステップS1101で抽出された単一のデータに対して、ゲートウェイ装置102における受信時刻を、補正後のタイムスタンプとしても登録する処理である。具体的には、図3の収集データ管理テーブルの補正タイムスタンプ306に、ゲートウェイ受信時刻305の時刻をコピーする。ステップS1105の処理が終了すると、図11のタイムスタンプ補正処理に関するフローチャートを終了する。
図11の処理で補正されたタイムスタンプを参照する事で、複数のセンサ装置101によって本来同一の時刻に計測された複数データが、ゲートウェイ装置102及びサーバ装置103で異なる時刻に受信されたとしても、計測時刻の同時性を把握する事が出来、且つ本来の計測時刻に近い形で時刻情報を管理する事が可能となる。
図12を参照して、センサ装置情報等を入力する画面表示例を説明する。図12は、実施例1や実施例2におけるセンサ装置情報等の設定に関する画面表示例を示す説明図である。図12において、サーバ装置103の表示部141は、表示画面1200を有し、表示画面1200には、図4や図9のセンサ装置情報管理テーブルを生成・設定するための表示エリア1201、表示エリア1201における選択肢を追加するための表示エリア1202、データ収集に使用する通信方式の仕様情報を登録するための表示エリア1203、図7のステップS701や図11のステップS1101で用いるタイムアウト時間の設定方法を選択するための表示エリア1204を備える。勿論、これらの表示エリアを全て備える必要は無く、一部のみの表示エリアを設ける、或いは追加の表示エリアを設けても構わない。
表示エリア1201は、サーバ装置103のセンサ装置情報管理部137が管理するテーブルを生成・設定するための表示部である。ユーザはサーバ装置103の操作部140のマウス操作等により、各センサ装置IDに対応する計測対象、データ数、シーケンス番号最大値、収集周期、グループIDを選択・入力する。ただし、実施例1の場合はグループIDの入力欄は省略しても構わない。また、センサ装置情報管理テーブルにて、当該項目以外の情報も管理する場合は、表示エリア1201に適宜追加しても構わない。テーブル情報の登録・解除を行いたい場合、図12の例では、対象となるセンサ装置IDの選択部にあるチェックボックスを有効にし、上部の登録/解除ボタンを押下する。
表示エリア1202は、表示エリア1201にて選択可能な選択肢を追加するための表示部である。例えば、新規センサ端末101を現場に追加する場合は、該当する新規センサ装置IDを表示エリア1202の「新規センサ装置ID」のフィールドに入力し、追加ボタンを押下すると表示エリア1201に当該IDを持つセンサ装置101に関する設定部が追加される。
表示エリア1203は、センサ装置101からのデータ収集に使用する通信方式に関する仕様を入力するための表示部である。例えば、通信方式の制約や、通信速度等の観点で、データ収集周期に限界値が存在する場合がある。つまり、データ収集周期は、データ収集に使用する通信方式、或いは通信速度から決定される。この時、表示エリア1203で入力した通信仕様に対し、表示エリア1201に入力された収集周期の値が異常である場合は、警告を表示するなどの処理を設ける事が出来る。その他、通信仕様を入力すると、その内容に応じて最適な収集周期等が表示エリア1201に表示される形態であっても構わない。
表示エリア1204は、図7のステップS701や図11のステップS1101で用いるタイムアウト時間の設定方法を選択するための表示部である。自動設定を選択した場合は、表示エリア1201に入力された各々のシーケンス番号最大値と収集周期を基に、例えば「(シーケンス番号最大値+1)×収集周期」などの算出式で自動設定する、或いは静的に固定時間を割り当てるなどして設定される。手動設定を選択した場合は、例えば表示エリア1201にて、センサ装置毎にタイムアウト時間を入力する欄を追加表示するなどして、ユーザによる入力を促す。図12に例示するような画面表示例を設ける事で、ユーザはセンサ装置情報や、タイムスタンプ補正処理に関する設定を容易に行う事が可能となる。
以上のように、本実施の形態によるタイムスタンプ補正方法では、計測時刻の同時性を示すべきセンサ装置101の組み合わせを、サーバ装置103にて管理するグループIDで識別する。これにより、複数のセンサ装置101によって本来同一の時刻に計測された複数データが、ゲートウェイ装置102及びサーバ装置103で異なる時刻に受信されたとしても、計測時刻の同時性を把握する事が出来、且つ本来の計測時刻に近い形でタイムスタンプを補正する事が可能となる。