(57)【要約】【課題】制御装置での制御対象からの状態値の収集から異常検知処理まで一貫して処理するための機構を提供する。【解決手段】制御装置は、制御対象に生じる状態値で制御周期毎に内部状態値を更新する管理部と、第１の内部状態値の値に応じて決定される単位区間毎に、第２の内部状態値の変化から特徴量を算出する特徴量抽出部と、特徴量に基づいて制御対象に含まれる監視対象に何らかの異常が発生しているか否かを示す検知結果を生成する異常検知部を含む。特徴量抽出部および異常検知部は、対応する単位区間を決定した第１の内部状態値の値を対応付けて出力する。【選択図】図２
2020067786.tif 000002
【特許請求の範囲】
【請求項１】
制御対象に生じる状態値を予め定められた制御周期毎に取得して内部保持される内部状態値を更新する管理部と、
予め定められた第１の内部状態値の値に応じて決定される単位区間毎に、当該単位区間内に生じた予め定められた第２の内部状態値の変化から特徴量を算出する特徴量抽出部とを備え、前記特徴量抽出部は、前記算出した特徴量に、対応する単位区間を決定した前記第１の内部状態値の値を対応付けて出力し、
前記特徴量抽出部により算出される前記特徴量に基づいて、前記制御対象に含まれる監視対象に何らかの異常が発生しているか否かを示す検知結果を生成する異常検知部を備え、前記異常検知部は、生成した検知結果に、当該検知結果の生成に用いた特徴量に対応付けられていた前記第１の内部状態値の値を対応付けて出力する、制御装置。
【請求項２】
前記異常検知部には、前記特徴量抽出部が出力する前記第１の内部状態値の値が入力される、請求項１に記載の制御装置。
【請求項３】
前記特徴量抽出部は、前記第１の内部状態値として任意の内部状態値の指定を受け付ける、請求項１または２に記載の制御装置。
【請求項４】
前記特徴量抽出部は、前記第１の内部状態値が同一の値を示す区間を前記単位区間として決定する、請求項１〜３のいずれか１項に記載の制御装置。
【請求項５】
前記特徴量抽出部は、単位区間毎に、当該単位区間において予め定められた第３の内部状態値が予め定められた値を示す部分区間における前記第２の内部状態値の変化から前記特徴量を算出する、請求項１〜４のいずれか１項に記載の制御装置。
【請求項６】
前記異常検知部は、予め用意された学習データを参照して、前記特徴量から前記監視対象に何らかの異常が発生している可能性を示す値を算出する、請求項１〜５のいずれか１項に記載の制御装置。
【請求項７】
前記学習データは、正常である場合に得られる特徴量の群を含み、
前記異常検知部は、前記学習データに含まれる特徴量群に対する前記特徴量の外れ度合いに基づいて、前記監視対象に何らかの異常が発生している可能性を示す値を算出する、請求項６に記載の制御装置。
【請求項８】
前記異常検知部は、前記監視対象に何らかの異常が発生している可能性を示す値が予め定められたしきい範囲内であるか否かに基づいて、前記監視対象での異常発生の有無を示す検知結果を生成する、請求項６または７に記載の制御装置。
【請求項９】
前記第１の内部状態値の値を対応付けた特徴量の時系列データ、および、前記第１の内部状態値の値を対応付けた検知結果の時系列データの少なくとも一方を格納する格納部をさらに備える、請求項１〜８のいずれか１項に記載の制御装置。
【請求項１０】
前記管理部は、前記特徴量抽出部および前記異常検知部での演算結果を、前記制御装置で実行されるプログラムで参照可能な内部状態値としてさらに内部保持する、請求項１〜９のいずれか１項に記載の制御装置。
【請求項１１】
制御装置で実行される制御プログラムであって、前記制御プログラムは前記制御装置に、
制御対象に生じる状態値を予め定められた制御周期毎に取得して内部保持される内部状態値を更新するステップと、
予め定められた第１の内部状態値の値に応じて決定される単位区間毎に、当該単位区間内に生じた予め定められた第２の内部状態値の変化から特徴量を算出するステップと、
前記算出した特徴量に、対応する単位区間を決定した前記第１の内部状態値の値を対応付けて出力するステップと、
前記特徴量抽出部により算出される前記特徴量に基づいて、前記制御対象に含まれる監視対象に何らかの異常が発生しているか否かを示す検知結果を生成するステップと、
前記生成した検知結果に、当該検知結果の生成に用いた特徴量に対応付けられていた前記第１の内部状態値の値を対応付けて出力するステップとを実行させる、制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、監視対象に発生し得る何らかの異常を検知可能な制御装置およびその制御装置を実現するための制御プログラムに関する。
【背景技術】
【０００２】
様々な生産現場において、機械や装置に対する予知保全により設備稼働率を向上させたいというニーズが存在する。予知保全とは、機械や装置に生じる何らかの異常を検知して、設備を停止しなければ状態になる前に、整備や交換などの保守作業を行うような保全形態を意味する。
【０００３】
予知保全を実現するために、機械や装置の状態値を収集するとともに、収集された状態値に基づいて、当該機械や装置に何らかの異常が生じているか否かを判断するような仕組みが必要となる。
【０００４】
このような予知保全を実現するためには、機械や装置から得られる複数の時系列データを処理する必要がある。従来の一般的な構成においては、例えば、特開２０１２−２４３１９２号公報（特許文献１）に示されるように、従来の構成においては、複数の時系列データは、上位のデータロガーなどに集約されて、時刻情報などに基づいて統合されることになる。
【０００５】
このようなデータロガーシステムは、データ収集サイクルが比較的長く、かつ、実際にデータを収集してから集約されるまでに比較的長い時間を要する。このような構成を用いて異常監視を行うとすると、監視対象の機械や装置で生じる何らかの異常を検知するまでの遅延時間を短縮できない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−２４３１９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
そこで、機械や装置などの制御対象を制御する制御装置で異常検知処理を実現することで異常を検知するための遅延時間を短縮できる可能性があるが、異常検知を実現するためには、複数の制御サイクルに亘るデータを用いる必要があるとともに、制御装置での処理遅延なども発生する。
【０００８】
そのため、制御装置での制御対象からの状態値の収集から異常検知処理まで一貫して処理するための機構が必要となる。本発明の一つの目的は、このような要求を満たすことである。
【課題を解決するための手段】
【０００９】
本発明の一例に従う制御装置は、制御対象に生じる状態値を予め定められた制御周期毎に取得して内部保持される内部状態値を更新する管理部と、予め定められた第１の内部状態値の値に応じて決定される単位区間毎に、当該単位区間内に生じた予め定められた第２の内部状態値の変化から特徴量を算出する特徴量抽出部とを含む。特徴量抽出部は、算出した特徴量に、対応する単位区間を決定した第１の内部状態値の値を対応付けて出力する。制御装置は、さらに特徴量抽出部により算出される特徴量に基づいて、制御対象に含まれる監視対象に何らかの異常が発生しているか否かを示す検知結果を生成する異常検知部を含む。異常検知部は、生成した検知結果に、当該検知結果の生成に用いた特徴量に対応付けられていた第１の内部状態値の値を対応付けて出力する。
【００１０】
本構成によれば、特徴量抽出部により算出される特徴量、および、異常検知部により生成される検知結果のいずれに対しても、対象となった第２の内部状態値の単位区間を特定するための第１の内部状態値の値が対応付けられるので、内部状態値の入力、特徴量の算出、および検知結果の出力までの間で一貫性を確保できる。
【００１１】
異常検知部には、特徴量抽出部が出力する第１の内部状態値の値が入力されるようにしてもよい。本構成によれば、特徴量抽出部の出力と異常検知部の入力との連続性を確保することで、処理の一貫性を確実に確保できる。
【００１２】
特徴量抽出部は、第１の内部状態値として任意の内部状態値の指定を受け付けるようにしてもよい。本構成によれば、ユーザが制御対象に含まれる監視対象に応じた第１の内部状態値を用いて、最適な単位区間を任意に設定できる。
【００１３】
特徴量抽出部は、第１の内部状態値が同一の値を示す区間を単位区間として決定するようにしてもよい。本構成によれば、第１の内部状態値が変化しない区間を単位区間として容易に設定できる。
【００１４】
特徴量抽出部は、単位区間毎に、当該単位区間において予め定められた第３の内部状態値が予め定められた値を示す部分区間における第２の内部状態値の変化から特徴量を算出するようにしてもよい。本構成によれば、第１の内部状態値の値に応じて決定される単位区間のうち、部分的な区間から特徴量を算出して、異常検知処理を実行できる。
【００１５】
異常検知部は、予め用意された学習データを参照して、特徴量から監視対象に何らかの異常が発生している可能性を示す値を算出するようにしてもよい。本構成によれば、監視対象に異常が発生している可能性を定量的に評価できる。
【００１６】
異常検知部は、監視対象に何らかの異常が発生している可能性を示す値が予め定められたしきい範囲内であるか否かに基づいて、監視対象での異常発生の有無を示す検知結果を生成するようにしてもよい。本構成によれば、監視対象での異常発生の有無を定量的に判定できる。
【００１７】
学習データは、正常である場合に得られる特徴量の群を含み、異常検知部は、学習データに含まれる特徴量群に対する特徴量の外れ度合いに基づいて、監視対象に何らかの異常が発生している可能性を示す値を算出するようにしてもよい。本構成によれば、正常の状態からの乖離度合いに応じて、監視対象に異常が発生している可能性を定量的に評価できる。
【００１８】
制御装置は、第１の内部状態値の値を対応付けた特徴量の時系列データ、および、第１の内部状態値の値を対応付けた検知結果の時系列データの少なくとも一方を格納する格納部をさらに含むようにしてもよい。本構成によれば、制御装置の内部で算出される各種情報の保存、および、外部装置などへの出力を容易化できる。
【００１９】
管理部は、特徴量抽出部および異常検知部での演算結果を、制御装置で実行されるプログラムで参照可能な内部状態値としてさらに内部保持するようにしてもよい。本構成によれば、制御装置で実行されるプログラムで特徴量抽出部および異常検知部での演算結果を参照することで、異常検知に関連する処理を適切に実行できる。
【００２０】
本発明の別の一例に従えば、制御装置で実行される制御プログラムが提供される。制御プログラムは制御装置に、制御対象に生じる状態値を予め定められた制御周期毎に取得して内部保持される内部状態値を更新するステップと、予め定められた第１の内部状態値の値に応じて決定される単位区間毎に、当該単位区間内に生じた予め定められた第２の内部状態値の変化から特徴量を算出するステップと、算出した特徴量に、対応する単位区間を決定した第１の内部状態値の値を対応付けて出力するステップと、特徴量抽出部により算出される特徴量に基づいて、制御対象に含まれる監視対象に何らかの異常が発生しているか否かを示す検知結果を生成するステップと、生成した検知結果に、当該検知結果の生成に用いた特徴量に対応付けられていた第１の内部状態値の値を対応付けて出力するステップとを実行させる。
【００２１】
本構成によれば、算出される特徴量、および、生成される検知結果のいずれに対しても、対象となった第２の内部状態値の単位区間を特定するための第１の内部状態値の値が対応付けられるので、内部状態値の入力、特徴量の算出、および検知結果の出力までの間で一貫性を確保できる。
【発明の効果】
【００２２】
本発明によれば、制御対象からの状態値の取得から異常検知処理まで一貫して処理できる。
【図面の簡単な説明】
【００２３】
【図１】本実施の形態に従う異常検知システムの全体構成例を示す模式図である。
【図２】本実施の形態に従う異常検知システムの制御装置における異常検知処理に係る主要部を示す模式図である。
【図３】本実施の形態に従う異常検知システムを構成する制御装置のハードウェア構成例を示すブロック図である。
【図４】本実施の形態に従う異常検知システムを構成するサポート装置のハードウェア構成例を示すブロック図である。
【図５】本実施の形態に従う異常検知システムのソフトウェア構成例を示すブロック図である。
【図６】本実施の形態に従う異常検知システムの制御装置における制御処理の実行タイミングを示す模式図である。
【図７】本実施の形態に従う異常検知システムにおける異常検知処理に用いられる変数の関係を示す模式図である。
【図８】本実施の形態に従う異常検知システムの制御装置におけるフレーム管理に係る処理を説明するためのタイムチャートである。
【図９】図８に示されるサブフレームを説明するためのタイムチャートである。
【図１０】本実施の形態に従う異常検知システムの制御装置の内部ＤＢに格納されるデータ構造の一例を説明するための図である。
【図１１】図１０に示されるそれぞれの時系列データを結合した時系列データの一例を示す図である。
【図１２】本実施の形態に従う異常検知システムにおける処理手順を示すフローチャートである。
【発明を実施するための形態】
【００２４】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２５】
＜Ａ．適用例＞
まず、本発明が適用される場面の一例について説明する。
【００２６】
本実施の形態に従う異常検知処理を実行可能な制御システムの機能的な構成例について説明する。以下の説明においては、主として、制御システムが有している異常検知処理に注目して説明するので、制御システム全体を「異常検知システム」とも称する。
【００２７】
まず、本実施の形態に従う異常検知システム１の全体構成例について説明する。
図１は、本実施の形態に従う異常検知システム１の全体構成例を示す模式図である。図１を参照して、異常検知システム１は、主たる構成要素として、制御対象を制御する制御装置１００と、制御装置１００に接続され得るサポート装置２００とを含む。異常検知システム１は、オプショナルな構成として、上位サーバ５００および表示装置４００をさらに含んでいてもよい。
【００２８】
制御装置１００は、制御対象に含まれる監視対象に何らかの異常が発生しているか否かを示す検知結果を生成する。制御装置１００は、ＰＬＣ（プログラマブルコントローラ）などの、一種のコンピュータとして具現化されてもよい。
【００２９】
より具体的には、制御装置１００は、第１フィールドバス２を介してフィールド装置群１０と接続されるとともに、第２フィールドバス４を介して１または複数の表示装置４００と接続される。さらに、制御装置１００は、ローカルネットワーク６を介して上位サーバ５００に接続される。制御装置１００は、それぞれのネットワークを介して、接続された装置との間でデータを遣り取りする。
【００３０】
制御装置１００は、設備や機械を制御するための各種演算を実行する制御演算実行エンジンを有している。制御演算実行エンジンに加えて、制御装置１００は、フィールド装置群１０にて取得され、制御装置１００へ転送されるデータ（以下、「入力値」とも称す。）を取得する取得機能を有している。さらに、制御装置１００は、取得した入力値などに基づいて、制御対象における異常発生の有無を判断する監視機能も有している。これらの機能が制御装置１００に実装されることで、制御対象で生じる異常をより短い周期で監視できる。
【００３１】
このような異常検知の機能に関して、制御装置１００に実装される異常検知エンジン１４０が監視機能を提供し、制御装置１００内に実装される内部データベース（以下、「内部ＤＢ」とも記す。）１３０が各種データの格納機能を提供する。内部ＤＢ１３０および異常検知エンジン１４０の詳細については後述する。
【００３２】
本明細書において、「状態値」は、任意の制御対象（含む：監視対象）にて観測できる値を包含する用語であり、例えば、任意のセンサにより測定できる物理値や、リレーやスイッチなどのＯＮ／ＯＦＦ状態、ＰＬＣがサーボドライバに与える位置、速度、トルクなどの指令値、ＰＬＣが演算に用いる変数値などを含み得る。
【００３３】
第１フィールドバス２および第２フィールドバス４としては、データの到達時間が保証される、定周期通信を行うネットワークを採用することが好ましい。このような定周期通信を行うネットワークとしては、ＥｔｈｅｒＣＡＴ（登録商標）などが知られている。
【００３４】
フィールド装置群１０は、制御対象または制御に関連する製造装置や生産ラインなど（以下、「フィールド」とも総称する。）の状態値を入力値として収集する装置を含む。このような状態値を取得する装置としては、入力リレーや各種センサなどが想定される。フィールド装置群１０は、さらに、制御装置１００にて生成される指令値（以下、「出力値」とも称す。）に基づいて、フィールドに対して何らかの作用を与える装置を含む。このようなフィールドに対して何らかの作用を与える装置としては、出力リレー、コンタクタ、サーボドライバおよびサーボモータ、その他任意のアクチュエータが想定される。これらのフィールド装置群１０は、第１フィールドバス２を介して、制御装置１００との間で、入力値および出力値を含むデータを遣り取りする。
【００３５】
図１に示す構成例においては、フィールド装置群１０は、リモートＩ／Ｏ（Input/Output）装置１２と、リレー群１４と、画像センサ１８およびカメラ２０と、サーボドライバ２２およびサーボモータ２４とを含む。
【００３６】
リモートＩ／Ｏ装置１２は、第１フィールドバス２を介して通信を行う通信部と、入力値の取得および出力値の出力を行うための入出力部（以下、「Ｉ／Ｏユニット」とも称す。）とを含む。このようなＩ／Ｏユニットを介して、制御装置１００とフィールドとの間で入力値および出力値が遣り取りされる。図１には、リレー群１４を介して、入力値および出力値として、デジタル信号が遣り取りされる例が示されている。
【００３７】
Ｉ／Ｏユニットは、フィールドバスに直接接続されるようにしてもよい。図１には、第１フィールドバス２にＩ／Ｏユニット１６が直接接続されている例を示す。
【００３８】
画像センサ１８は、カメラ２０によって撮像された画像データに対して、パターンマッチングなどの画像計測処理を行って、その処理結果を制御装置１００へ送信する。
【００３９】
サーボドライバ２２は、制御装置１００からの出力値（例えば、位置指令など）に従って、サーボモータ２４を駆動する。
【００４０】
上述のように、第１フィールドバス２を介して、制御装置１００とフィールド装置群１０との間でデータが遣り取りされることになるが、これらの遣り取りされるデータは、数百μｓｅｃオーダ〜数十ｍｓｅｃオーダのごく短い周期で更新されることになる。なお、このような遣り取りされるデータの更新処理を、「Ｉ／Ｏリフレッシュ処理」と称することもある。
【００４１】
サポート装置２００は、制御装置１００が制御対象を制御するために必要な準備を支援する装置である。具体的には、サポート装置２００は、制御装置１００で実行されるプログラムの開発環境（プログラム作成編集ツール、パーサ、コンパイラなど）、制御装置１００および制御装置１００に接続される各種デバイスのパラメータ（コンフィギュレーション）を設定するための設定環境、生成したユーザプログラムを制御装置１００へ送信する機能、制御装置１００上で実行されるユーザプログラムなどをオンラインで修正・変更する機能、などを提供する。
【００４２】
さらに、サポート装置２００は、制御装置１００に実装される異常検知エンジン１４０による異常検知処理を定義するパラメータ２５６および学習データ２５２（詳細は後述する）を設定する機能なども提供する。
【００４３】
表示装置４００は、第２フィールドバス４を介して制御装置１００と接続され、ユーザからの操作を受けて、制御装置１００に対してユーザ操作に応じたコマンドなどを送信するとともに、制御装置１００での処理結果などをグラフィカルに表示する。
【００４４】
上位サーバ５００は、制御装置１００とローカルネットワーク６を介して接続され、制御装置１００との間で必要なデータを遣り取りする。上位サーバ５００は、例えば、データベース機能を有しており、制御装置１００の内部ＤＢ１３０に格納されるデータを定期的またはイベント的に収集する。ローカルネットワーク６には、イーサネット（登録商標）などの汎用プロトコルが実装されてもよい。
【００４５】
次に、実施の形態に従う異常検知処理においては、制御対象に含まれる監視対象に何らかの異常が発生しているかを判断する単位区間として「フレーム」という概念を導入する。このように、本明細書において、「フレーム」は、監視対象に何らかの異常が発生しているか否かを判断する単位区間を意味する。すなわち、監視対象に何らかの異常が発生しているか否かを判断は、「フレーム」毎に行われることになる。本実施の形態においては、「フレーム」は、ユーザが任意に設定する状態値に基づいて決定されるようにしてもよい。
【００４６】
図２は、本実施の形態に従う異常検知システム１の制御装置１００における異常検知処理に係る主要部を示す模式図である。図２を参照して、制御装置１００は、制御装置１００は、管理部に相当する変数管理部１５０と、特徴量抽出部１４２と、異常検知部に相当する異常検知エンジン１４０とを含む。
【００４７】
変数管理部１５０は、機械や装置などの制御対象に生じる状態値を予め定められた制御周期毎に取得して内部保持される内部状態値を更新する。
【００４８】
本実施の形態に従う制御装置１００においては、制御対象から取得される状態値（入力値）、制御対象へ与えられる指令値（出力値）、ならびに、制御装置１００での演算処理または制御装置１００の状態管理に用いられるデータあるいは値（「内部状態値」にすべて包含される）のいずれについても、「変数」の形で参照する形態を採用する。そのため、以下の説明においては、制御装置１００において利用可能な「内部状態値」を「変数値」と表現することもある。そして、機械や装置などの制御対象に生じる状態値を示す内部状態値の集合を「デバイス変数」と表現する。すなわち、変数管理部１５０は、機械や装置などの制御対象に生じる状態値を予め定められた制御周期毎に取得してデバイス変数１５４の値を更新する。
【００４９】
なお、本発明は「変数」を用いて値を参照する形態に限られることなく、各値を格納するメモリの物理アドレスなどを直接指定して参照するような形態などにも適用可能である。
【００５０】
特徴量抽出部１４２は、予め定められたフレーム変数（デバイス変数１５４に含まれるいずれかの変数；「第１の内部状態値」に相当）の値に応じて単位区間（フレーム）を決定する。そして、特徴量抽出部１４２は、決定される単位区間（フレーム）毎に、当該単位区間内に生じた予め定められたサンプリング変数（デバイス変数１５４に含まれるいずれかの変数；「第２の内部状態値」に相当）の変化から特徴量を算出する。特徴量抽出部１４２は、予め定められたサンプリング変数のフレーム毎の変化から、予め定められた処理に従って特徴量（例えば、所定時間に亘る平均値、最大値、最小値など）を順次算出する。
【００５１】
このように、特徴量抽出部１４２は、予め定められたフレーム変数（第１の内部状態値）の値に応じて決定される単位区間（フレーム）毎に、当該単位区間内に生じた予め定められたサンプリング変数（第２の内部状態値）の変化から特徴量を算出する。
【００５２】
異常検知エンジン１４０は、特徴量抽出部１４２により算出される特徴量に基づいて、制御対象に含まれる監視対象に何らかの異常が発生しているか否かを示す検知結果を生成する。
【００５３】
以上のような構成を採用することで、制御対象に含まれる任意の監視対象において、発生し得る何らかの異常を検知可能できる。
【００５４】
特徴量抽出部１４２は、算出した特徴量に、対応する単位区間（フレーム）を決定したフレーム変数（第１の内部状態値）の値を対応付けて、異常検知エンジン１４０へ出力する。また、特徴量抽出部１４２は、生成した検知結果に、当該検知結果の生成に用いた特徴量に対応付けられていたフレーム変数（第１の内部状態値）の値を対応付けて出力する。このように、フレーム変数（第１の内部状態値）の値を、特徴量抽出部１４２から出力される特徴量、および、異常検知エンジン１４０から出力される検知結果に対応付けることで、デバイス変数１５４の値、特徴量抽出部１４２により算出される特徴量、ならびに、異常検知エンジン１４０により生成される検知結果の間の一貫性を維持できる。
【００５５】
＜Ｂ．各装置のハードウェア構成例＞
次に、本実施の形態に従う異常検知システム１を構成する主要な装置のハードウェア構成例について説明する。
【００５６】
（ｂ１：制御装置１００のハードウェア構成例）
図３は、本実施の形態に従う異常検知システム１を構成する制御装置１００のハードウェア構成例を示すブロック図である。図３を参照して、制御装置１００は、ＣＰＵ（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）などの光学記憶媒体）を含む。メモリカード１１６または記憶媒体２０５から、その中に格納されたプログラムまたはデータが読み取られて二次記憶装置２０８などの内部の記憶領域にインストールされる。
【００６９】
サポート装置２００で実行される各種プログラムは、コンピュータ読取可能なメモリカード１１６または記憶媒体２０５を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に従うサポート装置２００が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【００７０】
ＵＳＢコントローラ２１２は、ＵＳＢ接続を介して制御装置１００との間のデータの遣り取りを制御する。ローカルネットワークコントローラ２１４は、任意ネットワークを介した他の装置との間のデータの遣り取りを制御する。
【００７１】
入力部２１６は、キーボードやマウスなどで構成され、ユーザ操作を受け付ける。表示部２１８は、ディスプレイ、各種インジケータなどで構成され、プロセッサ２０２からの処理結果などを出力する。サポート装置２００には、プリンタが接続されてもよい。
【００７２】
図４には、プロセッサ２０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【００７３】
＜Ｃ．ソフトウェア構成例／機能構成例＞
次に、本実施の形態に従う異常検知システム１を構成する主要な装置のソフトウェア構成例および機能構成例について説明する。
【００７４】
図５は、本実施の形態に従う異常検知システム１のソフトウェア構成例を示すブロック図である。
【００７５】
図５を参照して、異常検知システム１の異常検知処理は、制御装置１００およびサポート装置２００との連携によって実現される。制御装置１００は、予め定められた制御周期毎に制御対象から取得される状態値に基づいて、異常の有無を判断する。
【００７６】
より具体的には、制御装置１００は、主要な機能構成として、内部ＤＢ１３０と、異常検知エンジン１４０と、特徴量抽出部１４２と、時系列データベースマネジャ１４４と、変数管理部１５０とを含む。
【００７７】
異常検知エンジン１４０は、主として異常検知処理を実行する部分であり、サポート装置２００により設定されるパラメータ２５６に従って、特徴量抽出部１４２から与えられる特徴量（通常は複数種類の特徴量が用いられる）およびサポート装置２００により設定される学習データ２５２に基づいて、監視対象に何らかの異常が発生している可能性を示す値（スコア）を算出するとともに、算出されたスコアの値が予め定められたしきい範囲内であるか否かに基づいて、監視対象での異常発生の有無を判断する。しきい範囲は、１または複数のしきい値に基づいて定義されてもよい。また、複数のしきい範囲（例えば、ｃａｕｔｉｏｎレベルおよびｄａｍａｇｅレベル）を設定してもよい。異常検知エンジン１４０は、監視対象での異常発生の有無を示す検知結果を時系列データベースマネジャ１４４へ出力する。また、異常検知エンジン１４０による監視対象での異常発生の有無を示す検知結果を含む処理結果１５２は、変数管理部１５０へ出力されて、内部状態値として周期的に更新される。パラメータ２５６は、異常検知処理に用いる対象変数の設定、および、後述するフレームＩＤなどを特定するフレーム定義を含む。
【００７８】
特徴量抽出部１４２は、サポート装置２００により設定されるパラメータ２５６に従って、指定された対象のデバイス変数（サンプリング変数）が示す値から、予め定められた処理に従って特徴量（例えば、所定時間に亘る平均値、最大値、最小値など）をサイクリックに算出する。特徴量抽出部１４２は、算出される特徴量を異常検知エンジン１４０および時系列データベースマネジャ１４４へ出力する。
【００７９】
時系列データベースマネジャ１４４は、変数管理部１５０により制御周期毎に更新されるデバイス変数１５４の値（生データ）、特徴量抽出部１４２により制御周期毎に算出される特徴量、ならびに、異常検知エンジン１４０から出力される検知結果を、内部ＤＢ１３０へ制御周期毎に書き込む。
【００８０】
内部ＤＢ１３０は、格納部に相当し、生データを時系列に格納するための生データ時系列ＤＢ１３２と、特徴量を時系列に格納するための特徴量時系列ＤＢ１３４と、検知結果を時系列に格納するための検知結果時系列ＤＢ１３６とを含む。
【００８１】
「生データ」は、基本的には、制御対象あるいは監視対象から取得されたそのままの状態値（なお、物理量への単位変換などが行われている場合も含む）を意味するものである。
【００８２】
学習データ２５２は、異常検知エンジン１４０が監視対象に何らかの異常が発生している可能性を示す値（スコア）を算出するために用いられるデータセットであり、基本的には、「正常」である場合の状態値に基づいて算出された特徴量、および／または、「異常」である場合の状態値に基づいて算出された特徴量を含む。異常検知エンジン１４０は、予め用意された学習データ２５２を参照して、特徴量抽出部１４２により算出される特徴量から、監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出する。
【００８３】
一例として、異常検知エンジン１４０での異常検知のアルゴリズムとして、超空間上における正常値群に対する入力値の外れ度合いに基づいて、当該入力値に対応するスコアを算出する方法を採用する。この場合には、学習データ２５２は、超空間上における正常値群を示すものとなり、これは監視対象を示す「モデル」に相当する。
【００８４】
このような外れ度合いに基づく異常検知の手法としては、各点から正常値群までの最短距離に基づいて異常を検知する手法（ｋ近傍法）、正常値群を含むクラスタを含めて距離を評価する局所外れ値因子（ＬｏＦ：local outlier factor）法、パス長さから算出されるスコアを用いるｉＦｏｒｅｓｔ（isolation forest）法などが知られている。
【００８５】
外れ度合いに基づく異常検知の手法を採用した場合には、学習データ２５２は、正常である場合に得られる特徴量の群を含むようになり、異常検知エンジン１４０は、学習データ２５２に含まれる特徴量群に対する対象の特徴量の外れ度合いに基づいて、監視対象に何らかの異常が発生している可能性を示す値であるスコアを算出する。
【００８６】
変数管理部１５０は、デバイス変数１５４に加えて、異常検知エンジン１４０からの処理結果１５２の値を制御周期毎に最新の値に更新する。すなわち、変数管理部１５０は、Ｉ／Ｏリフレッシュ処理に係る少なくとも一部の処理を実行し、制御周期毎に、制御対象から取得される入力値および制御対象へ与えられる出力値を更新する。
【００８７】
一方、サポート装置２００は、制御装置１００における異常検知処理を実現するためのパラメータ２５６および学習データ２５２を制御装置１００に提供する。
【００８８】
より具体的には、サポート装置２００は、主要な機能構成として、データマイニングツール２５０および設定ツール２６０を含む。
【００８９】
データマイニングツール２５０は、制御装置１００の内部ＤＢ１３０（主として、生データ時系列ＤＢ１３２）に格納される生データ２５４（時系列データ）を取得し、監視対処での異常検知に適したデバイス変数および特徴量などの探索を支援する。すなわち、ユーザは、データマイニングツール２５０を用いて、監視対象に関連するデバイス変数の時系列データである生データ２５４を解析することで、当該監視対象での異常検知に適したデバイス変数およびその特徴量を決定する。そして、データマイニングツール２５０は、決定されたデバイス変数およびその特徴量に応じて、生データ２５４から学習データ２５２を生成するとともに、対応するパラメータ２５６を決定する。
【００９０】
設定ツール２６０は、制御装置１００とのインターフェイスとして機能し、制御装置１００から生データ２５４を取得するとともに、データマイニングツール２５０により生成された学習データ２５２およびパラメータ２５６を制御装置１００へ設定する。
【００９１】
＜Ｄ．制御装置１００でのリアルタイム処理＞
本実施の形態に従う異常検知システム１においては、制御装置１００が周期的に実行する制御演算に異常検知処理を含めることで、リアルタイムで異常発生の有無を判断する。
【００９２】
本実施の形態に従う異常検知処理は、主として、（１）変数管理部１５０において実行されるＩ／Ｏリフレッシュ処理と、（２）特徴量抽出部１４２による特徴量抽出処理、（３）異常検知エンジン１４０によるスコア算出およびしきい値判断の処理とからなる。
【００９３】
一方、制御装置１００においては、（１）〜（３）の処理はいずれも異なる制御タイミングで実行されるため、それぞれの処理において処理されるデータの一貫性を維持する必要がある。
【００９４】
本実施の形態に従う異常検知システム１の制御装置１００においては、タイムスケジューリング方式に従って処理が実行される。
【００９５】
図６は、本実施の形態に従う異常検知システム１の制御装置１００における制御処理の実行タイミングを示す模式図である。図６を参照して、制御装置１００においては、予め定められた制御周期であるタスク周期１８０の単位で処理の実行が管理される。
【００９６】
タスク周期１８０の各々においては、主として、Ｉ／Ｏリフレッシュ処理１８４と、制御処理１８６と、システムサービス１８８とが実行される。
【００９７】
Ｉ／Ｏリフレッシュ処理１８４は、変数管理部１５０（図５）において実行されるＩ／Ｏリフレッシュ処理に相当する。
【００９８】
制御処理１８６は、制御装置１００のシステムに係る処理およびユーザプログラム（典型的には、シーケンス命令の組み合わせからなるシーケンスプログラムや、モーション命令の組み合わせからなるモーションプログラムなど）を含む。特徴量抽出部１４２による特徴量抽出処理は、制御処理１８６に含まれることになる。
【００９９】
システムサービス１８８は、タスク周期１８０の各々において、Ｉ／Ｏリフレッシュ処理１８４および制御処理１８６が実行されていない期間に実行されるプログラムを総称するものであり、制御装置１００と外部装置との間の通信処理や、メモリカード１１６へのファイルアクセスなどの処理を含む。異常検知エンジン１４０によるスコア算出およびしきい値判断の処理は、システムサービス１８８に含まれることになる。
【０１００】
Ｉ／Ｏリフレッシュ処理１８４および制御処理１８６は、実行の優先度が最も高いプライマリ定周期タスクとして登録されており、タスク周期１８０の各々において最優先で実行される。タスク周期１８０の各々において、Ｉ／Ｏリフレッシュ処理１８４および制御処理１８６のすべての処理は実行される。タスク周期１８０の各々において、Ｉ／Ｏリフレッシュ処理１８４および制御処理１８６の実行に要する時間をタスク実行時間１８２と称す。
【０１０１】
一方、システムサービス１８８は、タスク周期１８０の各々において空き時間で実行されるため、すべての処理を完了できない場合もある。また、システムサービス１８８には、タスク周期１８０の各々においてすべての処理の実行を完了させる必要性が低い処理が含まれることになる。
【０１０２】
そのため、システムサービス１８８に含まれる処理（異常検知エンジン１４０によるスコア算出およびしきい値判断の処理を含む）は、あるタスク周期１８０において実行されているときに、次のタスク周期１８０の始期が到来すると、一旦処理が中断される。そして、いずれかのタスク周期１８０において空き時間があれば実行される。このように、システムサービス１８８の実行は、タスク周期１８０における空き時間に依存したものとなる。
【０１０３】
図６に示すように、（１）変数管理部１５０において実行されるＩ／Ｏリフレッシュ処理、および、（２）特徴量抽出部１４２による特徴量抽出処理は、タスク周期１８０毎にサイクリック実行される。但し、Ｉ／Ｏリフレッシュ処理および特徴量抽出処理の実行タイミングは異なっている。
【０１０４】
また、（３）異常検知エンジン１４０によるスコア算出およびしきい値判断の処理は、複数のタスク周期１８０に亘って実行されることになる。そのため、（１）〜（３）の処理の間でデータを同期する仕組みが必要となる。
【０１０５】
また、制御処理において複数のタスク周期１８０に亘って値が変化するデータが存在し得る。複数のタスク周期１８０に亘ってデータを確実に収集するとともに、値を加工して格納する必要がある。特に、異常検知エンジン１４０によるスコア算出およびしきい値判断の処理は、複数のタスク周期１８０に亘って実行されるので、処理間を同期させることができない。
【０１０６】
制御装置１００において異常検知処理をリアルタイムで実行する場合には、上述したようなデータの整合性あるいはデータの一貫性に配慮する必要がある。
【０１０７】
＜Ｅ．データの一貫性の維持＞
次に、本実施の形態に従う異常検知システム１においては、データの一貫性を維持するための識別情報を導入する。この識別情報を以下では「フレームＩＤ」とも称す。フレームＩＤは、異常検知処理に用いられるデータ単位を特定するための識別情報である。
【０１０８】
このような識別情報であるフレームＩＤを導入することで、異常検知処理が対象とする単位区間を特定できるとともに、何らかの理由で異常検知処理の抜け（脱落）などを検知できる。
【０１０９】
フレームＩＤとしては、制御装置１００で実行されるユーザプログラムが参照可能な任意の変数を用いることができる。フレームＩＤとして用いる変数は、制御装置１００側で設定するのではなく、ユーザ側が任意に設定することが想定される。すなわち、制御装置１００の異常検知エンジン１４０は、フレーム変数（第１の内部状態値）として任意のデバイス変数１５４（内部状態値）の指定を受け付ける。
【０１１０】
フレームＩＤとして用いられる変数としては、制御対象である機械や装置の動作に応じて都度変化するようなものが好ましい。フレームＩＤとしては、以下のような情報を用いることができる。
【０１１１】
（１）制御対象が処理するワークのシリアル番号
（２）制御対象の機械や装置の電源が投入された後に処理したワークの総数
（３）制御対象に含まれる動作機構の動作サイクル累積数あるいは動作サイクル番号（例えば、ローラが１００回転毎に１カウントするような装置でそのカウント数）
このようなフレームＩＤを用いることで、データの同期処理および排他処理、ならびに、ファイル管理の処理時間などを低減して、処理を高速化できる。
【０１１２】
なお、本実施の形態に従う異常検知システム１において用いられるフレームＩＤを用いるのではなく、所定時間毎（例えば、１秒毎）にデータを分割して処理するような形態も想定される。しかしながら、制御対象に含まれる機械や装置では、高精度に時刻分割して動作する保証はなく（例えば、材料の投入タイミングずれや摩擦による位置ずれ）、時間ずれによって生じる異常検知が必要であり、あるいは、時間ずれ自体は異常ではないとしても、制御対象の周期的な単位区間のデータを高精度な異常検知に用いることは必ずしもできなかった。
【０１１３】
図７は、本実施の形態に従う異常検知システム１における異常検知処理に用いられる変数の関係を示す模式図である。図７を参照して、制御装置１００には、異常検知エンジン１４０および特徴量抽出部１４２が実装される。制御装置１００には、サポート装置２００のデータマイニングツール２５０により生成された学習データ２５２が設定ツール２６０を介して提供される。
【０１１４】
特徴量抽出部１４２は、プライマリ定周期タスクとして実行される特徴量抽出実行部１４２０に規定される命令が実行されることで実現される。特徴量抽出実行部１４２０には、特徴量抽出ユーザ変数１４２２およびシステム定義変数１４２４が入力される。特徴量抽出実行部１４２０では、特徴量抽出ユーザ変数１４２２に含まれるサンプリング変数（デバイス変数）に対して、パラメータ２５６に含まれる特徴量抽出設定２５６２により定義される算出方法によって、１または複数の特徴量が算出される。
【０１１５】
特徴量抽出ユーザ変数１４２２は、特徴量を算出されるために用いられる１または複数のサンプリング変数を含む。サンプリング変数の各々には、特徴量の算出に用いられる部分区間を特定するためのサブフレーム変数がそれぞれ対応付けられる。すなわち、特徴量抽出ユーザ変数１４２２は、サブフレーム変数とサンプリング変数との組を１または複数含む。なお、サブフレーム変数を用いた処理方法などについては後述する。
【０１１６】
特徴量抽出ユーザ変数１４２２は、さらに、フレームＩＤとして用いられるフレーム変数を含む。フレーム変数が示す値は、特徴量抽出実行部１４２０に入力されるデータ単位（時系列データの特定区間）を識別するための情報として用いられる。
【０１１７】
システム定義変数１４２４に格納される値は、特徴量抽出実行部１４２０が処理を開始するためのトリガあるいは条件として用いられる。
【０１１８】
特徴量抽出実行部１４２０での演算結果は、特徴量抽出ユーザ変数１４２６およびシステム定義変数１４２８として出力される。
【０１１９】
特徴量抽出ユーザ変数１４２６は、特徴量抽出実行部１４２０での特徴量の算出処理に用いられたデータ単位を特定するためのフレーム変数（フレームＩＤとして示される値）と同じ値が出力フレーム変数として格納される。出力フレーム変数に格納される値は、後述の異常検知エンジン１４０における処理において参照される。
【０１２０】
システム定義変数１４２８には、特徴量抽出実行部１４２０での演算結果である特徴量が格納される。典型的には、システム定義変数１４２８としては配列または構造体が用いられ、複数の特徴量が算出された場合には、各特徴量が多次元のデータ構造の形で格納される。
【０１２１】
図７に示すように、特徴量抽出部１４２での演算結果（特徴量抽出ユーザ変数１４２６システム定義変数１４２８）は、変数管理部１５０が管理する内部状態値（変数値）として内部保持されることになる。なお、特徴量抽出部１４２が参照する特徴量抽出ユーザ変数１４２２およびシステム定義変数１４２４についても、変数管理部１５０が管理する内部状態値（変数値）として内部保持されることになる。これらの変数管理部１５０が管理する内部状態値（変数値）は、制御装置１００で実行されるユーザプログラムなどから任意に参照可能になっている。
【０１２２】
異常検知エンジン１４０は、システムサービスとして実行される異常検知エンジン実行部１４００に規定される命令が実行されることで実現される。異常検知エンジン実行部１４００には、異常検知ユーザ変数１４０２、システム定義変数１４２８、およびシステム定義変数１４０４が入力される。
【０１２３】
異常検知ユーザ変数１４０２には、特徴量抽出実行部１４２０での演算結果が格納されており、異常検知エンジン実行部１４００は、特徴量抽出実行部１４２０により算出された特徴量を参照できる。
【０１２４】
異常検知ユーザ変数１４０２には、異常検知エンジン実行部１４００での処理に用いられる特徴量の算出に用いたデータ単位を特定するためのフレーム変数が格納されている。異常検知ユーザ変数１４０２に格納されるフレーム変数は、特徴量抽出ユーザ変数１４２６に格納される出力フレーム変数と同値である。すなわち、特徴量抽出実行部１４２０から出力されるフレーム変数が示す値と同じ値を、異常検知エンジン実行部１４００のフレーム変数として与えることができる。このように、異常検知エンジン１４０には、特徴量抽出部１４２が出力するフレーム変数（第１の内部状態値）の値が入力される。
【０１２５】
システム定義変数１４０４に格納される値は、異常検知エンジン実行部１４００が処理を開始するためのトリガあるいは条件として用いられる。
【０１２６】
異常検知エンジン実行部１４００での演算結果は、異常検知ユーザ変数１４０６およびシステム定義変数１４０８として出力される。
【０１２７】
異常検知ユーザ変数１４０６は、異常検知エンジン実行部１４００での処理に用いられたデータ単位を特定するためのフレーム変数（フレームＩＤとして示される値）と同じ値が出力フレーム変数として格納される。
【０１２８】
システム定義変数１４０８には、異常検知エンジン実行部１４００での演算結果である特徴量が格納される。典型的には、システム定義変数１４０８としては配列または構造体が用いられる。システム定義変数１４０８には、異常検知エンジン実行部１４００において学習データ２５２および特徴量に基づいて算出されるスコア、ならびに、当該算出されたスコアとパラメータ２５６に含まれるしきい値設定２５６４との比較によって決定される異常の有無を示す検知結果が格納される。
【０１２９】
図７に示すように、異常検知エンジン１４０での演算結果（異常検知ユーザ変数１４０６およびシステム定義変数１４０８）は、変数管理部１５０が管理する内部状態値（変数値）として内部保持されることになる。なお、異常検知エンジン１４０が参照する異常検知ユーザ変数１４０２、システム定義変数１４２８、およびシステム定義変数１４０４についても、変数管理部１５０が管理する内部状態値（変数値）として内部保持されることになる。これらの変数管理部１５０が管理する内部状態値（変数値）は、制御装置１００で実行されるユーザプログラムなどから任意に参照可能になっている。
【０１３０】
以上のように、特徴量抽出部１４２と異常検知エンジン１４０との間で、同一のフレームＩＤ（フレーム変数）を共有することで、データの一貫性を維持できる。
【０１３１】
＜Ｆ．フレームおよびサブフレーム＞
次に、本実施の形態に従う異常検知システム１におけるフレームおよびサブフレーム、ならびに、フレーム変数を用いたデータの一貫性を維持するための処理について説明する。
【０１３２】
図８は、本実施の形態に従う異常検知システム１の制御装置１００におけるフレーム管理に係る処理を説明するためのタイムチャートである。
【０１３３】
図８を参照して、異常検知処理はフレームの単位で実行される。フレームは、複数の制御周期に亘るものとして定義されることが多い。すなわち、フレームは、複数の制御周期をまとめて管理する単位とも定義できる。
【０１３４】
より具体的には、フレーム３００は、ユーザが任意に設定するフレーム変数３０２を用いて設定できる。図８に示す例では、フレーム変数３０２として変数Ｖａｒ＿Ａが設定されているとする。例えば、フレーム変数３０２として用いられる変数Ｖａｒ＿Ａは、処理対象のワークのロット番号などを示すものとする。
【０１３５】
制御装置１００の特徴量抽出部１４２は、フレーム変数（第１の内部状態値）が同一の値を示す区間をフレーム（単位区間）として決定する。
【０１３６】
特徴量抽出部１４２における処理として、フレーム変数３０２により設定されるフレーム３００毎に１または複数の時系列データ（すなわち、サンプリング変数として指定される値の時間的変化）から１または複数の特徴量が算出される。図８に示す例では、各フレームに対応する単位区間の時系列データ３０６（時系列データＡ）から特徴量３０８（特徴量Ａ）が順次算出されるとともに、各フレームに対応する単位区間の時系列データ３１０（時系列データＢ）から特徴量３１２（特徴量Ｂ）が順次算出される例を示す。
【０１３７】
それぞれ算出される特徴量３０８および３１２に対しては、出力フレーム変数３０４が対応付けられる。図８に示す例では、出力フレーム変数３０４として変数Ｖａｒ＿Ｂが設定されており、変数Ｖａｒ＿Ｂにはフレーム変数３０２である変数Ｖａｒ＿Ａの値が設定されることになる。
【０１３８】
このように、順次算出される特徴量には、当該特徴量の算出に用いた時系列データに付与されていた「フレームＩＤ」（フレーム変数３０２である変数Ｖａｒ＿Ａ）と同じ「フレームＩＤ」（出力フレーム変数３０４である変数Ｖａｒ＿Ｂ）が付与されることになる。すなわち、特徴量の算出は、少なくとも１フレーム分遅延することになるが、このような時間遅延が存在する場合であっても、「フレームＩＤ」を用いることで、データの一貫性を維持できる。
【０１３９】
さらに、異常検知エンジン１４０においては、特徴量抽出部１４２での処理により出力される出力フレーム変数３０４をそのままフレーム変数３２０として用いる（この例では、変数Ｖａｒ＿Ｂ）。
【０１４０】
フレーム変数３２０が示す値と同じ値が付与された特徴量セット３２６（この例では、特徴量Ａおよび特徴量Ｂを含む）に対して、異常検知処理が実行されて、スコアなどの演算結果３２４が算出される。演算結果３２４の各々に対しては、出力フレーム変数３２２が対応付けられる。図８に示す例では、出力フレーム変数３２２として変数Ｖａｒ＿Ｃが設定されており、変数Ｖａｒ＿Ｃにはフレーム変数３２０である変数Ｖａｒ＿Ｂの値が設定されることになる。
【０１４１】
なお、特徴量セット３２６が入力されてからスコアなどの演算結果３２４が算出されるまでには、所定の異常検知判定時間だけ遅延が生じ得る。異常検知判定時間の遅延が存在しても、フレームＩＤを用いることでデータの一貫性を維持できる。
【０１４２】
以上のように、フレームＩＤとして、ユーザが任意に設定した変数（基本的には、制御装置１００で実行されるユーザプログラムが参照可能な変数のいずれか）をキーにして、複数の制御周期に亘って生成または算出されるとともに、生成または算出されるタイミングも異なるデータについて、その一貫性（いわば、データのトレーサビリティ）を維持できる。
【０１４３】
次に、フレーム内に設定可能なサブフレームについて説明する。上述したように、各フレームの時系列データから特徴量が算出されることになるが、各フレーム内の特定区間の時系列データのみから特徴量を算出したい場合もある。
【０１４４】
例えば、対象のワークのロット番号を示す変数をフレーム変数として設定した場合において、各ワークに対して複数の工程で処理が実行されるようなときもある。このような場合において、特定の工程において現れる状態値の変化に基づいて、特徴量を算出したいことも多い。
【０１４５】
そこで、本実施の形態においては、各フレームに対してサブフレームを設定することができ、設定されたサブフレームの区間における時系列データに基づいて特徴量を算出することができる。サブフレームは、特徴量毎に設定できるようにしてもよい。
【０１４６】
図９は、図８に示されるサブフレームを説明するためのタイムチャートである。図９を参照して、ロット番号などを示す変数をフレーム３３０として設定する場合を想定する。各フレーム３３０の終わりのタイミングで、各フレーム３３０での演算結果が出力されるとする。図８に示す例では、各フレーム３３０は、３つの工程を含むとし、いずれの工程にあるのかを示すステータス３３２を参照可能であるとする。
【０１４７】
ステータス３３２は、特徴量を算出する対象を特定するためのサブフレームとして設定可能である。例えば、特徴量の算出対象として時系列データ３０６および３１０（時系列データＡおよびＢ）を想定する。時系列データ３０６については、第２番目の工程（ステータス３３２の値が「２」）の部分区間から特徴量を算出し、時系列データ３１０については、第３番目の工程（ステータス３３２の値が「３」）の部分区間から特徴量を算出するとする。
【０１４８】
この場合、時系列データＡのサブフレーム３３６（時系列データＡのサブフレーム）としては、ステータス３３２の値が「２」を示す部分区間を設定し、時系列データＢのサブフレーム３４０（時系列データＢのサブフレーム）としては、ステータス３３２の値が「３」を示す部分区間を設定すればよい。
【０１４９】
このように、制御装置１００の特徴量抽出部１４２は、フレーム変数（単位区間）毎に、当該フレームにおいて予め定められたサブフレーム変数（第３の内部状態値）が予め定められた値を示す部分区間におけるサンプリング変数（第２の内部状態値）の変化から特徴量を算出する。
【０１５０】
図８に示すように、特徴量を算出する対象の区間をフレーム内の一部の区間に限定することで、より精度の高い異常検知処理を実現できる。
【０１５１】
＜Ｇ．データ構造＞
次に、上述したようなフレームＩＤを含んで出力されるデータ構造について説明する。
【０１５２】
図１０は、本実施の形態に従う異常検知システム１の制御装置１００の内部ＤＢ１３０に格納されるデータ構造の一例を説明するための図である。図１０（ａ）には、内部ＤＢ１３０の生データ時系列ＤＢ１３２に格納される時系列データの一例を示し、図１０（ｂ）には、内部ＤＢ１３０の特徴量時系列ＤＢ１３４に格納される時系列データの一例を示し、図１０（ｃ）には、内部ＤＢ１３０の検知結果時系列ＤＢ１３６に格納される時系列データの一例を示す。図１０に示す時系列データは、一例として、監視対象である変数Ｖａｒ＿１の最大値を特徴量としている。
【０１５３】
なお、内部ＤＢ１３０には、図１０（ａ）〜図１０（ｃ）に示すすべての時系列データを格納しなくてもよく、その一部の時系列データのみを格納するようにしてもよい。
【０１５４】
図１０（ａ）に示す生データ時系列ＤＢ１３２に格納される時系列データの各レコードは、時刻情報１３２０と、変数値１３２２と、フレームＩＤ１３２４とを含む。図１０（ａ）に示す特徴量時系列ＤＢ１３４に格納される時系列データの各レコードは、時刻情報１３４０と、フレームＩＤ１３４２と、特徴量１３４４とを含む。図１０（ｃ）に示す検知結果時系列ＤＢ１３６に格納される時系列データの各レコードは、時刻情報１３６０と、フレームＩＤ１３６２と、スコア１３６４とを含む。
【０１５５】
このように、制御装置１００の内部ＤＢ１３０は、フレーム変数（第１の内部状態値）の値を対応付けた特徴量の時系列データ、および、フレーム変数（第１の内部状態値）の値を対応付けた検知結果の時系列データ、の少なくとも一方を格納する。
【０１５６】
図１０（ａ）〜図１０（ｃ）に示すように、共通のフレームＩＤを用いることで、異なる時刻に生成または算出されるデータの間で一貫性を維持できる。このようにフレームＩＤを用いることで、制御装置１００で実行される処理およびデータの一貫性、ならびに、内部ＤＢ１３０に格納されるデータに含まれるレコード間の対応付けも容易に実現できる。また、フレームＩＤとして単調増加または単調減少（インクリメントまたはデクリメント）するといった予め定められた規則性に従って変化する値を用いることで、異常検知処理の抜け（脱落）などを検知できる。
【０１５７】
図１１は、図１０に示されるそれぞれの時系列データを結合した時系列データの一例を示す図である。図１１を参照して、結合された時系列データの各レコードは、フレームＩＤ１３２４（１３４２，１３６２）と、時刻情報１３２０（１３４０，１３６０）と、変数値１３２２と、特徴量１３４４と、スコア１３６４とを含む。
【０１５８】
図１１に示すように、フレームＩＤをキーにして、３種類の時系列データを結合させることで、監視対象から取得される生データ、生データから算出される特徴量、特徴量から算出されるスコアなどを時系列に確認あるいは解析できる。
【０１５９】
＜Ｈ．処理手順＞
次に、本実施の形態に従う異常検知システム１における処理手順について説明する。
【０１６０】
図１２は、本実施の形態に従う異常検知システム１における処理手順を示すフローチャートである。図１２には、変数管理部１５０、特徴量抽出部１４２、および異常検知エンジン１４０で実行される処理手順を示す。図１２に示す各ステップは、典型的には、制御装置１００のプロセッサ１０２が制御プログラムに相当するシステムプログラム１２６（図３参照）を実行することで実現される。
【０１６１】
まず、変数管理部１５０で実行される処理として、制御装置１００は、制御周期が到来したか否かを判断する（ステップＳ１００）。制御周期が到来していなければ（ステップＳ１００においてＮＯ）、ステップＳ１００の処理が繰り返される。
【０１６２】
制御周期が到来していれば（ステップＳ１００においてＹＥＳ）、制御装置１００は、制御対象から状態値を取得し（ステップＳ１０２）、当該取得した状態値でデバイス変数１５４の値を更新する（ステップＳ１０４）。そして、ステップＳ１００以下の処理が繰り返される。
【０１６３】
このように、変数管理部１５０においては、制御対象に生じる状態値を予め定められた制御周期毎に取得して内部保持されるデバイス変数１５４（内部状態値）を更新する処理が実行される。
【０１６４】
次に、特徴量抽出部１４２で実行される処理として、制御装置１００は、指定されたフレーム変数の値が変化したか否かを判断する（ステップＳ２００）。フレーム変数の値が変化していなければ（ステップＳ２００においてＮＯ）、ステップＳ２００の処理が繰り返される。
【０１６５】
フレーム変数の値が変化していれば（ステップＳ２００においてＹＥＳ）、制御装置１００は、指定されたサンプリング変数の値を一時的に収集する（ステップＳ２０２）。
【０１６６】
そして、制御装置１００は、フレーム変数の値が同一の値に維持されているか否かを判断する（ステップＳ２０４）。フレーム変数の値が同一の値に維持されていれば（ステップＳ２０４においてＹＥＳ）。ステップＳ２０２以下の処理が繰り返される。
【０１６７】
フレーム変数の値が同一の値に維持されていなければ（ステップＳ２０４においてＮＯ）、制御装置１００は、ステップＳ２０２において収集された一連のサンプリング変数の値に基づいて特徴量を算出する（ステップＳ２０６）。そして、制御装置１００は、算出した特徴量をフレーム変数の値（変化する前の値）に対応付けて出力する（ステップＳ２０８）。そして、ステップＳ２００以下の処理が繰り返される。
【０１６８】
このように、特徴量抽出部１４２においては、予め定められたフレーム変数（第１の内部状態値）の値に応じて決定されるフレーム（単位区間）毎に、当該フレーム内に生じた予め定められたサンプリング変数（第２の内部状態値）の変化から特徴量を算出する処理が実行される。そして、特徴量抽出部１４２においては、算出した特徴量に、対応するフレーム（単位区間）を決定したフレーム変数の値を対応付けて出力する処理も実行される。
【０１６９】
次に、異常検知エンジン１４０で実行される処理として、制御装置１００は、特徴量抽出部１４２により新たな特徴量が算出されたか否かを判断する（ステップＳ３００）。新たな特徴量が算出されていなければ（ステップＳ３００においてＮＯ）、ステップＳ３００の処理が繰り返される。
【０１７０】
新たな特徴量が算出されていれば（ステップＳ３００においてＹＥＳ）、制御装置１００は、学習データ２５２を参照して算出された特徴量についてのスコアを含む検知結果を生成する（ステップＳ３０２）。なお、特徴量抽出部１４２から出力される新たな特徴量には、フレーム変数の値が対応付けられている。
【０１７１】
そして、制御装置１００は、生成した検知結果をフレーム変数の値に対応付けて出力する（ステップＳ３０４）。そして、ステップＳ３００以下の処理が繰り返される。
【０１７２】
このように、異常検知エンジン１４０においては、特徴量抽出部１４２により算出される特徴量に基づいて、制御対象に含まれる監視対象に何らかの異常が発生しているか否かを示す検知結果を生成する処理と、当該生成した検知結果に、当該検知結果の生成に用いた特徴量に対応付けられていたフレーム変数（第１の内部状態値）の値を対応付けて出力する処理とが実行される。
【０１７３】
＜Ｉ．付記＞
上述したような本実施の形態は、以下のような技術思想を含む。
［構成１］
制御対象に生じる状態値を予め定められた制御周期毎に取得して内部保持される内部状態値（１５４）を更新する管理部（１５０）と、
予め定められた第１の内部状態値（３０２）の値に応じて決定される単位区間（３００）毎に、当該単位区間内に生じた予め定められた第２の内部状態値（３０６，３１０）の変化から特徴量（３０８，３１２）を算出する特徴量抽出部（１４２）とを備え、前記特徴量抽出部は、前記算出した特徴量に、対応する単位区間を決定した前記第１の内部状態値の値を対応付けて出力し、
前記特徴量抽出部により算出される前記特徴量に基づいて、前記制御対象に含まれる監視対象に何らかの異常が発生しているか否かを示す検知結果（３２４）を生成する異常検知部（１４０）を備え、前記異常検知部は、生成した検知結果に、当該検知結果の生成に用いた特徴量に対応付けられていた前記第１の内部状態値の値を対応付けて出力する、制御装置。
［構成２］
前記異常検知部には、前記特徴量抽出部が出力する前記第１の内部状態値の値が入力される、構成１に記載の制御装置。
［構成３］
前記特徴量抽出部は、前記第１の内部状態値として任意の内部状態値の指定を受け付ける、構成１または２に記載の制御装置。
［構成４］
前記特徴量抽出部は、前記第１の内部状態値が同一の値を示す区間を前記単位区間として決定する、構成１〜３のいずれか１項に記載の制御装置。
［構成５］
前記特徴量抽出部は、単位区間毎に、当該単位区間において予め定められた第３の内部状態値（３３２）が予め定められた値を示す部分区間における前記第２の内部状態値の変化から前記特徴量を算出する、構成１〜４のいずれか１項に記載の制御装置。
［構成６］
前記異常検知部は、予め用意された学習データ（２５２）を参照して、前記特徴量から前記監視対象に何らかの異常が発生している可能性を示す値（１３６４）を算出する、構成１〜５のいずれか１項に記載の制御装置。
［構成７］
前記学習データは、正常である場合に得られる特徴量の群を含み、
前記異常検知部は、前記学習データに含まれる特徴量群に対する前記特徴量の外れ度合いに基づいて、前記監視対象に何らかの異常が発生している可能性を示す値を算出する、構成６に記載の制御装置。
［構成８］
前記異常検知部は、前記監視対象に何らかの異常が発生している可能性を示す値が予め定められたしきい範囲内であるか否かに基づいて、前記監視対象での異常発生の有無を示す検知結果を生成する、構成６または７に記載の制御装置。
［構成９］
前記第１の内部状態値の値を対応付けた特徴量の時系列データ、および、前記第１の内部状態値の値を対応付けた検知結果の時系列データの少なくとも一方を格納する格納部（１３０）をさらに備える、構成１〜８のいずれか１項に記載の制御装置。
［構成１０］
前記管理部は、前記特徴量抽出部および前記異常検知部での演算結果を、前記制御装置で実行されるプログラムで参照可能な内部状態値としてさらに内部保持する、構成１〜９のいずれか１項に記載の制御装置。
［構成１１］
制御装置で実行される制御プログラム（１２６）であって、前記制御プログラムは前記制御装置（１００）に、
制御対象に生じる状態値を予め定められた制御周期毎に取得して内部保持される内部状態値を更新するステップ（Ｓ１００，Ｓ１０２，Ｓ１０４）と、
予め定められた第１の内部状態値（３０２）の値に応じて決定される単位区間（３００）毎に、当該単位区間内に生じた予め定められた第２の内部状態値（３０６，３１０）の変化から特徴量（３０８，３１２）を算出するステップ（Ｓ２００，Ｓ２０２，Ｓ２０４，Ｓ２０６）と、
前記算出した特徴量に、対応する単位区間を決定した前記第１の内部状態値の値を対応付けて出力するステップ（Ｓ２０８）と、
前記特徴量抽出部により算出される前記特徴量に基づいて、前記制御対象に含まれる監視対象に何らかの異常が発生しているか否かを示す検知結果（３２４）を生成するステップ（Ｓ３０２）と、
前記生成した検知結果に、当該検知結果の生成に用いた特徴量に対応付けられていた前記第１の内部状態値の値を対応付けて出力するステップ（Ｓ３０４）とを実行させる、制御プログラム。
【０１７４】
＜Ｊ．利点＞
本実施の形態に従う異常検知システムにおいては、制御対象から状態値を取得し、取得した状態値の時間的変化に基づいて特徴量を算出し、算出した特徴量が異常の有無を判断する処理までの間で、データを一貫して処理できる。
【０１７５】
本実施の形態に従う異常検知システムにおいては、予め定められた状態値の値によって規定される単位区間であるフレームを定義し、このフレームを用いて監視対象に生じ得る異常の有無を判断するので、監視対象の区間などの管理が容易化する。
【０１７６】
本実施の形態に従う異常検知システムにおいては、単位区間であるフレームに対して、任意のサブフレームを規定することができる。この規定されたサブフレームにおいて、特徴量を算出し、算出した特徴量に基づいて異常検知処理を実行できるので、より精度の高い異常検知を実現できる。
【０１７７】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１７８】
１  異常検知システム、２  第１フィールドバス、４  第２フィールドバス、６  ローカルネットワーク、１０  フィールド装置群、１２  リモートＩ／Ｏ装置、１４  リレー群、１６，１２４  Ｉ／Ｏユニット、１８  画像センサ、２０  カメラ、２２  サーボドライバ、２４  サーボモータ、１００  制御装置、１０２，２０２  プロセッサ、１０４  チップセット、１０６，２０６  主記憶装置、１０８，２０８  二次記憶装置、１１０，２１４  ローカルネットワークコントローラ、１１２，２１２  ＵＳＢコントローラ、１１４  メモリカードインターフェイス、１１６  メモリカード、１１８，１２０  フィールドバスコントローラ、１２２  内部バスコントローラ、１２６  システムプログラム、１３０  内部ＤＢ、１３２  生データ時系列ＤＢ、１３４  特徴量時系列ＤＢ、１３６  検知結果時系列ＤＢ、１４０  異常検知エンジン、１４２  特徴量抽出部、１４４  時系列データベースマネジャ、１５０  変数管理部、１５２  処理結果、１５４  デバイス変数、１８０  タスク周期、１８２  タスク実行時間、１８４  Ｉ／Ｏリフレッシュ処理、１８６  制御処理、１８８  システムサービス、２００  サポート装置、２０４  ドライブ、２０５  記憶媒体、２１６  入力部、２１８  表示部、２２０  バス、２５０  データマイニングツール、２５２  学習データ、２５４  生データ、２５６  パラメータ、２６０  設定ツール、３００，３３０  フレーム、３０２，３２０  フレーム変数、３０４，３２２  出力フレーム変数、３０６，３１０，Ａ，Ｂ  時系列データ、３０８，３１２，１３４４  特徴量、３２４  演算結果、３２６  特徴量セット、３３２  ステータス、３３６，３４０  サブフレーム、４００  表示装置、５００  上位サーバ、１３２０，１３４０，１３６０  時刻情報、１３２２  変数値、１３２４，１３４２，１３６２  フレームＩＤ、１３６４  スコア、１４００  異常検知エンジン実行部、１４０２，１４０６  異常検知ユーザ変数、１４０４，１４０８，１４２４，１４２８  システム定義変数、１４２０  特徴量抽出実行部、１４２２，１４２６  特徴量抽出ユーザ変数、２５６２  特徴量抽出設定、２５６４  しきい値設定。
【図１】
2020067786.tif 000003
【図２】
2020067786.tif 000004
【図３】
2020067786.tif 000005
【図４】
2020067786.tif 000006
【図５】
2020067786.tif 000007
【図６】
2020067786.tif 000008
【図７】
2020067786.tif 000009
【図８】
2020067786.tif 000010
【図９】
2020067786.tif 000011
【図１０】
2020067786.tif 000012
【図１１】
2020067786.tif 000013
【図１２】
2020067786.tif 000014