(57)【要約】【課題】上述したような課題を解決するために、制御対象から収集される観測値が実際に現れた時刻を正確に把握できる仕組みを提供する。【解決手段】制御対象についての制御演算を実行する制御装置が提供される。制御装置は、データ伝送路を介して１または複数の機能ユニットと制御装置とを電気的に接続するための通信インターフェイスと、機能ユニットを介して収集される観測値をデータベースに書込む書込手段と、機能ユニットに観測値を示す信号が入力されてから当該観測値を示すデータが制御装置で利用可能になるまでに要する遅延時間を取得するとともに、取得した遅延時間を示す情報を格納する遅延時間取得手段とを含む。【選択図】図９
2018173710.tif 000002
【特許請求の範囲】
【請求項１】
制御対象についての制御演算を実行する制御装置であって、
データ伝送路を介して１または複数の機能ユニットと前記制御装置とを電気的に接続するための通信インターフェイスと、
前記機能ユニットを介して収集される観測値をデータベースに書込む書込手段と、
前記機能ユニットに観測値を示す信号が入力されてから当該観測値を示すデータが前記制御装置で利用可能になるまでに要する遅延時間を取得するとともに、取得した遅延時間を示す情報を格納する遅延時間取得手段とを備える、制御装置。
【請求項２】
前記遅延時間取得手段により取得された遅延時間を示す情報に基づいて、前記観測値を示す信号が現れた時刻を決定する時刻決定手段をさらに備える、請求項１に記載の制御装置。
【請求項３】
前記書込手段は、前記観測値と、当該観測値が前記制御装置において利用可能になった時刻とを対応付けて前記データベースに書込み、
前記時刻決定手段は、前記データベースから読出した観測値について、当該観測値に対応付けられた時刻を前記遅延時間取得手段により取得された遅延時間を示す情報に基づいて補正することで、当該観測値を示す信号が現れた時刻を決定する、請求項２に記載の制御装置。
【請求項４】
前記遅延時間は、時間的に変動しない第１の遅延時間と、時間的に変動する第２の遅延時間とを含む、請求項１〜３のいずれか１項に記載の制御装置。
【請求項５】
前記第１の遅延時間は、前記機能ユニットに設定される処理特性および前記機能ユニットの機能の少なくとも一方に依存して定まる遅延時間を含む、請求項４に記載の制御装置。
【請求項６】
前記第１の遅延時間は、前記機能ユニットから前記制御装置までのデータ伝送路に依存して定まる遅延時間を含む、請求項４または５に記載の制御装置。
【請求項７】
前記通信インターフェイスおよび前記機能ユニットは、互いに時刻同期されたカウンタをそれぞれ有しており、
前記第２の遅延時間は、互いに時刻同期されたカウンタが示すカウンタ値間のずれの程度に依存して時間的に変化する遅延時間を含む、請求項４〜６のいずれか１項に記載の制御装置。
【請求項８】
前記データベースに格納されている観測値と、当該観測値に対応付けられる遅延時間を示す情報とを関連付けて出力する出力手段をさらに備える、請求項１〜７のいずれか１項に記載の制御装置。
【請求項９】
前記データベースは前記制御装置に組込まれている、請求項１〜８のいずれか１項に記載の制御装置。
【請求項１０】
制御対象についての制御演算を実行する制御装置で実行される制御プログラムであって、前記制御装置は、データ伝送路を介して１または複数の機能ユニットと前記制御装置とを電気的に接続されており、前記制御プログラムは、前記制御装置に
前記機能ユニットを介して収集される観測値をデータベースに書込むステップと、
前記機能ユニットに観測値を示す信号が入力されてから当該観測値を示すデータが前記制御装置で利用可能になるまでに要する遅延時間を取得するとともに、取得した遅延時間を示す情報を格納するステップとを実行させる、制御プログラム。
【請求項１１】
制御対象についての制御演算を実行する制御装置と、
前記制御装置とデータ伝送路を介して電気的に接続された１または複数の機能ユニットとを備え、
前記制御装置は、
前記機能ユニットを介して収集される観測値をデータベースに書込む書込手段と、
前記機能ユニットに観測値を示す信号が入力されてから当該観測値を示すデータが前記制御装置で利用可能になるまでに要する遅延時間を取得するとともに、取得した遅延時間を示す情報を格納する遅延時間取得手段とを備える、制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースを利用可能な制御装置、当該制御装置で実行される制御プログラム、および当該制御装置を含む制御システムに関する。
【背景技術】
【０００２】
様々な生産現場において、ＰＬＣ（プログラマブルコントローラ）などの制御装置を用いたＦＡ（Factory Automation）技術が広く普及している。このような制御装置が取り扱うデータを利用したいというニーズがある。
【０００３】
例えば、特開２００８−２９３１３８号公報（特許文献１）は、デバッグを実施する場合、プログラムの論理を確認するために、ある特定の条件が成立した時点の値を保持する、いわゆる条件モニタ機能を提供するための構成を開示する。
【０００４】
ＩＣＴ（Information and Communication Technology）の進歩によって、特許文献１に開示されるような特定の条件が成立した時点の値を保持するような構成ではなく、制御装置においても大量のデータを収集および格納することが可能になりつつある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２９３１３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
比較的規模の大きな制御装置には、フィールドバスまたはフィールドネットワークと称されるデータ伝送路を介して機能ユニットが接続されており、制御対象に取り付けられたセンサからの観測値が機能ユニットを介して収集される。
【０００７】
制御対象から収集される複数の観測値の間では、時間軸を揃える必要がある。すなわち、同一の時刻に発生した観測値を互いに比較できるように収集する必要がある。一方で、制御装置には、複数の機能ユニットがそれぞれ異なる態様で接続されている場合も多い。制御装置と機能ユニットとの間の接続形態が異なっているため、制御対象においてある観測値が実際に現れてから制御装置に収集されるまでに要する遅延時間は、機能ユニットの間で同一ではないことも多い。また、遅延時間そのものの存在によって、観測値が実際に現れた時刻を正確に把握することが難しくなる。
【０００８】
本発明は、上述したような課題を解決するために、制御対象から収集される観測値が実際に現れた時刻を正確に把握できる仕組みを提供することを一つの目的としている。
【課題を解決するための手段】
【０００９】
本発明のある局面に従えば、制御対象についての制御演算を実行する制御装置が提供される。制御装置は、データ伝送路を介して１または複数の機能ユニットと制御装置とを電気的に接続するための通信インターフェイスと、機能ユニットを介して収集される観測値をデータベースに書込む書込手段と、機能ユニットに観測値を示す信号が入力されてから当該観測値を示すデータが制御装置で利用可能になるまでに要する遅延時間を取得するとともに、取得した遅延時間を示す情報を格納する遅延時間取得手段とを含む。
【００１０】
この局面によれば、機能ユニットに観測値を示す信号が入力されてから当該観測値を示すデータが制御装置で利用可能になるまでには、遅延時間が存在しており、この遅延時間分だけ遅延した時刻に対応付けて観測値がデータベースに書込まれたとしても、遅延時間を示す情報を取得および格納しておくことで、事後的な解析処理などを高い精度で実施できる。
【００１１】
好ましくは、制御装置は、遅延時間取得手段により取得された遅延時間を示す情報に基づいて、観測値を示す信号が現れた時刻を決定する時刻決定手段をさらに含む。この局面によれば、制御対象から収集される観測値が実際に現れた時刻を正確に把握できる。
【００１２】
好ましくは、書込手段は、観測値と、当該観測値が制御装置において利用可能になった時刻とを対応付けてデータベースに書込み、時刻決定手段は、データベースから読出した観測値について、当該観測値に対応付けられた時刻を遅延時間取得手段により取得された遅延時間を示す情報に基づいて補正することで、当該観測値を示す信号が現れた時刻を決定する。この局面によれば、制御対象から収集される観測値が実際に現れた時刻が正確に再現された結果を出力できる。
【００１３】
好ましくは、遅延時間は、時間的に変動しない第１の遅延時間と、時間的に変動する第２の遅延時間とを含む。この局面によれば、時間的に変動しない成分および時間的に変動する成分のそれぞれを考慮した、遅延時間を取得できる。
【００１４】
好ましくは、第１の遅延時間は、機能ユニットに設定される処理特性および機能ユニットの機能の少なくとも一方に依存して定まる遅延時間を含む。この局面によれば、機能ユニットに設定される処理特性または機能ユニットの機能を考慮して、遅延時間の長さを決定できる。
【００１５】
好ましくは、第１の遅延時間は、機能ユニットから制御装置までのデータ伝送路に依存して定まる遅延時間を含む。この局面によれば、機能ユニットから制御装置までのデータ伝送路を考慮して、遅延時間の長さを決定できる。
【００１６】
好ましくは、通信インターフェイスおよび機能ユニットは、互いに時刻同期されたカウンタをそれぞれ有しており、第２の遅延時間は、互いに時刻同期されたカウンタが示すカウンタ値間のずれの程度に依存して時間的に変化する遅延時間を含む。この局面によれば、互いに時刻同期されたカウンタ間に生じる時刻ずれなどの影響を考慮して、遅延時間の長さを動的に決定できる。
【００１７】
好ましくは、制御装置は、データベースに格納されている観測値と、当該観測値に対応付けられる遅延時間を示す情報とを関連付けて出力する出力手段をさらに含む。この局面によれば、制御装置以外の他の装置において観測値を解析するような場合であっても、観測値が実際に現れた時刻を正確に把握できる。
【００１８】
好ましくは、データベースは制御装置に組込まれている。この局面によれば、制御装置からデータベースへのデータ書込みをより高速に行うことができる。
【００１９】
本発明の別の局面に従えば、制御対象についての制御演算を実行する制御装置で実行される制御プログラムが提供される。制御装置は、データ伝送路を介して１または複数の機能ユニットと制御装置とを電気的に接続されている、制御プログラムは、制御装置に、機能ユニットを介して収集される観測値をデータベースに書込むステップと、機能ユニットに観測値を示す信号が入力されてから当該観測値を示すデータが制御装置で利用可能になるまでに要する遅延時間を取得するとともに、取得した遅延時間を示す情報を格納するステップとを実行させる。
【００２０】
この局面によれば、機能ユニットに観測値を示す信号が入力されてから当該観測値を示すデータが制御装置で利用可能になるまでには、遅延時間が存在しており、この遅延時間分だけ遅延した時刻に対応付けて観測値がデータベースに書込まれたとしても、遅延時間を示す情報を取得および格納しておくことで、事後的な解析処理などを高い精度で実施できる。
【００２１】
本発明のさらに別の局面に従う制御システムは、制御対象についての制御演算を実行する制御装置と、制御装置とデータ伝送路を介して電気的に接続された１または複数の機能ユニットとを含む。制御装置は、機能ユニットを介して収集される観測値をデータベースに書込む書込手段と、機能ユニットに観測値を示す信号が入力されてから当該観測値を示すデータが制御装置で利用可能になるまでに要する遅延時間を取得するとともに、取得した遅延時間を示す情報を格納する遅延時間取得手段とを含む。
【００２２】
この局面によれば、機能ユニットに観測値を示す信号が入力されてから当該観測値を示すデータが制御装置で利用可能になるまでには、遅延時間が存在しており、この遅延時間分だけ遅延した時刻に対応付けて観測値がデータベースに書込まれたとしても、遅延時間を示す情報を取得および格納しておくことで、事後的な解析処理などを高い精度で実施できる。
【発明の効果】
【００２３】
本発明によれば、制御対象から収集される観測値が実際に現れた時刻を正確に把握できる仕組みを提供できる。
【図面の簡単な説明】
【００２４】
【図１】本実施の形態に係る制御システムの構成例を示す模式図である。
【図２】本実施の形態に係る制御システムを構成するＰＬＣのハードウェア構成例を示すブロック図である。
【図３】本実施の形態に係る制御システムを構成する機能ユニットのハードウェア構成例を示すブロック図である。
【図４】本実施の形態に係る制御システムを構成するカプラユニットのハードウェア構成例を示すブロック図である。
【図５】本実施の形態に係る制御システムを構成するサポート装置のハードウェア構成例を示すブロック図である。
【図６】本実施の形態に係る制御システムにおけるデータ伝送に要する時間を示すタイムチャートである。
【図７】本実施の形態に係る制御システムにおけるデータ格納時およびデータ利用時の処理を説明する模式図である。
【図８】本実施の形態に係る制御システムを構成するＣＰＵユニットおよびサポート装置のソフトウェア構成例を示すブロック図である。
【図９】本実施の形態に係る制御システムにおける遅延時間補正の全体処理を説明するための図である。
【図１０】本実施の形態に係る制御システムにおいて利用されるデータ管理情報の構成例を示すテーブルである。
【図１１】本実施の形態に係る制御システムにおける遅延時間補正の実装例を示す模式図である。
【図１２】本実施の形態に係る制御システムにおける遅延時間補正に係る処理手順を示すフローチャートである。
【図１３】本実施の形態に係る制御システムの機能ユニットが一般的な入力処理を実行する場合のタイムチャートの一例である。
【図１４】本実施の形態に係る制御システムの機能ユニットがオーバサンプリングでの入力処理を実行する場合のタイムチャートの一例である。
【図１５】本実施の形態に係る制御システムの通信マスターが提供する同期管理機能を説明するための図である。
【図１６】本実施の形態に係る遅延時間補正による時系列データの利用形態の一例を説明するための図である。
【発明を実施するための形態】
【００２５】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２６】
＜Ａ．制御システムの全体構成例＞
まず、本実施の形態に係る制御システム１の全体構成例について説明する。図１は、本実施の形態に係る制御システム１の構成例を示す模式図である。
【００２７】
図１を参照して、一例として、制御システム１は、制御対象を制御するＰＬＣ（プログラマブルコントローラ）２と、ＰＬＣ２とフィールドバスを介して接続されるリモートＩＯ装置３Ａ，３Ｂ，３Ｃ，３Ｄ（以下、「リモートＩＯ装置３」とも総称する。）とを含む。
【００２８】
一般的に「フィールドバス」は、「フィールドネットワーク」とも称されるが、説明の簡素化のため、以下の説明においては、「フィールドバス」と総称する。すなわち、本明細書の「フィールドバス」は、「フィールドバス」に加えて「フィールドネットワーク」を含み得る。
【００２９】
ＰＬＣ２は、さらに上位ネットワーク８に接続されていてもよい。上位ネットワーク８には、他のＰＬＣが接続されていてもよいし、ゲートウェイやデータベースサーバといった任意の情報処理装置が接続されていてもよい。
【００３０】
図１に示す構成例においては、リモートＩＯ装置３Ａ，３Ｂ，３Ｃは、フィールドバス４を介してＰＬＣ２と接続されている。リモートＩＯ装置３Ａは別のフィールドバス６を提供しており、フィールドバス６を介して、リモートＩＯ装置３ＡとリモートＩＯ装置３Ｄとが接続されている。フィールドバス６は、リモートＩＯ装置３Ａに装着されたカプラユニット１６０によって管理される。ＰＬＣ２は、フィールドバス４およびフィールドバス６を介してリモートＩＯ装置３Ｄへアクセス可能になっている。
【００３１】
フィールドバス５，６としては、典型的には、ネットワーク内のノード間のデータ到着時間が保証されるプロトコルが採用される。このようなノード間のデータ到着時間が保証されるプロトコルとしては、例えば、ＥｔｈｅｒＣＡＴ（登録商標）などを採用できる。あるいは、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などを採用してもよい。なお、フィールドバス５およびフィールドバス６は、互いに同一のプロトコルを採用する必要はなく、それぞれの装置やユニットに適したプロトコルを採用すればよい。
【００３２】
典型的には、ＰＬＣ２は、ＣＰＵユニット１００と、ＣＰＵユニット１００に装着される１または複数の機能ユニット１５０とから構成される。ＣＰＵユニット１００は、制御対象についての制御演算を実行する制御装置に相当する。ＣＰＵユニット１００単体を「制御装置」と称することもあるし、ＣＰＵユニット１００および１または複数の機能ユニット１５０の全体を「制御装置」と称することもある。
【００３３】
また、リモートＩＯ装置３は、通信機能を有するカプラユニット１６０と、カプラユニット１６０に装着される１または複数の機能ユニット１５０とから構成される。ＣＰＵユニット１００と機能ユニット１５０との間、および、カプラユニット１６０と機能ユニット１５０との間は、ローカルバスと称されるデータ伝送路を介して電気的に接続されている。
【００３４】
本明細書において、「機能ユニット」は、設備や機械などの制御対象との間で各種の信号を遣り取りするための装置を包含する概念を意味する。機能ユニット１５０は、例えば、制御対象からのデジタル信号を受取るＤＩ（Digital Input）機能、制御対象に対してデジタル信号を出力するＤＯ（Digital Output）機能、制御対象からのアナログ信号を受取るＡＩ（Analog Input）機能、制御対象に対してアナログ信号を出力するＡＯ（Analog Output）機能のうち１または複数の機能を有している。あるいは、機能ユニット１５０としては、ＰＩＤ（Proportional Integral Derivative）制御やモーション制御といった特殊機能を実装したものを含んでいてもよい。
【００３５】
上述したように、ＣＰＵユニット１００と機能ユニット１５０との間は、フィールドバスおよび／またはローカルバスといったデータ伝送路を介して電気的に接続されている。
【００３６】
本実施の形態において、制御装置の一例であるＣＰＵユニット１００は、機能ユニット１５０を介して収集される観測値を格納するデータベースを有している。以下では、ＣＰＵユニット１００に内蔵されているという意味において、当該データベースを「組込データベース１８０」と称する。本実施の形態においては、一例として、データベースがＣＰＵユニット１００に組込まれている。但し、本発明の本質はデータベースそのものではなく、ＣＰＵユニット１００とは別の装置にデータベース（すなわち、外付データベース）を配置してもよいし、組込データベースと外付データベースとを組合せて利用するようにしてもよい。以下の説明においては、「データベース」を「ＤＢ」とも記す。
【００３７】
本明細書において、「観測値」は、ＣＰＵユニット１００での制御演算において利用可能な値（実値）を総称する概念であり、典型的には、制御対象から取得されて制御演算に用いられる入力値（デジタル値またはアナログ値）、取得された入力値に基づいて制御演算によって決定された制御対象に対する出力値あるいは指令値（デジタル値またはアナログ値）、制御演算の過程において算出される演算値（デジタル値またはアナログ値）などを含み得る。すなわち、「観測値」は、ＣＰＵユニット１００においてデータとして格納できる、または、ＣＰＵユニット１００からデータとして外部出力できる任意の値を包含する概念を有する。
【００３８】
典型的には、組込データベース１８０には、１または複数の観測値がレコードの形で格納される。
【００３９】
＜Ｂ．各装置のハードウェア構成例＞
次に、本実施の形態に係る制御システム１を構成する各装置のハードウェア構成例について説明する。
【００４０】
（ｂ１：ＰＬＣ）
図２は、本実施の形態に係る制御システム１を構成するＰＬＣ２のハードウェア構成例を示すブロック図である。図２を参照して、ＰＬＣ２は、ＣＰＵユニット１００と、１または複数の機能ユニット１５０とを含む。
【００４１】
ＣＰＵユニット１００は、プロセッサ１０２と、チップセット１０４と、主記憶装置１０６と、二次記憶装置１０８と、ネットワークコントローラ１１０と、ＵＳＢ（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）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００５６】
さらに、ＣＰＵユニット１００に表示装置やサポート装置２００などの機能を統合した構成を採用してもよい。
【００５７】
（ｂ２：機能ユニット）
図３は、本実施の形態に係る制御システム１を構成する機能ユニット１５０のハードウェア構成例を示すブロック図である。図３を参照して、機能ユニット１５０は、ローカルバスコントローラ１５２と、演算処理部に相当する主コントローラ１５４と、機能モジュール１５６とを含む。
【００５８】
ローカルバスコントローラ１５２は、典型的には、ＡＳＩＣやＦＰＧＡなどの専用回路を用いて実装され、ローカルバス１２を介して、ＣＰＵユニット１００との間でデータを遣り取りする。なお、機能ユニット１５０がカプラユニット１６０に装着される場合には、ローカルバスコントローラ１５２は、ローカルバス１４を介して、カプラユニット１６０との間でデータを遣り取りする（後述の図４参照）。
【００５９】
ローカルバスコントローラ１５２は、ローカルバス１２を介したデータ通信におけるタイミングを管理するための時刻基準として用いられるカウンタ１５３を有している。ローカルバスコントローラ１５２は、通信マスターからの指令に従ってデータの送出タイミングまたは受信タイミングを決定する通信スレーブとして機能する。
【００６０】
主コントローラ１５４は、機能ユニット１５０での処理を統括する演算処理部に相当し、機能モジュール１５６に対して計測タイミングなどの指令を与えるとともに、機能モジュール１５６からの計測値を、ローカルバスコントローラ１５２を介して送出する。
【００６１】
主コントローラ１５４は、典型的には、ＡＳＩＣやＦＰＧＡといった専用回路を用いて実現されるが、ソフトウェア実装で実現してもよい。ソフトウェア実装を採用する場合には、主コントローラ１５４は、主として、プロセッサ、主記憶装置、二次記憶装置などで構成され、プロセッサが二次記憶装置に格納されたシステムプログラム（ファームウェア）などを読出して、主記憶装置に展開して実行することで、必要な処理を実現する。
【００６２】
機能モジュール１５６は、機能ユニット１５０の機能を提供するコアであり、例えば、ＤＩ機能またはＤＯ機能を実現するためのダイオードやトランジスタなどからなる論理回路を含む。あるいは、機能モジュール１５６は、ＡＩ機能またはＡＯ機能を実現するためのＡＤ（Analog Digital）変換器やＤＡ（Digital Analog）変換器などを含む。さらに、機能モジュール１５６は、ＰＩＤ制御やモーション制御といった特殊機能を実現するためのプロセッサなどを含んでいてもよい。機能モジュール１５６の部分については、機能ユニット１５０に割り当てられた機能に応じて任意の構成が採用されてもよい。
【００６３】
（ｂ３：カプラユニット）
図４は、本実施の形態に係る制御システム１を構成するカプラユニット１６０のハードウェア構成例を示すブロック図である。図４を参照して、カプラユニット１６０は、フィールドバス４に接続するためのインターフェイスに加えて、独自のローカルバス１４を実現するためのインターフェイスを有している。
【００６４】
より具体的には、カプラユニット１６０は、フィールドバスコントローラ１６２と、主コントローラ１６４と、ローカルバスコントローラ１６６とを含む。
【００６５】
フィールドバスコントローラ１６２は、典型的には、ＡＳＩＣやＦＰＧＡなどの専用回路を用いて実装され、フィールドバス４を介して、ＣＰＵユニット１００との間でデータを遣り取りする。フィールドバスコントローラ１６２は、フィールドバス４を介したデータ通信におけるタイミングを管理するための時刻基準として用いられるカウンタ１６１を有している。フィールドバスコントローラ１６２は、通信マスターからの指令に従ってデータの送出タイミングまたは受信タイミングを決定する通信スレーブとして機能する。
【００６６】
主コントローラ１６４は、カプラユニット１６０での処理を統括する演算処理部に相当し、主として、フィールドバス４とローカルバス１４との間でのデータの遣り取りを制御する。
【００６７】
主コントローラ１６４は、典型的には、ＡＳＩＣやＦＰＧＡといった専用回路を用いて実現されるが、ソフトウェア実装で実現してもよい。ソフトウェア実装を採用する場合には、主コントローラ１６４は、主として、プロセッサ、主記憶装置、二次記憶装置などで構成され、プロセッサが二次記憶装置に格納されたシステムプログラム（ファームウェア）などを読出して、主記憶装置に展開して実行することで、必要な処理を実現する。
【００６８】
ローカルバスコントローラ１６６は、ローカルバス１４を介して、１または複数の機能ユニット１５０との間でデータを遣り取りする。ローカルバスコントローラ１６６は、ローカルバス１４を介して接続される機能ユニット１５０との間でタイミングを管理するための時刻基準として用いられるカウンタ１６７を有している。ローカルバスコントローラ１１８は、ローカルバス１４を介した定周期通信を行うための通信マスターとして機能し、ローカルバス１４に接続されている機能ユニット１５０（通信スレーブに相当）が有するカウンタが示すカウンタ値とカウンタ１６７が示すカウンタ値との差分を逐次監視して、必要に応じて、カウンタ値にずれが発生しているデバイスに対して補正を指示するための時刻同期信号を出力する。このように、ローカルバスコントローラ１６６は、機能ユニット１５０のカウンタが示すカウンタ値をカウンタ１６７が示すカウンタ値と一致させるための指令を機能ユニット１５０へ与える同期管理機能を有している。
【００６９】
（ｂ４：サポート装置）
図５は、本実施の形態に係る制御システム１を構成するサポート装置２００のハードウェア構成例を示すブロック図である。サポート装置２００は、ＣＰＵユニット１００のカプラユニット１６０が管理している各種変数値や各種設定値などを確認する機能、ＣＰＵユニット１００で実行されるプログラムを開発する機能およびデバックする機能、ＣＰＵユニット１００の組込データベース１８０に格納されたデータを利用する機能（例えば、データマイニング機能）などを提供する。
【００７０】
サポート装置２００は、典型的には、汎用的なアーキクテチャを有するパーソナルコンピュータ上で、サポートプログラムが実行されることで実現される。より具体的には、図５を参照して、サポート装置２００は、プロセッサ２０２と、ディスプレイ２０４と、主記憶装置２０６と、二次記憶装置２０８と、ＵＳＢコントローラ２１２と、入力装置２１４とを含む。これらのコンポーネントは内部バス２１０を介して接続されている。
【００７１】
プロセッサ２０２は、ＣＰＵ、ＭＰＵ、ＧＰＵなどで構成され、二次記憶装置２０８に格納されたＯＳ２１６およびサポートプログラム２１８を含む各種プログラムを読出して、主記憶装置２０６して実行することで、上述したような各種機能を実現する。二次記憶装置２０８は、例えば、ＨＤＤやＳＳＤなどの不揮発性記憶装置などで構成される。主記憶装置２０６は、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置などで構成される。
【００７２】
ディスプレイ２０４は、プロセッサ２０２などによる演算結果を表示するデバイスであり、例えば、ＬＣＤ（Liquid Crystal Display）などで構成される。
【００７３】
ＵＳＢコントローラ２１２は、ＵＳＢ接続を介して、ＣＰＵユニット１００との間でデータを遣り取りする。
【００７４】
入力装置２１４は、ユーザの操作を受付けデバイスであり、例えば、キーボードやメモリなどで構成される。
【００７５】
＜Ｃ．処理概要＞
次に、本実施の形態に係る制御システム１における処理の概要について説明する。
【００７６】
図６は、本実施の形態に係る制御システム１におけるデータ伝送に要する時間を示すタイムチャートである。図６には、ＣＰＵユニット１００にローカルバスを介して接続された機能ユニット１５０−１、および、ＣＰＵユニット１００にフィールドバスを介して接続された機能ユニット１５０−２のそれぞれに入力された入力信号を示すデータが伝送される例を示す。このとき、機能ユニット１５０−２は、カプラユニット１６０にローカルバスを介して接続されており、リモートＩＯ装置３の一部を構成している。
【００７７】
図６を参照して、まず、ローカルバスを介して接続された機能ユニット１５０−１に入力された入力信号Ａは、機能ユニット１５０−１の機能モジュール１５６においてＡＤ変換などの入力処理４０２によりデジタルデータに変換され、ローカルバスコントローラ１５２への伝送処理４０４が実施される。そして、ローカルバスコントローラ１５２においてエンコードなどの伝送前処理４０６が実施された後、ＣＰＵユニット１００のローカルバスコントローラ１１８への伝送処理４０８が実施される。ローカルバスコントローラ１１８では、受信したデータに対するデコードなどの受信処理４１０が実施された後、組込データベース１８０への格納処理４１２が実施される。
【００７８】
このような一連のデータ伝送によって、機能ユニット１５０−１に入力信号Ａが入力されてから、組込データベース１８０への入力信号Ａを示すデータの格納が完了するまでには、遅延時間Δ１が生じる。
【００７９】
また、フィールドバスを介して接続された機能ユニット１５０−２に入力された入力信号Ｂは、機能ユニット１５０−２の機能モジュール１５６においてＡＤ変換などの入力処理４２２によりデジタルデータに変換され、ローカルバスコントローラ１５２への伝送処理４２４が実施される。そして、ローカルバスコントローラ１５２においてエンコードなどの伝送前処理４２６が実施された後、カプラユニット１６０のローカルバスコントローラ１６４への伝送処理４２８が実施される。ローカルバスコントローラ１６４では、受信したデータに対するデコードなどの受信処理４３０が実施された後、フィールドバスコントローラ１６２への伝送処理４３２が実施される。
【００８０】
そして、フィールドバスコントローラ１６２においてエンコードなどの伝送前処理４３４が実施された後、ＣＰＵユニット１００のフィールドバスコントローラ１２０への伝送処理４３６が実施される。フィールドバスコントローラ１２０では、受信したデータに対するデコードなどの受信処理４３８が実施された後、組込データベース１８０への格納処理４４０が実施される。
【００８１】
このような一連のデータ伝送によって、機能ユニット１５０−２に入力信号Ｂが入力されてから、組込データベース１８０への入力信号Ｂを示すデータの格納が完了するまでには、遅延時間Δ２が生じる。
【００８２】
図６に示すタイムチャートにおいては、入力信号Ａおよび入力信号Ｂは、機能ユニット１５０−１および機能ユニット１５０−２へそれぞれ同じタイミングで入力されているが、それぞれの信号を示すデータがＣＰＵユニット１００の組込データベース１８０に格納されるタイミングは異なっている。すなわち、遅延時間Δ１および遅延時間Δ２が存在し、かつ、これらの遅延時間は同一ではないので、制御対象において実際に何らかの現象が生じたタイミングと実際の組込データベース１８０に対応するデータが格納されるタイミングとは一致しない。
【００８３】
一方で、これらの組込データベース１８０に格納されるデータを事後的に利用するにあたっては、実際に現象が生じた時刻を可能な限り正確に再現することが重要である。そこで、本実施の形態に係るＣＰＵユニット１００においては、上述したような遅延時間を補正するためのデータ管理情報を収集された観測値とともに格納する。そして、データ管理情報を用いて観測値の時刻を補正することで、対応する現象が実際に現れたタイミングを再現する。
【００８４】
本明細書において、「遅延時間」は、機能ユニット１５０に観測値を示す信号が入力されてから当該観測値を示すデータがＣＰＵユニット１００で利用可能になるまでに要する時間を意味する。
【００８５】
図７は、本実施の形態に係る制御システム１におけるデータ格納時およびデータ利用時の処理を説明する模式図である。図７を参照して、組込データベース１８０へのデータ格納時には、計測タイミングと観測値との組を計測タイミングの順に並べた時系列データ３００を生成する。
【００８６】
本明細書において、「時系列データ」は、任意の対象についてのデータ（観測値）の時間的な変化を連続的（あるいは、一定間隔をおいて不連続）に取得することで得られる一連の値を意味する。
【００８７】
時系列データ３００と対応付けて、時系列データ３００に含まれる観測値を取得した際の遅延時間などの情報を含むデータ管理情報３５０が生成される。データ管理情報３５０は、制御システム１のネットワーク構成やハードウェア構成によって予め定まる遅延（以下、「静的遅延」とも称す。）を補正するための静的遅延補正用データ３５２と、ネットワークの同期ゆらぎや外乱要因などによって変化する遅延（以下、「動的遅延」とも称す。）を補正するための動的遅延補正用データ３５４とを含む。
【００８８】
静的遅延を示す遅延時間は、時間的に変動しない遅延時間に相当し、動的遅延を示す遅延時間は、時間的に変動する遅延時間に相当する。
【００８９】
一方、データ利用時には、組込データベース１８０に格納された時系列データ３００に対して、データ管理情報３５０を用いた遅延時間補正を行うことで得られる、補正済時系列データ３１０が生成される。補正済時系列データ３１０を用いて各種解析などが行われる。
【００９０】
図７には、説明の便宜上、単一の観測値を含む時系列データ３００のみを示すが、実際には、単一の観測値を含む時系列データ３００の複数、または、複数の観測値を含む時系列データ３００をまとめて解析することが一般的である。このような場合であっても、それぞれの観測値が実際に現れたタイミングを正確に再現できるので、複数の観測値を共通の時間軸で解析することができる。
【００９１】
＜Ｄ．制御システムのソフトウェア構成例＞
次に、本実施の形態に係る制御システム１の要部を実現するソフトウェア構成例について説明する。
【００９２】
図８は、本実施の形態に係る制御システム１を構成するＣＰＵユニット１００およびサポート装置２００のソフトウェア構成例を示すブロック図である。図８には、組込データベース１８０に格納されたデータの利用例として、観測値の時系列データまたは観測値から算出される特徴量の時系列データに基づいて機械学習を行うとともに、当該機械学習により得られた学習結果を利用して、異常の有無を検知する処理が可能な構成を示す。但し、この機械学習に係る機能については、本発明の本質ではなく、オプショナルな構成である。
【００９３】
図８を参照して、ＣＰＵユニット１００は、ＰＬＣエンジン１３０と、機械学習エンジン１４０と、組込データベース１８０と、組込データベース管理サービス１９０とを含む。
【００９４】
ＰＬＣエンジン１３０は、典型的には、ＣＰＵユニット１００のプロセッサ１０２が、二次記憶装置１０８に格納されているシステムプログラムを読出して主記憶装置１０６に展開して実行することで各種プログラムの実行環境が提供され、当該実行環境下において、各種プログラムを実行することができる。
【００９５】
より具体的には、ＰＬＣエンジン１３０は、スケジューラ１３４と、変数管理プログラム１３６と、制御プログラム１３８とを含む。
【００９６】
スケジューラ１３４は、ＣＰＵユニット１００で実行されるプロセスやタスクなどに対してリソース割当てや実行タイミングなどを管理する。
【００９７】
変数管理プログラム１３６は、ＰＬＣエンジン１３０（ＣＰＵユニット１００）で利用可能な値を変数の形で管理する。より具体的には、変数管理プログラム１３６は、例えば、システム変数１３６２と、ユーザ／デバイス変数１３６４と、異常検知パラメータ１３６６とを管理する。システム変数１３６２は、ＣＰＵユニット１００および接続される各デバイスの状態などを示す。ユーザ／デバイス変数１３６４は、ＣＰＵユニット１００で実行されるプログラムにより生成または更新される値、ならびに、ＣＰＵユニット１００とローカルバスまたはフィールドバスを介して接続される各種デバイスが保持する値を示す。異常検知パラメータ１３６６は、機械学習エンジン１４０において異常であると検知するためのしきい値などを示す。
【００９８】
スケジューラ１３４および変数管理プログラム１３６については、システムプログラムの一部として実装されてもよい。この場合には、これらのプログラムが提供するそれぞれの機能を単一のシステムプログラムが提供するようにしてもよい。
【００９９】
制御プログラム１３８は、典型的には、ユーザプログラム１３８１と、組込データベース読出しプログラム１３８２と、組込データベース書込みプログラム１３８３と、機械学習エンジンインターフェイス１３８４と、特徴量生成プログラム１３８８とにより構成される。
【０１００】
ユーザプログラム１３８１は、設備や機械などの制御対象に応じて作成される、シーケンス演算やモーション演算などの命令を含む。
【０１０１】
組込データベース読出しプログラム１３８２は、典型的には、ユーザプログラム１３８１に規定された命令によって呼び出され、組込データベース１８０から指定されたデータを読出す。組込データベース１８０から何らかのデータが読出される場合、必要に応じて、読出されたデータに対して、後述するような遅延時間補正が実施されてもよい。この遅延時間補正には、予め取得したデータ管理情報３５０が利用されてもよい。
【０１０２】
組込データベース書込みプログラム１３８３は、典型的には、ユーザプログラム１３８１に規定された命令によって呼び出され、組込データベース１８０に対して指定されたデータを書込む。典型的には、組込データベース書込みプログラム１３８３は、機能ユニット１５０を介して収集される観測値を組込データベース１８０に書込む。組込データベース１８０に対して何らかのデータが書込まれる場合、必要に応じて、対応するデータ管理情報３５０が生成および格納されてもよい。
【０１０３】
機械学習エンジンインターフェイス１３８４は、ユーザプログラム１３８１に規定された命令に従って、機械学習エンジン１４０での処理実行を指示する。より具体的には、機械学習エンジンインターフェイス１３８４は、学習要求プログラム１３８５と、監視要求プログラム１３８６と、シリアライズプログラム１３８７とを含む。
【０１０４】
学習要求プログラム１３８５は、機械学習エンジン１４０に対して、指定された観測値または観測値から算出される特徴量を学習結果として書込むように要求する。
【０１０５】
監視要求プログラム１３８６は、機械学習エンジン１４０に対して、指定された観測値または観測値から算出される特徴量を送信して、異常の有無を判断するように要求する。
【０１０６】
シリアライズプログラム１３８７は、組込データベース１８０に対して書込まれるデータに対してシリアライズ処理を行う。または、シリアライズプログラム１３８７は、組込データベース１８０から読出されるデータに対してデシリアライズ処理を行う。シリアライズ処理は、対象のデータを格納可能なバイト列に変換する処理に相当し、デシリアライズ処理は、シリアライズ処理の逆変換処理に相当する。なお、組込データベース１８０へのアクセス速度およびアクセス容量などに応じて、必ずしもシリアライズ処理およびデシリアライズ処理を行う必要はない。すなわち、シリアライズプログラム１３８７はオプショナルな構成である。
【０１０７】
特徴量生成プログラム１３８８は、典型的には、ユーザプログラム１３８１に規定された命令によって呼び出され、指定された観測値に対して予め定められた演算処理を実施することで、特徴量を算出する。
【０１０８】
機械学習エンジン１４０は、上述したような機械学習の機能を提供する。典型的には、機械学習エンジン１４０は、ＣＰＵユニット１００のプロセッサ１０２が、二次記憶装置１０８に格納されているシステムプログラムを読出して主記憶装置１０６に展開して実行することで実現される。但し、ＰＬＣエンジン１３０および機械学習エンジン１４０は、互いに別プロセスとしてプロセッサ１０２で実行されるようにしてもよい。このような別プロセスとすることで、ＰＬＣエンジン１３０から機械学習エンジン１４０の実行開始などのタイミングを制御できる。
【０１０９】
より具体的には、機械学習エンジン１４０は、学習機能１４２および異常検知機能１４４を含む。学習機能１４２は、ＰＬＣエンジン１３０から与えられた観測値または観測値から算出される特徴量と何らかのラベルとを関連付けて、学習結果として格納する。異常検知機能１４４は、ＰＬＣエンジン１３０から与えられた観測値または観測値から算出される特徴量を受けると、予め用意されている学習結果と比較し、学習結果からの乖離の度合いなどを示す評価値が異常検知パラメータ１３６６として設定されているしきい値を超えるか否かに基づいて、異常の有無を検知する。異常検知機能１４４は、何らかの異常を検知すると、その検知した異常の内容を含むイベントログ１４６を出力するようにしてもよい。
【０１１０】
組込データベース１８０は、典型的には、主記憶装置１０６または二次記憶装置１０８（図２参照）に配置されたデータを格納するための記憶領域と、当該記憶領域へのデータ追加、更新、削除、検索といった処理を提供するためのデータベース管理プロセスとにより実現される。組込データベース１８０は、組込データベース書込みプログラム１３８３により書込まれる時系列データを格納する。
【０１１１】
組込データベース１８０を構成するデータベース管理プロセスは、外部からの要求（クエリ）に応答して、指定されたデータを応答する。データベース管理プロセスは、典型的には、ＣＰＵユニット１００のプロセッサ１０２が、二次記憶装置１０８に格納されているシステムプログラムを読出して主記憶装置１０６に展開して実行することで実現される。
【０１１２】
組込データベース管理サービス１９０は、組込データベース１８０へのデータ書込みおよび組込データベース１８０からのデータ読出しを管理する。組込データベース管理サービス１９０は、遅延時間取得モジュール１９２と、時刻決定モジュール１９４と、データ出力モジュール１９６とを含む。
【０１１３】
遅延時間取得モジュール１９２は、後述するような処理によって、データ管理情報３５０を生成する。すなわち、遅延時間取得モジュール１９２は、観測値に係る遅延時間を取得するとともに、取得した遅延時間を示す情報（データ管理情報３５０）を格納する。上述したように、データ管理情報３５０は、静的遅延補正用データ３５２および動的遅延補正用データ３５４を含んでいてもよい。
【０１１４】
時刻決定モジュール１９４は、遅延時間取得モジュール１９２により取得された遅延時間を示す情報（データ管理情報３５０）に基づいて、観測値を示す信号が現れた時刻を決定する。すなわち、時刻決定モジュール１９４は、対象の観測値が取得された入力信号が実際に機能ユニット１５０へ入力された時刻、あるいは、対象の観測値が取得された入力信号が実際に発現した時刻を算出する。
【０１１５】
ＰＬＣエンジン１３０においては、観測値に時刻が対応付けられているので、時刻決定モジュール１９４は、組込データベース１８０に格納される時系列データに規定される時刻に対する遅延時間補正を行うことで、観測値を示す信号が現れた時刻を決定する。
【０１１６】
遅延時間補正は、組込データベース１８０へのデータ書込み時に行ってもよいし、組込データベース１８０からデータを読出し時に行ってもよい。より具体的には、時刻決定モジュール１９４は、（１）ＰＬＣエンジン１３０から与えられたデータを組込データベース１８０へ書込む段階で遅延時間補正を行う、（２）ＰＬＣエンジン１３０から要求されたデータを組込データベース１８０から読出して応答する段階で遅延時間補正を行う、（３）組込データベース１８０から何らかのデータを読出して機械学習エンジン１４０などへ出力する段階で遅延時間補正を行う、のいずれかを実施するようにしてもよい。
【０１１７】
データ出力モジュール１９６は、外部からの要求に応じて、組込データベース１８０から読出した時系列データと、当該読出した時系列データに対応するデータ管理情報３５０とを対応付けて出力する。すなわち、データ出力モジュール１９６は、組込データベース１８０に格納されている観測値と、当該観測値に対応付けられる遅延時間を示す情報（データ管理情報３５０）とを関連付けて出力する。なお、データ管理情報３５０に含まれる静的遅延補正用データ３５２および動的遅延補正用データ３５４の両方を対応付けて出力してもよいし、いずれか一方のみを出力するようにしてもよい。
【０１１８】
一方、サポート装置２００には、機械学習に向けられた各種機能が実装されていてもよい。例えば、本実施の形態に係るサポート装置２００には、データマイニングツール２６０および機械学習パラメータ設定ツール２７０が実装されている。
【０１１９】
データマイニングツール２６０は、組込データベース１８０に格納される観測値の時系列データから、制御対象に生じ得る何らかの異常を検知するのに適した特徴量や兆候などを探し出す機能を提供する。具体的には、データマイニングツール２６０は、組込データベースアクセス機能２６２と、データマイニング機能２６４と、可視化機能２６６とを含む。
【０１２０】
組込データベースアクセス機能２６２は、ＣＰＵユニット１００に対して、要求（クエリ）を送信することで、必要なデータを組込データベース１８０から取得する。
【０１２１】
データマイニング機能２６４は、組込データベース１８０から取得したデータを解析することで、制御対象に発生し得る異常を検知するのに適した特徴量や異常検知手法を決定する。また、データマイニング機能２６４は、決定した特徴量や異常検知手法に応じたしきい値（異常検知パラメータ１３６６）などを決定することもできる。さらに、データマイニング機能２６４は、決定した特徴量および異常検知手法ならびに異常検知パラメータなどの妥当性などについても評価することができる。
【０１２２】
可視化機能２６６は、データマイニング機能２６４に決定された内容を視覚的にユーザへ通知し、あるいは、解析結果や異常検知の精度などをグラフ化するような機能を有している。
【０１２３】
機械学習パラメータ設定ツール２７０は、ＰＬＣ変数アクセス機能２７２を有しており、データマイニング機能２６４により決定されたしきい値などをＣＰＵユニット１００の異常検知パラメータ１３６６へ反映する。
【０１２４】
＜Ｅ．遅延時間補正＞
次に、本実施の形態に係る制御システム１における遅延時間補正について説明する。
【０１２５】
（ｅ１：遅延時間補正の全体処理）
本実施の形態に係る制御システム１においては、静的遅延として、機能ユニット起因遅延ｄ１および基本通信遅延ｄ２を想定し、動的遅延として、動的通信遅延ｄ３を想定する。
【０１２６】
機能ユニット起因遅延ｄ１は、機能ユニット１５０への入力信号がデータとしてＣＰＵユニット１００またはカプラユニット１６０へ送出されるまでに要する遅延時間を意味する。すなわち、機能ユニット起因遅延ｄ１は、機能ユニット１５０に設定される処理特性（例えば、サンプリング周期、フィルタ特性など）および機能ユニット１５０の機能（例えば、ＡＩ機能、ＤＩ機能の別）の少なくとも一方に依存して定まる遅延時間に相当する。
【０１２７】
基本通信遅延ｄ２は、機能ユニット１５０からＣＰＵユニット１００までデータが伝送されるのに要する遅延時間を意味する。すなわち、基本通信遅延ｄ２は、機能ユニット１５０からＣＰＵユニット１００（プロセッサ１０２）までのデータ伝送路に依存して定まる遅延時間に相当する。より具体的には、基本通信遅延ｄ２は、定周期通信の１通信周期分に相当する伝搬遅延時間と、ローカルバスまたはフィールドバスのケーブル長などに依存する伝搬遅延時間との合計に相当する。
【０１２８】
このような基本通信遅延ｄ２は、ＣＰＵユニット１００から時刻同期信号をローカルバスまたはフィールドバスへ送出するとともに、その時刻同期信号が一巡してＣＰＵユニット１００に戻るまでに要する時間に基づいて算出できる。
【０１２９】
なお、一般的に、ローカルバスについては、フィールドバスに比較して通信周期が十分に短く、かつ、伝送距離も短いので、基本通信遅延ｄ２としては、フィールドバス上のデータ伝送のみを考慮するようにしてもよい。
【０１３０】
機能ユニット起因遅延ｄ１および基本通信遅延ｄ２は、基本的には、収集される観測値毎に設定される。但し、同一の機能ユニット１５０が複数の入力信号を受付け可能になっており、それぞれの入力信号に対する入力処理の設定が同一であるような場合には、当該同一の機能ユニット１５０に入力される入力信号に対する観測値の間では、機能ユニット起因遅延ｄ１および基本通信遅延ｄ２を共通化できる。このような場合には、機能ユニット起因遅延ｄ１および基本通信遅延ｄ２は、機能ユニット１５０毎に設定されてもよい。
【０１３１】
動的通信遅延ｄ３は、通信マスターとして機能するローカルバスコントローラまたはフィールドバスコントローラの同期管理機能により逐次算出される。より具体的には、通信マスターは、自身のカウンタが示すカウンタ値と、接続されている通信スレーブのカウンタが示すカウンタ値との間のずれの程度を逐次監視しており、このずれが予め定められた値より大きくなると、時刻同期信号をローカルバスまたはフィールドバスへ送信して時刻を同期させる。動的通信遅延ｄ３は、通信マスターのカウンタが示すカウンタ値と通信スレーブのカウンタが示すカウンタ値との間のずれの程度に相当する。
【０１３２】
図９は、本実施の形態に係る制御システム１における遅延時間補正の全体処理を説明するための図である。図９には、一例として、カプラユニット１６０に装着される機能ユニット１５０へセンサからの信号が入力される場合を示す。
【０１３３】
図９を参照して、いずれかの機能ユニット１５０に入力される入力信号（センサから出力される信号に相当）５００は、機能ユニット起因遅延ｄ１（＝遅延時間α）だけ遅れて、カプラユニット１６０へ到着する。すなわち、カプラユニット１６０上の入力信号を示す時系列データ５０２においては、各観測値に対応付けられる時刻は、本来の時刻から遅延時間αだけ遅れている。
【０１３４】
さらに、カプラユニット１６０からＣＰＵユニット１００へデータ伝送が行われる際には、基本通信遅延ｄ２（＝遅延時間β）および動的通信遅延ｄ３（＝遅延時間γ（ｔ））が生じる。すなわち、ＣＰＵユニット１００上の入力信号を示す時系列データ５０４においては、各観測値に対応付けられる時刻は、本来の時刻から、遅延時間βに加えて遅延時間γ（ｔ）分だけさらに遅れている。ここで、動的通信遅延ｄ３の度合いを示す遅延時間γ（ｔ）は、時間とともに逐次変化するので、時間ｔの関数として定義することができる。
【０１３５】
基本的には、ＣＰＵユニット１００上で実行される制御演算においては、図９に示す時系列データ５０４が用いられる。また、時系列データ５０４が組込データベース１８０に格納される。本実施の形態に係る制御システム１においては、ＣＰＵユニット１００上の時系列データ５０４の時刻に生じる遅延時間を補正することになる。
【０１３６】
図９に示すように、静的遅延補正用データ３５２は、機能ユニット起因遅延ｄ１の度合いを示す遅延時間αと、基本通信遅延ｄ２の度合いを示す遅延時間βとの組合せを含む。この遅延時間αと遅延時間βとの組合せは、観測値（変数）毎または機能ユニット毎に定義されることになる。
【０１３７】
図９に示すように、動的遅延補正用データ３５４は、動的通信遅延ｄ３の度合いを示す遅延時間γ（ｔ）は、時刻毎の値として定義される。動的遅延補正用データ３５４は、伝送経路の状態を反映するものであるので、ローカルバス毎またはフィールドバス毎に定義されてもよいし、通信スレーブ毎に定義されてもよい。
【０１３８】
なお、図９においては、説明の便宜上、カプラユニット１６０と機能ユニット１５０とを接続するローカルバスにおける伝搬遅延時間は、無視できるとして説明したが、この伝搬遅延時間を基本通信遅延ｄ２または動的通信遅延ｄ３に含めるようにしてもよい。
【０１３９】
上述の説明においては、機能ユニット１５０に起因する遅延として、静的遅延である機能ユニット起因遅延ｄ１を想定する場合を例に説明したが、機能ユニット１５０での処理ゆらぎなどに起因する動的遅延をさらに考慮するようにしてもよい（図９に示す動的遅延ｄ１’に相当）。このような動的遅延ｄ１’については、例えば、機能ユニット１５０に、温度補償機能が付加された高精度な水晶発振器などを搭載して、その水晶発振器からのパルスなどに基づいてタイミングのずれなどを、機能ユニット１５０またはカプラユニット１６０などで逐次検出するようにしてもよい。
【０１４０】
図９には、カプラユニット１６０に装着される機能ユニット１５０へセンサからの信号が入力される場合を示すが、ＣＰＵユニット１００に装着される機能ユニット１５０へセンサからの信号が入力される場合には、ＣＰＵユニット１００においては、図９に示す時系列データ５０４ではなく、時系列データ５０２が取得されることになる。
【０１４１】
ＣＰＵユニット１００においては、上述のような遅延を含む観測値が組込データベース１８０に格納される。すなわち、ＣＰＵユニット１００のプロセッサ１０２（により実行される組込データベース書込みプログラム１３８３）は、観測値と当該観測値がＣＰＵユニット１００において利用可能になった時刻とを対応付けた、時系列データ５０４のようなデータを組込データベース１８０に書込む。
【０１４２】
ＣＰＵユニット１００上の時系列データ５０４に対する遅延時間補正として、まず、時刻決定モジュール１９４（図８）は、静的遅延補正用データ３５２を参照して、時系列データ５０４に格納される時刻から静的遅延を示す遅延時間αおよび遅延時間βを減じる。時系列データ５０４に格納される時刻は、ＣＰＵユニット１００において各観測値に対応付けられる時刻であり、例えば、ある制御周期において受信された観測値であれば、当該受信された制御周期を代表する基準時刻を用いてもよい。
【０１４３】
上述したような静的遅延の補正によって、静的遅延補正済データ５０６が生成される。用途によっては、静的遅延補正済データ５０６をそのまま利用することが可能である。そのため、静的遅延補正済データ５０６の状態で外部出力されてもよい。この場合、静的遅延補正済データ５０６に加えて、動的遅延補正用データ３５４が併せて出力されてもよい。
【０１４４】
さらに、時刻決定モジュール１９４（図８）は、動的遅延補正用データ３５４を参照して、静的遅延補正済データ５０６の各時刻から対応する遅延時間γ（ｔ）がそれぞれ減じる。このような動的遅延の補正によって、動的遅延補正済データ５０８が生成される。動的遅延補正済データ５０８は、対応する観測値が実際に現れた時刻を正確に反映した時系列データとなる。この動的遅延補正済データ５０８が外部出力されてもよい。
【０１４５】
上述したように、時刻決定モジュール１９４（図８）は、組込データベース１８０から読出した観測値について、当該観測値に対応付けられた時刻を、遅延時間取得モジュール１９２（図８）により取得された遅延時間を示す情報（データ管理情報３５０）に基づいて補正することで、当該観測値を示す信号が現れた時刻を決定する。
【０１４６】
図９に示す静的補正および動的補正は、時系列データ５０４の状態で組込データベース１８０に格納し、組込データベース１８０から読出された後に実施するようにしてもよい。あるいは、時系列データ５０４に対して静的補正または動的補正を行って静的遅延補正済データ５０６または動的遅延補正済データ５０８を生成した上で、組込データベース１８０に書込むようにしてもよい。静的遅延補正用データ３５２および動的遅延補正用データ３５４が用意されていれば、遅延時間補正はいずれの段階で実施するようにしてもよい。さらに、ＣＰＵユニット１００で遅延時間補正を行うようにしてもよいし、サポート装置２００などの外部装置で遅延時間補正を行うようにしてもよい。
【０１４７】
また、説明の便宜上、静的補正および動的補正を分けて実施する例を示すが、静的補正および動的補正を同時に実施してもよい。
【０１４８】
（ｅ２：遅延時間補正用データ）
次に、本実施の形態に係る遅延時間補正を行うためのデータ管理情報３５０に含まれる静的遅延補正用データ３５２および動的遅延補正用データ３５４について説明する。
【０１４９】
図１０は、本実施の形態に係る制御システム１において利用されるデータ管理情報３５０の構成例を示すテーブルである。図１０を参照して、データ管理情報３５０は、静的遅延補正用データ３５２および動的遅延補正用データ３５４の少なくとも一方を含む。
【０１５０】
静的遅延補正用データ３５２は、（１）ＣＰＵユニット１００が保持する基本通信遅延情報３５２１、（２）サポート装置２００が保持するシステム構成情報３５２２、（３）サポート装置２００が保持するスレーブ設定情報３５２３、（４）サポート装置２００が保持するユーザプログラム１３８１、といった情報に基づいて生成される。
【０１５１】
基本通信遅延情報３５２１は、図９に示す基本通信遅延ｄ２に相当する遅延時間を含む。この遅延時間は、ローカルバスまたはフィールドバスのケーブル長などに依存する。基本通信遅延情報３５２１に含まれる遅延時間は、ＣＰＵユニット１００の起動時などに計測されて取得される。
【０１５２】
システム構成情報３５２２は、図９に示す基本通信遅延ｄ２を算出するための情報を含む。より具体的には、システム構成情報３５２２は、ローカルバスまたはフィールドバスに接続されている機能ユニット１５０の数、種類、トポロジーなどの情報を含む。システム構成情報３５２２を参照することで、ローカルバスまたはフィールドバスに接続されている機能ユニット１５０（通信スレーブに相当）の数などに起因する遅延時間を決定することができる。
【０１５３】
スレーブ設定情報３５２３は、図９に示す機能ユニット起因遅延ｄ１を算出するための情報を含む。より具体的には、スレーブ設定情報３５２３は、ＣＰＵユニット１００に装着されている機能ユニット１５０およびカプラユニット１６０に装着される機能ユニット１５０の各々についての設定値（例えば、サンプリング周期、フィルタ特性など）の情報を含む。スレーブ設定情報３５２３を参照することで、機能ユニット１５０にセンサなどからの信号が入力されてから、実際にデータとして出力されるまでの遅延時間を決定することができる。
【０１５４】
ユーザプログラム１３８１は、図９に示す基本通信遅延ｄ２を算出するために用いられてもよい。より具体的には、ユーザプログラム１３８１には、ＣＰＵユニット１００で実行される命令群が記述されており、命令群はタスク単位に記述されている。各タスクについては、実行周期が予め定義されている。ユーザプログラム１３８１を解析することで、ユーザ変数などの更新周期を推定することができる。すなわち、各ユーザ変数に対する更新命令がいずれのタスクに存在するのかを解析するとともに、各タスクの実行周期を参照することで、各ユーザ変数の更新周期を決定できる。
【０１５５】
なお、システム構成情報３５２２、スレーブ設定情報３５２３、ユーザプログラム１３８１については、ＣＰＵユニット１００へ転送される場合もあり、このような場合には、サポート装置２００ではなく、ＣＰＵユニット１００が保持するこれらの情報を参照するようにしてもよい。
【０１５６】
また、ＣＰＵユニット１００が図９に示す基本通信遅延ｄ２を実測できる場合には、必ずしも、システム構成情報３５２２およびユーザプログラム１３８１を参照しなくてもよい。但し、すべての機能ユニット１５０について基本通信遅延ｄ２を実測できるとは限らないので、実測できない場合には、システム構成情報３５２２およびユーザプログラム１３８１などを参照して、基本通信遅延ｄ２を算出あるいは推定してもよい。
【０１５７】
一方、動的遅延補正用データ３５４は、リアルタイム通信遅延情報３５４１に基づいて生成される。動的遅延補正用データ３５４は、各時間帯における遅延時間の変化を含み、基本的には、機能ユニット１５０毎に規定されてもよい。
【０１５８】
リアルタイム通信遅延情報３５４１は、各通信スレーブが基本通信遅延ｄ２に対して現在どの程度遅延しているのかという情報を含む。通信マスター（上述したように、通信マスターとして機能する、ローカルバスコントローラおよびフィールドバスコントローラ）は、接続されている通信スレーブからの応答に基づいて、どの程度の遅延が発生しているのかを算出する。この算出される遅延時間がリアルタイム通信遅延情報３５４１に相当する。通信マスターは、算出される遅延時間に基づいて、各通信スレーブに対して時刻補正を行うための時刻同期信号を出力する。
【０１５９】
動的遅延補正用データ３５４は、リアルタイム通信遅延情報３５４１に含まれる各時間帯における遅延時間を含む。リアルタイム通信遅延情報３５４１は、図９に示す動的通信遅延ｄ３に相当する遅延時間を含む。リアルタイム通信遅延情報３５４１は、ＣＰＵユニット１００（より具体的には、通信マスターとして機能するローカルバスコントローラまたはフィールドバスコントローラ）によって逐次更新される。
【０１６０】
より具体的には、通信マスターは、Ｉ／Ｏリフレッシュの実行タイミングにて時間計測を開始し、当該Ｉ／Ｏリフレッシュに応じた各通信スレーブからの応答を受信したタイミングまでの時間を計測する。通信マスターは、この計測した時間から基本通信遅延ｄ２を引くことで動的通信遅延ｄ３を算出する。Ｉ／Ｏリフレッシュとは、各通信スレーブからの入力値、および、各通信スレーブへの出力値および指令値を更新する処理を意味する。このＩ／Ｏリフレッシュにおいて、通信マスターは、各通信スレーブに対して、Ｉ／Ｏリフレッシュに必要なフレームを送出し、各通信スレーブは、通信マスターからの通信スレーブが到着すると、当該フレームに含まれる出力値または指令値を読出した後に、予め収集している入力値を通信マスターへ応答する。
【０１６１】
上述のＩ／Ｏリフレッシュの実行タイミングとは、Ｉ／Ｏリフレッシュに必要なフレームを通信マスターが送出するタイミングを意味し、各通信スレーブからの応答までの時間が、静的遅延および動的遅延を含む通信遅延に相当することになる。
【０１６２】
（ｅ３：遅延時間補正の実装例）
次に、本実施の形態に係る遅延時間補正を実現するための実装例について説明する。
【０１６３】
図１１は、本実施の形態に係る制御システム１における遅延時間補正の実装例を示す模式図である。図１１を参照して、本実施の形態に係る遅延時間補正に関する構成として、ＣＰＵユニット１００は、ＰＬＣエンジン１３０および組込データベース管理サービス１９０を含む。
【０１６４】
ＰＬＣエンジン１３０は、システム変数１３６２およびユーザ／デバイス変数１３６４を管理している（図８など参照）。また、ＰＬＣエンジン１３０は、基本通信遅延情報３５２１およびリアルタイム通信遅延情報３５４１を生成および更新する。
【０１６５】
組込データベース管理サービス１９０は、組込データベース１８０と連携して処理を実行する。組込データベース管理サービス１９０は、組込データベース１８０へのデータ書込みおよびデータ読出しなどを処理するタスクである。組込データベース管理サービス１９０は、典型的には、ＣＰＵユニット１００のプロセッサ１０２が、二次記憶装置１０８に格納されているシステムプログラムを読出して主記憶装置１０６に展開して実行することで実現される。
【０１６６】
図１１に示す実装例においては、組込データベース管理サービス１９０は、システム状態値時系列データ１８２および制御変数値時系列データ１８４を組込データベース１８０に書込む。システム状態値時系列データ１８２は、システム変数１３６２に含まれる任意の変数値の時系列データを含み、制御変数値時系列データ１８４は、ユーザ／デバイス変数１３６４に含まれる任意の変数値の時系列データを含む。システム状態値時系列データ１８２および制御変数値時系列データ１８４が遅延時間補正の対象（補正対象データ）となる。
【０１６７】
なお、システム状態値時系列データ１８２と制御変数値時系列データ１８４との間では、更新頻度が異なることが想定されているため、両時系列データをそれぞれ独立したデータファイルとして格納されている。但し、システム状態値時系列データ１８２および制御変数値時系列データ１８４を共通のデータファイルとして格納するようにしてもよい。
【０１６８】
また、組込データベース管理サービス１９０（図８に示す遅延時間取得モジュール１９２）は、静的遅延補正用データ３５２および動的遅延補正用データ３５４を生成または更新する。静的遅延補正用データ３５２および動的遅延補正用データ３５４についても、組込データベース１８０に格納されてもよい。あるいは、静的遅延補正用データ３５２および動的遅延補正用データ３５４を二次記憶装置１０８またはメモリカード１１６（図２参照）に格納するようにしてもよい。
【０１６９】
すなわち、システム状態値時系列データ１８２および制御変数値時系列データ１８４に対して事後的に遅延時間補正を行う場合には、静的遅延補正用データ３５２および動的遅延補正用データ３５４と、システム状態値時系列データ１８２および制御変数値時系列データ１８４とを任意の方法で対応付けて格納しておけばよい。
【０１７０】
さらに、システム状態値時系列データ１８２および制御変数値時系列データ１８４に対して遅延時間補正を行った上で、組込データベース１８０に書込む方法を採用する場合には、静的遅延補正用データ３５２および動的遅延補正用データ３５４を事後的に利用しなくてもよいので、遅延時間補正後には廃棄するようにしてもよい。
【０１７１】
また、サポート装置２００は、ユーザによって設定または開発される、システム構成情報３５２２、スレーブ設定情報３５２３、ユーザプログラム１３８１を保持する。
【０１７２】
図１１に示す実装例においては、（１）サポート装置２００からＣＰＵユニット１００へのプログラムダウンロード時、（２）ＣＰＵユニット１００での制御演算中、（３）ＣＰＵユニット１００の起動時、のそれぞれにおいて、データ更新またはデータ作成が実施される。
【０１７３】
（１）サポート装置２００からＣＰＵユニット１００へのプログラムダウンロード時において、サポート装置２００が保持する情報を用いて、静的遅延補正用データ３５２が生成または更新されてもよい。
【０１７４】
より具体的には、サポート装置２００からＣＰＵユニット１００へ必要なデータが転送される際に、組込データベース管理サービス１９０は、システム構成情報３５２２およびスレーブ設定情報３５２３を参照して、機能ユニット起因遅延ｄ１および基本通信遅延ｄ２を算出して、静的遅延補正用データ３５２として保存する。すなわち、組込データベース管理サービス１９０は、システム構成情報３５２２およびスレーブ設定情報３５２３から遅延情報を取得する。
【０１７５】
また、組込データベース管理サービス１９０は、ユーザプログラム１３８１を解析して、基本通信遅延ｄ２を算出、または、基本通信遅延ｄ２に対する補正量を算出してもよい。この算出結果についても、静的遅延補正用データ３５２に反映される。
【０１７６】
（２）ＣＰＵユニット１００での制御演算中において、システム状態値時系列データ１８２、制御変数値時系列データ１８４、動的遅延補正用データ３５４の値が逐次更新される。
【０１７７】
より具体的には、組込データベース書込みプログラム１３８３（図８参照）などからの要求に応答して、組込データベース管理サービス１９０は、システム変数１３６２に含まれる指定された変数値を指定された書込み周期でシステム状態値時系列データ１８２に書込み、また、ユーザ／デバイス変数１３６４に含まれる指定された変数値を指定された書込み周期で制御変数値時系列データ１８４に書込む。
【０１７８】
システム状態値時系列データ１８２および制御変数値時系列データ１８４への変数値の書込みは、制御演算の実行周期で高速に実施されてもよい。
【０１７９】
また、組込データベース管理サービス１９０（図８に示す時刻決定モジュール１９４）は、通信マスターによって逐次計測されるリアルタイム通信遅延情報３５４１に基づいて、動的遅延補正用データ３５４を生成または更新する。動的遅延補正用データ３５４の更新は、予め定義された条件が成立した場合に実施するようにしてもよい。このような予め定義された条件は、状態定義テーブルとして記述されてもよい。
【０１８０】
（３）ＣＰＵユニット１００の起動時において、静的遅延補正用データ３５２の値が更新されてもよい。上述したように、ＣＰＵユニット１００（より具体的には、通信マスターとして機能するローカルバスコントローラまたはフィールドバスコントローラ）は、起動時などに、時刻同期信号などを送出して、基本通信遅延ｄ２に相当する遅延時間を計測する。この計測された遅延時間が基本通信遅延情報３５２１である。組込データベース管理サービス１９０は、基本通信遅延情報３５２１に基づいて、静的遅延補正用データ３５２の値を更新してもよい。
【０１８１】
（ｅ４：遅延時間補正の処理手順）
次に、本実施の形態に係る遅延時間補正に係る処理手順の一例について説明する。
【０１８２】
図１２は、本実施の形態に係る制御システム１における遅延時間補正に係る処理手順を示すフローチャートである。図１２には、図１１に示す実装例に対応させて、ＰＬＣエンジン１３０と、組込データベース管理サービス１９０と、サポート装置２００との間の遣り取りの一例を示す。
【０１８３】
図１２を参照して、まず、ＣＰＵユニット１００において制御対象に応じた制御演算を実行するための各種の設定およびユーザプログラムの開発が実施される。なお、図１２に示すブロックのうち、破線で示すものは、基本的には、ユーザが実施する処理である。
【０１８４】
具体的には、サポート装置２００において、ユーザは、対象の制御システム１の構成に応じて、システム構成情報３５２２を作成し（ステップＳ１００）、対象の制御システム１に含まれる機能ユニット１５０の数、種類、トポロジーなどに応じて、スレーブ設定情報３５２３を作成する（ステップＳ１０２）。また、ユーザは、ユーザ／デバイス変数１３６４などの状態値を定義する（ステップＳ１０４）。以上のような一連の設定処理が完了すると、ユーザは、ユーザプログラム１３８１を作成する（ステップＳ１０６）。
【０１８５】
ユーザによって作成されたユーザプログラム１３８１は、システム構成情報３５２２およびスレーブ設定情報３５２３などとともに、ＣＰＵユニット１００（ＰＬＣエンジン１３０）へ転送（プログラムダウンロード）される。
【０１８６】
ユーザが、サポート装置２００を利用して、ステップＳ１００〜Ｓ１０６までの処理を実施すると、ＣＰＵユニット１００において制御演算を実行できる状態になる。
【０１８７】
続くステップＳ１０８〜Ｓ１１２は、静的遅延補正用データ３５２を生成するための処理である。
【０１８８】
より具体的には、サポート装置２００は、ユーザプログラム１３８１を解析して、基本通信遅延ｄ２または基本通信遅延ｄ２に対する補正量を算出する（ステップＳ１０８）。続いて、サポート装置２００は、システム構成情報３５２２およびスレーブ設定情報３５２３を参照するとともに、ステップＳ１０８での解析結果を利用して、静的遅延補正用データ３５２を生成する（ステップＳ１１０）。この生成された静的遅延補正用データ３５２は、ＣＰＵユニット１００（システム状態値時系列データ１８２）へ転送される。
【０１８９】
さらに、サポート装置２００は、動的遅延補正用データ３５４を更新する条件を示す状態定義テーブルを作成する（ステップＳ１１２）。この生成された状態定義テーブルは、ＣＰＵユニット１００（システム状態値時系列データ１８２）へ転送される。
【０１９０】
なお、ＣＰＵユニットにおいて静的遅延補正用データ３５２に必要な遅延時間のすべてを収集できる場合には、上述のステップＳ１０８およびＳ１１０の処理を省略してもよい。
【０１９１】
必要なプログラムおよび設定などのデータが転送されたＣＰＵユニット１００では、ユーザプログラム１３８１などに従う制御演算が実行される。より具体的には、ＣＰＵユニット１００が起動されると（ステップＳ３００）、続いて、ＰＬＣエンジン１３０が起動される（ステップＳ３０２）とともに、組込データベース管理サービス１９０も起動される（ステップＳ２００）。ステップＳ２００において、組込データベース１８０によるデータベースサービス機能の提供が開始または再開される。
【０１９２】
組込データベース管理サービス１９０の起動後、ＰＬＣエンジン１３０は、サポート装置２００から転送されたシステム構成情報３５２２およびスレーブ設定情報３５２３などを展開する（ステップＳ３０４）。以上のような処理によって、ＣＰＵユニット１００のＰＬＣエンジン１３０は制御演算の実行が可能になる。
【０１９３】
すなわち、ＰＬＣエンジン１３０は、ユーザプログラム１３８１の実行を含む制御演算を開始する（ステップＳ３０６）。ＰＬＣエンジン１３０は、ユーザプログラム１３８１に含まれる命令に従って、データベースへのデータ書込み要求を発行してもよい（ステップＳ３０８）。データ書込み要求は、組込データベース管理サービス１９０へ与えられる。また、ＰＬＣエンジン１３０は、ユーザプログラム１３８１に含まれる命令に従って、データベースからのデータ読出し要求を発行してもよい（ステップＳ３１０）。データ読出し要求は、組込データベース管理サービス１９０へ与えられる。
【０１９４】
一方、組込データベース管理サービス１９０は、起動後（ステップＳ２００の後）、基本通信遅延情報３５２１の取得をＰＬＣエンジン１３０へ要求する（ステップＳ２０２）。ＰＬＣエンジン１３０は、起動時に計測した基本通信遅延情報３５２１を、組込データベース管理サービス１９０へ応答する。組込データベース管理サービス１９０は、ＰＬＣエンジン１３０からの基本通信遅延情報３５２１に基づいて、静的遅延補正用データ３５２を生成する（ステップＳ２０４）。
【０１９５】
ステップＳ２０４までの処理によって、遅延時間補正に必要な最小限の情報が取得されるので、組込データベース管理サービス１９０は、遅延時間補正を開始する（ステップＳ２０６）。このとき、組込データベース管理サービス１９０は、動的遅延補正用データ３５４の更新処理も開始する（ステップＳ２０８）。動的遅延補正用データ３５４の更新処理においては、組込データベース管理サービス１９０は、予め定義された条件が成立すると、ＰＬＣエンジン１３０からリアルタイム通信遅延情報３５４１を取得して、動的遅延補正用データ３５４を更新する。
【０１９６】
組込データベース管理サービス１９０は、ＰＬＣエンジン１３０からのデータベース書込み要求および／またはデータベース読込み要求に応答して、遅延時間補正を実施する。
【０１９７】
より具体的には、組込データベース管理サービス１９０は、データベース書込み要求に応答して、指定された観測値（変数値）に対応する時刻に対する遅延時間補正を行って（ステップＳ２１０）、補正済データを組込データベース１８０へ書込む（ステップＳ２１２）。
【０１９８】
また、組込データベース管理サービス１９０は、データベース読出し要求に応答して、指定された観測値（変数値）についての時系列データを組込データベース１８０から読出し（ステップＳ２１４）、読出した時系列データに対する遅延時間補正を行って（ステップＳ２１６）、補正済データをＰＬＣエンジン１３０へ応答する。
【０１９９】
なお、ステップＳ２１０およびＳ２１６の遅延時間補正は、いずれか一方のみを実施するようにしてもよいし、いずれも行わないようにしてもよい。遅延時間補正が実施されない場合には、指定された観測値の時系列データとデータ管理情報３５０とが対応付けて出力されるようにしてもよい。
【０２００】
ＰＬＣエンジン１３０での制御演算がサイクリック実行されている間、組込データベース管理サービス１９０は、ステップＳ２１０〜Ｓ２１６の処理を繰返し実行する。
【０２０１】
（ｅ５：機能ユニット起因遅延ｄ１および基本通信遅延ｄ２（静的遅延））
次に、本実施の形態に係る遅延時間補正における機能ユニット起因遅延ｄ１および基本通信遅延ｄ２（静的遅延）の具体例について説明する。
【０２０２】
制御対象からの入力信号を受取る機能ユニット１５０の種類に応じて、発生し得る遅延時間（静的遅延）が変化する。そのため、ＣＰＵユニット１００またはカプラユニット１６０に装着される機能ユニット１５０の種類および設定を特定した上で、補正すべき遅延時間を決定する。このような機能ユニット１５０の種類および設定は、ＣＰＵユニット１００などに保持されるシステム構成情報やスレーブ設定情報を参照することで取得することができる。
【０２０３】
以下、機能ユニット起因遅延ｄ１および基本通信遅延ｄ２（静的遅延）の具体例を示す。
【０２０４】
図１３は、本実施の形態に係る制御システム１の機能ユニット１５０が一般的な入力処理を実行する場合のタイムチャートの一例である。図１４は、本実施の形態に係る制御システム１の機能ユニット１５０がオーバサンプリングでの入力処理を実行する場合のタイムチャートの一例である。
【０２０５】
図１３には、例えば、ワークの存在を検出する光電センサなどからの出力信号が機能ユニット１５０に入力される例を示す。また、図１３に示すタイムチャートは、カプラユニット１６０に装着される機能ユニット１５０へセンサからの出力信号が入力される場合に対応する。
【０２０６】
例えば、ワークが検出位置を通過すると、そのワークが光電センサを遮光することになり、図１３（ｄ）に示すようなセンサ出力を示す。機能ユニット１５０においては、センサ出力に対してフィルタリングおよびＡＤ変換などを行って、オン／オフの２値化された検出信号を生成する。図１３（ｃ）には、図１３（ｄ）に示すセンサ出力に対して、機能ユニット１５０から出力される信号の時間波形を示す。
【０２０７】
図１３（ｃ）に示す機能ユニット１５０の出力信号には、フィルタなどの機能ユニット起因遅延ｄ１が発生し得る。すなわち、機能ユニット１５０の出力信号には、機能ユニット１５０に設定されるフィルタの時定数やＡＤ変換の遅れなどに応じた遅延時間が発生し得る。
【０２０８】
機能ユニット１５０からの出力信号は、カプラユニット１６０を介してＣＰＵユニット１００へ伝送される。機能ユニット１５０からカプラユニット１６０までの伝送経路、ならびに、カプラユニット１６０からＣＰＵユニット１００までの伝送経路は、定周期通信を行うネットワークで構成されているため、１通信周期分だけ遅延する可能性がある。すなわち、図１３（ｂ）に示すカプラユニット１６０の出力信号には、定周期通信に起因する遅延（基本通信遅延ｄ２の一部）が発生し得る。
【０２０９】
図１３（ｂ）〜図１３（ｄ）に示すような伝送経路における各遅延時間を合計すると、ＣＰＵユニット１００のセンサ出力の値を示すセンサ変数に対して考慮すべき遅延時間が決定される（図１３（ａ）参照）。
【０２１０】
図１３（ａ）に示すような考慮すべき遅延時間は、ＣＰＵユニット１００とカプラユニット１６０とを接続するフィールドバスに関するシステム構成情報と、カプラユニット１６０に接続される機能ユニット１５０に関するスレーブ設定情報とを参照することで、推定することができる。
【０２１１】
図１４には、例えば、振動などを検出する振動センサなどからの出力信号が機能ユニット１５０に入力される例を示す。この機能ユニット１５０は、通信周期より短いサンプリング周期で入力信号のサンプリングが可能に設定されており、複数のサンプリング結果を周波数解析（例えば、ＦＦＴ（Fast Fourier Transform））した結果を出力するようになっているとする。このような通信周期より短い周期でデータ収集を行うことを、以下では、「オーバサンプリング」と略称することもある。
【０２１２】
このような構成において、例えば、図１４（ｄ）に示すようなセンサ出力が現れたとする。機能ユニット１５０においては、所定のサンプリング期間にわたって入力信号をサンプリングし（図１４（ｃ）参照）、そのサンプリング結果に対してＦＦＴを実行し、そのＦＦＴの実行結果を、図１４（ｂ）に示すようなタイミングで出力する。図１４（ｂ）には、機能ユニット１５０からのオーバサンプリング出力のタイミングを示す。機能ユニット１５０からのオーバサンプリング出力は、機能ユニット１５０からＣＰＵユニット１００までの伝送経路において、通信周期分だけさらに遅延し得る。
【０２１３】
図１４（ｂ）〜図１４（ｄ）に示すような伝送経路における各遅延時間を合計すると、ＣＰＵユニット１００のセンサ出力の値を示すセンサ変数に対して考慮すべき遅延時間が決定される（図１４（ａ）参照）。
【０２１４】
図１４（ａ）に示すような考慮すべき遅延時間は、ＣＰＵユニット１００から機能ユニット１５０までの伝送経路を特定するためのシステム構成情報と、機能ユニット１５０における設定を特定するためのスレーブ構成情報とを参照することで、推定することができる。
【０２１５】
（ｅ６：動的通信遅延ｄ３（動的遅延））
次に、本実施の形態に係る遅延時間補正における動的通信遅延ｄ３（動的遅延）の具体例について説明する。
【０２１６】
上述したように、通信マスターとして機能するローカルバスコントローラまたはフィールドバスコントローラは、通信スレーブが管理する時刻（典型的には、通信スレーブのカウンタが出力するカウンタ値）を逐次監視するとともに、時刻のずれの程度が大きくなると、時刻同期信号を出力して、そのずれを補正する。
【０２１７】
図１５は、本実施の形態に係る制御システム１の通信マスターが提供する同期管理機能を説明するための図である。例えば、図１５（ａ）に示すように、通信マスターに複数の通信スレーブが接続されている例を想定する。通信マスターおよび通信スレーブの各々は、カウンタを保持しているとする。
【０２１８】
このような構成例において、通信マスターは、予め定義された条件が成立すると、いずれかの通信スレーブに対して、時刻要求を送信する。この時刻要求に応答して、対象の通信スレーブは、自身のカウンタが出力するカウンタ値を通信マスターへ送信する（時刻応答）。
【０２１９】
通信スレーブが応答する時刻（カウンタ値）は、当該通信スレーブが時刻要求を受信したタイミングを示すものである。通信マスターと通信スレーブとの間で時刻同期が完全になされていれば、通信マスターが時刻要求を送信した時刻と、通信スレーブが応答する時刻との間は、当該時刻要求が当該通信スレーブまで伝搬されるのに要した時間（基本通信遅延ｄ２に相当）だけ遅延することになる。なお、通信スレーブは、時刻要求を受信したタイミングにおけるカウンタ値を応答するので、通信スレーブから通信マスターまでの時刻応答の伝搬遅延時間を考慮する必要はない。
【０２２０】
すなわち、通信マスターと通信スレーブとの間が完全に時刻同期されていれば、図１５（ｂ）に示すように、時刻要求を送信したタイミングを示す時刻と、通信スレーブが応答した時刻との間隔は、基本通信遅延ｄ２と一致するはずである。
【０２２１】
しかしながら、通信マスターと通信スレーブとの間の時刻同期にずれが生じている場合には、図１５（ｃ）に示すように、両時刻の間隔は広くなり、あるいは、狭くなる。通信マスターは、このような時刻要求を送信したタイミングを示す時刻と通信スレーブが応答した時刻との間隔が基本通信遅延ｄ２からずれた度合いを時刻補正量として決定する。
【０２２２】
すなわち、図１５（ｃ）に示す時刻補正量の大きさが、リアルタイム通信遅延情報３５４１（図１０および図１１参照）として保存されることになる。そして、リアルタイム通信遅延情報３５４１に基づいて、動的通信遅延ｄ３（動的遅延）に対する補正がなされることになる。このように、動的通信遅延ｄ３（動的遅延）は、互いに時刻同期されたカウンタが示すカウンタ値間のずれの程度に依存して時間的に変化する遅延時間に相当する。
【０２２３】
以上のような手順によって、動的通信遅延ｄ３（動的遅延）を行うための情報が計測される。
【０２２４】
＜Ｆ．利用形態＞
次に、本実施の形態に係る遅延時間補正による時系列データの利用形態のいくつかについて説明する。
【０２２５】
図１６は、本実施の形態に係る遅延時間補正による時系列データの利用形態の一例を説明するための図である。図１６に示すチャートにおいて、横軸は、出力されるデータの形態を示し、縦軸は、遅延時間補正の状態を示す。
【０２２６】
図１６を参照して、出力されるデータの形態としては、典型的には、（１）遅延時間補正がなされていない観測値の時系列データ（以下、「生データ」とも称す。）と対応するデータ管理情報、ならびに、（２）遅延時間補正済の時系列データ以下、「遅延補正済データ」とも称す。）、が想定される。
【０２２７】
また、遅延時間補正の状態としては、典型的には、（ａ）遅延時間の補正が行われていない状態、（ｂ）静的遅延のみ補正された状態、（ｃ）静的遅延および動的遅延の両方が補正された状態、が想定される。
【０２２８】
例えば、静的遅延は、数十μｓ〜数ｍｓオーダの遅延時間を補正することが想定されており、動的遅延は、ｎｓ〜数μｓオーダの遅延時間を補正することが想定されている。観測値の時系列データの利用目的に応じて、必要な遅延時間補正が実施されてもよい。
【０２２９】
例えば、オフライン解析やデータマイニングを実施することで、学習データを作成するような用途を想定すると、要求される精度に応じて、（ａ）〜（ｃ）のいずれかが選択されてもよい。なお、（ａ）遅延時間の補正が行われていない状態で時系列データを利用する場合には、遅延補正済データではなく、生データをそのまま出力することが好ましい。
【０２３０】
また、機械学習エンジン１４０を用いたリアルタイムでの異常検知機能を利用する場合には、データマイニングなどの結果に基づいて決定される異常検知方法に応じて、遅延時間補正の状態を適宜選択すればよい。
【０２３１】
以上のような利用形態を想定すると、本実施の形態に係るＣＰＵユニット１００において、組込データベース１８０へ観測値を書込む場合には、以下のような処理形態を採用できる。
【０２３２】
（１）機能ユニット１５０から収集された観測値を時刻と対応付けてそのまま格納
（２）機能ユニット１５０から収集された観測値に対して静的補正を行った上で格納
（３）機能ユニット１５０から収集された観測値に対して動的補正を行った上で格納
（４）機能ユニット１５０から収集された観測値に対して静的補正よび動的補正を行った上で格納
なお、上述の（１）の方法を採用することで、組込データベース１８０への観測値の格納をより高速化することができる。
【０２３３】
また、本実施の形態に係るＣＰＵユニット１００の組込データベース１８０に格納された観測値を出力する場合には、以下のような処理形態を採用できる。
【０２３４】
（１）格納された観測値の時系列データ（生データ）のみを出力
（２）格納された観測値の時系列データ（生データ）と対応する静的遅延補正用データ３５２とを出力
（３）格納された観測値の時系列データ（生データ）と対応する動的遅延補正用データ３５４とを出力
（４）格納された観測値の時系列データ（生データ）と対応する静的遅延補正用データ３５２および動的遅延補正用データ３５４とを出力
（５）格納された遅延補正済データのみを出力
（６）格納された遅延補正済データと対応する静的遅延補正用データ３５２とを出力
（７）格納された遅延補正済データと対応する動的遅延補正用データ３５４とを出力
（８）格納された遅延補正済データと対応する静的遅延補正用データ３５２および動的遅延補正用データ３５４とを出力
なお、上述した処理形態に限られず、観測値の利用形態や利用目的などに応じて、任意のデータ格納形態およびデータ出力形態を採用すればよい。また、複数種類の観測値を利用する場合には、それぞれの観測値に応じたデータ格納形態およびデータ出力形態を採用すればよく、利用される複数の観測値の間で同一のデータ格納形態またはデータ出力形態を採用する必要はない。
【０２３５】
＜Ｇ．付記＞
上述の説明においては、主として、制御対象から機能ユニット１５０に対して与えられる入力信号（デジタル信号および／またはアナログ信号）に着目して説明したが、これに限られることなく、出力信号（デジタル信号および／またはアナログ信号）についても同様に扱うことができる。
【０２３６】
＜Ｈ．利点＞
ＣＰＵユニットに内蔵されるデータベース機能（組込データベース）に対して観測値を格納するにあたって、観測値に付与される時刻は、データベースへ書込まれるときの時刻が用いられることが一般的である。事後的なデータ利用において、要求される時刻精度が緩やかな場合には、このような処理態様で問題はない。
【０２３７】
しかしながら、時刻精度を高めてより高い解析精度を実現するためには、観測値が実際に現れた時刻を正確に把握することが重要である。
【０２３８】
上述したような処理対象では、データベースに書込まれる観測値は、当該観測値を示す物理現象が実際に発生した時刻ではなく、機能ユニットやカプラユニットを介してデータ伝送されて生じる各種の遅延時間を含む時刻での値として管理されることになる。
【０２３９】
そのため、データベースに格納された観測値の時系列データを事後的に利用して、制御や解析を実施する場合、時系列データと実際の物理現象とのタイミングの不一致を個別に検討しなければならないという課題があった。
【０２４０】
このような課題に対して、本実施の形態に係るＰＬＣにおいては、ＣＰＵユニットに予め設定されている構成情報や設定情報に基づいて決定される静的遅延、および／または、時間的に変化し得る動的遅延を含むデータ管理情報を観測値に対応付けて格納する。データベースから読出された観測値に対応付けられる時刻を、データ管理情報に基づいて補正することで、当該観測値を示す物理現象が実際に発生した時刻を容易に特定することができる。
【０２４１】
このような観測値を示す物理現象が実際に発生した時刻を特定する機能を実装することで、データベースに格納された観測値の時系列データを事後的に利用する場合、遅延時間などの影響を排除できるので、高い精度で制御や解析を実施できる。
【０２４２】
また、制御装置においては、観測値の時系列データ（生データ）をそのままデータベースに格納するとともに、データ管理情報を併せて格納するという構成を採用した場合には、時刻補正処理ことに起因する制御装置での処理負荷の増大を防止できる。これにより、処理能力が高くない制御装置であっても、短いサンプリング周期でのデータベースへのデータ格納を実現できる。
【０２４３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２４４】
１  制御システム、２  ＰＬＣ、３，３Ａ，３Ｂ，３Ｃ，３Ｄ  リモートＩＯ装置、４，５，６  フィールドバス、８  上位ネットワーク、１２，１４  ローカルバス、１００  ＣＰＵユニット、１０２，２０２  プロセッサ、１０４  チップセット、１０６，２０６  主記憶装置、１０８，２０８  二次記憶装置、１１０  ネットワークコントローラ、１１２，２１２  ＵＳＢコントローラ、１１４  メモリカードインターフェイス、１１６  メモリカード、１１８，１５２，１６６  ローカルバスコントローラ、１１９，１２１，１２６，１５１，１５３，１６１，１６７  カウンタ、１２０，１６２  フィールドバスコントローラ、１２８  ＲＴＣ、１３０  ＰＬＣエンジン、１３４  スケジューラ、１３６  変数管理プログラム、１３８  制御プログラム、１４０  機械学習エンジン、１４２  学習機能、１４４  異常検知機能、１４６  イベントログ、１５０  機能ユニット、１５４，１６４  主コントローラ、１５６  機能モジュール、１６０  カプラユニット、１８０  組込データベース、１８２，１８４，３００，３１０，５０２，５０４  時系列データ、１９０  組込データベース管理サービス、１９２  遅延時間取得モジュール、１９４  時刻決定モジュール、１９６  データ出力モジュール、２００  サポート装置、２０４  ディスプレイ、２１０  内部バス、２１４  入力装置、２１６  ＯＳ、２１８  サポートプログラム、２６０  データマイニングツール、２６２  組込データベースアクセス機能、２６４  データマイニング機能、２６６  可視化機能、２７０  機械学習パラメータ設定ツール、２７２  変数アクセス機能、３５０  データ管理情報、３５２  静的遅延補正用データ、３５４  動的遅延補正用データ、４０２，４２２  入力処理、４０４，４０８，４２４，４２８，４３２，４３６  伝送処理、４０６，４２６，４３４  前処理、４１０，４３０，４３８  受信処理、４１２，４４０  格納処理、５０６  静的遅延補正済データ、５０８  動的遅延補正済データ、１３６２  システム変数、１３６４  デバイス変数、１３６６  異常検知パラメータ、１３８１  ユーザプログラム、１３８２  組込データベース読出しプログラム、１３８３  組込データベース書込みプログラム、１３８４  機械学習エンジンインターフェイス、１３８５  学習要求プログラム、１３８６  監視要求プログラム、１３８７  シリアライズプログラム、１３８８  特徴量生成プログラム、３５２１  基本通信遅延情報、３５２２  システム構成情報、３５２３  スレーブ設定情報、３５４１  リアルタイム通信遅延情報、ｄ１  機能ユニット起因遅延、ｄ１’  動的遅延、ｄ２  基本通信遅延、ｄ３  動的通信遅延。
【図１】
2018173710.tif 000003
【図２】
2018173710.tif 000004
【図３】
2018173710.tif 000005
【図４】
2018173710.tif 000006
【図５】
2018173710.tif 000007
【図６】
2018173710.tif 000008
【図７】
2018173710.tif 000009
【図８】
2018173710.tif 000010
【図９】
2018173710.tif 000011
【図１０】
2018173710.tif 000012
【図１１】
2018173710.tif 000013
【図１２】
2018173710.tif 000014
【図１３】
2018173710.tif 000015
【図１４】
2018173710.tif 000016
【図１５】
2018173710.tif 000017
【図１６】
2018173710.tif 000018
【手続補正書】
【提出日】平成30年5月25日(2018.5.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
制御対象についての制御演算を実行する制御装置であって、
データ伝送路を介して１または複数の機能ユニットと前記制御装置とを電気的に接続するための通信インターフェイスと、
前記機能ユニットを介して収集される観測値をデータベースに書込む書込手段と、
前記機能ユニットに観測値を示す信号が入力されてから当該観測値を示すデータが前記制御装置で利用可能になるまでに要する遅延時間を取得するとともに、取得した遅延時間を示す情報を格納する遅延時間取得手段とを備え、
前記遅延時間は、時間的に変動しない第１の遅延時間と、時間的に変動する第２の遅延時間とを含み、
前記通信インターフェイスおよび前記機能ユニットは、互いに時刻同期されたカウンタをそれぞれ有しており、
前記第２の遅延時間は、互いに時刻同期されたカウンタが示すカウンタ値間のずれの程度に依存して時間的に変化する遅延時間を含む、制御装置。
【請求項２】
前記遅延時間取得手段により取得された遅延時間を示す情報に基づいて、前記観測値を示す信号が現れた時刻を決定する時刻決定手段をさらに備える、請求項１に記載の制御装置。
【請求項３】
前記書込手段は、前記観測値と、当該観測値が前記制御装置において利用可能になった時刻とを対応付けて前記データベースに書込み、
前記時刻決定手段は、前記データベースから読出した観測値について、当該観測値に対応付けられた時刻を前記遅延時間取得手段により取得された遅延時間を示す情報に基づいて補正することで、当該観測値を示す信号が現れた時刻を決定する、請求項２に記載の制御装置。
【請求項４】
前記第１の遅延時間は、前記機能ユニットに設定される処理特性および前記機能ユニットの機能の少なくとも一方に依存して定まる遅延時間を含む、請求項１〜３のいずれか１項に記載の制御装置。
【請求項５】
前記第１の遅延時間は、前記機能ユニットから前記制御装置までのデータ伝送路に依存して定まる遅延時間を含む、請求項１〜４のいずれか１項に記載の制御装置。
【請求項６】
前記データベースに格納されている観測値と、当該観測値に対応付けられる遅延時間を示す情報とを関連付けて出力する出力手段をさらに備える、請求項１〜５のいずれか１項に記載の制御装置。
【請求項７】
前記データベースは前記制御装置に組込まれている、請求項１〜６のいずれか１項に記載の制御装置。
【請求項８】
制御対象についての制御演算を実行する制御装置で実行される制御プログラムであって、前記制御装置は、通信インターフェイスによりデータ伝送路を介して１または複数の機能ユニットと前記制御装置とを電気的に接続されており、前記制御プログラムは、前記制御装置に
前記機能ユニットを介して収集される観測値をデータベースに書込むステップと、
前記機能ユニットに観測値を示す信号が入力されてから当該観測値を示すデータが前記制御装置で利用可能になるまでに要する遅延時間を取得するとともに、取得した遅延時間
を示す情報を格納するステップとを実行させ、
前記遅延時間は、時間的に変動しない第１の遅延時間と、時間的に変動する第２の遅延時間とを含み、
前記通信インターフェイスおよび前記機能ユニットは、互いに時刻同期されたカウンタをそれぞれ有しており、
前記第２の遅延時間は、互いに時刻同期されたカウンタが示すカウンタ値間のずれの程度に依存して時間的に変化する遅延時間を含む、制御プログラム。
【請求項９】
制御対象についての制御演算を実行する制御装置と、
前記制御装置と通信インターフェイスによりデータ伝送路を介して電気的に接続された１または複数の機能ユニットとを備え、
前記制御装置は、
前記機能ユニットを介して収集される観測値をデータベースに書込む書込手段と、
前記機能ユニットに観測値を示す信号が入力されてから当該観測値を示すデータが前記制御装置で利用可能になるまでに要する遅延時間を取得するとともに、取得した遅延時間を示す情報を格納する遅延時間取得手段とを備え、
前記遅延時間は、時間的に変動しない第１の遅延時間と、時間的に変動する第２の遅延時間とを含み、
前記通信インターフェイスおよび前記機能ユニットは、互いに時刻同期されたカウンタをそれぞれ有しており、
前記第２の遅延時間は、互いに時刻同期されたカウンタが示すカウンタ値間のずれの程度に依存して時間的に変化する遅延時間を含む、制御システム。