(57)【要約】【課題】  互いのデータのタイムスタンプの周期を合わせて複数のデータベースを結合できるようにすること。【解決手段】  クエリの問い合わせ構文（ＳＱＬ構文）に、タイムスタンプ精度を指定するための項目（ＬＥＶＥＬ）を追加する。テーブル結合に際し、ＬＥＶＥＬに所望の精度を指定したクエリを送信する。クエリパーサ１０１ｂによりこのクエリを解析し、問い合わせ対象の各データベースごとに個別クエリを作成し送信する。そして、取得された各テーブルを結合する際、指定された精度に従ってタイムスタンプの桁数を揃え、タイムスタンプの時系列に従ってテーブルを結合するようにした。【選択図】  図５
2019008703.tif 000002
【特許請求の範囲】
【請求項１】
タイムスタンプが付与されたデータを蓄積する第１データベースと、
制御装置とを具備し、
前記制御装置は、
タイムスタンプが付与されたデータを蓄積する第２データベースと、
タイムスタンプの精度を指定するための項目を含む共通クエリを作成する作成部と、
前記共通クエリを解析して、前記第１データベース宛ての第１個別クエリと前記第２データベース宛ての第２個別クエリとを作成するクエリパーサと、
前記第１個別クエリを前記第１データベース宛てに送信し、前記第２個別クエリを前記第２データベース宛てに送信する送信部と、
前記送信された第１個別クエリに応じて前記第１データベースから返送されたデータのタイムスタンプと前記送信された第２個別クエリに応じて前記第２データベースから返送されたデータのタイムスタンプとの少なくともいずれか一方を、前記共通クエリで指定された精度に基づいて加工して、当該第１データベースから返送されたデータと当該第２データベースから返送されたデータとを結合する結合部とを備える、制御システム。
【請求項２】
前記結合部は、前記指定された精度よりも高い前記タイムスタンプの桁を当該指定された精度の桁に切り捨て、または切り上げして前記タイムスタンプを加工する、請求項１に記載の制御システム。
【請求項３】
前記結合部は、より多数のデータを返送した一方のデータベースからのデータを単位時間あたりの平均値に変換して、前記第１データベースから返送されたデータの数と前記第２データベースから返送されたデータの数とを合わせて、当該第１データベースから返送されたデータと当該第２データベースから返送されたデータとを結合する、請求項１に記載の制御システム。
【請求項４】
前記結合部は、より多数のデータを返送した一方のデータベースからのデータを単位時間内の最大値または最小値のいずれかに変換して、前記第１データベースから返送されたデータの数と前記第２データベースから返送されたデータの数とを合わせて、当該第１データベースから返送されたデータと当該第２データベースから返送されたデータとを結合する、請求項１に記載の制御システム。
【請求項５】
さらに、前記第１データベースから返送されたデータのタイムスタンプと前記第２データベースから返送されたデータのタイムスタンプとに基づいて、前記精度を設定する設定部を具備し、
前記結合部は、前記設定部により設定された精度を基準として、当該第１データベースから返送されたデータのタイムスタンプと当該第２データベースから返送されたデータのタイムスタンプとの少なくともいずれか一方を加工する、請求項１に記載の制御システム。
【請求項６】
タイムスタンプが付与されたデータをそれぞれ蓄積する第１データベースと第２データベースとを具備する制御システムに適用可能な制御装置であって、
タイムスタンプの精度を指定するための項目を含む共通クエリを作成する作成部と、
前記共通クエリを解析して、前記第１データベース宛ての第１個別クエリと前記第２データベース宛ての第２個別クエリとを作成するクエリパーサと、
前記第１個別クエリを前記第１データベース宛てに送信し、前記第２個別クエリを前記第２データベース宛てに送信する送信部と、
前記送信された第１個別クエリに応じて前記第１データベースから返送されたデータのタイムスタンプと前記送信された第２個別クエリに応じて前記第２データベースから返送されたデータのタイムスタンプとの少なくともいずれか一方を、前記共通クエリで指定された精度に基づいて加工して、当該第１データベースから返送されたデータと当該第２データベースから返送されたデータとを結合する結合部とを備える、制御装置。
【請求項７】
前記結合部は、前記指定された精度よりも高い前記タイムスタンプの桁を当該指定された精度の桁に切り捨て、または切り上げして前記タイムスタンプを加工する、請求項６に記載の制御装置。
【請求項８】
前記結合部は、前記指定された精度を有するタイムスタンプを付与された複数のデータのタイムスタンプを、当該複数のデータ間での平均値に変換する、請求項６に記載の制御装置。
【請求項９】
前記結合部は、前記指定された精度を有するタイムスタンプを付与された複数のデータのタイムスタンプを、当該複数のデータ間での最大値または最小値のいずれかに変換する、請求項６に記載の制御装置。
【請求項１０】
さらに、前記第１データベースから返送されたデータのタイムスタンプと前記第２データベースから返送されたデータのタイムスタンプとに基づいて、前記精度を設定する設定部を具備し、
前記結合部は、前記設定部により設定された精度を基準として、前記返送された複数のテーブルに含まれるデータのタイムスタンプを加工する、請求項６に記載の制御装置。
【請求項１１】
タイムスタンプが付与されたデータをそれぞれ蓄積する第１データベースと第２データベースとを具備する制御システムに適用可能な制御装置が実行する結合方法であって、
タイムスタンプの精度を指定するための項目を含む共通クエリを作成する過程と、
前記共通クエリを解析して、前記第１データベース宛ての第１個別クエリと前記第２データベース宛ての第２個別クエリとを作成する過程と、
前記第１個別クエリを前記第１データベース宛てに送信し、前記第２個別クエリを前記第２データベース宛てに送信する過程と、
前記送信された第１個別クエリに応じて前記第１データベースから返送されたデータのタイムスタンプと前記送信された第２個別クエリに応じて前記第２データベースから返送されたデータのタイムスタンプとの少なくともいずれか一方を、前記共通クエリで指定された精度に基づいて加工する過程と、
当該第１データベースから返送されたデータと当該第２データベースから返送されたデータとを結合する過程とを含む、結合方法。
【請求項１２】
請求項１１に記載の各過程の処理を、前記制御装置が備えるコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、例えばＦＡ（Factory Automation）に適用可能な制御システムに関する。
【背景技術】
【０００２】
制御装置の一例としてのプログラマブルコントローラ（Programmable Logic Controller：ＰＬＣ）は近年、超高速のＣＰＵ（Central Processing Unit）と、大容量のメモリを備えるようになった。そこで、例えば、制御対象（センサ、サーボモータ等）に係わる各種のデータをｍｓｅｃ（ミリ秒）オーダの頻度で収集し、タイムスタンプを付与し、ＰＬＣに組み込まれた時系列データベースに蓄積することが考えられている。
【０００３】
特許文献１に、データ管理に関する技術が開示されている。特許文献１に開示されるデータ記録装置は、計測データを記録する際に、少なくとも当該計測データが属するデータ系列と当該計測データのデータ型との組み合わせに対して個別に割り当てた記憶ブロックに、当該計測データを記録するものである。当該データ記録装置によれば、各記憶ブロックに、データ系列とデータ型が一致する計測データが記録されるので、データ型の変更があっても、変更前の計測データを破棄せずにデータ記憶部で記憶しておくことができる。これにより、データ型の変更前の計測データを読み出して配信することができ、変更前の計測データも閲覧することが可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−８１３１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
データ型は、記録できるデータの精度に関係する。特に、データ収集の周期や頻度が高くなれば、データに付与されるタイムスタンプの精度も高くする必要がある。つまり、タイムスタンプの小数点以下の有効数字の桁数を多くとる必要がある。
【０００６】
しかしながら、個々のＰＬＣが同じ周期でデータを収集するとは限らない。例えば、データをｍｓｅｃオーダの周期で収集するＰＬＣと、μｓｅｃ（マイクロ秒）オーダの周期で収集するＰＬＣとが、同じＦＡシステムに混在するケースがある。このように、データベースが異なると、データに付されるタイムスタンプの周期が合わないことがある。これは、複数のデータベースからのデータを結合する際に、または、複数のデータベースから抽出されたテーブルを結合する際に問題になる。
【０００７】
本発明は、一側面では、このような事情を鑑みてなされたものであり、その目的は、複数のデータベースを、互いのデータのタイムスタンプの周期を合わせて結合することの可能な制御システム、制御装置、結合方法およびプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
上記の目的を達成するために、本発明では以下のような手段を講じる。  
この発明の第１の様態は、タイムスタンプが付与されたデータを蓄積する第１データベースと、制御装置とを具備する制御システムであって、前記制御装置に、タイムスタンプが付与されたデータを蓄積する第２データベースと、タイムスタンプの精度を指定するための項目を含む共通クエリを作成する作成部と、前記共通クエリを解析して、前記第１データベース宛ての第１個別クエリと前記第２データベース宛ての第２個別クエリとを作成するクエリパーサと、前記第１個別クエリを前記第１データベース宛てに送信し、前記第２個別クエリを前記第２データベース宛てに送信する送信部と、前記送信された第１個別クエリに応じて前記第１データベースから返送されたデータのタイムスタンプと前記送信された第２個別クエリに応じて前記第２データベースから返送されたデータのタイムスタンプとの少なくともいずれか一方を、前記共通クエリで指定された精度に基づいて加工して、当該第１データベースから返送されたデータと当該第２データベースから返送されたデータとを結合する結合部とを具備するように構成したものである。
【０００９】
共通クエリは、タイムスタンプの精度を指定するための項目を含む。共通クエリはクエリパーサにより解析されて、第１データベース宛ての第１個別クエリと、第２データベース宛ての第２個別クエリとが作成される。第１個別クエリは第１データベースに送信され、第１個別クエリに応じたデータが第１データベースから読み出されて返送される。第２個別クエリは第２データベースに送信され、第２個別クエリに応じたデータが第２データベースから読み出されて返送される。
【００１０】
前記第１データベースから返送されたデータのタイムスタンプと前記第２データベースから返送されたデータのタイムスタンプとの少なくともいずれか一方が、前記共通クエリで指定された精度に基づいて加工される。そして、第１データベースから返送されたデータと当該第２データベースから返送されたデータとが、タイムスタンプの加工を経た後に結合される。
【００１１】
このような構成であるから、異なるデータベースから取得されたデータのタイムスタンプを、指定された精度で（例えば、ユーザの希望する精度で）加工した後に、各データベースから取得されたデータを結合することが可能になる。従って、タイムスタンプの周期によらずにデータベースを結合することが可能になる。
【００１２】
この発明の第２の様態は、結合部が、上記指定された精度よりも高いタイムスタンプの桁を当該指定された精度の桁に切り上げ、または切り下げしてタイムスタンプを加工するように構成したものである。
【００１３】
このような構成であるから、タイムスタンプの桁数を揃える処理を統一的な基準で実施することができる。
【００１４】
この発明の第３の様態は、結合部が、より多数のデータを返送した一方のデータベースからのデータを単位時間あたりの平均値に変換して、前記第１データベースから返送されたデータの数と前記第２データベースから返送されたデータの数とを合わせて、当該第１データベースから返送されたデータと当該第２データベースから返送されたデータとを結合するように構成したものである。
【００１５】
このような構成であるから、例えばデータ収集の周期の異なるデータベースに対しても、単位時間当たりのデータの出現回数を揃えたうえで複数のデータを結合することができる。
【００１６】
この発明の第４の様態は、結合部が、より多数のデータを返送した一方のデータベースからのデータを単位時間内の最大値または最小値のいずれかに変換して、前記第１データベースから返送されたデータの数と前記第２データベースから返送されたデータの数とを合わせて、当該第１データベースから返送されたデータと当該第２データベースから返送されたデータとを結合するように構成したものである。
【００１７】
このような構成によっても、例えばデータ収集の周期の異なる複数のデータベースについて、単位時間当たりのデータの出現回数を揃えたうえで複数のデータを結合することができる。
【００１８】
この発明の第５の様態は、さらに、前記第１データベースから返送されたデータのタイムスタンプと前記第２データベースから返送されたデータのタイムスタンプとに基づいて、前記精度を設定する設定部を具備し、結合部が、設定部により設定された精度を基準として、第１データベースから返送されたデータのタイムスタンプと第２データベースから返送されたデータのタイムスタンプとの少なくともいずれか一方を加工するように構成したものである。
【００１９】
このような構成であるから、タイムスタンプの精度は、返送された複数のデータのタイムスタンプに基づいて設定部により設定される。従ってクエリの送信元で精度を指定する必要がなく、融通性の高いシステムを構築できる。
【００２０】
つまり、本発明の態様では、クエリの問い合わせ構文に、タイムスタンプの精度を指定するための項目を追加する。テーブル結合に際して、上記項目に、ユーザの所望の精度を指定したクエリを生成する。クエリパーサは、このクエリを解析し、問い合わせ対象のデータベースごとにクエリを作成し、送信する。そして、取得された各テーブルを結合する際、指定された精度に従ってタイムスタンプの桁数を揃え、タイムスタンプの時系列に従ってテーブルを結合するようにした。
【００２１】
このようにしたので、複数の時系列データベースから取り出したデータを、ユーザの希望する任意の精度で結合することができる。また、書き込み周期の異なるデータベースを結合する際に、タイムスタンプの周期の大きい方に合わせ、タイムスタンプの周期の小さいほうのデータを特徴量（平均、最大、最小など）に変換するようにしている。従って、周期の小さいレコードを適切に集約することができる。
【発明の効果】
【００２２】
本発明によれば、複数のデータベースを、互いのデータのタイムスタンプの周期を合わせて結合することの可能な制御システム、制御装置、結合方法およびプログラムを提供することができる。
【図面の簡単な説明】
【００２３】
【図１】実施形態に係わる制御装置を含む制御システムの一例を示す図。
【図２】実施形態に係わる制御装置１００の形態の一例を示す模式図。
【図３】コンピュータ２００のハードウェア構成の一例を示すブロック図。
【図４】コンピュータ２００のソフトウェア構成の一例を示すブロック図。
【図５】ＰＬＣ１００，６００の一例を示す機能ブロック図。
【図６】ＰＬＣ１００、ＰＬＣ６００およびＰＣ２００に備わる機能ブロックの一例を示す図。
【図７】実施形態に係る処理手順の一例を示すシーケンスチャート。
【図８】実施形態に係る共通クエリの一例を示す図。
【図９】実施形態に係る機能ブロック間でのデータフローの一例を示す模式図。
【図１０】結合されたテーブルの一例を示す図。
【図１１】組み込みデータベース１０２ｂ（ＴＳ００１）の他の例を示す図。
【図１２】組み込みデータベースから抽出されるテーブルの他の例を示す図。
【図１３】実施形態に係る共通クエリの他の例を示す図。
【図１４】精度設定部１０１ｆによる処理を説明するための図。
【発明を実施するための形態】
【００２４】
図１は、実施形態に係わる制御装置を含む制御システムの一例を示す図である。制御システムは、例えば工場や物流倉庫などの拠点１０００に設置される。制御システムは、制御装置の一例としてのＰＬＣ１００およびＰＬＣ６００と、ＰＬＣ１００にＬＡＮ（Local Area Network）３を介して通信可能に接続されるコンピュータ（ＰＣ）２００とを備える。
【００２５】
例えば、ＣＤ−ＲＯＭなどの記録メディア３０から、実施形態に係る機能や方法をＰＣ２００に実行させるための命令を含むプログラムを、ＰＣ２００にインストールすることが可能である。
【００２６】
ＰＬＣ１００は、拠点１０００に形成されたフィールドバス２に接続される。フィールドバス２には、制御対象の一例としてのフィールド装置群８が接続される。フィールド装置群８は、例えばリモートＩ／Ｏ（Input/Output）装置１２、リレー群１４、Ｉ／Ｏユニット１６、画像センサ１８、カメラ２０、サーボモータドライバ２２およびサーボモータ２４を含む。これらのフィールド装置群８は、制御に係わる各種のデータを、フィールドバス２を介して制御装置１００と授受する。ＰＬＣ１００は、取得したデータを組み込みデータベースに蓄積する。すなわちＰＬＣ１００は、制御対象に関わるデータを、例えばミリ秒、あるいはマイクロ秒の周期で収集する。収集されたデータは、例えば収集された時点のタイムスタンプを付与されて組み込みの時系列データベース等に蓄積される。
【００２７】
フィールドバス２には、データの到達時間を保証可能なプロトコルを採用することが好ましい。この種のプロトコルを採用するネットワークとしては、ＥｔｈｅｒＣＡＴ（登録商標）、ＥｔｈｅｒＮｅｔ（登録商標）／ＩＰ、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などが知られている。
【００２８】
ＰＬＣ１００は、さらに、他のＰＬＣ（ＰＬＣ６００）に接続可能なインタフェースを備える。ＰＬＣ６００も同様にフィールドバス２に接続され、ＰＬＣ１００とは別に割り当てられたフィールド装置群８を制御する。ＰＬＣ１００とＰＬＣ６００とをつなぐネットワーク４にも、例えばＥｔｈｅｒＮｅｔ（登録商標）／ＩＰ等のプロトコルを適用することができる。
【００２９】
図２は、図１に示される制御装置１００の形態の一例を示す模式図である。一例として、複数のユニットを組み合わせたビルディングブロックタイプとして知られる形態のＰＬＣ１００を示す。このほか、パッケージタイプや、ベース装着タイプのＰＬＣも知られている。
【００３０】
ＰＬＣ１００は、電源部５１、ＣＰＵブロック５２、複数のＩＯブロック５３および特殊ブロック５４を備える。このうちＣＰＵブロック５２、ＩＯブロック５３および特殊ブロック５４は、装置内に設けられるシステムバス５５により接続される。ＩＯブロック５３は、Ｉ／Ｏユニット１６に接続され、リレーや検出スイッチなどから発生した種々のデータを取得してＣＰＵブロック５２に送る。制御に係わるこの種のデータとしては、例えばサーボモータ２４のトルク、物品（ワーク）の搬送速度、ロボットアームの角度など、多種多様なデータがある。もちろん、これらに限定されるものではない。
【００３１】
Ｉ／Ｏユニット１６は、例えばセンサ（検出スイッチなど）が対象物を検出しているか、検出していないかという情報を収集する。この種の情報は、オンまたはオフのいずれかに対応付けて表すことができる。例えば、センサが対象物を検出している状態をオンに、何の対象物も検出していない状態をオフに対応付けることができる。
【００３２】
また、Ｉ／Ｏユニット１６は、リレーまたはアクチュエータなどを活性化するための指令（オン）、または不活性化するための指令（オフ）のいずれかを、宛先のリレーまたはアクチュエータなどに出力する。
【００３３】
また、Ｉ／Ｏユニット１６は、サーボモータ２４を駆動制御するためのＣＰＵブロック５２からの指令値を、フィールドバス２を介して、サーボモータドライバ２２に転送する。サーボモータドライバ２２は、ＰＬＣ１００から位置指令値、速度指令値、トルク指令値などの指令値を、例えば一定周期で受ける。
【００３４】
サーボモータ２４の軸に接続された位置センサ（ロータリーエンコーダ）やトルクセンサなどにより、位置、速度（典型的には、今回位置と前回位置との差から算出される）、トルクといったサーボモータ２４の動作に係る実測値が取得される。ワークの搬送速度やロボットアームの角度は、これらのセンシングデータから直接的に求められるか、計算により算出される。
【００３５】
ＣＰＵブロック５２は、フィールド装置群８に至るフィールドバスと、ＰＣ２００に至るＬＡＮ３、ＰＬＣ６００に至るネットワーク４とに接続される。ＣＰＵブロック５２は、ＣＰＵを備え、ＰＬＣ１００の中枢として機能する。
【００３６】
図３は、ＰＣ２００のハードウェア構成の一例を示すブロック図である。ＰＣ２００は、ＣＰＵ４１、ＲＯＭ（Read Only Memory）４２、ＲＡＭ（Random Access Memory）４３、およびハードディスクドライブ（ＨＤＤ）４４を備える。ＣＰＵ４１は、ＰＣ２００の演算部に相当する。ＲＯＭ４２、ＲＡＭ４３およびＨＤＤ４４は、ＰＣ２００の記憶部に相当する。
【００３７】
ＣＰＵ４１は、ＯＳ（Operating System）を含む各種プログラムを実行する。ＲＯＭ４２は、ＢＩＯＳ（Basic Input Output System）や各種データを格納する。ＲＡＭ４３は、ＨＤＤ４４からロードされたプログラムやデータを一時的に記憶する。ＨＤＤ４４は、ＣＰＵ４１により実行されるプログラムやデータを記憶する。
【００３８】
ＰＣ２００は、さらに、キーボード４５、マウス４６、モニタ４７、光学メディアドライブ４８、および通信インタフェース（ＩＦ）４９を備える。キーボード４５およびマウス４６は、ユーザからの操作を受付ける。モニタ４７は、各種の情報を視覚的に表示する。光学メディアドライブ４８は、ＣＤ−ＲＯＭ３０などの記録媒体に記録されたディジタルデータを読み取る。通信インタフェース（ＩＦ）４９は、ＬＡＮ３に接続されてＰＬＣ１００と通信する。
【００３９】
ＰＣ２００で実行される各種プログラムは、例えばＣＤ−ＲＯＭ３０に記録されて流通することができる。このＣＤ−ＲＯＭ３０に格納されたプログラムは、光学メディアドライブ４８により読み取られ、ＨＤＤ４４などに格納される。あるいは、上位のサーバコンピュータなどからネットワークを通じてプログラムをダウンロードするように構成してもよい。
【００４０】
図４は、ＰＣ２００のソフトウェア構成の一例を示すブロック図である。ＰＣ２００は、データマイニングツール２０１と、機械学習パラメータ設定ツール２０２とを備える。データマイニングツール２０１および機械学習パラメータ設定ツール２０２は、例えば、ＯＳ２０３の制御のもとで動作するアプリケーションプログラムのうちの一つである。つまり、ＨＤＤ４４（図３）からＲＡＭ４３にロードされたプログラムをＣＰＵ４１が解釈し、実行することで、ＰＣ２００は、データマイニングツール２０１および機械学習パラメータ設定ツール２０２として動作する。
【００４１】
データマイニングツール２０１は、クエリプログラム２０１ａ、データマイニングプログラム２０１ｂおよび可視化プログラム２０１ｃを備える。クエリプログラム２０１ａは、時系列データベースから所望のデータを取得するためのクエリを作成する。データマイニングプログラム２０１ｂは、クエリにより取得されたデータを既定のアルゴリズムに基づいて処理して、制御に係わる予測処理などを行う。可視化プログラム２０１ｃは、データ処理の結果をグラフに表示するなどして、人間とのヒューマンマシンインタフェースの一部を担う。これによりＵＩ（User Interface）を持たないＰＬＣについても、ＧＵＩ（Graphical User Interface）環境を利用することができる。
【００４２】
これらのブロックにより、データマイニングツール２０１は、クエリにおける特徴量の決定、異常検知手法の決定、機械学習パラメータの決定、または異常検知結果の評価などを実行する。
【００４３】
機械学習パラメータ設定ツール２０２は、例えばＩＥＣ ６１１３１−３に準拠するＰＬＣ向けのプログラムをクロス開発するための統合開発環境（ＰＬＣプログラムＩＤＥ（Integrated Development Environment））により提供される。機械学習パラメータ設定ツール２０２は、ＰＬＣ変数アクセスプログラム２０２ａを含む。ＰＬＣ変数アクセスプログラム２０２ａは、ＰＬＣ１００にアクセスして、変数にマッピングされた各種データ（センサデータ、サーボモータのデータなど）を取得する。
【００４４】
図５は、ＰＬＣ１００の一例を示す機能ブロック図である。なおＰＬＣ６００も同様である。ＰＬＣ１００は、プロセッサ１０１、メモリ１０２、クロック発生器１０３、チップセット１０４、およびインタフェース部１０５を備える。これらは内部バス１１０を介して接続される。
【００４５】
クロック発生器１０３は、例えば水晶発振器とＰＬＬ（Phase Lock Loop）とを組み合わせた回路であり、高精度の周期的パルスを発生する。ＰＬＣ１００は、このパルス信号をローカルクロックとして使用する。ローカルクロックは、ＰＬＣ１００の内部の演算や制御などのタイミングを規定する。また、ローカルクロックは、データに付与されるタイムスタンプの基準としても使用される。チップセット１０４は、プロセッサ１０１、メモリ１０２、およびインタフェース部１０５間でのデータの授受のタイミングを制御することで、内部バス１１０上でのデータの衝突を防止する。
【００４６】
インタフェース部１０５は、ローカルバス１０５ａ、およびフィールドバス１０５ｂを備える。ローカルバス１０５ａは、ＰＬＣ１００とこのＰＬＣ１００に接続されるデバイスとの間で授受されるデータを中継するインタフェースである。ローカルバス１０５ａは、接続されたセンサ８１からデータを取得し、制御相手先のアクチュエータ８２にコントロール信号を送信する。同様に、フィールドバス１０５ｂは、ＰＬＣ１００とこのＰＬＣ１００に接続されるデバイスとの間で授受されるデータを中継するインタフェースである。フィールドバス１０５ｂは、接続されたセンサ８３からデータを取得し、制御相手先のアクチュエータ８４にコントロール信号を送信する。
【００４７】
メモリ１０２は、組み込みデータベース１０２ｂを記憶するための記憶領域と、制御プログラム１０２ｃを記憶するための記憶領域とを備える。組み込みデータベース１０２ｂは、制御対象に関連するデータを収集して格納するデータベースである。実施形態では、一例として時系列データベースを採りあげる。時系列データベースは、期間の指定を含むクエリへの応答に備えて設計されたデータベースであり、ＰＬＣ１００の組み込みデータベースとして利用可能である。
【００４８】
メモリ１０２は、例えばＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）などの記憶素子、あるいはハードディスクドライブ（Hard Disk Drive：ＨＤＤ）などの記憶デバイスである。このほか、フラッシュメモリ、ＳＤＲＡＭ（Synchronous Dynamic RAM）などの半導体メモリ、あるいはＥＰＲＯＭ（Erasable Programmable ROM）、ＥＰＲＯＭ（Electrically Erasable Programmable ROM）などの不揮発性メモリを用いても良い。
【００４９】
プロセッサ１０１は、実施形態に係る処理機能として、クエリ作成部１０１ａ、クエリパーサ１０１ｂ、送信部１０１ｃ、返送部１０１ｄ、結合部１０１ｅおよび精度設定部１０１ｆを備える。これらは、例えばＣＰＵが制御プログラム１０２ｃに従って実行する演算処理により実現される、処理機能である。
【００５０】
クエリ作成部１０１ａは、例えばＰＣ２００のデータマイニングツール２０１から与えられるコマンドをトリガとして、共通クエリを作成する。つまり、データマイニングツール２０１（図３）の操作ウインドウから、複数データベースを結合するための操作がユーザにより実行されると、クエリ作成部１０１ａは、共通クエリを作成する。この操作に際して、ユーザにより、タイムスタンプの精度が指定される。作成された共通クエリは、このタイムスタンプの精度を指定するための項目を含む。タイムスタンプの精度は、例えばタイムスタンプの小数点以下の桁を示す数値であり、例えばミリ秒やマイクロ秒などの単位で表される。
【００５１】
クエリパーサ１０１ｂは、上記共通クエリを解析して、組み込みデータベース１０２ｂ宛てのクエリ（第１個別クエリ）と、テーブル結合の対象となる他のデータベース宛てのクエリ（第２個別クエリ）とを作成する。共通クエリに由来する、各データベースごとに作成された個々のクエリを個別クエリと称することにする。
【００５２】
実施形態において、共通クエリは、例えば、標準的なＳＱＬ構文を用いて作成される。個別クエリは、それぞれのデータベース向けの言語（方言）に応じて、各データベースで解釈することの可能な文法に基づいて作成される。このため、クエリパーサに、標準的なＳＱＬ言語と非標準的な言語との対応表などを記憶させておいても良い。なお、例えばＭｙＳＱＬ、あるいはＮｏＳＱＬなどはいずれもＳＱＬ構文を用いてクエリを行うことができるが、現時点ではそれぞれ固有の表現形式を有している。
【００５３】
送信部１０１ｃは、作成された個別クエリをそれぞれ宛先のデータベースに送信する。
【００５４】
返送部１０１ｄは、例えば外部から個別クエリによる問い合わせを受信した場合に、この個別クエリに応じたデータを含むテーブルを組み込みデータベース１０２ｂから読み出し、問い合わせ元に返送する。
【００５５】
結合部１０１ｅは、個別クエリの送信先のデータベースから返送された複数のテーブルに含まれるデータのタイムスタンプを、共通クエリで指定された精度を基準として加工して、これらの複数のテーブル（データ）を結合する。  
精度設定部１０１ｆは、タイムスタンプの精度を、返送された複数のテーブルに含まれるデータのタイムスタンプに基づいて設定する。
【００５６】
図６は、ＰＬＣ１００、ＰＬＣ６００およびＰＣ２００に備わる機能ブロックの一例を示す図である。ＰＬＣ１００は、クライアント１０６および組み込みデータベース１０２ｂのシェル１０７を備える。シェル１０７は組み込みデータベース１０２ｂにアクセスする際のインタフェースであり、通信インタフェース１０７ａを備える。通信インタフェース１０７ａは、送信部１０１ｃおよび返送部１０１ｄの機能を実現する機能オブジェクトである。またクライアント１０６は、クエリパーサ１０１ｂおよび結合部１０１ｅの各機能ブロックと、通信インタフェース１０６ｃとを備える。
【００５７】
ＰＬＣ６００も同様に組み込みデータベース（符号６０２ｂを付す）を備え、この組み込みデータベース６０２ｂとのインタフェースとなるシェル６０７と、通信インタフェース６０７ａを備える。
【００５８】
ＰＣ２００は、例えばＭｙＳＱＬ、あるいはＮｏＳＱＬなどに代表される汎用のデータベース（汎用ＤＢ）２００ａを記憶する。ＰＬＣ１００のクライアント１０６の通信インタフェース１０６ｃは、シェル１０７とソケットを利用したプロセス間通信により、組み込みデータベース１０２ｂからテーブル（テーブルＴＳ００１）を取得する。また通信インタフェース１０６ｃは、シェル６０７とのプロセス間通信により、組み込みデータベース６０２ｂからテーブル（テーブルＴＳ００２）を取得する。さらに、通信インタフェース１０６ｃは、ＰＣ２００とのプロセス間通信により汎用データベース２００ａからテーブルを取得する。いずれのテーブルも、インデックスで区別される複数のレコードを含む。各レコードは、データと、各データに付与されたタイムスタンプとを含む。次に、上記構成における作用を説明する。
【００５９】
図７は、実施形態に係る処理手順の一例を示すシーケンスチャートである。図７において、クライアント１０６（図６）から所望の抽出条件を指定したクエリが実行されると（ステップＳ１）、クエリパーサ１０１ｂは、宛先となるデータベースごとにクエリを分解し、通信インタフェース１０６ｃに渡す（ステップＳ２）。
【００６０】
図８は、ステップＳ１で発行される共通クエリの一例を示す図である。この共通クエリはＳＱＬ構文により記述されており、テーブル結合を指示するＥＸ−ＪＯＩＮと、結合の基準を示すＧＲＯＵＰ ＢＹ ＡＶＥとが記載される。さらに、タイムスタンプの精度を示すＬＥＶＥＬが記載されている。実施形態においては“ＬＥＶＥＬ＝１＃ｍｓ”との記載により、ミリ秒の精度が指定されたことが示される。
【００６１】
通信インタフェース１０６ｃは、共通クエリに基づく個別クエリをそれぞれのデータベースごとに送信する（ステップＳ３）。例えば図９に示されるように、組み込みデータベース１０２ｂに対しては、ＴＳ００１，Ｓｔａｒｔｔｉｍｅ＝２０１７−０３−０４を含む個別クエリが送信され、組み込みデータベース６０２ｂに対しては、ＴＳ００２，Ｓｔａｒｔｔｉｍｅ＝２０１７−０３−０４を含む個別クエリが送信される。
【００６２】
これを受けたシェル１０７、６０７は、それぞれ組み込みデータベース１０２ｂ、６０２ｂからクエリに沿ったデータを抽出し、指定された範囲のデータを含むテーブルをクエリ元に返送（応答）する（図７のステップＳ４）。
【００６３】
各データベースからの応答は、通信インタフェース１０６ｃを介して結合部１０１ｅに渡される。結合部１０１ｅは、受信した複数のテーブルを共通クエリで指定された精度で結合する（ステップＳ５）。あるいは、精度設定部１０１ｆで計算された精度に基づいて、結合部１０１ｅは、複数のテーブルを結合する。そして、結合されたテーブルが、クエリに対する応答（クエリ結果：query response）としてクライアント１０６に渡される（ステップＳ６）。
【００６４】
図１０は、結合されたテーブルの一例を示す図である、共通クエリの“ＬＥＶＥＬ＝１＃ｍｓ”でミリ秒の精度が指定されたことに応じて、結合部１０１ｅは、テーブルＴＳ００１，ＴＳ００２の各々のタイムスタンプのミリ秒より上の桁、すなわち小数点４以上の桁を切り捨てる。例えば図６のテーブルＴＳ００１のインデックス１８２のデータと、テーブルＴＳ００２のインデックス２０２のデータとが、いずれもタイムスタンプ“2017-03-03-08：00：00．013”に対応付けて結合されている。このように実施形態では、タイムスタンプの精度を指定するための項目をクエリに設け、このクエリで指定された精度内のタイムスタンプを主キーとして、データベースを結合するようにした。これにより、複数の時系列データベースから取り出したデータを、ユーザの希望する任意の精度で結合することができる。
【００６５】
図１１は、組み込みデータベース１０２ｂ（ＴＳ００１）の他の例を示す図である。図１１においては、図６に示されるデータベースに比べて、データの収集サイクル（またはデータベースへの書き込みサイクル）が２倍に伸びたことが想定される。つまりタイムスタンプの間隔が２倍に伸びており、単位時間当たりのレコードの数は図６に比べて半分になっている。
【００６６】
次に、図１１の例と、図１２とを参照して、データ収集の周期の短い組み込みデータベースと、データ収集の周期の長い組み込みデータベースとを結合することを考える。  
図１２は、組み込みデータベースから抽出されるテーブルの他の例を示す図である。図１１においては組み込みデータベース１０２ｂ（ＴＳ００１）のタイムスタンプ周期が２倍に伸びたのに対し、図１２（ａ）に示される組み込みデータベース６０２ｂ（ＴＳ００２）のタイムスタンプ周期は、そのままであることを想定する。そうすると、データの周期がデータベース間で整合しないことになる。
【００６７】
そこで実施形態では、図１２（ｂ）に示されるように、例えば複数のレコード間のデータの平均値を取ることにより、データの数を長周期側のテーブルに合わせこむようにした。つまり結合部１０１ｅは、より多い数のレコードを含むデータベースからのデータを、単位時間当たりの平均値に変換したうえで、複数のテーブルを結合する。これは、図８に示される共通クエリにおいて、“ＧＲＯＵＰ ＢＹ ＡＶＥ”との記述により平均値が指定されたことを反映している。
【００６８】
このようにすることで、データ収集の周期の短い組み込みデータベース６０２ｂ（ＴＳ００２）を、データ収集の周期の長い組み込みデータベース１０２ｂ（ＴＳ００１）に整合させることができる。すなわち、異なるデータベース間でタイムスタンプの周期が異なることにも対応可能となる。従って、テーブル結合に際してデータの数の不整合を防止できるようになる。
【００６９】
図１３は、実施形態に係る共通クエリの他の例を示す図である。図１３において、“ＬＥＶＥＬ＝ＡＵＴＯ”との記載がある。これは、タイムスタンプの精度の設定が、テーブル結合処理を行う側に委ねられたことを示す。また、“ＧＲＯＵＰ ＢＹ ＡＶＥ”により、データ周期の整合を取る際に平均値を用いることが示される。平均値は特徴量の一つの例であり、このほか、最大値、最小値なども特徴量の一つであり、クエリのＧＲＯＵＰ項目により指定することができる。
【００７０】
図１４は、精度設定部１０１ｆによる処理を説明するための図である。精度設定部１０１ｆは、先ず、結合対象であるテーブルのデータ間の周期を算出する。
例えば図１４のテーブルＴＳ００１において、ランダムで抜き出された特定区間に対し、タイムスタンプ間の差分を求める。製造現場では運用の都合により、データ記録の周期が変動することがあり、ランダムサンプリングを採用することで、このような状況にも対処可能である。
【００７１】
例えば図１４に示されるように、テーブルＴＳ００１において、連続する２つのレコードの組をランダムに抽出したとき、各組のレコードのタイムスタンプの差分として例えば１．０３ｍｓ、１．０１ｍｓ、２．０９ｍｓという値が得られたとする。そうすると精度設定部１０１ｆは、それぞれの組ごとにタイムスタンプの精度を算出し、最小の精度を、設定すべき精度として採用する。例えば、サンプルの５０％以上が１ミリ秒であれば、１ミリ秒の精度が設定される。つまり図１４の例では、ミリ秒の小数点以下の精度を切り捨て、多数決により、１ミリ秒の精度が採用される。このように精度設定部１０１ｆは、返送された複数のテーブルに含まれるデータのタイムスタンプに基づいて、テーブル結合の際に必要となるタイムスタンプの精度を、いわば事後的に設定する。
【００７２】
なお、テーブルＴＳ００１とテーブルＴＳ００２のように、タイムスタンプの周期の異なるテーブルを結合する場合がある。この場合、周期が短いほうのテーブル（つまりデータ記録頻度が高いほうのテーブル）について特徴量（平均値、最大値または最小値などの）を算出する。なお、平均値、最大値等の特徴量は、クエリにおいて指定される。
【００７３】
例えば、ＴＳ００１の周期が１ミリ秒、ＴＳ００２の周期が２ミリ秒として算出された場合、ＴＳ００１について特徴量を算出する。つまり周期が短いほうのテーブルについての特徴量を、周期が長いほうの周期を単位として、取得する。
【００７４】
以上説明したように、この実施形態では、クエリの問い合わせ構文（ＳＱＬ構文）に、タイムスタンプの精度を指定するための項目（ＬＥＶＥＬ）を追加する。テーブル結合に際し、ＬＥＶＥＬに所望の精度を指定したクエリを送信する。クエリパーサ１０１ｂによりこのクエリを解析し、問い合わせ対象の各データベースごとにクエリを作成し送信する。そして、取得された各テーブルを結合する際、指定された精度に従ってタイムスタンプの桁数を揃え、タイムスタンプの時系列に従ってテーブルを結合するようにした。
【００７５】
このようにしたので、複数の時系列データベースから取り出したデータを、ユーザの希望する任意の精度で結合することができる。また、書き込み周期の異なるデータベースを結合する際に、タイムスタンプの周期の大きい方に合わせ、タイムスタンプの周期の小さいほうのデータを特徴量（平均、最大、最小など）に変換するようにしている。従って、周期の小さいレコードを適切に集約することができる。
【００７６】
これらのことから、複数のデータベースを、互いのデータのタイムスタンプの周期を合わせて結合することの可能な制御システム、制御装置、結合方法およびプログラムを提供することが可能となる。
【００７７】
制御システムの複数のＰＬＣに蓄えられた各データを結合し、いわゆるデータマイニング（data mining）の手法により解析すれば、様々な知見を得ることができる。さらに、他の様々なデータベースから取得されたテーブルを組み合わせ、解析することで、生産機器に由来する不具合イベントを極限まで減らせる可能性がある。上記実施形態はこのような用途に、特に有用である。
【００７８】
なお、この発明は上記実施形態に限定されるものではない。例えば実施形態に係るＰＬＣ１００，６００のプログラムは、記録媒体に記録することも、ネットワークを介して提供することも可能である。また、ＰＬＣ１００の機能ブロックの一部をＰＣ２００やＰＬＣ６００に実装することもできる。
【００７９】
また、タイムスタンプの桁数を揃えるために、タイムスタンプの桁を、指定された精度の桁に切り上げるようにしても良い。また実施形態では、タイムスタンプの周期の異なるデータベース間でのテーブル結合処理に際して、特徴量としてレコード間のデータの平均値をとるようにした。このほか、レコード間のデータの最大値、あるいは最小値のいずれかに変換することによっても同様に、データベース間の整合を取ることができる。
【００８０】
また、実施形態では、単位時間当たりのデータ数の少ない方が、データ数の多い方に合わせる形態を開示した。この逆の形態も考え得る。例えば、２ミリ秒毎に収取されたデータを含むデータベースと、３ミリ秒毎に収集されたデータを含むデータベースとを、１ミリ秒の精度で結合することを考える。このケースでは、互いのデータ収集の周期の最小公倍数である６ミリ秒毎に、そのままの状態でデータを揃えることができる。一方、最小公倍数にならないタイムスタンプ、例えば、２ミリ秒毎に収取されたデータを含むデータベースの奇数値は、直前のデータで補完して結合する。
【００８１】
コンピュータに関連して用いられる「プロセッサ」という用語は、例えばＣＰＵ、ＧＰＵ(Graphics Processing Unit)、或いは、ＡＳＩＣ（Application Specific Integrated Circuit）、ＳＰＬＤ（Simple Programmable Logic Device）、ＣＰＬＤ（Complex Programmable Logic Device）、またはＦＰＧＡ等の回路と理解され得る。
【００８２】
プロセッサは、メモリに記憶されたプログラムを読み出し実行することで、プログラムに基づく特有の機能を実現する。メモリに代えて、プロセッサの回路内にプログラムを直接組み込むよう構成することも可能である。このケースでは、プロセッサは回路内に組み込まれたプログラムを読み出し実行することでその機能を実現する。
【００８３】
また、実施形態の制御システムは、少なくともその一部が、クラウドサーバ装置により構成されていてもよい。すなわち、実施形態の制御システムにより実現される機能の少なくとも一部は、クラウド・コンピューティングにより実行されてもよい。
【００８４】
クラウド・コンピューティングには、アプリケーション（ソフトウェア）をサービスとして提供するＳａａＳ（Software as a Service）と、アプリケーションを稼働させるための基盤（プラットフォーム）をサービスとして提供するＰａａＳ（Platform as a Service）と、サーバ装置、中央演算処理装置およびストレージなどのリソースをサービス（パブリッククラウド）として提供するＩａａＳ（Infrastructure as a Service）とのうち、少なくとも一つが含まれていてもよい。例えば、このクラウド・コンピューティングには、クラウド・サービス提供層（ＰａａＳ）により、インターネットを介した遠隔操作が含まれていてもよい。
【００８５】
このほか、システムの形態、ネットワークのプロトコル、プログラムのインストール手法、取得されるデータの種別（目標値、結果値など）、データベースの種別や形式、クエリ構文の文法、ＰＬＣの機能と処理手順および処理内容などについても、この発明の要旨を逸脱しない範囲で種々変形して実施することが可能である。
【００８６】
要するにこの発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【００８７】
上記の実施形態の一部又は全部は以下の付記のようにも記載され得るが、以下に限られるものではない。  
（付記１）
タイムスタンプが付与されたデータを蓄積する組み込みデータベースと、プロセッサとを具備し、
前記プロセッサは、
タイムスタンプの精度を指定するための項目を含む共通クエリを作成し、
前記共通クエリを解析して、前記組み込みデータベースと当該組み込みデータベースとは異なる他のデータベースとのそれぞれに宛てた個別クエリを作成し、
前記作成された個別クエリをそれぞれ宛先のデータベースに送信し、
前記送信された個別クエリに応じてそれぞれのデータベースから返送されたデータのタイムスタンプの少なくともいずれかを、前記共通クエリで指定された精度に基づいて加工して、それぞれのデータベースから返送されたデータを結合する、制御装置。
【００８８】
（付記２）
少なくとも１つのプロセッサを用いて、タイムスタンプの精度を指定するための項目を含む共通クエリを作成する過程と、
少なくとも１つのプロセッサを用いて、前記共通クエリを解析して、タイムスタンプが付与されたデータを蓄積する複数のデータベースのそれぞれに宛てた個別クエリを作成する過程と、
少なくとも１つのプロセッサを用いて、前記作成された個別クエリをそれぞれ宛先のデータベースに送信する過程と、
少なくとも１つのプロセッサを用いて、前記送信された個別クエリに応じてそれぞれのデータベースから返送されたデータのタイムスタンプの少なくともいずれかを、前記共通クエリで指定された精度に基づいて加工する過程と、
少なくとも１つのプロセッサを用いて、前記タイムスタンプを加工されたデータを結合する過程とを含む、結合方法。
【符号の説明】
【００８９】
２…フィールドバス、４…ネットワーク、８…フィールド装置群、１２…装置、１４…リレー群、１６…Ｉ／Ｏユニット、１８…画像センサ、２０…カメラ、２２…サーボモータドライバ、２４…サーボモータ、３０…記録メディア、４１…ＣＰＵ、４２…ＲＯＭ、４３…ＲＡＭ、４４…ハードディスクドライブ（ＨＤＤ）、４５…キーボード、４６…マウス、４７…モニタ、４８…光学メディアドライブ、４９…通信インタフェース、５１…電源部、５２…ＣＰＵブロック、５３…ＩＯブロック、５４…特殊ブロック、５５…システムバス、８１…センサ、８２…アクチュエータ、８３…センサ、８４…アクチュエータ、１００…制御装置、１０１…プロセッサ、１０１ａ…クエリ作成部、１０１ｂ…クエリパーサ、１０１ｃ…送信部、１０１ｄ…返送部、１０１ｅ…結合部、１０１ｆ…精度設定部、１０２…メモリ、１０２ｂ…組み込みデータベース、１０２ｃ…制御プログラム、１０３…クロック発生器、１０４…チップセット、１０５…インタフェース部、１０５ａ…ローカルバス、１０５ｂ…フィールドバス、１０６…クライアント、１０６ｃ…通信インタフェース、１０７…シェル、１０７ａ…通信インタフェース、１１０…内部バス、１８２…インデックス、２００…コンピュータ（ＰＣ）、２００ａ…汎用データベース、２０１…データマイニングツール、２０１ａ…クエリプログラム、２０１ｂ…データマイニングプログラム、２０１ｃ…可視化プログラム、２０２…機械学習パラメータ設定ツール、２０２ａ…ＰＬＣ変数アクセスプログラム、６０２ｂ…組み込みデータベース、６０７…シェル、６０７ａ…通信インタフェース、１０００…拠点、ＴＳ００１…テーブル、ＴＳ００２…テーブル。
【図１】
2019008703.tif 000003
【図２】
2019008703.tif 000004
【図３】
2019008703.tif 000005
【図４】
2019008703.tif 000006
【図５】
2019008703.tif 000007
【図６】
2019008703.tif 000008
【図７】
2019008703.tif 000009
【図８】
2019008703.tif 000010
【図９】
2019008703.tif 000011
【図１０】
2019008703.tif 000012
【図１１】
2019008703.tif 000013
【図１２】
2019008703.tif 000014
【図１３】
2019008703.tif 000015
【図１４】
2019008703.tif 000016
【手続補正書】
【提出日】平成30年5月14日(2018.5.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項８
【補正方法】変更
【補正の内容】
【請求項８】
前記結合部は、前記指定された精度を有するタイムスタンプを付与された複数のデータを、当該複数のデータ間での平均値に変換する、請求項６に記載の制御装置。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項９
【補正方法】変更
【補正の内容】
【請求項９】
前記結合部は、前記指定された精度を有するタイムスタンプを付与された複数のデータを、当該複数のデータ間での最大値または最小値のいずれかに変換する、請求項６に記載の制御装置。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１０
【補正方法】変更
【補正の内容】
【請求項１０】
さらに、前記第１データベースから返送されたデータのタイムスタンプと前記第２データベースから返送されたデータのタイムスタンプとに基づいて、前記精度を設定する設定部を具備し、
前記結合部は、前記設定部により設定された精度を基準として、当該第１データベースから返送されたデータのタイムスタンプと当該第２データベースから返送されたデータのタイムスタンプとの少なくともいずれか一方を加工する、請求項６に記載の制御装置。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００２３
【補正方法】変更
【補正の内容】
【００２３】
【図１】実施形態に係わる制御装置を含む制御システムの一例を示す図。
【図２】実施形態に係わるＰＬＣ１００の形態の一例を示す模式図。
【図３】ＰＣ２００のハードウェア構成の一例を示すブロック図。
【図４】ＰＣ２００のソフトウェア構成の一例を示すブロック図。
【図５】ＰＬＣ１００，６００の一例を示す機能ブロック図。
【図６】ＰＬＣ１００、ＰＬＣ６００およびＰＣ２００に備わる機能ブロックの一例を示す図。
【図７】実施形態に係る処理手順の一例を示すシーケンスチャート。
【図８】実施形態に係る共通クエリの一例を示す図。
【図９】実施形態に係る機能ブロック間でのデータフローの一例を示す模式図。
【図１０】結合されたテーブルの一例を示す図。
【図１１】組み込みデータベース１０２ｂ（ＴＳ００１）の他の例を示す図。
【図１２】組み込みデータベースから抽出されるテーブルの他の例を示す図。
【図１３】実施形態に係る共通クエリの他の例を示す図。
【図１４】精度設定部１０１ｆによる処理を説明するための図。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００２６
【補正方法】変更
【補正の内容】
【００２６】
ＰＬＣ１００は、拠点１０００に形成されたフィールドバス２に接続される。フィールドバス２には、制御対象の一例としてのフィールド装置群８が接続される。フィールド装置群８は、例えばリモートＩ／Ｏ（Input/Output）装置１２、リレー群１４、Ｉ／Ｏユニット１６、画像センサ１８、カメラ２０、サーボモータドライバ２２およびサーボモータ２４を含む。これらのフィールド装置群８は、制御に係わる各種のデータを、フィールドバス２を介してＰＬＣ１００と授受する。ＰＬＣ１００は、取得したデータを組み込みデータベースに蓄積する。すなわちＰＬＣ１００は、制御対象に関わるデータを、例えばミリ秒、あるいはマイクロ秒の周期で収集する。収集されたデータは、例えば収集された時点のタイムスタンプを付与されて組み込みの時系列データベース等に蓄積される。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００２９
【補正方法】変更
【補正の内容】
【００２９】
図２は、図１に示されるＰＬＣ１００の形態の一例を示す模式図である。一例として、複数のユニットを組み合わせたビルディングブロックタイプとして知られる形態のＰＬＣ１００を示す。このほか、パッケージタイプや、ベース装着タイプのＰＬＣも知られている。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００３５
【補正方法】変更
【補正の内容】
【００３５】
ＣＰＵブロック５２は、フィールド装置群８に至るフィールドバス２と、ＰＣ２００に至るＬＡＮ３、ＰＬＣ６００に至るネットワーク４とに接続される。ＣＰＵブロック５２は、ＣＰＵを備え、ＰＬＣ１００の中枢として機能する。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００４８
【補正方法】変更
【補正の内容】
【００４８】
メモリ１０２は、例えばＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）などの記憶素子、あるいはハードディスクドライブ（Hard Disk Drive：ＨＤＤ）などの記憶デバイスである。このほか、フラッシュメモリ、ＳＤＲＡＭ（Synchronous Dynamic RAM）などの半導体メモリ、あるいはＥＰＲＯＭ（Erasable Programmable ROM）、ＥＥＰＲＯＭ（Electrically Erasable Programmable ROM）などの不揮発性メモリを用いても良い。
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００６４
【補正方法】変更
【補正の内容】
【００６４】
図１０は、結合されたテーブルの一例を示す図である。共通クエリの“ＬＥＶＥＬ＝１＃ｍｓ”でミリ秒の精度が指定されたことに応じて、結合部１０１ｅは、テーブルＴＳ００１，ＴＳ００２の各々のタイムスタンプのミリ秒より上の桁、すなわち小数点４以上の桁を切り捨てる。例えば図６のテーブルＴＳ００１のインデックス１８２のデータと、テーブルＴＳ００２のインデックス２０２のデータとが、いずれもタイムスタンプ“2017-03-03-08：00：00．013”に対応付けて結合されている。このように実施形態では、タイムスタンプの精度を指定するための項目をクエリに設け、このクエリで指定された精度内のタイムスタンプを主キーとして、データベースを結合するようにした。これにより、複数の時系列データベースから取り出したデータを、ユーザの希望する任意の精度で結合することができる。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００８０
【補正方法】変更
【補正の内容】
【００８０】
また、実施形態では、単位時間当たりのデータ数の多い方が、データ数の少ない方に合わせる形態を開示した。この逆の形態も考え得る。例えば、２ミリ秒毎に収取されたデータを含むデータベースと、３ミリ秒毎に収集されたデータを含むデータベースとを、１ミリ秒の精度で結合することを考える。このケースでは、互いのデータ収集の周期の最小公倍数である６ミリ秒毎に、そのままの状態でデータを揃えることができる。一方、最小公倍数にならないタイムスタンプ、例えば、２ミリ秒毎に収取されたデータを含むデータベースの奇数値は、直前のデータで補間して結合する。
【手続補正１１】
【補正対象書類名】図面
【補正対象項目名】図９
【補正方法】変更
【補正の内容】
【図９】
2019008703.tif 000017