(57)【要約】【課題】制御対象に生じている現象をより短い周期で監視できる技術が提供される。【課題手段】制御装置は、制御対象に関連するデータから制御対象に生じる異常を検知するのに適した特徴量を生成する特徴量生成手段と、特徴量生成手段により生成される特徴量を用いて機械学習を実施する機械学習手段と、機械学習による学習結果に基づいて決定される制御対象に生じる異常の検知に用いられる異常検知パラメータと、特徴量生成手段により生成される特徴量とに基づいて、異常を検知する異常検知手段と、異常検知手段に対して、異常の検知を指示する指示手段と、特徴量生成手段により生成される特徴量をデータ圧縮した上で、機械学習手段および異常検知手段に与えるデータ圧縮手段とを含む。指示手段は、異常検知手段に対して異常の検知に必要な要求を送信し、異常検知手段は、指示手段に対して当該要求に対して応答を返信することなく、異常の検知を実施する。【選択図】図５
2018097662.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御する制御装置であって、
前記制御対象に関連するデータから前記制御対象に生じる異常を検知するのに適した特徴量を生成する特徴量生成手段と、
前記特徴量生成手段により生成される特徴量を用いて機械学習を実施する機械学習手段と、
前記機械学習による学習結果に基づいて決定される前記制御対象に生じる異常の検知に用いられる異常検知パラメータと、前記特徴量生成手段により生成される特徴量とに基づいて、前記異常を検知する異常検知手段と、
前記異常検知手段に対して、前記異常の検知を指示する指示手段と、
前記特徴量生成手段により生成される特徴量をデータ圧縮した上で、前記機械学習手段および前記異常検知手段に与えるデータ圧縮手段とを備え、
前記指示手段は、前記異常検知手段に対して前記異常の検知に必要な要求を送信し、前記異常検知手段は、前記指示手段に対して当該要求に対して応答を返信することなく、前記異常の検知を実施する、制御装置。
【請求項２】
前記データ圧縮手段は、マシンコードを用いて対象となるデータを変換する、請求項１に記載の制御装置。
【請求項３】
前記異常検知手段は、前記異常検知パラメータの指定および対象となる特徴量の指定を含むユーザプログラムによって実現される、請求項１または２に記載の制御装置。
【請求項４】
前記制御対象に関連するデータを収集して格納するデータベースをさらに備える、請求項１〜３のいずれか１項に記載の制御装置。
【請求項５】
前記データベースには、ユーザプログラムに含まれる命令に従って指定されたデータが収集される、請求項４に記載の制御装置。
【請求項６】
前記データベースに収集されたデータに基づいて、前記制御対象に生じる異常を検知するのに適した特徴量の生成手法を決定する決定手段をさらに備える、請求項４または５に記載の制御装置。
【請求項７】
前記機械学習による学習結果に基づいて前記異常検知パラメータを決定する異常検知パラメータ決定手段をさらに備える、請求項１〜６のいずれか１項に記載の制御装置。
【請求項８】
前記異常検知パラメータを保持するとともに、外部装置からの要求に応じて、保持されている異常検知パラメータを更新する保持手段をさらに備える、請求項１〜７のいずれか１項に記載の制御装置。
【請求項９】
コンピュータにより実行されることで制御対象を制御する制御装置を実現する制御プログラムであって、前記コンピュータに
前記制御対象に関連するデータから前記制御対象に生じる異常を検知するのに適した特徴量を生成するステップと、
生成される特徴量を用いて機械学習を実施するステップと、
前記機械学習による学習結果に基づいて決定される前記制御対象に生じる異常の検知に用いられる異常検知パラメータと、生成される特徴量とに基づいて、前記異常を検知するステップと、
前記異常の検知を指示するステップと、
前記生成される特徴量をデータ圧縮して、機械学習および異常検知に用いるデータを提供するステップとを実行させ、
前記異常を検知するステップは、前記異常の検知に必要な要求が送信された後、当該要求に対して応答を返信することなく、前記異常の検知を実施するステップを含む、制御プログラム。
【請求項１０】
制御対象を制御する制御装置で実行される制御方法であって、
前記制御対象に関連するデータから前記制御対象に生じる異常を検知するのに適した特徴量を生成するステップと、
生成される特徴量を用いて機械学習を実施するステップと、
前記機械学習による学習結果に基づいて決定される前記制御対象に生じる異常の検知に用いられる異常検知パラメータと、生成される特徴量とに基づいて、前記異常を検知するステップと、
前記異常の検知を指示するステップと、
前記生成される特徴量をデータ圧縮して、機械学習および異常検知に用いるデータを提供するステップとを備え、
前記異常を検知するステップは、前記異常の検知に必要な要求が送信された後、当該要求に対して応答を返信することなく、前記異常の検知を実施するステップを含む、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、制御対象に生じている現象を監視できる制御装置、制御プログラムおよび制御方法に関する。
【背景技術】
【０００２】
様々な生産現場において、ＰＬＣ（プログラマブルコントローラ）などの制御装置を用いたＦＡ（Factory Automation）技術が広く普及している。近年の情報通信技術（ＩＣＴ：Information and Communication Technology）の発展に伴って、このようなＦＡ分野における制御装置もますます高性能化および高機能化している。
【０００３】
このような高性能化の一つとして、制御装置へのデータ入力および制御装置からのデータ出力の周期の短縮化がある。例えば、特開２０１２−１９４６６３号公報（特許文献１）は、ＰＬＣのＣＰＵユニットが行う制御データの出力および入力のための通信の周期を、制御プログラムの最大実行時間よりも短い一定時間とする技術を開示する。
【０００４】
このようなデータ入出力の周期を短縮化することによって、制御、監視、異常検知、異常予知などをより高い精度で実現できる。
【０００５】
また、特開２０１３−００８１１１号公報（特許文献２）は、機械設備の異常予兆の有無を診断する異常予兆診断装置を開示する。特許文献２に開示される異常予兆診断装置においては、機械設備に設置された複数のセンサによって測定された多次元センサデータが通信ネットワークを介してそれぞれの機械設備から送信される。これらの多次元センサデータに対してデータマイニングなどによって異常予兆の診断が行われる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−１９４６６３号公報
【特許文献２】特開２０１３−００８１１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述の特許文献１に開示されるような構成を採用することで、高速な入力データの取得が可能であるが、それを特許文献２に開示される異常予兆診断装置に適用することはできない。なぜならば、特許文献２に開示される異常予兆診断装置においては、多次元センサデータは、ＬＡＮ（Local Area Network）やＷＡＮ（Wide Area Network）などの通信ネットワークを介して送信されるため、ｍｓｅｃオーダやμｓｅｃオーダで入力データを収集することは困難である。
【０００８】
そのため、特許文献２に開示される異常予兆診断装置では、比較的進行速度の遅い劣化に伴う異常の予兆を診断できる程度に留まる。
【０００９】
本技術は、制御対象に生じている現象をより短い周期で監視できる技術を提供する。
【課題を解決するための手段】
【００１０】
本発明のある局面によれば、制御対象を制御する制御装置が提供される。制御装置は、制御対象に関連するデータから制御対象に生じる異常を検知するのに適した特徴量を生成する特徴量生成手段と、特徴量生成手段により生成される特徴量を用いて機械学習を実施する機械学習手段と、機械学習による学習結果に基づいて決定される制御対象に生じる異常の検知に用いられる異常検知パラメータと、特徴量生成手段により生成される特徴量とに基づいて、異常を検知する異常検知手段と、異常検知手段に対して、異常の検知を指示する指示手段と、特徴量生成手段により生成される特徴量をデータ圧縮した上で、機械学習手段および異常検知手段に与えるデータ圧縮手段とを含む。指示手段は、異常検知手段に対して異常の検知に必要な要求を送信し、異常検知手段は、指示手段に対して当該要求に対して応答を返信することなく、異常の検知を実施する。
【００１１】
好ましくは、データ圧縮手段は、マシンコードを用いて対象となるデータを変換する。
好ましくは、異常検知手段は、異常検知パラメータの指定および対象となる特徴量の指定を含むユーザプログラムによって実現される。
【００１２】
好ましくは、制御装置は、制御対象に関連するデータを収集して格納するデータベースをさらに含む。
【００１３】
好ましくは、データベースには、ユーザプログラムに含まれる命令に従って指定されたデータが収集される。
【００１４】
好ましくは、制御装置は、データベースに収集されたデータに基づいて、制御対象に生じる異常を検知するのに適した特徴量の生成手法を決定する決定手段をさらに含む。
【００１５】
好ましくは、制御装置は、機械学習による学習結果に基づいて異常検知パラメータを決定する異常検知パラメータ決定手段をさらに含む。
【００１６】
好ましくは、制御装置は、異常検知パラメータを保持するとともに、外部装置からの要求に応じて、保持されている異常検知パラメータを更新する保持手段をさらに含む。
【００１７】
本発明の別の局面によれば、コンピュータにより実行されることで制御対象を制御する制御装置を実現する制御プログラムが提供される。制御プログラムは、コンピュータに、制御対象に関連するデータから制御対象に生じる異常を検知するのに適した特徴量を生成するステップと、生成される特徴量を用いて機械学習を実施するステップと、機械学習による学習結果に基づいて決定される制御対象に生じる異常の検知に用いられる異常検知パラメータと、生成される特徴量とに基づいて、異常を検知するステップと、異常の検知を指示するステップと、生成される特徴量をデータ圧縮して、機械学習および異常検知に用いるデータを提供するステップとを実行させる。異常を検知するステップは、異常の検知に必要な要求が送信された後、当該要求に対して応答を返信することなく、異常の検知を実施するステップを含む。
【００１８】
本発明のさらに別の局面によれば、制御対象を制御する制御装置で実行される制御方法が提供される。制御方法は、制御対象に関連するデータから制御対象に生じる異常を検知するのに適した特徴量を生成するステップと、生成される特徴量を用いて機械学習を実施するステップと、機械学習による学習結果に基づいて決定される制御対象に生じる異常の検知に用いられる異常検知パラメータと、生成される特徴量とに基づいて、異常を検知するステップと、異常の検知を指示するステップと、生成される特徴量をデータ圧縮して、機械学習および異常検知に用いるデータを提供するステップとを含む。異常を検知するステップは、異常の検知に必要な要求が送信された後、当該要求に対して応答を返信することなく、異常の検知を実施するステップを含む。
【発明の効果】
【００１９】
本技術によれば、制御対象に生じている現象をより短い周期で監視できる。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態に係る制御システムの全体構成例を示す模式図である。
【図２】本実施の形態に係る制御システムを構成する制御装置のハードウェア構成例を示すブロック図である。
【図３】本実施の形態に係る制御システムを構成するサポート装置のハードウェア構成例を示すブロック図である。
【図４】本実施の形態に係る制御システムを用いた異常検知の手順を説明するための模式図である。
【図５】本実施の形態に係る制御システムの各装置が提供する機能を説明するための模式図である。
【図６】本実施の形態に係る制御システムを用いた異常検知のための各工程での処理内容を説明するための模式図である。
【図７】本実施の形態に係る制御システムにおいて生成される内部ＤＢ書込プログラムの一例を示す図である。
【図８】本実施の形態に係る制御システムのデータマイニング工程において決定可能な特徴量を示すリストの一例である。
【図９】本実施の形態に係るサポート装置においてデータマイニング工程後に表示されるユーザインターフェイス画面の一例を示す図である。
【図１０】本実施の形態に係る制御システムにおいて生成される特徴量生成プログラムおよび学習要求プログラムの一例を示す図である。
【図１１】本実施の形態に係る制御システムにおいて実行される機械学習を実施することで得られる学習結果の一例を示す図である。
【図１２】本実施の形態に係る制御システムにおいて生成される特徴量生成プログラムおよび監視要求プログラムの一例を示す図である。
【図１３】本実施の形態に係る制御システムの制御装置におけるシリアライズ処理を説明するための模式図である。
【図１４】本実施の形態に係る制御システムの制御装置におけるデシリアライズ処理を説明するための模式図である。
【図１５】図１４は、本実施の形態に係る制御システムの制御装置における機械学習エンジンインターフェイスと機械学習エンジンとの間のデータ遣り取りを説明するための模式図である。
【図１６】本実施の形態に係る制御システムの一つの応用例を示す模式図である。
【図１７】図１６に示す制御システムにおける異物の噛み込み発生時の状態値および状態値から生成される特徴量の変化の一例を示す図である。
【発明を実施するための形態】
【００２１】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２２】
＜Ａ．制御システムの全体構成例＞
まず、本実施の形態に係る制御装置を含む制御システム１の全体構成例について説明する。
【００２３】
図１は、本実施の形態に係る制御システム１の全体構成例を示す模式図である。図１を参照して、本実施の形態に係る制御システム１は、主たる構成要素として、制御対象を制御する制御装置１００と、制御装置１００に接続されるサポート装置２００とを含む。
【００２４】
制御装置１００は、ＰＬＣ（プログラマブルコントローラ）などの、一種のコンピュータとして具現化されてもよい。制御装置１００は、第１フィールドネットワーク２を介してフィールド装置群１０と接続されるとともに、第２フィールドネットワーク４を介して１または複数の表示装置４００と接続される。さらに、制御装置１００は、ローカルネットワーク６を介してデータロギング装置３００に接続される。制御装置１００は、それぞれのネットワークを介して、接続された装置との間でデータを遣り取りする。なお、データロギング装置３００および表示装置４００はオプショナルな構成であり、制御システム１の必須の構成ではない。
【００２５】
制御装置１００は、設備や機械を制御するための各種演算を実行する制御ロジック（以下、「ＰＬＣエンジン」とも称す。）を有している。ＰＬＣエンジンに加えて、制御装置１００は、フィールド装置群１０にて計測され、制御装置１００へ転送されるデータ（以下、「入力データ」とも称す。）を収集する収集機能を有している。さらに、制御装置１００は、収集した入力データを監視する監視機能も有している。これらの機能が制御装置１００に実装されることで、制御対象に生じている現象をより短い周期で監視できる。
【００２６】
具体的には、制御装置１００に実装される内部データベース（以下、「内部ＤＢ」とも記す。）１３０が収集機能を提供し、制御装置１００に実装される機械学習エンジン１４０が監視機能を提供する。内部ＤＢ１３０および機械学習エンジン１４０の詳細については後述する。
【００２７】
第１フィールドネットワーク２および第２フィールドネットワーク４は、データの到達時間が保証される、定周期通信を行うネットワークを採用することが好ましい。このような定周期通信を行うネットワークとしては、ＥｔｈｅｒＣＡＴ（登録商標）、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などが知られている。
【００２８】
フィールド装置群１０は、制御対象または制御に関連する製造装置や生産ラインなど（以下、「フィールド」とも総称する。）から入力データを収集する装置を含む。このような入力データを収集する装置としては、入力リレーや各種センサなどが想定される。フィールド装置群１０は、さらに、制御装置１００にて生成される指令（以下、「出力データ」とも称す。）に基づいて、フィールドに対して何らかの作用を与える装置を含む。このようなフィールドに対して何らかの作用を与える装置としては、出力リレー、コンタクタ、サーボドライバおよびサーボモータ、その他任意のアクチュエータが想定される。これらのフィールド装置群１０は、第１フィールドネットワーク２を介して、制御装置１００との間で、入力データおよび出力データを含むデータを遣り取りする。
【００２９】
図１に示す構成例においては、フィールド装置群１０は、リモートＩ／Ｏ（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）装置と称されるものであり、専用機として実装された構成を採用してもよいし、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。
【００５９】
＜Ｃ．制御システムが提供する異常検知機能＞
次に、本実施の形態に係る制御システム１が提供する異常検知機能について説明する。
【００６０】
図４は、本実施の形態に係る制御システム１を用いた異常検知の手順を説明するための模式図である。図４に示す異常検知の手順は、全体として６つの工程からなる。
【００６１】
具体的には、まず、（１）生データ収集工程が実施される。（１）生データ収集工程においては、制御装置１００が取り扱うデータのうち、異常検知に係る解析に使用するデータが内部ＤＢ１３０に書込まれる。（１）生データ収集工程は、後述する、制御装置１００の内部ＤＢ書込プログラムが実行されることで実現される。
【００６２】
制御装置１００においては、フィールドとの間で遣り取りされるデータ（入力データおよび出力データ）ならびに内部データの各々に対してユニークな変数名が割り当てられており、それぞれの変数名を利用してユーザプログラムなどが記述される。すなわち、制御装置１００においては、変数プログラミングが可能な環境が提供される。そのため、以下の説明においては、「変数の指定」または「変数の特定」という表現は、対象となるデータを特定することと実質的に同義で用いることとする。なお、本発明の範囲は、変数プログラミング可能な構成に限定されるものではなく、メモリ上のアドレスを直接指定するような構成であっても、技術的範囲に含まれ得る。
【００６３】
次に、（２）データマイニング工程が実施される。（２）データマイニング工程においては、内部ＤＢ１３０に書込まれたデータが読込まれ、異常検知手法が決定される。異常検知手法は、どのようなデータをどのようなロジックで監視すれば、目的の異常を検知できるのかという手法を示すものである。本実施の形態においては、異常検知手法は、フィールドからの１または複数のデータからの特徴量の生成手法を含む。（２）データマイニング工程は、典型的には、後述する、サポート装置２００のデータマイニングツールが実行されることで実現される。決定された異常検知手法に応じて、特徴量を生成するための設定やパラメータなどが出力される。
【００６４】
次に、（３）特徴量収集工程が実施される。（３）特徴量収集工程においては、フィールドとの間で遣り取りされるデータおよび内部データのうち、対象となるデータに対して、先の（２）データマイニング工程において決定された特徴量の生成手法が適用されることで、特徴量が順次生成される。（３）特徴量収集工程は、後述する、制御装置１００の特徴量生成プログラムが実行されることで実現される。
【００６５】
次に、（４）特徴量学習工程が実施される。（４）特徴量学習工程においては、（３）特徴量収集工程において収集された特徴量に対して機械学習処理が実施され、この機械学習処理の結果から、異常検知に用いる異常検知パラメータ（典型的には、しきい値など）が決定される。（４）特徴量学習工程は、後述する、制御装置１００の機械学習エンジンによって提供される。
【００６６】
以上のような（１）〜（４）の工程によって、異常検知に用いる特徴量の定義、および、異常であると判断するための異常検知パラメータなどを決定できる。そして、異常の発生有無を監視する工程が実施される。具体的には、（５）特徴量監視工程が実施される。（５）特徴量監視工程においては、所定周期毎または所定イベント毎に生成される特徴量の監視、すなわち、生成される特徴量が予め定められた異常検知パラメータにより規定された条件に合致するか否かが判断される。そして、異常が検知されると、その検知された異常を示すイベントログが出力される。
【００６７】
（５）特徴量監視工程において何らかの異常が検知された場合には、その妥当性を評価する工程が実施されてもよい。すなわち、何らかの異常検知に応じて、（６）評価工程が実施されてもよい。（６）評価工程においては、異常検知結果に基づいて、検知された異常の妥当性が評価される。（６）評価工程は、典型的には、後述する、サポート装置２００のデータマイニングツールが実行されることで実現される。（６）評価工程での評価結果に応じて、異常検知に用いる異常検知パラメータなどが調整されてもよい。
【００６８】
図５は、本実施の形態に係る制御システム１の各装置が提供する機能を説明するための模式図である。図５に示す模式図において、カッコ内の数字は、図５に示す（１）〜（６）の工程における処理に対応している。
【００６９】
制御装置１００は、内部ＤＢ１３０および機械学習エンジン１４０に加えて、ＰＬＣエンジン１５０を有している。これらの機能は、基本的には、制御装置１００のプロセッサ１０２（図２）がプログラムを実行することで実現される。このプロセッサ１０２がプログラムを実行するための環境を提供するために、制御装置１００にはＯＳ１９０もインストールされる。
【００７０】
ＰＬＣエンジン１５０は、典型的には、ＯＳ１９０上でシステムプログラムおよびユーザプログラムが実行されることで提供される。つまり、本発明のある局面によれば、一種のコンピュータにて実行されることで、ＰＬＣエンジン１５０を含む制御装置１００を実現するようなプログラムを含み得る。
【００７１】
より具体的には、ＰＬＣエンジン１５０は、スケジューラ１５２と、変数マネジャ１５４と、制御プログラム１６０とを含む。
【００７２】
スケジューラ１５２は、ＰＬＣエンジン１５０を構成する各プログラム（あるいは、それに対応するタスク）の実行タイミングや実行順序などを制御する。ＰＬＣエンジン１５０に含まれる各タスクには実行周期が予め定められており、スケジューラ１５２は、その定められた実行周期に従ってタスクを繰返し実行できるように制御する。
【００７３】
変数マネジャ１５４は、ＰＬＣエンジン１５０において周期的に実行されるＩ／Ｏリフレッシュ処理によって更新されるデータを変数として管理する。より具体的には、変数マネジャ１５４は、制御装置１００の各部の動作状態を示すデータ群を含むシステム変数１５４２と、ＰＬＣエンジン１５０において実行されるユーザプログラムが書込み・読出しを行うデータ群を含むユーザ変数・デバイス変数１５４４と、異常検知に用いる異常検知パラメータ１５４６とを保持および管理する。
【００７４】
異常検知パラメータ１５４６については、サポート装置２００のＰＬＣ変数アクセスプログラム２２４２によるアクセスおよび更新が可能になっている。つまり、変数マネジャ１５４は、異常検知パラメータ１５４６を保持するとともに、外部装置からの要求に応じて、保持されている異常検知パラメータ１５４６を更新する機能を提供する。
【００７５】
制御プログラム１６０は、ユーザが任意に作成可能なユーザプログラムに相当し、典型的には、シーケンス／モーションプログラム１６２と、内部ＤＢ書込プログラム１６４と、機械学習エンジンインターフェイス１６６と、特徴量生成プログラム１７４とを含む。制御プログラム１６０を構成するプログラムの命令は、一体のプログラムとして記述されてもよいし、複数のプログラムにそれぞれ分離して記述されてもよい。
【００７６】
シーケンス／モーションプログラム１６２は、制御対象を制御するための論理演算および／または数値演算を行う命令を含む。内部ＤＢ書込プログラム１６４は、ユーザ変数・デバイス変数１５４４に含まれる変数のうち、予め指定された変数を内部ＤＢ１３０に書込む。
【００７７】
機械学習エンジンインターフェイス１６６は、機械学習エンジン１４０を操作するための命令を含む。具体的には、機械学習エンジンインターフェイス１６６は、学習要求プログラム１６８と、監視要求プログラム１７０と、シリアライズモジュール１７２とを含む。
【００７８】
つまり、機械学習エンジンインターフェイス１６６は、機械学習エンジン１４０に対して、機械学習を指示する命令を含み、監視要求プログラム１７０は、機械学習エンジンインターフェイス１６６は、異常検知パラメータ１５４６を用いて特徴量を監視し、異常検知を指示する命令を含む。
【００７９】
シリアライズモジュール１７２は、学習要求プログラム１６８および監視要求プログラム１７０と、機械学習エンジン１４０との間の通信量を低減するためのシリアライズ処理を実行する。後述するように、シリアライズモジュール１７２は、特徴量生成プログラム１７４の実行により生成される特徴量をデータ圧縮した上で、学習機能１４２および異常検知機能１４４に与えるデータ圧縮機能を提供する。
【００８０】
特徴量生成プログラム１７４は、予め指定された特徴量の生成手法に従って、ユーザ変数・デバイス変数１５４４の指定された変数を用いて特徴量を生成する命令を含む。後述するように制御対象に応じて適切な特徴量の生成手法が決定される。すなわち、特徴量生成プログラム１７４は、制御対象に関連するデータから制御対象に生じる異常を検知するのに適した特徴量を生成する。
【００８１】
内部ＤＢ１３０には、典型的には、（１）生データ収集工程において収集される生データ１３２と、（４）特徴量学習工程において取得される学習結果１３４と、（５）特徴量監視工程において出力される異常検知結果１３６とが格納される。
【００８２】
機械学習エンジン１４０は、（４）特徴量学習工程において必要な処理を実行するための学習機能１４２と、（５）特徴量監視工程において必要な処理を実行するための異常検知機能１４４とを含む。学習機能１４２は、特徴量生成プログラム１７４の実行により生成される特徴量を用いて機械学習を実施する。異常検知機能１４４は、学習機能１４２の機械学習による学習結果に基づいて決定される制御対象に生じる異常の検知に用いられる異常検知パラメータ１５４６と、特徴量生成プログラム１７４の実行により生成される特徴量とに基づいて、制御対象における異常を検知する。そして、異常検知機能１４４は、何らかの異常を検知すると、その検知した異常の内容を示すイベントログ１４６を出力する。異常検知機能１４４は、監視要求プログラム１７０からの要求に従って動作する。つまり、監視要求プログラム１７０は、異常検知機能１４４に対して異常の検知を指示する。
【００８３】
一方、サポート装置２００には、開発プログラム２２２（図３）に加えて、パラメータ設定ツール２２４およびデータマイニングツール２２６がインストールされている。
【００８４】
パラメータ設定ツール２２４は、制御装置１００の変数マネジャ１５４が管理する各変数に対してアクセスするためのＰＬＣ変数アクセスプログラム２２４２を含む。ＰＬＣ変数アクセスプログラム２２４２は、制御装置１００内部の変数の参照および書き換えを可能にする。
【００８５】
データマイニングツール２２６は、内部ＤＢアクセス機能２２６２と、データマイニング機能２２６４と、可視化機能２２６６とを含む。内部ＤＢアクセス機能２２６２は、内部ＤＢ１３０にアクセスして、内部ＤＢ１３０に収集されている生データのうち、必要なデータを抽出する。データマイニング機能２２６４は、主として、上述の（２）データマイニング工程を実施する。可視化機能２２６６は、（２）データマイニング工程などによって得られた各種情報や、（５）特徴量監視工程において検知された異常の内容などを視覚的にユーザへ提示する。
【００８６】
データマイニングツール２２６によれば、（２）データマイニング工程の実施によって、特徴量生成手法の決定および異常検知手法が決定され、（４）特徴量学習工程の実施によって、異常検知パラメータが決定され、（６）評価工程の実施によって、異常検知の評価結果が生成される。
【００８７】
次に、（１）〜（６）に示す各工程と、図５に示される各エレメントの動作との関係について説明する。図６は、本実施の形態に係る制御システム１を用いた異常検知のための各工程での処理内容を説明するための模式図である。
【００８８】
図６を参照して、（１）生データ収集工程においては、ユーザがサポート装置２００の開発プログラム２２２を操作して、内部ＤＢ１３０に収集すべき変数を指定するためのユーザプログラムを作成する（ステップＳ１０）。この作成されたユーザプログラムが内部ＤＢ書込プログラム１６４に相当する。制御装置１００のＰＬＣエンジン１５０で内部ＤＢ書込プログラム１６４が実行されることで、制御装置１００の内部ＤＢ１３０に生データ１３２が書込まれる（ステップＳ１２）。
【００８９】
（２）データマイニング工程においては、ユーザがサポート装置２００のデータマイニングツール２２６を操作して、内部ＤＢ１３０に収集されている生データ１３２を読出して解析することで、特徴量の生成手法および異常検知手法を決定する（ステップＳ２０）。
【００９０】
（３）特徴量収集工程においては、ユーザがサポート装置２００の開発プログラム２２２を操作して、（２）データマイニング工程において決定された特徴量の生成手法を反映させた、特徴量生成に係るユーザプログラムを作成する（ステップＳ３０）。この作成されたユーザプログラムが特徴量生成プログラム１７４に相当する。
【００９１】
（４）特徴量学習工程においては、ユーザがサポート装置２００の開発プログラム２２２を操作して、特徴量を用いた機械学習を指定するためのユーザプログラムを作成する（ステップＳ４０）。この作成されたユーザプログラムが学習要求プログラム１６８に相当する。制御装置１００のＰＬＣエンジン１５０の機械学習エンジンインターフェイス１６６で学習要求プログラム１６８が実行されることで、制御装置１００の機械学習エンジン１４０の学習機能１４２が機械学習を実施し、その学習結果１３４が内部ＤＢ１３０に格納される。なお、（３）特徴量収集工程の特徴量生成プログラム１７４および（４）特徴量学習工程の学習要求プログラム１６８を同時に実行させるようにしてもよい。
【００９２】
そして、ユーザがサポート装置２００のデータマイニングツール２２６を操作して、内部ＤＢ１３０に格納されている学習結果１３４を読出して解析することで、異常検知パラメータを決定する（ステップＳ４２）。続いて、ユーザがサポート装置２００の開発プログラム２２２を操作して、決定した異常検知パラメータを制御装置１００のＰＬＣエンジン１５０に転送する（ステップＳ４４）。
【００９３】
（５）特徴量監視工程においては、ユーザがサポート装置２００の開発プログラム２２２を操作して、何らかの異常発生を監視するためのユーザプログラムを作成する（ステップＳ５０）。この作成されたユーザプログラムが監視要求プログラム１７０に相当する。制御装置１００のＰＬＣエンジン１５０の機械学習エンジンインターフェイス１６６で監視要求プログラム１７０が実行されることで、制御装置１００の機械学習エンジン１４０の異常検知機能１４４が異常検知処理を実施し、何らかの異常を検知すると、その内容を含むイベントログ１４６を出力する（ステップＳ５２）とともに、内部ＤＢ１３０に異常検知結果１３６を書込む（ステップＳ５４）。
【００９４】
（６）評価工程においては、ユーザがサポート装置２００の開発プログラム２２２を操作して、内部ＤＢ１３０に格納されている異常検知結果１３６を読出して、その内容の妥当性を評価する（ステップＳ６０）。必要に応じて、ユーザは、異常検知パラメータ１５４６を調整してもよい。
【００９５】
以上のような制御装置１００およびサポート装置２００の各エレメントが連系することで、本実施の形態に係る異常検知機能が実現される。
【００９６】
＜Ｄ．生データ収集工程＞
次に、（１）生データ収集工程において生成されるユーザプログラム（内部ＤＢ書込プログラム１６４）について説明する。
【００９７】
図７は、本実施の形態に係る制御システム１において生成される内部ＤＢ書込プログラム１６４の一例を示す図である。図７を参照して、内部ＤＢ書込プログラム１６４は、典型的には、内部ＤＢ書込ファンクションブロック１６４２を用いて記述されてもよい。
【００９８】
内部ＤＢ書込ファンクションブロック１６４２に対しては、内部ＤＢ１３０に収集される生データの集合を特定するためのテーブル名１６４４と、内部ＤＢ１３０に収集される変数を指定する対象変数指定１６４６と、内部ＤＢ１３０に変数を収集する周期を指定する周期指定１６４８とが定義される。
【００９９】
ユーザは、任意の名前をテーブル名１６４４として指定するとともに、対象となる変数を示す変数名を対象変数指定１６４６として指定する。また、対象となる変数の収集周期（収集頻度）を周期指定１６４８として指定する。図７に示す例では、４つの変数（Ｉｎｐｕｔ０１〜０４）が１００ｍｓｅｃの周期で、ＶａｒｉａｂｌｅＳｅｔ０１という名前の付されたテーブルに収集される。なお、内部ＤＢ書込ファンクションブロック１６４２を有効に動作させるための条件を指定してもよい。
【０１００】
なお、図７に示すユーザプログラムは一例であって、どのような記述方法を採用してもよい。例えば、ラダー言語やストラクチャードテキストなどを用いてもよい。
【０１０１】
このように、制御装置１００は、制御対象に関連するデータを収集して格納するデータベースとして内部ＤＢ１３０を有している。そして、内部ＤＢ１３０には、ユーザプログラムに含まれる命令（例えば、内部ＤＢ書込ファンクションブロック１６４２）に従って指定されたデータが収集されることになる。
【０１０２】
本実施の形態に係る制御システム１においては、ユーザは、上述のようなユーザプログラム（内部ＤＢ書込プログラム１６４）を記述するだけで、必要な１または複数の変数の時系列を制御装置１００の制御周期（数百μｓｅｃオーダ〜数十ｍｓｅｃオーダ）で収集することができ、従前のシステムに比較して、より粒度の細かい分析が可能となる。
【０１０３】
＜Ｅ．データマイニング工程＞
次に、（２）データマイニング工程において決定される特徴量の生成手法および異常検知手法の一例について説明する。
【０１０４】
図８は、本実施の形態に係る制御システム１のデータマイニング工程において決定可能な特徴量を示すリストの一例である。図８に示すような複数の特徴量が予め定義されており、データマイニング工程においては、内部ＤＢ１３０に収集されている生データに対して、いずれの特徴量を用いるのが好ましいのかが決定される。
【０１０５】
具体的には、内部ＤＢ１３０に収集された生データを用いて、図８に示されるそれぞれの特徴量が算出され、その特徴量の変化の度合いが大きなものが候補として決定される。
【０１０６】
あるいは、典型的な手法として、各種の主成分分析を採用してもよい。主成分分析の手法としては、公知の任意の方法を採用できる。
【０１０７】
図９は、本実施の形態に係るサポート装置２００においてデータマイニング工程後に表示されるユーザインターフェイス画面の一例を示す図である。図９を参照して、ユーザインターフェイス画面５００においては、データマイニング工程の対象となった生データ群を特定するための特定情報５０２とともに、データマイニング工程の実施によって導出された、特徴量生成手法および異常検知手法の候補が表示される（候補５０４〜５０６）。
【０１０８】
候補５０４〜５０６の各々においては、特徴量の生成に用いる１または複数の変数と、それらの変数を用いて生成される特徴量の種類との組合せが表示されるとともに、生成された特徴量を監視するためのアルゴリズムも表示されている。例えば、候補５０４においては、変数Ｉｎｐｕｔ０１と変数Ｉｎｐｕｔ０２との間の相関値が特徴量生成手法（すなわち、特徴量）の候補として挙げられており、さらに、この特徴量の下限値を監視する手法が異常検知手法の候補として挙げられている。他の候補５０５および候補５０６についても同様である。
【０１０９】
さらに、候補５０４〜５０６の各々においては、「波形をみる」のボタンも表示されており、ユーザがこのボタンを選択することで、対応する特徴量生成手法および異常検知手法の候補を決定した際に用いられた波形などを確認することもできるようになっている。
【０１１０】
最終的に、ユーザは、ユーザインターフェイス画面５００において最も好ましいと思われる候補に対するラジオボタン５０８を選択することで、特徴量生成手法および異常検知手法が決定される。このように、サポート装置２００のデータマイニングツール２２６が実行されることで、制御装置１００の内部ＤＢ１３０に収集されたデータに基づいて、制御対象に生じる異常を検知するのに適した特徴量の生成手法を決定する機能が提供される。
【０１１１】
＜Ｆ．特徴量収集工程および特徴量学習工程＞
次に、（３）特徴量収集工程および（４）特徴量学習工程において生成されるユーザプログラム（特徴量生成プログラム１７４および学習要求プログラム１６８）について説明する。
【０１１２】
図１０は、本実施の形態に係る制御システム１において生成される特徴量生成プログラム１７４および学習要求プログラム１６８の一例を示す図である。図１０を参照して、特徴量生成プログラム１７４は、典型的には、特徴量生成ファンクションブロック１７４２を用いて記述されてもよい。特徴量生成ファンクションブロック１７４２は、図９のユーザインターフェイス画面５００の第１番目にある候補に対応させて、特徴量として相関値を算出する機能モジュールである。
【０１１３】
特徴量生成ファンクションブロック１７４２に対しては、特徴量の算出に用いられる変数を指定する入力変数指定１３４４と、算出された特徴量の出力先を示す出力先指定１７４６とが定義される。なお、（４）特徴量学習工程は、異常検知に用いる異常検知パラメータを決定することが目的であるので、特徴量生成ファンクションブロック１７４２が有効に動作するための条件１７４８を設定してもよい。この条件１７４８は、監視対象の設備や機械において何らかの異常が発生し得る状況を示す変数が設定される。例えば、監視対象の設備や機械の温度が予め定められた値を超えるような場合などを設定できる。あるいは、監視対象の設備や機械が現実に動作していることを条件１７４８として設定してもよい。このような条件１７４８を指定することで、生成される特徴量のデータ量を低減でき、機械学習の効率および精度を高めることができる。
【０１１４】
特徴量生成ファンクションブロック１７４２の出力段（出力先指定１７４６）には、学習要求プログラム１６８に対応する処理を実行するための学習要求ファンクションブロック１６８２が接続されてもよい。すなわち、特徴量生成ファンクションブロック１７４２の出力先指定１７４６と学習要求ファンクションブロック１６８２の学習対象の特徴量となる変数を指定する入力変数指定１６８４とが接続される。
【０１１５】
学習要求ファンクションブロック１６８２の出力段（学習結果出力先指定１６８６）には、学習要求プログラム１６８による機械学習の結果得られる情報（学習結果１３４）が出力される。
【０１１６】
図１１は、本実施の形態に係る制御システム１において実行される機械学習を実施することで得られる学習結果の一例を示す図である。図１１を参照して、例えば、算出される特徴量の集合に対してクラスタリングすることで、３つのクラスタに分離できたとする。このような場合には、学習結果１３４としては、各クラスタの特定とともに、各クラスタに含まれる特徴量のデータ数ならびに平均値および標準偏差などが出力される。
【０１１７】
ユーザは、図１１に示すような学習結果１３４を参照することで、特徴量である相関値の相対的に高い第１番目および第３番目のクラスタについては正常な状態であり、特徴量である相関値が相対的に低い第２番目のクラスタについては異常な状態であると推定できる。その上で、第１番目および第３番目のクラスタと第２番目のクラスタとを区別するためのしきい値を異常検知パラメータとして設定することができる。この場合、各クラスタの平均値および標準偏差から各クラスタの揺らぎを含む範囲を特定し、異常検知パラメータを決定する。例えば、図１１に示す例では、第１番目および第２番目のクラスタとは大きく離れているので、各クラスタの平均値の中間にある「４７．５」を異常検知パラメータとして設定することができる。
【０１１８】
異常検知パラメータを設定できれば、（３）特徴量収集工程および（４）特徴量学習工程は完了する。このように、サポート装置２００のデータマイニングツール２２６が実行されることで、機械学習による学習結果に基づいて異常検知パラメータ１７０６を決定する機能が提供される。
【０１１９】
＜Ｇ．特徴量監視工程＞
次に、（５）特徴量監視工程において生成されるユーザプログラム（監視要求プログラム１７０）について説明する。
【０１２０】
図１２は、本実施の形態に係る制御システム１において生成される特徴量生成プログラム１７４および監視要求プログラム１７０の一例を示す図である。特徴量生成プログラム１７４は、上述の図１０と同様に、特徴量生成ファンクションブロック１７４２を用いて記述されている。
【０１２１】
特徴量生成ファンクションブロック１７４２の出力段（出力先指定１７４６）には、監視要求プログラム１７０に対応する処理を実行するための監視要求ファンクションブロック１７０２が接続されてもよい。すなわち、特徴量生成ファンクションブロック１７４２の出力先指定１７４６と監視要求ファンクションブロック１７０２の監視対象の特徴量となる変数を指定する入力変数指定１７０４とが接続される。さらに、監視要求ファンクションブロック１７０２には、異常検知のしきい値として機能する異常検知パラメータ１７０６が定義される。
【０１２２】
特徴量生成ファンクションブロック１７４２は、入力変数指定１７０４において指定された変数（特徴量）と、異常検知パラメータ１７０６において指定されたしきい値とを制御周期毎に比較して、しきい値を跨ぐような事象が生じると、故障出力先指定１７０８として定義された変数（コイル）をＯＮに駆動する。ユーザプログラムにおいては、故障出力先指定１７０８として指定された変数の値に基づいて、制御対象の設備や機械での異常を即座に検知できる。
【０１２３】
このように、異常検知機能１４４は、異常検知パラメータ１７０６の指定および対象となる特徴量の指定を含むユーザプログラム（特徴量生成ファンクションブロック１７４２）によって実現される。このようなファンクションブロックを用いて異常検知の処理を規定できることで、汎用性を高めることができる。
【０１２４】
なお、（５）特徴量監視工程においては、対象の設備や機械が実際に動作している状態において異常検知処理を実施することが好ましい場合もあり、その場合には、特徴量生成ファンクションブロック１７４２が有効に動作するための条件１７４９を設定してもよい。この条件１７４９は、監視対象の設備や機械が動作していることを示す何らかの変数が設定される。なお、特徴量生成ファンクションブロック１７４２ではなく、監視要求ファンクションブロック１７０２に対して、有効に動作するための条件を設定してもよい。このような条件１７４９を指定することで、対象の設備や機械の異常を誤って検知する可能性を低減でき、異常検知の精度を高めることができる。
【０１２５】
上述のようなユーザプログラム（監視要求プログラム１７０）によって、対象の設備や機械に対する異常検知を行うことができる。
【０１２６】
＜Ｈ．シリアライズモジュール＞
本実施の形態に係る制御システム１を構成する制御装置１００は、内部ＤＢ１３０を実装することで、より高速なデータ収集を実現する。このデータ収集をより高速化する手法として、次に説明するようなシリアライズ技術およびデシリアライズ技術を採用してもよい。このようなシリアライズ技術およびデシリアライズ技術は、シリアライズモジュール１７２（図５）によって提供されてもよい。
【０１２７】
（ｈ１：シリアライズによるデータ圧縮）
まず、シリアライズによるデータ圧縮について説明する。図１３は、本実施の形態に係る制御システム１の制御装置１００におけるシリアライズ処理を説明するための模式図である。図１３を参照して、例えば、内部ＤＢ１３０に収集されるデータが、いわゆるキーバリューペアで規定されている場合を想定する。すなわち、ある値が何を意味するのかを示す「キー」データと、現実の値との組合せで対象の入力データが規定されているとする。この場合、冗長な情報も含まれているので、シリアライズモジュール１７２は、これらの入力データをシリアライズして、データ量を低減（データ圧縮）する。
【０１２８】
一例として、入力データに含まれるデータを単位データに区切った上で、各単位データを示す短縮化されたデータに置換するような方法が想定される。あるいは、図１３に示すように、プロセッサ１０２が直接解釈できるようなマシンコードに変換してもよい。つまり、シリアライズモジュール１７２は、マシンコードを用いて対象となるデータを変換することで、データ圧縮を実現してもよい。
【０１２９】
このようなマシンコードに変換することで、当初の入力データが有する冗長度を低減できる。また、機械学習エンジン１４０は、データ圧縮された状態であっても入力データをそのまま解釈できるので、データ圧縮された入力データを用いて機械学習するようにしてもよい。
【０１３０】
このように、内部ＤＢ１３０へのデータの書込み前に、データ圧縮処理を実施することで、内部ＤＢ１３０へのアクセス速度を高めることができる。
【０１３１】
（ｈ２：デシリアライズ処理の高速化）
上述したようなシリアライズされた状態で内部ＤＢ１３０にデータを格納した場合、当該データにアクセスする際に、シリアライズとは逆の変換、すなわちデシリアライズを行う必要がある。このようなデシリアライズについても、以下に説明するような処理の高速化手法を採用してもよい。
【０１３２】
図１４は、本実施の形態に係る制御システム１の制御装置１００におけるデシリアライズ処理を説明するための模式図である。図１４を参照して、目的の対象データ１３０２を内部ＤＢ１３０から読出す場合を想定する。対象データ１３０２は、シリアライズされており、本来であれば、対象データ１３０２の全体をデシリアライズする必要がある。
【０１３３】
これに対して、本実施の形態に係る制御装置１００においては、シリアライズモジュール１７２の処理エンジン１７２２が対象データ１３０２に含まれる一部のデータをバッファ領域１７２４にコピーし、対象データ１３０２のデシリアライズに必要な１または複数のオブジェクト１７２６をバッファ領域１７２４に生成する。そして、シリアライズモジュール１７２の処理エンジン１７２２は、生成した１または複数のオブジェクト１７２６を参照しつつ、対象データ１３０２の残りのデータについては、バッファ領域１７２４へのコピーなどをすることなく、対象データ１３０２をデシリアライズした後の結果を出力する。
【０１３４】
このように、シリアライズされたデータのすべてを読出して一旦コピーするのではなく、対象のデータの一部のみをコピーすることでデシリアライズを完了できるので、読出処理を高速化できる。
【０１３５】
＜Ｉ．機械学習エンジンインターフェイスによるデータ直接書込＞
次に、機械学習エンジンインターフェイス１６６と機械学習エンジン１４０との間のデータ遣り取りについて説明する。図１５は、図１４は、本実施の形態に係る制御システム１の制御装置１００における機械学習エンジンインターフェイス１６６と機械学習エンジン１４０との間のデータ遣り取りを説明するための模式図である。
【０１３６】
図１５（Ａ）には、典型的な、サーバ・クライエントモデルの下でのデータ遣り取りを示す。この構成においては、機械学習エンジンインターフェイス１６６は、機械学習エンジン１４０に対してリクエストを送信すると、機械学習エンジンインターフェイス１６６は、そのリクエストを受付けて処理するとともに、その処理結果を応答する。そして、機械学習エンジンインターフェイス１６６は、機械学習エンジン１４０からの応答を受けて、イベントログを登録する。
【０１３７】
このようなリクエストを送信し、そのリクエストに対する応答を待って、処理を行うような構成を採用した場合には、応答を待つ間、次の処理を実行することができず、処理を一次的に中断せざるを得ない。
【０１３８】
これに対して、本実施の形態に係る制御装置１００においては、図１５（Ｂ）に示すように、リクエストに対する応答についての処理（この例では、イベントログ登録）を、機械学習エンジンインターフェイス１６６から機械学習エンジン１４０へ委譲（delegation）することで、機械学習エンジンインターフェイス１６６での応答待ち時間を削減する。すなわち、図１５（Ｂ）に示す構成においては、機械学習エンジンインターフェイス１６６は、機械学習エンジン１４０に対してリクエストを送信することだけを行う。すると、機械学習エンジンインターフェイス１６６は、機械学習エンジンインターフェイス１６６からのリクエストを受付けて処理するとともに、その処理結果を受けて、イベントログ１４６を登録する。
【０１３９】
このように、機械学習エンジンインターフェイス１６６は、機械学習エンジン１４０に対して、必要なリクエストのみを送信すればよく、その後の応答などの処理を待つことなく、後続の処理を継続できる。つまり、機械学習エンジンインターフェイス１６６は、異常検知機能１４４に対して異常の検知に必要な要求を送信し、異常検知機能１４４は、機械学習エンジンインターフェイス１６６に対して当該要求に対して応答を返信することなく、異常の検知を実施する。
【０１４０】
このような構成を採用することで、機械学習エンジンインターフェイス１６６と機械学習エンジン１４０との間のデータの遣り取りを高速化できる。つまり、機械学習エンジンインターフェイス１６６での処理と、機械学習エンジン１４０での処理とを非同期で実行することができ、これによって、機械学習エンジンインターフェイス１６６での処理待ち時間を低減できる。
【０１４１】
＜Ｊ．応用例＞
次に、本実施の形態に係る制御システム１を用いた応用例について説明する。
【０１４２】
図１６は、本実施の形態に係る制御システム１の一つの応用例を示す模式図である。図１６には、包装機６００を含む制御システム１として構成した場合の例を示す。
【０１４３】
図１６を参照して、包装機６００は、所定の搬送方向に搬送される包装体６０４をロータによりシールおよび切断の少なくとも一方を順次行う。包装機６００は、一対のロータ６１０および６２０を有しており、ロータ６１０および６２０は、同期して回転する。各ロータは、包装体６０４に接する位置での外周の接線方向が搬送方向と一致するように配置されている。各ロータには、予め定められた位置にヒータおよびカッターが配置されており、これらのヒータおよびカッターが包装体６０４に接触することで、包装体６０４に対するシールおよび切断する処理が実現される。
【０１４４】
包装機６００のロータ６１０および６２０は、サーボモータ６１８および６２８によって、それぞれ回転軸６１２および６２２を中心に同期して回転駆動される。ロータ６１０および６２０の表面には、それぞれ処理機構６１４および６２４が設けられており、処理機構６１４は、円周方向（回転方向）に前後して配置されたヒータ６１５および６１６と、ヒータ６１５とヒータ６１６との間に配置されたカッター６１７とを含む。同様に、処理機構６２４は、円周方向に前後して配置されたヒータ６２５および６２６と、ヒータ６２５とヒータ６２６との間に配置されたカッター６２７とを含む。ロータ６１０および６２０は、その外周面上に配置された、包装体６０４を切断するためのカッター６１７および６２７を含む。
【０１４５】
ロータ６１０および６２０が包装体６０４の搬送速度と同期して回転することで、ヒータ６１５とヒータ６２５とによって、包装体６０４の紙面右側の位置において対向する面同士（上面と下面）がシール（接着）されるとともに、ヒータ６１６とヒータ６２６とによって、包装体６０４の紙面左側の位置において対向する面同士（上面と下面）がシール（接着）される。これらのシール処理と並行して、カッター６１７とカッター６２７とによって包装体６０４が切断される。このような一連の処理が繰返されることで、被包装物６０５を含む包装体６０４に対して、シールおよび切断が繰返し実行されて、個別包装体６０６が順次生成される。
【０１４６】
ロータ６１０および６２０を回転駆動するサーボモータ６１８および６２８は、ドライバ（駆動装置）の一例である、サーボドライバ６１９および６２９によって回転速度やトルクなどが制御される。制御装置１００は、サーボドライバ６１９および６２９から、サーボモータ６１８および６２８の状態値、すなわちロータ６１０および６２０の実績値を収集することができる。サーボドライバ６１９および６２９の状態値（または、ロータ６１０および６２０の実績値）としては、（１）回転位置（位相／回転角度）、（２）速度、（３）加速度、（４）トルク値、（５）電流値、（６）電圧値、などを含む。
【０１４７】
制御装置１００は、サーボドライバ６１９および６２９（または、ロータ６１０および６２０）の状態値を用いて、異物の噛み込みを検知する。
【０１４８】
異物噛み込みは、包装体６０４自体の位置ずれや、包装体６０４に包含される被包装物６０５の位置ずれなどによって生じ得る。異物噛み込みが発生することで、ロータ６１０および６２０を回転駆動するサーボモータ６１８および６２８にはより大きなトルクが発生することになる。このようなトルク変化を監視することで、異物噛み込みの異常を検知できる場合がある。
【０１４９】
図１７は、図１６に示す制御システム１における異物の噛み込み発生時の状態値および状態値から生成される特徴量の変化の一例を示す図である。図１７（Ａ）には、ロータ６１０および６２０に生じる力に関連する信号強度の時間変化の一例を示す。図１７（Ａ）に示す信号強度の時間変化の一例においては、相対的に大きな異物が噛み込んだ場合には、信号強度が大きく変化し、予め定められたしきい値を超えるので、異常を検知することができる。
【０１５０】
一方で、相対的に小さな異物が噛み込んだ場合には、信号強度の変化が小さく、予め定められたしきい値まで到達しない。そのため、相対的に小さな異物の噛み込みについては、異常を検知することができない。
【０１５１】
このような事態に対して、本実施の形態に係る制御システム１が提供する異常検知機能を用いた場合には、適切な特徴量および適切な異常検知パラメータを設定できるので、ロータに生じるトルクを直接観測することでは検知できない異常も検知することができる。
【０１５２】
一例として、図１７（Ｂ）に示すような特徴量を作成することで、相対的に小さな異物の噛み込み時であっても、噛み込みのない通常の状態と十分に区別することができる。
【０１５３】
通常の状態において生じる特徴量と相対的に小さな異物が噛み込んだときに生じる特徴量との間にしきい値（異常検知パラメータ）を設定することで、噛み込んだ異物が相対的に小さい場合であっても、異常を検知することができる。
【０１５４】
＜Ｋ．変形例＞
上述したサポート装置２００の機能の全部または一部を制御装置１００に組み入れるようにしてもよい。例えば、サポート装置２００に実装されるデータマイニングツール２２６についても、制御装置１００に実装するようにしてもよい。このような構成を採用することで、サポート装置２００側に多くのアプリケーションプログラムをインストールすることなく、本実施の形態に係る機能を利用することができる。
【０１５５】
また、図５および図６に示すモジュール構成は一例であり、上述したような機能を提供できる限り、どのような実装を採用してもよい。例えば、ハードウェア上の制約や、プログラミング上の制約などによって、図５および図６に示す機能モジュールを複数の機能モジュールの集合として実装してもよいし、図５および図６に示す複数の機能モジュールを単一のモジュールとして実装してもよい。
【０１５６】
＜Ｌ．利点＞
本実施の形態に係る制御システムによれば、フィールドとの間でデータを遣り取りする制御装置にデータを収集するデータベースを実装するとともに、そのデータベースに収集されるデータを用いて機械学習を行い、さらに機械学習の結果を用いて異常有無を検知することもできる。このような高機能化した制御装置を採用することで、従前の構成に比較して、制御対象に生じている現象をより短い周期で監視できる技術を実現できる。
【０１５７】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１５８】
１  制御システム、２  第１フィールドネットワーク、４  第２フィールドネットワーク、６  ローカルネットワーク、１０  フィールド装置群、１２  リモートＩ／Ｏ装置、１４  リレー群、１６，１２４  Ｉ／Ｏユニット、１８  画像センサ、２０  カメラ、２２，６１９，６２９  サーボドライバ、２４，６１８，６２８  サーボモータ、１００  制御装置、１０２，２０２  プロセッサ、１０４  チップセット、１０６，２０６  主記憶装置、１０８，２０８  二次記憶装置、１１０，２１４  ローカルネットワークコントローラ、１１２，２１２  ＵＳＢコントローラ、１１４  メモリカードインターフェイス、１１６  メモリカード、１１８，１２０  フィールドバスコントローラ、１２２  内部バスコントローラ、１３０  内部ＤＢ、１３２  生データ、１３４  学習結果、１３６  異常検知結果、１４０  機械学習エンジン、１４２  学習機能、１４４  異常検知機能、１４６  イベントログ、１５０  ＰＬＣエンジン、１５２  スケジューラ、１５４  変数マネジャ、１６０  制御プログラム、１６２  シーケンス／モーションプログラム、１６４  内部ＤＢ書込プログラム、１６６  機械学習エンジンインターフェイス、１６８  学習要求プログラム、１７０  監視要求プログラム、１７２  シリアライズモジュール、１７４  特徴量生成プログラム、１９０  ＯＳ、２００  サポート装置、２０４  光学ドライブ、２０５  記録媒体、２１６  入力部、２１８  表示部、２２０  バス、２２２  開発プログラム、２２４  パラメータ設定ツール、２２６  データマイニングツール、３００  データロギング装置、４００  表示装置、５００  ユーザインターフェイス画面、５０２  特定情報、５０４，５０５，５０６  候補、５０８  ラジオボタン、６００  包装機、６０４  包装体、６０５  被包装物、６０６  個別包装体、６１０  ロータ、６１２  回転軸、６１４，６２４  処理機構、６１５，６１６，６２５，６２６  ヒータ、６１７，６２７  カッター、１３０２  対象データ、１３４４，１６８４，１７０４  入力変数指定、１５４２  システム変数、１５４４  デバイス変数、１５４６，１７０６  異常検知パラメータ、１６４２  書込ファンクションブロック、１６４４  テーブル名、１６４６  対象変数指定、１６４８  周期指定、１６８２  学習要求ファンクションブロック、１６８６  学習結果出力先指定、１７０２  監視要求ファンクションブロック、１７０８  故障出力先指定、１７２２  処理エンジン、１７２４  バッファ領域、１７２６  オブジェクト、１７４２  特徴量生成ファンクションブロック、１７４６  出力先指定、１７４８，１７４９  条件、２２４２  変数アクセスプログラム、２２６２  アクセス機能、２２６４  データマイニング機能、２２６６  可視化機能。
【図１】
2018097662.tif 000003
【図２】
2018097662.tif 000004
【図３】
2018097662.tif 000005
【図４】
2018097662.tif 000006
【図５】
2018097662.tif 000007
【図６】
2018097662.tif 000008
【図７】
2018097662.tif 000009
【図８】
2018097662.tif 000010
【図９】
2018097662.tif 000011
【図１０】
2018097662.tif 000012
【図１１】
2018097662.tif 000013
【図１２】
2018097662.tif 000014
【図１３】
2018097662.tif 000015
【図１４】
2018097662.tif 000016
【図１５】
2018097662.tif 000017
【図１６】
2018097662.tif 000018
【図１７】
2018097662.tif 000019