(57)【要約】【課題】制御対象に生じる異常を検知する際に要する期間を調整することができる技術が提供される。【課題手段】制御システムは、制御対象から取得されるデータから生成されかつ１以上の要素によって定義される特徴量の集合体を記憶する記憶手段と、特徴量を定義する要素の数に関する第１パラメータに基づいて、制御対象から取得されるデータから特徴量を生成する特徴量生成手段と、特徴量生成手段により生成される特徴量と、記憶手段により記憶された特徴量の集合体との乖離度を、当該乖離度の取得に用いる当該特徴量の集合体における範囲に関する第２パラメータに基づいて取得する乖離度取得手段と、乖離度取得手段により取得される乖離度と、しきい値とに基づいて、制御対象に生じる異常を検知する異常検知手段と、乖離度取得手段の実行周期に基づいて、当該乖離度取得手段に対して実行開始を指示する指示手段とを備える。第１パラメータおよび第２パラメータのうちの少なくとも一方の値は、変更可能に構成されている。【選択図】図１７
2018159981.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御する制御装置を含む制御システムであって、
前記制御対象から取得されるデータから生成されかつ１以上の要素によって定義される特徴量の集合体を記憶する記憶手段と、
特徴量を定義する要素の数に関する第１パラメータに基づいて、前記制御対象から取得されるデータから特徴量を生成する特徴量生成手段と、
前記特徴量生成手段により生成される特徴量と、前記記憶手段により記憶された特徴量の集合体との乖離度を、当該乖離度の取得に用いる当該特徴量の集合体における範囲に関する第２パラメータに基づいて取得する乖離度取得手段と、
前記乖離度取得手段により取得される乖離度と、しきい値とに基づいて、前記制御対象に生じる異常を検知する異常検知手段と、
前記乖離度取得手段の実行周期に基づいて、当該乖離度取得手段に対して実行開始を指示する指示手段とを備え、
前記第１パラメータおよび前記第２パラメータのうちの少なくとも一方の値は、変更可能に構成されている、制御システム。
【請求項２】
前記指示手段は、前記乖離度取得手段の実行周期に関する第３パラメータに基づいて、当該乖離度取得手段に対して実行開始を指示し、
前記第３パラメータの値は、変更可能に構成されている、請求項１に記載の制御システム。
【請求項３】
前記乖離度取得手段による乖離度の取得に要した期間を出力する出力手段をさらに備える、請求項１または請求項２に記載の制御システム。
【請求項４】
前記出力手段は、前記第１パラメータおよび前記第２パラメータのうちの少なくとも一方の値の中から、前記乖離度取得手段による乖離度の取得に要する期間を短縮可能な値の候補を出力する、請求項３に記載の制御システム。
【請求項５】
前記出力手段は、少なくとも前記乖離度取得手段により乖離度が取得される期間に基づく優先順位に従って、前記乖離度取得手段による乖離度の取得に要する期間を短縮可能な値の候補を出力する、請求項４に記載の制御システム。
【請求項６】
前記出力手段は、前記乖離度取得手段による乖離度の取得に要した期間が前記乖離度取得手段の実行周期に収まらなかった場合に、前記乖離度取得手段による乖離度の取得に要する期間を短縮可能な値の候補を出力する、請求項４または請求項５に記載の制御システム。
【請求項７】
前記第１パラメータおよび前記第２パラメータのうちの少なくとも一方の値の中から、前記乖離度取得手段による乖離度の取得に要する期間が前記乖離度取得手段の実行周期に収まる値の候補を決定する決定手段をさらに備える、請求項１〜請求項６のいずれか１項に記載の制御システム。
【請求項８】
前記特徴量生成手段、前記異常検知手段、および前記指示手段を定義するユーザプログラムは、予め定められたシステム周期ごとに繰り返し実行され、
前記乖離度取得手段を定義する機械プログラムは、前記ユーザプログラムが実行されていない期間に実行される、請求項１〜請求項７のいずれか１項に記載の制御システム。
【請求項９】
前記乖離度取得手段による乖離度の取得前に、前記制御対象から取得されるデータの特徴量の集合体を予め前記記憶手段に記憶させる事前記憶手段をさらに備える、請求項１〜請求項８のいずれか１項に記載の制御システム。
【請求項１０】
制御対象を制御する制御装置であって、
前記制御対象から取得されるデータから生成されかつ１以上の要素によって定義される特徴量の集合体を記憶する記憶手段と、
特徴量を定義する要素の数に関する第１パラメータに基づいて、前記制御対象から取得されるデータから特徴量を生成する特徴量生成手段と、
前記特徴量生成手段により生成される特徴量と、前記記憶手段により記憶された特徴量の集合体との乖離度を、当該乖離度の取得に用いる当該特徴量の集合体における範囲に関する第２パラメータに基づいて取得する乖離度取得手段と、
前記乖離度取得手段により取得される乖離度と、しきい値とに基づいて、前記制御対象に生じる異常を検知する異常検知手段と、
前記乖離度取得手段の実行周期に基づいて、当該乖離度取得手段に対して実行開始を指示する指示手段とを備え、
前記第１パラメータおよび前記第２パラメータのうちの少なくとも一方の値は、変更可能に構成されている、制御装置。
【請求項１１】
コンピュータにより実行されることで制御対象を制御する制御装置を実現する制御プログラムであって、前記コンピュータに、
特徴量を定義する要素の数に関する第１パラメータに基づいて、前記制御対象から取得されるデータから特徴量を生成するステップと、
生成した特徴量と、記憶手段により記憶された特徴量の集合体との乖離度を、当該乖離度の取得に用いる当該特徴量の集合体における範囲に関する第２パラメータに基づいて取得するステップと、
取得した乖離度と、しきい値とに基づいて、前記制御対象に生じる異常を検知するステップと、
前記乖離度の取得の実行周期に基づいて、当該乖離度の取得を実行開始するステップとを実行させ、
前記第１パラメータおよび前記第２パラメータのうちの少なくとも一方の値は、変更可能に構成されている、制御プログラム。
【請求項１２】
制御対象を制御する制御方法であって、
特徴量を定義する要素の数に関する第１パラメータに基づいて、前記制御対象から取得されるデータから特徴量を生成するステップと、
生成した特徴量と、記憶手段により記憶された特徴量の集合体との乖離度を、当該乖離度の取得に用いる当該特徴量の集合体における範囲に関する第２パラメータに基づいて取得するステップと、
取得した乖離度と、しきい値とに基づいて、前記制御対象に生じる異常を検知するステップと、
前記乖離度の取得の実行周期に基づいて、当該乖離度の取得を実行開始するステップとを含み、
前記第１パラメータおよび前記第２パラメータのうちの少なくとも一方の値は、変更可能に構成されている、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、制御対象に生じる異常を検知する制御システム、制御装置、制御プログラム、および制御方法に関する。
【背景技術】
【０００２】
様々な生産現場において、ＰＬＣ（プログラマブルコントローラ）などの制御装置を用いたＦＡ（Factory Automation）技術が広く普及している。このような制御装置について、機械設備などの制御対象に生じる異常を検知したいというニーズがある。
【０００３】
このようなニーズに対して、たとえば、特開２０１３−００８１１１号公報（特許文献１）は、機械設備の異常予兆を診断する異常予兆診断装置を開示する。特許文献１に開示される異常予兆診断装置は、機械設備が正常に稼働しているときにセンサによって取得されたデータを学習データとして予め記憶しておき、センサによって新たに取得された診断対象となるデータと学習データとに基づき機械設備の異常予兆を診断するものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−００８１１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述の特許文献１に開示される構成によれば、機械設備の異常予兆が診断されるが、異常予兆の診断に要する期間を調整することについては何ら鑑みられていない。
【０００６】
本技術は、制御対象に生じる異常を検知する際に要する期間を調整することができる技術を提供する。
【課題を解決するための手段】
【０００７】
本発明のある局面によれば、制御対象を制御する制御装置を含む制御システムが提供される。制御システムは、制御対象から取得されるデータから生成されかつ１以上の要素によって定義される特徴量の集合体を記憶する記憶手段と、特徴量を定義する要素の数に関する第１パラメータに基づいて、制御対象から取得されるデータから特徴量を生成する特徴量生成手段と、特徴量生成手段により生成される特徴量と、記憶手段により記憶された特徴量の集合体との乖離度を、当該乖離度の取得に用いる当該特徴量の集合体における範囲に関する第２パラメータに基づいて取得する乖離度取得手段と、乖離度取得手段により取得される乖離度と、しきい値とに基づいて、制御対象に生じる異常を検知する異常検知手段と、乖離度取得手段の実行周期に基づいて、当該乖離度取得手段に対して実行開始を指示する指示手段とを備える。第１パラメータおよび第２パラメータのうちの少なくとも一方の値は、変更可能に構成されている。
【０００８】
好ましくは、指示手段は、乖離度取得手段の実行周期に関する第３パラメータに基づいて、当該乖離度取得手段に対して実行開始を指示する。第３パラメータの値は、変更可能に構成されている。
【０００９】
好ましくは、制御システムは、乖離度取得手段による乖離度の取得に要した期間を出力する出力手段をさらに備える。
【００１０】
好ましくは、出力手段は、第１パラメータおよび第２パラメータのうちの少なくとも一方の値の中から、乖離度取得手段による乖離度の取得に要する期間を短縮可能な値の候補を出力する。
【００１１】
好ましくは、出力手段は、少なくとも乖離度取得手段により乖離度が取得される期間に基づく優先順位に従って、乖離度取得手段による乖離度の取得に要する期間を短縮可能な値の候補を出力する。
【００１２】
好ましくは、出力手段は、乖離度取得手段による乖離度の取得に要した期間が乖離度取得手段の実行周期に収まらなかった場合に、乖離度取得手段による乖離度の取得に要する期間を短縮可能な値の候補を出力する。
【００１３】
好ましくは、制御システムは、第１パラメータおよび第２パラメータのうちの少なくとも一方の値の中から、乖離度取得手段による乖離度の取得に要する期間が乖離度取得手段の実行周期に収まる値の候補を決定する決定手段をさらに備える。
【００１４】
好ましくは、特徴量生成手段、前記異常検知手段、および前記指示手段を定義するユーザプログラムは、予め定められたシステム周期ごとに繰り返し実行され、乖離度取得手段を定義する機械プログラムは、ユーザプログラムが実行されていない期間に実行される。
【００１５】
好ましくは、制御システムは、乖離度取得手段による乖離度の取得前に、制御対象から取得されるデータの特徴量の集合体を予め記憶手段に記憶させる事前記憶手段をさらに備える。
【００１６】
本発明の別の局面によれば、制御対象を制御する制御装置が提供される。制御装置は、制御対象から取得されるデータから生成されかつ１以上の要素によって定義される特徴量の集合体を記憶する記憶手段と、特徴量を定義する要素の数に関する第１パラメータに基づいて、制御対象から取得されるデータから特徴量を生成する特徴量生成手段と、特徴量生成手段により生成される特徴量と、記憶手段により記憶された特徴量の集合体との乖離度を、当該乖離度の取得に用いる当該特徴量の集合体における範囲に関する第２パラメータに基づいて取得する乖離度取得手段と、乖離度取得手段により取得される乖離度と、しきい値とに基づいて、制御対象に生じる異常を検知する異常検知手段と、乖離度取得手段の実行周期に基づいて、当該乖離度取得手段に対して実行開始を指示する指示手段とを備える。第１パラメータおよび第２パラメータのうちの少なくとも一方の値は、変更可能に構成されている。
【００１７】
本発明の別の局面によれば、コンピュータにより実行されることで制御対象を制御する制御装置を実現する制御プログラムが提供される。制御プログラムは、コンピュータに、特徴量を定義する要素の数に関する第１パラメータに基づいて、制御対象から取得されるデータから特徴量を生成するステップと、生成した特徴量と、記憶手段により記憶された特徴量の集合体との乖離度を、当該乖離度の取得に用いる当該特徴量の集合体における範囲に関する第２パラメータに基づいて取得するステップと、取得した乖離度と、しきい値とに基づいて、制御対象に生じる異常を検知するステップと、乖離度の取得の実行周期に基づいて、当該乖離度の取得を実行開始するステップとを実行させる。第１パラメータおよび第２パラメータのうちの少なくとも一方の値は、変更可能に構成されている。
【００１８】
本発明の別の局面によれば、制御対象を制御する制御方法が提供される。制御方法は、特徴量を定義する要素の数に関する第１パラメータに基づいて、制御対象から取得されるデータから特徴量を生成するステップと、生成した特徴量と、記憶手段により記憶された特徴量の集合体との乖離度を、当該乖離度の取得に用いる当該特徴量の集合体における範囲に関する第２パラメータに基づいて取得するステップと、取得した乖離度と、しきい値とに基づいて、制御対象に生じる異常を検知するステップと、乖離度の取得の実行周期に基づいて、当該乖離度の取得を実行開始するステップとを含む。第１パラメータおよび第２パラメータのうちの少なくとも一方の値は、変更可能に構成されている。
【発明の効果】
【００１９】
本技術によれば、制御対象に生じる異常を検知する際に要する期間を調整することができる。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態に係る制御システムの全体構成例を示す模式図である。
【図２】本実施の形態に係る制御システムを構成する制御装置のハードウェア構成例を示すブロック図である。
【図３】本実施の形態に係る制御システムを構成するサポート装置のハードウェア構成例を示すブロック図である。
【図４】本実施の形態に係る制御システムを用いた異常検知において乖離度を説明するための模式図である。
【図５】本実施の形態に係る制御システムにおいて用いられるマハラノビス距離による診断の一例を説明するための模式図である。
【図６】本実施の形態に係る制御システムにおいて乖離度の取得時間の変化を説明するための模式図である。
【図７】本実施の形態に係る制御システムで実行される異常検知の主な工程を説明するための模式図である。
【図８】本実施の形態に係る制御システムの各装置が提供する機能を説明するための模式図である。
【図９】本実施の形態に係る制御システムの設定工程における主な処理内容を説明するための模式図である。
【図１０】本実施の形態に係る制御システムの運転工程における主な処理内容を説明するための模式図である。
【図１１】本実施の形態に係る制御システムにおいて実行されるユーザプログラムおよび機械プログラムの実行周期を説明するための模式図である。
【図１２】本実施の形態に係る制御システムにおいて実行されるユーザプログラムおよび機械プログラムの実行の一例を説明するための模式図である。
【図１３】本実施の形態に係る制御システムにおいて実行されるユーザプログラムの一例を示す図である。
【図１４】本実施の形態に係る制御システムにおいて実行される設定工程を説明するためのフローチャートである。
【図１５】本実施の形態に係る制御システムにおいて作成される候補リストの一例を示す図である。
【図１６】本実施の形態に係る制御システムにおいて設定された診断周期内に診断が終了しなかった場合の一例を説明するための模式図である。
【図１７】本実施の形態に係る制御システムにおいてサポート装置に表示される画像の一例を示す図である。
【図１８】本実施の形態に係る制御システムにおいてサポート装置に表示される画面の一例を示す図である。
【発明を実施するための形態】
【００２１】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２２】
＜Ａ．制御システムの全体構成例＞
まず、本実施の形態に係る制御装置を含む制御システム１の全体構成例について説明する。図１は、本実施の形態に係る制御システム１の全体構成例を示す模式図である。
【００２３】
図１を参照して、本実施の形態に係る制御システム１は、主たる構成要素として、制御対象を制御する制御装置１００と、制御装置１００に接続されるサポート装置２００とを含む。
【００２４】
制御装置１００は、ＰＬＣなどの、一種のコンピュータとして具現化されてもよい。制御装置１００は、第１フィールドネットワーク２を介してフィールド装置群１０と接続されるとともに、第２フィールドネットワーク４を介して１または複数の表示装置４００と接続される。
【００２５】
さらに、制御装置１００は、ローカルネットワーク６を介してデータロギング装置３００に接続される。制御装置１００は、それぞれのネットワークを介して、接続された装置との間でデータを遣り取りする。なお、データロギング装置３００および表示装置４００はオプショナルな構成であり、制御システム１の必須の構成ではない。
【００２６】
制御装置１００は、機械設備を制御するための各種演算を実行する制御ロジック（以下、「ＰＬＣエンジン」とも称す。）を有している。ＰＬＣエンジンに加えて、制御装置１００は、フィールド装置群１０にて計測され、制御装置１００へ転送されるデータ（以下、「入力データ」とも称す。）を収集する収集機能を有している。さらに、制御装置１００は、収集した入力データに基づき、制御対象に生じる異常を検知する異常検知機能も有している。
【００２７】
具体的には、制御装置１００に実装される内部データベース（以下、「内部ＤＢ」とも記す。）１３０が収集機能を提供し、制御装置１００に実装される機械学習エンジン１４０が異常検知機能を提供する。制御装置１００に実装される内部データベース（内部ＤＢ）１２５は、機械学習エンジン１４０が異常検知の際に使用する学習結果を記憶する。内部ＤＢ１２５、内部ＤＢ１３０、および機械学習エンジン１４０の詳細については後述する。
【００２８】
第１フィールドネットワーク２および第２フィールドネットワーク４は、データの到達時間が保証される、定周期通信を行うネットワークを採用することが好ましい。このような定周期通信を行うネットワークとしては、ＥｔｈｅｒＣＡＴ（登録商標）、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などが知られている。
【００２９】
フィールド装置群１０は、制御対象、または制御に関連する製造装置および生産ラインなど（以下、「フィールド」とも総称する。）から入力データを収集する装置を含む。このような入力データを収集する装置としては、入力リレーや各種センサなどが想定される。
【００３０】
フィールド装置群１０は、さらに、制御装置１００にて生成される指令（以下、「出力データ」とも称す。）に基づいて、フィールドに対して何らかの作用を与える装置を含む。このようなフィールドに対して何らかの作用を与える装置としては、出力リレー、コンタクタ、サーボドライバおよびサーボモータ、その他任意のアクチュエータが想定される。これらのフィールド装置群１０は、第１フィールドネットワーク２を介して、制御装置１００との間で、入力データおよび出力データを含むデータを遣り取りする。
【００３１】
図１に示す構成例においては、フィールド装置群１０は、リモートＩ／Ｏ（Input/Output）装置１２と、リレー群１４と、画像センサ１８およびカメラ２０と、サーボドライバ２２およびサーボモータ２４とを含む。
【００３２】
リモートＩ／Ｏ装置１２は、第１フィールドネットワーク２を介して通信を行う通信部と、入力データの取得および出力データの出力を行うための入出力部（以下、「Ｉ／Ｏユニット」とも称す。）とを含む。このようなＩ／Ｏユニットを介して、制御装置１００とフィールドとの間で入力データおよび出力データが遣り取りされる。図１には、リレー群１４を介して、入力データおよび出力データとして、デジタル信号が遣り取りされる例が示されている。
【００３３】
Ｉ／Ｏユニットは、フィールドネットワークに直接接続されるようにしてもよい。図１には、第１フィールドネットワーク２にＩ／Ｏユニット１６が直接的に接続されている例を示す。
【００３４】
画像センサ１８は、カメラ２０によって撮像された画像データに対して、パターンマッチングなどの画像計測処理を行って、その処理結果を制御装置１００へ送信する。
【００３５】
サーボドライバ２２は、制御装置１００からの出力データ（たとえば、位置指令など）に従って、サーボモータ２４を駆動する。
【００３６】
上述のように、第１フィールドネットワーク２を介して、制御装置１００とフィールド装置群１０との間でデータが遣り取りされることになるが、これらの遣り取りされるデータは、数百μｓｅｃオーダ〜数十ｍｓｅｃオーダのごく短い周期で更新されることになる。なお、このような遣り取りされるデータの更新処理を、「Ｉ／Ｏリフレッシュ処理」と称することもある。
【００３７】
第２フィールドネットワーク４を介して制御装置１００と接続される表示装置４００は、ユーザからの操作を受けて、制御装置１００に対してユーザ操作に応じたコマンドなどを送信するとともに、制御装置１００での演算結果などをグラフィカルに表示する。
【００３８】
データロギング装置３００は、制御装置１００とローカルネットワーク６を介して接続され、制御装置１００との間で必要なデータを遣り取りする。データロギング装置３００は、たとえば、データベース機能を有しており、制御装置１００が発生するイベントログなどを時系列に収集する。
【００３９】
ローカルネットワーク６には、イーサネット（登録商標）などの汎用プロトコルが実装されてもよい。すなわち、典型的には、ローカルネットワーク６におけるデータの送信周期または更新周期は、フィールドネットワーク（第１フィールドネットワーク２および第２フィールドネットワーク４）におけるデータの送信周期または更新周期より遅くてもよい。但し、ローカルネットワーク６は、フィールドネットワークに比較して、一度により多くのデータを送信することができるようにしてもよい。
【００４０】
サポート装置２００は、制御装置１００が制御対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置２００は、制御装置１００で実行されるプログラムの開発環境（プログラム作成編集ツール、パーサ、コンパイラなど）、制御装置１００および制御装置１００に接続される各種デバイスのパラメータ（コンフィギュレーション）を設定するための設定環境、生成したユーザプログラムを制御装置１００へ送信する機能、制御装置１００上で実行されるユーザプログラムなどをオンラインで修正・変更する機能などを提供する。
【００４１】
さらに、本実施の形態に係るサポート装置２００は、制御装置１００に実装される内部ＤＢ１３０および機械学習エンジン１４０に対する設定操作を行う機能を有している。これらの機能については、後述する。
【００４２】
＜Ｂ．各装置のハードウェア構成例＞
次に、本実施の形態に係る制御システム１を構成する主要な装置のハードウェア構成例について説明する。
【００４３】
（ｂ１：制御装置１００のハードウェア構成例）
図２は、本実施の形態に係る制御システム１を構成する制御装置１００のハードウェア構成例を示すブロック図である。
【００４４】
図２を参照して、制御装置１００は、ＣＰＵ（Central Processing Unit）またはＭＰＵ（Micro-Processing Unit）などのプロセッサ１０２と、チップセット１０４と、主記憶装置１０６と、二次記憶装置１０８と、ローカルネットワークコントローラ１１０と、ＵＳＢ（Universal Serial Bus）コントローラ１１２と、メモリカードインターフェイス１１４と、内部バスコントローラ１２２と、フィールドバスコントローラ１１８，１２０と、Ｉ／Ｏユニット１２４−１，１２４−２，…とを含む。
【００４５】
プロセッサ１０２は、二次記憶装置１０８に格納された各種プログラムを読み出して、主記憶装置１０６に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。チップセット１０４は、プロセッサ１０２と各コンポーネントを制御することで、制御装置１００全体としての処理を実現する。
【００４６】
二次記憶装置１０８には、ＰＬＣエンジンを実現するためのシステムプログラムに加えて、ＰＬＣエンジンを利用して実行されるユーザプログラムが格納される。さらに、二次記憶装置１０８には、内部ＤＢ１２５、内部ＤＢ１３０、および機械学習エンジン１４０を実現するためのプログラムも格納される。
【００４７】
ローカルネットワークコントローラ１１０は、ローカルネットワーク６を介した他の装置との間のデータの遣り取りを制御する。ＵＳＢコントローラ１１２は、ＵＳＢ接続を介してサポート装置２００との間のデータの遣り取りを制御する。
【００４８】
メモリカードインターフェイス１１４は、メモリカード１１６を着脱可能に構成されており、メモリカード１１６に対してデータを書き込み、メモリカード１１６から各種データ（ユーザプログラムやトレースデータなど）を読み出すことが可能になっている。
【００４９】
内部バスコントローラ１２２は、制御装置１００に搭載されるＩ／Ｏユニット１２４−１，１２４−２，…との間でデータを遣り取りするインターフェイスである。
【００５０】
フィールドバスコントローラ１１８は、第１フィールドネットワーク２を介した他の装置との間のデータの遣り取りを制御する。同様に、フィールドバスコントローラ１２０は、第２フィールドネットワーク４を介した他の装置との間のデータの遣り取りを制御する。
【００５１】
図２には、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（たとえば、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field-Programmable Gate Array）など）を用いて実装してもよい。あるいは、制御装置１００の主要部を、汎用的なアーキテクチャに従うハードウェア（たとえば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００５２】
（ｂ２：サポート装置２００のハードウェア構成例）
次に、本実施の形態に係るサポート装置２００は、一例として、汎用的なアーキテクチャに従うハードウェア（たとえば、汎用パソコン）を用いてプログラムを実行することで実現される。図３は、本実施の形態に係る制御システム１を構成するサポート装置２００のハードウェア構成例を示すブロック図である。
【００５３】
図３を参照して、サポート装置２００は、ＣＰＵまたはＭＰＵなどのプロセッサ２０２と、光学ドライブ２０４と、主記憶装置２０６と、二次記憶装置２０８と、ＵＳＢコントローラ２１２と、ローカルネットワークコントローラ２１４と、入力部２１６と、表示部２１８とを含む。これらのコンポーネントはバス２２０を介して接続される。
【００５４】
プロセッサ２０２は、二次記憶装置２０８に格納された各種プログラムを読み出して、主記憶装置２０６に展開して実行することで、後述するような各種処理を実現する。
【００５５】
二次記憶装置２０８は、たとえば、ＨＤＤ（Hard Disk Drive）またはＳＳＤ（Flash Solid State Drive）などで構成される。二次記憶装置２０８には、典型的には、サポート装置２００において実行されるユーザプログラムの作成、作成したプログラムのデバッグ、システム構成の定義、および各種パラメータの設定などを行うための開発プログラム２２２が格納される。また、二次記憶装置２０８には、各種パラメータの設定および機械学習の対象となる変数を指定するためのパラメータ設定ツール２２４が格納される。さらに、二次記憶装置２０８には、制御装置１００に収集されるデータ（後述の生データ）から目的の情報を抽出するためのデータマイニングツール２２６が格納される。二次記憶装置２０８には、ＯＳおよび他の必要なプログラムが格納されてもよい。
【００５６】
サポート装置２００は、光学ドライブ２０４を有しており、コンピュータが読取可能なプログラムを非一過的に格納する記録媒体２０５（たとえば、ＤＶＤ（Digital Versatile Disc）などの光学記録媒体）から、その中に格納されたプログラムが読み取られて二次記憶装置２０８などにインストールされる。
【００５７】
サポート装置２００で実行される各種プログラムは、コンピュータが読取可能な記録媒体２０５を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールされてもよい。また、本実施の形態に係るサポート装置２００が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【００５８】
ＵＳＢコントローラ２１２は、ＵＳＢ接続を介して制御装置１００との間のデータの遣り取りを制御する。ローカルネットワークコントローラ２１４は、任意ネットワークを介した他の装置との間のデータの遣り取りを制御する。
【００５９】
入力部２１６は、キーボードおよびマウスなどで構成され、ユーザ操作を受け付ける。表示部２１８は、ディスプレイ、各種インジケータ、およびプリンタなどで構成され、プロセッサ２０２からの処理結果などを出力する。
【００６０】
図３には、プロセッサ２０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（たとえば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００６１】
（ｂ３：データロギング装置３００のハードウェア構成例）
次に、本実施の形態に係る制御システム１を構成するデータロギング装置３００は、一例として、汎用的なファイルサーバまたはデータベースサーバを用いて実現できる。このような装置のハードウェア構成については公知であるので、ここでは、その詳細な説明は行わない。
【００６２】
（ｂ４：表示装置４００のハードウェア構成例）
次に、本実施の形態に係る制御システム１を構成する表示装置４００は、ＨＭＩ（Human Machine Interface）装置と称されるものであり、専用機として実装された構成を採用してもよいし、汎用的なアーキテクチャに従うハードウェア（たとえば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。
【００６３】
＜Ｃ．制御システム１で実行される異常検知の概要＞
次に、本実施の形態に係る制御システム１で実行される異常検知の概要について説明する。
【００６４】
本実施の形態に係る制御システム１において、制御装置１００は、異常検知を実施する前工程として生データ収集工程を実施する。生データ収集工程において、制御装置１００は、入力データのうち、異常検知に係る解析に使用するデータ（以下、「生データ」とも称す。）を内部ＤＢ１３０に書き込む。
【００６５】
次に、制御装置１００は、準備工程を実施する。準備工程において、制御装置１００は、内部ＤＢ１３０に書き込んだ生データから特徴量を生成する。このとき、制御装置１００は、特徴量を定義する要素に基づいて特徴量を生成する。
【００６６】
特徴量を定義する要素とは、生データの特徴を表す際の基準となるものであり、たとえば、平均、標準偏差、歪度、尖度、最大、および最小などがある。
【００６７】
制御装置１００は、生データに対して平均処理を実行した場合、データ分布の中心（平均値）を特徴量として算出する。制御装置１００は、生データに対して標準偏差処理を実行した場合、データ分布における平均値からのばらつき度合いを特徴量として算出する。制御装置１００は、生データに対して歪度処理を実行した場合、データ分布の偏り度合いを特徴量として算出する。制御装置１００は、生データに対して尖度処理を実行した場合、データ分布の尖り度合いを特徴量として算出する。制御装置１００は、生データに対して最大処理を実行した場合、データ分布の最大値を特徴量として算出する。制御装置１００は、生データに対して最小処理を実行した場合、データ分布の最小値を特徴量として算出する。
【００６８】
このように、内部ＤＢ１３０に書き込まれた生データから、各要素によって定義される特徴量を生成することで、制御装置１００は、機械設備などの制御対象における時系列での振る舞いを捉えることができる。
【００６９】
１の生データに対しては、１または複数の要素によって特徴量が定義される。各要素によって定義された特徴量は、ベクトルで表現され得る。これを「特徴ベクトル」とも称す。特徴ベクトルの次元数は、特徴量を定義している要素の数と同じである。たとえば、２つの要素によって定義された特徴量の場合、特徴ベクトルの次元数は２になり、４つの要素によって定義された特徴量の場合、特徴ベクトルの次元数は４になる。特徴ベクトルの次元数が多いほど、制御装置１００は、生データの特徴を正確に捉えることができる。
【００７０】
準備工程において特徴量を定義する要素の種類（平均、標準偏差、歪度、尖度、最大、および最小など）は、制御システム１で用いることのできる全種類であってもよいし、ユーザによってパラメータ設定できるものであってもよい。準備工程において特徴量を定義する要素の数（特徴ベクトルの次元数）は、制御システム１で用いることのできる全数であってもよいし、ユーザによってパラメータ設定できるものであってもよい。
【００７１】
また、準備工程において、制御装置１００は、制御対象から取得されるデータから生成されかつ１以上の要素によって定義される特徴量の集合体を記憶する。
【００７２】
具体的には、制御装置１００は、決められた期間内に生成した特徴量を収集してその集合体を内部ＤＢ１２５に書き込む。制御装置１００は、特徴量の集合体に対して機械学習を実施する。たとえば、制御装置１００は、機械学習を実施することで、特徴量の集合体に対してクラスタリングを行い、各特徴量を１または複数のクラスタに分類する。制御装置１００は、機械学習によって得られた学習結果を、内部ＤＢ１２５に書き込む。以下、学習結果として得られた特徴量を「学習データ」とも称す。制御装置１００は、機械学習の学習結果に基づいて、異常検知に用いるしきい値を決定する。
【００７３】
準備工程において学習結果およびしきい値が得られると、制御装置１００は、それらを用いて異常検知工程を実施する。異常検知工程において、制御装置１００は、所定周期ごとまたは所定イベントごとに特徴量を生成する。
【００７４】
このとき、制御装置１００は、特徴量を定義する要素の数に関する第１パラメータに基づいて特徴量を生成する。第１パラメータは、特徴量を定義する要素の種類（平均、標準偏差、歪度、尖度、最大、および最小など）および要素の数（特徴ベクトルの次元数）を設定するためのパラメータである。ユーザは、サポート装置２００を用いて第１パラメータの値を設定することができる。
【００７５】
また、異常検知工程において、制御装置１００は、生成した特徴量と、内部ＤＢ１２５に学習結果として書き込まれた特徴量の集合体との乖離度を取得する。制御装置１００は、取得した乖離度と、準備工程において決定したしきい値とに基づいて、制御対象に生じる異常を検知する。
【００７６】
図４および図５を参照しながら、異常検知について説明する。図４は、本実施の形態に係る制御システム１を用いた異常検知において乖離度を説明するための模式図である。
【００７７】
図４（Ａ）を参照して、特徴量の集合体は、機械学習によってクラスタリングされると、正常データ（学習データ）となる特徴量の集合体ａと、異常データ（学習データ）となる特徴量の集合体ｂとに分類される。
【００７８】
制御装置１００は、乖離度の取得においてマハラノビス距離を用いる。具体的には、制御装置１００は、異常検知の診断対象となる特徴量のデータ（以下、「診断対象データ」とも称す。）と、各特徴量の集合体ａ，ｂに含まれるｋ個の特徴量との距離に基づき、乖離度（乖離度ａ，乖離度ｂ）を算出する。
【００７９】
このとき、制御装置１００は、乖離度の取得に用いる特徴量の集合体における範囲に関する第２パラメータに基づいて、乖離度を取得する。第２パラメータは、診断対象データとの間の乖離度の算出に用いられる特徴量の数（以下、「ｋ値」とも称す。）を設定するためのパラメータである。ユーザは、サポート装置２００を用いて、第２パラメータの値を設定することができる。ｋ値が多いほど、診断対象データが比較される学習データの数が多くなる。
【００８０】
図４（Ｂ）を参照して、制御装置１００は、乖離度ａがしきい値ａよりも大きく、かつ乖離度ｂがしきい値ｂよりも小さい場合に、診断対象データが異常であると判断する。あるいは、制御装置１００は、乖離度ａがしきい値ａよりも大きい場合、または乖離度ｂがしきい値ｂよりも小さい場合に、診断対象データが異常であると判断する。
【００８１】
図５は、本実施の形態に係る制御システム１において用いられるマハラノビス距離による診断の一例を説明するための模式図である。
【００８２】
図５（Ａ）に示すように、複数の学習データＰ１，Ｐ２，Ｐ３，・・・は、特徴ベクトルの次元ごとにそれぞれの特徴量が算出されている。たとえば、学習データＰ１は、６次元の各次元に対応する特徴量として、Ｐ１１，Ｐ１２，Ｐ１３，Ｐ１４，Ｐ１５，Ｐ１６が算出されている。これら複数の学習データは、予め設けられた基準に基づく信頼度の高い順にテーブルに格納されている。なお、信頼度が高いほど、異常検知の確度が高くなる。診断対象データＰｘ（Ｐｘ１，Ｐｘ２，Ｐｘ３、・・・）と学習データとの間のマハラノビス距離Ｄｉｖは、図５（Ｂ）に示される式によって算出される。ここで、σは、各次元における複数の学習データの標準偏差である。診断対象データが異常の場合、診断対象データが正常の場合に比べて、診断対象データと学習データとの間のマハラノビス距離が大きい。このため、診断対象データが異常の場合に得られるマハラノビス距離は、診断対象データが正常の場合に得られるマハラノビス距離よりも大きくなる。したがって、しきい値の取り方によって、診断対象データが正常の場合にはマハラノビス距離がしきい値を超えない一方で、診断対象データが異常の場合にはマハラノビス距離がしきい値を超えることになる。
【００８３】
このように、制御装置１００は、正常時および異常時の少なくとも一方における学習データと、診断対象データとの間の乖離度を取得し、取得した乖離度としきい値とに基づき、制御対象に生じる異常を検知する。なお、制御装置１００は、ユークリッド距離など公知の近傍法によって、制御対象に生じる異常を検知してもよい。
【００８４】
ここで、制御システム１においては、第１パラメータの値および第２パラメータの値のそれぞれに応じて、乖離度の取得時間が変化する。図６は、本実施の形態に係る制御システム１において乖離度の取得時間の変化を説明するための模式図である。
【００８５】
図６（Ａ）の例では、第１パラメータの値として次元数がｎに設定され、第２パラメータの値としてｋ値がＮに設定されている。この場合、診断対象データの比較対象となるデータの数は、概念的には比較対象数Ｎと次元数ｎとの積になる。
【００８６】
図６（Ｂ）の例では、第１パラメータの値として次元数がｓ（ｓはｎより小さい値）に設定され、第２パラメータの値としてｋ値がＮに設定されている。この場合、診断対象データの比較対象となるデータの数は、概念的には比較対象数Ｎと次元数ｓとの積になる。次元数について、ｓはｎより小さい値であるため、図６（Ｂ）の例における比較対象の総数は、図６（Ａ）の例における比較対象の総数よりも小さくなる。したがって、その分、乖離度の計算時間が短くなるが、その一方で、異常検知の確度は低くなる。
【００８７】
このように、ユーザは、第１パラメータの値を変更することで、異常検知の確度とのトレードオフで、乖離度の計算時間を短くしたり長くしたりすることができる。つまり、第１パラメータは、乖離度の取得時間を短縮可能なパラメータである。
【００８８】
図６（Ｃ）の例では、第２パラメータの値として次元数がｎに設定され、第２パラメータの値としてｋ値がＳ（ＳはＮより小さい値）に設定されている。この場合、比較対象の総数は、概念的には比較対象数Ｓと次元数ｎとの積になる。ｋ値について、ＳはＮより小さい値であるため、図６（Ｃ）の例における比較対象の総数は、図６（Ａ）の例における比較対象の総数よりも小さくなる。したがって、その分、乖離度の計算時間が短くなるが、その一方で、異常検知の確度は低くなる。
【００８９】
第２パラメータによってｋ値が設定されると、図５（Ａ）で示されたテーブルに格納された学習データのうち、信頼度の高い順から乖離度の計算に用いられる学習データが選択される。このように、ユーザは、第２パラメータの値を変更することで、異常検知の確度とのトレードオフで、乖離度の計算時間を短くしたり長くしたりすることができる。つまり、第２パラメータは、乖離度の取得時間を短縮可能なパラメータである。なお、第２パラメータによってｋ値が設定されると、乖離度の計算に用いられる学習データがランダムに選択されるものであってもよい。
【００９０】
＜Ｄ．制御システム１で実行される異常検知の主な工程＞
次に、本実施の形態に係る制御システム１で実行される異常検知の主な工程について説明する。図７は、本実施の形態に係る制御システム１で実行される異常検知の主な工程を説明するための模式図である。図７を参照して、異常検知の工程は、設定工程と運転工程とを含む。
【００９１】
（ｄ１：設定工程）
設定工程は、（１−１）生データ収集工程と、（１−２）準備工程と、（１−３）試運転工程とを含む。
【００９２】
（１−１）生データ収集工程においては、制御装置１００が取り扱うデータのうち、異常検知に係る解析に使用する生データが内部ＤＢ１３０に書き込まれる。生データ収集工程は、後述する、制御装置１００の内部ＤＢ書込プログラムが実行されることで実現される。
【００９３】
制御装置１００においては、フィールドとの間で遣り取りされるデータ（入力データおよび出力データ）ならびに内部データの各々に対してユニークな変数名が割り当てられており、それぞれの変数名を利用してユーザプログラムなどが記述される。すなわち、制御装置１００においては、変数プログラミングが可能な環境が提供される。このため、以下の説明においては、「変数の指定」という表現は、対象となるデータを特定することと実質的に同義で用いることとする。なお、本発明の範囲は、変数プログラミング可能な構成に限定されるものではなく、メモリ上のアドレスを直接指定するような構成であっても、技術的範囲に含まれ得る。
【００９４】
このように、生データ収集工程においては、制御対象から取得された生データが収集される。
【００９５】
次に、（１−２）準備工程が実施される。準備工程においては、内部ＤＢ１３０に書き込まれた生データが読み込まれる。また、異常検知パラメータの候補リストが作成される。異常検知パラメータには、前述した第１パラメータおよび第２パラメータが含まれる。また、異常検知パラメータには、後述する（２−１）異常検知工程の実行周期に関する第３パラメータが含まれる。第３パラメータは、異常検知工程の実行周期（以下、「診断周期」とも称す。）を設定するためのパラメータである。ユーザは、サポート装置２００を用いて第３パラメータの値を設定することができる。これらの工程は、典型的には、後述する、サポート装置２００のデータマイニングツール２２６のデータマイニング機能によって実現される。
【００９６】
次に、読み込まれた生データから特徴量が順次生成される。この工程は、制御装置１００の特徴量生成プログラムが実行されることで実現される。
【００９７】
次に、生成された特徴量に対して機械学習が実施され、その学習結果が内部ＤＢ１２５に書き込まれる。この工程は、後述する、制御装置１００の機械学習エンジン１４０によって提供される。
【００９８】
次に、機械学習の結果に基づき異常検知に用いられるしきい値が決定される。この工程は、サポート装置２００のパラメータ設定ツール２２４が実行されることで実現される。
【００９９】
このように、準備工程においては、異常検知に用いられる異常検知パラメータの候補リスト、機械学習による学習結果、および異常検知に用いられるしきい値が取得される。
【０１００】
次に、（１−３）試運転工程が実施される。試運転工程においては、異常検知パラメータの候補リストに挙がっているパラメータの組（たとえば、第１パラメータ，第２パラメータ，第３パラメータのセット）に基づき、パラメータの組が１組ずつ用いられて機械学習エンジン１４０が実行される。
【０１０１】
機械学習エンジン１４０が実行されるごとに、機械学習エンジン１４０の実行時間（乖離度の取得時間）が測定される。異常検知パラメータが全て用いられると、機械学習エンジン１４０の総実行時間に基づき、候補リストに挙がっている異常検知パラメータの中から一の異常検知パラメータが自動的に決定される。
【０１０２】
このように、試運転工程においては、異常検知に用いられる異常検知パラメータが決定される。
【０１０３】
（ｄ２：運転工程）
運転工程は、（２−１）異常検知工程と、（２−２）時間超過検知工程とを含む。
【０１０４】
（２−１）異常検知工程においては、生成された特徴量のデータ（診断対象データ）と、内部ＤＢ１２５に学習結果として書き込まれた特徴量の集合体のデータ（学習データ）との乖離度が取得される。そして、取得された乖離度と、しきい値とに基づいて、制御対象に生じる異常が検知される。異常が検知された場合、その旨を示すイベントログが出力される。
【０１０５】
異常検知工程においてイベントログが出力されると、表示装置４００に異常内容が表示される。異常内容としては、異常の発生時間および発生場所、異常検知された特徴量などが含まれる。
【０１０６】
このように、異常検知工程においては、制御対象に生じる異常が検知され、表示装置４００によってその旨が出力される。
【０１０７】
次に、（２−２）時間超過検知工程が実施される。時間超過検知工程においては、異常検知工程における機械学習エンジン１４０による乖離度の取得時間が、異常検知工程の実行周期（診断周期）の時間を２回連続で超えた場合に、その旨を示すイベントログが出力される。なお、イベントログは、機械学習エンジン１４０による乖離度の取得時間が診断周期の時間を１回以上超えた場合に出力されてもよい。
【０１０８】
時間超過検知工程においてイベントログが出力されると、サポート装置２００が備える表示部２１８に異常内容が表示される。異常内容としては、超過時間、時間超過となった現在の異常検知パラメータ、および準備工程において作成された異常検知パラメータの候補などが含まれる。
【０１０９】
このように、時間超過検知工程においては、機械学習エンジン１４０による乖離度の取得の時間超過が検知され、サポート装置２００によってその旨が出力される。
【０１１０】
＜Ｅ．制御システム１における主な機能＞
次に、本実施の形態に係る制御システム１における主な機能について説明する。
【０１１１】
図８は、本実施の形態に係る制御システム１の各装置が提供する機能を説明するための模式図である。図８に示す模式図において、カッコ内の数字は、図７に示す（１−１）〜（１−３）および（２−１），（２−２）の工程における処理に対応している。
【０１１２】
制御装置１００は、内部ＤＢ１２５、内部ＤＢ１３０、および機械学習エンジン１４０に加えて、ＰＬＣエンジン１５０を有している。これらの機能は、基本的には、制御装置１００のプロセッサ１０２（図２）がプログラムを実行することで実現される。このプロセッサ１０２がプログラムを実行するための環境を提供するために、制御装置１００にはＯＳ１９０もインストールされる。
【０１１３】
ＰＬＣエンジン１５０は、典型的には、図示しないシステムプログラムと、ユーザプログラム１６０とがＯＳ１９０上で実行されることで提供される。つまり、本発明のある局面によれば、一種のコンピュータにて実行されることで、ＰＬＣエンジン１５０が実現される。
【０１１４】
より具体的には、ＰＬＣエンジン１５０は、スケジューラ１５２と、変数マネジャ１５４と、ユーザプログラム１６０とを含む。
【０１１５】
スケジューラ１５２は、ＰＬＣエンジン１５０を構成する各プログラム（あるいは、それに対応するタスク）の実行タイミングや実行順序などを制御する。ＰＬＣエンジン１５０に含まれる各タスクには実行周期が予め定められており、スケジューラ１５２は、その定められた実行周期に従ってタスクを繰返し実行できるように制御する。
【０１１６】
変数マネジャ１５４は、ＰＬＣエンジン１５０において周期的に実行されるＩ／Ｏリフレッシュ処理によって更新されるデータを変数として管理する。より具体的には、変数マネジャ１５４は、制御装置１００の各部の動作状態を示すデータ群を含むシステム変数１５４２と、ＰＬＣエンジン１５０において実行されるユーザプログラムが書き込み・読み出しを行うデータ群を含むユーザ変数・デバイス変数１５４４と、異常検知に用いるしきい値１５４６とを保持および管理する。
【０１１７】
しきい値１５４６については、サポート装置２００のＰＬＣ変数アクセスプログラム２２４２によるアクセスおよび更新が可能になっている。つまり、変数マネジャ１５４は、しきい値１５４６を保持するとともに、外部装置からの要求に応じて、保持されているしきい値１５４６を更新する機能を提供する。
【０１１８】
ユーザプログラム１６０は、ユーザが任意に作成可能であり、典型的には、内部ＤＢ書込プログラム１６４と、機械学習エンジンインターフェイス１６６と、特徴量生成プログラム１７４と、異常検知プログラム１６２とを含む。ユーザプログラム１６０を構成するプログラムの命令は、一体のプログラムとして記述されてもよいし、複数のプログラムにそれぞれ分離して記述されてもよい。
【０１１９】
内部ＤＢ書込プログラム１６４は、ユーザ変数・デバイス変数１５４４に含まれる変数のうち、予め指定された変数を内部ＤＢ１３０に書き込む。
【０１２０】
機械学習エンジンインターフェイス１６６は、機械学習エンジン１４０を操作するための命令を含む。具体的には、機械学習エンジンインターフェイス１６６は、学習要求プログラム１６８と、監視要求プログラム１７０とを含む。
【０１２１】
つまり、機械学習エンジンインターフェイス１６６は、機械学習エンジン１４０に対して、機械学習を指示する命令を含み、機械学習エンジンインターフェイス１６６は、しきい値１５４６を用いて特徴量を監視し、異常検知を指示する命令を含む。
【０１２２】
特徴量生成プログラム１７４は、第１パラメータに基づいて、特徴量を生成する命令を含む。すなわち、特徴量生成プログラム１７４は、第１パラメータに基づいて、制御対象から取得される生データから特徴量を生成する。
【０１２３】
内部ＤＢ１３０には、典型的には、（１−１）生データ収集工程において収集される生データ１３２が格納される。
【０１２４】
機械学習エンジン１４０は、典型的には、学習プログラムと機械プログラムとがＯＳ１９０上で実行されることで提供される。つまり、本発明のある局面によれば、一種のコンピュータにて実行されることで、機械学習エンジン１４０が実現される。
【０１２５】
学習プログラムおよび機械プログラムは、前述したＰＬＣエンジンにおけるユーザプログラムと併せて制御プログラムとも称す。制御プログラムに含まれるプログラムは、いずれもユーザによって作成される。
【０１２６】
機械学習エンジン１４０は、（１−２）準備工程において必要な処理を実行するための学習機能１４２と、（１−３）試運転工程および（２−１）異常検知工程において必要な処理を実行するための異常検知機能１４４とを含む。
【０１２７】
学習機能１４２は、学習プログラムの実行によって実現される。学習機能１４２は、特徴量生成プログラム１７４の実行により生成される特徴量を用いて機械学習を実施する。機械学習による学習結果１３４は、内部ＤＢ１２５に格納される。
【０１２８】
異常検知機能１４４は、機械プログラムの実行によって実現される。異常検知機能１４４は、生成された特徴量のデータ（診断対象データ）と、内部ＤＢ１２５に学習結果として書き込まれた特徴量の集合体のデータ（学習データ）との乖離度を取得する。異常検知機能１４４は、監視要求プログラム１７０による監視要求トリガに従って実行する。言い換えると、監視要求プログラム１７０は、異常検知機能１４４に対して実行開始を指示する。
【０１２９】
異常検知プログラム１６２は、異常検知機能１４４により取得される乖離度と、しきい値１５４６とに基づいて、制御対象に生じる異常を検知する。そして、異常検知プログラム１６２は、何らかの異常を検知すると、その検知した異常の内容を示すイベントログ１４６を出力する。
【０１３０】
サポート装置２００には、開発プログラム２２２（図３）に加えて、パラメータ設定ツール２２４およびデータマイニングツール２２６がインストールされている。
【０１３１】
パラメータ設定ツール２２４は、制御装置１００の変数マネジャ１５４が管理する各変数に対してアクセスするためのＰＬＣ変数アクセスプログラム２２４２を含む。ＰＬＣ変数アクセスプログラム２２４２は、制御装置１００内部の変数の参照および書き換えを可能にする。ユーザは、パラメータ設定ツール２２４を実行することで、（１−２）準備工程において、しきい値を決定することができる。
【０１３２】
データマイニングツール２２６は、生データ取得機能２２６２と、データマイニング機能２２６４とを含む。生データ取得機能２２６２は、（１−１）生データ収集工程において、内部ＤＢ１３０にアクセスして、内部ＤＢ１３０に収集されている生データのうち、必要なデータを抽出する。データマイニング機能２２６４は、主として、（１−２）準備工程において、異常検知パラメータの候補リストを作成する。
【０１３３】
また、サポート装置２００は、試運転機能２２６６と、表示機能２２６８とを含む。試運転機能２２６６は、（１−３）試運転工程において、機械学習エンジン１４０を実行させる。機械学習エンジン１４０の実行時間（乖離度の取得時間）は、変数マネジャ１５４によってシステム変数１５４２として保持される。試運転機能２２６６は、変数マネジャ１５４から取得した機械学習エンジン１４０の総実行時間に基づき、候補リストに挙がっている１または複数の異常検知パラメータの中から一の異常検知パラメータを決定する。
【０１３４】
表示機能２２６８は、（２−２）時間超過検知工程において出力されたイベントログ１４６に基づき、機械学習エンジン１４０による乖離度の取得時間が超過した旨を表示部２１８に出力する。
【０１３５】
具体的には、機械学習エンジン１４０による乖離度の取得時間は、変数マネジャ１５４によってシステム変数１５４２として保持される。一方、変数マネジャ１５４には、異常検知工程の実行周期（診断周期）がシステム変数１５４２として保持される。異常検知工程における機械学習エンジン１４０による乖離度の取得時間が、異常検知工程の実行周期（診断周期）の時間を２回連続で超えた場合、変数マネジャ１５４からその旨を示すイベントログが出力される。表示機能２２６８は、そのイベントログ１４６に基づき、機械学習エンジン１４０による乖離度の取得が時間超過した旨を表示部２１８に出力する。
【０１３６】
なお、表示機能２２６８は、（１−２）準備工程において作成された異常検知パラメータの候補リストおよび決定されたしきい値などを表示部２１８に出力してもよい。
【０１３７】
表示装置４００は、表示機能４０２を含む。表示機能４０２は、（２−１）異常検知工程において出力されたイベントログ１４６に基づき、制御対象に異常が生じた旨を表示する。
【０１３８】
＜Ｆ．設定工程における主な処理内容＞
図９は、本実施の形態に係る制御システム１の設定工程における主な処理内容を説明するための模式図である。なお、以下では、各ステップを単に「Ｓ」と略す。
【０１３９】
図９を参照して、（１−１）生データ収集工程においては、ユーザがサポート装置２００の開発プログラム２２２を操作して、内部ＤＢ１３０に収集すべき変数を指定するためのユーザプログラムを作成する（Ｓ１０）。この作成されたユーザプログラムが内部ＤＢ書込プログラム１６４に相当する。制御装置１００のＰＬＣエンジン１５０で内部ＤＢ書込プログラム１６４が実行されることで、制御装置１００の内部ＤＢ１３０に生データ１３２が書き込まれる（Ｓ１２）。
【０１４０】
（１−２）準備工程においては、ユーザがサポート装置２００のデータマイニングツール２２６を操作して、内部ＤＢ１３０に収集されている生データ１３２を読み出して収集する（Ｓ２０）。生データが収集されると、データマイニング機能２２６４によって異常検知パラメータの候補リストが作成される。
【０１４１】
ユーザがサポート装置２００の開発プログラム２２２を操作して、（２）データマイニング工程において決定された異常検知パラメータの候補リストのうち、一の異常検知パラメータに基づき、特徴量生成に係るユーザプログラムを作成する（Ｓ２２）。この作成されたユーザプログラムが特徴量生成プログラム１７４に相当する。
【０１４２】
ユーザがサポート装置２００の開発プログラム２２２を操作して、特徴量を用いた機械学習を指定するためのユーザプログラムを作成する（Ｓ２４）。この作成されたユーザプログラムが学習要求プログラム１６８に相当する。
【０１４３】
制御装置１００のＰＬＣエンジン１５０の機械学習エンジンインターフェイス１６６で学習要求プログラム１６８が実行されることで（Ｓ２６）、制御装置１００の機械学習エンジン１４０の学習機能１４２が機械学習を実施し、その学習結果１３４が内部ＤＢ１２５に格納される（Ｓ２８）。なお、特徴量生成プログラム１７４および学習要求プログラム１６８を同時に実行させるようにしてもよい。
【０１４４】
そして、ユーザがサポート装置２００のパラメータ設定ツール２２４を操作して、内部ＤＢ１２５に格納されている学習結果１３４を読み出して解析することで、しきい値を決定する（Ｓ３０）。続いて、ユーザがサポート装置２００のパラメータ設定ツール２２４を操作して、決定したしきい値１５４６を制御装置１００のＰＬＣエンジン１５０に転送する（Ｓ３２）。
【０１４５】
（１−３）試運転工程においては、ユーザがサポート装置２００において試運転機能を実行すると（Ｓ４０）、ＰＬＣエンジン１５０の監視要求プログラム１７０が実行される。
【０１４６】
監視要求プログラム１７０が実行されることで機械学習エンジン１４０の異常検知機能１４４に対して実行開始が指示されると（Ｓ４２）、異常検知機能１４４は、生成された特徴量のデータ（診断対象データ）と、内部ＤＢ１２５に学習結果として書き込まれた特徴量の集合体のデータ（学習データ）との乖離度を取得する。
【０１４７】
次に、試運転機能２２６６においては、ＰＬＣエンジン１５０の異常検知プログラム１６２が実行される（Ｓ４４）。異常検知プログラム１６２が実行されると、異常検知機能１４４により取得される乖離度と、しきい値１５４６とに基づいて、制御対象に生じる異常が検知される（Ｓ４６）。制御対象に生じる異常が検知されると、その旨を示すイベントログ１４６が出力される（Ｓ４８）。
【０１４８】
次に、試運転機能２２６６においては、機械学習エンジン１４０の実行時間（異常検知機能１４４による乖離度の取得時間）が、変数マネジャ１５４からサポート装置２００によって取得される（Ｓ５０）。試運転機能２２６６においては、変数マネジャ１５４から取得した機械学習エンジン１４０の総実行時間に基づき、候補リストに挙がっている１または複数の異常検知パラメータの中から一の異常検知パラメータが決定される。
【０１４９】
以上のような制御装置１００およびサポート装置２００の各エレメントが連系することで、本実施の形態に係る設定工程が実施される。
【０１５０】
＜Ｇ．運転工程における主な処理内容＞
図１０は、本実施の形態に係る制御システム１の運転工程における主な処理内容を説明するための模式図である。
【０１５１】
図１０を参照して、（２−１）異常検知工程においては、ユーザがサポート装置２００の開発プログラム２２２を操作して、機械学習エンジン１４０の異常検知機能１４４に対して実行開始を指示するためのユーザプログラムを作成する（Ｓ６０）。この作成されたユーザプログラムが監視要求プログラム１７０に相当する。
【０１５２】
監視要求プログラム１７０が実行されることで異常検知機能１４４に対して実行開始が指示されると（Ｓ６２）、異常検知機能１４４は、生成された特徴量のデータ（診断対象データ）と、内部ＤＢ１２５に学習結果として書き込まれた特徴量の集合体のデータ（学習データ）との乖離度を取得する。
【０１５３】
ユーザがサポート装置２００の開発プログラム２２２を操作して、制御対象に生じる異常を検知するためのユーザプログラムを作成する（Ｓ６４）。この作成されたユーザプログラムが異常検知プログラム１６２に相当する。
【０１５４】
異常検知プログラム１６２が実行されると、異常検知機能１４４により取得される乖離度と、しきい値１５４６とに基づいて、制御対象に生じる異常が検知される（Ｓ６６）。制御対象に生じる異常が検知されると、その旨を示すイベントログ１４６が出力される（Ｓ６８）。
【０１５５】
（２−２）時間超過通知工程においては、異常検知工程における機械学習エンジン１４０による乖離度の取得時間が、異常検知工程の実行周期（診断周期）の時間を２回連続で超えた場合、変数マネジャ１５４からその旨を示すイベントログが出力される（Ｓ７０）。
【０１５６】
＜Ｈ．ユーザプログラムおよび機械プログラムの実行周期＞
図１１は、本実施の形態に係る制御システム１において実行されるユーザプログラムおよび機械プログラムの実行周期を説明するための模式図である。図１２は、本実施の形態に係る制御システム１において実行されるユーザプログラムおよび機械プログラムの実行の一例を説明するための模式図である。なお、図１１および図１２では、運転工程におけるユーザプログラムおよび機械プログラムの実行例が示されている。
【０１５７】
図１１を参照して、ＰＬＣエンジン１５０におけるユーザプログラムは、予め定められた周期（以下、制御周期とも称す。）で実行される。ユーザプログラムは、機械プログラムよりも優先的に実行される。１制御周期の上限時間（図中のタイミングｔｍｉｎからタイミングｔｍａｘまでの時間）は予め決められており、その間にユーザプログラムの実行が完了すると、空き時間を利用して機械プログラムが実行される。
【０１５８】
図１２を参照して、ユーザプログラムは、たとえば、数ｍｓｅｃの制御周期で実行され、機械プログラムは、数１００ｍｓｅｃ〜数ｓｅｃの周期で実行される。タイミングｔ１において実行されたユーザプログラムでは、入出力処理の後に特徴量生成プログラムによって特徴量が生成される。生成された特徴量は、機械学習エンジン１４０に出力される。また、監視要求プログラムによって監視要求トリガが出力される。
【０１５９】
タイミングｔ２においてユーザプログラムの一連の処理が完了すると、次の制御周期に移行するまでの空き時間を利用して、監視要求トリガに従うように機械プログラムが実行される。
【０１６０】
機械プログラムの実行中においては、ユーザプログラムの実行によって生成された特徴量のデータ（診断対象データ）と、内部ＤＢ１２５に学習結果として書き込まれた特徴量の集合体のデータ（学習データ）との乖離度が計算される。
【０１６１】
タイミングｔ３においてユーザプログラムの１制御周期が終了すると、次の制御周期に移行して再びユーザプログラムが実行される。この制御周期内においては、機械学習エンジン１４０によって未だ診断対象データについての乖離度が取得されていないため、監視要求プログラムによって監視要求トリガは出力されない。なお、特徴量生成プログラムによって特徴量は生成されるものの、機械学習エンジン１４０は、未だ診断対象データについての乖離度を取得していないので、新たに取得した特徴量を用いた乖離度の計算を行わない。
【０１６２】
タイミングｔ４においてユーザプログラムの一連の処理が完了すると、次の制御周期に移行するまでの空き時間を利用して、再び乖離度の計算が行われる。このようにして、機械学習エンジン１４０は、ユーザプログラムの処理が完了した後、１制御周期内の空き時間を利用して乖離度の計算を行う。
【０１６３】
タイミングｔ６からタイミングｔ７までの期間で機械学習エンジン１４０によって乖離度の取得が完了すると、タイミングｔ８で実行される次の制御周期におけるユーザプログラムによって、乖離度（たとえば、マハラノビス距離）がＰＬＣエンジン１５０に入力される。
【０１６４】
タイミングｔ８で実行されたユーザプログラムでは、入力された乖離度と、予め決められたしきい値とに基づいて、制御対象の異常検知が行われる。
【０１６５】
以上のような機械プログラムの実行による乖離度の取得は、第３パラメータによって設定された異常検知工程の実行周期（診断周期）内に収まることが好ましい。
【０１６６】
再び図１１を参照して、第３パラメータによって診断周期ａが設定された場合を想定する。診断周期ａ内では、機械プログラムの実行による乖離度の取得が完了していない。この場合、次の制御周期でユーザプログラムが実行されたとしても、この制御周期内の空き時間を利用して、乖離度の取得が引き続き行われる。このような時間超過が２回続くと、前述した時間超過検知工程においてイベントログが出力される。
【０１６７】
ここで、前述したように、異常検知工程の実行周期（診断周期）について、ユーザは、第３パラメータで設定することができる。このため、たとえば、図１１に示すように、ユーザは、診断周期ａよりも期間が長い診断周期ｂとなるように第３パラメータを設定すれば、診断周期内で乖離度の取得が完了する。
【０１６８】
このように、ユーザは、第３パラメータの値を変更することで、乖離度の取得に使用できる時間を調整することができる。機械学習エンジン１４０による乖離度の取得時間は、たとえば、生産ラインを流れるワークの単位時間当たりの数など、制御対象が置かれる生産システムに依存する。このため、ユーザは、第３パラメータを設定することで所望の診断周期を設定する。
【０１６９】
また、前述したように、第３パラメータの設定によって診断周期を変更する方法に限らず、ユーザは、第１パラメータおよび第２パラメータを設定することで乖離度の取得時間を調整することもできる。
【０１７０】
具体的には、第１パラメータは、特徴量を定義する要素の種類（平均、標準偏差、歪度、尖度、最大、および最小など）および要素の数（特徴ベクトルの次元数）を設定するためのパラメータである。よって、第１パラメータは、制御周期ごとの特徴量の生成時間に関係するため、第１パラメータの設定によって、ユーザプログラムの一連の処理時間が短くなる。すなわち、乖離度の計算に用いられる１制御周期内の空き時間をなるべく確保することができる。また、第１パラメータは、乖離度の計算時間にも影響する。このため、ユーザは、第１パラメータを設定することで、乖離度の取得時間を短くすることができる。
【０１７１】
また、第２パラメータは、ｋ値を設定するためのパラメータである。よって、第２パラメータは、乖離度の計算時間に影響する。このため、ユーザは、第２パラメータを設定することで、乖離度の取得時間を短くすることができる。
【０１７２】
このように、ユーザは、制御対象が置かれる生産システムに依存して変動する乖離度の取得時間を考慮して第３パラメータを設定することで、診断周期を調整することができる。また、診断周期が決まっている場合であっても、ユーザは、第１パラメータおよび第２パラメータを設定することで、その診断周期内に収まるように乖離度の取得時間を設定することができる。したがって、ユーザは、ユーザプログラム自体を改変する必要がなく、パラメータを設定するだけで、診断周期内に収まるように乖離度の取得時間を調整することができる。その結果、生産システムのメンテナンス工数が増えることを極力抑えることができる。
【０１７３】
＜Ｉ．ユーザプログラム＞
次に、ユーザプログラムについて説明する。図１３は、本実施の形態に係る制御システム１において実行されるユーザプログラムの一例を示す図である。前述したように、ユーザプログラムは、特徴量生成プログラムと、監視要求プログラムと、異常検知プログラムとを含む。
【０１７４】
図１３を参照して、特徴量生成プログラムは、典型的には、特徴量生成ファンクションブロック１７４０を用いて記述されてもよい。
【０１７５】
特徴量生成ファンクションブロック１７４０に対しては、特徴量の生成に関する変数の指定が定義される。たとえば、符号１７４２で示されるＳＴ１は、特徴量生成プログラムの実行有無を指定する。符号１７４６で示されるＩｎｐｕｔ２は、制御対象から取得された生データの入力を指定する。
【０１７６】
符号１７４８で示されるＩｎｐｕｔ３は、特徴量を定義する要素をビットで指定する。ユーザは、符号１７４８で示されるＩｎｐｕｔ３を指定することで、特徴量を定義する要素の種類（平均、標準偏差、歪度、尖度、最大、および最小など）および要素の数（特徴ベクトルの次元数）を設定することができる。つまり、符号１７４８で示されるＩｎｐｕｔ３における指定は、第１パラメータの設定に対応する。
【０１７７】
符号１７５０で示されるＳＴＣ１は、特徴量の計算完了を指定する。符号１７５２で示されるＳａｍｐ１は、特徴量の計算中を指定する。符号１７５８で示されるＦＤ１は、計算された特徴量を指定する。
【０１７８】
次に、監視要求プログラムは、典型的には、監視要求ファンクションブロック１７００を用いて記述されてもよい。
【０１７９】
監視要求ファンクションブロック１７００に対しては、機械プログラムに対する実行開始の指示に関する変数の指定が定義される。たとえば、符号１７０２で示されるＳＴＣ１は、符号１７５０で示されるＳＴＣ１に関連付けられており、特徴量の計算完了を指定する。符号１７０４で示されるＳＴＬ１は、機械学習エンジン１４０による機械プログラムの実行有無を指定する。
【０１８０】
符号１７０６で示されるＩｎｐｕｔ４は、診断周期を指定する。ユーザは、符号１７０６で示されるＩｎｐｕｔ４を指定することで、診断周期を設定することができる。つまり、符号１７０６で示されるＩｎｐｕｔ４における指定は、第３パラメータの設定に対応する。
【０１８１】
符号１７０８で示されるＦＤ１は、符号１７５８で示されるＦＤ１に関連付けられており、計算された特徴量を指定する。符号１７１０で示されるＡｌｇｏ１は、アルゴリズム名を指定する。
【０１８２】
符号１７１２で示されるＫｖａ１は、ｋ値を指定する。ユーザは、符号１７１２で示されるＫｖａ１を指定することで、ｋ値を設定することができる。つまり、符号１７１２で示されるＫｖａ１における指定は、第２パラメータの設定に対応する。
【０１８３】
符号１７１４で示されるＳＴＣ２は、乖離度の記憶完了を指定する。符号１７１６で示されるＤｉｖ１は、記憶された乖離度を指定する。
【０１８４】
次に、異常検知プログラムにおいては、異常検知に関する変数の指定が定義される。たとえば、符号１６２２で示されるＳＴＣ２は、符号１７１４で示されるＳＴＣ２に関連付けられており、乖離度の記憶完了を指定する。符号１６２４で示されるＤｉｖ１は、符号１７１６で示されるＤｉｖ１に関連付けられており、記憶された乖離度を指定する。符号１６２６で示されるＴｈは、異常検知に用いられるしきい値を指定する。
【０１８５】
符号１６２８で示されるＥｒｒ３は、符号１６２０で示されるＪｕｄｇｅにおける乖離度としきい値との判定結果を指定する。
【０１８６】
なお、図１３に示すユーザプログラムは一例であって、どのような記述方法を採用してもよい。
【０１８７】
＜Ｊ．具体例＞
本実施の形態に係る制御システム１を用いた異常検知の具体例について説明する。
【０１８８】
図１４は、本実施の形態に係る制御システム１において実行される設定工程を説明するためのフローチャートである。
【０１８９】
図１４を参照して、設定工程が開始されると、サポート装置２００は、異常検知パラメータの候補リストを作成する（Ｓ２０２）。異常検知パラメータの候補リストは、過去の実績データあるいはシミュレーションなどに基づき作成される。また、たとえば、第３パラメータの値として診断周期が予め設定されている場合、異常検知パラメータの候補リストは、設定された診断周期に基づき作成されてもよい。
【０１９０】
サポート装置２００は、異常検知パラメータの候補リストに挙がっている１または複数のパラメータの組（たとえば、第１パラメータ，第２パラメータ，第３パラメータのセット）の中から、１組の異常検知パラメータを抽出する（Ｓ２０４）。
【０１９１】
一方、制御装置１００は、サポート装置２００によって抽出された異常検知パラメータに基づき特徴量を生成する（Ｓ１０２）。具体的には、制御装置１００は、第１パラメータによって定義される要素の種類（平均、標準偏差、歪度、尖度、最大、および最小など）および要素の数（特徴ベクトルの次元数）に基づき特徴量を生成する。
【０１９２】
制御装置１００は、機械学習エンジン１４０に異常検知パラメータを設定する（Ｓ１０４）。制御装置１００は、機械学習エンジン１４０を実行し、その実行時間を測定する（Ｓ１０６）。具体的には、制御装置１００は、第２パラメータによって定義されるｋ値に基づき、機械学習エンジン１４０により乖離度を取得する。そして、制御装置１００は、その取得時間を測定する。制御装置１００は、測定した実行時間をサポート装置２００に通知する（Ｓ１０８）。
【０１９３】
一方、サポート装置２００は、制御装置１００から通知された実行時間を記憶する（Ｓ２０６）。サポート装置２００は、候補リストに挙がっている全ての異常検知パラメータを使用していない場合（Ｓ２０８でＮＯ）、再び１組の異常検知パラメータを抽出する（Ｓ２０４）。
【０１９４】
サポート装置２００は、候補リストに挙がっている全ての異常検知パラメータを使用した場合（Ｓ２０８でＹＥＳ）、第３パラメータによって設定された診断周期内に収まった異常検知パラメータのうち、一の異常検知パラメータを決定する（Ｓ２１０）。
【０１９５】
たとえば、サポート装置２００は、実行時間がより短い異常検知パラメータ、あるいは異常検出率がより高い異常検知パラメータを採用すればよい。なお、サポート装置２００は、実行時間および異常検出率に対して重み付けすることで、異常検知パラメータを決定してもよい。具体的には、実行時間がより短いほど重みを大きくし、かつ異常検出率がより高いほど重みを大きくし、それらの重みを掛け合わせた結果が最も大きくなる異常検知パラメータを採用すればよい。なお、サポート装置２００は、実行時間および異常検出率以外の観点から、一の異常検知パラメータを決定してもよい。
【０１９６】
サポート装置２００は、決定した異常検知パラメータおよびその異常検出率を表示部２１８に表示し（Ｓ２１２）、設定工程を終了する。その後は、運転工程が実施される。
【０１９７】
図１５は、本実施の形態に係る制御システム１において作成される候補リストの一例を示す図である。なお、図１５に示される候補リストは、図１４のＳ２０２で作成される候補リストの一例である。
【０１９８】
図１５（Ａ）を参照して、サポート装置２００は、候補リスト格納テーブルを作成する。候補リスト格納テーブルには、異常検知パラメータの候補リストが格納されている。たとえば、図１５（Ａ）の例では、診断周期として１２０ｍｓｅｃが設定されていた場合に、パラメータ１〜６が候補として挙げられている。
【０１９９】
候補リスト格納テーブルにおいて、診断周期は第３パラメータの設定値に対応し、ｋ値は第２パラメータの設定値に対応し、次元数は第１パラメータの設定値に対応する。図１５（Ｂ）を参照して、第１パラメータは、特徴量演算フラグテーブルに格納された各フラグＢｉｔを用いて設定される。
【０２００】
設定工程において、機械学習エンジン１４０は、候補リストとして挙げられた全ての異常検知パラメータを用いて乖離度を取得し、その実行時間を測定する。図１５（Ａ）の例では、パラメータ３〜６を用いた場合に、機械学習エンジン１４０の実行時間が１２０ｍｓｅｃの診断周期内に収まっている。一方、その他のパラメータ１，２を用いた場合では、時間超過となる。
【０２０１】
機械学習エンジン１４０の実行時間が診断周期内に収まった異常検知パラメータのうち、実行時間および異常検出率に基づきＴｏｔａｌ Ｓｃｏｒｅが算出される。そして、その結果に基づき、一の異常検知パラメータが決定される。この例では、パラメータ３が異常検知パラメータとして決定される。なお、図１５に示されるパラメータ３は、図１４のＳ２１０で決定される異常検知パラメータの一例である。
【０２０２】
設定工程で異常検知パラメータとしてパラメータ３が決定されると、次の段階では、それを用いて運転工程が実施される。設定工程において時間超過が発生しなかったとしても、実際の運用では制御対象の振る舞いによって時間超過が発生する可能性がある。図１６は、本実施の形態に係る制御システム１において設定された診断周期内に診断が終了しなかった場合の一例を説明するための模式図である。
【０２０３】
図１６を参照して、この例では、ｎ周期目では機械学習エンジン１４０の実行時間が診断周期内に収まっているが、ｎ＋１周期目では機械学習エンジン１４０の実行時間が診断周期内に収まっていない。
【０２０４】
ｎ＋１周期目で収まりきらなかった分は、ｎ＋２周期目で乖離度の取得が引き続き行われる。このような時間超過が２回続くと、その旨を示すイベントログが出力される。
【０２０５】
時間超過を通知するイベントログが出力されると、サポート装置２００の表示部２１８に時間超過の通知およびパラメータを選択するための画像が表示される。
【０２０６】
図１７は、本実施の形態に係る制御システム１においてサポート装置２００に表示される画像の一例を示す図である。
【０２０７】
図１７を参照して、サポート装置２００の表示部２１８には、現在の設定状況を示す設定画像２１８２と、パラメータを選択するための選択画像２１８４とが表示される。
【０２０８】
設定画像２１８２には、現在設定されているパラメータ３の設定内容が表される。さらに、設定画像２１８２には、時間超過を表すデータがグラフィカルに表される。具体的には、機械学習エンジン１４０によって乖離度の取得に要した時間と診断周期との関係が、グラフィカルに表される。
【０２０９】
選択画像２１８４には、図１５に示される候補リストのうち、機械学習エンジン１４０の実行時間が診断周期内に収まったパラメータ４〜６の設定内容が表される。さらに、この設定内容の表示においては、Ｔｏｔａｌ Ｓｃｏｒｅの大きい順に従って、候補１〜３として異常検知パラメータが表示される。このように、機械学習エンジン１４０による乖離度の取得時間に基づく優先順位に従って、乖離度の取得時間を短縮可能な異常検知パラメータの候補が表示される。
【０２１０】
また、選択画像２１８４には、候補１〜３のうち、いずれかの異常検知パラメータを選択するためのラジオボタン２１８６と、その選択を確定する確定ボタン２１８８とが表される。ユーザは、候補１〜３のうちから所望の異常検知パラメータをラジオボタン２１８６によって選択し、確定ボタン２１８８をクリックすることで、異常検知パラメータを確定することができる。
【０２１１】
このように、設定工程において一の異常検知パラメータが決定され、その異常検知パラメータを用いて運用工程が実施される。運用工程において時間超過の異常が発生すると、設定工程において作成されていた候補リストの中から、使用していない異常検知パラメータが選択肢として出力される。ユーザは、選択画像２１８４で表された異常検知パラメータの候補のうち、所望のパラメータを選択することで、異常検知パラメータを設定することができる。このようにして、ユーザは、予め設定していた診断周期内に機械学習エンジン１４０の実行時間が収まるように、異常検知パラメータを設定することができる。すなわち、ユーザは、制御対象に生じる異常を検知する際に要する期間を調整することができる。
【０２１２】
＜Ｋ．変形例＞
本実施の形態に係る制御システム１においては、設定工程において異常検知パラメータが自動で決定されるものであったが、ユーザがサポート装置２００を用いて異常検知パラメータを決定するものであってもよい。もちろん、ある状況においては、ユーザがサポート装置２００を用いて異常検知パラメータを決定する一方で、他の状況においては、サポート装置２００が異常検知パラメータを自動で決定するものであってもよい。
【０２１３】
本実施の形態に係る制御システム１においては、ユーザが第１パラメータ、第２パラメータ、および第３パラメータの少なくともいずれかを決定できるが、ユーザがこれらのうちのいずれかのパラメータのみを決定し、その他のパラメータはサポート装置２００によって自動で決定されてもよい。また、異常検知パラメータとして、診断周期、ｋ値、および次元数の他に、制御対象に生じる異常を検知する際に要する期間を調整できる他のパラメータをユーザが決定できてもよい。
【０２１４】
本実施の形態に係る制御システム１においては、運用工程において時間超過の異常が発生した場合、ユーザに異常検知パラメータを選択させるものであった。しかし、運用工程において時間超過の異常が発生した場合、診断周期内に機械学習エンジン１４０の実行時間が収まるように、サポート装置２００が異常検知パラメータを自動で決定してもよい。
【０２１５】
本実施の形態に係る制御システム１においては、時間超過の異常が生じた場合に、設定工程において作成された候補リストの中から、ユーザが異常検知パラメータを選択するものであったが、ユーザが異常検知パラメータの値を自由に変更できてもよい。
【０２１６】
たとえば、図１８は、本実施の形態に係る制御システム１においてサポート装置２００に表示される画面の一例を示す図である。図１８を参照して、サポート装置２００の表示部２１８には、パラメータを選択するための選択画像２１９２が表示される。
【０２１７】
選択画像２１９２には、診断周期、ｋ値、および特徴量処理（次元数）の選択項目が表される。ユーザは、これらの選択項目を用いて所望の値を異常検知パラメータとして選択し、確定ボタン２１９８をクリックすることで、異常検知パラメータを確定することができる。このように、ユーザは、異常検知パラメータの値を自由に変更できる。
【０２１８】
＜Ｌ．利点＞
本実施の形態に係る制御システム１によれば、診断周期、ｋ値、および次元数といった異常検知パラメータをユーザが設定することができる。これにより、ユーザは、制御対象に生じる異常を検知する際に要する期間を、パラメータの値を設定することで調整することができる。
【０２１９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０２２０】
１  制御システム、２  第１フィールドネットワーク、４  第２フィールドネットワーク、６  ローカルネットワーク、１０  フィールド装置群、１２  リモートＩ／Ｏ装置、１４  リレー群、１６，１２４  Ｉ／Ｏユニット、１８  画像センサ、２０  カメラ、２２  サーボドライバ、２４  サーボモータ、１００  制御装置、１０２，２０２  プロセッサ、１０４  チップセット、１０６，２０６  主記憶装置、１０８，２０８  二次記憶装置、１１０，２１４  ローカルネットワークコントローラ、１１２，２１２  コントローラ、１１４  メモリカードインターフェイス、１１６  メモリカード、１１８，１２０  フィールドバスコントローラ、１２２  内部バスコントローラ、１３２  生データ、１３４  学習結果、１４０  機械学習エンジン、１４２  学習機能、１４４  異常検知機能、１４６  イベントログ、１５０  エンジン、１５２  スケジューラ、１５４  変数マネジャ、１６０  ユーザプログラム、１６２  異常検知プログラム、１６４  書込プログラム、１６６  機械学習エンジンインターフェイス、１６８  学習要求プログラム、１７０  監視要求プログラム、１７４  特徴量生成プログラム、２００  サポート装置、２０４  光学ドライブ、２０５  記録媒体、２１６  入力部、２１８  表示部、２２０  バス、２２２  開発プログラム、２２４  パラメータ設定ツール、２２６  データマイニングツール、３００  データロギング装置、４００  表示装置、４０２，２２６８  表示機能、１５４２  システム変数、１５４４  デバイス変数、１５４６  しきい値、１７００  監視要求ファンクションブロック、１７４０  特徴量生成ファンクションブロック、２１８２  設定画像、２１８４，２１９２  選択画像、２１８６  ラジオボタン、２１８８，２１９８  確定ボタン、２２４２  変数アクセスプログラム、２２６２  生データ取得機能、２２６４  データマイニング機能、２２６６  試運転機能。
【図１】
2018159981.tif 000003
【図２】
2018159981.tif 000004
【図３】
2018159981.tif 000005
【図４】
2018159981.tif 000006
【図５】
2018159981.tif 000007
【図６】
2018159981.tif 000008
【図７】
2018159981.tif 000009
【図８】
2018159981.tif 000010
【図９】
2018159981.tif 000011
【図１０】
2018159981.tif 000012
【図１１】
2018159981.tif 000013
【図１２】
2018159981.tif 000014
【図１３】
2018159981.tif 000015
【図１４】
2018159981.tif 000016
【図１５】
2018159981.tif 000017
【図１６】
2018159981.tif 000018
【図１７】
2018159981.tif 000019
【図１８】
2018159981.tif 000020
【手続補正書】
【提出日】平成30年1月24日(2018.1.24)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０２２０
【補正方法】変更
【補正の内容】
【０２２０】
１  制御システム、２  第１フィールドネットワーク、４  第２フィールドネットワーク、６  ローカルネットワーク、１０  フィールド装置群、１２  リモートＩ／Ｏ装置、１４  リレー群、１６，１２４  Ｉ／Ｏユニット、１８  画像センサ、２０  カメラ、２２  サーボドライバ、２４  サーボモータ、１００  制御装置、１０２，２０２  プロセッサ、１０４  チップセット、１０６，２０６  主記憶装置、１０８，２０８  二次記憶装置、１１０，２１４  ローカルネットワークコントローラ、１１２，２１２  コントローラ、１１４  メモリカードインターフェイス、１１６  メモリカード、１１８，１２０  フィールドバスコントローラ、１２２  内部バスコントローラ、１３２  生データ、１３４  学習結果、１４０  機械学習エンジン、１４２  学習機能、１４４  異常検知機能、１４６  イベントログ、１５０  エンジン、１５２  スケジューラ、１５４  変数マネジャ、１６０  ユーザプログラム、１６２  異常検知プログラム、１６４  書込プログラム、１６６  機械学習エンジンインターフェイス、１６８  学習要求プログラム、１７０  監視要求プログラム、１７４  特徴量生成プログラム、２００  サポート装置、２０４  光学ドライブ、２０５  記録媒体、２１６  入力部、２１８  表示部、２２０  バス、２２２  開発プログラム、２２４  パラメータ設定ツール、２２６  データマイニングツール、３００  データロギング装置、４００  表示装置、４０２，２２６８  表示機能、１５４２  システム変数、１５４４  ユーザ変数・デバイス変数、１５４６  しきい値、１７００  監視要求ファンクションブロック、１７４０  特徴量生成ファンクションブロック、２１８２  設定画像、２１８４，２１９２  選択画像、２１８６  ラジオボタン、２１８８，２１９８  確定ボタン、２２４２  変数アクセスプログラム、２２６２  生データ取得機能、２２６４  データマイニング機能、２２６６  試運転機能。