(57)【要約】【課題】制御演算のサイクリック実行を維持しつつ、制御演算の実行周期にあわせたデータ格納が可能な構成を提供する。【解決手段】制御装置は、フィールド装置からの入力データの収集、予め定められたユーザプログラムに従う入力データに基づく出力データの算出、算出される出力データの出力、を含む制御演算を予め定められた実行周期でサイクリック実行する処理部と、処理部が管理するデータのうち指定されたデータを時系列に格納するデータベースと、制御演算がサイクリック実行される実行周期と同じ周期でデータベースへのデータ書込みを実行するためのデータ書込み手段とを含む。【選択図】図５
2018151726.tif 000002
【特許請求の範囲】
【請求項１】
フィールド装置からの入力データの収集、予め定められたユーザプログラムに従う前記入力データに基づく出力データの算出、算出される出力データの出力、を含む制御演算を予め定められた実行周期でサイクリック実行する処理部と、
前記処理部が管理するデータのうち指定されたデータを時系列に格納するデータベースと、
前記制御演算がサイクリック実行される実行周期と同じ周期で前記データベースへのデータ書込みを実行するためのデータ書込み手段とを備える、制御装置。
【請求項２】
サイクリック実行される前記制御演算は、前記データベースへのデータ書込み要求を発行する処理を含み、
前記データ書込み手段は、前記データ書込み要求を受取るとともに、前記データ書込み要求をキューイングするバッファを含み、
前記制御演算において、前記データ書込み要求を発行すると、当該データ書込みの完了を待つことなく、次の処理が継続して実行される、請求項１に記載の制御装置。
【請求項３】
前記データ書込み手段において、データ書込み要求元（Publisher）とデータ受取り先（Subscriber）との論理的な関係が構築されている、請求項２に記載の制御装置。
【請求項４】
前記データ書込み手段は、前記制御演算とは非同期にバックグラウンドで処理を実行する、請求項１〜３のいずれか１項に記載の制御装置。
【請求項５】
前記制御装置は、互いに時刻同期されたフィールド装置と接続されており、
前記データベースに格納されるデータには、当該データがフィールド装置で収集された時刻情報が付与されている、請求項１〜４のいずれか１項に記載の制御装置。
【請求項６】
前記データベースには、時刻情報をＫｅｙとし、対応するデータの値をＶａｌｕｅとするＫｅｙ−Ｖａｌｕｅストア型のレコードが格納される、請求項５に記載の制御装置。
【請求項７】
前記制御装置は、接続された他の１または複数の制御装置のそれぞれから、各制御装置が有しているデータベースに格納されたデータを集約する、請求項１〜６のいずれか１項に記載の制御装置。
【請求項８】
前記制御装置は、互いに時刻同期されたデータベースを有する他の制御装置と接続されており、
前記制御装置のデータベースおよび前記他の制御装置のデータベースにそれぞれ格納されたデータを集約する外部装置が配置されている、請求項１〜７のいずれか１項に記載の制御装置。
【請求項９】
前記データベースに格納されたデータに対する検索要求を処理する検索処理部をさらに備える、請求項１〜８のいずれか１項に記載の制御装置。
【請求項１０】
前記実行周期と同じ周期で前記データベースへのデータ書込みが維持されるように、前記検索要求の処理を調停する調停処理部をさらに備える、請求項９に記載の制御装置。
【請求項１１】
制御装置を実現するためのプログラムであって、前記プログラムはコンピュータに
フィールド装置からの入力データの収集、予め定められたユーザプログラムに従う前記入力データに基づく出力データの算出、算出される出力データの出力、を含む制御演算を予め定められた実行周期でサイクリック実行するステップを実行させ、
前記コンピュータは、前記制御演算により管理されるデータのうち指定されたデータを時系列に格納するデータベースを備え、前記プログラムはコンピュータに
前記制御演算がサイクリック実行される実行周期と同じ周期で前記データベースへのデータ書込みを実行するステップを実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを時系列に格納するデータベースを有する制御装置およびその制御装置を実現するためのプログラムに関する。
【背景技術】
【０００２】
様々な生産現場において、ＰＬＣ（プログラマブルコントローラ）などの制御装置を用いたＦＡ（Factory Automation）技術が広く普及している。このような制御装置が取り扱うデータを事後的に解析するようなニーズがある。
【０００３】
例えば、特開２００４−１９９６７０号公報（特許文献１）は、ＰＬＣのＣＰＵユニットから確実かつ高速でデータ収集ができるデータ収集装置を開示する。より具体的には、特許文献１は、ＰＬＣのＰＬＣバスに接続されてＣＰＵユニットからＩＯデータを収集するデータ収集装置を開示する。
【０００４】
ＩＣＴ（Information and Communication Technology）の進歩によって、制御装置においても大量のデータを収集および格納することが可能になりつつある。例えば、特開２０１５−００５０６２号公報（特許文献２）は、データの書込み回数の上限のない不揮発性記憶装置である不揮発性メモリ上にオンメモリでデータベースが構築された、プログラマブルロジックコントローラを開示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−１９９６７０号公報
【特許文献２】特開２０１５−００５０６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一般的に、データベースに収集されたデータは事後的な分析や解析などに利用される。そのため、上述したような制御装置に内蔵されたデータベースにて大量のデータを収集するような構成を採用した場合であっても、事後的な分析や解析を容易にする仕組みが必要である。
【０００７】
本発明は、上述したようなニーズを実現するために、制御演算のサイクリック実行を維持しつつ、制御演算の実行周期にあわせたデータ格納が可能な構成を提供することを一つの目的としている。
【課題を解決するための手段】
【０００８】
本発明のある局面に従う制御装置は、フィールド装置からの入力データの収集、予め定められたユーザプログラムに従う入力データに基づく出力データの算出、算出される出力データの出力、を含む制御演算を予め定められた実行周期でサイクリック実行する処理部と、処理部が管理するデータのうち指定されたデータを時系列に格納するデータベースと、制御演算がサイクリック実行される実行周期と同じ周期でデータベースへのデータ書込みを実行するためのデータ書込み手段とを含む。
【０００９】
好ましくは、サイクリック実行される制御演算は、データベースへのデータ書込み要求を発行する処理を含み、データ書込み手段は、データ書込み要求を受取るとともに、データ書込み要求をキューイングするバッファを含み、制御演算において、データ書込み要求を発行すると、当該データ書込みの完了を待つことなく、次の処理が継続して実行される。
【００１０】
好ましくは、データ書込み手段において、データ書込み要求元（Publisher）とデータ受取り先（Subscriber）との論理的な関係が構築されている。
【００１１】
好ましくは、データ書込み手段は、制御演算とは非同期にバックグラウンドで処理を実行する。
【００１２】
好ましくは、制御装置は、互いに時刻同期されたフィールド装置と接続されており、データベースに格納されるデータには、当該データがフィールド装置で収集された時刻情報が付与されている。
【００１３】
好ましくは、データベースには、時刻情報をＫｅｙとし、対応するデータの値をＶａｌｕｅとするＫｅｙ−Ｖａｌｕｅストア型のレコードが格納される。
【００１４】
好ましくは、制御装置は、接続された他の１または複数の制御装置のそれぞれから、各制御装置が有しているデータベースに格納されたデータを集約する。
【００１５】
好ましくは、制御装置は、互いに時刻同期されたデータベースを有する他の制御装置と接続されており、制御装置のデータベースおよび他の制御装置のデータベースにそれぞれ格納されたデータを集約する外部装置が配置されている。
【００１６】
好ましくは、制御装置は、データベースに格納されたデータに対する検索要求を処理する検索処理部をさらに含む。
【００１７】
好ましくは、制御装置は、実行周期と同じ周期でデータベースへのデータ書込みが維持されるように、検索要求の処理を調停する調停処理部をさらに含む。
【００１８】
本発明の別の局面に従えば、制御装置を実現するためのプログラムが提供される。プログラムはコンピュータに、フィールド装置からの入力データの収集、予め定められたユーザプログラムに従う入力データに基づく出力データの算出、算出される出力データの出力、を含む制御演算を予め定められた実行周期でサイクリック実行するステップを実行させる。コンピュータは、制御演算により管理されるデータのうち指定されたデータを時系列に格納するデータベースを含む。プログラムはコンピュータに、制御演算がサイクリック実行される実行周期と同じ周期でデータベースへのデータ書込みを実行するステップを実行させる。
【発明の効果】
【００１９】
本発明によれば、制御演算のサイクリック実行を維持しつつ、制御演算の実行周期にあわせたデータ格納を実現できる。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態に係る制御システムの全体構成例を示す模式図である。
【図２】本実施の形態に係る制御システムを構成する制御装置のハードウェア構成例を示すブロック図である。
【図３】本実施の形態に係る制御システムを構成する制御装置のソフトウェア構成例を示すブロック図である。
【図４】本実施の形態に係る制御装置に実装される時系列データベースのデータ構造を概略する模式図である。
【図５】本実施の形態に係る制御装置におけるサイクリック実行処理および時系列データベースへの書込処理を説明するための模式図である。
【図６】本実施の形態に係る制御装置の時系列データベースにアプリケーションが関連付けられる場合の実装例を示すブロック図である。
【図７】本実施の形態に係る制御装置の時系列データベースへのアクセスに係る機能を説明するブロック図である。
【図８】本実施の形態に係る制御装置におけるフィールド装置群からのデータ収集の構成例を示す模式図である。
【図９】本実施の形態に係る制御装置における時系列データの収集処理を説明するための模式図である。
【図１０】本実施の形態に係る制御装置での時系列データの統合処理を説明するための模式図である。
【図１１】本実施の形態に係る制御装置に接続される外部装置での時系列データの統合処理を説明するための模式図である。
【発明を実施するための形態】
【００２１】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２２】
＜Ａ．制御システムの全体構成例＞
まず、本実施の形態に係る制御装置を含む制御システム１の全体構成例について説明する。
【００２３】
図１は、本実施の形態に係る制御システム１の全体構成例を示す模式図である。図１を参照して、本実施の形態に係る制御システム１は、主たる構成要素として、制御対象を制御する制御装置１００と、制御装置１００に接続されるサポート装置２００とを含む。
【００２４】
制御装置１００は、ＰＬＣ（プログラマブルコントローラ）などの、一種のコンピュータとして具現化されてもよい。制御装置１００は、第１フィールドバス２を介してフィールド装置群６と接続されるとともに、第２フィールドバス４を介して１または複数の表示装置３００と接続される。制御装置１００は、それぞれのバスまたはネットワークを介して、接続された装置との間でデータを遣り取りする。
【００２５】
制御装置１００は、製造装置や設備を制御するための各種演算を実行する制御演算機能を有している。制御装置１００は、制御演算機能に加えて、フィールド装置群６にて計測され、制御装置１００へ転送されるデータ（以下、「入力データ」とも称す。）や制御演算機能によって算出される各種のデータを取得する入出力機能、ならびに、時系列データベース１８０を有している。なお、以下の説明においては、「データベース」を「ＤＢ」とも記す。時系列データベース１８０は、後述するように、入出力機能により取得される各種データを時系列に格納する。
【００２６】
第１フィールドバス２および第２フィールドバス４は、データの到達時間が保証される、定周期通信を行うバスまたはネットワークを採用することが好ましい。このような定周期通信を行うバスまたはネットワークとしては、ＥｔｈｅｒＣＡＴ（登録商標）、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などが知られている。
【００２７】
フィールド装置群６は、制御対象または制御に関連する製造装置や生産ラインなど（以下、「フィールド」とも総称する。）から入力データを収集する装置を含む。このような入力データを収集する装置としては、入力リレーや各種センサ（例えば、アナログセンサ、温度センサ、振動センサなど）などが想定される。フィールド装置群６は、さらに、制御装置１００にて生成される指令（以下、「出力データ」とも称す。）に基づいて、フィールドに対して何らかの作用を与える装置を含む。このようなフィールドに対して何らかの作用を与える装置としては、出力リレー、コンタクタ、サーボドライバおよびサーボモータ、その他任意のアクチュエータが想定される。
【００２８】
このように、制御装置１００の制御演算機能は、制御対象から入力データを取得するとともに、取得した入力データに基づく制御演算を実行することで制御対象に対する出力データを決定する。
【００２９】
フィールド装置群６は、第１フィールドバス２を介して、制御装置１００との間で、入力データおよび出力データを含むデータを遣り取りする。図１に示す構成例においては、フィールド装置群６は、リモートＩ／Ｏ（Input/Output）装置１２と、リレー群１４と、画像センサ１８およびカメラ２０と、サーボドライバ２２およびサーボモータ２４とを含む。フィールド装置群６としては、これらに限られることなく、入力データを収集できるデバイス、または、出力データに基づく何らかのアクションができるデバイスであれば、どのようなものを採用してもよい。
【００３０】
リモートＩ／Ｏ装置１２は、第１フィールドバス２を介して通信を行う通信部と、入力データの取得および出力データの出力を行うための入出力部（以下、「Ｉ／Ｏユニット」とも称す。）とを含む。このようなＩ／Ｏユニットを介して、制御装置１００とフィールドとの間で入力データおよび出力データが遣り取りされる。図１には、リレー群１４を介して、入力データおよび出力データとして、デジタル信号が遣り取りされる例が示されている。
【００３１】
Ｉ／Ｏユニットは、フィールドバスまたはフィールドネットワークに直接接続されるようにしてもよい。図１には、第１フィールドバス２にＩ／Ｏユニット１６が直接接続されている例を示す。
【００３２】
画像センサ１８は、カメラ２０によって撮像された画像データに対して、パターンマッチングなどの画像計測処理を行って、その処理結果を制御装置１００へ出力する。
【００３３】
サーボドライバ２２は、制御装置１００からの出力データ（例えば、位置指令や速度指令など）に従って、サーボモータ２４を駆動する。
【００３４】
上述のように、第１フィールドバス２を介して、制御装置１００とフィールド装置群６との間でデータが遣り取りされることになるが、これらの遣り取りされるデータは、数百μｓｅｃオーダ〜数十ｍｓｅｃオーダーのごく短い周期で更新されることになる。なお、このような遣り取りされるデータの更新処理を、「Ｉ／Ｏリフレッシュ処理」と称することもある。
【００３５】
また、第２フィールドバス４を介して制御装置１００と接続される表示装置３００は、ユーザからの操作を受けて、制御装置１００に対してユーザ操作に応じたコマンドなどを出力するとともに、制御装置１００での演算結果などをグラフィカルに表示する。
【００３６】
サポート装置２００は、制御装置１００が制御対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置２００は、制御装置１００で実行されるプログラムの開発環境（プログラム作成編集ツール、パーサ、コンパイラなど）、制御装置１００および制御装置１００に接続される各種デバイスのパラメータ（コンフィギュレーション）を設定するための設定環境、生成したユーザプログラムを制御装置１００へ出力する機能、制御装置１００上で実行されるユーザプログラムなどをオンラインで修正・変更する機能、などを提供する。
【００３７】
制御装置１００は、さらに、入出力機能により取得されたデータおよび／または時系列データベース１８０に格納されたデータを外部装置へ出力するゲートウェイ機能も有している。
【００３８】
外部装置として、図１には、制御装置１００と上位／コントローラ間通信ネットワーク８を介して接続される、製造実行システムなどの上位システム４００を典型例として示す。製造実行システムは、制御対象の製造装置や設備からの情報を取得して、生産全体を監視および管理するものであり、オーダー情報、品質情報、出荷情報などを扱うこともできる。
【００３９】
＜Ｂ．制御装置のハードウェア構成例＞
次に、本実施の形態に係る制御システム１を構成する制御装置１００のハードウェア構成例について説明する。
【００４０】
図２は、本実施の形態に係る制御システム１を構成する制御装置１００のハードウェア構成例を示すブロック図である。図２を参照して、制御装置１００は、演算処理部および１または複数のＩ／Ｏユニット１２４−１，１２４−２，…を含む。
【００４１】
制御装置１００は、プロセッサ１０２と、チップセット１０４と、主記憶装置１０６と、二次記憶装置１０８と、ネットワークコントローラ１１０と、ＵＳＢ（Universal Serial Bus）コントローラ１１２と、メモリカードインターフェイス１１４と、ローカルバスコントローラ１２２と、フィールドバスコントローラ１１８，１２０とを含む。
【００４２】
プロセッサ１０２は、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro-Processing Unit）などで構成され、二次記憶装置１０８に格納された各種プログラムを読み出して、主記憶装置１０６に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。チップセット１０４は、プロセッサ１０２と各デバイスを制御することで、制御装置１００全体としての処理を実現する。
【００４３】
二次記憶装置１０８には、基本的な機能を実現するためのシステムプログラムに加えて、制御対象の製造装置や設備に応じて作成されるユーザプログラムが格納される。さらに、二次記憶装置１０８などを利用して、後述するような時系列データベース１８０が構成される。
【００４４】
ネットワークコントローラ１１０は、上位／コントローラ間通信ネットワーク８を介して、上位システム４００（図１参照）などとの間のデータを遣り取りする。ＵＳＢコントローラ１１２は、ＵＳＢ接続を介してサポート装置２００との間のデータの遣り取りを制御する。
【００４５】
メモリカードインターフェイス１１４は、メモリカード１１６を着脱可能に構成されており、メモリカード１１６に対してデータを書込み、メモリカード１１６から各種データを読出すことが可能になっている。メモリカード１１６を利用して、後述するような時系列データベース１８０を構成することも可能である。
【００４６】
ローカルバスコントローラ１２２は、制御装置１００に搭載されるＩ／Ｏユニット１２４−１，１２４−２，…との間でデータを遣り取りするインターフェイスである。
【００４７】
フィールドバスコントローラ１１８は、第１フィールドバス２を介したフィールド装置群６などとの間のデータの遣り取りを制御する。同様に、フィールドバスコントローラ１２０は、第２フィールドバス４を介した表示装置３００などとの間でデータを遣り取りする。
【００４８】
図２には、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field-Programmable Gate Array）など）を用いて実装してもよい。あるいは、制御装置１００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００４９】
＜Ｃ．制御装置のソフトウェア構成例＞
次に、本実施の形態に係る制御システム１を構成する制御装置１００のソフトウェア構成例について説明する。
【００５０】
図３は、本実施の形態に係る制御システム１を構成する制御装置１００のソフトウェア構成例を示すブロック図である。図３を参照して、制御装置１００は、ＰＬＣエンジン１５０と、入出力処理部１７０と、時系列データベース１８０と、アプリケーション１９０とを含む。
【００５１】
ＰＬＣエンジン１５０は、典型的には、制御装置１００のプロセッサ１０２がシステムプログラムを実行することで各種プログラムの実行環境が提供され、当該実行環境下において、各種プログラムを実行することができる処理部に相当する。より具体的には、ＰＬＣエンジン１５０は、制御プログラム１５２と、システムプログラム１６０と、時刻管理部１６８とを含む。
【００５２】
制御プログラム１５２は、制御対象に応じた各種アプリケーションを提供するためのプログラムであり、典型的には、ユーザプログラム１５４と、データベース書込みプログラム１５６と、シリアライズ通信プログラム１５８とを含む。
【００５３】
ユーザプログラム１５４は、制御演算機能を提供する主たる部分に相当し、制御装置１００の制御対象の製造装置や設備などに応じて任意に構成することができる。ユーザプログラム１５４は、ファンクションブロックなどを利用したラダーロジックなどで規定することができる。図３に示す例では、ユーザプログラム１５４は、シーケンス演算１５４１およびモーション演算１５４２を含む。モーション演算１５４２では、センサやアクチュエータなどからの入力データ、ならびに、ユーザプログラム１５４に含まれる命令を参照して、アクチュエータへの出力値が生成される。
【００５４】
このように、ユーザプログラム１５４は、入力プログラム１６４によって更新される観測値を含む制御装置１００内の状態値を参照し、出力として制御装置１００内の状態値を更新する。更新された状態値は、出力プログラム１６６やデータベース書込みプログラム１５６などの制御装置１００で実行される他機能により参照されてもよい。一般的に、ユーザプログラム１５４は、制御装置１００のユーザー（機器開発者など）がプログラミングツールを用いて作成される。
【００５５】
データベース書込みプログラム１５６は、ユーザプログラム１５４内に規定された命令によって呼び出され、入出力処理部１７０を介して、時系列データベース１８０に対して指定されたデータを書込む。データベース書込みプログラム１５６は、高優先プログラムとして実行されてもよい。
【００５６】
より具体的には、データベース書込みプログラム１５６は、データを収集し時系列データベース１８０へ格納を要求する。データベース書込みプログラム１５６は、ユーザプログラム１５４と同期して実行できる。データベース書込みプログラム１５６は、データに時刻管理部１６８により機器間で同期された時刻情報を付与できる。時刻情報の具体例としては、データの入力源であるセンサが入力を行った時刻であってもよい。データベース書込みプログラム１５６は、単位変換などの収集したデータに対する加工、複数のデータから何らかの情報の導出といった各種処理を付加的に有することもできる。データベース書込みプログラム１５６は、処理対象のデータについて、収集データと同様に時系列データベース１８０への格納を要求できる。データベース書込みプログラム１５６は、ユーザプログラム１５４と同様のツールで作成できる。あるいは、ユーザプログラム１５４の一部として作成してもよい。別ツールを用いて、ユーザプログラム１５４とは独立したデータベース書込みプログラム１５６を作成してもよい。
【００５７】
シリアライズ通信プログラム１５８は、データベース書込みプログラム１５６から時系列データベース１８０に対して書込まれるデータに対してシリアライズ処理を行う。より具体的には、シリアライズ通信プログラム１５８は、時系列データを格納可能なバイト列に変換する処理（シリアライズ）を実行する。シリアライズ通信プログラム１５８は、データベース書込みプログラム１５６が時系列データベース１８０に格納を要求したデータ群を、データベースへの格納および参照に適した書式に変換する。時系列データベース１８０へのデータ書込みの速度およびデータ容量などに応じて、必ずしもシリアライズ処理を行う必要はない。すなわち、シリアライズ通信プログラム１５８はオプショナルな構成である。
【００５８】
システムプログラム１６０は、スケジューラプログラム１６２と、入力プログラム１６４と、出力プログラム１６６とを含む。
【００５９】
スケジューラプログラム１６２は、制御装置１００で実行されるそれぞれのプログラムを実行条件に基づいてスケジューリングを行う。すなわち、スケジューラプログラム１６２は、制御プログラム１５２を構成する１または複数のタスクあるいはプロセスの実行順序や実行タイミングを管理する。入力プログラム１６４は、制御装置１００とローカルバスまたはフィールドバスを介して接続される各種デバイス（フィールド装置群６）から入力データ（例えば、センサ観測値や機器の状態値など）を取得する機能を提供する。出力プログラム１６６は、制御装置１００において実行されるユーザプログラム１５４によって算出される指令値（出力データ）をローカルバスまたはフィールドバスを介して接続される対象のデバイス（フィールド装置群６）へ出力する。
【００６０】
時刻管理部１６８は、制御装置１００における同期タイミングを管理する主体であり、例えば、所定周期でカウントアップ／カウントダウンするカウンタあるいはタイマを用いて実現される。時刻管理部１６８は、他のカウンタまたはタイマと同期するための機能を有していてもよく、この場合には、ローカルバス上、フィールドバス上、あるいは、フィールドネットワーク上のデバイス上にあるカウンタあるいはタイマと同期させることができる。時刻管理部１６８は、ローカルバス上、フィールドバス上、あるいは、フィールドネットワーク上の機器に加えて、他のネットワーク接続された機器との間で高精度（例えば、マイクロ秒オーダ）に時刻を共有する。この時刻は、センサ／アクチュエータの入出力の実行タイミングや制御装置１００でのプログラム実行タイミングの基準となる。
【００６１】
入出力処理部１７０は、ＰＬＣエンジン１５０からの時系列データベース１８０へのデータ書込み要求を処理する。より具体的には、入出力処理部１７０においては、データ書込み要求元（Publisher）１７２とデータ受取り先（Subscriber）１７４との論理的な関係が構築されている。このような論理的な関係は、各種要求に応じて任意に設計され、これによって、オンザフライ入出力処理を実現する。このような構成を利用することで、入出力処理部１７０は、時系列データベース１８０に対して時系列データをオンザフライで書込む。
【００６２】
このように、入出力処理部１７０は、データベース書込みプログラム１５６から時系列データベース１８０へのデータ書込み要求を受付けて蓄積し、時系列データベース１８０へ順次格納する。システムプログラム１６０および制御プログラム１５２が実行する制御サイクルでの処理への影響を与えないように動作する。複数のデータの供給者であるデータ書込み要求元（Publisher）１７２と、購読者であるデータ受取り先（Subscriber）１７４を存在させるとともに、それらを任意に関連付けることができる。制御サイクルの一例として、制御サイクル毎にデータベース書込みプログラム１５６が実行されて、時系列データベース１８０へ時系列データを順次格納するようにしてもよい。さらに、他のデータベースやアプリケーションへのデータ供給、あるい、制御プログラム以外のアプリケーションからの入力受付への対応も柔軟に行うことができる。入出力処理部１７０の詳細な処理については、後述する。
【００６３】
時系列データベース１８０は、典型的には、主記憶装置１０６または二次記憶装置１０８（図２参照）に配置され、時系列データを格納する機能とともに、外部からの要求（クエリ）に応答して、指定された時系列データを応答する検索機能を搭載している。時系列データベース１８０は、データベース書込みプログラム１５６により書込まれる時系列データを格納している。
【００６４】
より具体的には、時系列データベース１８０は、データベースアクセス調停処理部１８２と、データ格納処理部１８４と、データ検索処理部１８６と、内蔵ストレージ１８８と、外付けストレージ１８９とを含む。
【００６５】
データベースアクセス調停処理部１８２は、制御演算の実行周期（システム周期）と同じ周期で時系列データベース１８０へのデータ書込みが維持されるように、検索要求の処理を調停する。より具体的には、データベースアクセス調停処理部１８２は、データベースへのデータ書込み要求とデータベースに対する検索要求とが競合した場合に、それぞれの要求のタイミングなどを調整する。データベースアクセス調停処理部１８２は、時系列データベース１８０への時系列データの格納要求および検索要求の複数に対して実行順序を調停する。特に、高頻度および定周期でデータを格納する場合において、他のデータベースアクセス要求の集中時に格納が追いつかなくなりデータを取りこぼす、といった状況を回避することができる。データベースアクセス調停処理部１８２の詳細な処理については、後述する。
【００６６】
データ格納処理部１８４は、入出力処理部１７０を介したデータベースへのデータ書込み要求に従って、入力された時系列データを、内蔵ストレージ１８８または外付けストレージ１８９の指定されたレコードに追加する。データ格納処理部１８４は、時系列データの格納先として複数のストレージを使い分けることもできる。データ格納処理部１８４は、古いデータを削除することでデータベースのデータ量（ストレージ使用量）を一定以下に保つリング動作を設定することもできる。データ格納処理部１８４は、制御装置１００お電源遮断時に、データベースを破損させないようなデータベース書込みも可能である。
【００６７】
内蔵ストレージ１８８は、制御装置１００に内蔵される二次記憶装置１０８（図２）などを利用したデータ格納部である。内蔵ストレージ１８８は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Statistic Random Access Memory）などの揮発性メモリに加えて、フラッシュメモリなどの不揮発性メモリを含み得る。外付けストレージ１８９は、メモリカード１１６（図２）や図示しない外付けのハードディスクなどを利用した不揮発性のデータ格納部である。
【００６８】
データ検索処理部１８６は、時系列データベース１８０に格納されたデータに対する検索要求を処理する機能を提供し、アプリケーション１９０および／またはサポート装置２００上で実行されるアプリケーション２１０などからの検索要求に応答して、内蔵ストレージ１８８および／または外付けストレージ１８９から指定された条件に合致する時系列データを検索する。すなわち、データ検索処理部１８６は、制御装置１００内外のアプリケーションからの要求に応じて、ストレージに格納された時系列データを検索し、取得したデータを要求元に渡す。
【００６９】
アプリケーション１９０は、制御装置１００上で実行される任意のプログラムであり、典型的には、時系列データベース１８０に格納されている時系列データを利用するようなプログラムが想定される。例えば、時系列データベース１８０に格納されている時系列データを学習データとして機械学習を行った上で、何らかの判別を行うようなアプリケーションが想定される。
【００７０】
アプリケーション１９０は、制御周期とは関連せずに起動されるプログラムであり、システムプログラム１６０や制御プログラム１５２によって実行する制御とは別の頻度やタイミングで動作されるアプリケーションに相当する。アプリケーション１９０は、制御プログラム１５２の実行を妨げないスケジューリングで動作し、各目的に応じて、制御プログラム１５２や制御装置１００以外のシステム上の要素と相互作用する。アプリケーション１９０の例として、時系列データベース１８０から時系列データを検索し、複数の周期にわたるデータからシステムの診断や制御へのフィードバックを行うＡＩ（Artificial Intelligence）機能などが想定される。
【００７１】
制御装置１００に接続されるサポート装置２００においても、任意のアプリケーション２１０が実行されてもよい。アプリケーション２１０の一例として、時系列データベース１８０に格納されている時系列データを利用するようなプログラムが想定される。例えば、制御装置１００の時系列データベース１８０に格納されている時系列データを解析して、何らかの傾向や当該傾向に関連付けられる特徴量などを探し出すような、いわゆるデータマイニングなどを想定される。あるいは、時系列データベース１８０に格納されている時系列データに対して、各種の統計処理を実行するアプリケーションや、時系列データベース１８０に格納されている時系列データの数値を表示したり、視覚的に示すグラフなどを表示したりするようなアプリケーションも想定される。
【００７２】
＜Ｄ．時系列データベース＞
次に、本実施の形態に係る制御装置１００に実装される時系列データベース１８０のデータ構造について説明する。
【００７３】
図４は、本実施の形態に係る制御装置１００に実装される時系列データベース１８０のデータ構造を概略する模式図である。図４を参照して、時系列データベース１８０が扱う時系列データの概念を「時系列（TimeSeries）」とも称す。１つの時系列は、複数レベルのデータベースで構成されてもよい。
【００７４】
時系列データベース１８０には、複数の時系列を生成することができ、例えば、アプリケーション毎に時系列を生成するようにしてもよい。各データベースファイルは、バージョンなどの独自の属性を有するようにしてもよい。
【００７５】
時系列データベース１８０には、データ群が格納される。データ群は、データの最小単位であるレコードの単位で時系列データが格納されてもよい。各レコードは、Ｋｅｙ−Ｖａｌｕｅストア型が採用されてもよい。Ｋｅｙ−Ｖａｌｕｅストア型のレコードが採用された場合には、格納対象のデータ（Ｖａｌｕｅ／値）と、そのデータに対応する一意の標識（Ｋｅｙ）とが関連付けて格納される。すなわち、各レコードは、Ｋｅｙ−Ｖａｌｕｅストア型のＫｅｙとＶａｌｕｅとを含む。
【００７６】
より具体的には、各レコードには、時系列データの標識を示す時系列Ｋｅｙと、時系列データの値を示す時系列Ｖａｌｕｅとが格納されてもよい。時系列Ｋｅｙには、例えば、時刻情報やタイミングを示すような情報が格納されていてもよい。時系列Ｖａｌｕｅには、対応する入力データ、出力データ、演算データの値（実値）が格納されていてもよい。
【００７７】
＜Ｅ．時系列データの格納処理＞
次に、本実施の形態に係る制御装置１００における時系列データの格納処理について説明する。制御装置１００においては、予め定められた周期毎にＩ／Ｏリフレッシュ処理が繰返し実行される。このＩ／Ｏリフレッシュ処理と同じ周期でユーザプログラム１５４の少なくとも一部が実行される。本実施の形態において、時系列データベース１８０に対する時系列データの書込みは、データベース書込みプログラム１５６によって実行され、データベース書込みプログラム１５６はユーザプログラム１５４から呼び出される。
【００７８】
本実施の形態に係る制御装置１００においては、入出力処理部１７０が提供するオンザフライ入出力処理によって、Ｉ／Ｏリフレッシュ処理を含む一連のプログラムの繰返し実行（サイクリック実行）を妨げず、時系列データベース１８０への時系列データの書込みを実現する。
【００７９】
時系列データベース１８０は、時系列データとしては、互いに独立した複数を格納および検索できるようにしてもよい。時系列データベース１８０のサイズに応じて、１または複数のストレージを利用するようにしてもよい。さらに、時系列データベース１８０の連続的かつ定常的な時系列データを格納する機能に加えて、過去の時系列データを破棄することでストレージの使用量を一定量に抑えるリング機能を付加してもよい。
【００８０】
図５は、本実施の形態に係る制御装置１００におけるサイクリック実行処理および時系列データベースへの書込処理を説明するための模式図である。図５には、一例として、出力プログラム１６６と、入力プログラム１６４と、ユーザプログラム１５４と、ユーザプログラム１５４から呼び出されるデータベース書込みプログラム１５６とがサイクリック実行される例を示す。図５に示すサイクリック実行の実行周期（実行開始タイミングの間隔）を「制御サイクル」と称することもある。
【００８１】
図５に示すような、予め定められた実行周期でサイクリック実行される制御演算は、フィールド装置からの入力データの収集（入力プログラム１６４）、予め定められたユーザプログラム１５４に従う入力データに基づく出力データの算出、算出される出力データの出力（出力プログラム１６６）を含む。
【００８２】
図５に示すように、ユーザプログラム１５４からデータベース書込みプログラム１５６が呼び出されることで、データベース書込みプログラム１５６は、制御サイクルに同期して実行させることになる。
【００８３】
このようなサイクリック実行は、スケジューラプログラム１６２によって管理される。なお、図５には、サイクリック実行の一例を示すのみであり、実行されるプログラムは図５に示されるものに限らず、さらに別のプログラムがサイクリック実行されるようにしてもよいし、図５に示す一部のプログラムを省略するようにしてもよい。
【００８４】
データベース書込みプログラム１５６は、入力プログラム１６４により取得される入力値、制御プログラム１５２あるいは制御装置１００の内部状態を示す内部状態値、出力プログラム１６６から出力される出力値のうち、予め指定されたデータを集約して、時系列データベース１８０に対するデータ書込み要求を発行する。データ書込み要求は、入出力処理部１７０へ与えられる。すなわち、サイクリック実行される制御演算は、時系列データベース１８０へのデータ書込み要求を発行する処理を含む。
【００８５】
時系列データベース１８０は、ＰＬＣエンジン１５０（処理部）が管理するデータのうち指定されたデータを時系列に格納する。入出力処理部１７０は、制御演算がサイクリック実行される実行周期と同じ周期で時系列データベース１８０へのデータ書込みを実行するためのデータ書込み手段に相当する。
【００８６】
より具体的には、入出力処理部１７０は、データベース書込みプログラム１５６からのデータ書込み要求をオンザフライで処理する。そのため、データベース書込みプログラム１５６は、入出力処理部１７０による時系列データベース１８０へのデータの格納完了を待つ必要がない。すなわち、データベース書込みプログラム１５６において、データ書込み要求を発行しさえすれば処理を完了させることができ、図５に示すサイクリック実行を予め定められた制御サイクルで実行することを保証できる。つまり、データベース書込みプログラム１５６は、制御サイクルに同期して実行される際、先の制御サイクルにおいて発行した時系列データベース１８０に対する時系列データの格納が完了していなくとも、新しい時系列データの格納を要求できる。
【００８７】
このように、本実施の形態に係る制御装置１００においては、データベース書込みプログラム１５６は、時系列データベース１８０への時系列データの格納完了を待たない振る舞いができる。
【００８８】
なお、時系列データベース１８０へ格納するデータと取得する値に対して、スケーリングや統計処理といった事前の加工処理を行って、情報量を圧縮するようにしてもよい。
【００８９】
データベース書込みプログラム１５６自体は、ユーザプログラム１５４を作成するのと同じプログラミングツールを使って作成できるようにしてもよい。このとき、データベース書込みプログラム１５６をユーザプログラム１５４の一部として構成してもよいし、ユーザプログラム１５４とは独立したプログラムとして構成してもよい。さらに、複数のデータベース書込みプログラム１５６を同一のプロセッサ１０２を用いて実行するようにしてもよい。
【００９０】
また、データベース書込みプログラム１５６に対して、制御装置１００での制御プログラム１５２の実行中（サイクリック実行中）であっても、編集操作（対象変数の追加や削除）が可能になるようにしてもよい。
【００９１】
データベース書込みプログラム１５６の記述様式あるいは記述形式は、一連の命令を記述したコードに限定されることなく、必要な情報（例えば、収集したい変数のリストや変数を変形する操作のリスト）を指定するための専用ツールまたは専用アプリケーションが提供されていてもよい。このような専用ツールまたは専用アプリケーションを実現するために、制御装置１００側またはサポート装置２００側に各種設定を受付けるインターフェイスを用意してもよい。
【００９２】
さらに、明示的なデータベース書込みプログラム１５６ではなく、制御装置１００の内部で実行されるシステムタスクの一部として、データベース書込みプログラム１５６を実現してもよい。
【００９３】
入出力処理部１７０は、データベース書込みプログラム１５６からのデータ書込み要求に対して、指定された時系列データを時系列データベース１８０に格納する。上述したように、データベース書込みプログラム１５６からみると、データ書込み要求を発行した後に、時系列データの格納が完了を待たせないように、入出力処理部１７０はデータ書込み要求を処理する。入出力処理部１７０による時系列データの格納は、制御サイクルで実行される制御演算とは非同期にバックグラウンドで処理が実行される。このような非同期かつバックグラウンドでの実行によって、制御サイクルへの影響を低減できる。
【００９４】
プロセッサ１０２として、マルチコアまたはマルチプロセッサの構成を採用している場合には、制御演算をサイクリック実行するコアまたはプロセッサとは別に、入出力処理部１７０を実現するための処理を担当するコアまたはプロセッサを割り当てるようにしてもよい。
【００９５】
このような制御サイクルとは非同期にデータを格納するための実装形態の一例として、入出力処理部１７０が書込み要求をキューイングするバッファ１７６を備えていてもよい。すなわち、入出力処理部１７０は、データ書込み要求を受取るとともに、データ書込み要求をキューイングするバッファ１７６を含んでいてもよい。あるいは、時系列データベース１８０のデータ格納処理部１８４に同様の機能を発揮するバッファを配置してもよい。さらにあるいは、入出力処理部１７０およびデータ格納処理部１８４にそれぞれバッファを配置するような構成を採用してもよい。
【００９６】
このような構成を採用することで、制御演算において、データ書込み要求を発行すると、当該データ書込みの完了を待つことなく、次の処理が継続して実行される。
【００９７】
入出力処理部１７０においては、データ書込み要求元（Publisher）１７２およびデータ受取り先（Subscriber）１７４（いずれも図３参照）の関係を任意に構築できる。すなわち、いずれの主体（プログラムまたはモジュール）がデータ書込み要求の発行を担当するのか、いずれの主体（プログラムまたはモジュール）がそのデータ書込み要求に従って時系列データを時系列データベース１８０へ書込むのかを担当するのかについては、実装されるシステムの環境や要求などに応じて、任意に設計できる。
【００９８】
図６は、本実施の形態に係る制御装置１００の時系列データベース１８０にアプリケーションが関連付けられる場合の実装例を示すブロック図である。図６（Ａ）には、時系列データをアプリケーションへ渡す構成例を示し、図６（Ｂ）には、時系列データを事前に加工する構成例を示す。
【００９９】
入出力処理部１７０におけるデータ書込み要求元１７２およびデータ受取り先１７４の関係を適切に構築することで、例えば、時系列データベース１８０に格納された時系列データを同時に１または複数のアプリケーション１９０へ渡すように構成することもできる。図６（Ａ）に示す例においては、入出力処理部１７０は、何らかのデータ書込み要求を受信すると、対象の時系列データを時系列データベース１８０へ格納するとともに、その時系列データをアプリケーション１９０へも渡すことができる。アプリケーション１９０としては、例えば、フィールドから収集される時系列データに基づいて、何らかの異常の兆候を検出するような処理を実行するようなものが想定される。この結果、高いリアルタイム性を維持しつつ時系列データ群を解析し、その解析結果を制御にフィードバックするようなアプリケーションの構築を容易に行うことができる。
【０１００】
また、時系列データベース１８０に時系列データを格納するにあたって、スケーリングや統計処理といった任意の加工処理を行うようにしてもよい。図６（Ｂ）に示す例においては、スケーリングや統計処理といった任意の加工処理を行うアプリケーション１９０が制御装置１００上で実行されているとする。入出力処理部１７０は、何らかのデータ書込み要求を受信すると、対象の時系列データをアプリケーション１９０へ渡す。アプリケーション１９０は、時系列データに対して所定のデータ加工処理を実施し、その加工結果を時系列データベース１８０へ格納する。この際、アプリケーション１９０によるデータ加工処理の処理時間にゆらぎなどがある場合には、そのゆらぎを吸収できるように、入出力処理部１７０からアプリケーション１９０へ渡す時系列データの速度などを調整してもよい。
【０１０１】
さらに、複数のデータベース書込みプログラム１５６および複数のデータベースが設けられる場合には、入出力処理部１７０についても複数配置するようにしてもよい。このような構成においては、用途や対象のデータベース毎に入出力処理部１７０または入出力処理部１７０内のバッファ１７６の機能を分けてもよい。
【０１０２】
以上のように、本実施の形態に係る制御装置１００においては、時系列データベース１８０へのデータ書込みをオンザフライで処理できるため、制御プログラムの制御サイクル内での実行を保証できる。
【０１０３】
＜Ｆ．時系列データの検索処理＞
次に、本実施の形態に係る制御装置１００においては、時系列データベース１８０に格納された時系列データに対する検索処理が可能になっている。時系列データベース１８０においては、典型的には、Ｋｅｙ−Ｖａｌｕｅストア型のレコードが採用されていてもよく、各レコードが各時系列データに対応することになる。この場合には、各レコードのＫｅｙに格納されている任意の情報を検索キーとして指定することができる。
【０１０４】
典型的には、レコードのＫｅｙには、時刻情報（タイムスタンプ）を含めるようにしてもよい。このような時刻情報は、フィールド装置群６から得られる入力情報の一部に含まれていることもあるし、時刻管理部１６８（図３）などから提供されることもある。例えば、フィールド装置群６から入力データを取得したタイミングの時刻情報を格納するようにしてもよい。このような検索処理は、データ検索処理部１８６（図３）によって実行される。
【０１０５】
図７は、本実施の形態に係る制御装置１００の時系列データベース１８０へのアクセスに係る機能を説明するブロック図である。図７を参照して、データ検索処理部１８６は、何らかの検索キーなどの検索条件を含む検索要求を受けると、当該検索条件に合致するレコードをストレージから検索および抽出する。データ検索処理部１８６は、制御装置１００の内外を問わず、任意の主体から検索要求を受信することができる。例えば、検索要求を発行する主体の例としては、ユーザプログラム１５４、制御装置１００上で実行される任意のアプリケーション１９０（例えば、統計プログラムやＡＩプログラムなど）、および、サポート装置２００および上位システム４００などの外部装置が挙げられる。
【０１０６】
上述したような構成を採用すると、時系列データベース１８０には、制御サイクル毎に時系列データが格納されるとともに、複数の主体から検索要求が任意のタイミングで与えられることになる。すなわち、データ書込み要求および検索要求が同時に時系列データベース１８０へ与えられることもあり、このような競合状態を適切に処理するために、データベースアクセス調停処理部１８２は、処理要求間を調停する。
【０１０７】
データベースアクセス調停処理部１８２は、設定された規模のデータ書込み要求、あるいは、動作状況から認識された規模の定常的なデータ書込み要求を漏れなく実行できるよう、時系列データベース１８０への処理要求の発行順や発行タイミングを調停する。
【０１０８】
データベースアクセス調停処理部１８２における調停処理としては、以下のようなものが想定される。
【０１０９】
（１）ある単位期間（例えば、１秒）あたりにＸレコード（あるいは、Ｙバイト）のｉｎｓｅｒｔ（追加命令）を優先的に処理する。
【０１１０】
（２）時系列データの書込み要求を複数受信した場合には、各書込み要求を発したデータベース書込みプログラムを識別するとともに、第１のデータベース書込みプログラムに対して、Ｘレコード／秒までの処理を割り当て、第２のデータベース書込みプログラムに対して、Ｙレコード／秒までの処理を割り当てるようにしてもよい。すなわち、それぞれのデータベース書込みプログラムに対して、優先的に処理可能なデータ量を予め設定しておき、その設定された範囲で優先的に処理を行うようにしてもよい。
【０１１１】
（３）データ書込みに係る処理によって負荷飽和を生じることで、他のデータベースアクセスに対して十分なリソースを割り当てられないような状況を回避するために、検索要求向けに最低限の処理枠（リソース）を確保するようにしてもよい。
【０１１２】
（４）時系列データベース１８０への読出しアクセス間についても調停するようにしてもよい。例えば、時系列データベース１８０から定期的にデータを収集し、その収集したデータを制御演算処理へフィードバックするようなアプリケーションなどからの検索要求を他の非同期な問合せより優先するようにしてもよい。但し、この場合も、アプリケーションなどからの検索要求のうち優先的に処理される単位時間あたりの量にも制限を加えておくことが好ましい。
【０１１３】
このような、データベースアクセス調停処理部１８２を採用することで、制御サイクルに同期して、時系列データを時系列データベース１８０へ格納することができるという機能をより強化することができる。すなわち、非同期の処理や負荷不安定な検索処理を並存して処理しなければならない状況であっても、時系列データの周期的な格納を実現できる。
【０１１４】
なお、データ書込み要求を発行するアプリケーションが複数存在するような場合には、それぞれのデータ書込み要求を処理するための入出力処理部１７０が複数配置されることもあり、このような場合においても、それぞれの入出力処理部１７０に対して、リソースを調停して割り当てるようにすればよい。
【０１１５】
＜Ｇ．時系列データの収集処理＞
本実施の形態に係る制御装置１００においては、フィールド装置群６から収集するデータに対して、共通の時刻を付与することができる。
【０１１６】
図８は、本実施の形態に係る制御装置１００におけるフィールド装置群６からのデータ収集の構成例を示す模式図である。図８を参照して、制御装置１００においては、スケジューラプログラム１６２による実行タイミングの管理によって、出力プログラム１６６と、入力プログラム１６４と、ユーザプログラム１５４（および、図示しないデータベース書込みプログラムを含み得る）とがサイクリック実行される。
【０１１７】
制御装置１００は、ローカルバス、フィールドバス、フィールドネットワークなどを介してフィールド装置群６（例えば、アクチュエータなどの出力機器６１およびセンサ等の入力機器６２など）と接続されている。制御装置１００とローカルバス、フィールドバス、フィールドネットワークなどを介して接続されるフィールド装置群６との間では、同期した通信処理を実現するために、互いに同期したタイマなどを有している。すなわち、制御装置１００の時刻管理部１６８は、出力機器６１の時刻管理部６１１および／または入力機器６２の時刻管理部６２１と同期している。
【０１１８】
したがって、出力機器６１および入力機器６２から制御装置１００へ伝送されるデータに、各機器の時刻管理部６１１，６２１が管理する時刻情報を付加して送信することで、制御装置１００の出力プログラム１６６および入力プログラム１６４にて扱われるデータとの間で時刻の整合性を取ることができる。
【０１１９】
図９は、本実施の形態に係る制御装置１００における時系列データの収集処理を説明するための模式図である。図９を参照して、例えば、時系列データベース１８０を有する制御装置１００は、ローカルバス、フィールドバス、フィールドネットワークなどを介してフィールド装置群６と接続されている。制御装置１００の時刻管理部１６８は、フィールド装置群６の時刻管理部６１１，６２１と同期されている。
【０１２０】
フィールド装置群６は、時刻管理部６１１，６２１にて管理される時刻情報とともに、収集された観測値などを制御装置１００へ送信する。制御装置１００は、フィールド装置群６から時刻情報および観測値を受信すると、時刻情報を標識（Ｋｅｙ）の少なくとも一部とするとともに、観測値を値（Ｖａｌｕｅ）として時系列データベース１８０に格納する。
【０１２１】
このように、制御装置１００は、互いに時刻同期されたフィールド装置と接続されており、制御装置１００の時系列データベース１８０に格納されるデータには、当該データがフィールド装置で収集された時刻情報が付与されていてもよい。このとき、時系列データベース１８０には、時刻情報をＫｅｙとし、対応するデータの値をＶａｌｕｅとするＫｅｙ−Ｖａｌｕｅストア型のレコードが格納されてもよい。
【０１２２】
互いに同期された時刻管理部１６８が管理する時刻情報を付加することで、時系列データベース１８０に収集された時系列データを互いに同期させることができる。すなわち、共通の時間軸にて時系列データの比較などが可能となる。
【０１２３】
このように、本実施の形態に係る制御装置１００においては、互いに同期された時刻管理部１６８が管理する時刻情報を用いることで、１または複数のフィールド装置群６と接続された制御装置１００上において、高い時刻精度で時系列データの統合、蓄積、解析を実現できる。
【０１２４】
さらに、複数の制御装置１００同士も時刻同期することが可能であり、このような場合には、複数の制御装置１００のそれぞれの時系列データベース１８０に格納される時系列データをいずれかの制御装置１００、サポート装置２００、または上位システム４００にて統合することで、異なる制御装置１００に接続されたフィールド装置群６から収集された時系列データであっても、互いに統合して分析などを行うことができる。
【０１２５】
図１０は、本実施の形態に係る制御装置１００での時系列データの統合処理を説明するための模式図である。図１０に示すシステムは、制御装置１００−１〜１００−３を含んでいる。制御装置１００−１〜１００−３は、時系列データベース１８０−１〜１８０−３をそれぞれ含んでいる。制御装置１００−１は、ローカルバス、フィールドバス、フィールドネットワークなどを介して制御装置１００−２と接続されている。また、制御装置１００−１は、ローカルバス、フィールドバス、フィールドネットワークなどを介して制御装置１００−３とも接続されている。
【０１２６】
このようなバスまたはネットワークを介して接続される制御装置１００の間では、時刻同期が確立されており、それぞれ共通の時刻を保持している。このような時刻同期された時刻情報を時系列データベース１８０への時系列データの登録の際に用いることで、それぞれの時系列データベース１８０に格納される時系列データの間では、時間軸を共通にできる。
【０１２７】
例えば、制御装置１００−１が自身の時系列データベース１８０−１だけではなく、制御装置１００−２の時系列データベース１８０−２および制御装置１００−３の時系列データベース１８０−３のそれぞれから時系列データを収集することで、時系列データの統合分析が可能になる。このように、制御装置１００は、接続された他の１または複数の制御装置１００のそれぞれから、各制御装置１００が有している時系列データベース１８０に格納されたデータを集約するようにしてもよい。
【０１２８】
以上のようなデータ集約機能を実装することで、要求されるシステム仕様などを満たすために、複数の制御装置１００を分散配置した場合であっても、それぞれの制御装置１００が収集する時系列データの間で、時間軸を共通化できるので、時系列データの事後的な統合分析を容易化できる。
【０１２９】
図１１は、本実施の形態に係る制御装置１００に接続される外部装置での時系列データの統合処理を説明するための模式図である。図１１に示すように、制御装置１００は、互いに時刻同期された時系列データベース１８０を有する他の制御装置１００と接続されており、制御装置１００の時系列データベース１８０および他の制御装置１００の時系列データベース１８０にそれぞれ格納されたデータを集約する外部装置（サポート装置２００または上位システム４００）が配置されていてもよい。
【０１３０】
サポート装置２００や上位システム４００によって、それぞれの時系列データベース１８０から時系列データを収集することで、時系列データの統合分析が可能になる。したがって、要求されるシステム仕様などを満たすために、複数の制御装置１００を分散配置した場合であっても、それぞれの制御装置１００が収集する時系列データの間で、時間軸を共通化できるので、時系列データの事後的な統合分析を容易化できる。
【０１３１】
上述したように、複数の制御装置１００を互いに時刻同期したネットワークなどを介して接続するとともに、時刻同期したタイムスタンプを付与した時系列データを収集することで、事後的に、これらの時系列データを統合して解析することができる。このような構成を採用することで、要求される性能や測定点数などに応じてシステムを拡張可能なスケーラビリティのある構成を容易に実現できる。
【０１３２】
＜Ｈ．変形例＞
（ｈ１：ハードウェアの集約）
上述の図１の制御システム１においては、制御装置１００、サポート装置２００および表示装置３００がそれぞれ別体として構成されているが、これらの機能の全部または一部を単一の装置に集約するような構成を採用してもよい。
【０１３３】
（ｈ２：データ加工処理）
上述したような時系列データベース１８０に書込まれる時系列データに対する加工処理については、ユーザプログラム１５４の実行周期と同期して実行するようにしてもよいし、同期せずに実行するようにしてもよい。加工処理がユーザプログラム１５４と非同期で実行される場合には、時系列データベース１８０に格納する前の前処理などに用いることができる。このように、ユーザプログラム１５４の実行周期と加工処理の実行とを同期させないことで、時系列データの収集処理が制御演算へ与える影響を低減できる。
【０１３４】
（ｈ３：簡素化）
上述の説明においては、時系列データベース１８０へのデータ書込み機能に加えて、時系列データベース１８０に対する検索機能を有する制御装置１００を例示したが、検索機能を省略してもよい。すなわち、上述した制御装置１００の構成のうち、データ検索処理部１８６を省略してもよい。
【０１３５】
このような簡素化された構成を採用することで、オンザフライでの入力処理および出力処理を時系列データベースへの時系列データの格納に特化させることができる。この場合、制御装置１００は、一種のリアルタイムのデータロガーとして機能する。時系列データベース１８０に格納された時系列データは、サポート装置２００や上位システム４００などによって適宜のタイミングで読出されて、解析処理などが実施されてもよい。
【０１３６】
データ検索処理部１８６が省略されるに伴って、データベースアクセス調停処理部１８２についても省略してもよい。
【０１３７】
さらに、装置構成の簡素化に観点からは、同期した時刻を時系列データに付与するような、タイムスタンプの記録機能を省略してもよい。
【０１３８】
このような簡素化した構成を採用することで、制御サイクルに同期した時系列データの収集を実現しつつ、コストの増加などを抑制できる。
【０１３９】
＜Ｉ．まとめ＞
一般的な制御装置は、センサから計測値を取得し、取得した計測値に基づいて制御演算を実行することで指令値を決定し、決定した指令値を各種アクチュエータへ出力するといった、一連の処理をサイクリック実行する。このようなサイクリック実行される周期を短くして、処理を高速化したいというニーズがある。このような処理の高速化によって、高速に変化または移動するような観測対象および制御対象に追従できる。また、より高精度な監視や制御が可能になる。このような処理の高速化を実現するにあたって、プロセッサにより高速かつ高い安定度でプログラムを繰返し実行する必要がある。
【０１４０】
また、処理の高速化に加えて、制御演算の内容自体の複雑化および高度化に要求もある。上述したような、従来の入力処理、制御演算処理、出力処理をサイクリックに実行しつつ、高度化した制御演算を並列的に実行するために、プロセッサおよびプロセッサに関連する回路も高機能化している。
【０１４１】
このような高度化した制御演算の一つとして、より多くの情報を収集して、各種解析に利用したいというニーズがある。より多くの情報を収集するにあたって、入力データがいつの時点の値であるかを特定するための情報が重要になっている。
【０１４２】
このような課題に対して、本実施の形態に係る制御装置は、高い性能および高い汎用性を維持しつつ、格納される時系列データに付与される時刻精度を向上させることで、従来は専用機が必須だった計測器アプリケーションであっても、汎用的なコントローラによる実現が可能になった。
【０１４３】
さらに、本実施の形態に係る制御装置は、汎用コントローラによる計測器アプリケーション実現に加えて、機械への計測機能の組込みを容易とすることに加え、拡張性を計測器アプリケーションに与えることが可能である。このように、従来の制御装置においては、時間軸に沿ったデータの蓄積および解析を行うための機能が不足していたという課題に対して、本実施の形態に係る制御装置は、搭載した時系列データベースに格納された時系列データの活用を可能とし、計測器アプリケーションをはじめとする時系列データを活用する任意のアプリケーションの実装を可能にする。
【０１４４】
また、近年、大量のフィールドデータを収集して活用することで、制御演算のさらなる高度化を図りたいとうニーズがある。このようなさらに高度化された制御演算としては、以下のようなものがある。
【０１４５】
・機器の故障を予知して事前に処置可能とすることで、設備や装置のダウンタイムを低減する。
【０１４６】
・大量のフィールドからのデータに基づいて、制御対象をより正確に反映したモデルを作成、そのモデルに基づく応答特性などを制御演算にフィードバックすることで、より高精度な制御を実現する。
【０１４７】
大量のデータを収集および蓄積し、さらにコントローラ上またはコントローラ外のアプリケーションにおいてそれらの大量のデータを利用するにあたって、既存のコントローラでは機能不足であった。これに対して、本実施の形態に従う制御装置においては、制御演算に対する影響を最小限に抑制しつつ、大量のデータの収集および蓄積、ならびに、それらのデータを各種アプリケーションで利用することを可能とする。これにより、大量のフィールドからのデータを活用できるより高機能な制御装置を提供できる。
【０１４８】
本実施の形態に係る制御装置は、通常の制御演算を行うとともに、搭載した時系列データベースにフィールドから得られる時系列データを格納できる。既存のデータロガーは、データを収集することのみが想定されており、収集したデータを事後的に取出して解析するような用途のみが想定されていた。
【０１４９】
一般的なデータベースは、大容量のストレージを有するサーバ装置などを用いて実現されるものであり、制御演算を担当する制御装置のように、制御サイクルを維持したサイクリック実行を実現するためのリソース管理は必要とされない。これに対して、本実施の形態に係る制御装置は、本来の制御演算のサイクリック実行を実現しつつ、時系列データの収集を行うために必要な機能および処理が実装されている。
【０１５０】
また、フィールドからデータを収集して上位のサーバ装置などへ送信する通信装置などでは、フィールドからデータを収集する周期が比較的長く（例えば、秒・分オーダー）、かつ、個々の機器が扱うことのできるデータ量も小さい。これに対して、本実施の形態に係る制御装置は、制御演算が繰返し実行される周期であるシステム周期（ミリ秒・マイクロ秒オーダー）でのデータ収集が可能であり、また、より大容量のデータの収集が可能である。
【０１５１】
本実施の形態に係る制御装置は、時系列データベースを有しており、制御装置での制御プログラムの実行周期と同期して時系列データを時系列データベースへ格納することができる。すなわち、データベースが搭載された、ソフトウェア実装されたＰＬＣエンジンにより実現された統合型コントローラが提供される。このような構成を採用することで、以下のようなメリットを享受できる。
【０１５２】
（１）制御演算と同期して、高速かつデータ抜けのないロギングが可能である。
（２）ストレージの階層構造を有する時系列データベースを採用することで速度および容量を効率化できる。
【０１５３】
（３）オンザフライでの入力および出力処理まで拡張可能なロギング機能を提供できる。
【０１５４】
（４）ユーザプログラム上で、収集した生データの加工、解析、格納を規定できる柔軟なロギング機能（プログラム可能な計測機）を提供できる。
【０１５５】
（５）ＡＩエンジンや統計処理機能などとの接続が容易な時系列データベース（ロギング）を提供できる。
【０１５６】
（６）リング機能、メディア寿命、電源断対策の組込み機器に必要な機能を有する時系列データベースを提供できる。
【０１５７】
（７）複数の制御装置および／または機器間で同期した時刻情報をタイムスタンプに用いる時系列データベースを提供できる。このような時系列データベースを採用することで、複数の時系列データの統合利用が容易化する。
【０１５８】
（８）データベースの利用目的毎に処理性能の振り分け（Ｑｕｏｔａ）を設定可能な機能を提供できる。
【０１５９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１６０】
１  制御システム、２  第１フィールドバス、４  第２フィールドバス、６  フィールド装置群、８  コントローラ間通信ネットワーク、１２  リモートＩ／Ｏ装置、１４  リレー群、１６，１２４  Ｉ／Ｏユニット、１８  画像センサ、２０  カメラ、２２  サーボドライバ、２４  サーボモータ、６１  出力機器、６２  入力機器、１００  制御装置、１０２  プロセッサ、１０４  チップセット、１０６  主記憶装置、１０８  二次記憶装置、１１０  ネットワークコントローラ、１１２  ＵＳＢコントローラ、１１４  メモリカードインターフェイス、１１６  メモリカード、１１８，１２０  フィールドバスコントローラ、１２２  ローカルバスコントローラ、１５０  ＰＬＣエンジン、１５２  制御プログラム、１５４  ユーザプログラム、１５６  データベース書込みプログラム、１５８  シリアライズ通信プログラム、１６０  システムプログラム、１６２  スケジューラプログラム、１６４  入力プログラム、１６６  出力プログラム、１６８，６１１，６２１  時刻管理部、１７０  入出力処理部、１７２  データ書込み要求元、１７４  データ受取り先、１７６  バッファ、１８０  時系列データベース、１８２  データベースアクセス調停処理部、１８４  データ格納処理部、１８６  データ検索処理部、１８８  内蔵ストレージ、１８９  外付けストレージ、１９０，２１０  アプリケーション、２００  サポート装置、３００  表示装置、４００  上位システム、１５４１  シーケンス演算、１５４２  モーション演算。
【図１】
2018151726.tif 000003
【図２】
2018151726.tif 000004
【図３】
2018151726.tif 000005
【図４】
2018151726.tif 000006
【図５】
2018151726.tif 000007
【図６】
2018151726.tif 000008
【図７】
2018151726.tif 000009
【図８】
2018151726.tif 000010
【図９】
2018151726.tif 000011
【図１０】
2018151726.tif 000012
【図１１】
2018151726.tif 000013
【手続補正書】
【提出日】平成30年1月4日(2018.1.4)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００９９
【補正方法】変更
【補正の内容】
【００９９】
入出力処理部１７０におけるデータ書込み要求元１７２およびデータ受取り先１７４の関係を適切に構築することで、例えば、時系列データベース１８０に格納された時系列データを同時に１または複数のプログラム（データ加工処理）１９２へ渡すように構成することもできる。図６（Ａ）に示す例においては、入出力処理部１７０は、何らかのデータ書込み要求を受信すると、対象の時系列データを時系列データベース１８０へ格納するとともに、その時系列データをプログラム（データ加工処理）１９２へも渡すことができる。プログラム（データ加工処理）１９２としては、例えば、フィールドから収集される時系列データに基づいて、何らかの異常の兆候を検出するような処理を実行するようなものが想定される。この結果、高いリアルタイム性を維持しつつ時系列データ群を解析し、その解析結果を制御にフィードバックするようなアプリケーションの構築を容易に行うことができる。
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図２
【補正方法】変更
【補正の内容】
【図２】
2018151726.tif 000014
【手続補正書】
【提出日】平成30年2月15日(2018.2.15)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００６２
【補正方法】変更
【補正の内容】
【００６２】
このように、入出力処理部１７０は、データベース書込みプログラム１５６から時系列データベース１８０へのデータ書込み要求を受付けて蓄積し、時系列データベース１８０へ順次格納する。システムプログラム１６０および制御プログラム１５２が実行する制御サイクルでの処理への影響を与えないように動作する。複数のデータの供給者であるデータ書込み要求元（Publisher）１７２と、購読者であるデータ受取り先（Subscriber）１７４を存在させるとともに、それらを任意に関連付けることができる。制御サイクルの一例として、制御サイクル毎にデータベース書込みプログラム１５６が実行されて、時系列データベース１８０へ時系列データを順次格納するようにしてもよい。さらに、他のデータベースやアプリケーションへのデータ供給、あるいは、制御プログラム以外のアプリケーションからの入力受付への対応も柔軟に行うことができる。入出力処理部１７０の詳細な処理については、後述する。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００６６
【補正方法】変更
【補正の内容】
【００６６】
データ格納処理部１８４は、入出力処理部１７０を介したデータベースへのデータ書込み要求に従って、入力された時系列データを、内蔵ストレージ１８８または外付けストレージ１８９の指定されたレコードに追加する。データ格納処理部１８４は、時系列データの格納先として複数のストレージを使い分けることもできる。データ格納処理部１８４は、古いデータを削除することでデータベースのデータ量（ストレージ使用量）を一定以下に保つリング動作を設定することもできる。データ格納処理部１８４は、制御装置１００電源遮断時に、データベースを破損させないようなデータベース書込みも可能である。