(57)【要約】  本発明は、様々なソフトウェアの処理異常を検出することができる異常検知装置を提供することを目的とする。本発明に係る異常検知装置は、ソフトウェアが出力する出力データ系列をあらかじめ１以上のクラスタに分割し、いずれかのクラスタに含まれる出力データは正常であると判定し、いずれのクラスタにも含まれない出力データは異常であると判定する（図８参照）。
2017061028.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサがソフトウェアを実行することにより得られる演算結果の異常を検知する異常検知装置であって、
複数の前記演算結果を格納する記憶装置から前記複数の演算結果を取得して１以上のグループへ分割する分割器、
各前記グループ内に含まれる前記演算結果が有するデータ値の値範囲を用いて前記演算結果の正常範囲を前記グループごとに設定する範囲設定器、
前記範囲設定器が前記正常範囲を設定した後に新たな前記演算結果を前記記憶装置から取得し、前記正常範囲にしたがって前記新たな演算結果が正常か否かを判定する、異常判定器、
を備えたことを特徴とする異常検知装置。
【請求項２】
前記分割器は、前記複数の演算結果を用いて１以上の次元を有するベクトルデータを生成し、
前記分割器は、前記ベクトルデータを生成する際に、前記複数の演算結果の種別を前記ベクトルデータの次元に対応付けた上で前記ベクトルデータを生成し、
前記範囲設定器は、前記ベクトルデータの次元ごとに前記正常範囲を設定し、
前記異常判定器は、前記新たな演算結果の種別に対応する前記ベクトルデータ上の次元において前記新たな演算結果が前記正常範囲内に含まれているか否かに基づき、前記新たな演算結果が正常であるか否かを判定する
ことを特徴とする請求項１記載の異常検知装置。
【請求項３】
前記範囲設定器は、前記分割器が生成した前記ベクトルデータの各前記次元における最小値を、前記正常範囲の対応する次元における下限値として設定し、
前記範囲設定器は、前記分割器が生成した前記ベクトルデータの各前記次元における最大値を、前記正常範囲の対応する次元における上限値として設定する
ことを特徴とする請求項２記載の異常検知装置。
【請求項４】
前記異常判定器は、前記新たな演算結果が前記ベクトルデータのベクトル空間上で最も近い前記グループを最近接グループとして特定し、
前記異常判定器は、前記最近接グループに対して前記範囲設定器が設定した前記正常範囲内に前記新たな演算結果が含まれる場合は前記新たな演算結果が正常であると判定し、含まれない場合は異常であると判定する
ことを特徴とする請求項２記載の異常検知装置。
【請求項５】
前記異常判定器は、前記ベクトルデータのベクトル空間上における各前記グループそれぞれの平均値のなかで前記新たな演算結果と最も近いものを前記最近接グループとして特定する
ことを特徴とする請求項４記載の異常検知装置。
【請求項６】
前記分割器は、前記複数の演算結果として、前記プロセッサが時系列にしたがって前記ソフトウェアを実行することにより得られる時系列データを取得し、
前記異常検知装置は、前記時系列データ内の各時刻における前記演算結果が前記グループ間で遷移する遷移パターンを算出する遷移パターン算出器を備え、
前記異常判定器は、前記新たな演算結果が前記正常範囲内に含まれる場合であっても、前記遷移パターンから逸脱している場合は異常であると判定する
ことを特徴とする請求項１記載の異常検知装置。
【請求項７】
前記異常検知装置は、前記プロセッサが時系列にしたがって前記ソフトウェアを実行することにより得られる新たな時系列データとして前記新たな演算結果を取得し、
前記遷移パターン算出器は、前記新たな時系列データ内の各時刻における前記新たな演算結果が前記グループ間で遷移する新たな遷移パターンの発生頻度を前記グループ間の遷移経路ごとに算出し、
前記異常判定器は、前記新たな遷移パターンの発生頻度が少なくともいずれかの前記時刻において所定閾値未満である場合は、前記新たな演算結果が前記正常範囲内に含まれる場合であっても異常であると判定する
ことを特徴とする請求項６記載の異常検知装置。
【請求項８】
前記分割器は、前記複数の演算結果として、前記プロセッサが前記ソフトウェアを実行する途中過程において算出するパラメータを取得する
ことを特徴とする請求項１記載の異常検知装置。
【請求項９】
前記ソフトウェアは、制御対象を制御するための制御指令値を演算する処理を実装しており、
前記分割器は、前記複数の演算結果として、前記プロセッサが前記ソフトウェアを実行することにより得られる前記制御指令値を取得する
ことを特徴とする請求項１記載の異常検知装置。
【請求項１０】
前記ソフトウェアは、制御対象を制御するための制御指令値を演算する処理を実装しており、
前記分割器は、前記複数の演算結果として、前記制御対象が備えているセンサが出力する信号値または前記信号値に対して加工処理を施した後の加工値を取得する
ことを特徴とする請求項１記載の異常検知装置。
【請求項１１】
前記ソフトウェアは、内燃機関を制御するための制御指令値として、前記内燃機関の空気量、前記内燃機関の燃料噴射量、および前記内燃機関の点火時期を演算する処理を実装しており、
前記分割器は、前記複数の演算結果として、前記プロセッサが前記ソフトウェアを実行することにより算出する前記空気量、前記燃料噴射量、および前記点火時期を取得する
ことを特徴とする請求項１記載の異常検知装置。
【請求項１２】
前記ソフトウェアは、鉄鋼プラントの圧延プロセスを制御するための制御指令値として、前記圧延プロセスにおける張力、前記圧延プロセスにおける圧下位置、および前記圧延プロセスにおける圧延材移動速度を演算する処理を実装しており、
前記分割器は、前記複数の演算結果として、前記プロセッサが前記ソフトウェアを実行することにより算出する前記張力、前記圧下位置、および前記圧延材移動速度を取得する
ことを特徴とする請求項１記載の異常検知装置。
【請求項１３】
前記異常検知装置は、前記異常判定器による判定結果を報知する報知器を備えた
ことを特徴とする請求項１記載の異常検知装置。
【請求項１４】
前記ソフトウェアは、端末機器の動作を制御する処理を実装しており、
前記分割器は、前記複数の演算結果として、前記端末機器が備えるプロセッサが前記ソフトウェアを実行することにより得られるパラメータを、複数の前記端末機器からそれぞれ取得する
ことを特徴とする請求項１記載の異常検知装置。
【請求項１５】
前記異常判定器は、前記新たな演算結果が前記複数の演算結果のうちいずれかと一致する場合は、前記新たな演算結果が正常であると判定し、いずれとも一致しない場合は異常であると判定する
ことを特徴とする請求項１記載の異常検知装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアによる演算結果の異常を検知する技術に関する。
【背景技術】
【０００２】
下記特許文献１は、『計装システムの時系列データを活用し、プラント設備の故障等の異常予兆を検知する装置の検知精度を向上させる。』ことを課題とする技術として、『局所時系列データ抽出部１０２が、複数の時系列データの組を入力し、この組に対して所定の時間区分の手法を適用して複数の時系列データの組を時間で区分し、時間区分された各時系列データを局所時系列データを抽出し、局所時系列データモデル推定部１０３が、抽出された各局所時系列データを、所定のモデル推定手法を用いてモデル推定し、局所時系列データクラスタリング部１０４が、モデル推定された各局所時系列データを複数のクラスタに分割すると共にクラスタ毎にクラスタを代表する代表局所パラメータを求める。そして、外れ値検出部１０６が、代表局所パラメータに基づき、所定期間の評価対象データに対して、いずれかの代表局所パラメータとの距離として予め定義された値が閾値を超える外れ値かどうかを検出する。』という技術を開示している（要約参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−１７５１０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
制御対象を電子的に制御するための処理を実装した制御ソフトウェアは、実装した制御処理が比較的頻繁に更新される。この更新は、例えばネットワークを介して更新版ソフトウェアを配布することにより実施される。このように頻繁に更新されるソフトウェアは、例えば実装上のエラーにより誤った制御指令値を出力する可能性がある。【０００５】
上記特許文献１記載の技術は、プラントなどの制御対象の異常、特に外れ値異常を検出するためのものである。かかる異常は、主に制御対象において発生した異常を検出することを目的としている。しかし制御ソフトウェアそのものにおいて異常が発生している場合においては、制御対象の異常を検出するよりもむしろ、制御ソフトウェアの異常を検出する方が、より適切な措置をとることができると考えられる。上記特許文献１は、制御ソフトウェアの処理異常を検出することについては必ずしも十分に考慮していない。【０００６】
本発明は、上記のような課題に鑑みてなされたものであり、様々なソフトウェアの処理異常を検出することができる異常検知装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る異常検知装置は、ソフトウェアが出力する出力データ系列をあらかじめ１以上のクラスタに分割し、いずれかのクラスタに含まれる出力データは正常であると判定し、いずれのクラスタにも含まれない出力データは異常であると判定する。
【発明の効果】
【０００８】
本発明に係る異常検知装置によれば、ソフトウェアの様々な処理異常を検出することができる。これにより、制御対象の信頼性を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】実施形態１に係る異常検知装置１００の構成を説明するブロック図である。
【図２】ＲＯＭ１２０が格納しているソフトウェアの構成を示す図である。
【図３】異常検知部１２２の詳細構成を示す機能ブロック図である。
【図４】データ分割器１２２１の内部処理を説明する図である。
【図５】データ分割器１２２１によるクラスタリングの結果を例示する図である。
【図６】範囲設定器１２２２の内部処理を説明する図である。
【図７】図５で示したクラスタリング結果に対して範囲設定器１２２２が正常範囲を設定した結果を示す図である。
【図８】異常判定器１２２３の内部処理を説明する図である。
【図９】実施形態２におけるＲＯＭ１２０が格納しているソフトウェアの構成を示す図である。
【図１０】実施形態２における異常検知部１２２の詳細構成を示す機能ブロック図である。
【図１１】実施形態３における異常検知部１２２の詳細構成を示す機能ブロック図である。
【図１２】経時パターン頻度演算器１２２４の内部処理を説明する図である。
【図１３】経時パターン頻度演算器１２２４が演算した経時的遷移パターンの発生頻度の例を示す図である。
【図１４】実施形態３における異常判定器１２２３の内部処理を説明する図である。
【図１５】実施形態４におけるＲＯＭ１２０が格納しているソフトウェアの構成を示す図である。
【図１６】実施形態４における異常検知部１２２の詳細構成を示す機能ブロック図である。
【図１７】実施形態５における異常検知部１２２の詳細構成を示す機能ブロック図である。
【図１８】実施形態６における制御対象２００の具体例を示す図である。
【図１９】実施形態７における制御対象２００の具体例を示す図である。
【図２０】実施形態８における異常検知部１２２の詳細構成を示す機能ブロック図である。
【図２１】実施形態９に係る異常検知装置１００およびその周辺構成を示す図である。
【発明を実施するための形態】
【００１０】
＜実施の形態１＞
図１は、本発明の実施形態１に係る異常検知装置１００の構成を説明するブロック図である。ここでは異常検知装置１００が実行するソフトウェアの異常を異常検知装置１００自身が検知する構成例を説明するが、これに限るものではない。
【００１１】
異常検知装置１００は、ソフトウェアによる演算結果の異常を検知するための装置である。異常検知装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１０、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２０、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３０、データバス１４０、入力回路１５０、入出力ポート１６０、出力回路１７０を備える。
【００１２】
入力回路１５０は、外部からの信号を処理する。ここでいう外部からの信号としては、例えばセンサが出力する検出信号、サーバからのデータ信号、他の制御装置もしくはデータ処理装置からのデータ信号などが考えられる。外部からの信号は、データバス、専用回線、無線などを介して伝送される。入力回路１５０は、外部からの信号を処理した後、入力信号として入出力ポート１６０に対して出力する。入出力ポート１６０は、データバス１４０を介して入力信号をＲＡＭ１３０に対して書き込む。ＲＯＭ１２０は、ＣＰＵ１１０が実行するソフトウェアを格納している。ＣＰＵ１１０は、ＲＡＭ１３０が一時的に格納している値を用いてソフトウェアを実行する。ＣＰＵ１１０がソフトウェアを実行することにより得られた演算結果のうち、異常検知装置１００の外部へ送り出すデータ値は、データバス１４０を介して入出力ポート１６０に対して送信され、さらに入出力ポート１６０はこれを出力信号として出力回路１７０に対して出力する。出力回路１７０は、出力信号を異常検知装置１００の外部への信号として出力する。ここでいう外部への信号としては、アクチュエータの駆動信号、サーバに対するデータ信号、他の制御装置もしくはデータ処理装置に対するデータ信号などが考えられる。
【００１３】
図２は、ＲＯＭ１２０が格納しているソフトウェアの構成を示す図である。ＲＯＭ１２０は、ＣＰＵ１１０が実行するソフトウェアとして、処理部１２１と異常検知部１２２を格納している。以下では記載の便宜上、これらソフトウェアを動作主体として説明する場合があるが、実際にこれらソフトウェアを実行するのはＣＰＵ１１０であることを付言しておく。
【００１４】
処理部１２１は、ＲＡＭ１３０が格納している入力信号を用いて、例えば制御指令値やデータ処理結果などを演算する。処理部１２１は、演算結果を図１で説明した出力信号として、ＲＡＭ１３０およびデータバス１４０を介して出力する。異常検知部１２２は、処理部１２１が演算するパラメータを用いて、処理部１２１の処理異常を検知する。異常検知部１２２が処理異常を検出するパラメータは、処理部１２１による演算結果（すなわち出力信号）であってもよいし、演算結果を取得する過程において中間的に演算するパラメータでもよい。異常検知部１２２による判断結果（正常もしくは異常）は、ＲＡＭ１３０、入出力ポート１６０、出力回路１７０を経て、外部への信号として出力される。
【００１５】
図３は、異常検知部１２２の詳細構成を示す機能ブロック図である。異常検知部１２２は、データ分割器１２２１、範囲設定器１２２２、異常判定器１２２３を備える。これら演算器の詳細についてさらに説明する。
【００１６】
図４は、データ分割器１２２１の内部処理を説明する図である。データ分割器１２２１は、処理部１２１が演算することにより得られたデータ列を、１以上のクラスタへ分割する。クラスタリングの具体的手法としては、例えばｋ−ｍｅａｎｓ法を用いることができる。ｋ−ｍｅａｎｓ法の詳細については一般によく知られているので、ここでは格別に言及しない。
【００１７】
データ分割器１２２１は、クラスタリングの結果としてクラスタデータを出力する。クラスタデータは例えば、（ａ）データ列内の各データが所属するクラスタ番号、（ｂ）各クラスタに属するデータの平均値（中心ベクトル）、などを記述することができる。
【００１８】
図５は、データ分割器１２２１によるクラスタリングの結果を例示する図である。ここでは２次元のベクトルデータを４つのクラスタに分割した例を示した。処理部１２１による演算結果は、１以上のデータ種別を含む。例えば（ａ）温度に関するデータを演算した結果、（ｂ）速度に関するデータを演算した結果、などである。これらデータ種別をベクトルの各次元に対応させることにより、処理部１２１による演算結果をベクトルデータとみなすことができる。データ分割器１２２１は、このベクトルデータの次元ごとにクラスタの境界を設定する。
【００１９】
処理部１２１による演算結果をベクトルデータとして取り扱う処理は、処理部１２１自身が実施してもよいしデータ分割器１２２１が実施してもよい。いずれの場合であってもデータ分割器１２２１は、処理部１２１による演算結果内に含まれるデータ種別ごとにデータ列（例えば時系列に沿った複数回の演算結果）を取得し、そのデータ種別ごとにクラスタの境界を定める。
【００２０】
図６は、範囲設定器１２２２の内部処理を説明する図である。範囲設定器１２２２は、データ分割器１２２１によってクラスタリングされたデータ列を用いて、処理部１２１による演算結果が正常とみなされる範囲を設定する。いずれかのクラスタに対応する正常範囲内に含まれる演算結果は、正常であるとみなされる。
【００２１】
範囲設定器１２２２は、具体的には、（ａ）各クラスタに属するデータ列の各次元における最小値を、当該クラスタに対応する正常範囲の当該次元における下限値として設定し、（ｂ）各クラスタに属するデータ列の各次元の最大値を、当該クラスタに対応する正常範囲の当該次元における上限値として設定する。
【００２２】
範囲設定器１２２２は、正常範囲を設定した結果として範囲データを出力する。範囲データは、各クラスタに対応する正常範囲を規定する各次元の下限値と上限値を記述している。
【００２３】
図７は、図５で示したクラスタリング結果に対して範囲設定器１２２２が正常範囲を設定した結果を示す図である。データ分割器１２２１が生成した各クラスタに対して、正常範囲の上下限値がそれぞれ設定されている。
【００２４】
図８は、異常判定器１２２３の内部処理を説明する図である。異常判定器１２２３は、範囲設定器１２２２が正常範囲を設定した後において処理部１２１から新たな演算結果を取得し、設定された正常範囲に基づき当該新たに取得した演算結果が正常であるか否かを判定する。
【００２５】
異常判定器１２２３は、以下の処理により異常判定を実施する。（ａ）新たに取得した演算結果に最も近いクラスタを特定する。具体的には、各クラスタの中心ベクトル（各次元の平均値）のうち、ベクトル空間上において新たに取得した演算結果に対して最も近いものを特定する。（ｂ）新たに取得した演算結果が、特定した中心ベクトルに対応する正常範囲の上下限値の範囲内に収まっている場合は、正常であると判定する。新たに取得した演算結果が正常範囲の上下限値の範囲内に収まっていない場合は、異常であると判定する。
【００２６】
＜実施の形態１：まとめ＞
本実施形態１に係る異常検知装置１００は、処理部１２１による演算結果をクラスタリングすることにより正常範囲を設定し、新たな演算結果がその正常範囲内に含まれる場合は正常であると判定する。これにより、ＣＰＵ１１０が実行するソフトウェア（すなわち処理部１２１）が処理異常を生じさせている場合、その異常を検知して当該ソフトウェアを備えるシステムの信頼性を高めることができる。
【００２７】
本実施形態１において、データ分割器１２２１と範囲設定器１２２２が正常範囲を設定する際に用いるデータ列としては、例えば処理部１２１が正常動作していると考えられる時点（正常動作の実績があるとき）における演算結果を用いることができる。これに対し異常判定器１２２３が異常判定を実施する対象とするデータは、例えば処理部１２１が異常動作している可能性がある時点（正常動作の実績がないとき）における演算結果である。１例としては、処理部１２１が実行する処理内容が更新されたときがこれに相当する。以下の実施形態においても同様である。
【００２８】
＜実施の形態２＞
実施形態１において、データ分割器１２２１と範囲設定器１２２２は、処理部１２１が出力するデータ列（演算結果）を用いて正常範囲を設定することを説明した。この正常範囲は、処理部１２１が出力するデータ列に代えて、外部から与えるデータ列によって設定することもできる。本発明の実施形態２では、その具体的な構成例について説明する。
【００２９】
図９は、本実施形態２におけるＲＯＭ１２０が格納しているソフトウェアの構成を示す図である。ソフトウェア構成は実施形態１と同様であるが、異常検知部１２２は正常範囲を設定するために用いるデータ列として、外部からの信号によって与えられるデータ列を受け取る。異常検知装置１００のその他構成は実施形態１と概ね同様であるため、以下では差異点を中心に説明する。
【００３０】
異常検知部１２２が用いる外部からの信号は、実施形態１と同様に入力回路１５０などを介してＲＡＭ１３０に対してデータとして書き込まれる。外部からの信号は実施形態１と同様に、例えばセンサが出力する検出信号、サーバからのデータ信号、他の制御装置もしくはデータ処理装置からのデータ信号などが考えられる。
【００３１】
図１０は、本実施形態２における異常検知部１２２の詳細構成を示す機能ブロック図である。異常検知部１２２は、実施形態１と同様の構成を有するが、データ分割器１２２１および範囲設定器１２２２は外部から与えられるデータ列を用いてクラスタリングおよび正常範囲設定をそれぞれ実施する点が、実施形態１とは異なる。
【００３２】
データ分割器１２２１、範囲設定器１２２２、異常判定器１２２３が実施する処理の内容は、実施形態１と同様である。すなわち異常判定器１２２３は、処理部１２１による演算結果が、データ分割器１２２１と範囲設定器１２２２によって設定された正常範囲内に収まっている場合は正常と判定し、収まっていない場合は異常と判定する。
【００３３】
＜実施の形態２：まとめ＞
本実施形態２に係る異常検知装置１００は、外部から与えられるデータ列を用いてあらかじめ正常範囲を設定しておき、その正常範囲にしたがって処理部１２１の異常を検出することができる。これにより実施形態１と同様の効果を発揮することができる。あらかじめ正常範囲を設定する際に用いるデータ列としては、例えば異常検知装置１００および処理部１２１と同型の装置であって、正常稼働実績がある装置が出力するデータ列などが考えられる。
【００３４】
本実施形態２において、正常範囲を設定する際に用いるデータ列として、外部から与えられるデータ列と処理部１２１が出力するデータ列を併用することもできる。例えばこれらデータ列を単純に足し合わせてデータ量を増やしてもよいし、処理を実施するタイミングに応じていずれかのデータ列を選択してもよい。
【００３５】
＜実施の形態３＞
実施形態１〜２では、処理部１２１による演算結果がいずれかのクラスタに対応する正常範囲内に収まるか否かによって、その演算結果が異常であるか否かを判定することを説明した。しかし実際の運用環境においては、個々のデータを個別的に見ると正常範囲内に収まっているものの、各データの経時的変化が異常である場合も存在する。そこで本発明の実施形態３では、処理部１２１が出力するデータ列の経時的変化パターンが正常であるか否かを追加的に判定する構成例を説明する。
【００３６】
図１１は、本実施形態３における異常検知部１２２の詳細構成を示す機能ブロック図である。異常検知部１２２は、実施形態１で説明した構成に加えて経時パターン頻度演算器１２２４を備える。異常検知装置１００のその他構成は実施形態１と概ね同様であるため、以下では差異点を中心に説明する。
【００３７】
データ分割器１２２１と範囲設定器１２２２は、実施形態１と同様に、処理部１２１が出力するデータ列を用いてクラスタリングと正常範囲設定を実施する。処理部１２１が出力するデータ列は、ＣＰＵ１１０が処理部１２１を実行するごとに得られた値をその実行時刻に対応して経時的に記述した時系列データであるものとする。
【００３８】
経時パターン頻度演算器１２２４は、処理部１２１が出力するデータ列内に含まれる個々のデータが、時間経過にともなってクラスタ間で遷移する経時的遷移パターンを特定し、そのパターンごとに発生頻度を算出する。具体例については後述の図１３で改めて説明する。
【００３９】
図１２は、経時パターン頻度演算器１２２４の内部処理を説明する図である。経時パターン頻度演算器１２２４は、以下の手順によりデータ列の経時的遷移パターンおよびその発生頻度を演算する。
【００４０】
（図１２：演算手順ステップ１）
経時パターン頻度演算器１２２４は、処理部１２１が出力するデータ列内のデータｋ（ｋは時刻を表す添え字）がデータｋ＋１へ経時変化したとき、データｋが属するクラスタｋとデータｋ＋１が属するクラスタｋ＋１をそれぞれ特定する。データが属するクラスタを特定する手順としては、例えば実施形態１で説明したように中心ベクトルが最も近いクラスタを特定することが考えられる。本ステップにより、データがクラスタｋからクラスタｋ＋１へ遷移する経時的遷移パターンが特定される。
【００４１】
（図１２：演算手順ステップ２）
経時パターン頻度演算器１２２４は、処理部１２１が出力するデータ列内の各データがクラスタｋからクラスタｋ＋１へ経時変化した回数を求める。経時パターン頻度演算器１２２４は、処理部１２１が出力するデータ列内のその他データについても同様に、経時的遷移パターンおよびその発生頻度を演算する。
【００４２】
図１３は、経時パターン頻度演算器１２２４が演算した経時的遷移パターンの発生頻度の例を示す図である。経時パターン頻度演算器１２２４は、クラスタ間の経時的遷移パターンを演算してもよいし、これに代えて各クラスタに対応する正常範囲間の経時的遷移パターンを演算してもよい。ここでは正常範囲間の経時的遷移パターンを演算した例を示した。また経時パターン頻度演算器１２２４は、例えば経時的遷移パターンの発生頻度をデータの更新回数で割るなど、計算しやすい方法によって発生頻度を演算してもよい。
【００４３】
図１４は、本実施形態３における異常判定器１２２３の内部処理を説明する図である。異常判定器１２２３は、経時パターン頻度演算器１２２４があらかじめ図１２で説明した発生頻度を演算した後、処理部１２１から新たな時系列データを取得し、以下の手順にしたがってその新たな時系列データが正常であるか否かを判定する。
【００４４】
（図１４：判定手順ステップ１）
異常判定器１２２３は、処理部１２１が出力する新たなデータ列内のデータｋとデータｋ＋１（ｋは時刻を表す添え字）について、図１２で説明したステップ１と同様の手順により、属するクラスタｋとクラスタｋ＋１をそれぞれ特定する。
【００４５】
（図１４：判定手順ステップ２）
異常判定器１２２３は、処理部１２１が出力するデータ列内の各データがクラスタｋからクラスタｋ＋１へ（または各クラスタに対応する正常範囲ｋから正常範囲ｋ＋１へ）経時変化した回数を求める。異常判定器１２２３は、その経時的遷移パターンの発生頻度が所定閾値以上であればその経時的遷移パターンは正常であると判定し、閾値未満であれば異常であると判定する。
【００４６】
図１４下図に示す例においては、範囲３→範囲４の経時的遷移パターンの発生頻度が閾値より低いので、この経時的遷移パターンは異常であると判定する。範囲１→範囲２、範囲２→範囲３の発生頻度は閾値以上なので、正常であると判定する。
【００４７】
異常判定器１２２３が用いる上記閾値は、経時パターン頻度演算器１２２４が図１２〜図１３で説明した手順によりあらかじめ算出した各経時的遷移パターンの発生頻度にしたがって定めることができる。例えば全ての経時的遷移パターンの発生頻度のなかで最も小さいもの（またはそれよりも若干小さい値）を閾値として採用することができる。あるいは経時的遷移パターンごとに閾値を個別に設定してもよい。この場合は、各経時的遷移パターンの発生頻度（またはそれよりも若干小さい値）を、それぞれの閾値として採用することができる。例えば図１４下図の例においては、範囲１→範囲１の判定閾値は範囲１→範囲２の判定閾値よりも小さく設定する。
【００４８】
＜実施の形態３：まとめ＞
本実施形態３に係る異常検知装置１００は、時系列データの経時的遷移パターンおよびその発生頻度をあらかじめ特定しておき、新たな時系列データの経時的遷移パターンおよびその発生頻度がこれに合致しない場合は異常であると判定する。これにより、個々のデータが実施形態１で説明した正常範囲内に収まっている場合であっても、その経時的変化が異常である場合に、これを検出することができる。
【００４９】
本実施形態３で説明した異常判定手法を他実施形態と併用することにより、異常判定の精度を向上させることができる。これによりソフトウェアの信頼性をさらに高めることができる。
【００５０】
＜実施の形態４＞
図１５は、本発明の実施形態４におけるＲＯＭ１２０が格納しているソフトウェアの構成を示す図である。ソフトウェア構成は実施形態１と同様であるが、異常検知部１２２は正常範囲を設定するために用いるデータ列として、処理部１２１が制御対象（例えばアクチュエータ）２００を制御するために演算する制御指令値を用いる。異常検知装置１００のその他構成は実施形態１と概ね同様であるため、以下では差異点を中心に説明する。
【００５１】
図１６は、本実施形態４における異常検知部１２２の詳細構成を示す機能ブロック図である。異常検知部１２２は実施形態１と同様の構成を備えるが、処理部１２１が出力する制御指令値を用いてクラスタリング／正常範囲設定／異常判定を実施する点が、実施形態１とは異なる。
【００５２】
本実施形態４に係る異常検知装置１００は、処理部１２１が出力する制御指令値を用いて実施形態１と同様の異常判定を実施する。これにより、新たに得られた制御指令値が正常範囲内にないことを検出することができる。したがって、制御対象２００が制御指令値を受け取る前の段階における制御ソフトウェア自体の異常を検出することができるので、制御対象において発生した異常と制御ソフトウェアにおいて発生した異常を区別することができる。
【００５３】
＜実施の形態５＞
図１７は、本発明の実施形態５における異常検知部１２２の詳細構成を示す機能ブロック図である。異常検知部１２２は実施形態１と同様の構成を備えるが、異常検知部１２２は正常範囲を設定するために用いるデータ列として、制御対象２００が備えるセンサの出力信号、またはそのセンサ出力信号に対して処理部１２１が所定の処理を施した結果を用いる。異常検知装置１００のその他構成は実施形態１と概ね同様であるため、以下では差異点を中心に説明する。
【００５４】
制御対象２００は、例えば処理部１２１が制御指令値を算出する際に用いるフィードバックを提供するため、制御量に関連するセンサを備えている場合がある。処理部１２１はそのセンサからの出力信号を用いて制御指令値を演算することができる。処理部１２１はさらに、センサからの出力信号に対して信号処理のための演算を施すこともできる。センサ信号に対して施す処理とは、例えばノイズ除去のためのフィルタ処理、物理量変換、センサ特性変化に伴う補償処理（学習処理）などである。
【００５５】
異常検知部１２２は、センサ出力信号またはこれに対して演算を施した結果得られるデータ列に対して、実施形態１で説明した手法により異常判定を実施する。いずれの場合であっても、これらデータ列は処理部１２１が内部的に用いるものを取得する。
【００５６】
本実施形態５に係る異常検知装置１００は、処理部１２１が用いるセンサ出力信号またはこれに対して処理を施した結果を用いて、実施形態１と同様の異常判定を実施する。これにより、処理部１２１が内部的に用いているセンサ信号値またはこれに対する処理の異常を検出することができる。すなわち、制御ソフトウェアがセンサ信号を処理する部分に関連する異常を検出することができる。
【００５７】
＜実施の形態６＞
図１８は、本発明の実施形態６における制御対象２００の具体例を示す図である。本実施形態６における制御対象２００は、エンジンなどの内燃機関である。処理部１２１は内燃機関が備える機能部に対する制御指令値として、（ａ）燃料噴射弁２０１の目標燃料噴射量、（ｂ）電子スロットル２０２の目標空気量、（ｃ）点火プラグ２０３の目標点火時期、を演算する。その他構成は実施形態４と同様である。
【００５８】
本実施形態６に係る異常検知装置１００は、内燃機関の制御指令値（空気量、燃料噴射量、点火時期）を用いて、実施形態１と同様の異常判定を実施する。これにより、新たに得られた制御指令値（空気量、燃料噴射量、点火時期）が正常範囲内にないことを検出できるので、エンジン制御ソフトウェアの異常を検知することができる。さらに当該エンジン制御ソフトウェアを備えるエンジン制御システムの信頼性を高めることができる。
【００５９】
＜実施の形態７＞
図１９は、本発明の実施形態７における制御対象２００の具体例を示す図である。本実施形態７における制御対象２００は、鉄鋼プラントの圧延プロセスである。処理部１２１は圧延プロセスに対する制御指令値として、（ａ）目標張力、（ｂ）目標圧下位置、（ｃ）目標圧延材移動速度、を演算する。その他構成は実施形態４と同様である。
【００６０】
本実施形態７に係る異常検知装置１００は、圧延プロセスの制御指令値（張力、圧下位置、圧延材移動速度）を用いて、実施形態１と同様の異常判定を実施する。これにより、新たに得られた制御指令値（張力、圧下位置、圧延材移動速度）が正常範囲内にないことを検出できるので、圧延プロセス制御ソフトウェアの異常を検知することができる。さらに当該圧延プロセス制御ソフトウェアを備える圧延プロセスおよび鉄鋼プラントの信頼性を高めることができる。
【００６１】
＜実施の形態８＞
実施形態１〜８においては、処理部１２１から新たに得られた演算結果が正常範囲内に含まれるか否かに基づき異常判定を実施することを説明した。このことは、新たに得られた演算結果が正常範囲を設定する際に用いたデータ列のうちいずれかと同一であれば、その新たな演算結果は正常とみなすことができることを意味する。そこで本発明の実施形態８では、このようなデータが正常であることを報知する構成例について説明する。
【００６２】
図２０は、本実施形態８における異常検知部１２２の詳細構成を示す機能ブロック図である。本実施形態８における異常検知部１２２は、実施形態１で説明した構成に加えて検証器１２２５を備える。その他構成は実施形態１と概ね同様であるため、以下では検証器１２２５に関連する差異点を中心に説明する。
【００６３】
検証器１２２５は、データ分割器１２２１／範囲設定器１２２２がクラスタリングと正常範囲設定を実施する際に用いるデータ列（データＡ）を受け取り、これを例えばＲＡＭ１３０などの記憶装置内に保存しておく。検証器１２２５は、データ分割器１２２１／範囲設定器１２２２がクラスタリングと正常範囲設定を実施した後、処理部１２１から新たな演算結果（データＢ）を取得する。検証器１２２５は、データＢがデータＡのうちいずれかと一致する場合はデータＢが正常である旨を報知し、いずれとも一致しない場合は異常である旨を報知する。報知結果は例えばＲＡＭ１３０に格納することもできるし、外部に対する出力信号として出力することもできる。
【００６４】
本実施形態８に係る異常検知装置１００を用いることにより、事前に素性の明らかなデータ（上記データＡ）を用いて、例えば実施形態１〜７で示した異常検知装置１００の動作を検証することができる。したがって、異常検知装置１００および処理部１２１に対応するソフトウェアの信頼性を高めることができる。
【００６５】
＜実施の形態９＞
図２１は、本発明の実施形態９に係る異常検知装置１００およびその周辺構成を示す図である。実施形態１〜８において、処理部１２１と異常検知部１２２は必ずしも同一の装置上に構成する必要はなく、これらを別装置として構成することもできる。例えば図２１に示す構成においては、処理部１２１は端末装置３００上に構成されており、異常検知装置１００（すなわち異常検知部１２２）は端末装置３００から処理部１２１による演算結果を取得する。
【００６６】
図２１に示す構成例において、異常検知装置１００と端末装置３００は適当な通信路によって接続され、異常検知装置１００はその通信路を介して処理部１２１から演算結果を取得して例えばＲＡＭ１３０に格納し、異常検知部１２２はＲＡＭ１３０を介してその演算結果を取得することができる。
【００６７】
＜本発明の変形例について＞
本発明は上記実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換える事が可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について他の構成の追加・削除・置換をすることができる。
【００６８】
以上の実施形態において、異常検知装置１００が備える各演算器の全部または一部を、クラウドコンピューティング環境において構成することもできる。例えばデータ分割器１２２１と範囲設定器１２２２はクラウド上に構築し、処理部１２１はクラウドを利用する１以上の端末装置上に構築することができる。また異常判定器１２２３を各端末装置上に構築し、各端末装置が自身の処理部１２１の異常を検出することもできる。例えば図２１において端末装置３００を複数設け、各端末装置３００は処理部１２１と異常判定器１２２３を備え、クラウド上に構築されたデータ分割器１２２１と範囲設定器１２２２を利用することが考えられる。
【００６９】
上記各構成、機能、処理部、処理手段等は、それらの一部や全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【符号の説明】
【００７０】
１００：異常検知装置
１１０：ＣＰＵ
１２０：ＲＯＭ
１２１：処理部
１２２：異常検知部
１２２１：データ分割器
１２２２：範囲設定器
１２２３：異常判定器
１２２４：経時パターン頻度演算器
１２２５：検証器
１３０：ＲＡＭ
１４０：データバス
１５０：入力回路
１６０：入出力ポート
１７０：出力回路
２００：制御対象
３００：端末装置
【図１】
2017061028.tif 000003
【図２】
2017061028.tif 000004
【図３】
2017061028.tif 000005
【図４】
2017061028.tif 000006
【図５】
2017061028.tif 000007
【図６】
2017061028.tif 000008
【図７】
2017061028.tif 000009
【図８】
2017061028.tif 000010
【図９】
2017061028.tif 000011
【図１０】
2017061028.tif 000012
【図１１】
2017061028.tif 000013
【図１２】
2017061028.tif 000014
【図１３】
2017061028.tif 000015
【図１４】
2017061028.tif 000016
【図１５】
2017061028.tif 000017
【図１６】
2017061028.tif 000018
【図１７】
2017061028.tif 000019
【図１８】
2017061028.tif 000020
【図１９】
2017061028.tif 000021
【図２０】
2017061028.tif 000022
【図２１】
2017061028.tif 000023
【国際調査報告】
2017061028.tif 000024
2017061028.tif 000025
2017061028.tif 000026
2017061028.tif 000027