(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-08
(45)【発行日】2022-08-17
(54)【発明の名称】制御装置およびプログラム
(51)【国際特許分類】
G05B 23/02 20060101AFI20220809BHJP
G05B 19/05 20060101ALI20220809BHJP
G06N 20/00 20190101ALI20220809BHJP
【FI】
G05B23/02 302V
G05B19/05 D
G06N20/00
(21)【出願番号】P 2018238375
(22)【出願日】2018-12-20
【審査請求日】2020-12-14
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】黒川 陽一
【審査官】藤崎 詔夫
(56)【参考文献】
【文献】特許第6315528(JP,B1)
【文献】特開2016-045861(JP,A)
【文献】特開2018-092613(JP,A)
【文献】米国特許出願公開第2011/0202160(US,A1)
【文献】中国特許出願公開第108563217(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 23/02
G06N 20/00
G05B 19/05
(57)【特許請求の範囲】
【請求項1】
生産工程に配置される制御対象を制御する制御装置であって、
ユーザプログラムを格納する格納部を、含み、
前記ユーザプログラムは、前記制御対象のリアルタイム制御を実施する機能と、前記リアルタイム制御に関連する関連処理の機能とを含み、
前記関連処理の機能は、
前記制御対象に含まれる監視対象から取得された1または複数の状態値から1または複数の特徴量を算出する特徴抽出部と、
学習モデルを参照して、前記特徴抽出部により算出される1または複数の特徴量に基づいて、前記監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出する複数種類のアルゴリズムのうちの1つ
のアルゴリズムを実行する処理部と、
前記処理部により算出されるスコアに基づいて、前記監視対象に何らかの異常が発生しているか否かを示す判定結果を生成する判定部と、
前記処理部により実行される前記1つのアルゴリズムを、予め定められた条件に応じて切替える
ための、前記ユーザプログラムにおいてファンクションブロックダイアグラムで記述されるファンクションブロックで構成される切替部と、を備える、制御装置。
【請求項2】
前記予め定められた条件は、前記処理部による前記1つのアルゴリズムの処理時間に基づく条件を含む、請求項1に記載の制御装置。
【請求項3】
前記予め定められた条件は、前記処理部による前記1つのアルゴリズムの処理時間および前記判定部による前記スコアに基づき前記判定結果を生成する処理にかかる処理時間に基づく条件を含む、請求項1または2に記載の制御装置。
【請求項4】
前記予め定められた条件は、前記判定部により生成される判定結果に基づく条件を含む、請求項1から3のいずれか1項に記載の制御装置。
【請求項5】
前記予め定められた条件は、生産工程の切替えに基づく条件を含む、請求項1から4のいずれか1項に記載の制御装置。
【請求項6】
前記学習モデルは、前記複数種類のアルゴリズムに共通して適用される、請求項1から4のいずれか1項に記載の制御装置。
【請求項7】
前記学習モデルは、前記監視対象から取得されるデータから生成されかつ1以上の要素によって定義される特徴量の集合体であり、
前記制御装置は、さらに、
前記スコアの算出に用いる当該特徴量の集合体における範囲に関するパラメータを、切替え後のアルゴリズムに引き継ぐ、請求項1から6のいずれか1項に記載の制御装置。
【請求項8】
前記複数
種類のアルゴリズムは、それぞれ、前記アルゴリズムの処理時間または算出される前記スコアの確度が異なる、請求項1から7のいずれか1項に記載の制御装置。
【請求項9】
前記制御対象のリアルタイム制御を実施するための制御タスクおよび、前記リアルタイム制御に関連する関連処理を実施するための関連処理タスクを含む複数のタスクを実行するマルチタスク実行部を、さらに備え、
前記マルチタスク実行部は、前記制御タスクを予め定められた周期で繰り返し実行し、
前記マルチタスク実行部は、前記制御タスクおいて前記判定部による判定処理を実行し、前記関連処理タスクにおいて前記処理部による前記スコアの算出を実行する
、請求項1から8のいずれか1項に記載の制御装置。
【請求項10】
前記予め定められた条件は、前記処理部による前記1つのアルゴリズムによる処理時間が前記予め定められた周期に基づいた時間を超えるとの条件を含む、請求項9に記載の制御装置。
【請求項11】
プロセッサに
、方法を実行させるため
のプログラムであって、
前記
方法は、
生産工程に配置される制御対象のリアルタイム制御を実施するステップと、前記リアルタイム制御に関連する関連処理を実施するステップとを含み、
前記関連処理は、
前記制御対象に含まれる監視対象から取得された1または複数の状態値から1または複数の特徴量を算出するステップと、
学習モデルを参照して、算出される前記1または複数の特徴量に基づいて、前記監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出する複数種類のアルゴリズムのうちの1つ
のアルゴリズムを実行するステップと、
算出される前記スコアに基づいて、前記監視対象に何らかの異常が発生しているか否かを示す判定結果を生成するステップと、
前記実行するステップにおいて実行される前記1つのアルゴリズムを、予め定められた条件に応じて
、前記プログラムにおいてファンクションブロックダイアグラムで記述されるファンクションブロックを実行して切替えるステップと、を備える
、プログラム。
【請求項12】
生産工程に配置される制御対象を制御する制御装置であって、
制御対象に含まれる監視対象から取得された1または複数の状態値から1または複数の特徴量を算出する特徴抽出部と、
学習モデルを参照して、前記特徴抽出部により算出される1または複数の特徴量に基づいて、前記監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出する複数種類のアルゴリズムのうちの1つのアルゴリズムを実行する処理部と、
前記処理部により算出されるスコアに基づいて、前記監視対象に何らかの異常が発生しているか否かを示す判定結果を生成する判定部と、
前記処理部により実行される前記1つのアルゴリズムを、予め定められた条件に応じて切替える切替部と、
前記制御対象のリアルタイム制御を実施するための制御タスクおよび、前記リアルタイム制御に関連する関連処理を実施するための関連処理タスクを含む複数のタスクを実行するマルチタスク実行部を、備え、
前記マルチタスク実行部は、前記制御タスクを予め定められた周期で繰り返し実行し、
前記マルチタスク実行部は、前記制御タスクおいて前記判定部による判定処理を実行し、前記関連処理タスクにおいて前記処理部による前記スコアの算出を実行する、制御装置。
【請求項13】
プロセッサに、方法を実行させるためのプログラムであって、
前記方法は、
生産工程に配置される制御対象に含まれる監視対象から取得された1または複数の状態値から1または複数の特徴量を算出するステップと、
学習モデルを参照して、算出される前記1または複数の特徴量に基づいて、前記監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出する複数種類のアルゴリズムのうちの1つのアルゴリズムを実行するステップと、
算出される前記スコアに基づいて、前記監視対象に何らかの異常が発生しているか否かを示す判定結果を生成するステップと、
前記実行するステップにおいて実行される前記1つのアルゴリズムを、予め定められた条件に応じて切替えるステップと、
前記制御対象のリアルタイム制御を実施するための制御タスクおよび、前記リアルタイム制御に関連する関連処理を実施するための関連処理タスクを含む複数のタスクを実行するマルチタスク実行のステップを備え、
前記マルチタスク実行のステップでは、前記制御タスクを予め定められた周期で繰り返し実行され、
前記マルチタスク実行のステップでは、前記制御タスクおいて前記判定結果を生成するステップにおける処理が実行され、前記関連処理タスクにおいて前記アルゴリズムのうちの1つのアルゴリズムを実行するステップにおける前記スコアの算出が実行される、プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、監視対象に発生し得る何らかの異常を検知可能な制御装置およびプログラムに関する。
【背景技術】
【0002】
様々な生産現場において、機械や装置に対する予知保全により設備稼働率を向上させたいというニーズが存在する。予知保全とは、機械や装置に生じる何らかの異常を検知して、設備を停止しなければ状態になる前に、整備や交換などの保守作業を行うような保全形態を意味する。
【0003】
予知保全を実現するために、機械や装置の状態値を収集するとともに、収集された状態値に基づいて、当該機械や装置に何らかの異常が生じているか否かを判断するような仕組みが必要となる。
【0004】
このような仕組みとして、例えば、特開2017-211930号公報(特許文献1)は、機械学習を適用した機器の寿命故障を予知する方法を提案する。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
現在、機械学習による異常検知のためのアルゴリズムは種々提案されている。例えば、処理時間はかかるが高精度の処理結果を出力するもの、または、処理結果の精度は高くないが処理時間が短いなど特長が異なる種々のアルゴリズムが提案されている。一方、生産現場では、異常検知を厳格に実施したい、または、異常検知を実施したいが時間はかけたくない等、様々なニーズがある。したがって、このような様々なニーズに応える複数のアルゴリズムを提供する環境が望まれる。しかし、特許文献1は、機械学習装置に適用する複数のアルゴリズムを準備する環境は提案しないから、このようなニーズに応えることができない。
【0007】
この開示の一つの目的は、異常検知処理にかかるアルゴリズムを適宜切替え可能な環境を提供することである。
【課題を解決するための手段】
【0008】
本開示の一例にかかる、生産工程に配置される制御対象を制御する制御装置は、制御対象に含まれる監視対象から取得された1または複数の状態値から1または複数の特徴量を算出する特徴抽出部と、学習モデルを参照して、特徴抽出部により算出される1または複数の特徴量に基づいて、監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出する複数種類のアルゴリズムのうちの1つを実行する処理部と、処理部により算出されるスコアに基づいて、監視対象に何らかの異常が発生しているか否かを示す判定結果を生成する判定部と、処理部により実行される1つのアルゴリズムを、予め定められた条件に応じて切替える切替部と、を備える。
【0009】
この開示によれば、監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出するアルゴリズムを、予め定められた条件に応じて適宜切り替えることができる。
【0010】
上述の開示において、予め定められた条件は、処理部による前記1つのアルゴリズムの処理時間に基づく条件を含む。
【0011】
この開示によれば、アルゴリズムの処理時間に応じて他のアルゴリズムに切替えることができる。
【0012】
上述の開示において、予め定められた条件は、処理部による1つのアルゴリズムの処理時間および判定部によるスコアに基づき判定結果を生成する処理にかかる処理時間に基づく条件を含む。
【0013】
この開示によれば、アルゴリズムの処理時間および判定結果を生成する処理にかかる処理時間に応じて他のアルゴリズムに切替えることができる。
【0014】
上述の開示において、予め定められた条件は、判定部により生成される判定結果に基づく条件を含む。
【0015】
この開示によれば、判定部により生成される判定結果に応じて、アルゴリズムを切り替えることができる。
【0016】
上述の開示において、予め定められた条件は、生産工程の切替えに基づく条件を含む。
この開示によれば、生産工程の切替に応じてアルゴリズムを切り替えることができる。
【0017】
上述の開示において、学習モデルは、複数種類のアルゴリズムに共通して適用される。
この開示によれば、学習モデルを切替後の別のアルゴリズムに引き継ぐことができる。
【0018】
上述の開示において、学習モデルは、監視対象から取得されるデータから生成されかつ1以上の要素によって定義される特徴量の集合体であり、制御装置は、さらに、スコアの算出に用いる当該特徴量の集合体における範囲に関するパラメータを、切替え後のアルゴリズムに引き継ぐ。
【0019】
この開示によれば、スコアの算出に用いる当該特徴量の集合体における範囲に関するパラメータを、切替後のアルゴリズムに引き継ぐことができる。
【0020】
上述の開示において、複数のアルゴリズムは、それぞれ、アルゴリズムの処理時間または算出されるスコアの確度が異なる。
【0021】
この開示によれば、アルゴリズムを切り替えることにより、アルゴリズムの処理時間または算出されるスコアの確度を異ならせることができる。
【0022】
上述の開示において、制御対象のリアルタイム制御を実施するための制御タスクおよび、リアルタイム制御に関連する関連処理を実施するための関連処理タスクを含む複数のタスクを実行するマルチタスク実行部を、さらに備え、マルチタスク実行部は、制御タスクを予め定められた周期で繰り返し実行し、マルチタスク実行部は、制御タスクおいて判定部による判定処理を実行し、関連処理タスクにおいて処理部によるスコアの算出を実行し、アルゴリズムの処理時間に基づく条件は、当該処理時間が前記予め定められた周期に基づいた時間を超えるとの条件を含む。
【0023】
この開示によれば、リアルタイム制御を実施する予め定められた周期に同期して、スコアの算出がなされるようにアルゴリズムを切り替えることができるので、スコアに基づく判定処理の結果に基づき制御対象のリアルタイム制御を実施することができる。
【0024】
本開示の他の例では、プロセッサに、生産工程に配置される制御対象を制御する制御方法を実行させるためのプログラムが提供される。この制御方法は、制御対象に含まれる監視対象から取得された1または複数の状態値から1または複数の特徴量を算出するステップと、学習モデルを参照して、算出される1または複数の特徴量に基づいて、監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出する複数種類のアルゴリズムのうちの1つを実行するステップと、算出される前記スコアに基づいて、監視対象に何らかの異常が発生しているか否かを示す判定結果を生成するステップと、実行するステップにおいて実行される1つのアルゴリズムを、予め定められた条件に応じて切替えるステップと、を備える。
【0025】
この開示によれば、プログラムが実行されることにより、監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出するアルゴリズムを、予め定められた条件に応じて適宜切り替えることができる。
【発明の効果】
【0026】
この開示によれば、監視対象に何らかの異常が発生している可能性を算出するアルゴリズムを、予め定められた条件に応じて適宜切り替えることができる。
【図面の簡単な説明】
【0027】
【
図1】本実施の形態にかかる異常検知システム1の全体構成例を示す模式図である。
【
図2】本実施の形態にかかる制御装置100の主要部を示す模式図である。
【
図3】本実施の形態にかかる制御装置100のハードウェア構成例を示すブロック図である。
【
図4】本実施の形態にかかるサポート装置200のハードウェア構成例を示すブロック図である。
【
図5】本実施の形態にかかる異常検知システム1の基本的なソフトウェア構成例を示すブロック図である。
【
図6】本実施の形態にかかる判定結果170の定義の一例を説明する図である。
【
図7】本実施の形態にかかる判定結果170の定義の一例を説明する図である。
【
図8】本実施の形態にかかるアルゴリズムの性能を比較して示す図である。
【
図9】本実施の形態にかかる乖離度の取得時間の変化を説明するための模式図である。
【
図10】本実施の形態にかかるプログラムの周期実行の一例を示す模式図である。
【
図11】本実施の形態にかかるプログラムの周期実行の一例を示す模式図である。
【
図12】本実施の形態にかかる機械学習処理のファンクションブロック121を説明する図である。
【
図13】本実施の形態にかかる異常検知処理のユーザプログラムの一例を模式的に示す図である。
【
図14】本実施の形態にかかる異常検知処理のユーザプログラムの他の例を模式的に示す図である。
【
図15】本実施の形態にかかる異常検知処理のユーザプログラムのさらなる他の例を模式的に示す図である。
【
図16】本実施の形態にかかる判定条件の切替えを説明する図である。
【
図17】本実施の形態にかかる異常検知のプロセスの一例を示すフローチャートである。
【発明を実施するための形態】
【0028】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0029】
<A.適用例>
まず、本発明が適用される場面の一例について説明する。
【0030】
本実施の形態にかかる異常検知処理を実行可能な制御システムの機能的な構成例について説明する。以下の説明においては、主として、生産工程に配置される制御対象を制御する制御システムが備える異常検知処理に注目して説明するので、制御システム全体を「異常検知システム」とも称する。
【0031】
まず、本実施の形態にかかる異常検知システム1の全体構成例について説明する。
図1は、本実施の形態にかかる異常検知システム1の全体構成例を示す模式図である。
図1を参照して、異常検知システム1は、主たる構成要素として、制御対象を制御する制御装置100と、制御装置100に接続され得るサポート装置200とを含む。異常検知システム1は、オプショナルな構成として、上位サーバ300および表示装置400をさらに含んでいてもよい。
【0032】
制御装置100は、制御対象に含まれる監視対象に何らかの異常が発生しているか否かを示す判定結果を生成する。制御装置100は、PLC(プログラマブルコントローラ)などの、一種のコンピュータとして具現化されてもよい。
【0033】
より具体的には、制御装置100は、第1フィールドバス2を介してフィールド装置群10と接続されるとともに、第2フィールドバス4を介して1または複数の表示装置400と接続される。さらに、制御装置100は、ローカルネットワーク6を介して上位サーバ300に接続される。制御装置100は、それぞれのネットワークを介して、接続された装置との間でデータを遣り取りする。
【0034】
制御装置100は、設備や機械を制御するための各種制御演算を実行するとともに、制御対象に生じる異常を検知する異常検知処理を実行する。異常検知処理が制御装置100において実行されることで、制御対象に生じ得る異常をより短い周期で検知できる。
【0035】
本明細書において、「状態値」は、任意の制御対象(あるいは、監視対象)にて観測できる値を包含する用語であり、例えば、任意のセンサにより測定できる物理値や、リレーやスイッチなどのON/OFF状態、PLCがサーボドライバに与える位置、速度、トルクなどの指令値、PLCが演算に用いる変数値などを含み得る。
【0036】
任意の制御対象にて観測されて制御装置100に転送される状態値を、以下「入力値」とも称す。
【0037】
第1フィールドバス2および第2フィールドバス4としては、データの到達時間が保証される、定周期通信を行うネットワークを採用することが好ましい。このような定周期通信を行うネットワークとしては、EtherCAT(登録商標)などが知られている。
【0038】
フィールド装置群10は、制御対象または制御に関連する生産ラインまたは生産工程に備えられる製造装置など(以下、「フィールド」とも総称する。)の状態値を入力値として収集する装置を含む。このような状態値を取得する装置としては、入力リレーや各種センサなどが想定される。フィールド装置群10は、さらに、制御装置100にて生成される指令値(以下、「出力値」とも称す。)に基づいて、フィールドに対して何らかの作用を与える装置を含む。このようなフィールドに対して何らかの作用を与える装置としては、出力リレー、コンタクタ、サーボドライバおよびサーボモータ、その他任意のアクチュエータが想定される。これらのフィールド装置群10は、第1フィールドバス2を介して、制御装置100との間で、入力値および出力値を含むデータを遣り取りする。
【0039】
図1に示す構成例においては、フィールド装置群10は、リモートI/O(Input/Output)装置12と、リレー群14と、画像センサ18およびカメラ20と、サーボドライバ22およびサーボモータ24とを含む。
【0040】
リモートI/O装置12は、第1フィールドバス2を介して通信を行う通信部と、入力値の取得および出力値の出力を行うための入出力部(以下、「I/Oユニット」とも称す。)とを含む。このようなI/Oユニットを介して、制御装置100とフィールドとの間で入力値および出力値が遣り取りされる。
図1には、リレー群14を介して、入力値および出力値として、デジタル信号が遣り取りされる例が示されている。
【0041】
I/Oユニットは、フィールドバスに直接接続されるようにしてもよい。
図1には、第1フィールドバス2にI/Oユニット16が直接接続されている例を示す。
【0042】
画像センサ18は、カメラ20によって撮像された画像データに対して、パターンマッチングなどの画像計測処理を行って、その処理結果を制御装置100へ送信する。
【0043】
サーボドライバ22は、制御装置100からの出力値(例えば、位置指令など)に従って、サーボモータ24を駆動する。
【0044】
上述のように、第1フィールドバス2を介して、制御装置100とフィールド装置群10との間でデータが遣り取りされることになるが、これらの遣り取りされるデータは、数百μsecオーダ~数十msecオーダのごく短い周期で更新されることになる。なお、このような遣り取りされるデータの更新処理を、「I/Oリフレッシュ処理」と称することもある。
【0045】
サポート装置200は、制御装置100が制御対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置200は、制御装置100で実行されるプログラムの開発環境(プログラム作成編集ツール、パーサ、コンパイラなど)、制御装置100および制御装置100に接続される各種デバイスのパラメータ(コンフィギュレーション)を設定するための設定環境、生成したユーザプログラムを制御装置100へ送信する機能、制御装置100上で実行されるユーザプログラムなどをオンラインで修正・変更する機能、などを提供する。
【0046】
さらに、サポート装置200は、制御装置100での異常検知処理を実現するための各種設定やデータの生成および送信などの機能を提供する。
【0047】
上位サーバ300は、制御装置100とローカルネットワーク6を介して接続され、制御装置100との間で必要なデータを遣り取りする。上位サーバ300は、例えば、データベース機能を有しており、制御装置100に格納される各種データを定期的またはイベント的に収集する。ローカルネットワーク6には、イーサネット(登録商標)などの汎用プロトコルが実装されてもよい。
【0048】
表示装置400は、第2フィールドバス4を介して制御装置100と接続され、ユーザからの操作を受けて、制御装置100に対してユーザ操作に応じたコマンドなどを送信するとともに、制御装置100での処理結果などをグラフィカルに表示する。
【0049】
次に、本実施の形態にかかる異常検知システム1における異常検知処理および異常検知処理にかかるアルゴリズムの切替を説明する。
【0050】
図2は、本実施の形態にかかる制御装置100の主要部を示す模式図である。
図2を参照して、制御装置100は、データセット生成部140と、特徴抽出部141と、切替条件判定部142と、機械学習処理部144と、結果判定部146と、を含む異常検知処理部50を備える。機械学習処理部144は、監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出するスコア算出部143を含む。
【0051】
制御装置100は、監視対象から1または複数の入力データ(入力データ1,入力データ2,・・・,入力データn)を収集し、特徴量を抽出することで、異常の発生有無を示す判定結果を含む監視結果を出力する。
【0052】
本実施の形態においては、制御対象に含まれる監視対象に何らかの異常が発生しているかを判定する単位区間として「フレーム」という概念を導入する。フレームは、監視対象に何らかの異常が発生しているか否かを判定する単位区間を意味する。そのため、監視対象に何らかの異常が発生しているか否かの判定は、フレーム毎に行われることになる。単位区間(フレーム)は、監視対象の動作などに応じて任意に設定される。
【0053】
データセット生成部140は、フレーム情報に従って、監視対象から1または複数の入力データ(入力データ1,入力データ2,・・・,入力データn)からなるデータセットをフレーム毎に生成する。
【0054】
特徴抽出部141は、データセット生成部140により生成されるデータセットに基づいて、予め定められた処理に従って、1または複数の特徴量(特徴量1,特徴量2,・・・,特徴量m)を抽出(算出)する。算出される特徴量としては、例えば、フレーム内における平均値、最大値、中間値、最小値、標準偏差などを用いることができる。
【0055】
機械学習処理部144において、スコア算出部143は、予め用意された学習モデル152を参照して、特徴抽出部141により抽出される1または複数の特徴量の学習モデル152に対する外れ度合い(または乖離度)を示す値(以下、「スコア」とも称す。)を算出する。ここで、学習モデル152は、特定のクラス(例えば、正常や異常)がラベル付けされた特徴量の値を要素とする集合に相当する。典型的には、学習モデル152は正常時の特徴量からなり、この場合には、スコアは、監視対象に何らかの異常が発生している可能性を示す値を意味することになる。
【0056】
機械学習処理部144は、制御装置100での異常監視のアルゴリズムとして複数種類のアルゴリズムのうちの1つを実行することにより、スコア算出部143に、超空間上における値群に対する特徴量の外れ度合を示す値であるスコアを算出させる。この場合には、学習モデル152は、超空間上における値群を示すものとなり、これは監視対象を示す「モデル」に相当する。
【0057】
このような外れ度合いに基づく異常監視の手法としては、各点から値群までの最短距離に基づいて異常を検知する手法(k近傍法)、値群を含むクラスタを含めて距離を評価する局所外れ値因子(LoF:local outlier factor)法、パス長さから算出されるスコアを用いるiForest(isolation forest)法など知られている。本実施の形態では、スコア算出部143が実行する複数種類のアルゴリズムのうちの1つのアルゴリズムは、このLoF法に従うアルゴリズムおよびiForest法に従うアルゴリズムのうちの1つである。なお、スコア算出部143が実行し得る複数種類のアルゴリズムは、LoF法またはiForest法に従うアルゴリズム等に限定されず、例えばk近傍法などの他の種類のアルゴリズムが含まれ得る。
【0058】
切替条件判定部142は、機械学習処理部144により実行される1つのアルゴリズムを、予め定められた条件に応じて切替える。切替条件判定部142は、より特定的には、フレームの周期に同期して条件値125を入力し、入力した条件値125が予め定められた条件を満たすと判断したとき、切替指示を機械学習処理部144に出力する。切替指示には、満たされた条件に応じた値が設定される。機械学習処理部144は、実行すべきアルゴリズムを、複数種類のアルゴリズムのうちから、切替指示が示す値に対応するアルゴリズムに切替る(設定する)。
【0059】
外れ度合いに基づく異常監視の手法を採用した場合には、学習モデル152は、監視対象の状態が正常時に得られる特徴量の群を含むようになり、制御装置100は、学習モデル152に含まれる特徴量群に対する対象の特徴量の外れ度合いに基づいて、監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出する。
【0060】
結果判定部146は、スコア算出部143により算出されるスコアと予め定められた閾値とを比較して、監視対象に何らかの異常が発生しているか否かを判定する。結果判定部146からは何らかの異常が発生しているか否かを示す判定結果170が出力される。また、この判定結果170とともにスコアが出力されてもよい。本実施の形態では、判定結果170とスコアからなるセットを、監視結果として出力することが可能である。判定結果170、スコアおよび監視結果の出力先は、他のモジュール(回路、プログラムなど)を含み得る。例えば、出力は、制御装置100またはサポート装置200が備える記憶装置への格納、サポート装置200が備えるディスプレイへの表示、またはネットワークを介した転送を含み得る。
【0061】
本実施の形態では、上記の予め定められた条件は、制御装置100の稼働状態に基づく条件を含み得る。例えば、予め定められた条件は、機械学習処理部144によるアルゴリズムの処理にかかる処理時間に基づく条件、または、判定結果170に基づく条件、または、生産工程の切替えに基づく条件を含む。なお、予め定められた条件は、これら条件に限定されない。また、予め定められた条件は、これら条件の2つ以上の組合せに基づく条件であってもよい。
【0062】
以上のような機能構成によって、本実施の形態にかかる異常監視処理では、制御装置100の稼働中に、予め定められた条件に応じて機械学習処理部144が実行する1のアルゴリズムを動的に切り替え可能な環境が提供される。
【0063】
<B.ハードウェア構成例>
次に、本実施の形態にかかる異常検知システム1を構成する主要な装置のハードウェア構成例について説明する。
【0064】
(b1:制御装置100のハードウェア構成例)
図3は、本実施の形態にかかる制御装置100のハードウェア構成例を示すブロック図である。
図3を参照して、制御装置100は、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などのプロセッサ102と、チップセット104と、主記憶装置106と、二次記憶装置108と、ローカルネットワークコントローラ110と、USB(Universal Serial Bus)コントローラ112と、メモリカードインターフェイス114と、内部バスコントローラ122と、フィールドバスコントローラ118,120と、I/Oユニット124-1,124-2,・・・とを含む。
【0065】
プロセッサ102は、二次記憶装置108に格納された各種プログラムを読み出して、主記憶装置106に展開して実行することで、制御対象に応じた制御、および、後述するような各種処理を実現する。チップセット104は、プロセッサ102とともに、各コンポーネントを制御することで、制御装置100全体としての処理を実現する。
【0066】
二次記憶装置108には、制御装置100が提供する機能を実現するためのシステムプログラム126に加えて、システムプログラム126が提供する実行環境を利用して実行されるユーザプログラム127および学習モデル152が格納される。ユーザプログラム127は、各種サービスを提供するためのシステムサービスプログラム128およびフィールド装置群10の制御対象を制御するための制御プログラム130を含む。システムサービスプログラム128は、
図2の異常検知処理部50を構成するプログラムモジュールに相当する異常検知プログラム129を含む。
【0067】
ローカルネットワークコントローラ110は、ローカルネットワーク6を介した他の装置との間のデータの遣り取りを制御する。USBコントローラ112は、USB接続を介してサポート装置200との間のデータの遣り取りを制御する。
【0068】
メモリカードインターフェイス114は、記憶媒体116を着脱可能に構成されており、記憶媒体116に対してデータを書き込み、記憶媒体116から各種データ(ユーザプログラムやトレースデータなど)を読み出すことが可能になっている。
【0069】
内部バスコントローラ122は、制御装置100に搭載されるI/Oユニット124-1,124-2,・・・との間でデータを遣り取りするインターフェイスである。
【0070】
フィールドバスコントローラ118は、第1フィールドバス2を介した他の装置との間のデータの遣り取りを制御する。同様に、フィールドバスコントローラ120は、第2フィールドバス4を介した他の装置との間のデータの遣り取りを制御する。
【0071】
図3には、プロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。あるいは、制御装置100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOS(Operating System)を並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0072】
また、本実施の形態では、
図2の異常検知処理部50の主要部も、異常検知プログラム129が、プロセッサ102により実行されることで実現されるとしているが、
図2の主要部の1つ以上は、ASICまたはFPGAなどの専用のハードウェア回路を用いて実装されてもよい。
【0073】
(b2:サポート装置200のハードウェア構成例)
次に、本実施の形態にかかるサポート装置200は、一例として、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコン)を用いてプログラムを実行することで実現される。
【0074】
図4は、本実施の形態にかかるサポート装置200のハードウェア構成例を示すブロック図である。
図4を参照して、サポート装置200は、CPUまたはMPUなどのプロセッサ202と、ドライブ204と、主記憶装置206と、二次記憶装置208と、USBコントローラ212と、ローカルネットワークコントローラ214と、入力部216と、表示部218とを含む。これらのコンポーネントはバス220を介して接続される。
【0075】
プロセッサ202は、二次記憶装置208に格納された各種プログラムを読み出して、主記憶装置206に展開して実行することで、後述するような各種処理を実現する。
【0076】
二次記憶装置208は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)などで構成される。二次記憶装置208には、典型的には、サポート装置200において実行されるユーザプログラムの作成、作成したプログラムのデバッグ、システム構成の定義、各種パラメータの設定などを行うための図示しない開発プログラムと、データマイニングツール250と、設定ツール260とを含む各種プログラムが格納される。二次記憶装置208には、OSおよび他の必要なプログラムが格納されてもよい。
【0077】
ドライブ204は、記憶媒体205に対してデータを書き込み、記憶媒体205から各種データ(ユーザプログラム、トレースデータまたは時系列データなど)を読み出すことが可能になっている。記憶媒体205は、例えばコンピュータ読取可能なプログラムを非一過的に格納する記憶媒体205(例えば、DVD(Digital Versatile Disc)などの光学記憶媒体)を含む。記憶媒体116または記憶媒体205から、その中に格納されたプログラムまたはデータが読み取られて二次記憶装置208などの内部の記憶領域にインストールされる。
【0078】
サポート装置200で実行される各種プログラムは、コンピュータ読取可能な記憶媒体116または記憶媒体205を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態にかかるサポート装置200が提供する機能は、OSが提供するモジュールの一部を利用する形で実現される場合もある。
【0079】
USBコントローラ212は、USB接続を介して制御装置100との間のデータの遣り取りを制御する。ローカルネットワークコントローラ214は、任意ネットワークを介した他の装置との間のデータの遣り取りを制御する。
【0080】
入力部216は、キーボードやマウスなどで構成され、ユーザ操作を受け付ける。表示部218は、ディスプレイ、各種インジケータなどで構成され、プロセッサ202からの処理結果などを出力する。サポート装置200には、プリンタが接続されてもよい。
【0081】
図4には、プロセッサ202がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。
【0082】
<C.ソフトウェア構成例/機能構成例>
次に、本実施の形態にかかる異常検知システム1を構成する主要な装置のソフトウェア構成例および機能構成例について説明する。
【0083】
図5は、本実施の形態にかかる異常検知システム1の基本的なソフトウェア構成例を示すブロック図である。
図5を参照して、異常検知システム1において、制御装置100は、サポート装置200から提供される各種情報に基づいて、異常検知処理を実行する。
図5では、
図2で示した主要部が、その周辺部と関連づけて示されている。
【0084】
図5を参照して、制御装置100は、
図2で示された異常検知処理部50の各部に追加して、マルチタスク実行部159、変数管理部160と、判定条件管理部157とを含む。マルチタスク実行部159は、制御対象のリアルタイム制御を実施するための制御タスクおよび、リアルタイム制御に関連する関連処理を実施するための関連処理タスクを含む複数のタスクをプロセッサ102の制御のもとで並行して実行する。このマルチタスク実行の詳細は後述する。
【0085】
変数管理部160は、機械や装置などの制御対象(監視対象)に現れる状態値(入力値)を予め定められた制御周期毎に取得して内部状態値を更新する。また、変数管理部160は、ユーザプログラムの実行などによって算出される指令値(出力値)を制御周期毎に更新する。すなわち、変数管理部160は、I/Oリフレッシュ処理にかかる少なくとも一部の処理を実行し、制御周期毎に、制御対象から取得される入力値および制御対象へ与えられる出力値を更新する。
【0086】
本実施の形態にかかる制御装置100においては、制御対象から取得される状態値(入力値)、制御対象へ与えられる指令値(出力値)、ならびに、制御装置100での演算処理または制御装置100の状態管理に用いられるデータあるいは値(「内部状態値」にすべて包含される)のいずれについても、「変数」の形で参照する形態を採用する。そのため、以下の説明においては、制御装置100において利用可能な値を「変数値」と表現することもある。そして、機械や装置などの制御対象に生じる状態値を示す内部状態値の集合を「デバイス変数162」と表現する。
【0087】
データセット生成部140は、サポート装置200により設定される設定情報158に従って、指定された監視対象の1または複数のデバイス変数162(状態値)が示す値(単位区間の時間的変化)を、フレーム情報に従ってデバイス変数162を検索することにより、監視対象に関する1または複数の入力データ(入力データ1,入力データ2,・・・,入力データn)からなるデータセットをフレーム毎に生成する。
【0088】
なお、本発明は「変数」を用いて値を参照する形態に限られることなく、各値を格納するメモリの論理アドレスまたは物理アドレスなどを指定して参照する形態などにも適用可能である。
【0089】
学習モデル生成部145は、サポート装置200からの指示に従って、学習モデル152を生成する。なお、学習モデル生成部145は、サポート装置200の一部に設けられてもよい。この場合には、学習モデル152自体がサポート装置200から制御装置100へ提供されることになる。より具体的には、サポート装置200のデータマイニングツール250を用いて、必要なデータを抽出することで、学習モデル152を生成してもよい。
【0090】
判定条件管理部157は、切替条件判定部142からの切替指示または設定ツール260からの指示に従って、判定条件156を変更する。
【0091】
切替条件判定部142は、条件値125を入力し、入力した条件値125に基づき、予め定められた条件が満たされるか否かを判定し、判定の結果に基づく切替指示を生成し、機械学習処理部144に出力する。条件値125は、機械学習処理部144におけるアルゴリズムの処理時間、生産工程の切替指示、および判定結果170の判定値などを含み得るが、これらに限定されない。
【0092】
一方、サポート装置200は、制御装置100に対して、設定情報158および判定条件156を設定する。より具体的には、サポート装置200は、設定ツール260を有しており、設定ツール260が制御装置100への各種データの設定処理を担当する。
【0093】
<D.課題および解決手段>
次に、本実施の形態にかかる異常検知システム1が想定する課題およびその解決手段について説明する。
図6と
図7は、本実施の形態にかかる判定結果170の定義の一例を説明する図である。
図8は、本実施の形態にかかるアルゴリズムの性能を比較して示す図である。
【0094】
図6では、制御装置100の稼働時に取得される特徴量と、学習モデル152の学習済みデータとの関係に基づき算出される判定結果170の一例が示される。例えば、機械学習処理部144が特徴抽出部141から出力される特徴量と学習モデル152の学習済みのデータからスコアを算出し、結果判定部146は算出されたスコアと判定条件156が示す閾値とを比較する。結果判定部146は、比較の結果に基き判定結果170を出力する。判定結果170は、例えば、
図7に示すような「正常」、「異常」、「故障」、「警報レベル1」および「警報レベル2」の種類を含むが、種類はこれらに限定されない。具体的には、判定結果170は、スコア154が異常の閾値未満であれば「正常」を示し、スコア154が異常の閾値~警報レベル1の閾値に該当すれば「異常」を示し、スコア154が警報レベル1の閾値~警報レベル2の閾値に該当すれば「警報レベル1」を示し、スコア154が警報レベル2の閾値~故障の閾値に該当すれば「警報レベル2」を示し、スコア154が故障の閾値を超えれば「故障」を示す。
【0095】
図8では、アルゴリズム(LOF、iForest(isolation forest)のそれぞれについて、処理時間と精度が比較して示される。具体的には、LOFの処理に要する処理時間は、機械学習処理の所要時間に占める割合が比較的大きいが算出されるスコア154の確度は高く、逆に、iForestの処理時間は、機械学習処理の所要時間に占める割合が比較的小さいが確度は低い。このように、アルゴリズム(LOF、iForest)間では、処理時間と確度はトレードオフの関係にある。なお、本実施の形態では、アルゴリズムの処理時間は、アルゴリズムの実行時間と同様の概念を表す。
【0096】
図6に戻り、
図6のように、時間経過に従い、判定結果170が「正常」→「異常」(警報レベル1→警報レベル2)→「故障」と遷移する場合、生産現場ではより厳格な判定を実施したいとの要望(課題)が生じる。したがって、この場合は、より確度の高いアルゴリズムに切替えることで要望に応えることが可能となる。
【0097】
生産現場では、異常検知処理の結果を用いて制御装置100を稼働させたいとの要望もある。そこで、制御装置100では、判定結果170を、制御周期に同期した予め定められた周期内に制御プログラム130に提供する。これにより、制御プログラム130は、判定結果170に基き、制御対象を制御することが可能となる。
【0098】
その一方で、アルゴリズムの処理に時間がかかり異常検知処理部50の処理時間が長期化すると、上記の予め定められた周期内に判定結果170を制御プログラム130に提供することが困難となる。そこで、制御装置100では、機械学習処理部144の処理時間が長くなる場合は、より処理に時間がかからないアルゴリズムに切替えることで上記の要望に応えることが可能となる。
【0099】
また、生産現場では、ワーク毎に段取り替えして生産工程を切替えるが、ワークが異なれば、適用するアルゴリズムも切替えたいとの要望がある。
【0100】
したがって、本実施の形態では、生産工程の種類に応じてアルゴリズムを切り替えることで、上記の要望に応えることが可能となる。
【0101】
<E.アルゴリズムの他の例>
制御装置100は、正常時および異常時の少なくとも一方における学習モデル152の学習データと、監視対象から取得した特徴量との間で乖離の程度(スコア154)を取得し、取得した乖離度と判定条件156の閾値とに基づき、監視対象に生じる異常を判定する。
【0102】
本実施の形態では、共通の学習モデル152を用いて上記のLOFまたはiForestを切り替えたが、これらとは異なる他のアルゴリズム間で切替えることも可能である。ここで他のアルゴリズムの一例を説明する。
【0103】
他のアルゴリズムでは、スコア154の取得においてマハラノビス距離を用いる。具体的には、制御装置100は、異常検知の診断対象となる特徴量のデータ(以下、「診断対象データ」とも称す。)と、各特徴量の集合体sa,sbに含まれるk個の特徴量との距離に基づき、スコア154(スコアa,スコアb)を算出する。ここでは、スコアa,スコアbの計算時間が、アルゴリズムの処理時間に相当する。
【0104】
他のアルゴリズムを適用する際に、特徴量を定義する要素の数に関する第1パラメータに基づいて特徴量が生成される。第1パラメータは、特徴量を定義する要素の種類(平均、標準偏差、歪度、尖度、最大、および最小など)および要素の数(特徴ベクトルの次元数)を設定するためのパラメータである。ユーザは、サポート装置200のデータマイニングツール250を用いて第1パラメータの値を設定することができる。スコアの取得に用いる特徴量の集合体である学習モデル152における範囲に関する第2パラメータに基づいて、スコアを取得する。第2パラメータは、診断対象データとの間のスコアの算出に用いられる特徴量の数(以下、「k値」とも称す。)を設定するためのパラメータである。ユーザは、サポート装置200を用いて、第2パラメータの値を設定することができる。k値が多いほど、診断対象データが比較される学習済みの特徴量の数が多くなる。
【0105】
ここで、本実施の形態においては、第1パラメータの値および第2パラメータの値のそれぞれに応じて、スコアの計算時間が変化するが、ここでは、第1パラメータは一定値とする。この点を、
図9を参照して説明する。
図9は、本実施の形態にかかるスコアの取得時間の変化を説明するための模式図である。
【0106】
図9(A)の例では、第1パラメータの値として次元数がnに設定され、第2パラメータの値としてk値がNに設定されている。この場合、診断対象データの比較対象となるデータの数は、概念的には比較対象数Nと次元数nとの積になる。
【0107】
図9(B)の例では、第1パラメータの値として次元数がs(sはnより小さい値)に設定され、第2パラメータの値としてk値がNに設定されている。この場合、診断対象データの比較対象となるデータの数は、概念的には比較対象数Nと次元数sとの積になる。次元数について、sはnより小さい値であるため、
図9(B)の例における比較対象の総数は、
図9(A)の例における比較対象の総数よりも小さくなる。したがって、その分、スコアを算出するための処理時間が短くなるが、スコアの確度は低くなる。
【0108】
このように、ユーザは、第2パラメータの値を変更することで、異常検知の精度とのトレードオフで、スコアの計算時間を短くしたり長くしたりすることができる。
【0109】
図9(C)の例では、第1パラメータの値として次元数がnに設定され、第2パラメータの値としてk値がS(SはNより小さい値)に設定されている。この場合、比較対象の総数は、概念的には比較対象数Sと次元数nとの積になる。k値について、SはNより小さい値であるため、
図9(C)の例における比較対象の総数は、
図9(A)の例における比較対象の総数よりも小さくなる。したがって、その分、スコアを算出するための処理時間は短くなるが、その一方で、スコアの確度は低くなる。
【0110】
第2パラメータによってk値が設定されると、信頼度の高い順からスコアの計算に用いられる学習済みの特徴量が選択される。このように、ユーザは、第2パラメータの値を変更することで、スコアの確度、すなわち異常検知の精度とのトレードオフで、スコアの計算時間を短くしたり長くしたりすることができる。つまり、第2パラメータは、スコアを算出するアルゴリズムの処理時間を短縮可能なパラメータである。
【0111】
図9によれば、学習モデル152は、監視対象から取得されるデータから生成されかつ1以上の要素によって定義される特徴量(学習データ)の集合体であり、制御装置100は、スコア154の算出に用いる当該特徴量の集合体における範囲に関する第2パラメータを、切替え後のアルゴリズムに引き継ぐように機械学習処理部144を制御する。これにより、
図9のケースであっても、アルゴリズム間で、第2パラメータで範囲が規定された学習済みの特徴量(学習データ)の集合体である共通の学習モデル152を適用することができる。
【0112】
<F.プログラムの周期実行>
次に、本実施の形態にかかるプログラムの周期実行について説明する。
【0113】
図10と
図11は、本実施の形態にかかるプログラムの周期実行の一例を示す模式図である。制御装置100のマルチタスク実行部159は、1または複数の処理をタスクという単位で予め割り当てられた実行の優先度に従いマルチに実行する。
【0114】
図10を参照して、タスクは、制御周期に同期した一定のタスク周期で繰返し実行されて、各タスク周期のタスク実行時間内でI/Oリフレッシュ処理72と、I/Oリフレッシュ処理72に続く制御処理73のタスクが実行される。なお、I/Oリフレッシュ処理72は、変数管理部160がデバイス変数162の対応する変数の値を周期的に更新する処理を意味する。
【0115】
制御処理73は、制御プログラム130によるタスクであって、システム共通処理(1)およびシステム共通処理(2)77、ユーザプログラム実行処理74およびモーション制御処理76のタスクを含む。ユーザプログラム実行処理74は、ユーザプログラム127に含まれる制御対象に応じて任意に作成されるプログラムであり、IEC61131-3に規定される言語を用いて記述されるシーケンスプログラムなどを含む。モーション制御処理76は、ユーザプログラム127に含まれるモーション命令に従う処理(典型的には、モータの位置制御や速度制御に関する処理)を含む。
【0116】
図11には、制御対象のリアルタイム制御を実施するための制御タスクからなるプライマリ定周期タスク70、定周期タスク80、タグデータリンクサービス90、定周期タスク91およびシステムサービス92のタスクが実行される例を示す。システムサービス92は、リアルタイム制御に関連する関連処理を実施するための関連処理タスクに相当する。
【0117】
プライマリ定周期タスク70は、制御装置100において他のタスクに比べて最も高い優先度(最優先)で実行されるべき処理を含み、制御周期に相当するプライマリ周期71毎に周期的に実行される。
【0118】
より具体的には、プライマリ定周期タスク70は、I/Oリフレッシュ処理72、ユーザプログラム実行処理74、モーション制御処理76およびシステム共通処理(2)77を含む。このプライマリ定周期タスク70のシステム共通処理(2)77は、データセット生成部140による処理、特徴抽出部141の特徴抽出処理および結果判定部146による結果判定処理を含む。
【0119】
プライマリ定周期タスク70においては、I/Oリフレッシュ処理72、ユーザプログラム実行処理74、およびモーション制御処理76のすべてがプライマリ周期71毎に実行される。
【0120】
定周期タスク80は、プライマリ定周期タスク70より優先度の低い処理を含み、制御周期の整数倍に相当する一定のタスク周期周毎に実行される。
【0121】
より具体的には、定周期タスク80は、プライマリ定周期タスク70と同様に、I/Oリフレッシュ処理、ユーザプログラム実行処理、およびモーション制御処理を含む。実行周期が異なる点を除いて、定周期タスク80のI/Oリフレッシュ処理、ユーザプログラム実行処理、およびモーション制御処理の処理内容は、I/Oリフレッシュ処理72、ユーザプログラム実行処理74、およびモーション制御処理76の処理内容と同様である。
【0122】
タグデータリンクサービス90は、定周期タスク80より優先度の低い処理を含む。タグデータリンクサービス90は、データセット生成部140が参照する1または複数の入力データ、ならびに、特徴抽出部141により生成される1または複数の特徴量を、主記憶装置106あるいは二次記憶装置108などの記憶領域に格納する処理を含む。すなわち、タグデータリンクサービス90のタスクには、プライマリ定周期タスク70に割り当てられた特徴抽出処理により生成されるデータを格納する処理が割り当てられている。
【0123】
定周期タスク91は、タグデータリンクサービス90のタスクよりも優先度の低いユーザプログラム127のタスクを実行する。
【0124】
システムサービス92は、定周期タスク91よりも優先度の低い処理を含み、例えばスコア154の算出を含む機械学習処理部144が実施する機械学習処理93および各種のファイル転送処理などを含む。
【0125】
図11では、プライマリ周期71において実行される特徴抽出処理により取得された特徴量はデバイス変数162に設定される。システムサービス92の機械学習処理93は、デバイス変数162に設定された特徴量を用いてアルゴリズムを実行することによりスコア154を算出する。算出したスコア154はデバイス変数162に設定される。次のプライマリ周期71で実行される結果判定処理は、デバイス変数162に設定されたスコア154から判定結果170を出力する。判定結果170は、デバイス変数162に設定される。したがって、次のプライマリ周期71で実行されるユーザプログラム実行処理74またはモーション制御処理76では、先行して実施された結果判定処理の判定結果170に基づいて制御対象を制御することが可能となる。
【0126】
本実施の形態では、この制御ルーチンを維持できるように、アルゴリズムの切替のための予め定められた条件として、アルゴリズムの処理時間が上記のプライマリ周期71に基づいた時間を超えたときは、より処理時間の短い他のアルゴリズムに切り替えるようにしてもよい。
【0127】
<G.ユーザプログラム>
次に、ユーザプログラムの一例について説明する。ユーザプログラムは、例えば、IEC 61131-3標準で定義される言語に従うファンクションブロックダイアグラムで記述される。
図12は、本実施の形態にかかる機械学習処理のファンクションブロック121を説明する図である。以下の説明では、ファンクションブロックをFBとも称する。
図12(A)のFB121は、例えば、機械学習処理部144が実装する1または複数の機能を、1または複数の関数として実装する。FB121は、
図12(B)に示す2つの入力変数(Execute,Algorithm)と、
図12(C)に示す6つの出力変数(Done,Busy,Error,ErrorID,Time,WarningLevel)を有する。これら入力変数および出力変数は、1種の記憶領域に相当し、記録領域の値は、ファンクションブロックダイアグラム中の他のFBまたはダイアグラムを構成するコンポーネントにより参照され得る。
【0128】
入力変数Executeは、FB121に処理の開始を指示するデータが設定される。また、入力変数Algorithmには、機械学習処理部144により実行されるアルゴリズムの種類を指定する値が設定される。例えば、入力変数Algorithmの値が「0」であればLOFのアルゴリズムが指定されて、値が「1」であればiForesetのアルゴリズムが指定される。
【0129】
FB121は、入力変数Executeに処理開始を指示する値が設定されると起動される。起動されると、FB121は、(i)特徴抽出部141から抽出される特徴量と学習モデル152に基き、入力変数Algorithmで指定されるアルゴリズムを実行することにより、スコア154を算出し、(ii)このスコア154に基き結果判定処理により算出された判定結果170を受付けて、受付けた判定結果170を出力変数WarnigLevelに設定する。出力変数WarnigLevelは、判定結果170が正常を示すとき「0」が設定され、異常を示すとき「1」が設定され、故障を示すとき「2」が設定される。FB121は、さらに、(iii)入力変数Algorithmで指定されるアルゴリズムの実行開始からスコア154を算出するまでのアルゴリズム処理時間を計測(算出)し、計測した処理時間を出力変数Timeに設定する。したがって、出力変数Timeは、機械学習処理部144の処理時間を表すことにもなる。また、FB121は、アルゴリズムの処理時間およびスコア154に基づき判定結果170を生成する処理にかかる処理時間の合計を計測し、計測した処理時間を出力変数Timeに設定することもできる。
【0130】
また、FB121は、機械学習処理が完了したとき、すなわちFB121の関数の実行が完了したとき、出力変数Doneに「True」を設定する。また、FB121は関数の実行中は、出力変数Busyに「True」を設定するが完了したとき「1」を設定する。また、FB121は、実行中にエラーを検出したときは出力変数Errorに「True」を設定し、エラーの種類を示すエラーコードを生成し出力変数ErrorIDに設定する。
【0131】
図12のFB121の入力変数Algorithmには、LOFまたはiForestを指定する値が設定されたが、
図9に示した他の種類のアルゴリズムを指定する値が設定されてもよい。
【0132】
(g1:処理時間に応じたアルゴリズムの変更)
図13は、本実施の形態にかかる異常検知処理のユーザプログラムの一例を模式的に示す図である。より具体的には、
図13のユーザプログラムは、アルゴリズムの処理時間に基づく条件に応じて、機械学習処理に用いるアルゴリズムを切替える処理を示す。
【0133】
図13を参照して、ユーザプログラムは、フレームに同期して異常検知の処理開始を検出するステップS1、異常検知処理の初期設定を実施するステップS2、異常検知処理におけるアルゴリズムの処理時間と閾値との比較を実施するステップS3、および当該比較の結果に応じてアルゴリズムの変更を実施するステップS4とを含む。ステップS2およびS4は、機械学習処理部144および結果判定部146の処理に相当し、ステップS3は切替条件判定部142の処理に相当する。本実施の形態では、フレームに同期してステップS1~S4が繰り返し実行されることで、異常検知処理が繰り返し実施される。
【0134】
まず、ステップS1では、異常検知処理の開始の可否を判断するファンクションブロックRS_instanceが実行される。実行されることにより、ファンクションブロックRS_instanceは、異常検知処理の開始を示す変数SettingTriggerを「True」(ステップS2以降の処理を開始する)にセットまたはリセットする。
【0135】
より具体的には、フレームが開始時において初期設定処理(ステップS2)が非実行中であるとき、すなわち変数FrameTriggerに「True」および変数Busy0に「False」が設定されているとき、変数SettingTriggerに「True」(処理開始可)がセットされる。一方、フレームが開始時において初期設定処理(ステップS2)が非実行中であるとき、すなわち変数FrameTriggerに「True」および変数Busy0に「False」が設定されているとき、変数SettingTriggerに「False」(処理開始不可)が設定される。
【0136】
また、ファンクションブロックRS_instanceは、後述するステップS2またはS4において機械学習処理でエラーが発生している、または当該機械学習処理が完了しているとき、すなわち変数Error0に「True」が設定されている、または変数Done0に「True」設定されているとき、変数SettingTriggerをリセットする。したがって、ステップS1では、フレームの開始毎に、ステップS2以降の処理を開始すると判定することが可能となる。
【0137】
次のステップS2では、機械学習処理のFB1210が実行される。FB1210は、変数SettingTriggerに「True」が設定されて、後述する変数CompareResultに「False」が設定されているとき、入力変数Algorithmの値「0」で指定されるアルゴリズム(例えば、LOF)を実行して機械学習処理を実施する。これにより、当該フレームにおいて取得された特徴量により算出されたスコア154に基づく判定結果170を示す値が変数WarningLevel0に設定され、アルゴリズムの処理時間が変数Time0に設定され、また変数Done0にステップS2の機械学習処理の完了を示す値「True」が設定される。
【0138】
次のステップS3では、変数TimeX(
図13の場合は、変数Time0または変数Time1)に設定されたアルゴリズムの処理時間と変数thresholdに設定された閾値とを比較するファンクションブロックLT_instanceが実行される。ファンクションブロックLT_instanceは、変数SettingTriggerに「True」が設定されたとき、すなわちフレームの開始時に、変数TimeXと変数thresholdとの値どうしを比較し、比較の結果を変数CompareResultに設定する。ファンクションブロックLT_instanceは、変数TimeXの値が変数thresholdの閾値以上であるときは変数CompareResultに「True」を設定し、閾値未満であるときは変数CompareResultに「False」を設定する。
【0139】
次のステップS4では、機械学習処理のFB1211が実行される。FB1211は、変数CompareResultに「True」が設定されたとき、すなわち初期設定処理(ステップS2)で設定されたアルゴリズム(例えば、LOF)の処理時間が閾値を超えた場合に実行される。実行されると、FB1211は、入力変数Algorithmの値「1」で指定されるアルゴリズム(例えば、iForest)を実行する。これにより、当該フレームにおいて取得された特徴量により算出されたスコア154に基づく判定結果170を示す値が変数WarningLevel1に設定され、アルゴリズムの処理時間が変数Time1に設定され、また変数Done0にステップS4の機械学習処理の完了を示す値「True」が設定される。
【0140】
図13のユーザプログラムが実行されることにより、機械学習処理のためのアルゴリズムとして、例えば初期アルゴリズム(例えば、LOF)が設定されて、その後にアルゴリズムの処理時間が閾値を超えると、初期アルゴリズムは、機械学習処理に占める処理時間が小さい他のアルゴリズム(例えば、iForest)に切替えることができる。
【0141】
なお、変数thresholdの値は、例えばプライマリ周期71に基づく時間であって、たとえばプライマリ周期71の整数倍の値を含み得る。これにより、FB1210またはFB1211の出力変数WarningLevel0またはWarningLevelの判定結果170を、プライマリ周期71に同期した適時のタイミングで制御処理73のタスクに提供することができる。
【0142】
(g2:判定結果に応じたアルゴリズムの変更)
図14は、本実施の形態にかかる異常検知処理のユーザプログラムの他の例を模式的に示す図である。より具体的には、
図14のユーザプログラムは、スコアに基づく判定結果170(正常、異常、故障など)に基づく条件に応じて、機械学習処理に用いるアルゴリズムを切替える処理を示す。
図14のユーザプログラムも、
図13と同様に、
図12で示したFBを含んだファンクションブロックダイアグラムにより記述され得る。
【0143】
図14を参照して、ユーザプログラムは、フレームに同期して異常検知の処理開始を検出するステップS1、異常検知処理の初期設定を実施するステップS2a、異常検知処理の判定結果170を示す変数WarningLevel(WarningLeve0またはWarningLeve1)の値と閾値「1」との比較を実施するステップS3a、および当該比較の結果に応じてアルゴリズムの変更を実施するステップS4aとを含む。ステップS2aおよびS4aは、機械学習処理部144および結果判定部146の処理に相当し、ステップS3aは切替条件判定部142の処理に相当する。本実施の形態では、フレームに同期してステップS1~S4aが繰り返し実行されることで、異常検知処理が繰り返し実施される。
【0144】
まず、ステップS1では、フレーム開始に同期して異常検知処理の開始の可否が判断される。この処理は、
図13のステップS1の処理と同様なので説明は切り返さない。
【0145】
次のステップS2aの処理設定処理では、機械学習処理のFB1211が実行される。FB1211は
図13のFB1211と同様の機能を提供するので説明は繰り返さない。ステップS2aの初期設定処理が実施されることにより、変数algorithmの値「1」に対応する例えばアルゴリズムiForestが実行されて、算出されたスコアに基づく判定結果170を示す値が変数WarningLevel0に設定され、アルゴリズムの処理時間が変数Time0に設定され、また変数Done0にステップS2aの機械学習処理の完了を示す値「True」が設定される。
【0146】
次のステップS3aでは、変数WarningLevel(
図14の場合は、変数WarningLevel0または変数WarningLeve1)に設定された値(正常「0」、異常「1」、故障「2」)と閾値「1」とを比較するファンクションブロックLT_instanceが実行される。ファンクションブロックLT_instanceは、変数SettingTriggerに「True」が設定されたとき、すなわちフレームの開始時に、変数WarningLevelの値と閾値「1」どうしを比較し、比較の結果を変数CompareResultに設定する。ファンクションブロックLT_instanceは、変数CompareResultに、変数WarningLevelの値が閾値「1」を超えたときは、すなわち判定結果170が「故障」を示すときは変数CompareResultに「True」を設定し、閾値未満であるときは、すなわち判定結果170が「正常」または「故障」を示すときは変数CompareResultに「False」を設定する。
【0147】
次のステップS4aでは、機械学習処理のFB1210が実行される。FB1210は
図13のFB1210と同様の機能を提供するので説明は繰り返さない。ステップS4aでは、ステップS3aにおいて変数CompareResultに「True」が設定されたとき、すなわち初期設定処理(ステップS2)で設定されたアルゴリズム(例えば、iForest)による異常検知の判定結果170が「故障」を示すときにFB1210は実行される。実行されると、FB1210は、入力変数Algorithmの値「0」で指定されるアルゴリズム(例えば、LFO)を実行する機械学習処理を実施する。ステップS4aにおけるFB1210の機械学習処理が完了すると、当該フレームにおいて取得されたスコア154に基づく判定結果170を示す値が変数WarningLevel1に設定され、アルゴリズムの処理時間が変数Time1に設定され、また変数Done0に機械学習処理の完了を示す値「True」が設定される。
【0148】
このような
図14の異常検知処理のユーザプログラムが実行されることにより、機械学習処理のためのアルゴリズムとして、例えば初期アルゴリズム(例えば、iForest)が設定されて、その後に判定結果170が閾値(例えば「異常」の値)を超えると、初期アルゴリズムを、より精度の高い他のアルゴリズム(例えば、LOF)に切替えることができる。
【0149】
(g3:生産工程の切替えに応じたアルゴリズムの変更)
図15は、本実施の形態にかかる異常検知処理のユーザプログラムのさらなる他の例を模式的に示す図である。具体的には、
図15のユーザプログラムは、生産工程の切替えに基づく条件に応じて、機械学習処理に用いるアルゴリズムを切替える処理を示す。
図15のユーザプログラムも、
図13または
図14と同様に、
図12で示したFBを含んだファンクションブロックダイアグラムにより記述され得る。ここでは、生産工程は例えば工程Aと工程Bを含み、工程A→工程Bと切り替えられるケースを説明する。
【0150】
図15を参照して、ユーザプログラムは、工程Aリセット処理を実施するステップS1a、工程Aのための異常検知処理を実施するステップS2b、工程Aの実施の開始を検出するステップS3b、工程Bのための異常検知処理を実施するステップS4b、および工程Bの実施の開始を検出するステップS3cを含む。ステップS2bおよびS4bは、機械学習処理部144および結果判定部146の処理に相当し、ステップS3bおよびS3cは切替条件判定部142の処理に相当する。
【0151】
まず、ステップS1aでは、工程Aへの切替のトリガ変数ChangeTriggerに「True」が設定されて、変数Busy0に「False」が設定されている場合、ファンクションブロックRS_instanceが実行される。これにより、工程Aへの切替を許可する変数SettingTrigger0に「True」が設定される。
【0152】
次に、ステップS3bにおいて、変数SettingTrigger0に「True」が設定されて、且つ工程Aの開始を指示する変数PAに「True」が設定されたことが判定されると、すなわち生産工程Aへの切替の条件が満たされたことが判定されると、判定結果「True」がステップS2bのFB1210の入力変数Executeに設定される。
【0153】
ステップS2bでは、FB1210が実行される。ステップS2bにおけるFB1210は、入力変数Algorithmの値「0」で指定されるアルゴリズム(例えば、LOF)を実行して機械学習処理を実施する。ステップS2bにおいては、
図13または
図14で示したFB1210と同様な処理が実行されるので、説明は繰り返さない。その後、工程Aの処理が実行される。
【0154】
また、工程Aから工程Bに切り替えるために、工程Bの図示しないリセット処理が、ステップS1aと同様に実施される。工程Bのリセット処理により、工程Bへの切替を許可する変数SettingTrigger1に「True」が設定される。
【0155】
次に、ステップS3cにおいて、変数SettingTrigger1に「True」が設定されて、且つ工程Bの開始を指示する変数PBに「True」が設定されたことが判定されると、すなわち生産工程Bへの切替の条件が満たされたことが判定されると、判定結果「True」がステップS4bのFB1211の入力変数Executeに設定される。
【0156】
ステップS4bでは、FB1211が実行される。ステップS4bにおけるFB1211は、入力変数Algorithmの値「1」で指定されるアルゴリズム(例えば、iForest)を実行して機械学習処理を実施する。ステップS4bでは、
図13または
図14で示したFB1211と同様に実行されるので、説明は繰り返さない。その後は、工程Bの処理が実行される。
【0157】
このような
図15の異常検知処理のユーザプログラムが実行されることにより、工程が切替えられる毎に、切替後の工程に応じた機械学習処理のためのアルゴリズムに切替えることができる。
【0158】
本実施の形態では、アルゴリズムが切り替えられるとしても、学習モデル152はアルゴリズム間で共通して用いられる。すなわち、学習モデル152を切替後のアルゴリズムに引継ぐことができるので、生産現場にアルゴリズムの切替えシステムを容易に導入することができる。
【0159】
<H.判定条件の切替え>
本実施の形態では、
図16のように、学習モデル152の空間でアルゴリズムに応じて判定条件156の閾値を変更することも可能である。
【0160】
図16は、本実施の形態にかかる判定条件の切替えを説明する図である。
図16は、学習モデル152が構成する、特定のクラス(例えば、正常や異常)がラベル付けされた特徴量からなる空間を模式的に示す。
図16の空間は、例えば、2種類の特徴量1と特徴量2で規定された2次元空間である。
図16の学習モデル152が正常時の特徴量からなるとすれば、スコア154は、監視対象に何らかの異常が発生している可能性を示す値を意味することになる。
【0161】
図16では、正常と異常を判定する判定条件156の閾値として、例えば2種類の閾値TH1とTH2を示している。本実施の形態では、判定条件156として適用する閾値を機械学習処理部144に用いるアルゴリズムに応じて切り替える構成を採用することができる。
【0162】
具体的には、結果判定部146は、例えば機械学習処理部144においてアルゴリズムLOFが実行されるときは、閾値TH1とTH2のうちの一方を有効(結果判定に用いる閾値)とし、他方を無効(結果判定に用いない閾値)とし、機械学習処理部144においてアルゴリズムiForestが実行されるときは、閾値TH1とTH2のうちの一方を無効とし、他方を有効とする。
【0163】
図16によれば、判定条件156の閾値を変更することにより、同じスコア154であっても閾値を超える、すなわち異常または警報側に判定されるケースを増加させることができる。逆に、同じスコアであっても閾値を超えない、すなわち異常または警報側に判定されるケースを少なくすることができる。
【0164】
したがって、例えば、上記の(g2:判定結果に応じたアルゴリズムの変更)を、
図16の判定条件156の閾値の変更と組合せて実施することで、変数Warninglevel0またはWarninglevel1が閾値「1」を超える頻度を高くする、すなわち、アルゴリズムLOFに切替えられる頻度を高くして、より厳格な異常検知を実施させることが可能となる。
【0165】
<I.フローチャート>
図17は、本実施の形態にかかる異常検知のプロセスの一例を示すフローチャートである。本実施形態において、
図17に示すプロセスは、
図1~
図3および
図5に示された装置を用いて実施することができる。
【0166】
フローチャートに示されたプロセスは、1つ以上の処理ユニット(例えば、プロセッサ102)、ハードウェア、またはそれらの組み合わせによって実行されるソフトウェア(例えば、コード、命令、プログラム)により実施されてもよい。ソフトウェアは、(例えば、二次記憶装置108等の各種記憶装置または非一時的なコンピュータ読取可能な記憶媒体116等の上の)メモリに保存されてもよい。また、フローチャートの一連の処理ステップは、限定されるものではなく、他の一連のステップと組み合わせて実行することもできる。例えば、本実施形態では、
図17に示された各ステップは、複数のサブステップを含み、これらの複数のサブステップは、各ステップに応じてさまざまな順序で実行されてもよい。
【0167】
プロセッサ102は、
図17のプロセスを実行する。プロセスが実行されると、特徴抽出工程(1)、機械学習処理工程(2)、結果判定工程(3)および切替工程(4)を実行する。
【0168】
特徴抽出工程(1)において、プロセッサ102は、フィールド装置群10の制御対象に含まれる監視対象から取得された1または複数の状態値から1または複数の特徴量を算出する。機械学習処理工程(2)において、プロセッサ102は、学習モデル152を参照して、特徴抽出工程(1)において算出される1または複数の特徴量に基づいて、監視対象に何らかの異常が発生している可能性を示す値であるスコア154を算出する複数種類のアルゴリズムのうちの1つを実行する。結果判定工程(3)において、プロセッサ102は、機械学習処理工程(2)において算出されるスコア154に基づいて、監視対象に何らかの異常が発生しているか否かを示す判定結果170を生成する。また、切替工程(4)において、プロセッサ102は、機械学習処理工程(2)において実行される1つのアルゴリズムを、予め定められた条件に応じて切替える。
【0169】
また、
図17のフローチャートの一連の処理ステップの順序は限定されるものではない。例えば、
図17では、切替工程(4)は、特徴抽出工程(1)と並行して実行されるが、実行順序は並行に限定されない。すなわち、切替工程(4)は、機械学習処理工程(2)で実行されるアルゴリズムの切替えに先行する順序で実行されればよい。
【0170】
<J.プログラム>
本実施の形態の
図2および
図5に示した各部は、プロセッサ102が必要なプログラムを実行することによって、
図17に示すステップを含む異常検知処理を実行してもよい。また、
図13~
図15に示したユーザプログラムも、プロセッサ102により実行され得る。プロセッサ102が備えるCPU(Central Processing Unit)等は、プログラムを実行することにより、制御装置100の各構成要素を制御する。二次記憶装置108は、プロセッサ102で実行されるこれらプログラムを記憶する。記憶媒体116は、コンピュータその他装置、機械等が記録されたプログラム等の情報を読み取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的または化学的作用によって蓄積する媒体である。プロセッサ102は、この記憶媒体116から、上記に述べたプログラムを取得してもよい。また、プログラムは、ローカルネットワーク6またはサポート装置200からダウンロードによって、制御装置100に提供することもできる。
【0171】
<K.変形例>
本実施の形態では、切替条件判定部142が切替条件を判定し、切替指示を機械学習処理部144に出力したが、切替指示は、ユーザ操作により入力されてもよい。たとえば、サポート装置200の表示部218に変数timeまたは変数Warninglevelを表示して、ユーザが入力部216を操作することにより、切替指示をサポート装置200から機械学習処理部144に入力する構成としてもよい。
【0172】
<L.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
[構成1]
生産工程に配置される制御対象を制御する制御装置(100)であって、
制御対象に含まれる監視対象(10)から取得された1または複数の状態値から1または複数の特徴量を算出する特徴抽出部(141)と、
学習モデル(152)を参照して、前記特徴抽出部により算出される1または複数の特徴量に基づいて、前記監視対象に何らかの異常が発生している可能性を示す値であるスコア(154)を算出する複数種類のアルゴリズムのうちの1つを実行する処理部(144)と、
前記処理部により算出されるスコア(154)に基づいて、前記監視対象に何らかの異常が発生しているか否かを示す判定結果(170)を生成する判定部(146]と、
前記処理部により実行される前記1つのアルゴリズムを、予め定められた条件に応じて切替える切替部(142)と、を備える、制御装置。
[構成2]
前記予め定められた条件は、前記処理部による前記1つのアルゴリズムの処理時間に基づく条件を含む、構成1に記載の制御装置。
[構成3]
前記予め定められた条件は、前記処理部による前記1つのアルゴリズムの処理時間および前記判定部による前記スコアに基づき前記判定結果を生成する処理にかかる処理時間に基づく条件を含む、構成1または2に記載の制御装置。
[構成4]
前記予め定められた条件は、前記判定部により生成される判定結果に基づく条件を含む、構成1から3のいずれか1に記載の制御装置。
[構成5]
前記予め定められた条件は、生産工程の切替えに基づく条件を含む、構成1から4のいずれか1に記載の制御装置。
[構成6]
前記学習モデルは、前記複数種類のアルゴリズムに共通して適用される、構成1から4のいずれか1に記載の制御装置。
[構成7]
前記学習モデルは、前記監視対象から取得されるデータから生成されかつ1以上の要素によって定義される特徴量の集合体(sa,sb)であり、
前記制御装置は、さらに、
前記スコアの算出に用いる当該特徴量の集合体における範囲に関するパラメータ(第2パラメータ)を、切替え後のアルゴリズムに引き継ぐ、構成1から6のいずれか1に記載の制御装置。
[構成8]
前記複数のアルゴリズムは、それぞれ、前記アルゴリズムの処理時間または算出される前記スコアの確度が異なる、構成1から7のいずれか1に記載の制御装置。
[構成9]
前記制御対象のリアルタイム制御を実施するための制御タスクおよび、前記リアルタイム制御に関連する関連処理を実施するための関連処理タスクを含む複数のタスクを実行するマルチタスク実行部(159)を、さらに備え、
前記マルチタスク実行部は、前記制御タスクを予め定められた周期(71)で繰り返し実行し、
前記マルチタスク実行部は、前記制御タスクおいて前記判定部による判定処理を実行し、前記関連処理タスクにおいて前記処理部による前記スコアの算出を実行し、
前記アルゴリズムの処理時間に基づく条件は、当該処理時間が前記予め定められた周期(71)に基づいた時間を超えるとの条件を含む、構成2または3に記載の制御装置。
[構成10]
プロセッサ(102)に、生産工程に配置される制御対象を制御する制御方法を実行させるためのプログラムであって、
前記制御方法は、
前記制御対象に含まれる監視対象から取得された1または複数の状態値から1または複数の特徴量を算出するステップと、
学習モデルを参照して、算出される前記1または複数の特徴量に基づいて、前記監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出する複数種類のアルゴリズムのうちの1つを実行するステップと、
算出される前記スコアに基づいて、前記監視対象に何らかの異常が発生しているか否かを示す判定結果を生成するステップと、
前記実行するステップにおいて実行される前記1つのアルゴリズムを、予め定められた条件に応じて切替えるステップと、を備える、プログラム。
【符号の説明】
【0173】
1 異常検知システム、100 制御装置、140 データセット生成部、141 特徴抽出部、142 切替条件判定部、143 スコア算出部、144 機械学習処理部、145 学習モデル生成部、146 結果判定部、152 学習モデル、154 スコア、156 判定条件、157 判定条件管理部、158 設定情報、159 マルチタスク実行部、160 変数管理部、162 デバイス変数、170 判定結果、200 サポート装、250 データマイニングツール、260 設定ツール、300 上位サーバ、400 表示装置、LOF,iForest アルゴリズム。