(57)【要約】【課題】制御対象に関するデータを収集および格納する機能を搭載した制御装置において、事後的な分析や解析を容易にするための仕組みを提供する。【解決手段】制御対象を制御する制御装置が提供される。制御装置は、時刻を管理する時刻管理部と、１つ以上のデバイスとの間で同期されたカウンタと、カウンタが示すタイミングに従って制御演算を実行する制御演算部と、制御演算部が利用可能である、制御対象に関連する観測値と、時刻管理部が示す当該観測値に対応付けられた時刻およびカウンタが示す当該観測値に対応付けられたカウンタ値とを含む、レコードを生成するレコード生成手段とを含む。【選択図】図７
2018151918.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御する制御装置であって、
時刻を管理する時刻管理部と、
１つ以上のデバイスとの間で同期されたカウンタと、
前記カウンタが示すタイミングに従って制御演算を実行する制御演算部と、
前記制御演算部が利用可能である、前記制御対象に関連する観測値と、前記時刻管理部が示す当該観測値に対応付けられた時刻および前記カウンタが示す当該観測値に対応付けられたカウンタ値とを含む、レコードを生成するレコード生成手段とを備える、制御装置。
【請求項２】
前記カウンタは、
前記制御演算の実行タイミングを管理する第１のカウンタと、
他の制御装置と接続するための定周期通信を行うバスまたはネットワークにおけるデータ通信タイミングを管理する第２のカウンタとを含み、
前記制御装置は、前記１つ以上のデバイスのカウンタが示すカウンタ値を前記第２のカウンタが示すカウンタ値と一致させるための指令を前記１つ以上のデバイスへ与える同期管理部をさらに備える、請求項１に記載の制御装置。
【請求項３】
前記レコード生成手段は、レコードを生成するたびに更新される第１のインデックス値を前記レコードに付加する、請求項１または２に記載の制御装置。
【請求項４】
前記レコード生成手段により生成されるレコードを時系列に格納する時系列データベースをさらに備える、請求項１〜３のいずれか１項に記載の制御装置。
【請求項５】
前記時系列データベースは、前記レコードを格納するたびに更新される第２のインデックス値を前記レコードにさらに付加した上で時系列に格納する、請求項４に記載の制御装置。
【請求項６】
前記観測値は、前記制御対象から取得される入力データと、取得した入力データに基づく制御演算により決定される前記制御対象に対する出力データと、前記制御演算の過程において算出される演算データとのうち、少なくとも１つを含む、請求項１〜５のいずれか１項に記載の制御装置。
【請求項７】
前記レコード生成手段は、予め定められた条件が満たされた場合に対応するイベントを発生させるとともに、当該イベントが発生したタイミングを示す前記カウンタが示すカウンタ値を当該発生したイベントの内容と対応付けたレコードをさらに生成する、請求項１〜６のいずれか１項に記載の制御装置。
【請求項８】
前記レコードは、前記観測値に対応付けられた時刻およびカウンタ値をＫｅｙとして含むとともに、対応するＶａｌｕｅとして前記観測値を含む、請求項１〜７のいずれか１項に記載の制御装置。
【請求項９】
時刻を管理する時刻管理部および他のデバイスとの間で同期されたカウンタを有する制御装置により生成されるデータのデータ構造であって、
制御対象に関連する観測値と、前記時刻管理部が示す当該観測値に対応付けられた時刻と、前記カウンタが示す当該観測値に対応付けられたカウンタ値とを含む、データ構造。
【請求項１０】
制御対象を制御する制御装置を含む制御システムにおける情報処理方法であって、
時刻を管理するステップと、
１つ以上のデバイスとの間で同期されたカウンタが示すタイミングに従って、制御演算を実行するステップと、
前記制御対象に関連する観測値と、当該観測値に対応付けられた時刻および当該観測値に対応付けられたカウンタ値とを含む、レコードを生成して時系列に格納するステップと、
時系列に格納されたレコードに含まれるカウンタ値に基づいて、他の時系列に格納されたレコードとの間でタイミングを合せた上でデータを集約するステップとを備える、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象に関するデータを収集および格納する機能を有する制御装置に関する。
【背景技術】
【０００２】
様々な生産現場において、ＰＬＣ（プログラマブルコントローラ）などの制御装置を用いたＦＡ（Factory Automation）技術が広く普及している。このような制御装置が取り扱うデータを事後的に解析するようなニーズがある。
【０００３】
ＩＣＴ（Information and Communication Technology）の進歩によって、制御装置においても大量のデータを収集および格納することが可能になりつつある。このような状況において、特開２０１５−２１９６１６号公報（特許文献１）は、コントローラと上位データ処理装置との間の通信データ量を少なくしてネットワークや各機器の大容量化、必要以上の高機能化を抑制する技術を開示する。より具体的には、特開２０１５−２１９６１６号公報（特許文献１）は、基準時刻情報と基準時刻情報に対応する基準時刻カウンタとからなる時刻カウンタ同期情報、ならびに、実行単位時間毎にインクリメントされる時刻カウンタがプラント機器状態データに付加された時刻カウンタ付きプラント機器状態データをデータ処理装置に送信する構成を開示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−２１９６１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特開２０１５−２１９６１６号公報（特許文献１）に開示される目的とは逆に、より大量のデータを収集したいというニーズがある。このようなニーズに対して、様々なデバイスから収集したデータを制御装置に集約するためのシステムが開発されつつある。
【０００６】
一方で、複数のデバイスがそれぞれ収集したデータを集約して解析する際には、厳密な時刻同期が必要となることも多く、特開２０１５−２１９６１６号公報（特許文献１）に開示される技術では、解析に必要な時刻精度などを十分に得ることができない。
【０００７】
本発明は、上述したようなニーズを実現するために、制御対象に関するデータを収集および格納する機能を搭載した制御装置において、事後的な分析や解析を容易にするための仕組みを提供することを一つの目的としている。
【課題を解決するための手段】
【０００８】
本発明のある局面に従えば、制御対象を制御する制御装置が提供される。制御装置は、時刻を管理する時刻管理部と、１つ以上のデバイスとの間で同期されたカウンタと、カウンタが示すタイミングに従って制御演算を実行する制御演算部と、制御演算部が利用可能である、制御対象に関連する観測値と、時刻管理部が示す当該観測値に対応付けられた時刻およびカウンタが示す当該観測値に対応付けられたカウンタ値とを含む、レコードを生成するレコード生成手段とを含む。
【０００９】
この局面によれば、時刻およびカウンタ値が対応付けられた観測値を収集することができる。このような観測値を時系列に収集しておくことで、事後的に観測値を解析するにあたって、時刻を基準としてデータ解析を行うこともできるとともに、より精度の高いカウンタ値を基準としてデータ解析を行うこともできる。これによって、時刻同期のための複雑な処理などが必要ではないので、リソースの少ないハードウェアであっても、より正確なデータ解析を実現できる。
【００１０】
好ましくは、カウンタは、制御演算の実行タイミングを管理する第１のカウンタと、他の制御装置と接続するための定周期通信を行うバスまたはネットワークにおけるデータ通信タイミングを管理する第２のカウンタとを含む。制御装置は、１つ以上のデバイスのカウンタが示すカウンタ値を第２のカウンタが示すカウンタ値と一致させるための指令を１つ以上のデバイスへ与える同期管理部をさらに含む。
【００１１】
この局面によれば、第１のカウンタからのカウンタ値に従って、制御演算の実行タイミングを正確に制御できるとともに、この制御演算の実行タイミングに対応して、１つ以上のデバイスとの間の通信も同期させることができる。このようなカウンタを設けることによって、時刻を管理するリソースが少ないハードウェアであっても、より正確なデータ解析を実現できる。
【００１２】
好ましくは、レコード生成手段は、レコードを生成するたびに更新される第１のインデックス値をレコードに付加する。
【００１３】
この局面によれば、レコードに付加される第１のインデックス値の更新状況を事後的に解析することで、レコードの生成処理において発生し得る異常を検知できる。このような第１のインデックス値の更新処理および付加処理を採用することで、レコードの生成処理において発生し得る異常を常時監視する必要がなくなり、レコードの生成処理に必要なハードウェアのリソースを低減できる。
【００１４】
好ましくは、制御装置は、レコード生成手段により生成されるレコードを時系列に格納する時系列データベースをさらに含む。
【００１５】
この局面によれば、制御装置内の時系列データベースに格納されたレコードの参照が容易化する。このような構成を採用することで、制御装置の外部に時系列データベースを配置する場合に比較して、レコードを格納および参照するためのハードウェアリソースを低減できる。
【００１６】
好ましくは、時系列データベースは、レコードを格納するたびに更新される第２のインデックス値をレコードにさらに付加した上で時系列に格納する。
【００１７】
この局面によれば、レコードに付加される第２のインデックス値の更新状況を事後的に解析することで、レコードの格納処理において発生し得る異常を検知できる。このような第１のインデックス値の更新処理および付加処理を採用することで、レコードの格納処理において発生し得る異常を常時監視する必要がなくなり、レコードの格納処理に必要なハードウェアのリソースを低減できる。
【００１８】
好ましくは、観測値は、制御対象から取得される入力データと、取得した入力データに基づく制御演算により決定される制御対象に対する出力データと、制御演算の過程において算出される演算データとのうち、少なくとも１つを含む。
【００１９】
この局面によれば、観測値としては、制御演算部が利用可能な任意のデータを採用することができ、これらのデータの時間的な関係をより正確に確定することができる。
【００２０】
好ましくは、レコード生成手段は、予め定められた条件が満たされた場合に対応するイベントを発生させるとともに、当該イベントが発生したタイミングを示すカウンタが示すカウンタ値を当該発生したイベントの内容と対応付けたレコードをさらに生成する。
【００２１】
この局面によれば、何らかのイベントが発生したタイミングおよびその近傍において、収集されていた観測値を容易に特定することができ、当該発生したイベントの原因究明などをより容易化できる。何らかのイベントが発生しときに、その発生したイベントの内容と対応するカウンタ値とを格納すればよいので、すべてのイベントを格納する場合に比較して、必要なハードウェアリソースを低減できる。
【００２２】
好ましくは、レコードは、観測値に対応付けられた時刻およびカウンタ値をＫｅｙとして含むとともに、対応するＶａｌｕｅとして観測値を含む。
【００２３】
この局面によれば、多数のレコードが格納された場合であっても、カウンタ値を検索キーとして目的の観測値を特定することができる。このようなＫｅｙ−Ｖａｌｕｅ型のレコードを採用することで、観測値を検索するのに必要なハードウェアリソースを低減できる。
【００２４】
本発明の別の局面に従えば、時刻を管理する時刻管理部および他のデバイスとの間で同期されたカウンタを有する制御装置により生成されるデータのデータ構造が提供される。データ構造は、制御対象に関連する観測値と、時刻管理部が示す当該観測値に対応付けられた時刻と、カウンタが示す当該観測値に対応付けられたカウンタ値とを含む。
【００２５】
この局面によれば、時刻およびカウンタ値が対応付けられた観測値を収集することができる。このような観測値を時系列に収集しておくことで、事後的に観測値を解析するにあたって、時刻を基準としてデータ解析を行うこともできるとともに、より精度の高いカウンタ値と基準としてデータ解析を行うこともできる。これによって、時刻同期のための複雑な処理などが必要ではないので、リソースの少ないハードウェアであっても、より正確なデータ解析を実現できる。
【００２６】
本発明のさらに別の局面に従えば、制御対象を制御する制御装置を含む制御システムにおける情報処理方法が提供される。情報処理方法は、時刻を管理するステップと、１つ以上のデバイスとの間で同期されたカウンタが示すタイミングに従って、制御演算を実行するステップと、制御対象に関連する観測値と、当該観測値に対応付けられた時刻および当該観測値に対応付けられたカウンタ値とを含む、レコードを生成して時系列に格納するステップと、時系列に格納されたレコードに含まれるカウンタ値に基づいて、他の時系列に格納されたレコードとの間でタイミングを合せた上でデータを集約するステップとを含む。
【００２７】
この局面によれば、時刻およびカウンタ値が対応付けられた観測値を収集することができる。このような観測値を時系列に収集しておくことで、事後的に観測値を解析するにあたって、時刻を基準としてデータ解析を行うこともできるとともに、より精度の高いカウンタ値と基準としてデータ解析を行うこともできる。これによって、時刻同期のための複雑な処理などが必要ではないので、リソースの少ないハードウェアであっても、より正確なデータ解析を実現できる。
【発明の効果】
【００２８】
本発明によれば、制御対象に関するデータを収集および格納する機能を搭載した制御装置において、事後的な分析や解析を容易化できる。
【図面の簡単な説明】
【００２９】
【図１】本実施の形態に係る制御システムの全体構成例を示す模式図である。
【図２】本実施の形態の変形例に係る制御システムの全体構成例を示す模式図である。
【図３】本実施の形態に係る制御システムを構成する制御装置のハードウェア構成例を示すブロック図である。
【図４】本実施の形態に係る制御システムを構成する制御装置のソフトウェア構成例を示すブロック図である。
【図５】本実施の形態に係る制御装置が管理する時刻およびカウンタの一例を示す模式図である。
【図６】図５に示す制御装置が管理する時刻およびカウンタ値の時間的変化の一例を示す図である。
【図７】本実施の形態に係る制御装置の時系列データベースに格納される時系列データ１８２のデータ構造の一例を示す図である。
【図８】本実施の形態に係る制御装置の時系列データベースに格納される時系列データを用いたアプリケーションの一例を説明するための図である。
【図９】図２に示す制御システムの要部を示す模式図である。
【図１０】図９に示す制御システムにおいて制御装置に集約される時系列データの一例を示す模式図である。
【図１１】本実施の形態に係る制御装置が外部システムに時系列データを送信する場合の処理例を示す模式図である。
【図１２】本実施の形態に係る制御装置の時系列データベースに格納される時系列データおよびイベントデータに対する処理を説明するための図である。
【図１３】本実施の形態に係る制御装置の時系列データベースに格納される時系列データの一例を示す模式図である。
【図１４】図１３に示す時系列データから時刻補償を行う処理を説明するための図である。
【図１５】本実施の形態に係る制御装置における時系列データの処理例を示す模式図である。
【図１６】図１５に示す時系列データの処理例におけるデータ欠落を検知するための処理例を説明するための模式図である。
【図１７】本実施の形態に係る制御装置における時系列データの生成および格納に係る処理手順を示すフローチャートである。
【図１８】本実施の形態に係る制御装置における時系列データの集約に係る処理手順を示すフローチャートである。
【発明を実施するための形態】
【００３０】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００３１】
＜Ａ．制御システムの全体構成例＞
まず、本実施の形態に係る制御装置を含む制御システム１の全体構成例について説明する。
【００３２】
図１は、本実施の形態に係る制御システム１の全体構成例を示す模式図である。図１を参照して、本実施の形態に係る制御システム１は、主たる構成要素として、制御対象を制御する制御装置１００を含む。
【００３３】
制御装置１００は、ＰＬＣ（プログラマブルコントローラ）などの、一種のコンピュータとして具現化されてもよい。制御装置１００は、フィールドバス２を介してフィールド装置群８と接続されるとともに、フィールドバス４を介して１または複数の表示装置３００と接続される。制御装置１００は、それぞれのバスまたはネットワークを介して、接続された装置との間でデータを遣り取りする。一般的に「フィールドバス」は、「フィールドネットワーク」とも称されるが、説明の簡素化のため、以下の説明においては、「フィールドバス」と総称する。すなわち、本明細書の「フィールドバス」は、「フィールドバス」に加えて「フィールドネットワーク」を含み得る。
【００３４】
制御装置１００は、製造装置や設備を制御するための各種演算を実行する制御演算機能を有している。制御装置１００は、制御演算機能に加えて、フィールド装置群８にて計測され、制御装置１００へ転送されるデータ（以下、「入力データ」とも称す。）や制御演算機能によって算出される各種のデータを取得する入出力機能を有している。
【００３５】
制御装置１００は、時系列データベース１８０をさらに有している。時系列データベース１８０は、後述するように、入出力機能により取得される各種データを時系列に格納する。以下の説明においては、「データベース」を「ＤＢ」とも記す。
【００３６】
より具体的には、制御装置１００は、指定されたデータを含むレコードを生成するレコード生成機能を有しており、時系列データベース１８０は、レコード生成機能により生成されるレコードを時系列に格納する。
【００３７】
時系列データベース１８０に格納されるデータあるいはレコードを「時系列データ」とも称す。本明細書において、「時系列データ」は、任意の対象についてのデータ（観測値）の時間的な変化を連続的（あるいは、一定間隔をおいて不連続）に観測して得られる一連の値を意味する。
【００３８】
本明細書において「観測値」は、制御装置１００での制御演算において利用可能な値（実値）を総称する概念であり、典型的には、制御対象から取得されて制御演算に入力される値（フィールドから取得された測定値など）、取得された入力値に基づいて制御演算によって決定される制御対象に対する出力値（フィールドへ与えられる指令値など）、制御演算の過程において算出される演算値（任意の変数値）などを含み得る。すなわち、「観測値」は、制御装置１００においてデータとして格納できる、あるいは、制御装置１００からデータとして外部出力できる任意の値を包含するものである。
【００３９】
フィールドバス２およびフィールドバス４は、データの到達時間が保証される、定周期通信を行うバスまたはネットワークを採用することが好ましい。このような定周期通信を行うバスまたはネットワークとしては、ＥｔｈｅｒＣＡＴ（登録商標）、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などが知られている。
【００４０】
フィールド装置群８は、制御対象または制御に関連する製造装置や生産ラインなど（以下、「フィールド」とも総称する。）から入力データを収集する装置を含む。このような入力データを収集する装置としては、入力リレーや各種センサ（例えば、アナログセンサ、温度センサ、振動センサなど）などが想定される。フィールド装置群８は、さらに、制御装置１００にて生成される指令（以下、「出力データ」とも称す。）に基づいて、フィールドに対して何らかの作用を与える装置を含む。このようなフィールドに対して何らかの作用を与える装置としては、出力リレー、コンタクタ、サーボドライバおよびサーボモータ、その他任意のアクチュエータが想定される。
【００４１】
フィールド装置群８は、フィールドバス２を介して、制御装置１００との間で、入力データおよび出力データを含むデータを遣り取りする。図１に示す構成例においては、フィールド装置群８は、リモートＩ／Ｏ（Input/Output）装置１２と、リレー群１４と、画像センサ１８およびカメラ２０と、サーボドライバ２２およびサーボモータ２４とを含む。フィールド装置群８としては、これらに限られることなく、入力データを収集できるデバイス、または、出力データに基づく何らかのアクションができるデバイスであれば、どのようなものを採用してもよい。
【００４２】
リモートＩ／Ｏ装置１２は、フィールドバス２を介して通信を行う通信カプラと、入力データの取得および出力データの出力を行うための入出力部（以下、「Ｉ／Ｏユニット」とも称す。）とを含む。このようなＩ／Ｏユニットを介して、制御装置１００とフィールドとの間で入力データおよび出力データが遣り取りされる。図１には、リレー群１４を介して、入力データおよび出力データとして、デジタル信号が遣り取りされる例が示されている。
【００４３】
Ｉ／Ｏユニットは、フィールドバスに直接接続されるようにしてもよい。図１には、フィールドバス２にＩ／Ｏユニット１６が直接接続されている例を示す。
【００４４】
画像センサ１８は、カメラ２０によって撮像された画像データに対して、パターンマッチングなどの画像計測処理を行って、その処理結果を制御装置１００へ出力する。
【００４５】
サーボドライバ２２は、制御装置１００からの出力データ（例えば、位置指令や速度指令など）に従って、サーボモータ２４を駆動する。
【００４６】
上述のように、フィールドバス２を介して、制御装置１００とフィールド装置群８との間でデータが遣り取りされることになるが、これらの遣り取りされるデータは、数１００μｓｅｃオーダ〜数１０ｍｓｅｃオーダのごく短い周期で更新されることになる。なお、このような遣り取りされるデータの更新処理は、Ｉ／Ｏリフレッシュ処理とも称される。
【００４７】
また、フィールドバス４を介して制御装置１００と接続される表示装置３００は、ユーザからの操作を受けて、制御装置１００に対してユーザ操作に応じたコマンドなどを出力するとともに、制御装置１００での演算結果などをグラフィカルに表示する。
【００４８】
制御装置１００には、サポート装置２００が接続可能になっている。サポート装置２００は、制御装置１００が制御対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置２００は、制御装置１００で実行されるプログラムの開発環境（プログラム作成編集ツール、パーサ、コンパイラなど）、制御装置１００および制御装置１００に接続される各種デバイスのパラメータ（コンフィギュレーション）を設定するための設定環境、生成したユーザプログラムを制御装置１００へ出力する機能、制御装置１００上で実行されるユーザプログラムなどをオンラインで修正・変更する機能、などを提供する。
【００４９】
制御装置１００は、さらに、入出力機能により取得されたデータおよび／または時系列データベース１８０に格納されたデータを外部装置へ出力するゲートウェイ機能も有している。
【００５０】
外部装置として、図１には、制御装置１００と上位ネットワーク６を介して接続される、製造実行システム（ＭＥＳ：Manufacturing Execution System）４００およびＩｏＴ（Internet of Things）サービス４５０を典型例として示す。制御装置１００は、これらの外部システムや外部サービスに対して、制御対象の製造装置や設備からの情報を提供することができる。
【００５１】
製造実行システム４００は、制御対象の製造装置や設備からの情報を取得して、生産全体を監視および管理するものであり、オーダ情報、品質情報、出荷情報などを扱うこともできる。製造実行システム４００の内部、あるいは、製造実行システム４００と並列して、情報を格納するためのデータベースを配置してもよい。制御装置１００は、制御対象の製造装置や設備での製造状態などを示す製造データを製造実行システム４００から取得することができる。
【００５２】
ＩｏＴサービス４５０は、上位ネットワーク６に接続された、あるいは、上位ネットワーク６に接続されるインターネットに接続された、１または複数のコンピュータで構成される、一種のクラウドサービスが想定される。ＩｏＴサービス４５０を構成するシステムは、通信機能を有しており、制御装置１００から送信された任意の情報を１または複数のプロセッサ（例えば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro-Processing Unit）、ＧＰＵ（Graphics Processing Unit）など）で処理するとともに、所定の出力を行うシステムをいう。
【００５３】
ＩｏＴサービス４５０としては、制御対象の製造装置や設備からの情報を取得して、マクロ的またはミクロ的な分析などを行うシステムを想定している。例えば、制御対象の製造装置や設備からの情報に含まれる何らかの特徴的な傾向を抽出するデータマイニングや、制御対象の設備や機械からの情報に基づく機械学習を行うための機械学習ツールなどが想定される。
【００５４】
制御装置１００は、他の制御装置１００と通信可能に接続されることもある。
図２は、本実施の形態の変形例に係る制御システム１Ａの全体構成例を示す模式図である。図２に示す制御システム１Ａにおいては、図１に示す制御システム１に比較して、フィールドバス２に２つの制御装置１００Ａ，１００Ｂが接続されている点が異なっている。
【００５５】
一例として、制御装置１００Ａ，１００Ｂの各々には、リモートＩ／Ｏ装置１２が接続されており、リモートＩ／Ｏ装置１２を介してフィールドからの入力データの収集およびフィールドへの出力データの出力を行う。
【００５６】
また、制御装置１００Ａ，１００Ｂの各々は、制御装置１００と同様に、時系列データベース１８０を有していてもよい。この場合、制御装置１００Ａ，１００Ｂの時系列データベース１８０に格納される時系列データは、制御装置１００にて集約されることもある。時系列データベース１８０に格納される時系列データの集約などの処理については、後に詳述する。
【００５７】
＜Ｂ．制御装置のハードウェア構成例＞
次に、本実施の形態に係る制御システム１を構成する制御装置１００のハードウェア構成例について説明する。
【００５８】
図３は、本実施の形態に係る制御システム１を構成する制御装置１００のハードウェア構成例を示すブロック図である。図３を参照して、制御装置１００は、演算処理部および１または複数のＩ／Ｏユニット１２４−１，１２４−２，…を含む。
【００５９】
制御装置１００は、プロセッサ１０２と、チップセット１０４と、主記憶装置１０６と、二次記憶装置１０８と、上位ネットワークコントローラ１１０と、ＵＳＢ（Universal Serial Bus）コントローラ１１２と、メモリカードインターフェイス１１４と、ローカルバスコントローラ１２２と、フィールドバスコントローラ１１８，１２０と、カウンタ１２６と、ＲＴＣ（Real Time Clock）１２８とを含む。
【００６０】
プロセッサ１０２は、ＣＰＵ、ＭＰＵ、ＧＰＵなどで構成され、二次記憶装置１０８に格納された各種プログラムを読出して、主記憶装置１０６に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。二次記憶装置１０８は、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などの不揮発性記憶装置などで構成される。主記憶装置１０６は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの揮発性記憶装置などで構成される。
【００６１】
チップセット１０４は、プロセッサ１０２と各デバイスを制御することで、制御装置１００全体としての処理を実現する。
【００６２】
二次記憶装置１０８には、基本的な機能を実現するためのシステムプログラムに加えて、制御対象の製造装置や設備に応じて作成されるユーザプログラムが格納される。さらに、二次記憶装置１０８には、後述するような時系列データベースも格納される。
【００６３】
上位ネットワークコントローラ１１０は、上位ネットワーク６を介して、製造実行システム４００やＩｏＴサービス４５０（図１参照）などとの間のデータを遣り取りする。ＵＳＢコントローラ１１２は、ＵＳＢ接続を介してサポート装置２００との間のデータの遣り取りを制御する。
【００６４】
メモリカードインターフェイス１１４は、メモリカード１１６を着脱可能に構成されており、メモリカード１１６に対してデータを書込み、メモリカード１１６から各種データ（ユーザプログラムやトレースデータなど）を読出すことが可能になっている。
【００６５】
カウンタ１２６は、制御装置１００における各種処理の実行タイミングを管理するための時刻基準として用いられる。カウンタ１２６は、典型的には、所定周期毎にカウンタ値をインクリメントまたはデクリメントする。カウンタ１２６として、プロセッサ１０２を駆動するシステムバス上に配置された、ハードウェアタイマーである高精度イベントタイマー（ＨＰＥＴ：High Precision Event Timer）などを用いて実装してもよいし、あるいは、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field-Programmable Gate Array）などの専用回路を用いて実装してもよい。
【００６６】
ＲＴＣ１２８は、計時機能を有する一種のカウンタであり、現在時刻をプロセッサ１０２などへ提供する。
【００６７】
ローカルバスコントローラ１２２は、制御装置１００に搭載されるＩ／Ｏユニット１２４−１，１２４−２，…との間でデータを遣り取りするインターフェイスである。ローカルバスコントローラ１２２は、ローカルバスを介して接続される他のデバイスである、Ｉ／Ｏユニット１２４−１，１２４−２，…との間でタイミングを管理するための時刻基準として用いられるカウンタ１２３を有している。同様に、Ｉ／Ｏユニット１２４−１，１２４−２，…の各々も、ローカルバスコントローラ１２２および他のＩ／Ｏユニットとの間でタイミングを管理するための時刻基準として用いられるカウンタ１２５を有している。カウンタ１２３およびカウンタ１２５については、上述のカウンタ１２６と同様の構成を採用できる。
【００６８】
フィールドバスコントローラ１１８は、フィールドバス２を介した他のデバイスとの間のデータの遣り取りを制御する。フィールドバスコントローラ１１８は、他のデバイスとの間でタイミングを管理するための時刻基準として用いられるカウンタ１１９を有している。
【００６９】
同様に、フィールドバスコントローラ１２０は、フィールドバス４を介した他のデバイスとの間でデータを遣り取りする。フィールドバスコントローラ１２０は、他のデバイスとの間でタイミングを管理するための時刻基準として用いられるカウンタ１２１を有している。
【００７０】
また、各デバイスも、フィールドバスコントローラ１１８またはフィールドバスコントローラ１２０との間でタイミングを管理するための時刻基準として用いられるカウンタを有している。
【００７１】
カウンタ１１９およびカウンタ１２１ならびに各デバイスが有するカウンタについては、上述のカウンタ１２６と同様の構成を採用できる。
【００７２】
フィールドバスコントローラ１１８，１２０は、フィールドバスを介した定周期通信を行うための通信マスターとして機能し、フィールドバスに接続されている各デバイスが有するカウンタが示すカウンタ値とカウンタ１１９，１２１が示すカウンタ値との差分を逐次監視して、必要に応じて、カウンタ値にずれが発生しているデバイスに対して補正を指示するための同期信号を出力する。このように、フィールドバスコントローラ１１８，１２０は、デバイスのカウンタが示すカウンタ値をカウンタ１１９，１２１が示すカウンタ値と一致させるための指令をデバイスへ与える同期管理機能を有している。
【００７３】
以下に説明するように、本実施の形態に係る制御装置１００においては、カウンタ１２６は、ＨＰＥＴを用いたカウンタ回路（図５に示すハードウェアカウンタ（Ｃ−ＨＷ）５１６に対応）と、ＦＰＧＡを用いたＨＰＥＴより高精度なカウンタ回路（図５に示す割込みカウンタ（Ｃ−ＩＯＰ）５１２）とを含む。
【００７４】
図３には、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。あるいは、制御装置１００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００７５】
上述の図１および図２に示す制御システムにおいては、制御装置１００、サポート装置２００および表示装置３００がそれぞれ別体として構成されているが、これらの機能の全部または一部を単一の装置に集約するような構成を採用してもよい。
【００７６】
＜Ｃ．制御装置のソフトウェア構成例＞
次に、本実施の形態に係る制御システム１を構成する制御装置１００のソフトウェア構成例について説明する。
【００７７】
図４は、本実施の形態に係る制御システム１を構成する制御装置１００のソフトウェア構成例を示すブロック図である。図４を参照して、制御装置１００は、ＰＬＣエンジン１５０と、時系列データベース１８０と、上位接続プログラム１９２と、ゲートウェイプログラム１９４とを含む。
【００７８】
ＰＬＣエンジン１５０は、典型的には、制御装置１００のプロセッサ１０２が、二次記憶装置１０８に格納されているシステムプログラムを読出して主記憶装置１０６に展開して実行することで各種プログラムの実行環境が提供され、当該実行環境下において、各種プログラムを実行することができる。
【００７９】
より具体的には、ＰＬＣエンジン１５０は、制御プログラム１５２と、変数管理プログラム１６０と、スケジューラプログラム１７０と、入力プログラム１７２と、出力プログラム１７４とを含む。変数管理プログラム１６０と、スケジューラプログラム１７０と、入力プログラム１７２と、出力プログラム１７４とについては、システムプログラムの一部として実装されてもよい。この場合には、これらのプログラムが提供するそれぞれの機能を単一のシステムプログラムが提供するようにしてもよい。
【００８０】
制御プログラム１５２は、典型的には、ユーザプログラム１５４と、データベース書込みプログラム１５６と、シリアライズ通信プログラム１５８とにより構成される。ユーザプログラム１５４は、制御演算機能を提供する主たる部分に相当し、制御装置１００の制御対象の製造装置や設備などに応じて任意に構成することができる。ユーザプログラム１５４は、例えば、ファンクションブロックなどを利用したラダーロジックなどで規定することができる。
【００８１】
データベース書込みプログラム１５６は、ユーザプログラム１５４内に規定された命令によって呼び出され、時系列データベース１８０に対して指定されたデータを書込む。
【００８２】
シリアライズ通信プログラム１５８は、データベース書込みプログラム１５６から時系列データベース１８０に対して書込まれるデータに対してシリアライズ処理を行う。より具体的には、シリアライズ通信プログラム１５８は、時系列データを格納可能なバイト列に変換する処理（シリアライズ）を実行する。対象のデータは、シリアライズ処理により所定のバイト列に変換された上で、時系列データベース１８０内に格納される。なお、時系列データベース１８０へのデータ書込みの速度およびデータ容量などに応じて、必ずしもシリアライズ処理を行う必要はない。すなわち、シリアライズ通信プログラム１５８はオプショナルな構成である。
【００８３】
変数管理プログラム１６０は、ＰＬＣエンジン１５０で利用可能な値を変数の形で管理する。より具体的には、変数管理プログラム１６０は、制御装置１００の状態などを示すシステム変数１６２と、制御装置１００とローカルバスまたはフィールドバスを介して接続される各種デバイスが保持する値を示すデバイス変数１６４と、制御装置１００で実行されるユーザプログラム１５４が保持する値を示すユーザ変数１６６とを管理する。
【００８４】
スケジューラプログラム１７０は、制御装置１００で実行されるプロセスやタスクなどに対してリソース割当てや実行タイミングなどを管理する。
【００８５】
入力プログラム１７２は、制御装置１００とローカルバスまたはフィールドバスを介して接続される各種デバイスから入力データを取得する機能を提供する。
【００８６】
出力プログラム１７４は、制御装置１００において実行されるユーザプログラム１５４によって算出される指令値（出力データ）をローカルバスまたはフィールドバスを介して接続される対象のデバイスへ出力する。
【００８７】
時系列データベース１８０は、典型的には、主記憶装置１０６または二次記憶装置１０８（図３参照）に配置され、データを格納する機能とともに、外部からの要求（クエリ）に応答して、指定されたデータを応答する検索機能を搭載している。時系列データベース１８０は、データベース書込みプログラム１５６により書込まれる時系列データ１８２を格納している。すなわち、時系列データベース１８０は、入力データ、出力データ、制御プログラム１５２による制御演算において算出される演算データ、製造データ、イベントデータの少なくとも一部を時系列に格納する。
【００８８】
なお、制御装置１００が管理する入力データ、出力データ、演算データ、製造データ、イベントデータなどを統計処理した上で、時系列データベース１８０に対して書込みを行う、統計記録プログラムをさらに備えるようにしてもよい。統計処理としては、例えば、断片集約近似（ＰＡＡ：Picewise Aggregate Approximation）や離散ストリングへの記号化（ＳＡＸ：Symbolic Aggregate approximation）などの手法を用いることができる。ＰＡＡは、時系列データからパターンを見つけることができ、発見されたパターンにより圧縮を容易にする。あるいは、ＳＡＸは、時系列データを文字列に変換することで、圧縮およびパターンの発見を容易化できる。
【００８９】
上位接続プログラム１９２は、製造実行システム４００などの上位ネットワーク６に接続された外部装置との間でデータを遣り取りする。本実施の形態に係る制御装置１００においては、制御装置１００から製造実行システム４００に対して入力データや演算データが出力されるとともに、製造実行システム４００から製造情報を受信することができる。このように、上位接続プログラム１９２は、制御対象に関連付けられた製造実行システム４００から製造データを取得する製造データ取得機能を提供する。
【００９０】
製造実行システム４００がデータベースを有しており、あるいは、製造実行システム４００とは別にデータベースが配置されている場合には、上位接続プログラム１９２に代えて、あるいは、上位接続プログラム１９２の一部として、データベース接続プログラムが設けられていてもよい。このようなデータベース接続プログラムは、例えば、リレーショナルデータベースに対してＳＱＬなどのクエリを送信するとともに、応答を受信する処理を実行するようにしてもよい。
【００９１】
ゲートウェイプログラム１９４は、ＩｏＴサービス４５０に対して時系列データを提供する。具体的には、ゲートウェイプログラム１９４は、時系列データベース１８０から、指定された種類のデータを指定された周期で取得して、時系列データとして出力する。ゲートウェイプログラム１９４によりＩｏＴサービス４５０へ出力される時系列データの詳細については後述する。
【００９２】
制御装置１００の入力プログラム１７２は、ローカルバスおよび／またはフィールドバスを介してセンサから入力データを取得する。
【００９３】
制御装置１００の上位接続プログラム１９２は、製造実行システム４００から製造データを取得する。変数管理プログラム１６０は、これらの取得された入力データおよび製造データを変数として管理する。
【００９４】
ユーザプログラム１５４は、変数管理プログラム１６０により管理されるシステム変数１６２、デバイス変数１６４、ユーザ変数１６６を参照しつつ、予め指定された制御演算を実行し、その実行結果（出力データ）を変数管理プログラム１６０に出力する。
【００９５】
出力プログラム１７４は、ユーザプログラム１５４の制御演算によって算出される出力データを制御出力として、ローカルバスおよび／またはフィールドバスを介してアクチュエータへ出力する。
【００９６】
データベース書込みプログラム１５６は、変数管理プログラム１６０により管理される変数のうち指定された観測値を時系列データベース１８０に書込む。
【００９７】
上位接続プログラム１９２は、変数管理プログラム１６０により管理される変数のうち指定された変数の値、および／または、時系列データベース１８０に格納された時系列データ１８２のうち指定されたデータを、時系列データとして製造実行システム４００へ出力する。
【００９８】
ゲートウェイプログラム１９４は、変数管理プログラム１６０により管理される変数のうち指定された変数の値、および／または、時系列データベース１８０に格納された時系列データ１８２のうち指定されたデータを、時系列データとしてＩｏＴサービス４５０へ出力する。ＩｏＴサービス４５０は、制御装置１００からの時系列データに基づいて、挙動解析を行って、制御対象の設備や装置などの予知保全などを行う。
【００９９】
＜Ｄ．時刻同期／カウンタ同期＞
まず、本実施の形態に係る制御装置１００は、時刻およびカウンタを同期させる機能（以下、それぞれ「時刻同期」および「カウンタ同期」とも称す。）を有している。
【０１００】
本明細書において、「時刻」は、時の流れにおけるある一点を示すものを意図し、例えば、時分秒などの単位を用いて規定される。「カウンタ」は、制御装置１００および関連する装置内でタイミングを制御するための値を包含し、基本的には、予め定められた単位時間毎に所定値ずつインクリメントまたはデクリメントされる値（以下では、カウンタが示す値を「カウンタ値」とも称す。）を示す。基本的には、時刻の同期精度は、カウンタの同期精度より劣っている。
【０１０１】
図５は、本実施の形態に係る制御装置１００が管理する時刻およびカウンタの一例を示す模式図である。図５には、制御装置１００および関連する装置が管理する時刻およびカウンタをそれぞれ示す。図５中の「Ｔ−」で始まる変数は「時刻」を示し、「Ｃ−」で始まる変数は「カウンタ」を示す。
【０１０２】
図５を参照して、絶対時刻（Ｔ−Ｗｏｒｌｄ）５０２は、基準の時刻であり、例えば、協定世界時（ＵＴＣ：Coordinated Universal Time）などが用いられる。具体的な実装形態を想定すると、インターネット上などに配置された絶対時刻を管理する時刻同期サーバなどとの間で、ネットワーク時刻同期プロトコル（ＮＴＰ：Network Time Protocol）などのコンピュータシステムの時刻同期スキームが用いられる。例えば、制御装置１００には、上位ネットワーク６を介して上位装置５００が接続されている。上位装置５００は、下位の時刻同期サーバとしての機能を有しており、インターネット上に配置された時刻同期サーバが管理する絶対時刻５０２と同期してシステム時刻（Ｔ−Ｓｙｓｔｅｍ）５０４を内部的に管理する。
【０１０３】
なお、ＮＴＰなどの時刻同期スキームにおいては、時刻同期サーバと時刻を完全に同期させるのではなく、時刻同期サーバから周期的に基準時刻を取得し、その取得された基準時刻と内部的に管理するシステム時刻との差異に応じて、システム時刻が設定または調整される。その結果、時刻同期サーバ（上位装置５００）で管理される時刻の精度はそれほど高くない。
【０１０４】
制御装置１００（図５においては、「ＰＬＣ＃１」および「ＰＬＣ＃２」と記す。）の各々は、上位装置５００の時刻同期サーバとしての機能を利用して、ＯＳ時刻（Ｔ−ＯＳ）５０６を内部的に管理する。より具体的には、制御装置１００のプロセッサ１０２は、起動時または所定イベント毎にＲＴＣ１２８から時刻情報を読出して、主記憶装置１０６上にＯＳ時刻５０６を示すデータを保持するとともに、内部クロックに応じて、当該ＯＳ時刻５０６を示すデータを周期的に更新する。さらに、制御装置１００のプロセッサ１０２は、ＮＴＰなどの時刻同期スキームに従って、ＯＳ時刻５０６の調整が必要であると判断すると、内部的に保持するＯＳ時刻５０６を示すデータを変更する。このように、制御装置１００の各々は、時刻を管理する時刻管理部を有している。
【０１０５】
その結果、ＯＳ時刻５０６は、制御装置１００毎に存在することになる。制御装置１００と上位装置５００との間の時刻同期についても、ＮＴＰなどの時刻同期スキームが利用されることが一般的であるため、何らかのタイミングにおいて時刻が変更されたり、時刻ズレが調整されたりする。その結果、制御装置１００で管理される時刻の精度もそれほど高くない。
【０１０６】
制御装置１００は、ＯＳ時刻５０６に加えて、スケジューラ時刻（Ｔ−Ｓｃｈｅｄ）５０８を管理している。制御装置１００においては、予め定められた制御サイクル毎に最も優先度の高いプログラムがサイクリック実行されている。スケジューラ時刻５０８は、各制御サイクルの開始タイミングの時刻を示す。より具体的には、制御装置１００のプロセッサ１０２は、制御サイクルの開始タイミングを示す割込みに応じて、その割込みが発生したときのＯＳ時刻５０６を示すデータを読出して、スケジューラ時刻５０８を示すデータとして主記憶装置１０６上に保持する。そのため、スケジューラ時刻５０８は、各制御サイクルの開始時において更新され、各制御サイクル内ではその値は変化しない。
【０１０７】
制御装置１００は、実行されるプログラムが利用可能な時刻として、プログラム時刻（Ｔ−ＵＰＧ）５１４を提供する。プログラム時刻５１４は、各制御サイクルの開始タイミングを示すスケジューラ時刻５０８を基準として、ハードウェアカウンタ（Ｃ−ＨＷ）５１６が示すカウンタ値から換算した制御サイクル中の経過時間を加算することで、制御サイクル中の時刻を提供することができる。より具体的には、制御装置１００のプロセッサ１０２は、制御サイクルの開始タイミングを示す割込みが発生した時点を基準として、ハードウェアカウンタ５１６が発生したカウンタ値から経過時間を算出し、算出した経過時間とスケジューラ時刻５０８が示すデータとを加算して、プログラム時刻５１４を示すデータとして主記憶装置１０６上に保持する。ハードウェアカウンタ５１６は、カウンタ１２６（図３参照）により実装されてもよい。
【０１０８】
制御装置１００における制御サイクルの開始タイミングは、割込みカウンタ（Ｃ−ＩＯＰ）５１２によって管理される。すなわち、制御装置１００の制御演算部に相当するプロセッサ１０２は、割込みカウンタ５１２が示すタイミングに従って制御演算を実行する。
【０１０９】
割込みカウンタ５１２は、カウンタ１２６（図３参照）により実装されてもよい。このように、割込みカウンタ５１２は、予め定められた制御サイクル毎に割込みを発生させる、制御演算の実行タイミングを管理するカウンタに相当する。
【０１１０】
制御サイクルカウンタ（Ｃ−Ｃｏｎｔｒｏｌ）５１０は、制御サイクル毎の先頭から開始されるカウンタである。制御サイクルカウンタ５１０は、割込みカウンタ５１２をマスターとして同期するように管理されている。
【０１１１】
割込みカウンタ５１２および制御サイクルカウンタ５１０は、制御装置１００に特有に実装されたカウンタであり、例えば、ＦＰＧＡなどを用いて実装されてもよい。割込みカウンタ５１２および制御サイクルカウンタ５１０は、カウンタ１２６（図３参照）により実装されてもよい。
【０１１２】
制御装置１００において、ローカルバスおよび／またはフィールドバスに接続される各デバイスが管理するカウンタは、制御装置１００の内部カウンタと同期するように構成されている。
【０１１３】
フィールドバスカウンタ（Ｃ−ＦＢｕｓ）５１８は、フィールドバスおよびローカルバスでの同期を行うためのマスターとして機能する。フィールドバスカウンタ５１８は、制御装置１００に特有に実装されたカウンタであり、例えば、ＦＰＧＡなどを用いて実装されてもよい。フィールドバスカウンタ５１８は、カウンタ１１９，１２１（図３参照）により実装されてもよい。
【０１１４】
フィールドバスカウンタ５１８は、制御装置１００が管理するローカルバスカウンタ（Ｃ−ＢＬｏｃａｌ）５２０と、フィールドバス２に接続されているスレーブ装置１０が管理するフィールドバスカウンタ（Ｃ−ＦＢｕｓ）５２４と、フィールドバス２に接続されている通信カプラ１３が管理するフィールドバスカウンタ（Ｃ−ＦＢｕｓ）５２４と同期されている。また、フィールドバスカウンタ５１８自体は、制御サイクルカウンタ５１０と同期されている。
【０１１５】
ローカルバスカウンタ５２０は、制御装置１００に特有に実装されたカウンタであり、例えば、ＦＰＧＡなどを用いて実装されてもよい。ローカルバスカウンタ５２０は、カウンタ１２３（図３参照）により実装されてもよい。
【０１１６】
フィールドバスカウンタ５２４は、制御装置１００と接続するために特有に実装されたカウンタであり、例えば、ＦＰＧＡなどを用いて実装されてもよい。フィールドバスカウンタ５２４は、各デバイスに実装されるカウンタ（図３参照）により実装されてもよい。
【０１１７】
制御装置１００のローカルバス１２９に接続されるＩ／Ｏユニット１２４などが管理するローカルバスカウンタ（Ｃ−ＢＬｏｃａｌ）５２２は、ローカルバスカウンタ５２０と同期されている。ローカルバスカウンタ５２２は、制御装置１００と接続するために特有に実装されたカウンタであり、例えば、ＦＰＧＡなどを用いて実装されてもよい。ローカルバスカウンタ５２２は、各Ｉ／Ｏユニット１２４に実装されるカウンタ１２５（図３参照）により実装されてもよい。
【０１１８】
同様に、制御装置１００のフィールドバス２に接続される通信カプラ１３が管理するリモートバスカウンタ（Ｃ−ＢＲｅｍｏｔｅ）５２６は、通信カプラ１３が管理するフィールドバスカウンタ５２４と同期されている。さらに、通信カプラ１３のリモートバス１２７に接続されるＩ／Ｏユニット１２４などが管理するリモートバスカウンタ（Ｃ−ＢＲｅｍｏｔｅ）５２８は、通信カプラ１３が管理するリモートバスカウンタ５２６と同期されている。リモートバスカウンタ５２６，５２８は、制御装置１００と接続するために特有に実装されたカウンタであり、例えば、ＦＰＧＡなどを用いて実装されてもよい。リモートバスカウンタ５２６，５２８は、各デバイスに実装されるカウンタ（図３参照）により実装されてもよい。
【０１１９】
このように、フィールドバスカウンタ（Ｃ−ＦＢｕｓ）、ローカルバスカウンタ（Ｃ−ＢＬｏｃａｌ）、およびリモートバスカウンタ（Ｃ−ＢＲｅｍｏｔｅ）は、他の制御装置と接続するための定周期通信を行うバスまたはネットワークにおけるデータ通信タイミングを管理するカウンタ（図３に示すカウンタ１１９，１２１，１２３など）に相当する。
【０１２０】
以上のとおり、制御装置１００の内部で管理される、制御サイクルカウンタ５１０および割込みカウンタ５１２は、ローカルバス１２９を介して接続される各デバイスが管理するカウンタ、フィールドバス２を介して接続される各デバイス、フィールドバス２を介して接続されるいずれかのデバイスからリモートバス１２７を介して接続される各デバイスが管理するカウンタと同期されている。したがって、各デバイスにて収集または出力されるタイミングは、互いに同期されたカウンタの値を用いて特定することで、デバイスの接続形態などに依存することなく、相互にタイミングの関係を知ることができる。
【０１２１】
このように、制御装置１００は、１つ以上の装置またはデバイスとの間で同期された１つ以上のカウンタを有している。
【０１２２】
図６は、図５に示す制御装置１００が管理する時刻およびカウンタ値の時間的変化の一例を示す図である。図６（Ａ）には、ＯＳ時刻（Ｔ−ＯＳ）５０６の時間的変化の一例を示す。ＯＳ時刻５０６は、定期的または不定期に時刻補正などがなされる場合がある。
【０１２３】
図６（Ｂ）には、スケジューラ時刻（Ｔ−Ｓｃｈｅｄ）５０８の時間的変化の一例を示す。スケジューラ時刻５０８は、各制御サイクルの開始タイミングにおけるＯＳ時刻５０６がラッチされるようにしてもよい。スケジューラ時刻５０８は、各制御サイクル中の時刻を決定するための基準となるので、同一の制御サイクル中では更新されない。
【０１２４】
図６（Ｃ）には、制御サイクルカウンタ（Ｃ−Ｃｏｎｔｒｏｌ）５１０の時間的変化の一例を示す。制御サイクルカウンタ５１０のカウンタ値は、予め定められたレート（カウント／単位時間）で変化することになる。
【０１２５】
図６（Ｄ）には、フィールドバスカウンタ（Ｃ−ＦＢｕｓ）、ローカルバスカウンタ（Ｃ−ＢＬｏｃａｌ）、およびリモートバスカウンタ（Ｃ−ＢＲｅｍｏｔｅ）の時間的変化の一例を示す。これらのカウンタは、制御サイクルカウンタ５１０と同期されており、制御サイクルカウンタ５１０に生じるカウンタ値の変化と同じ変化を生じるように管理されている。
【０１２６】
本実施の形態に係る制御装置１００においては、これらのカウンタのカウンタ値は、互いに同一になるように調整および管理されているものとする。カウンタ値を互いに同一の値に管理する必要はないが、事後的に時系列データを集約する際の便宜を考慮すると、カウンタ値を互いに揃えることが好ましい。
【０１２７】
制御装置１００および制御装置１００に接続される各デバイスの間では、互いに同期したカウンタを有しているので、例えば、各制御サイクルの開始タイミング（タイミングｔ１，ｔ２，ｔ３，…）の各々を基準として、予め定められた時間ΔＴ後にＩ／Ｏリフレッシュ動作をさせることが可能である。このように、Ｉ／Ｏリフレッシュ動作の実行タイミングを互いに同期させることで、事後的に時系列データを集約した際にも、各収集されたデータのタイミングおよび時刻を保証できる。
【０１２８】
＜Ｅ．データ構造＞
次に、本実施の形態に係る制御装置１００の時系列データベース１８０に格納される時系列データ１８２のデータ構造の一例について説明する。図７は、本実施の形態に係る制御装置１００の時系列データベース１８０に格納される時系列データ１８２のデータ構造の一例を示す図である。
【０１２９】
制御装置１００は、制御対象に関連する観測値と、時刻管理機能によって示される観測値に対応付けられた時刻およびいずれかのカウンタが示す当該観測値に対応付けられたカウンタ値とを含む、レコードを生成するレコード生成機能を有している。観測値は、プロセッサ１０２が利用可能な値である。より具体的には、図７（Ａ）を参照して、制御装置１００から出力される時系列データ１８２を構成するレコードは、時刻フィールド１８２１と、カウンタ値フィールド１８２２と、インデックスフィールド１８２３と、観測値フィールド１８２４とを含む。
【０１３０】
時刻フィールド１８２１およびカウンタ値フィールド１８２２は、対応するデータ（１または複数の観測値）が取得されたタイミングを示す情報が格納される。
【０１３１】
より具体的には、時刻フィールド１８２１には、対応するデータが取得されたタイミングを示す時刻（例えば、図５に示すスケジューラ時刻５０８またはプログラム時刻５１４）が格納される。
【０１３２】
また、カウンタ値フィールド１８２２には、対応するデータが取得されたときの、制御装置１００で管理するカウンタのカウンタ値、または、フィールドバス／ローカルバスにおいてタイミングを管理するためのカウンタのカウンタ値（例えば、図５に示す、フィールドバスカウンタ（Ｃ−ＦＢｕｓ）、ローカルバスカウンタ（Ｃ−ＢＬｏｃａｌ）、リモートバスカウンタ（Ｃ−ＢＲｅｍｏｔｅ）が示すカウンタ値）のうち少なくともいずれか１つが格納される。
【０１３３】
このように、時系列データ１８２を構成するレコードは、制御対象に関連する観測値と、当該観測値に対応付けられた時刻と、当該観測値に対応付けられたカウンタ値とを含むデータ構造を有している。
【０１３４】
本実施の形態に係る制御装置１００においては、時刻フィールド１８２１に時刻を格納するとともに、カウンタ値フィールド１８２２にカウンタ値を格納することで、対応するデータ（観測値）の事後的な解析を支援することができる。この事後的な解析の支援への利用方法については、さらに後述する。
【０１３５】
インデックスフィールド１８２３は、データベースへのレコードの書込み動作などに応じて、所定値だけインクリメント／デクリメントされる値（インデックス値）が格納される。典型的には、レコードが格納される毎に１ずつカウントアップされるような値が用いられる。例えば、ユーザプログラム１５４内にデータベース書込みプログラム１５６を起動する命令が記述されている場合には、その起動する命令の実行に伴ってインデックス値をインクリメントするようにしてもよい。また、時系列データベース１８０が複数用意される場合には、データベース毎に独立したインデックス値を用いるようにしてもよい。
【０１３６】
観測値フィールド１８２４には、指定されたデータ（１または複数の観測値）が格納される。観測値フィールド１８２４に格納されるデータとしては、入力データ、出力データ、演算データ、製造データ、イベントデータなどが含まれる。
【０１３７】
具体的には、入力データとしては、各種センサから取得されたデジタル信号（状態値）やアナログ信号（各種計測信号）などを含む。観測値に加えて、当該観測値を出力したセンサを特定するための情報を併せて格納するようにしてもよい。
【０１３８】
出力データとしては、モーションドライブや開度調節器などに対して出力される指令値などが格納されてもよい。指令値に加えて、指令値の出力先のアクチュエータを特定するための情報を併せて格納するようにしてもよい。
【０１３９】
演算データとしては、ユーザプログラム１５４の実行によって算出される変数値や過渡的な値などが格納されてもよい。変数値や過渡的な値に加えて、当該演算データを出力したユーザプログラム１５４またはタスクなどを特定するための情報を併せて格納するようにしてもよい。
【０１４０】
製造データとしては、製造実行システム４００から受信した実行指令値群（例えば、ワークの品番、ロット番号、レシピ番号など）が格納されてもよい。実行指令値群としては、ワークを一意に特定する識別番号やワークの種類などを特定する情報が含まれていてもよい。
【０１４１】
イベントデータとしては、観測値が予め定められたしきい値を超えたあるいは下回った場合の情報や、予め定められた異常フラグなどがオンした場合の情報が格納されてもよい。イベントデータを発生させた変数などの情報を含めてもよい。
【０１４２】
さらに、イベントデータについては、予め定められた周期で繰返し生成または格納される時系列データではなく、予め定められた条件が満たされた場合に生成してもよい。この場合にも、カウンタ同期されたカウンタ値および／または時刻を対応付けるようにしてもよい。
【０１４３】
上述したようなレコードが制御サイクルまたは所定イベント毎に生成および出力される。例えば、図７（Ｂ）に示す例では、５００μｓｅｃ毎にレコードが生成および出力される例を示す。このように、指定された観測値を含むレコードが時系列に生成および出力されることで、これらの時系列データに基づいて、各種解析を行うことができる。
【０１４４】
図７に示す時系列データ１８２のレコードをＫｅｙ−Ｖａｌｕｅ型で構成してもよい。この場合には、例えば、時刻フィールド１８２１およびカウンタ値フィールド１８２２をＫｅｙとし、インデックスフィールド１８２３および観測値フィールド１８２４をＶａｌｕｅとしてもよい。すなわち、時系列データ１８２のレコードは、観測値に対応付けられた時刻およびカウンタ値をＫｅｙとして含むとともに、対応するＶａｌｕｅとして観測値を含む。
【０１４５】
上述の説明においては、制御装置１００が自装置内に有している時系列データベース１８０にレコードを格納する処理を典型例として説明したが、これに限らず、外部装置へレコードを送信するようにしてもよい。この場合においても、図７に示すようなレコードが制御サイクル毎に生成され、目的の外部装置へ送信される。各レコードには、観測値に対応付けられた時刻およびカウンタ値が格納されているので、制御装置１００から外部装置への伝送遅延があっても、事後的なデータ収集には何らの影響もない。
【０１４６】
＜Ｆ．時系列データを利用する応用例＞
次に、本実施の形態に係る制御装置１００が生成および出力する時系列データ１８２を用いたいくつかの応用例について説明する。
【０１４７】
（ｆ１：単一の時系列データベースの利用）
まず、本実施の形態に係る制御装置１００の時系列データベース１８０に格納される時系列データ１８２を用いたアプリケーションの一例について説明する。図８は、本実施の形態に係る制御装置１００の時系列データベース１８０に格納される時系列データを用いたアプリケーションの一例を説明するための図である。
【０１４８】
図８に示す例では、製造実行システム４００は、制御装置１００の時系列データベース１８０に格納された時系列データ１８２を用いて、品質トレーサビリティなどを実現する。具体的には、時系列データベース１８０に格納された時系列データ１８２に含まれる製造データに基づいて、いずれのワーク（製造物）に対応付けられる時系列データであるかを判別する。判別されたワーク毎の時系列データを発生した時刻順に並べることで、製造時におけるワーク毎の状態を把握することができる。例えば、図８には、「品番００１」のワークに対応付けて複数の時系列データが格納されるとともに、「品番００２」のワークに対応付けて複数の時系列データが格納される例を示す。
【０１４９】
このように、製造実行システム４００は、制御装置１００の時系列データベース１８０に格納された時系列データ１８２に基づいて、品質トレーサビリティに係る情報を生成してもよい。
【０１５０】
品質トレーサビリティに係る情報を生成する際に、時刻およびカウンタの情報を対応付けて、時系列データ内の観測値を処理することで、より時間的に緻密な情報を生成することができる。
【０１５１】
また、図８に示す例では、ＩｏＴサービス４５０は、いわゆるビッグデータ解析を実現する。ＩｏＴサービス４５０には、製造装置／設備１１を制御する制御装置１００からの時系列データだけではなく、別の製造装置／設備１１からの時系列データも出力される。ＩｏＴサービス４５０には、１または複数の製造装置／設備からの時系列データに対して、各種の解析を実施する。このような解析の一例として、時系列分析４６０が示されている。
【０１５２】
ＩｏＴサービス４５０を提供するシステムを構成する１または複数のプロセッサが時系列分析４６０を実行する。時系列分析４６０においては、１または複数のプロセッサが時系列データに対する前処理４６２を実行する。前処理４６２においては、１または複数のプロセッサがストレージに格納された時系列データから特徴量などを抽出して次元を下げる処理、異常値・外れ値を除外する処理などを実行する。さらに、１または複数のプロセッサは、前処理４６２が実施された時系列データに対して、分析処理４６４を実行する。１または複数のプロセッサは、分析処理４６４の結果に基づいてモデリング４６６を実施することで、制御対象の製造装置／設備についてのモデルを生成する。１または複数のプロセッサは、生成したモデル（関数またはパラメータのセット）をストレージに格納する。さらに、１または複数のプロセッサは、生成されたモデルに基づいて、異常の発生や劣化の進行などの予測処理４６８を実行する。最終的に、１または複数のプロセッサは、予測処理４６８の結果がグラフや表などを用いて視覚的にディスプレイなどに出力されてもよい（視覚化処理４７０）。
【０１５３】
以上のように、ＩｏＴサービス４５０は、制御装置１００の時系列データベース１８０に格納された時系列データ１８２に基づくデータ解析を実施する。このようなＩｏＴサービス４５０は、典型的には、クラウド上の十分な演算リソースを有する環境で実施されることが想定される。そのため、大量の時系列データを用いて、隠れた特性などを見つけることができる。
【０１５４】
このようなデータ解析を行う際に、時刻およびカウンタの情報を対応付けて、時系列データ内の観測値同士の時間的関係をより精緻に決定できるので、より正確かつ有意義な解析を実現できる。例えば、モデルの生成にあたっては、観測値同士の隠れた因果関係を探索することが重要であるが、このような因果関係は時間的なずれによって見つけることができない場合もある。本実施の形態に係るシステムにおいては、前処理において、観測値同士の時間的な関係をより正確に決定できるので、より正確なモデルの生成を実現できる。
【０１５５】
また、何らかの異常が発生した時刻を参照して、その発生した時刻における設備データを確認する必要がある場合などにより有益である。
【０１５６】
また、図８に示す例においては、制御装置１００の内部でＡＩ（Artificial Intelligence）処理１８６が実施される例を示す。ＡＩ処理１８６においては、例えば、教師ありの機械学習を行っておき、制御対象の製造装置や設備に生じる異常や劣化傾向を事前に検出するようにしてもよい。
【０１５７】
具体的には、ＡＩ処理１８６は、制御装置１００の時系列データベース１８０に格納された時系列データ１８２に含まれる１または複数の観測値から特徴量を生成し、その生成した特徴量を統計処理した上で、学習データとして保持する。そして、ＡＩ処理１８６は、何らかの新たな観測値が入力されると、当該入力された観測値が学習データからどの程度外れているのかを示す度合いを算出するとともに、その算出された外れの度合いに基づいて、異常の有無や劣化傾向を判断する。
【０１５８】
このようなＡＩ処理１８６を制御装置１００内に実装することで、制御対象の製造装置や設備に生じる異常や劣化傾向を実質的にリアルタイムに検出できる。
【０１５９】
（ｆ２：複数の制御装置からの時系列データの集約：その１）
次に、本実施の形態に係る制御装置１００の時系列データベース１８０を複数用いたアプリケーションの一例について説明する。
【０１６０】
図９は、図２に示す制御システム１Ａの要部を示す模式図である。図９を参照して、例えば、制御装置１００がマスターとしてカウンタ同期を管理するフィールドバス２に、２つの制御装置１００Ａ，１００Ｂが接続されているとする。制御装置１００Ａ，１００Ｂは、それぞれのリモートＩ／Ｏ装置１２で収集した観測値などを含む時系列データ１８２Ａ，１８２Ｂを制御装置１００へ送信するとする。
【０１６１】
制御装置１００Ａ，１００Ｂがそれぞれ送信する時系列データは、図７に示すようなデータ構造を有している。すなわち、各観測値には、少なくとも時刻およびカウンタ値が対応付けられている。
【０１６２】
図１０は、図９に示す制御システム１Ａにおいて制御装置１００に集約される時系列データの一例を示す模式図である。図１０を参照して、制御装置１００Ａからの時系列データおよび制御装置１００Ｂからの時系列データは、いずれも時刻およびカウンタ値に対応付けられた観測値を含む。
【０１６３】
なお、図１０に示すような時系列データは、制御装置１００Ａ，１００Ｂの時系列データベース１８０に一旦格納される必要はなく、制御装置１００Ａ，１００Ｂの各々が所定周期（例えば、制御サイクル）毎に時系列データの生成および送信を行うようにしてもよい。
【０１６４】
図１０に示す各時系列データにおいて、各観測値に対応付けられる時刻は、制御装置１００Ａ，１００Ｂによってそれぞれ管理されており、完全には同期していない。すなわち、時刻についての完全な同期は保証されていない。
【０１６５】
これに対して、図９に示す制御システム１Ａにおいては、フィールドバス２を介して、制御装置１００と、制御装置１００Ａと、制御装置１００Ｂとの間では、カウンタ同期が実現されており、カウンタは高い精度で同期している。そのため、各時系列データに付加されるカウンタ値についても、制御装置間で正確に同期しているため、同じタイミングのデータを保証することができる。すなわち、異なる制御装置でそれぞれ収集された観測値であっても、時間軸をほぼ完全に一致させて集約および解析を行うことができる。
【０１６６】
なお、図示していないが、制御装置１００が収集した観測値についても、制御装置１００Ａ，１００Ｂと同期したカウンタ値を付加することができるので、制御装置１００Ａ，１００Ｂからの時系列データと、制御装置１００が収集する時系列データとの間でも、タイミングを保証できる。
【０１６７】
（ｆ３：複数の制御装置からの時系列データの集約：その２）
上述の図９に示す制御システム１Ａにおいては、フィールドバスに接続された制御装置間で時系列データを集約する例を説明した。これに対して、ＩｏＴサービスなどの外部装置または外部システムにて時系列データを集約するようにしてもよい。
【０１６８】
図１１は、本実施の形態に係る制御装置が外部システムに時系列データを送信する場合の処理例を示す模式図である。図１１（Ａ）には、制御装置１００Ａ，１００Ｂが上位ネットワーク６を介して製造実行システム４００およびＩｏＴサービス４５０と接続されている構成を示す。図１１（Ａ）に示す構成においては、制御装置１００Ａと制御装置１００Ｂとの間には、フィールドバスは設けられていない。このような構成において、制御装置１００Ａ，１００Ｂからそれぞれ時系列データがＩｏＴサービス４５０へ送信されるとする。
【０１６９】
各時系列データには、制御装置１００Ａ，１００Ｂが収集した観測値および各観測値に対応付けられる時刻が含まれる。逆にいえば、図１１（Ａ）に示す構成においては、制御装置１００Ａ，１００Ｂは、各観測値の収集タイミングを示す情報としては時刻を付加することしかできない。時刻は、制御装置１００Ａ，１００Ｂがそれぞれ管理するものであり、時刻同期は不完全である。
【０１７０】
その結果、ＩｏＴサービス４５０にて収集される時系列データの間では、時刻が完全には一致しないので、タイミングを正確に合せてそれぞれの時系列データを集約（すなわち、統合）することはできない。
【０１７１】
これに対して、図１１（Ｂ）に示す構成においては、制御装置１００Ａと制御装置１００Ｂとを接続するフィールドバス２が設けられており、フィールドバス２を介したカウンタ同期を実現できる。その結果、制御装置１００Ａ，１００Ｂからそれぞれ送信される時系列データには、収集した観測値に対応付けて、各観測値を収集したタイミングを示す時刻およびカウンタ値を含めることができる。
【０１７２】
ＩｏＴサービス４５０においては、制御装置１００Ａ，１００Ｂのそれぞれから受信した時系列データに含まれるカウンタ値を用いて、時系列データに含まれる観測値のタイミングを合せることができる。すなわち、異なる制御装置でそれぞれ収集された観測値であっても、時間軸をほぼ完全に一致させて集約および解析を行うことができる。
【０１７３】
（ｆ４：イベントデータとの関連付け）
次に、制御装置１００に収集される時系列データとイベントデータとの関連付けの処理例について説明する。
【０１７４】
図１２は、本実施の形態に係る制御装置１００の時系列データベース１８０に格納される時系列データおよびイベントデータに対する処理を説明するための図である。図１２を参照して、一例として、制御装置１００の時系列データベース１８０には、観測値を含む時系列データ所定周期毎に格納されるとともに、予め定められた条件が満たされた場合に、イベントデータが発生および格納される。これらのデータのそれぞれには、少なくともカウンタ値が付加されている。
【０１７５】
このように、制御装置１００のレコード生成機として、予め定められた条件が満たされた場合に対応するイベントを発生させるとともに、当該イベントが発生したタイミングを示すカウンタが示すカウンタ値を当該発生したイベントの内容と対応付けたレコードをさらに生成するようにしてもよい。
【０１７６】
例えば、イベントデータの各レコードには、カウンタ値と発生したイベントの内容とが対応付けて格納されている。イベントデータに含まれる、「カウンタ値ｃ３」と「イベントＡ」とからなるレコードに着目して、時系列データを参照すると、「カウンタ値ｃ３」を共通の検索キーとして、「イベントＡ」が発生したときの「観測値３」だけではなく、そのときの「時刻ｔ３」を特定することができる。
【０１７７】
同様に、イベントデータに含まれる、「カウンタ値ｃ５」と「イベントＢ」とからなるレコードに着目して、時系列データを参照すると、「カウンタ値ｃ５」を共通の検索キーとして、「イベントＢ」が発生したときの「観測値５」だけではなく、そのときの「時刻ｔ５」を特定することができる。
【０１７８】
このように、各タイミングにおいて収集された観測値と、各タイミングを特定するための時刻およびカウンタ値とを対応付けて時系列に格納するとともに、何らかのイベントが発生した際には、そのイベントが発生したタイミングを示すカウンタ値を取得することで、各イベントに対応する観測値だけではなく、時刻についても事後的に解析することができる。
【０１７９】
このような時系列データとイベントデータとの間を、カウンタ値を介して対応付けることで、より精緻な故障解析や異常解析などを実現できる。
【０１８０】
＜Ｇ．時刻補償／データ欠落検出＞
次に、時系列データに含まれる情報に基づいて、時刻補償やデータ欠落を検出する応用例について説明する。
【０１８１】
（ｇ１：時刻補償）
以下では、時刻とカウンタ値またはインデックス値との関係に基づいて、時刻補償を行う場合の処理例を説明する。
【０１８２】
図１３は、本実施の形態に係る制御装置１００の時系列データベース１８０に格納される時系列データの一例を示す模式図である。図１４は、図１３に示す時系列データから時刻補償を行う処理を説明するための図である。
【０１８３】
図１３を参照して、各時系列データは、各タイミングで収集された１または複数の観測値と、各タイミングを特定するための、時刻、カウンタ値、インデックス値を含む。これらの時系列データについて、カウンタ値の間隔（時間的に隣接する時系列データ間の変化量）、および／または、インデックス値の間隔（時間的に隣接する時系列データ間の変化量）に基づいて、時系列データに欠落がないと確認できた場合において、時刻の整合性が取れないときには、その時刻を整合させるための時刻補償を行ってもよい。
【０１８４】
図１３に示す例では、３番目の時系列データにおいて、時刻ｔ３となるべきところ、制御装置１００における時刻同期プロトコルなどによって、時刻ｔ’３（＝ｔ３＋時刻補正量Δｔ）に変化したとする。このような時刻補正がなされた場合に、その時刻補正がなされたタイミングの前後に生成された時系列データ間の整合性をとるために、時刻補償を行うことが好ましい場合がある。このような場合には、カウンタ値またはインデックス値を用いて、時刻を補間することで、時刻補償を行うことができる。
【０１８５】
例えば、図１４に示すように、横軸にカウンタ値をとり、縦軸に時刻をとると、本来、カウンタ値と時刻との間は比例関係にあるが、時刻補正がなされることで、この比例関係にオフセットが生じる。そこで、時系列データベース１８０から時系列データを読出したサポート装置２００のプロセッサやＩｏＴサービス４５０を構成するシステムのプロセッサは、時系列データのカウンタ値を基準として、補間される時刻からのずれをオフセット（時刻補正量Δｔ）として算出することで、時刻補償を行うことができる。
【０１８６】
以上のとおり、互いにカウンタ同期された制御装置間においては、いずれかの制御装置において時刻補正がなされたとしても、その時刻補正に対する時刻補償を行って、時系列データ群の整合性を維持することができる。
【０１８７】
（ｇ２：データ欠落の検出）
以下では、データ書込み工程においてインデックス値を付加することで、データ欠落を検出する場合の処理例を説明する。
【０１８８】
図１５は、本実施の形態に係る制御装置１００における時系列データの処理例を示す模式図である。図１５に示す処理例においては、制御プログラム１５２（データベース書込みプログラム１５６）から時系列データベース１８０に対する時系列データの書込み工程の例を示す。
【０１８９】
より具体的には、制御装置１００のＰＬＣエンジン１５０で実行される制御プログラム１５２は、ユーザプログラム１５４およびデータベース書込みプログラム１５６を含む。
【０１９０】
ユーザプログラム１５４には、インデックス値を実行毎にインクリメントするための命令と、実行毎に時系列データを生成する命令とが記述されている。ユーザプログラム１５４の実行毎に、データベース書込みプログラム１５６が実行され、生成された時系列データ１８２が時系列データベース１８０へ送信される。
【０１９１】
時系列データ１８２のレコードは、時刻フィールド１８２１と、カウンタ値フィールド１８２２と、インデックスフィールド１８２３と、観測値フィールド１８２４とを含む。インデックスフィールド１８２３には、ユーザプログラム１５４の実行毎にインクリメントされる（プログラム）インデックス値が格納される。この（プログラム）インデックス値は、レコードを生成するたびに更新されるインデックス値に相当し、生成されるレコードに付加される。
【０１９２】
時系列データベース１８０のデータベースマネジャ１８４は、データベース書込みプログラム１５６からのレコードを順次データベースファイルとして格納する。時系列データベース１８０のデータベースマネジャ１８４は、時系列データをデータベースファイルとして格納する際に、格納対象のレコードに、時系列データベース１８０への格納毎にインクリメントされる（データベース）インデックス値をさらに付加する。この（データベース）インデックス値は、時系列データベース１８０にレコードを格納するたびに更新されるインデックス値に相当し、このインデックス値が付加された上でレコードが時系列に格納される。
【０１９３】
具体的には、時系列データ１８２は、図１５に示すような時系列データ１８２Ａのレコードに変換された上で、時系列データベース１８０に格納される。時系列データ１８２Ａのレコードは、時刻フィールド１８２１、カウンタ値フィールド１８２２、（プログラム）インデックスフィールド１８２３、および、観測値フィールド１８２４に加えて、（データベース）インデックスフィールド１８２５を含む。インデックスフィールド１８２５には、時系列データベース１８０が時系列データを格納する毎にインクリメントされるインデックス値が格納される。
【０１９４】
さらに、時系列データベース１８０から指定された時系列データを含むデータベースファイルがメモリカード１１６などの外部媒体へファイル出力される。メモリカード１１６へファイル出力されるデータは、時系列データ１８２Ａを含む。
【０１９５】
このような一連の処理において、（１）制御プログラム１５２（データベース書込みプログラム１５６）から時系列データベース１８０に対する時系列データの書込み工程におけるデータ欠落（エラー＃１）、および、（２）時系列データベース１８０からメモリカード１１６へのデータベースファイルの出力工程におけるデータ欠落（エラー＃２）が生じ得る。
【０１９６】
時系列データに付加されるインデックス値に基づいて、このようなデータ欠落の発生の検出および発生工程の特定を行うことができる。
【０１９７】
図１６は、図１５に示す時系列データの処理例におけるデータ欠落を検知するための処理例を説明するための模式図である。図１６（Ａ）には、（１）制御プログラム１５２（データベース書込みプログラム１５６）から時系列データベース１８０に対する時系列データの書込み工程におけるデータ欠落（エラー＃１）が発生した場合のレコードの例を示し、図１６（Ｂ）には、（２）時系列データベース１８０からメモリカード１１６へのデータベースファイルの出力工程におけるデータ欠落（エラー＃２）が発生した場合のレコードの例を示す。
【０１９８】
図１６（Ａ）に示す時系列データ１８２Ａの一連のレコードを比較すると、（プログラム）インデックス値Ｉ２と（プログラム）インデックス値Ｉ４との間に本来存在すべき、（プログラム）インデックス値Ｉ３が存在しないことがわかる。
【０１９９】
すなわち、（プログラム）インデックス値Ｉ３が欠落していることで、時系列データ１８２Ａの生成前、すなわち、制御プログラム１５２（データベース書込みプログラム１５６）から時系列データベース１８０に対する時系列データの書込み工程におけるデータ欠落（エラー＃１）が発生していると判断することができる。
【０２００】
一方、図１６（Ｂ）に示す時系列データ１８２Ａの一連のレコードを比較すると、（データベース）インデックス値Ｉ’２と（データベース）インデックス値Ｉ’４との間に本来存在すべき、（データベース）インデックス値Ｉ’３が存在しないことがわかる。
【０２０１】
すなわち、（データベース）インデックス値Ｉ’３が欠落していることで、時系列データ１８２Ａの生成後、すなわち、（２）時系列データベース１８０からメモリカード１１６へのデータベースファイルの出力工程におけるデータ欠落（エラー＃２）が発生していると判断することができる。
【０２０２】
以上のように、時系列データの生成や書込みなどの処理を行うたびにインクリメントされるインデックス値をレコード内に含まれることによって、時系列データの生成、格納、出力といった一連の処理のいずれかにおいてデータ欠落などの異常が発生しているか否かを検知できる。さらに、いずれのインデックス値が不連続になっているのかを判断することで、いずれの工程においてデータ欠落が発生しているのかを特定できる。
【０２０３】
＜Ｈ．処理手順＞
次に、本実施の形態に係る制御装置１００を含む制御システム１における処理手順について説明する。
【０２０４】
（ｈ１：時系列データの生成および格納）
まず、本実施の形態に係る制御装置１００における時系列データの生成および格納に係る処理について説明する。
【０２０５】
図１７は、本実施の形態に係る制御装置１００における時系列データの生成および格納に係る処理手順を示すフローチャートである。図１７に示す各ステップは、典型的には、制御装置１００のプロセッサ１０２が二次記憶装置１０８に格納されている制御プログラム１５２（ユーザプログラム１５４、データベース書込みプログラム１５６、シリアライズ通信プログラム１５８など）を読出して主記憶装置１０６に展開して実行することで実現される。
【０２０６】
図１７を参照して、プロセッサ１０２は、制御サイクルの開始タイミングを示す割込みが発生すると（ステップＳ１００）、前回の制御サイクルにおける制御演算によって算出された出力データをフィールドへ出力する処理を実行し（ステップＳ１０２）、続いて、フィールドからの入力データを取得する処理を実行する（ステップＳ１０４）。
【０２０７】
そして、プロセッサ１０２は、ユーザプログラム１５４に記述されている命令に従って、取得した入力データに基づく制御演算を実行して出力データを算出する（ステップＳ１０６）。
【０２０８】
続いて、プロセッサ１０２は、入力データを取得したタイミングを示す時刻およびカウンタ値を取得する（ステップＳ１０８）とともに、（プログラム）インデックス値をインクリメントする（ステップＳ１１０）。そして、プロセッサ１０２は、取得した時刻およびカウンタ値、インクリメント後のインデックス値、および、指定された観測値（入力データ、出力データ、演算データ、製造データ、イベントデータなど）を含むレコードを生成する（ステップＳ１１２）。さらに、プロセッサ１０２は、生成したレコードを時系列データベース１８０への書込みを命令する（データベース書込みプログラム１５６の実行）（ステップＳ１１４）。
【０２０９】
時系列データベース１８０は、（データベース）インデックス値をインクリメントし（ステップＳ１１６）、書込みが命令されたレコードにインクリメント後のインデックス値を付加した上で（ステップＳ１１８）、レコードを格納する（ステップＳ１２０）。
【０２１０】
以上により、１回の制御サイクルにおける処理は終了する。なお。ステップＳ１１６〜Ｓ１２０の時系列データベース１８０へのレコードの格納処理は、１回の制御サイクル内で完了させる必要はなく、複数回の制御サイクルにわたって実行されてもよい。
【０２１１】
（ｈ２：時系列データの集約）
次に、本実施の形態に係る制御装置１００または上位装置などにおける複数の時系列データの集約に係る処理について説明する。
【０２１２】
図１８は、本実施の形態に係る制御装置１００における時系列データの集約に係る処理手順を示すフローチャートである。図１８に示す各ステップは、典型的には、制御装置１００のプロセッサ１０２が各種ツールプログラムを実行することで実現される。
【０２１３】
図１８を参照して、プロセッサ１０２は、外部からの指令を受けると、または、予め定められた条件が成立すると（ステップＳ２００）、指定された対象の時系列データを含むデータベースファイルを他の制御装置１００の時系列データベース１８０から取得する（ステップＳ２０２）。続いて、プロセッサ１０２は、自装置の時系列データベース１８０に格納されている指定された対象の時系列データを含むデータベースファイルを取得する（ステップＳ２０４）。
【０２１４】
そして、プロセッサ１０２は、それぞれ取得したデータベースファイルに含まれるカウンタ値に基づいて、それぞれのデータベースファイルに対して基準タイミングを設定し（ステップＳ２０６）、その設定した基準タイミングを共通化するように、２つのデータベースファイルに含まれる時系列データを集約する（ステップＳ２０８）。このように、時系列に格納されたレコードに含まれるカウンタ値に基づいて、他の時系列に格納されたレコードとの間でタイミングを合せた上でデータを集約する処理が実行される。
【０２１５】
そして、プロセッサ１０２は、集約した時系列データに対して、指定された分析または解析処理を実行し（ステップＳ２１０）、その結果を出力する（ステップＳ２１２）。
【０２１６】
以上により、１回の分析または解析処理は終了する。
＜Ｉ．利点＞
従来の構成においては、記録したデータに対して、当該データを記録した時点の時刻あるいは当該データを記録した順序を示すインデックスを付加するような形態が一般的であった。
【０２１７】
しかしながら、大規模な制御システムやネットワーク化された制御システムでは、時刻は変動し得るため、それぞれ異なるデバイスなどで記録されたデータ間には、対応付けられる時刻の差（例えば、秒オーダ以下）が存在し、正確なデータ発生の状態を再現することができない。また、データを記録した順序を示すインデックスだけでは、複数のシステムのそれぞれで記録したデータ間の（例えば、マイクロ秒オーダでの）正確な突合せは難しい。
【０２１８】
このような従来構成に対して、本実施の形態に係る制御装置では、収集および格納するデータ（観測値）に対して、当該データを取得したタイミングを示す時刻に加えて、制御装置の内部で管理されるカウンタ（制御装置の制御演算の実行タイミングを制御するカウンタ、および／または、他のデバイスとの間の通信タイミングを制御するカウンタ）が示すカウンタ値を付加することで、より正確なデータの突合せを実現する。このようなデータ構造を採用することにより、事後的に複雑な時刻補正などの処理が必要ないため、プロセッサの負荷を低減でき、全体の処理速度を向上できる。
【０２１９】
さらに、時刻およびカウンタ値に加えて、データの生成あるいは格納毎に更新されるインデックス値を付加することで、データの順序、隣接するデータ間の時間差、データ列におけるデータ欠落などを容易に検出することができる。このようなデータ構造を採用することで、データ欠落のための修復アルゴリズムなどは必要なく、プロセッサの負荷を低減できる。
【０２２０】
このような時系列データとして格納するレコードに対して、時刻およびカウンタ値を付加することで、例えば、格納した時系列データを参照して、何らかのイベントが発生した時点における制御対象の振る舞いなどを正確に再現および分析することができる。
【０２２１】
さらに、複数の系においてそれぞれ収集および格納した複数の時系列データの間で、任意の時刻に発生した事象について、それぞれの波形などを突合せて分析できる。
【０２２２】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２２３】
１，１Ａ  制御システム、２，４  フィールドバス、６  上位ネットワーク、８  フィールド装置群、１０  スレーブ装置、１１  製造装置／設備、１２  リモートＩ／Ｏ装置、１３  通信カプラ、１４  リレー群、１６，１２４  Ｉ／Ｏユニット、１８  画像センサ、２０  カメラ、２２  サーボドライバ、２４  サーボモータ、１００，１００Ａ，１００Ｂ  制御装置、１０２  プロセッサ、１０４  チップセット、１０６  主記憶装置、１０８  二次記憶装置、１１０  上位ネットワークコントローラ、１１２  ＵＳＢコントローラ、１１４  メモリカードインターフェイス、１１６  メモリカード、１１８，１２０  フィールドバスコントローラ、１１９，１２１，１２３，１２５，１２６  カウンタ、１２２  ローカルバスコントローラ、１２７  リモートバス、１２８  ＲＴＣ、１２９  ローカルバス、１５０  ＰＬＣエンジン、１５２  制御プログラム、１５４  ユーザプログラム、１５６  データベース書込みプログラム、１５８  シリアライズ通信プログラム、１６０  変数管理プログラム、１６２  システム変数、１６４  デバイス変数、１６６  ユーザ変数、１７０  スケジューラプログラム、１７２  入力プログラム、１７４  出力プログラム、１８０  時系列データベース、１８２，１８２Ａ，１８２Ｂ  時系列データ、１８４  データベースマネジャ、１８６  ＡＩ処理、１９２  上位接続プログラム、１９４  ゲートウェイプログラム、２００  サポート装置、３００  表示装置、４００  製造実行システム、４５０  ＩｏＴサービス、４６０  時系列分析、４６２  前処理、４６４  分析処理、４６６  モデリング、４６８  予測処理、４７０  視覚化処理、５００  上位装置、５０２  絶対時刻、５０６  ＯＳ時刻、５０８  スケジューラ時刻、５１０  制御サイクルカウンタ、５１２  割込みカウンタ、５１４  プログラム時刻、５１６  ハードウェアカウンタ、５１８，５２４  フィールドバスカウンタ、５２０，５２２  ローカルバスカウンタ、５２６，５２８  リモートバスカウンタ、１８２１  時刻フィールド、１８２２  カウンタ値フィールド、１８２３，１８２５  インデックスフィールド、１８２４  観測値フィールド。
【図１】
2018151918.tif 000003
【図２】
2018151918.tif 000004
【図３】
2018151918.tif 000005
【図４】
2018151918.tif 000006
【図５】
2018151918.tif 000007
【図６】
2018151918.tif 000008
【図７】
2018151918.tif 000009
【図８】
2018151918.tif 000010
【図９】
2018151918.tif 000011
【図１０】
2018151918.tif 000012
【図１１】
2018151918.tif 000013
【図１２】
2018151918.tif 000014
【図１３】
2018151918.tif 000015
【図１４】
2018151918.tif 000016
【図１５】
2018151918.tif 000017
【図１６】
2018151918.tif 000018
【図１７】
2018151918.tif 000019
【図１８】
2018151918.tif 000020
【手続補正書】
【提出日】平成30年1月29日(2018.1.29)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００８８
【補正方法】変更
【補正の内容】
【００８８】
なお、制御装置１００が管理する入力データ、出力データ、演算データ、製造データ、イベントデータなどを統計処理した上で、時系列データベース１８０に対して書込みを行う、統計記録プログラムをさらに備えるようにしてもよい。統計処理としては、例えば、断片集約近似（ＰＡＡ：Piecewise Aggregate Approximation）や離散ストリングへの記号化（ＳＡＸ：Symbolic Aggregate approximation）などの手法を用いることができる。ＰＡＡは、時系列データからパターンを見つけることができ、発見されたパターンにより圧縮を容易にする。あるいは、ＳＡＸは、時系列データを文字列に変換することで、圧縮およびパターンの発見を容易化できる。
【手続補正２】
【補正対象書類名】図面
【補正対象項目名】図３
【補正方法】変更
【補正の内容】
【図３】
2018151918.tif 000021
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図８
【補正方法】変更
【補正の内容】
【図８】
2018151918.tif 000022
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図１７
【補正方法】変更
【補正の内容】
【図１７】
2018151918.tif 000023
【手続補正書】
【提出日】平成30年6月5日(2018.6.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
制御対象を制御する制御装置であって、
時刻を管理する時刻管理部と、
１つ以上のデバイスとの間で同期されたカウンタとを備え、前記カウンタは、第１のカウンタと、他の制御装置と接続するための定周期通信を行うバスまたはネットワークにおけるデータ通信タイミングを管理する第２のカウンタとを含み、
前記第１のカウンタが示すタイミングに従って制御演算を実行する制御演算部と、
前記制御演算部が利用可能である、前記制御対象に関連する観測値と、前記時刻管理部が示す当該観測値に対応付けられた時刻および前記第１のカウンタもしくは前記第２のカウンタが示す当該観測値に対応付けられたカウンタ値とを含む、レコードを生成するレコード生成手段とを備え、
前記制御装置は、前記１つ以上のデバイスのカウンタが示すカウンタ値を前記第２のカウンタが示すカウンタ値と一致させるための指令を前記１つ以上のデバイスへ与える同期管理部を備える、制御装置。
【請求項２】
前記レコード生成手段は、レコードを生成するたびに更新される第１のインデックス値を前記レコードに付加する、請求項１に記載の制御装置。
【請求項３】
前記レコード生成手段により生成されるレコードを時系列に格納する時系列データベースをさらに備える、請求項１または２に記載の制御装置。
【請求項４】
前記時系列データベースは、前記レコードを格納するたびに更新される第２のインデックス値を前記レコードにさらに付加した上で時系列に格納する、請求項３に記載の制御装置。
【請求項５】
前記観測値は、前記制御対象から取得される入力データと、取得した入力データに基づく制御演算により決定される前記制御対象に対する出力データと、前記制御演算の過程において算出される演算データとのうち、少なくとも１つを含む、請求項１〜４のいずれか１項に記載の制御装置。
【請求項６】
前記レコード生成手段は、予め定められた条件が満たされた場合に対応するイベントを発生させるとともに、当該イベントが発生したタイミングを示す前記カウンタが示すカウンタ値を当該発生したイベントの内容と対応付けたレコードをさらに生成する、請求項１〜５のいずれか１項に記載の制御装置。
【請求項７】
前記レコードは、前記観測値に対応付けられた時刻およびカウンタ値をＫｅｙとして含むとともに、対応するＶａｌｕｅとして前記観測値を含む、請求項１〜６のいずれか１項に記載の制御装置。
【請求項８】
時刻を管理する時刻管理部および他のデバイスとの間で同期されたカウンタを有する制御装置により生成されるデータのデータ構造であって、前記カウンタは、前記制御装置における制御演算の実行タイミングを管理する第１のカウンタと、他の制御装置と接続するための定周期通信を行うバスまたはネットワークにおけるデータ通信タイミングを管理する第２のカウンタとを含み、
制御対象に関連する観測値と、前記時刻管理部が示す当該観測値に対応付けられた時刻と、前記カウンタが示す当該観測値に対応付けられたカウンタ値とを含み、
前記制御装置により時系列に格納された複数種類のデータは、前記データ構造に含まれるカウンタ値に基づいて、互いのタイミングを合せた上でデータを集約される、データ構造。
【請求項９】
制御対象を制御する制御装置を含む制御システムにおける情報処理方法であって、前記制御装置は、第１のカウンタと、他の制御装置と接続するための定周期通信を行うバスまたはネットワークにおけるデータ通信タイミングを管理する第２のカウンタとを含み、
時刻を管理するステップと、
１つ以上のデバイスとの間で同期された前記第１のカウンタが示すタイミングに従って、制御演算を実行するステップと、
前記制御対象に関連する観測値と、当該観測値に対応付けられた時刻および当該観測値に対応付けられた前記第１のカウンタもしくは前記第２のカウンタが示すカウンタ値とを含む、レコードを生成して時系列に格納するステップと、
時系列に格納されたレコードに含まれるカウンタ値に基づいて、他の時系列に格納されたレコードとの間でタイミングを合せた上でデータを集約するステップと、
前記１つ以上のデバイスのカウンタが示すカウンタ値を前記第２のカウンタが示すカウンタ値と一致させるための指令を前記１つ以上のデバイスへ与えるステップとを備える、情報処理方法。