(57)【要約】      （修正有）【課題】異常検知処理にかかるアルゴリズムを適宜切替え可能な環境を提供する。【解決手段】制御装置は、監視対象から取得された１または複数の状態値から１または複数の特徴量を算出し、学習モデル１５２を参照して、算出された特徴量に基づいて、監視対象に何らかの異常が発生している可能性を示す値を算出する複数種類のアルゴリズムのうちの１つを実行し、算出される値に基づいて、監視対象に何らかの異常が発生しているか否かを判定し、上記の実行される１つのアルゴリズムを、予め定められた条件に応じて切替える。【選択図】図２
2020101904.tif 000002
【特許請求の範囲】
【請求項１】
生産工程に配置される制御対象を制御する制御装置であって、
制御対象に含まれる監視対象から取得された１または複数の状態値から１または複数の特徴量を算出する特徴抽出部と、
学習モデルを参照して、前記特徴抽出部により算出される１または複数の特徴量に基づいて、前記監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出する複数種類のアルゴリズムのうちの１つを実行する処理部と、
前記処理部により算出されるスコアに基づいて、前記監視対象に何らかの異常が発生しているか否かを示す判定結果を生成する判定部と、
前記処理部により実行される前記１つのアルゴリズムを、予め定められた条件に応じて切替える切替部と、を備える、制御装置。
【請求項２】
前記予め定められた条件は、前記処理部による前記１つのアルゴリズムの処理時間に基づく条件を含む、請求項１に記載の制御装置。
【請求項３】
前記予め定められた条件は、前記処理部による前記１つのアルゴリズムの処理時間および前記判定部による前記スコアに基づき前記判定結果を生成する処理にかかる処理時間に基づく条件を含む、請求項１または２に記載の制御装置。
【請求項４】
前記予め定められた条件は、前記判定部により生成される判定結果に基づく条件を含む、請求項１から３のいずれか１項に記載の制御装置。
【請求項５】
前記予め定められた条件は、生産工程の切替えに基づく条件を含む、請求項１から４のいずれか１項に記載の制御装置。
【請求項６】
前記学習モデルは、前記複数種類のアルゴリズムに共通して適用される、請求項１から４のいずれか１項に記載の制御装置。
【請求項７】
前記学習モデルは、前記監視対象から取得されるデータから生成されかつ１以上の要素によって定義される特徴量の集合体であり、
前記制御装置は、さらに、
前記スコアの算出に用いる当該特徴量の集合体における範囲に関するパラメータを、切替え後のアルゴリズムに引き継ぐ、請求項１から６のいずれか１項に記載の制御装置。
【請求項８】
前記複数のアルゴリズムは、それぞれ、前記アルゴリズムの処理時間または算出される前記スコアの確度が異なる、請求項１から７のいずれか１項に記載の制御装置。
【請求項９】
前記制御対象のリアルタイム制御を実施するための制御タスクおよび、前記リアルタイム制御に関連する関連処理を実施するための関連処理タスクを含む複数のタスクを実行するマルチタスク実行部を、さらに備え、
前記マルチタスク実行部は、前記制御タスクを予め定められた周期で繰り返し実行し、
前記マルチタスク実行部は、前記制御タスクおいて前記判定部による判定処理を実行し、前記関連処理タスクにおいて前記処理部による前記スコアの算出を実行し、
前記アルゴリズムの処理時間に基づく条件は、当該処理時間が前記予め定められた周期に基づいた時間を超えるとの条件を含む、請求項２または３に記載の制御装置。
【請求項１０】
プロセッサに、生産工程に配置される制御対象を制御する制御方法を実行させるための制御プログラムであって、
前記制御方法は、
前記制御対象に含まれる監視対象から取得された１または複数の状態値から１または複数の特徴量を算出するステップと、
学習モデルを参照して、算出される前記１または複数の特徴量に基づいて、前記監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出する複数種類のアルゴリズムのうちの１つを実行するステップと、
算出される前記スコアに基づいて、前記監視対象に何らかの異常が発生しているか否かを示す判定結果を生成するステップと、
前記実行するステップにおいて実行される前記１つのアルゴリズムを、予め定められた条件に応じて切替えるステップと、を備える、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、監視対象に発生し得る何らかの異常を検知可能な制御装置およびプログラムに関する。
【背景技術】
【０００２】
様々な生産現場において、機械や装置に対する予知保全により設備稼働率を向上させたいというニーズが存在する。予知保全とは、機械や装置に生じる何らかの異常を検知して、設備を停止しなければ状態になる前に、整備や交換などの保守作業を行うような保全形態を意味する。
【０００３】
予知保全を実現するために、機械や装置の状態値を収集するとともに、収集された状態値に基づいて、当該機械や装置に何らかの異常が生じているか否かを判断するような仕組みが必要となる。
【０００４】
このような仕組みとして、例えば、特開２０１７−２１１９３０号公報（特許文献１）は、機械学習を適用した機器の寿命故障を予知する方法を提案する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１７−２１１９３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
現在、機械学習による異常検知のためのアルゴリズムは種々提案されている。例えば、処理時間はかかるが高精度の処理結果を出力するもの、または、処理結果の精度は高くないが処理時間が短いなど特長が異なる種々のアルゴリズムが提案されている。一方、生産現場では、異常検知を厳格に実施したい、または、異常検知を実施したいが時間はかけたくない等、様々なニーズがある。したがって、このような様々なニーズに応える複数のアルゴリズムを提供する環境が望まれる。しかし、特許文献１は、機械学習装置に適用する複数のアルゴリズムを準備する環境は提案しないから、このようなニーズに応えることができない。
【０００７】
この開示の一つの目的は、異常検知処理にかかるアルゴリズムを適宜切替え可能な環境を提供することである。
【課題を解決するための手段】
【０００８】
本開示の一例にかかる、生産工程に配置される制御対象を制御する制御装置は、制御対象に含まれる監視対象から取得された１または複数の状態値から１または複数の特徴量を算出する特徴抽出部と、学習モデルを参照して、特徴抽出部により算出される１または複数の特徴量に基づいて、監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出する複数種類のアルゴリズムのうちの１つを実行する処理部と、処理部により算出されるスコアに基づいて、監視対象に何らかの異常が発生しているか否かを示す判定結果を生成する判定部と、処理部により実行される１つのアルゴリズムを、予め定められた条件に応じて切替える切替部と、を備える。
【０００９】
この開示によれば、監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出するアルゴリズムを、予め定められた条件に応じて適宜切り替えることができる。
【００１０】
上述の開示において、予め定められた条件は、処理部による前記１つのアルゴリズムの処理時間に基づく条件を含む。
【００１１】
この開示によれば、アルゴリズムの処理時間に応じて他のアルゴリズムに切替えることができる。
【００１２】
上述の開示において、予め定められた条件は、処理部による１つのアルゴリズムの処理時間および判定部によるスコアに基づき判定結果を生成する処理にかかる処理時間に基づく条件を含む。
【００１３】
この開示によれば、アルゴリズムの処理時間および判定結果を生成する処理にかかる処理時間に応じて他のアルゴリズムに切替えることができる。
【００１４】
上述の開示において、予め定められた条件は、判定部により生成される判定結果に基づく条件を含む。
【００１５】
この開示によれば、判定部により生成される判定結果に応じて、アルゴリズムを切り替えることができる。
【００１６】
上述の開示において、予め定められた条件は、生産工程の切替えに基づく条件を含む。
この開示によれば、生産工程の切替に応じてアルゴリズムを切り替えることができる。
【００１７】
上述の開示において、学習モデルは、複数種類のアルゴリズムに共通して適用される。
この開示によれば、学習モデルを切替後の別のアルゴリズムに引き継ぐことができる。
【００１８】
上述の開示において、学習モデルは、監視対象から取得されるデータから生成されかつ１以上の要素によって定義される特徴量の集合体であり、制御装置は、さらに、スコアの算出に用いる当該特徴量の集合体における範囲に関するパラメータを、切替え後のアルゴリズムに引き継ぐ。
【００１９】
この開示によれば、スコアの算出に用いる当該特徴量の集合体における範囲に関するパラメータを、切替後のアルゴリズムに引き継ぐことができる。
【００２０】
上述の開示において、複数のアルゴリズムは、それぞれ、アルゴリズムの処理時間または算出されるスコアの確度が異なる。
【００２１】
この開示によれば、アルゴリズムを切り替えることにより、アルゴリズムの処理時間または算出されるスコアの確度を異ならせることができる。
【００２２】
上述の開示において、制御対象のリアルタイム制御を実施するための制御タスクおよび、リアルタイム制御に関連する関連処理を実施するための関連処理タスクを含む複数のタスクを実行するマルチタスク実行部を、さらに備え、マルチタスク実行部は、制御タスクを予め定められた周期で繰り返し実行し、マルチタスク実行部は、制御タスクおいて判定部による判定処理を実行し、関連処理タスクにおいて処理部によるスコアの算出を実行し、アルゴリズムの処理時間に基づく条件は、当該処理時間が前記予め定められた周期に基づいた時間を超えるとの条件を含む。
【００２３】
この開示によれば、リアルタイム制御を実施する予め定められた周期に同期して、スコアの算出がなされるようにアルゴリズムを切り替えることができるので、スコアに基づく判定処理の結果に基づき制御対象のリアルタイム制御を実施することができる。
【００２４】
本開示の他の例では、プロセッサに、生産工程に配置される制御対象を制御する制御方法を実行させるためのプログラムが提供される。この制御方法は、制御対象に含まれる監視対象から取得された１または複数の状態値から１または複数の特徴量を算出するステップと、学習モデルを参照して、算出される１または複数の特徴量に基づいて、監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出する複数種類のアルゴリズムのうちの１つを実行するステップと、算出される前記スコアに基づいて、監視対象に何らかの異常が発生しているか否かを示す判定結果を生成するステップと、実行するステップにおいて実行される１つのアルゴリズムを、予め定められた条件に応じて切替えるステップと、を備える。
【００２５】
この開示によれば、プログラムが実行されることにより、監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出するアルゴリズムを、予め定められた条件に応じて適宜切り替えることができる。
【発明の効果】
【００２６】
この開示によれば、監視対象に何らかの異常が発生している可能性を算出するアルゴリズムを、予め定められた条件に応じて適宜切り替えることができる。
【図面の簡単な説明】
【００２７】
【図１】本実施の形態にかかる異常検知システム１の全体構成例を示す模式図である。
【図２】本実施の形態にかかる制御装置１００の主要部を示す模式図である。
【図３】本実施の形態にかかる制御装置１００のハードウェア構成例を示すブロック図である。
【図４】本実施の形態にかかるサポート装置２００のハードウェア構成例を示すブロック図である。
【図５】本実施の形態にかかる異常検知システム１の基本的なソフトウェア構成例を示すブロック図である。
【図６】本実施の形態にかかる判定結果１７０の定義の一例を説明する図である。
【図７】本実施の形態にかかる判定結果１７０の定義の一例を説明する図である。
【図８】本実施の形態にかかるアルゴリズムの性能を比較して示す図である。
【図９】本実施の形態にかかる乖離度の取得時間の変化を説明するための模式図である。
【図１０】本実施の形態にかかるプログラムの周期実行の一例を示す模式図である。
【図１１】本実施の形態にかかるプログラムの周期実行の一例を示す模式図である。
【図１２】本実施の形態にかかる機械学習処理のファンクションブロック１２１を説明する図である。
【図１３】本実施の形態にかかる異常検知処理のユーザプログラムの一例を模式的に示す図である。
【図１４】本実施の形態にかかる異常検知処理のユーザプログラムの他の例を模式的に示す図である。
【図１５】本実施の形態にかかる異常検知処理のユーザプログラムのさらなる他の例を模式的に示す図である。
【図１６】本実施の形態にかかる判定条件の切替えを説明する図である。
【図１７】本実施の形態にかかる異常検知のプロセスの一例を示すフローチャートである。
【発明を実施するための形態】
【００２８】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２９】
＜Ａ．適用例＞
まず、本発明が適用される場面の一例について説明する。
【００３０】
本実施の形態にかかる異常検知処理を実行可能な制御システムの機能的な構成例について説明する。以下の説明においては、主として、生産工程に配置される制御対象を制御する制御システムが備える異常検知処理に注目して説明するので、制御システム全体を「異常検知システム」とも称する。
【００３１】
まず、本実施の形態にかかる異常検知システム１の全体構成例について説明する。
図１は、本実施の形態にかかる異常検知システム１の全体構成例を示す模式図である。図１を参照して、異常検知システム１は、主たる構成要素として、制御対象を制御する制御装置１００と、制御装置１００に接続され得るサポート装置２００とを含む。異常検知システム１は、オプショナルな構成として、上位サーバ３００および表示装置４００をさらに含んでいてもよい。
【００３２】
制御装置１００は、制御対象に含まれる監視対象に何らかの異常が発生しているか否かを示す判定結果を生成する。制御装置１００は、ＰＬＣ（プログラマブルコントローラ）などの、一種のコンピュータとして具現化されてもよい。
【００３３】
より具体的には、制御装置１００は、第１フィールドバス２を介してフィールド装置群１０と接続されるとともに、第２フィールドバス４を介して１または複数の表示装置４００と接続される。さらに、制御装置１００は、ローカルネットワーク６を介して上位サーバ３００に接続される。制御装置１００は、それぞれのネットワークを介して、接続された装置との間でデータを遣り取りする。
【００３４】
制御装置１００は、設備や機械を制御するための各種制御演算を実行するとともに、制御対象に生じる異常を検知する異常検知処理を実行する。異常検知処理が制御装置１００において実行されることで、制御対象に生じ得る異常をより短い周期で検知できる。
【００３５】
本明細書において、「状態値」は、任意の制御対象（あるいは、監視対象）にて観測できる値を包含する用語であり、例えば、任意のセンサにより測定できる物理値や、リレーやスイッチなどのＯＮ／ＯＦＦ状態、ＰＬＣがサーボドライバに与える位置、速度、トルクなどの指令値、ＰＬＣが演算に用いる変数値などを含み得る。
【００３６】
任意の制御対象にて観測されて制御装置１００に転送される状態値を、以下「入力値」とも称す。
【００３７】
第１フィールドバス２および第２フィールドバス４としては、データの到達時間が保証される、定周期通信を行うネットワークを採用することが好ましい。このような定周期通信を行うネットワークとしては、ＥｔｈｅｒＣＡＴ（登録商標）などが知られている。
【００３８】
フィールド装置群１０は、制御対象または制御に関連する生産ラインまたは生産工程に備えられる製造装置など（以下、「フィールド」とも総称する。）の状態値を入力値として収集する装置を含む。このような状態値を取得する装置としては、入力リレーや各種センサなどが想定される。フィールド装置群１０は、さらに、制御装置１００にて生成される指令値（以下、「出力値」とも称す。）に基づいて、フィールドに対して何らかの作用を与える装置を含む。このようなフィールドに対して何らかの作用を与える装置としては、出力リレー、コンタクタ、サーボドライバおよびサーボモータ、その他任意のアクチュエータが想定される。これらのフィールド装置群１０は、第１フィールドバス２を介して、制御装置１００との間で、入力値および出力値を含むデータを遣り取りする。
【００３９】
図１に示す構成例においては、フィールド装置群１０は、リモートＩ／Ｏ（Input/Output）装置１２と、リレー群１４と、画像センサ１８およびカメラ２０と、サーボドライバ２２およびサーボモータ２４とを含む。
【００４０】
リモートＩ／Ｏ装置１２は、第１フィールドバス２を介して通信を行う通信部と、入力値の取得および出力値の出力を行うための入出力部（以下、「Ｉ／Ｏユニット」とも称す。）とを含む。このようなＩ／Ｏユニットを介して、制御装置１００とフィールドとの間で入力値および出力値が遣り取りされる。図１には、リレー群１４を介して、入力値および出力値として、デジタル信号が遣り取りされる例が示されている。
【００４１】
Ｉ／Ｏユニットは、フィールドバスに直接接続されるようにしてもよい。図１には、第１フィールドバス２にＩ／Ｏユニット１６が直接接続されている例を示す。
【００４２】
画像センサ１８は、カメラ２０によって撮像された画像データに対して、パターンマッチングなどの画像計測処理を行って、その処理結果を制御装置１００へ送信する。
【００４３】
サーボドライバ２２は、制御装置１００からの出力値（例えば、位置指令など）に従って、サーボモータ２４を駆動する。
【００４４】
上述のように、第１フィールドバス２を介して、制御装置１００とフィールド装置群１０との間でデータが遣り取りされることになるが、これらの遣り取りされるデータは、数百μｓｅｃオーダ〜数十ｍｓｅｃオーダのごく短い周期で更新されることになる。なお、このような遣り取りされるデータの更新処理を、「Ｉ／Ｏリフレッシュ処理」と称することもある。
【００４５】
サポート装置２００は、制御装置１００が制御対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置２００は、制御装置１００で実行されるプログラムの開発環境（プログラム作成編集ツール、パーサ、コンパイラなど）、制御装置１００および制御装置１００に接続される各種デバイスのパラメータ（コンフィギュレーション）を設定するための設定環境、生成したユーザプログラムを制御装置１００へ送信する機能、制御装置１００上で実行されるユーザプログラムなどをオンラインで修正・変更する機能、などを提供する。
【００４６】
さらに、サポート装置２００は、制御装置１００での異常検知処理を実現するための各種設定やデータの生成および送信などの機能を提供する。
【００４７】
上位サーバ３００は、制御装置１００とローカルネットワーク６を介して接続され、制御装置１００との間で必要なデータを遣り取りする。上位サーバ３００は、例えば、データベース機能を有しており、制御装置１００に格納される各種データを定期的またはイベント的に収集する。ローカルネットワーク６には、イーサネット（登録商標）などの汎用プロトコルが実装されてもよい。
【００４８】
表示装置４００は、第２フィールドバス４を介して制御装置１００と接続され、ユーザからの操作を受けて、制御装置１００に対してユーザ操作に応じたコマンドなどを送信するとともに、制御装置１００での処理結果などをグラフィカルに表示する。
【００４９】
次に、本実施の形態にかかる異常検知システム１における異常検知処理および異常検知処理にかかるアルゴリズムの切替を説明する。
【００５０】
図２は、本実施の形態にかかる制御装置１００の主要部を示す模式図である。図２を参照して、制御装置１００は、データセット生成部１４０と、特徴抽出部１４１と、切替条件判定部１４２と、機械学習処理部１４４と、結果判定部１４６と、を含む異常検知処理部５０を備える。機械学習処理部１４４は、監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出するスコア算出部１４３を含む。
【００５１】
制御装置１００は、監視対象から１または複数の入力データ（入力データ１，入力データ２，・・・，入力データｎ）を収集し、特徴量を抽出することで、異常の発生有無を示す判定結果を含む監視結果を出力する。
【００５２】
本実施の形態においては、制御対象に含まれる監視対象に何らかの異常が発生しているかを判定する単位区間として「フレーム」という概念を導入する。フレームは、監視対象に何らかの異常が発生しているか否かを判定する単位区間を意味する。そのため、監視対象に何らかの異常が発生しているか否かの判定は、フレーム毎に行われることになる。単位区間（フレーム）は、監視対象の動作などに応じて任意に設定される。
【００５３】
データセット生成部１４０は、フレーム情報に従って、監視対象から１または複数の入力データ（入力データ１，入力データ２，・・・，入力データｎ）からなるデータセットをフレーム毎に生成する。
【００５４】
特徴抽出部１４１は、データセット生成部１４０により生成されるデータセットに基づいて、予め定められた処理に従って、１または複数の特徴量（特徴量１，特徴量２，・・・，特徴量ｍ）を抽出（算出）する。算出される特徴量としては、例えば、フレーム内における平均値、最大値、中間値、最小値、標準偏差などを用いることができる。
【００５５】
機械学習処理部１４４において、スコア算出部１４３は、予め用意された学習モデル１５２を参照して、特徴抽出部１４１により抽出される１または複数の特徴量の学習モデル１５２に対する外れ度合い（または乖離度）を示す値（以下、「スコア」とも称す。）を算出する。ここで、学習モデル１５２は、特定のクラス（例えば、正常や異常）がラベル付けされた特徴量の値を要素とする集合に相当する。典型的には、学習モデル１５２は正常時の特徴量からなり、この場合には、スコアは、監視対象に何らかの異常が発生している可能性を示す値を意味することになる。
【００５６】
機械学習処理部１４４は、制御装置１００での異常監視のアルゴリズムとして複数種類のアルゴリズムのうちの１つを実行することにより、スコア算出部１４３に、超空間上における値群に対する特徴量の外れ度合を示す値であるスコアを算出させる。この場合には、学習モデル１５２は、超空間上における値群を示すものとなり、これは監視対象を示す「モデル」に相当する。
【００５７】
このような外れ度合いに基づく異常監視の手法としては、各点から値群までの最短距離に基づいて異常を検知する手法（ｋ近傍法）、値群を含むクラスタを含めて距離を評価する局所外れ値因子（ＬｏＦ：local outlier factor）法、パス長さから算出されるスコアを用いるｉＦｏｒｅｓｔ（isolation forest）法など知られている。本実施の形態では、スコア算出部１４３が実行する複数種類のアルゴリズムのうちの１つのアルゴリズムは、このＬｏＦ法に従うアルゴリズムおよびｉＦｏｒｅｓｔ法に従うアルゴリズムのうちの１つである。なお、スコア算出部１４３が実行し得る複数種類のアルゴリズムは、ＬｏＦ法またはｉＦｏｒｅｓｔ法に従うアルゴリズム等に限定されず、例えばｋ近傍法などの他の種類のアルゴリズムが含まれ得る。
【００５８】
切替条件判定部１４２は、機械学習処理部１４４により実行される１つのアルゴリズムを、予め定められた条件に応じて切替える。切替条件判定部１４２は、より特定的には、フレームの周期に同期して条件値１２５を入力し、入力した条件値１２５が予め定められた条件を満たすと判断したとき、切替指示を機械学習処理部１４４に出力する。切替指示には、満たされた条件に応じた値が設定される。機械学習処理部１４４は、実行すべきアルゴリズムを、複数種類のアルゴリズムのうちから、切替指示が示す値に対応するアルゴリズムに切替る（設定する）。
【００５９】
外れ度合いに基づく異常監視の手法を採用した場合には、学習モデル１５２は、監視対象の状態が正常時に得られる特徴量の群を含むようになり、制御装置１００は、学習モデル１５２に含まれる特徴量群に対する対象の特徴量の外れ度合いに基づいて、監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出する。
【００６０】
結果判定部１４６は、スコア算出部１４３により算出されるスコアと予め定められた閾値とを比較して、監視対象に何らかの異常が発生しているか否かを判定する。結果判定部１４６からは何らかの異常が発生しているか否かを示す判定結果１７０が出力される。また、この判定結果１７０とともにスコアが出力されてもよい。本実施の形態では、判定結果１７０とスコアからなるセットを、監視結果として出力することが可能である。判定結果１７０、スコアおよび監視結果の出力先は、他のモジュール（回路、プログラムなど）を含み得る。例えば、出力は、制御装置１００またはサポート装置２００が備える記憶装置への格納、サポート装置２００が備えるディスプレイへの表示、またはネットワークを介した転送を含み得る。
【００６１】
本実施の形態では、上記の予め定められた条件は、制御装置１００の稼働状態に基づく条件を含み得る。例えば、予め定められた条件は、機械学習処理部１４４によるアルゴリズムの処理にかかる処理時間に基づく条件、または、判定結果１７０に基づく条件、または、生産工程の切替えに基づく条件を含む。なお、予め定められた条件は、これら条件に限定されない。また、予め定められた条件は、これら条件の２つ以上の組合せに基づく条件であってもよい。
【００６２】
以上のような機能構成によって、本実施の形態にかかる異常監視処理では、制御装置１００の稼働中に、予め定められた条件に応じて機械学習処理部１４４が実行する１のアルゴリズムを動的に切り替え可能な環境が提供される。
【００６３】
＜Ｂ．ハードウェア構成例＞
次に、本実施の形態にかかる異常検知システム１を構成する主要な装置のハードウェア構成例について説明する。
【００６４】
（ｂ１：制御装置１００のハードウェア構成例）
図３は、本実施の形態にかかる制御装置１００のハードウェア構成例を示すブロック図である。図３を参照して、制御装置１００は、ＣＰＵ（Central Processing Unit）やＭＰＵ（Micro-Processing Unit）などのプロセッサ１０２と、チップセット１０４と、主記憶装置１０６と、二次記憶装置１０８と、ローカルネットワークコントローラ１１０と、ＵＳＢ（Universal Serial Bus）コントローラ１１２と、メモリカードインターフェイス１１４と、内部バスコントローラ１２２と、フィールドバスコントローラ１１８，１２０と、Ｉ／Ｏユニット１２４−１，１２４−２，・・・とを含む。
【００６５】
プロセッサ１０２は、二次記憶装置１０８に格納された各種プログラムを読み出して、主記憶装置１０６に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。チップセット１０４は、プロセッサ１０２とともに、各コンポーネントを制御することで、制御装置１００全体としての処理を実現する。
【００６６】
二次記憶装置１０８には、制御装置１００が提供する機能を実現するためのシステムプログラム１２６に加えて、システムプログラム１２６が提供する実行環境を利用して実行されるユーザプログラム１２７および学習モデル１５２が格納される。ユーザプログラム１２７は、各種サービスを提供するためのシステムサービスプログラム１２８およびフィールド装置群１０の制御対象を制御するための制御プログラム１３０を含む。システムサービスプログラム１２８は、図２の異常検知処理部５０を構成するプログラムモジュールに相当する異常検知プログラム１２９を含む。
【００６７】
ローカルネットワークコントローラ１１０は、ローカルネットワーク６を介した他の装置との間のデータの遣り取りを制御する。ＵＳＢコントローラ１１２は、ＵＳＢ接続を介してサポート装置２００との間のデータの遣り取りを制御する。
【００６８】
メモリカードインターフェイス１１４は、記憶媒体１１６を着脱可能に構成されており、記憶媒体１１６に対してデータを書き込み、記憶媒体１１６から各種データ（ユーザプログラムやトレースデータなど）を読み出すことが可能になっている。
【００６９】
内部バスコントローラ１２２は、制御装置１００に搭載されるＩ／Ｏユニット１２４−１，１２４−２，・・・との間でデータを遣り取りするインターフェイスである。
【００７０】
フィールドバスコントローラ１１８は、第１フィールドバス２を介した他の装置との間のデータの遣り取りを制御する。同様に、フィールドバスコントローラ１２０は、第２フィールドバス４を介した他の装置との間のデータの遣り取りを制御する。
【００７１】
図３には、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field-Programmable Gate Array）など）を用いて実装してもよい。あるいは、制御装置１００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００７２】
また、本実施の形態では、図２の異常検知処理部５０の主要部も、異常検知プログラム１２９が、プロセッサ１０２により実行されることで実現されるとしているが、図２の主要部の１つ以上は、ＡＳＩＣまたはＦＰＧＡなどの専用のハードウェア回路を用いて実装されてもよい。
【００７３】
（ｂ２：サポート装置２００のハードウェア構成例）
次に、本実施の形態にかかるサポート装置２００は、一例として、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコン）を用いてプログラムを実行することで実現される。
【００７４】
図４は、本実施の形態にかかるサポート装置２００のハードウェア構成例を示すブロック図である。図４を参照して、サポート装置２００は、ＣＰＵまたはＭＰＵなどのプロセッサ２０２と、ドライブ２０４と、主記憶装置２０６と、二次記憶装置２０８と、ＵＳＢコントローラ２１２と、ローカルネットワークコントローラ２１４と、入力部２１６と、表示部２１８とを含む。これらのコンポーネントはバス２２０を介して接続される。
【００７５】
プロセッサ２０２は、二次記憶装置２０８に格納された各種プログラムを読み出して、主記憶装置２０６に展開して実行することで、後述するような各種処理を実現する。
【００７６】
二次記憶装置２０８は、例えば、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）などで構成される。二次記憶装置２０８には、典型的には、サポート装置２００において実行されるユーザプログラムの作成、作成したプログラムのデバッグ、システム構成の定義、各種パラメータの設定などを行うための図示しない開発プログラムと、データマイニングツール２５０と、設定ツール２６０とを含む各種プログラムが格納される。二次記憶装置２０８には、ＯＳおよび他の必要なプログラムが格納されてもよい。
【００７７】
ドライブ２０４は、記憶媒体２０５に対してデータを書き込み、記憶媒体２０５から各種データ（ユーザプログラム、トレースデータまたは時系列データなど）を読み出すことが可能になっている。記憶媒体２０５は、例えばコンピュータ読取可能なプログラムを非一過的に格納する記憶媒体２０５（例えば、ＤＶＤ（Digital Versatile Disc）などの光学記憶媒体）を含む。記憶媒体１１６または記憶媒体２０５から、その中に格納されたプログラムまたはデータが読み取られて二次記憶装置２０８などの内部の記憶領域にインストールされる。
【００７８】
サポート装置２００で実行される各種プログラムは、コンピュータ読取可能な記憶媒体１１６または記憶媒体２０５を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態にかかるサポート装置２００が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【００７９】
ＵＳＢコントローラ２１２は、ＵＳＢ接続を介して制御装置１００との間のデータの遣り取りを制御する。ローカルネットワークコントローラ２１４は、任意ネットワークを介した他の装置との間のデータの遣り取りを制御する。
【００８０】
入力部２１６は、キーボードやマウスなどで構成され、ユーザ操作を受け付ける。表示部２１８は、ディスプレイ、各種インジケータなどで構成され、プロセッサ２０２からの処理結果などを出力する。サポート装置２００には、プリンタが接続されてもよい。
【００８１】
図４には、プロセッサ２０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００８２】
＜Ｃ．ソフトウェア構成例／機能構成例＞
次に、本実施の形態にかかる異常検知システム１を構成する主要な装置のソフトウェア構成例および機能構成例について説明する。
【００８３】
図５は、本実施の形態にかかる異常検知システム１の基本的なソフトウェア構成例を示すブロック図である。図５を参照して、異常検知システム１において、制御装置１００は、サポート装置２００から提供される各種情報に基づいて、異常検知処理を実行する。図５では、図２で示した主要部が、その周辺部と関連づけて示されている。
【００８４】
図５を参照して、制御装置１００は、図２で示された異常検知処理部５０の各部に追加して、マルチタスク実行部１５９、変数管理部１６０と、判定条件管理部１５７とを含む。マルチタスク実行部１５９は、制御対象のリアルタイム制御を実施するための制御タスクおよび、リアルタイム制御に関連する関連処理を実施するための関連処理タスクを含む複数のタスクをプロセッサ１０２の制御のもとで並行して実行する。このマルチタスク実行の詳細は後述する。
【００８５】
変数管理部１６０は、機械や装置などの制御対象（監視対象）に現れる状態値（入力値）を予め定められた制御周期毎に取得して内部状態値を更新する。また、変数管理部１６０は、ユーザプログラムの実行などによって算出される指令値（出力値）を制御周期毎に更新する。すなわち、変数管理部１６０は、Ｉ／Ｏリフレッシュ処理にかかる少なくとも一部の処理を実行し、制御周期毎に、制御対象から取得される入力値および制御対象へ与えられる出力値を更新する。
【００８６】
本実施の形態にかかる制御装置１００においては、制御対象から取得される状態値（入力値）、制御対象へ与えられる指令値（出力値）、ならびに、制御装置１００での演算処理または制御装置１００の状態管理に用いられるデータあるいは値（「内部状態値」にすべて包含される）のいずれについても、「変数」の形で参照する形態を採用する。そのため、以下の説明においては、制御装置１００において利用可能な値を「変数値」と表現することもある。そして、機械や装置などの制御対象に生じる状態値を示す内部状態値の集合を「デバイス変数１６２」と表現する。
【００８７】
データセット生成部１４０は、サポート装置２００により設定される設定情報１５８に従って、指定された監視対象の１または複数のデバイス変数１６２（状態値）が示す値（単位区間の時間的変化）を、フレーム情報に従ってデバイス変数１６２を検索することにより、監視対象に関する１または複数の入力データ（入力データ１，入力データ２，・・・，入力データｎ）からなるデータセットをフレーム毎に生成する。
【００８８】
なお、本発明は「変数」を用いて値を参照する形態に限られることなく、各値を格納するメモリの論理アドレスまたは物理アドレスなどを指定して参照する形態などにも適用可能である。
【００８９】
学習モデル生成部１４５は、サポート装置２００からの指示に従って、学習モデル１５２を生成する。なお、学習モデル生成部１４５は、サポート装置２００の一部に設けられてもよい。この場合には、学習モデル１５２自体がサポート装置２００から制御装置１００へ提供されることになる。より具体的には、サポート装置２００のデータマイニングツール２５０を用いて、必要なデータを抽出することで、学習モデル１５２を生成してもよい。
【００９０】
判定条件管理部１５７は、切替条件判定部１４２からの切替指示または設定ツール２６０からの指示に従って、判定条件１５６を変更する。
【００９１】
切替条件判定部１４２は、条件値１２５を入力し、入力した条件値１２５に基づき、予め定められた条件が満たされるか否かを判定し、判定の結果に基づく切替指示を生成し、機械学習処理部１４４に出力する。条件値１２５は、機械学習処理部１４４におけるアルゴリズムの処理時間、生産工程の切替指示、および判定結果１７０の判定値などを含み得るが、これらに限定されない。
【００９２】
一方、サポート装置２００は、制御装置１００に対して、設定情報１５８および判定条件１５６を設定する。より具体的には、サポート装置２００は、設定ツール２６０を有しており、設定ツール２６０が制御装置１００への各種データの設定処理を担当する。
【００９３】
＜Ｄ．課題および解決手段＞
次に、本実施の形態にかかる異常検知システム１が想定する課題およびその解決手段について説明する。図６と図７は、本実施の形態にかかる判定結果１７０の定義の一例を説明する図である。図８は、本実施の形態にかかるアルゴリズムの性能を比較して示す図である。
【００９４】
図６では、制御装置１００の稼働時に取得される特徴量と、学習モデル１５２の学習済みデータとの関係に基づき算出される判定結果１７０の一例が示される。例えば、機械学習処理部１４４が特徴抽出部１４１から出力される特徴量と学習モデル１５２の学習済みのデータからスコアを算出し、結果判定部１４６は算出されたスコアと判定条件１５６が示す閾値とを比較する。結果判定部１４６は、比較の結果に基き判定結果１７０を出力する。判定結果１７０は、例えば、図７に示すような「正常」、「異常」、「故障」、「警報レベル１」および「警報レベル２」の種類を含むが、種類はこれらに限定されない。具体的には、判定結果１７０は、スコア１５４が異常の閾値未満であれば「正常」を示し、スコア１５４が異常の閾値〜警報レベル１の閾値に該当すれば「異常」を示し、スコア１５４が警報レベル１の閾値〜警報レベル２の閾値に該当すれば「警報レベル１」を示し、スコア１５４が警報レベル２の閾値〜故障の閾値に該当すれば「警報レベル２」を示し、スコア１５４が故障の閾値を超えれば「故障」を示す。
【００９５】
図８では、アルゴリズム（ＬＯＦ、iForest（isolation forest）のそれぞれについて、処理時間と精度が比較して示される。具体的には、ＬＯＦの処理に要する処理時間は、機械学習処理の所要時間に占める割合が比較的大きいが算出されるスコア１５４の確度は高く、逆に、iForestの処理時間は、機械学習処理の所要時間に占める割合が比較的小さいが確度は低い。このように、アルゴリズム（ＬＯＦ、iForest）間では、処理時間と確度はトレードオフの関係にある。なお、本実施の形態では、アルゴリズムの処理時間は、アルゴリズムの実行時間と同様の概念を表す。
【００９６】
図６に戻り、図６のように、時間経過に従い、判定結果１７０が「正常」→「異常」（警報レベル１→警報レベル２）→「故障」と遷移する場合、生産現場ではより厳格な判定を実施したいとの要望（課題）が生じる。したがって、この場合は、より確度の高いアルゴリズムに切替えることで要望に応えることが可能となる。
【００９７】
生産現場では、異常検知処理の結果を用いて制御装置１００を稼働させたいとの要望もある。そこで、制御装置１００では、判定結果１７０を、制御周期に同期した予め定められた周期内に制御プログラム１３０に提供する。これにより、制御プログラム１３０は、判定結果１７０に基き、制御対象を制御することが可能となる。
【００９８】
その一方で、アルゴリズムの処理に時間がかかり異常検知処理部５０の処理時間が長期化すると、上記の予め定められた周期内に判定結果１７０を制御プログラム１３０に提供することが困難となる。そこで、制御装置１００では、機械学習処理部１４４の処理時間が長くなる場合は、より処理に時間がかからないアルゴリズムに切替えることで上記の要望に応えることが可能となる。
【００９９】
また、生産現場では、ワーク毎に段取り替えして生産工程を切替えるが、ワークが異なれば、適用するアルゴリズムも切替えたいとの要望がある。
【０１００】
したがって、本実施の形態では、生産工程の種類に応じてアルゴリズムを切り替えることで、上記の要望に応えることが可能となる。
【０１０１】
＜Ｅ．アルゴリズムの他の例＞
制御装置１００は、正常時および異常時の少なくとも一方における学習モデル１５２の学習データと、監視対象から取得した特徴量との間で乖離の程度（スコア１５４）を取得し、取得した乖離度と判定条件１５６の閾値とに基づき、監視対象に生じる異常を判定する。
【０１０２】
本実施の形態では、共通の学習モデル１５２を用いて上記のＬＯＦまたはｉForestを切り替えたが、これらとは異なる他のアルゴリズム間で切替えることも可能である。ここで他のアルゴリズムの一例を説明する。
【０１０３】
他のアルゴリズムでは、スコア１５４の取得においてマハラノビス距離を用いる。具体的には、制御装置１００は、異常検知の診断対象となる特徴量のデータ（以下、「診断対象データ」とも称す。）と、各特徴量の集合体ｓａ，ｓｂに含まれるｋ個の特徴量との距離に基づき、スコア１５４（スコアａ，スコアｂ）を算出する。ここでは、スコアａ，スコアｂの計算時間が、アルゴリズムの処理時間に相当する。
【０１０４】
他のアルゴリズムを適用する際に、特徴量を定義する要素の数に関する第１パラメータに基づいて特徴量が生成される。第１パラメータは、特徴量を定義する要素の種類（平均、標準偏差、歪度、尖度、最大、および最小など）および要素の数（特徴ベクトルの次元数）を設定するためのパラメータである。ユーザは、サポート装置２００のデータマイニングツール２５０を用いて第１パラメータの値を設定することができる。スコアの取得に用いる特徴量の集合体である学習モデル１５２における範囲に関する第２パラメータに基づいて、スコアを取得する。第２パラメータは、診断対象データとの間のスコアの算出に用いられる特徴量の数（以下、「ｋ値」とも称す。）を設定するためのパラメータである。ユーザは、サポート装置２００を用いて、第２パラメータの値を設定することができる。ｋ値が多いほど、診断対象データが比較される学習済みの特徴量の数が多くなる。
【０１０５】
ここで、本実施の形態においては、第１パラメータの値および第２パラメータの値のそれぞれに応じて、スコアの計算時間が変化するが、ここでは、第１パラメータは一定値とする。この点を、図９を参照して説明する。図９は、本実施の形態にかかるスコアの取得時間の変化を説明するための模式図である。
【０１０６】
図９（Ａ）の例では、第１パラメータの値として次元数がｎに設定され、第２パラメータの値としてｋ値がＮに設定されている。この場合、診断対象データの比較対象となるデータの数は、概念的には比較対象数Ｎと次元数ｎとの積になる。
【０１０７】
図９（Ｂ）の例では、第１パラメータの値として次元数がｓ（ｓはｎより小さい値）に設定され、第２パラメータの値としてｋ値がＮに設定されている。この場合、診断対象データの比較対象となるデータの数は、概念的には比較対象数Ｎと次元数ｓとの積になる。次元数について、ｓはｎより小さい値であるため、図９（Ｂ）の例における比較対象の総数は、図９（Ａ）の例における比較対象の総数よりも小さくなる。したがって、その分、スコアを算出するための処理時間が短くなるが、スコアの確度は低くなる。
【０１０８】
このように、ユーザは、第２パラメータの値を変更することで、異常検知の精度とのトレードオフで、スコアの計算時間を短くしたり長くしたりすることができる。
【０１０９】
図９（Ｃ）の例では、第１パラメータの値として次元数がｎに設定され、第２パラメータの値としてｋ値がＳ（ＳはＮより小さい値）に設定されている。この場合、比較対象の総数は、概念的には比較対象数Ｓと次元数ｎとの積になる。ｋ値について、ＳはＮより小さい値であるため、図９（Ｃ）の例における比較対象の総数は、図９（Ａ）の例における比較対象の総数よりも小さくなる。したがって、その分、スコアを算出するための処理時間は短くなるが、その一方で、スコアの確度は低くなる。
【０１１０】
第２パラメータによってｋ値が設定されると、信頼度の高い順からスコアの計算に用いられる学習済みの特徴量が選択される。このように、ユーザは、第２パラメータの値を変更することで、スコアの確度、すなわち異常検知の精度とのトレードオフで、スコアの計算時間を短くしたり長くしたりすることができる。つまり、第２パラメータは、スコアを算出するアルゴリズムの処理時間を短縮可能なパラメータである。
【０１１１】
図９によれば、学習モデル１５２は、監視対象から取得されるデータから生成されかつ１以上の要素によって定義される特徴量（学習データ）の集合体であり、制御装置１００は、スコア１５４の算出に用いる当該特徴量の集合体における範囲に関する第２パラメータを、切替え後のアルゴリズムに引き継ぐように機械学習処理部１４４を制御する。これにより、図９のケースであっても、アルゴリズム間で、第２パラメータで範囲が規定された学習済みの特徴量（学習データ）の集合体である共通の学習モデル１５２を適用することができる。
【０１１２】
＜Ｆ．プログラムの周期実行＞
次に、本実施の形態にかかるプログラムの周期実行について説明する。
【０１１３】
図１０と図１１は、本実施の形態にかかるプログラムの周期実行の一例を示す模式図である。制御装置１００のマルチタスク実行部１５９は、１または複数の処理をタスクという単位で予め割り当てられた実行の優先度に従いマルチに実行する。
【０１１４】
図１０を参照して、タスクは、制御周期に同期した一定のタスク周期で繰返し実行されて、各タスク周期のタスク実行時間内でＩ／Ｏリフレッシュ処理７２と、Ｉ／Ｏリフレッシュ処理７２に続く制御処理７３のタスクが実行される。なお、Ｉ／Ｏリフレッシュ処理７２は、変数管理部１６０がデバイス変数１６２の対応する変数の値を周期的に更新する処理を意味する。
【０１１５】
制御処理７３は、制御プログラム１３０によるタスクであって、システム共通処理（１）およびシステム共通処理（２）７７、ユーザプログラム実行処理７４およびモーション制御処理７６のタスクを含む。ユーザプログラム実行処理７４は、ユーザプログラム１２７に含まれる制御対象に応じて任意に作成されるプログラムであり、ＩＥＣ６１１３１−３に規定される言語を用いて記述されるシーケンスプログラムなどを含む。モーション制御処理７６は、ユーザプログラム１２７に含まれるモーション命令に従う処理（典型的には、モータの位置制御や速度制御に関する処理）を含む。
【０１１６】
図１１には、制御対象のリアルタイム制御を実施するための制御タスクからなるプライマリ定周期タスク７０、定周期タスク８０、タグデータリンクサービス９０、定周期タスク９１およびシステムサービス９２のタスクが実行される例を示す。システムサービス９２は、リアルタイム制御に関連する関連処理を実施するための関連処理タスクに相当する。
【０１１７】
プライマリ定周期タスク７０は、制御装置１００において他のタスクに比べて最も高い優先度（最優先）で実行されるべき処理を含み、制御周期に相当するプライマリ周期７１毎に周期的に実行される。
【０１１８】
より具体的には、プライマリ定周期タスク７０は、Ｉ／Ｏリフレッシュ処理７２、ユーザプログラム実行処理７４、モーション制御処理７６およびシステム共通処理（２）７７を含む。このプライマリ定周期タスク７０のシステム共通処理（２）７７は、データセット生成部１４０による処理、特徴抽出部１４１の特徴抽出処理および結果判定部１４６による結果判定処理を含む。
【０１１９】
プライマリ定周期タスク７０においては、Ｉ／Ｏリフレッシュ処理７２、ユーザプログラム実行処理７４、およびモーション制御処理７６のすべてがプライマリ周期７１毎に実行される。
【０１２０】
定周期タスク８０は、プライマリ定周期タスク７０より優先度の低い処理を含み、制御周期の整数倍に相当する一定のタスク周期周毎に実行される。
【０１２１】
より具体的には、定周期タスク８０は、プライマリ定周期タスク７０と同様に、Ｉ／Ｏリフレッシュ処理、ユーザプログラム実行処理、およびモーション制御処理を含む。実行周期が異なる点を除いて、定周期タスク８０のＩ／Ｏリフレッシュ処理、ユーザプログラム実行処理、およびモーション制御処理の処理内容は、Ｉ／Ｏリフレッシュ処理７２、ユーザプログラム実行処理７４、およびモーション制御処理７６の処理内容と同様である。
【０１２２】
タグデータリンクサービス９０は、定周期タスク８０より優先度の低い処理を含む。タグデータリンクサービス９０は、データセット生成部１４０が参照する１または複数の入力データ、ならびに、特徴抽出部１４１により生成される１または複数の特徴量を、主記憶装置１０６あるいは二次記憶装置１０８などの記憶領域に格納する処理を含む。すなわち、タグデータリンクサービス９０のタスクには、プライマリ定周期タスク７０に割り当てられた特徴抽出処理により生成されるデータを格納する処理が割り当てられている。
【０１２３】
定周期タスク９１は、タグデータリンクサービス９０のタスクよりも優先度の低いユーザプログラム１２７のタスクを実行する。
【０１２４】
システムサービス９２は、定周期タスク９１よりも優先度の低い処理を含み、例えばスコア１５４の算出を含む機械学習処理部１４４が実施する機械学習処理９３および各種のファイル転送処理などを含む。
【０１２５】
図１１では、プライマリ周期７１において実行される特徴抽出処理により取得された特徴量はデバイス変数１６２に設定される。システムサービス９２の機械学習処理９３は、デバイス変数１６２に設定された特徴量を用いてアルゴリズムを実行することによりスコア１５４を算出する。算出したスコア１５４はデバイス変数１６２に設定される。次のプライマリ周期７１で実行される結果判定処理は、デバイス変数１６２に設定されたスコア１５４から判定結果１７０を出力する。判定結果１７０は、デバイス変数１６２に設定される。したがって、次のプライマリ周期７１で実行されるユーザプログラム実行処理７４またはモーション制御処理７６では、先行して実施された結果判定処理の判定結果１７０に基づいて制御対象を制御することが可能となる。
【０１２６】
本実施の形態では、この制御ルーチンを維持できるように、アルゴリズムの切替のための予め定められた条件として、アルゴリズムの処理時間が上記のプライマリ周期７１に基づいた時間を超えたときは、より処理時間の短い他のアルゴリズムに切り替えるようにしてもよい。
【０１２７】
＜Ｇ．ユーザプログラム＞
次に、ユーザプログラムの一例について説明する。ユーザプログラムは、例えば、ＩＥＣ  ６１１３１−３標準で定義される言語に従うファンクションブロックダイアグラムで記述される。図１２は、本実施の形態にかかる機械学習処理のファンクションブロック１２１を説明する図である。以下の説明では、ファンクションブロックをＦＢとも称する。図１２（Ａ）のＦＢ１２１は、例えば、機械学習処理部１４４が実装する１または複数の機能を、１または複数の関数として実装する。ＦＢ１２１は、図１２（Ｂ）に示す２つの入力変数（Execute，Algorithm）と、図１２（Ｃ）に示す６つの出力変数（Done，Busy，Error，ErrorID，Time，WarningLevel）を有する。これら入力変数および出力変数は、１種の記憶領域に相当し、記録領域の値は、ファンクションブロックダイアグラム中の他のＦＢまたはダイアグラムを構成するコンポーネントにより参照され得る。
【０１２８】
入力変数Executeは、ＦＢ１２１に処理の開始を指示するデータが設定される。また、入力変数Algorithmには、機械学習処理部１４４により実行されるアルゴリズムの種類を指定する値が設定される。例えば、入力変数Algorithmの値が「０」であればＬＯＦのアルゴリズムが指定されて、値が「１」であればiForesetのアルゴリズムが指定される。
【０１２９】
ＦＢ１２１は、入力変数Executeに処理開始を指示する値が設定されると起動される。起動されると、ＦＢ１２１は、（ｉ）特徴抽出部１４１から抽出される特徴量と学習モデル１５２に基き、入力変数Algorithmで指定されるアルゴリズムを実行することにより、スコア１５４を算出し、（ｉｉ）このスコア１５４に基き結果判定処理により算出された判定結果１７０を受付けて、受付けた判定結果１７０を出力変数WarnigLevelに設定する。出力変数WarnigLevelは、判定結果１７０が正常を示すとき「０」が設定され、異常を示すとき「１」が設定され、故障を示すとき「２」が設定される。ＦＢ１２１は、さらに、（ｉｉｉ）入力変数Algorithmで指定されるアルゴリズムの実行開始からスコア１５４を算出するまでのアルゴリズム処理時間を計測（算出）し、計測した処理時間を出力変数Timeに設定する。したがって、出力変数Timeは、機械学習処理部１４４の処理時間を表すことにもなる。また、ＦＢ１２１は、アルゴリズムの処理時間およびスコア１５４に基づき判定結果１７０を生成する処理にかかる処理時間の合計を計測し、計測した処理時間を出力変数Timeに設定することもできる。
【０１３０】
また、ＦＢ１２１は、機械学習処理が完了したとき、すなわちＦＢ１２１の関数の実行が完了したとき、出力変数Doneに「True」を設定する。また、ＦＢ１２１は関数の実行中は、出力変数Busyに「True」を設定するが完了したとき「１」を設定する。また、ＦＢ１２１は、実行中にエラーを検出したときは出力変数Errorに「True」を設定し、エラーの種類を示すエラーコードを生成し出力変数ErrorIDに設定する。
【０１３１】
図１２のＦＢ１２１の入力変数Algorithmには、ＬＯＦまたはiForestを指定する値が設定されたが、図９に示した他の種類のアルゴリズムを指定する値が設定されてもよい。
【０１３２】
（ｇ１：処理時間に応じたアルゴリズムの変更）
図１３は、本実施の形態にかかる異常検知処理のユーザプログラムの一例を模式的に示す図である。より具体的には、図１３のユーザプログラムは、アルゴリズムの処理時間に基づく条件に応じて、機械学習処理に用いるアルゴリズムを切替える処理を示す。
【０１３３】
図１３を参照して、ユーザプログラムは、フレームに同期して異常検知の処理開始を検出するステップＳ１、異常検知処理の初期設定を実施するステップＳ２、異常検知処理におけるアルゴリズムの処理時間と閾値との比較を実施するステップＳ３、および当該比較の結果に応じてアルゴリズムの変更を実施するステップＳ４とを含む。ステップＳ２およびＳ４は、機械学習処理部１４４および結果判定部１４６の処理に相当し、ステップＳ３は切替条件判定部１４２の処理に相当する。本実施の形態では、フレームに同期してステップＳ１〜Ｓ４が繰り返し実行されることで、異常検知処理が繰り返し実施される。
【０１３４】
まず、ステップＳ１では、異常検知処理の開始の可否を判断するファンクションブロックRS_instanceが実行される。実行されることにより、ファンクションブロックRS_instanceは、異常検知処理の開始を示す変数SettingTriggerを「True」（ステップＳ２以降の処理を開始する）にセットまたはリセットする。
【０１３５】
より具体的には、フレームが開始時において初期設定処理（ステップＳ２）が非実行中であるとき、すなわち変数FrameTriggerに「True」および変数Busy0に「False」が設定されているとき、変数SettingTriggerに「True」（処理開始可）がセットされる。一方、フレームが開始時において初期設定処理（ステップＳ２）が非実行中であるとき、すなわち変数FrameTriggerに「True」および変数Busy0に「False」が設定されているとき、変数SettingTriggerに「False」（処理開始不可）が設定される。
【０１３６】
また、ファンクションブロックRS_instanceは、後述するステップＳ２またはＳ４において機械学習処理でエラーが発生している、または当該機械学習処理が完了しているとき、すなわち変数Error0に「True」が設定されている、または変数Done0に「True」設定されているとき、変数SettingTriggerをリセットする。したがって、ステップＳ１では、フレームの開始毎に、ステップＳ２以降の処理を開始すると判定することが可能となる。
【０１３７】
次のステップＳ２では、機械学習処理のＦＢ１２１０が実行される。ＦＢ１２１０は、変数SettingTriggerに「True」が設定されて、後述する変数CompareResultに「False」が設定されているとき、入力変数Algorithmの値「０」で指定されるアルゴリズム（例えば、ＬＯＦ）を実行して機械学習処理を実施する。これにより、当該フレームにおいて取得された特徴量により算出されたスコア１５４に基づく判定結果１７０を示す値が変数WarningLevel0に設定され、アルゴリズムの処理時間が変数Time0に設定され、また変数Done0にステップＳ２の機械学習処理の完了を示す値「True」が設定される。
【０１３８】
次のステップＳ３では、変数TimeX（図１３の場合は、変数Time0または変数Time1）に設定されたアルゴリズムの処理時間と変数thresholdに設定された閾値とを比較するファンクションブロックLT_instanceが実行される。ファンクションブロックLT_instanceは、変数SettingTriggerに「True」が設定されたとき、すなわちフレームの開始時に、変数TimeXと変数thresholdとの値どうしを比較し、比較の結果を変数CompareResultに設定する。ファンクションブロックLT_instanceは、変数TimeXの値が変数thresholdの閾値以上であるときは変数CompareResultに「True」を設定し、閾値未満であるときは変数CompareResultに「False」を設定する。
【０１３９】
次のステップＳ４では、機械学習処理のＦＢ１２１１が実行される。ＦＢ１２１１は、変数CompareResultに「True」が設定されたとき、すなわち初期設定処理（ステップＳ２）で設定されたアルゴリズム（例えば、ＬＯＦ）の処理時間が閾値を超えた場合に実行される。実行されると、ＦＢ１２１１は、入力変数Algorithmの値「１」で指定されるアルゴリズム（例えば、iForest）を実行する。これにより、当該フレームにおいて取得された特徴量により算出されたスコア１５４に基づく判定結果１７０を示す値が変数WarningLevel1に設定され、アルゴリズムの処理時間が変数Time1に設定され、また変数Done0にステップＳ４の機械学習処理の完了を示す値「True」が設定される。
【０１４０】
図１３のユーザプログラムが実行されることにより、機械学習処理のためのアルゴリズムとして、例えば初期アルゴリズム（例えば、ＬＯＦ）が設定されて、その後にアルゴリズムの処理時間が閾値を超えると、初期アルゴリズムは、機械学習処理に占める処理時間が小さい他のアルゴリズム（例えば、iForest）に切替えることができる。
【０１４１】
なお、変数thresholdの値は、例えばプライマリ周期７１に基づく時間であって、たとえばプライマリ周期７１の整数倍の値を含み得る。これにより、ＦＢ１２１０またはＦＢ１２１１の出力変数WarningLevel0またはWarningLevelの判定結果１７０を、プライマリ周期７１に同期した適時のタイミングで制御処理７３のタスクに提供することができる。
【０１４２】
（ｇ２：判定結果に応じたアルゴリズムの変更）
図１４は、本実施の形態にかかる異常検知処理のユーザプログラムの他の例を模式的に示す図である。より具体的には、図１４のユーザプログラムは、スコアに基づく判定結果１７０（正常、異常、故障など）に基づく条件に応じて、機械学習処理に用いるアルゴリズムを切替える処理を示す。図１４のユーザプログラムも、図１３と同様に、図１２で示したＦＢを含んだファンクションブロックダイアグラムにより記述され得る。
【０１４３】
図１４を参照して、ユーザプログラムは、フレームに同期して異常検知の処理開始を検出するステップＳ１、異常検知処理の初期設定を実施するステップＳ２ａ、異常検知処理の判定結果１７０を示す変数WarningLevel（WarningLeve0またはWarningLeve1）の値と閾値「１」との比較を実施するステップＳ３ａ、および当該比較の結果に応じてアルゴリズムの変更を実施するステップＳ４ａとを含む。ステップＳ２ａおよびＳ４ａは、機械学習処理部１４４および結果判定部１４６の処理に相当し、ステップＳ３ａは切替条件判定部１４２の処理に相当する。本実施の形態では、フレームに同期してステップＳ１〜Ｓ４ａが繰り返し実行されることで、異常検知処理が繰り返し実施される。
【０１４４】
まず、ステップＳ１では、フレーム開始に同期して異常検知処理の開始の可否が判断される。この処理は、図１３のステップＳ１の処理と同様なので説明は切り返さない。
【０１４５】
次のステップＳ２ａの処理設定処理では、機械学習処理のＦＢ１２１１が実行される。ＦＢ１２１１は図１３のＦＢ１２１１と同様の機能を提供するので説明は繰り返さない。ステップＳ２ａの初期設定処理が実施されることにより、変数algorithmの値「１」に対応する例えばアルゴリズムiForestが実行されて、算出されたスコアに基づく判定結果１７０を示す値が変数WarningLevel0に設定され、アルゴリズムの処理時間が変数Time0に設定され、また変数Done0にステップＳ２ａの機械学習処理の完了を示す値「True」が設定される。
【０１４６】
次のステップＳ３ａでは、変数WarningLevel（図１４の場合は、変数WarningLevel0または変数WarningLeve1）に設定された値（正常「０」、異常「１」、故障「２」）と閾値「１」とを比較するファンクションブロックLT_instanceが実行される。ファンクションブロックLT_instanceは、変数SettingTriggerに「True」が設定されたとき、すなわちフレームの開始時に、変数WarningLevelの値と閾値「１」どうしを比較し、比較の結果を変数CompareResultに設定する。ファンクションブロックLT_instanceは、変数CompareResultに、変数WarningLevelの値が閾値「１」を超えたときは、すなわち判定結果１７０が「故障」を示すときは変数CompareResultに「True」を設定し、閾値未満であるときは、すなわち判定結果１７０が「正常」または「故障」を示すときは変数CompareResultに「False」を設定する。
【０１４７】
次のステップＳ４ａでは、機械学習処理のＦＢ１２１０が実行される。ＦＢ１２１０は図１３のＦＢ１２１０と同様の機能を提供するので説明は繰り返さない。ステップＳ４ａでは、ステップＳ３ａにおいて変数CompareResultに「True」が設定されたとき、すなわち初期設定処理（ステップＳ２）で設定されたアルゴリズム（例えば、iForest）による異常検知の判定結果１７０が「故障」を示すときにＦＢ１２１０は実行される。実行されると、ＦＢ１２１０は、入力変数Algorithmの値「０」で指定されるアルゴリズム（例えば、ＬＦＯ）を実行する機械学習処理を実施する。ステップＳ４ａにおけるＦＢ１２１０の機械学習処理が完了すると、当該フレームにおいて取得されたスコア１５４に基づく判定結果１７０を示す値が変数WarningLevel1に設定され、アルゴリズムの処理時間が変数Time1に設定され、また変数Done0に機械学習処理の完了を示す値「True」が設定される。
【０１４８】
このような図１４の異常検知処理のユーザプログラムが実行されることにより、機械学習処理のためのアルゴリズムとして、例えば初期アルゴリズム（例えば、iForest）が設定されて、その後に判定結果１７０が閾値（例えば「異常」の値）を超えると、初期アルゴリズムを、より精度の高い他のアルゴリズム（例えば、ＬＯＦ）に切替えることができる。
【０１４９】
（ｇ３：生産工程の切替えに応じたアルゴリズムの変更）
図１５は、本実施の形態にかかる異常検知処理のユーザプログラムのさらなる他の例を模式的に示す図である。具体的には、図１５のユーザプログラムは、生産工程の切替えに基づく条件に応じて、機械学習処理に用いるアルゴリズムを切替える処理を示す。図１５のユーザプログラムも、図１３または図１４と同様に、図１２で示したＦＢを含んだファンクションブロックダイアグラムにより記述され得る。ここでは、生産工程は例えば工程Ａと工程Ｂを含み、工程Ａ→工程Ｂと切り替えられるケースを説明する。
【０１５０】
図１５を参照して、ユーザプログラムは、工程Ａリセット処理を実施するステップＳ１ａ、工程Ａのための異常検知処理を実施するステップＳ２ｂ、工程Ａの実施の開始を検出するステップＳ３ｂ、工程Ｂのための異常検知処理を実施するステップＳ４ｂ、および工程Ｂの実施の開始を検出するステップＳ３ｃを含む。ステップＳ２ｂおよびＳ４ｂは、機械学習処理部１４４および結果判定部１４６の処理に相当し、ステップＳ３ｂおよびＳ３ｃは切替条件判定部１４２の処理に相当する。
【０１５１】
まず、ステップＳ１ａでは、工程Ａへの切替のトリガ変数ChangeTriggerに「True」が設定されて、変数Busy0に「False」が設定されている場合、ファンクションブロックRS_instanceが実行される。これにより、工程Ａへの切替を許可する変数SettingTrigger0に「True」が設定される。
【０１５２】
次に、ステップＳ３ｂにおいて、変数SettingTrigger0に「True」が設定されて、且つ工程Ａの開始を指示する変数PAに「True」が設定されたことが判定されると、すなわち生産工程Ａへの切替の条件が満たされたことが判定されると、判定結果「True」がステップＳ２ｂのＦＢ１２１０の入力変数Executeに設定される。
【０１５３】
ステップＳ２ｂでは、ＦＢ１２１０が実行される。ステップＳ２ｂにおけるＦＢ１２１０は、入力変数Algorithmの値「０」で指定されるアルゴリズム（例えば、ＬＯＦ）を実行して機械学習処理を実施する。ステップＳ２ｂにおいては、図１３または図１４で示したＦＢ１２１０と同様な処理が実行されるので、説明は繰り返さない。その後、工程Ａの処理が実行される。
【０１５４】
また、工程Ａから工程Ｂに切り替えるために、工程Ｂの図示しないリセット処理が、ステップＳ１ａと同様に実施される。工程Ｂのリセット処理により、工程Ｂへの切替を許可する変数SettingTrigger1に「True」が設定される。
【０１５５】
次に、ステップＳ３ｃにおいて、変数SettingTrigger1に「True」が設定されて、且つ工程Ｂの開始を指示する変数PBに「True」が設定されたことが判定されると、すなわち生産工程Ｂへの切替の条件が満たされたことが判定されると、判定結果「True」がステップＳ４ｂのＦＢ１２１１の入力変数Executeに設定される。
【０１５６】
ステップＳ４ｂでは、ＦＢ１２１１が実行される。ステップＳ４ｂにおけるＦＢ１２１１は、入力変数Algorithmの値「１」で指定されるアルゴリズム（例えば、iForest）を実行して機械学習処理を実施する。ステップＳ４ｂでは、図１３または図１４で示したＦＢ１２１１と同様に実行されるので、説明は繰り返さない。その後は、工程Ｂの処理が実行される。
【０１５７】
このような図１５の異常検知処理のユーザプログラムが実行されることにより、工程が切替えられる毎に、切替後の工程に応じた機械学習処理のためのアルゴリズムに切替えることができる。
【０１５８】
本実施の形態では、アルゴリズムが切り替えられるとしても、学習モデル１５２はアルゴリズム間で共通して用いられる。すなわち、学習モデル１５２を切替後のアルゴリズムに引継ぐことができるので、生産現場にアルゴリズムの切替えシステムを容易に導入することができる。
【０１５９】
＜Ｈ.判定条件の切替え＞
本実施の形態では、図１６のように、学習モデル１５２の空間でアルゴリズムに応じて判定条件１５６の閾値を変更することも可能である。
【０１６０】
図１６は、本実施の形態にかかる判定条件の切替えを説明する図である。図１６は、学習モデル１５２が構成する、特定のクラス（例えば、正常や異常）がラベル付けされた特徴量からなる空間を模式的に示す。図１６の空間は、例えば、２種類の特徴量１と特徴量２で規定された２次元空間である。図１６の学習モデル１５２が正常時の特徴量からなるとすれば、スコア１５４は、監視対象に何らかの異常が発生している可能性を示す値を意味することになる。
【０１６１】
図１６では、正常と異常を判定する判定条件１５６の閾値として、例えば２種類の閾値ＴＨ１とＴＨ２を示している。本実施の形態では、判定条件１５６として適用する閾値を機械学習処理部１４４に用いるアルゴリズムに応じて切り替える構成を採用することができる。
【０１６２】
具体的には、結果判定部１４６は、例えば機械学習処理部１４４においてアルゴリズムＬＯＦが実行されるときは、閾値ＴＨ１とＴＨ２のうちの一方を有効（結果判定に用いる閾値）とし、他方を無効（結果判定に用いない閾値）とし、機械学習処理部１４４においてアルゴリズムiForestが実行されるときは、閾値ＴＨ１とＴＨ２のうちの一方を無効とし、他方を有効とする。
【０１６３】
図１６によれば、判定条件１５６の閾値を変更することにより、同じスコア１５４であっても閾値を超える、すなわち異常または警報側に判定されるケースを増加させることができる。逆に、同じスコアであっても閾値を超えない、すなわち異常または警報側に判定されるケースを少なくすることができる。
【０１６４】
したがって、例えば、上記の（ｇ２：判定結果に応じたアルゴリズムの変更）を、図１６の判定条件１５６の閾値の変更と組合せて実施することで、変数Warninglevel0またはWarninglevel1が閾値「１」を超える頻度を高くする、すなわち、アルゴリズムＬＯＦに切替えられる頻度を高くして、より厳格な異常検知を実施させることが可能となる。
【０１６５】
＜Ｉ．フローチャート＞
図１７は、本実施の形態にかかる異常検知のプロセスの一例を示すフローチャートである。本実施形態において、図１７に示すプロセスは、図１〜図３および図５に示された装置を用いて実施することができる。
【０１６６】
フローチャートに示されたプロセスは、１つ以上の処理ユニット（例えば、プロセッサ１０２）、ハードウェア、またはそれらの組み合わせによって実行されるソフトウェア（例えば、コード、命令、プログラム）により実施されてもよい。ソフトウェアは、（例えば、二次記憶装置１０８等の各種記憶装置または非一時的なコンピュータ読取可能な記憶媒体１１６等の上の）メモリに保存されてもよい。また、フローチャートの一連の処理ステップは、限定されるものではなく、他の一連のステップと組み合わせて実行することもできる。例えば、本実施形態では、図１７に示された各ステップは、複数のサブステップを含み、これらの複数のサブステップは、各ステップに応じてさまざまな順序で実行されてもよい。
【０１６７】
プロセッサ１０２は、図１７のプロセスを実行する。プロセスが実行されると、特徴抽出工程（１）、機械学習処理工程（２）、結果判定工程（３）および切替工程（４）を実行する。
【０１６８】
特徴抽出工程（１）において、プロセッサ１０２は、フィールド装置群１０の制御対象に含まれる監視対象から取得された１または複数の状態値から１または複数の特徴量を算出する。機械学習処理工程（２）において、プロセッサ１０２は、学習モデル１５２を参照して、特徴抽出工程（１）において算出される１または複数の特徴量に基づいて、監視対象に何らかの異常が発生している可能性を示す値であるスコア１５４を算出する複数種類のアルゴリズムのうちの１つを実行する。結果判定工程（３）において、プロセッサ１０２は、機械学習処理工程（２）において算出されるスコア１５４に基づいて、監視対象に何らかの異常が発生しているか否かを示す判定結果１７０を生成する。また、切替工程（４）において、プロセッサ１０２は、機械学習処理工程（２）において実行される１つのアルゴリズムを、予め定められた条件に応じて切替える。
【０１６９】
また、図１７のフローチャートの一連の処理ステップの順序は限定されるものではない。例えば、図１７では、切替工程（４）は、特徴抽出工程（１）と並行して実行されるが、実行順序は並行に限定されない。すなわち、切替工程（４）は、機械学習処理工程（２）で実行されるアルゴリズムの切替えに先行する順序で実行されればよい。
【０１７０】
＜Ｊ．プログラム＞
本実施の形態の図２および図５に示した各部は、プロセッサ１０２が必要なプログラムを実行することによって、図１７に示すステップを含む異常検知処理を実行してもよい。また、図１３〜図１５に示したユーザプログラムも、プロセッサ１０２により実行され得る。プロセッサ１０２が備えるＣＰＵ（Central Processing Unit）等は、プログラムを実行することにより、制御装置１００の各構成要素を制御する。二次記憶装置１０８は、プロセッサ１０２で実行されるこれらプログラムを記憶する。記憶媒体１１６は、コンピュータその他装置、機械等が記録されたプログラム等の情報を読み取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的または化学的作用によって蓄積する媒体である。プロセッサ１０２は、この記憶媒体１１６から、上記に述べたプログラムを取得してもよい。また、プログラムは、ローカルネットワーク６またはサポート装置２００からダウンロードによって、制御装置１００に提供することもできる。
【０１７１】
＜Ｋ．変形例＞
本実施の形態では、切替条件判定部１４２が切替条件を判定し、切替指示を機械学習処理部１４４に出力したが、切替指示は、ユーザ操作により入力されてもよい。たとえば、サポート装置２００の表示部２１８に変数timeまたは変数Warninglevelを表示して、ユーザが入力部２１６を操作することにより、切替指示をサポート装置２００から機械学習処理部１４４に入力する構成としてもよい。
【０１７２】
＜Ｌ．付記＞
上述したような本実施の形態は、以下のような技術思想を含む。
[構成１］
生産工程に配置される制御対象を制御する制御装置（１００）であって、
制御対象に含まれる監視対象（１０）から取得された１または複数の状態値から１または複数の特徴量を算出する特徴抽出部（１４１）と、
学習モデル（１５２）を参照して、前記特徴抽出部により算出される１または複数の特徴量に基づいて、前記監視対象に何らかの異常が発生している可能性を示す値であるスコア（１５４）を算出する複数種類のアルゴリズムのうちの１つを実行する処理部（１４４）と、
前記処理部により算出されるスコア（１５４）に基づいて、前記監視対象に何らかの異常が発生しているか否かを示す判定結果（１７０）を生成する判定部（１４６]と、
前記処理部により実行される前記１つのアルゴリズムを、予め定められた条件に応じて切替える切替部（１４２）と、を備える、制御装置。
[構成２]
前記予め定められた条件は、前記処理部による前記１つのアルゴリズムの処理時間に基づく条件を含む、構成１に記載の制御装置。
[構成３]
前記予め定められた条件は、前記処理部による前記１つのアルゴリズムの処理時間および前記判定部による前記スコアに基づき前記判定結果を生成する処理にかかる処理時間に基づく条件を含む、構成１または２に記載の制御装置。
[構成４]
前記予め定められた条件は、前記判定部により生成される判定結果に基づく条件を含む、構成１から３のいずれか１に記載の制御装置。
[構成５]
前記予め定められた条件は、生産工程の切替えに基づく条件を含む、構成１から４のいずれか１に記載の制御装置。
[構成６]
前記学習モデルは、前記複数種類のアルゴリズムに共通して適用される、構成１から４のいずれか１に記載の制御装置。
[構成７]
前記学習モデルは、前記監視対象から取得されるデータから生成されかつ１以上の要素によって定義される特徴量の集合体（ｓａ，ｓｂ）であり、
前記制御装置は、さらに、
前記スコアの算出に用いる当該特徴量の集合体における範囲に関するパラメータ（第２パラメータ）を、切替え後のアルゴリズムに引き継ぐ、構成１から６のいずれか１に記載の制御装置。
[構成８]
前記複数のアルゴリズムは、それぞれ、前記アルゴリズムの処理時間または算出される前記スコアの確度が異なる、構成１から７のいずれか１に記載の制御装置。
[構成９]
前記制御対象のリアルタイム制御を実施するための制御タスクおよび、前記リアルタイム制御に関連する関連処理を実施するための関連処理タスクを含む複数のタスクを実行するマルチタスク実行部（１５９）を、さらに備え、
前記マルチタスク実行部は、前記制御タスクを予め定められた周期（７１）で繰り返し実行し、
前記マルチタスク実行部は、前記制御タスクおいて前記判定部による判定処理を実行し、前記関連処理タスクにおいて前記処理部による前記スコアの算出を実行し、
前記アルゴリズムの処理時間に基づく条件は、当該処理時間が前記予め定められた周期（７１）に基づいた時間を超えるとの条件を含む、構成２または３に記載の制御装置。
[構成１０]
プロセッサ（１０２）に、生産工程に配置される制御対象を制御する制御方法を実行させるためのプログラムであって、
前記制御方法は、
前記制御対象に含まれる監視対象から取得された１または複数の状態値から１または複数の特徴量を算出するステップと、
学習モデルを参照して、算出される前記１または複数の特徴量に基づいて、前記監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出する複数種類のアルゴリズムのうちの１つを実行するステップと、
算出される前記スコアに基づいて、前記監視対象に何らかの異常が発生しているか否かを示す判定結果を生成するステップと、
前記実行するステップにおいて実行される前記１つのアルゴリズムを、予め定められた条件に応じて切替えるステップと、を備える、プログラム。
【符号の説明】
【０１７３】
１  異常検知システム、１００  制御装置、１４０  データセット生成部、１４１  特徴抽出部、１４２  切替条件判定部、１４３  スコア算出部、１４４  機械学習処理部、１４５  学習モデル生成部、１４６  結果判定部、１５２  学習モデル、１５４  スコア、１５６  判定条件、１５７  判定条件管理部、１５８  設定情報、１５９  マルチタスク実行部、１６０  変数管理部、１６２  デバイス変数、１７０  判定結果、２００  サポート装、２５０  データマイニングツール、２６０  設定ツール、３００  上位サーバ、４００  表示装置、ＬＯＦ，iForest  アルゴリズム。
【図１】
2020101904.tif 000003
【図２】
2020101904.tif 000004
【図３】
2020101904.tif 000005
【図４】
2020101904.tif 000006
【図５】
2020101904.tif 000007
【図６】
2020101904.tif 000008
【図７】
2020101904.tif 000009
【図８】
2020101904.tif 000010
【図９】
2020101904.tif 000011
【図１０】
2020101904.tif 000012
【図１１】
2020101904.tif 000013
【図１２】
2020101904.tif 000014
【図１３】
2020101904.tif 000015
【図１４】
2020101904.tif 000016
【図１５】
2020101904.tif 000017
【図１６】
2020101904.tif 000018
【図１７】
2020101904.tif 000019