以下、図面を参照しつつ、本発明に従う実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。
§1 適用例
まず、図1を参照して、本発明が適用される場面の一例について説明する。図1は、本実施の形態に係る制御装置の構成例を示す模式図である。制御装置100は、例えばPLC(プログラマブルロジックコントローラ)である。図1に示されるように、制御装置100は、制御演算部10と、異常判定部20と、更新部30とを備える。
制御演算部10は、制御対象から周期的に収集される状態値を用いて、当該制御対象を制御するための制御演算を実行する。
本明細書において、「状態値」は、任意の制御対象(含む:監視対象)にて観測できる値を包含する。「状態値」は、例えば、任意のセンサにより測定できる物理値、リレーやスイッチなどのON/OFF状態、PLCがサーボドライバに与える位置、速度、トルクなどの指令値、PLCが演算に用いる変数値などを含み得る。
異常判定部20は、制御演算部10によって収集される状態値のうち監視対象に関連する状態値から生成される特徴量と学習データセット41との比較結果を示すスコアを算出する。異常判定部20は、特徴量指定情報43に従って特徴量を生成する。特徴量指定情報43は、状態値の種類と特徴量の種類(または特徴量の生成方法(たとえば算出アルゴリズム))とを指定する情報であり、監視対象毎に予め設定される。異常判定部20によって生成される特徴量の個数は、1または複数である。異常判定部20は、算出したスコアと判定基準情報で示される判定基準(典型的にはしきい値)とに基づいて、監視対象の異常の有無を判定する。学習データセット41および判定基準情報42は、生成される特徴量に応じて予め設定される。
本明細書において、「スコア」は、1または複数の特徴量の組が、外れ値または異常値である可能性の度合いを示す値を意味する。スコアは、その値が大きいほど異常値である可能性が高いように算出される(但し、異常値である可能性が高くなるほどスコアが小さな値を示すようにしてもよい)。スコアの算出方法については、後に詳述する。
異常判定部20は、制御対象を制御するためのユーザプログラム内に命令が規定されることにより実現される。ユーザプログラムは、制御対象に応じて任意に設計される。
更新部30は、外部のサポート装置から更新用の学習データセットおよび判定基準情報を受けて、現在設定されている学習データセット41および判定基準情報42をそれぞれ更新する。
このように、本実施の形態に係る制御装置100は、ユーザプログラム内に命令が規定されることにより実現される異常判定部20を備える。制御装置100は、さらに、異常判定部20が監視対象の異常の有無を判定する際に用いる学習データセット41および判定基準情報42を更新する更新部30を備える。これにより、制御装置100の設計者は、暫定的に作成された学習データセットおよび判定基準情報を用いて監視対象の異常の有無が判定されるようにユーザプログラムを設計することができる。すなわち、設計者は、フィールドエンジニアによる異常の有無の判定方法の調整を考慮することなく、ユーザプログラムを設計することができる。
さらに、フィールドエンジニアは、ユーザプログラムが設計された後に、監視対象の異常の有無を精度良く判定できるように、学習データセットおよび判定基準情報を調整し、調整後の学習データセットおよび判定基準情報を更新部30に提供すればよい。これにより、調整後の学習データセットおよび判定基準情報を用いて、監視対象の異常の有無が判定される。
以上のように、本実施の形態に係る制御装置100によれば、フィールドエンジニアが判定方法の調整作業を行ないやすく、かつ、設計者がユーザプログラムの設計作業を行ないやすくなる。
§2 構成例
<2-1.制御システムの全体構成例>
本発明の実施の形態について、図面を参照しながら詳細に説明する。図2は、本実施の形態に係る制御システムの全体構成例を示す模式図である。
図2に示されるように、本実施の形態に係る制御システム1は、主たる構成要素として、制御対象を制御する制御装置100と、制御装置100に接続される設計ツール装置200と、制御装置100に接続されるサポート装置300とを含む。
設計ツール装置200は、制御装置100を設計するためのツールである。設計ツール装置200は、設計者による操作に応じて、制御対象を制御するためのユーザプログラムを作成する。
設計者は、ユーザプログラムを作成するフェーズ、ユーザプログラムの動作を確認するフェーズ、ユーザプログラムのバグを修正するフェーズなど、様々な場面で設計ツール装置200を使用する。
ユーザプログラムには、監視対象の異常の有無を判定するための命令(以下、「異常判定命令」という)が規定される。設計ツール装置200は、作成されたユーザプログラムと、当該ユーザプログラム内の異常判定命令に対応付けられる、特徴量指定情報と仮の学習データセットと仮の判定基準情報とを制御装置100に設定する。
制御装置100は、PLCなどの、一種のコンピュータとして具現化されてもよい。制御装置100は、フィールドネットワーク2を介して制御対象に配置された1または複数のフィールドデバイスと接続されるとともに、別のフィールドネットワーク3を介して1または複数の操作表示装置400と接続される。なお、操作表示装置400はオプショナルな構成であり、制御システム1の必須の構成ではない。
制御対象は、様々な種類の機械や装置を含み得る。制御対象は、例えば、一軸アクチュエータやエアシリンダなどである。図2に示す例では、制御装置100は、このような制御対象に含まれるサーボドライバ619,629と接続される。サーボドライバ619,629は、サーボモータ618,628の回転速度やトルクをそれぞれ制御する。さらに、制御装置100は、I/O(入出力)ユニット16を介して報知装置18と接続する。
フィールドネットワーク2およびフィールドネットワーク3は、産業用ネットワークを採用することが好ましい。このような産業用ネットワークとしては、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)などが知られている。
制御装置100は、システムプログラムおよび設計ツール装置200によって設定されたユーザプログラムに従った動作を行なう。図1に示す制御演算部10および異常判定部20は、当該システムプログラムおよびユーザプログラムを実行することにより実現される。すなわち、制御装置100は、当該ユーザプログラムに従って、以下の(1)~(3)の処理を実行する。
(1)制御対象から周期的に状態値を収集する処理。
(2)設計ツール装置200によって設定された特徴量指定情報に従って、収集される状態値のうち監視対象に関連する状態値から特徴量を生成する処理。
(3)生成される特徴量と現在設定されている学習データセットとの比較結果を示すスコアを算出し、算出したスコアと現在設定されている判定基準情報(しきい値)とに基づいて、監視対象の異常の有無を判定する処理。
上記の(1)の処理では、制御装置100は、例えば、サーボモータ618,628のトルク値、サーボドライバ619,629の電流値、サーボドライバ619,629の電圧値などの状態値を収集する。
制御装置100は、さらに、サポート装置300から更新用の学習データセットおよび判定基準情報を受け、現在設定されている学習データセットおよび判定基準情報をそれぞれ更新する。当該更新は、図1に示す更新部30によって実行される。そのため、更新が一度もされていないとき、上記の(3)の処理では、設計ツール装置200によって設定された仮の学習データセットと仮の判定基準情報とを用いて、監視対象の異常の有無が判定される。サポート装置300から更新用の学習データセットおよび判定基準情報を受けると、上記の(3)の処理では、当該更新用の学習データセットおよび判定基準情報を用いて、監視対象の異常の有無が判定される。
制御装置100は、監視対象に異常有りと判定すると、その旨を任意の方法で報知してもよい。図2に示す例では、制御装置100は、I/Oユニット16を介して接続される報知装置18を点滅および/または鳴動させることで報知する。報知方法としては、報知装置18に限らず、任意のインジケータ、音声出力装置、音声合成装置、電子メール、任意の端末への通知、などを用いることができる。
サポート装置300は、監視対象の異常の有無の判定が適切に実施されるように、更新用の学習データセットおよび判定基準情報を生成する。サポート装置300は、監視対象に関連する状態値から生成された特徴量を制御装置100から取得し、取得した特徴量に対して解析処理を実行することにより、更新用の学習データセットおよび判定基準情報を生成する。サポート装置300は、生成した更新用の学習データセットおよび判定基準情報を制御装置100に提供する。これにより、制御装置100に設定される学習データセットおよび判定基準情報が更新される。
<2-2.設計ツール装置のハードウェア構成例>
図3は、設計ツール装置200のハードウェア構成例を示す模式図である。設計ツール装置200は、典型的には、汎用のコンピュータで構成される。なお、制御装置100が配置される製造現場における保守性の観点から、設計ツール装置200は、可搬性に優れたノート型のパーソナルコンピュータであることが好ましい。
図3に示す例の設計ツール装置200は、記憶部201と、オペレーティングシステム(OS)を含む各種プログラムを実行するCPU202とを備える。記憶部201は、BIOSや各種データを格納するROM(Read Only Memory)204と、CPU202でのプログラムの実行に必要なデータを格納するための作業領域を提供するRAM206と、CPU202で実行されるプログラムなどを不揮発的に格納するハードディスク(HDD)208とを含む。
設計ツール装置200は、さらに、設計ツール装置200に指示を入力するために設計者が操作するキーボード210およびマウス212を含む操作部203、および情報を設計者に提示するためのディスプレイ214を含む。設計ツール装置200は、制御装置100などと通信するための通信インターフェイス218を含む。通信インターフェイス218は、制御装置100が備えるUSBインターフェイス(図示略)と通信するためにUSB通信モジュールを含み得る。
設計ツール装置200は、光学記録媒体8からそれに格納されている開発支援環境を提供するためのサポートプログラムを読み取るための光学記録媒体読取装置216を含む。
設計ツール装置200が備えるこれらのコンポーネントは、内部バス220を介して互いに通信可能に接続されている。
図3には、CPU202等のプロセッサがプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
<2-3.設計ツール装置のソフトウェア構成例>
図4は、設計ツール装置200のソフトウェア構成例を示す模式図である。図4に示すソフトウェアに含まれる命令コードは、適切なタイミングで読出され、設計ツール装置200のCPU202へ提供されて実行される。また、図4に示すソフトウェアは、光学記録媒体8に格納されて提供されるサポートプログラムに含まれる。
図4に示されるように、設計ツール装置200には、OS240、プログラミングアプリケーション250、ファンクションブロックライブラリ280および付属データ記憶部290が実装される。設計ツール装置200ではOS240が実行され、プログラミングアプリケーション250を実行可能な環境が提供される。
ファンクションブロックライブラリ280は、プログラミングアプリケーション250が利用するPLC用のプログラム部品であるファンクションブロック(FB)のライブラリである。ファンクションブロックライブラリ280は、監視対象毎に予め作成された、当該監視対象の異常の有無を判定するためのファンクションブロック282を含む。
付属データ記憶部290は、監視対象の異常の有無を判定するためのファンクションブロック毎に予め作成された付属データ292を記憶する。
図5は、監視対象の異常の有無を判定するためのファンクションブロックと付属データとの対応関係の一例を示す図である。図5に示す例では、ファンクションブロック282aと付属データ292aとが対応付けられ、ファンクションブロック282bと付属データ292bとが対応付けられている。ファンクションブロック282a,282bは、それぞれ監視対象「A」,「B」の異常の有無を判定するために予め作成されたプログラム部品である。
付属データ292aは、監視対象「A」の異常の有無を判定するために用いられる特徴量を生成するための特徴量指定情報43aと、特徴量指定情報43aに対応する仮の学習データセット41aおよび判定基準情報42aとを含む。付属データ292bは、監視対象「B」の異常の有無を判定するために用いられる特徴量を生成するための特徴量指定情報43bと、特徴量指定情報43bに対応する仮の学習データセット41bおよび判定基準情報42bとを含む。
なお、以下では、特徴量指定情報43a,43b,・・・を特に区別しない場合、特徴量指定情報43a,43b,・・・の各々を「特徴量指定情報43」という。同様に、学習データセット41a,41b,・・・を特に区別しない場合、学習データセット41a,41b,・・・の各々を「学習データセット41」という。判定基準情報42a,42b,・・・を特に区別しない場合、判定基準情報42a,42b,・・・の各々を「判定基準情報42」という。
このように、監視対象毎にファンクションブロック282と仮の学習データセット41と仮の判定基準情報42とが対応付けて予め作成されている。
特徴量指定情報43は、監視対象に応じて適宜設定され、1または複数の特徴量を指定する。例えば監視対象がボールねじのサーボモータである場合、サーボモータのトルクを状態値の種類として指定し、平均値を特徴量として指定する特徴量指定情報が設定される。
学習データセット41は、監視対象が正常であるときに取り得る特徴量を含む学習データのセットである。
判定基準情報42は、監視対象の異常の有無を判定する基準(典型的にはしきい値)を示す情報である。例えば、特徴量と学習データセット41との比較結果を示すスコアがしきい値よりも大きい場合に異常有りと判定され、スコアがしきい値よりも小さい場合に異常無しと判定される。
なお、以下の説明においては、判定基準の典型例としてしきい値を用いる形態について例示するが、判定基準としては、しきい値に限られず、任意の幅を有する許容範囲や、複数の値により規定される条件であってもよい。
付属データ292を作成する段階では、監視対象を実際に動作させていないため、シミュレーション等により暫定的に仮の学習データセット41および判定基準情報42が作成されている。
図4に戻って、プログラミングアプリケーション250は、エディタ252と、コンパイラ254と、デバッガ256と、GUI(Graphical User Interface)モジュール258と、シミュレータ260と、データ格納部270とを含む。プログラミングアプリケーション250に含まれるそれぞれのモジュールは、典型的には、光学記録媒体8(図3参照)にサポートプログラムとして格納された状態で流通して、設計ツール装置200にインストールされる。
エディタ252は、ユーザプログラム130のソースプログラムを作成するための入力および編集といった機能を提供する。より具体的には、エディタ252は、設計者がキーボード210やマウス212を操作してユーザプログラム130のソースプログラムを作成する機能に加えて、作成したソースプログラムの保存機能および編集機能を提供する。エディタ252は、設計者の操作に応じて、ファンクションブロックライブラリ280から選択されたファンクションブロック282を用いて、ユーザプログラム130のソースプログラムを作成する。
コンパイラ254は、ソースプログラムをコンパイルして、制御装置100で実行可能なプログラム形式のユーザプログラム130を生成する機能を提供する。
デバッガ256は、ユーザプログラム130のソースプログラムに対してデバッグを行うための機能を提供する。このデバッグの内容としては、ソースプログラムのうち設計者が指定した範囲を部分的に実行する、ソースプログラムの実行中における変数値の時間的な変化を追跡する、といった動作を含む。
GUIモジュール258は、設計者が各種データやパラメータなどを入力するためのユーザインターフェイス画面を提供する機能を有する。当該ユーザインターフェイス画面は、ディスプレイ214(図3参照)に表示される。GUIモジュール258は、操作部203が受け付けた操作、並びに、ユーザプログラム130に基づいてユーザインターフェイス画面を提供する。
シミュレータ260は、設計ツール装置200内に制御装置100でのプログラムの実行をシミュレーションする環境を構築する。
データ格納部270には、作成されたユーザプログラム130が格納される。ユーザプログラム130の作成が完了すると、通信インターフェイス218(図3参照)を介して、データ格納部270に格納されたユーザプログラム130が制御装置100に設定される。このとき、ユーザプログラム130内に規定されるファンクションブロック282に対応する付属データ292が付属データ記憶部290から読み出され、当該付属データ292も制御装置100に設定される。
このように、設計ツール装置200は、監視対象の異常の有無を判定するための命令を規定するファンクションブロック282を用いてユーザプログラム130を作成するプログラム作成部として動作する。そして、設計ツール装置200は、ファンクションブロック282に対応付けられた仮の学習データセット41および仮の判定基準情報42を制御装置100に設定する。すなわち、設計者は、監視対象に応じたファンクションブロック282を選択することにより、当該監視対象の異常の有無を判定するために用いられる学習データセット41および判定基準情報42を暫定的に設定することができる。
なお、図4に示す例では、ファンクションブロックライブラリ280および付属データ記憶部290が設計ツール装置200に実装されるものとした。しかしながら、ファンクションブロックライブラリ280および付属データ記憶部290は、設計ツール装置200とネットワークを介して接続可能なサーバ装置に実装されてもよい。
図6は、監視対象の異常の有無を判定するためのファンクションブロックの一例を示す図である。図6に示す例のファンクションブロック282では、入力端子「Axis」に監視対象の状態値(軸変数)が入力される。入力端子「Enable」に「TRUE」が入力されると、ファンクションブロック282が実行され、監視対象の異常の有無が判定される。判定結果は、出力端子「Error」から出力される。
図7は、図6に示すファンクションブロックを用いて作成されたユーザプログラムの一例を示す図である。図7に示す例のユーザプログラムでは、ファンクションブロック282の出力端子「Error」から異常有りを示す判定結果が出力されると、「Error Lamp」で示される報知装置18(図2参照)が点灯する。
設計ツール装置200を用いることにより、設計者は、暫定的に作成された付属データ292に対応付けられたファンクションブロック282を用いてユーザプログラムを作成できる。そのため、フィールドエンジニアが監視対象の異常の有無の判定方法の調整を行なう前であったとしても、設計者は、図7に示されるようなユーザプログラム130を作成できる。さらに、設計者は、デバッガ256およびシミュレータ260を利用することにより、作成したユーザプログラム130のバグを修正したり、作成したユーザプログラム130の動作を確認したりできる。
<2-4.制御装置のハードウェア構成例>
図8は、本実施の形態に係る制御装置のハードウェア構成例を示すブロック図である。図8に示す例の制御装置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,…とを含む。
プロセッサ102は、ストレージ108に格納された各種プログラムを読み出して、主メモリ106に展開して実行することで、制御演算部10、異常判定部20および更新部30(図1参照)を実現する。チップセット104は、プロセッサ102と各コンポーネントとの間のデータ伝送などを制御する。
ストレージ108には、基本的な機能を実現するためのシステムプログラム150と、制御対象を制御するためのユーザプログラム130と、特徴量指定情報43と、学習データセット41と、判定基準情報42とが格納される。ユーザプログラム130と特徴量指定情報43と学習データセット41と判定基準情報42とは、上述したように設計ツール装置200から提供され、ストレージ108に格納される。
上位ネットワークコントローラ110は、上位ネットワーク6を介した他の装置との間のデータの遣り取りを制御する。USBコントローラ112は、USB接続を介して、設計ツール装置200またはサポート装置300との間のデータの遣り取りを制御する。
メモリカードインターフェイス114は、メモリカード116を着脱可能に構成されており、メモリカード116に対してデータを書込み、メモリカード116から各種データ(ユーザプログラムやトレースデータなど)を読出すことが可能になっている。
内部バスコントローラ122は、制御装置100に搭載されるI/Oユニット124,…との間でデータを遣り取りするインターフェイスである。
フィールドバスコントローラ118は、フィールドネットワーク2を介した他の装置との間のデータの遣り取りを制御する。同様に、フィールドバスコントローラ120は、フィールドネットワーク3を介した他の装置との間のデータの遣り取りを制御する。
図8には、プロセッサ102がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。あるいは、制御装置100の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
<2-5.サポート装置のハードウェア構成例>
本実施の形態に係るサポート装置300は、一例として、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコン)を用いてプログラムを実行することで実現される。なお、制御装置100が配置される製造現場における保守性の観点から、サポート装置300は、可搬性に優れたノート型のパーソナルコンピュータであることが好ましい。
図9は、本実施の形態に係るサポート装置300のハードウェア構成例を示すブロック図である。図9に示す例のサポート装置300は、CPUやMPUなどのプロセッサ302と、光学ドライブ304と、主記憶装置306と、二次記憶装置308と、USBコントローラ312と、ローカルネットワークコントローラ314と、入力部316と、表示部318とを含む。これらのコンポーネントは内部バス320を介して接続される。
プロセッサ302は、二次記憶装置308に格納された各種プログラムを読み出して、主記憶装置306に展開して実行することで、後述するような解析処理を含む各種処理を実現する。
二次記憶装置308は、例えば、HDD(Hard Disk Drive)やSSD(Flash Solid State Drive)などで構成される。二次記憶装置308には、典型的には、制御装置100との間で異常検知機能に関するデータを遣り取りするためのPLCインターフェイスプログラム324と、解析処理を実現するための解析プログラム326と、OS328とが格納される。二次記憶装置308には、図9に示すプログラム以外の必要なプログラムが格納されてもよい。
サポート装置300は、光学ドライブ304を有している。コンピュータ読取可能なプログラムを非一過的に格納する記録媒体305(例えば、DVD(Digital Versatile Disc)などの光学記録媒体)から、その中に格納されたプログラムが読取られて二次記憶装置308などにインストールされる。
サポート装置300で実行される各種プログラムは、コンピュータ読取可能な記録媒体305を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置300が提供する機能は、OSが提供するモジュールの一部を利用する形で実現される場合もある。
USBコントローラ312は、USB接続を介して制御装置100との間のデータの遣り取りを制御する。ローカルネットワークコントローラ314は、任意のネットワークを介した他の装置との間のデータの遣り取りを制御する。
入力部316は、キーボードやマウスなどで構成され、ユーザ操作を受付ける。表示部318は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ302からの処理結果などを出力する。
図9には、プロセッサ302がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGAなど)を用いて実装してもよい。
<2-6.制御装置およびサポート装置のソフトウェア構成例/機能構成例>
次に、本実施の形態に係る制御システム1を構成する主要な装置のソフトウェア構成例および機能構成例について説明する。図10は、本実施の形態に係る制御システムの主要なソフトウェア構成例を示すブロック図である。
図10を参照して、制御装置100は、主要なソフトウェア構成として、ユーザプログラム130と、更新部30と、時系列データベース(TSDB:Time Series Data Base)140とを含む。
制御装置100は、フィールドから収集される状態値を変数44の形で管理しており、変数44は予め定められた周期で更新される。
ユーザプログラム130は、制御対象を制御するための制御演算命令132と、ファンクションブロック282で規定される命令とを含む。上述したように、ユーザプログラム130は、設計者4が設計ツール装置200を用いて作成され、設計ツール装置200から制御装置100に提供される。
制御演算命令132は、制御対象を制御するための演算の命令を含む。図1に示す制御演算部10は、制御装置100のプロセッサ102が制御演算命令132を実行することにより実現される。
ファンクションブロック282で規定される命令は、監視対象の異常の有無を判定する一連の命令を含む。図1に示す異常判定部20は、制御装置100のプロセッサ102がファンクションブロック282で規定される命令を実行することにより実現される。そのため、ファンクションブロック282を用いることにより、容易に異常判定部20を実現するユーザプログラム130を作成できる。ファンクションブロック282で規定される命令は、特徴量生成命令134と、書込命令135と、スコア算出命令136と、判定命令137とを含む。
特徴量生成命令134は、特徴量指定情報43によって指定される種類の状態値から、特徴量指定情報43によって指定される種類の特徴量(例えば、所定時間に亘る平均値、最大値、最小値など)を生成する命令を含む。
書込命令135は、生成された特徴量を時系列データベース140に書込む命令を含む。
時系列データベース140に順次書込まれる特徴量が特徴量データ45として、サポート装置300に出力される。
スコア算出命令136は、生成された特徴量と学習データセット41で示される特徴量群との距離(例えば、ユークリッド距離)を、生成された特徴量と学習データセット41との比較結果を示すスコアとして算出する命令を含む。
判定命令137は、算出されたスコアと判定基準情報42で示されるしきい値とを比較し、スコアがしきい値を超える場合に異常有りと判定し、スコアがしきい値を超えない場合に異常無しと判定する命令を含む。
更新部30は、制御装置100のプロセッサ102がシステムプログラム150(図8参照)を実行することにより実現される。更新部30は、サポート装置300から更新用の学習データセット51および判定基準情報52を受けると、制御装置100において現在設定されている学習データセット41および判定基準情報42を更新する。すなわち、更新部30は、現在設定されている学習データセット41の内容を、更新用の学習データセット51の内容に更新する。さらに、更新部30は、現在設定されている判定基準情報42の内容を、更新用の判定基準情報52の内容に更新する。
一方、サポート装置300は、主要な機能構成として、解析ツール330と、PLCインターフェイス332とを含む。
解析ツール330は、フィールドエンジニア5の操作に応じて、制御装置100において生成された特徴量からなる特徴量データ45を用いて、更新用の学習データセット51および判定基準情報52を決定する決定部として動作する。解析ツール330は、典型的には、サポート装置300のプロセッサ302が解析プログラム326を実行することで実現される。
PLCインターフェイス332は、制御装置100から特徴量データ45を取得する処理、および、決定された更新用の学習データセット51および判定基準情報52を制御装置100へ送信する処理などを担当する。PLCインターフェイス332は、典型的には、サポート装置300のプロセッサ302がPLCインターフェイスプログラム324を実行することで実現される。
図11は、図10に示す解析ツール330に含まれる機能モジュールの概要を示すブロック図である。図11を参照して、サポート装置300の解析ツール330は、主要な機能構成として、ユーザインターフェイス340と、ファイル管理モジュール350と、画面生成モジュール360と、解析モジュール370と、解析ライブラリ380とを含む。
ユーザインターフェイス340は、ユーザからの設定を受付けるとともに、ユーザに対して各種情報を提供するための統括的な処理を実行する。具体的な実装形態として、ユーザインターフェイス340は、スクリプトエンジン342を有しており、必要な処理を記述したスクリプトを含む設定ファイル344を読込んで、設定された処理を実行する。
ファイル管理モジュール350は、指定されたファイルなどからデータを読込むデータ入力機能352と、生成したデータなどを含むファイルを生成するデータ生成機能354とを含む。
画面生成モジュール360は、入力されたデータなどに基づいて折れ線グラフを生成する折れ線グラフ生成機能362、および、ユーザの操作を受けて各種パラメータを変更するパラメータ調整機能364を含む。パラメータの変更に伴って、折れ線グラフ生成機能362は折れ線を更新することもある。折れ線グラフ生成機能362およびパラメータ調整機能364は、グラフライブラリ366を参照して必要な処理を実行する。
解析モジュール370は、解析ツール330の主要な処理を実現するモジュールであり、パラメータ決定機能376を有している。パラメータ決定機能376は、異常の有無の判定処理に必要なパラメータである、学習データセットおよびしきい値を決定する処理を実行する。
解析ライブラリ380は、解析モジュール370に含まれる機能が処理を実行するためのライブラリを含む。より具体的には、解析ライブラリ380は、パラメータ決定機能376が利用する異常判定エンジン386を含む。異常判定エンジン386が実行する処理は、ユーザプログラム130に規定されるファンクションブロック282のスコア算出命令136および判定命令137(図10参照)に従って実行される処理と実質的に同一である。
このように、サポート装置300の異常判定エンジン386は、制御装置100の時系列データベース140から提供される特徴量(特徴量データ45)を用いて、制御装置100の異常判定部20と実質的に同一の異常判定処理を実行する。
本実施の形態に係る制御システム1には、制御装置100とサポート装置300との両方において、同一の異常判定処理を実現できる環境が提供されている。このような環境によって、制御装置100における異常判定処理をサポート装置300において再現することができ、この結果、制御装置100で実行させるべき異常判定処理を、サポート装置300において決定できる。
より具体的には、サポート装置300の解析モジュール370は、解析ライブラリ380に含まれる異常判定エンジン386による判定結果に基づいて、更新用の学習データセット51および判定基準情報52を決定する。
<2-7.異常判定処理の概要>
次に、本実施の形態に係る制御システムが採用する異常判定処理の概要について説明する。
本実施の形態においては、統計的に得られるデータ集合に対して、監視対象のデータが外れ値であると評価される場合に、異常値として判定する。
図12は、本実施の形態に係る制御システムの異常判定処理の基本的な考え方を説明するための模式図である。図12に示す例では、特徴量指定情報43は、n個の特徴量の各々を指定している。図12を参照して、まず、n次元空間上において、学習データセットに含まれる各学習データで示される特徴量1,2,3,・・・,nに対応する位置を順次プロットする。プロットされた位置の座標値群を正常値群として規定する。
そして、任意のサンプリングタイミングで監視対象から収集された1または複数の状態値から特徴量1,2,3,・・・,nを生成し、当該生成されたそれぞれの特徴量に対応する座標(図12の「入力値」に相当する。)を設定する。
最終的に、n次元空間上における正常値群に対する入力値の外れ度合いに基づいて、当該入力値に対応するサンプリングタイミングにおける監視対象の異常の有無を判定する。図12の正常値群が、監視対象を示す「モデル」に相当する。
このような外れ度合いに基づく異常判定の手法としては、各点から正常値群までの最短距離に基づいて異常の有無を判定する手法(k近傍法)、正常値群を含むクラスタを含めて距離を評価する局所外れ値因子(LoF:local outlier factor)法、パス長さから算出されるスコアを用いるiForest(isolation forest)法などが知られている。
図13は、本実施の形態に係る制御システム1の異常判定処理の手順を概略した模式図である。図13を参照して、任意のサンプリングタイミングにおいて監視対象から状態値のセットを収集したとする。このサンプリングタイミングにおける監視対象の異常の有無を判定することになる。
まず、監視対象から収集可能な複数の状態値のうち、特徴量指定情報43(図10参照)によって指定された種類の状態値1,2,3,・・・nを用いて、特徴量指定情報43によって指定された種類の特徴量1,2,3,・・・,nを生成する。
なお、同一の状態値から複数の特徴量が生成されてもよい。説明の便宜上、少なくとも4個の特徴量を用いる構成を示すが、本実施の形態に係る異常判定処理においては、少なくとも1つの特徴量があればよい。
続いて、1または複数の特徴量からスコアが算出される。そして、算出されたスコアと判定基準情報42(図10参照)で示されるしきい値とを比較して、監視対象の異常の有無を判定する。
本実施の形態に係る異常判定処理においては、予め定められた期間(以下、「フレーム」とも称す。)に亘る状態値の時系列データから特徴量を生成し、生成される特徴量を用いてスコアを算出する。
図14は、本実施の形態に係る制御装置において実行される異常判定処理の手順を示すフローチャートである。図14に示す各ステップは、典型的には、制御装置100のプロセッサ102がプログラム(システムプログラムおよびユーザプログラム)を実行することで実現される。
図14を参照して、制御装置100は、予め定められたフレームの開始条件が成立すると(ステップS50においてYES)、予め定められた1または複数の状態値の収集を開始する(ステップS52)。その後、予め定められたフレームの終了条件が成立すると(ステップS54においてYES)、制御装置100は、当該フレームの期間において収集された状態値のうち特徴量指定情報43によって指定される種類の状態値の時系列データから特徴量指定情報43によって指定される種類の特徴量を生成する(ステップS56)。そして、制御装置100は、生成された1または複数の特徴量に基づいてスコアを算出する(ステップS58)。
より具体的には、スコアは、生成された1または複数の特徴量と現在設定されている学習データセット41とを用いて算出される。
続いて、制御装置100は、算出したスコアが現在設定されている判定基準情報42で示されるしきい値を上回っているか否かを判定する(ステップS60)。算出したスコアがしきい値を上回っていれば(ステップS60においてYESの場合)、制御装置100は、監視対象の異常を報知する(ステップS62)。算出したスコアがしきい値を上回っていなければ(ステップS60においてNOの場合)、制御装置100は、監視対象が正常であると判定する(ステップS64)。そして、ステップS50以下の処理が繰返される。
<2-8.解析処理の概略手順>
次に、本実施の形態に係る解析処理の概略手順について説明する。図15は、本実施の形態に係る解析処理の内容を示す模式図である。図16は、図15に示される(a)~(c)の処理の概要を視覚的に示す模式図である。
図15を参照して、本実施の形態に係る解析処理は、主として、(a)データ入力処理、(b)可視化・ラベル付け処理、(c)しきい値決定処理を含む。
図16を参照して、制御装置100にて生成された特徴量を示す特徴量データ45がサポート装置300へ提供される((a)データ入力処理)。図16に示す例では、特徴量データ45は、監視対象での処理の回数を示すサイクルカウントと、特徴量1,2,3,・・・,nとを含む。
続いて、サポート装置300では、特徴量の可視化および各サンプリングタイミングの特徴量の組に対するラベル付けが実施される((b)可視化・ラベル付け処理)。特徴量の可視化は、基本的には、サポート装置300によって実行され、ラベル付けの全部または一部はユーザが実行してもよい。
より具体的な一例として、ユーザは、グラフなどの形で可視化された特徴量を参照しつつ、監視対象の状態が「正常」および「異常」のいずれであるかを、サンプリングタイミング毎に設定する。
次に、「正常」のラベル付けがされた特徴量の組に基づいて更新用の学習データセット51が生成されるとともに、当該学習データセット51と各サンプリングタイミングの特徴量の組とに基づいて、各サンプリングタイミングにおけるスコアが算出される。そして、算出されたスコアを参照して、異常と判定するためのしきい値を決定する((c)しきい値決定)。
以上のような手順によって、更新用の学習データセット51および判定基準情報52(しきい値を示す情報)が生成される。生成された更新用の学習データセット51および判定基準情報52は、サポート装置300から制御装置100へ提供される。制御装置100は、現在設定されている学習データセット41および判定基準情報42の内容を更新用の学習データセット51および判定基準情報52の内容に更新する。
上述したように、設計ツール装置200は、監視対象の異常の有無を判定するための命令を規定するユーザプログラム130を作成する際に、暫定的に定められた仮の学習データセット41および判定基準情報42を制御装置100に設定する。そのため、ユーザプログラム130を実行することができるものの、当該仮の学習データセット41および判定基準情報42を用いるために、精度良く監視対象の異常の有無を判定できない。しかしながら、サポート装置300は、解析処理を行なうことにより、更新用の学習データセット51および判定基準情報52を生成する。すなわち、フィールドエンジニアは、サポート装置300を用いることにより、学習データセットおよびしきい値を適宜調整することができる。これにより、調整後の学習データセットおよびしきい値を用いた異常判定処理が実行され、監視対象の異常の有無の判定精度を向上させることができる。
なお、図16に示す(a)~(c)の処理は、適宜繰返し実行することが可能であり、監視対象の状態に応じて学習データセットおよび判定基準情報を順次更新することも可能である。
<2-9.サポート装置の処理手順例>
図17は、本実施の形態に係るサポート装置の処理手順の一例を示すフローチャートである。図17を参照して、まず、サポート装置300は、フィールドエンジニアの操作に応じて解析ツール330を起動させると(ステップS2)、解析ツール330に特徴量データ45を読込ませる(ステップS4)。
続いて、解析ツール330は、フィールドエンジニアの選択操作に応じて特徴量の変化を可視化する。フィールドエンジニアは、可視化された特徴量の変化に対して正常および/または異常のラベル付けを行なう(ステップS6)(図15の(b)可視化・ラベル付け処理に対応)。
図18は、図17のステップS6においてフィールドエンジニアに提供されるユーザインターフェイス画面500の一例を示す模式図である。図18を参照して、ユーザインターフェイス画面500は、特徴量の変化を可視化する。典型的には、ユーザインターフェイス画面500においては、特徴量の時間的な変化がグラフ化されており、フィールドエンジニアは、このグラフを参照することで、異常または正常の範囲を設定する。なお、フィールドエンジニアが設定する異常範囲および正常範囲は、監視対象が実際に異常になっているか、正常に動作しているかの情報に基づいて設定してもよいし、フィールドエンジニアが異常として判定したい特徴量の変化を任意に設定するようにしてもよい。すなわち、ユーザインターフェイス画面500において設定される異常範囲および正常範囲は、本実施の形態に係る異常判定処理が出力する「異常」または「正常」である状態を規定するものであり、監視対象が実際に異常であるか正常であるかとは、必ずしも一致しなくてもよい。
より具体的には、ユーザインターフェイス画面500は、特徴量に対する選択受付エリア502と、グラフ表示エリア506と、ヒストグラム表示エリア512とを含む。
選択受付エリア502には、特徴量指定情報43で指定される特徴量を示すリストが表示されており、ユーザは、選択受付エリア502に表示されたリスト上で任意の特徴量を選択する。
グラフ表示エリア506には、選択された特徴量の変化を示すグラフ508が表示される。グラフ508は、サンプリング毎の時系列データ、あるいは、監視対象の処理単位(例えば、処理ワーク単位)などで区切られてもよい。
ヒストグラム表示エリア512には、選択された特徴量の変化の分布を示すヒストグラムが表示される。ヒストグラム表示エリア512に表示されるヒストグラムを確認することで、選択した特徴量の主たる範囲などを知ることができる。
ユーザは、グラフ表示エリア506に表示される特徴量の変化(グラフ508)に対して、データの正常範囲および/または異常範囲を設定できる。より具体的には、ユーザインターフェイス画面500は、ラベル付与ツール514を含む。ラベル付与ツール514は、正常ラベル設定ボタン516と、異常ラベル設定ボタン517と、ラベル設定範囲指定ボタン518とを含む。
フィールドエンジニアは、付与するラベルが正常または異常のいずれであるかに応じて、正常ラベル設定ボタン516または異常ラベル設定ボタン517を選択した後、ラベル設定範囲指定ボタン518を選択し、続けて、グラフ表示エリア506の対象となる領域を指定する操作(例えば、ドラッグ操作)を行う。これによって、指定された領域に対して、設定されたラベルが付与される。
図18には、異常範囲510が設定されている例を示す。異常範囲510に含まれるサンプリングタイミングの特徴量に対しては、「異常」のラベルが付与され、それ以外の特徴量に対しては、「正常」のラベルが付与される。このように、解析ツール330は、ユーザ操作に従って、生成された複数の特徴量のデータ系列の特定範囲に対して、「正常」および「異常」の少なくとも一方のラベルを付与する機能を有していてもよい。
なお、ヒストグラム表示エリア512に表示されるヒストグラムに対しても、データの正常範囲および/または異常範囲を設定できるようにしてもよい。
再度図17を参照して、次に、解析ツール330は、フィールドエンジニアの操作に従って、しきい値の決定処理を実行する(ステップS8)。ステップS8の処理は、図15に示す(c)しきい値決定処理に対応する。
このステップS8においては、デフォルトのしきい値が予め設定されている。フィールドエンジニアは、判定精度を示す指標値を確認しながら、しきい値を調整する。
図19は、図17のステップS8においてユーザに提供されるユーザインターフェイス画面520の一例を示す模式図である。図19を参照して、ユーザインターフェイス画面520は、異常判定処理に用いるしきい値の選択を受付ける。
より具体的には、ユーザインターフェイス画面520は、グラフ表示エリア526を含む。グラフ表示エリア526には、特徴量データ45で示される各サンプリングタイミングの特徴量と学習データセットとに基づいて算出されたスコアの変化を示すグラフ528が表示される。当該学習データセットとして、ステップS8において「正常」とラベル付けされた複数のサンプリングタイミングの特徴量のデータが用いられる。
グラフ表示エリア526に関連付けて、しきい値設定スライダ534が配置されている。しきい値設定スライダ534に対する操作に連動して、設定されているしきい値が変動するとともに、グラフ表示エリア526に表示されるしきい値表示バー535の位置が変動する。このように、しきい値設定スライダ534は、グラフ表示エリア526に表示されたスコアに対するしきい値の設定を受付ける。
グラフ表示エリア526には、指標値を示す数値表示530、および、設定されているしきい値を示す数値表示532が配置されている。しきい値設定スライダ534に対するユーザ操作に連動して、数値表示530,532の値も更新される。
数値表示530が示す指標値は、現在設定されているしきい値により、どの程度正確な判定が可能かを示す値である。より具体的には、指標値は、現在の設定によれば、ユーザにより設定された正常範囲に含まれる特徴量(すなわち、「正常」のラベルが付与されている特徴量)と、ユーザにより設定された異常範囲に含まれる特徴量(すなわち、「異常」のラベルが付与されている特徴量)とをどの程度正確に区別できるのかを示す。
指標値は、例えば、TruePositive軸とFalsePositive軸とにより規定されるROC(Receiver Operating Characteristic)曲線に基づいて、AUC(Area Under the Curve)を求めることによって算出される。
例えば、「正常」のラベルが付与されているデータと、「異常」のラベルが付与されているデータとを用いて、100%から誤判定する確率を差し引いた値を指標値として算出する。誤判定とは、「正常」のラベルが付与されているデータを「異常」と判定する、あるいは、「異常」のラベルが付与されているデータを「正常」と判定することである。
フィールドエンジニアは、グラフ表示エリア526に表示されるグラフ528の形状や、数値表示530が示す指標値を確認しながら、しきい値の設定を適宜実施する。
ユーザインターフェイス画面520のリセットボタン536が選択されると、ユーザインターフェイス画面520がデフォルト状態にリセットされる。
ユーザインターフェイス画面520の更新データ生成ボタン538が選択されると、当該時点において設定されている内容に従って、更新用の学習データセット51および判定基準情報52が生成される。
再度図17を参照して、図18に示すユーザインターフェイス画面500、および、図19に示すユーザインターフェイス画面520において適宜操作され、ユーザインターフェイス画面520の更新データ生成ボタン538が操作されると(ステップS10においてYES)、解析ツール330は、更新用の学習データセット51および判定基準情報52を生成する(ステップS12)。すなわち、解析ツール330は、フィールドエンジニアによるラベル付けおよびしきい値の調整に応じて、更新用の学習データセット51および判定基準情報52を生成する。具体的には、解析ツール330は、「正常」のラベルが付与された各サンプリングタイミングの特徴量を学習データとする更新用の学習データセット51を生成する。さらに、解析ツール330は、調整されたしきい値を示す更新用の判定基準情報52を生成する。
そして、サポート装置300から制御装置100に対して、ステップS12において生成された更新用の学習データセット51および判定基準情報52が送信され(ステップS14)、制御装置100に設定されている学習データセット41および判定基準情報42が更新される。
なお、指標値などを定期的に確認し、指標値が悪い場合には、フィールドエンジニアは、サポート装置300を操作して、制御装置100に設定されている学習データセット41および判定基準情報42を適宜更新してもよい。指標値が悪い場合とは、監視対象が正常な状態であるのに異常と検知してしまった頻度が相対的に多い、および/または、正常と検知したのに監視対象が正常な状態ではなかった頻度が相対的に多い場合である。
<2-10.変形例>
上記の説明では、監視対象毎に生成される特徴量の種類が固定される。しかしながら、監視対象の状態に応じて、異常の有無の判定に適切な特徴量の種類が変動する場合もあり得る。そのため、学習データセット41および判定基準情報42とともに、特徴量指定情報43も更新されてもよい。以下に、ユーザプログラム130の作成時に暫定的に定められた仮の特徴量指定情報43が制御装置に設定された後に、フィールドエンジニアがサポート装置を用いて特徴量指定情報43の内容も更新可能な制御システムについて説明する。
(2-10-1.制御装置およびサポート装置のソフトウェア構成例/機能構成例)
図20は、変形例に係る制御システムの主要なソフトウェア構成例を示すブロック図である。図20に示す例の制御装置100Aは、図10に示す制御装置100と比較して、更新部30の代わりに更新部30Aを含む点で相違する。さらに、ファンクションブロック282で規定される命令は、書込命令135の代わりに書込命令135Aを含む。
書込命令135Aは、フィールドから収集される変数44(状態値)を時系列データベース140に書込む命令を含む。
時系列データベース140に順次書込まれる状態値が生データ46として、サポート装置300Aに出力される。
更新部30Aは、図10に示す更新部30の処理に加えて、サポート装置300から更新用の特徴量指定情報53を受けると、制御装置100Aにおいて現在設定されている特徴量指定情報43を更新する処理を行なう。すなわち、更新部30Aは、更新部30と同様に、現在設定されている学習データセット41および判定基準情報42の内容を、更新用の学習データセット51および判定基準情報52の内容にそれぞれ更新する。さらに、更新部30Aは、現在設定されている特徴量指定情報43の内容を、更新用の特徴量指定情報53の内容に更新する。
図20に示す例のサポート装置300Aは、図10に示すサポート装置300と比較して、解析ツール330の代わりに解析ツール330Aを含む点で相違する。
解析ツール330Aは、フィールドエンジニア5の操作に応じて、制御装置100Aにおいて収集された状態値からなる生データ46を解析し、更新用の学習データセット51、判定基準情報52および特徴量指定情報53を決定する。
図21は、図20に示す解析ツール330Aに含まれる機能モジュールの概要を示すブロック図である。図21を参照して、解析ツール330Aは、図11に示す解析ツール330と比較して、解析モジュール370および解析ライブラリ380の代わりに解析モジュール370Aおよび解析ライブラリ380Aをそれぞれ含む点で相違する。解析モジュール370Aは、解析モジュール370と比較して、特徴量生成機能372と、特徴量選択機能374とをさらに含む点で相違する。解析ライブラリ380Aは、特徴量生成機能372が利用する特徴量生成ライブラリ382と、特徴量選択機能374が利用する特徴量選択ライブラリ384とをさらに含む点で相違する。
特徴量生成機能372は、生データ46に含まれる任意の状態値の時系列データから特徴量を生成する。特徴量生成ライブラリ382には、様々な種類の特徴量(例えば、所定時間に亘る平均値、最大値、最小値など)の各々の生成アルゴリズムが格納されている。
特徴量選択機能374は、異常判定処理に用いる特徴量を選択する処理および特徴量の選択を受付ける処理を実行する。
(2-10-2.解析処理の概略手順)
図22は、変形例に係る解析処理の概要を視覚的に示す模式図である。図22を参照して、変形例に係る解析処理は、主として、(a)データ入力処理、(b)特徴量生成処理、(c)可視化・ラベル付け処理、(d)特徴量選択処理、(e)しきい値決定処理を含む。
図22を参照して、制御装置100Aにて収集された状態値の時系列データである生データ46がサポート装置300Aへ提供される((a)データ入力処理)。生データ46は、サンプリングタイミング毎に1または複数の状態値を含む。
サポート装置300Aは、入力された生データ46を用いて、1または複数の特徴量を生成する((b)特徴量生成)。この特徴量の生成は、解析ツール330Aの特徴量生成機能372を用いて実現される。通常、複数種類の特徴量が生成される。図22に示す例では、特徴量1,2,3,・・・,Nが生成される。
続いて、サポート装置300Aでは、特徴量の可視化および各サンプリングタイミングの特徴量の組に対するラベル付けが実施される((c)可視化・ラベル付け処理)。変形例に係る(c)可視化・ラベル付け処理は、<2-8.解析処理の概略手順>において説明した(b)可視化・ラベル付け処理と同じである。
続いて、収集された状態値から生成される複数の特徴量のうち、異常判定に用いる1または複数の特徴量を選択する((d)特徴量選択)。図22に示す例では、特徴量1,2,k,nの4つが選択されている。
次に、「正常」のラベル付けがされ、かつ選択された特徴量の組に基づいて更新用の学習データセット51が生成される。さらに、当該学習データセット51と各サンプリングタイミングの選択された特徴量の組とに基づいて、各サンプリングタイミングにおけるスコアが算出される。そして、算出されたスコアを参照して、異常と判定するためのしきい値が決定される((e)しきい値決定)。
以上のような手順によって、更新用の学習データセット51、判定基準情報52(しきい値を示す情報)および特徴量指定情報53が生成される。生成された更新用の学習データセット51、判定基準情報52および特徴量指定情報53は、サポート装置300Aから制御装置100Aへ提供される。制御装置100Aは、現在設定されている学習データセット、判定基準情報および特徴量指定情報の内容を更新用の学習データセット51、判定基準情報52および特徴量指定情報53の内容に更新する。
(2-10-3.サポート装置の処理手順例)
図23は、変形例に係るサポート装置の処理手順を示すフローチャートである。図23に示すフローチャートは、図17に示すフローチャートと比較して、ステップS30,S32をさらに含むとともに、ステップS4,S8,S12およびS14の代わりにステップS104,S108,S112およびS114をそれぞれ含む点で相違する。
図23を参照して、サポート装置300Aは、フィールドエンジニアの操作に応じて解析ツール330Aを起動させると(ステップS2)、解析ツール330Aに生データ46を読込ませる(ステップS104)。
続いて、解析ツール330Aは、読込んだ生データ46に対するデータクレンジングを実行する(ステップS30)。データクレンジングは、生データ46に含まれる不要なデータを削除する処理である。例えば、生データ46に含まれる時系列データのうち、分散がゼロである状態値(すなわち、何ら変動していない状態値)を削除する。データクレンジングの処理は、解析ツール330Aが自動的に実行してもよいし、解析ツール330Aが削除対象の状態値の候補を提示し、フィールドエンジニアが明示的に削除対象を選択するようにしてもよい。
さらに、可視化された状態値などを参照して、フィールドエンジニアが不要または不正なデータであると判定した状態値を手動で削除できるようにしてもよい。すなわち、サポート装置300は、生データ46のうち特徴量の生成から除外すべき状態値の選択を受付ける。
その後、解析ツール330Aは、データクレンジング後の生データ46に含まれる状態値に基づいて、1または複数の特徴量を生成する(ステップS32)。より具体的には、解析ツール330Aの特徴量生成機能372が、生データ46から複数の特徴量を生成する。ステップS32においては、可能な限り多くの種類の特徴量が生成されるようにしてもよい(図22の(b)特徴量生成に対応)。
続いて、解析ツール330Aは、フィールドエンジニアの選択操作に応じて特徴量の変化を可視化し、フィールドエンジニアの操作に応じて、可視化された特徴量の変化に対して正常および/または異常のラベル付けを行なう(ステップS6)(図22の(c)可視化・ラベル付け処理に対応)。ステップS6については、<2-9.サポート装置の処理手順例)で説明したため、ここでは詳細な説明を省略する。
次に、解析ツール330Aは、フィールドエンジニアの操作に従って、異常判定に用いる特徴量としきい値とを決定する(ステップS108)。ステップS108の処理は、図22に示す(d)特徴量選択処理および(e)しきい値決定処理に対応する。
図24は、図23のステップS108において、サポート装置300Aがフィールドエンジニアに提供するユーザインターフェイス画面の一例を示す模式図である。図24を参照して、ユーザインターフェイス画面520Aは、主として、異常判定処理に用いる1または複数の特徴量の選択を受付けるとともに、異常判定処理に用いるしきい値の選択を受付ける。
より具体的には、ユーザインターフェイス画面520Aは、特徴量に対する選択受付エリア522と、グラフ表示エリア526とを含む。
選択受付エリア522は、生成された複数の特徴量のうち、異常判定処理に用いられる1または複数の特徴量の選択を受付けるユーザインターフェイスに相当する。より具体的には、選択受付エリア522には、生成された特徴量の内容を示すリストが表示されており、フィールドエンジニアは、表示されたリスト上で任意の特徴量に対応するチェックボックス524をチェックすることで、異常判定処理に用いられる特徴量を選択する。
選択受付エリア522に表示される特徴量は、解析ツール330Aの特徴量選択機能374(図21参照)によって解析された結果に基づいて、重要度が高いと推定されるものがより上位になるようにリストされていてもよい。すなわち、選択受付エリア522には、後述するような手順で決定されたランクに従って、生成された複数の特徴量の表示順序が決定されてもよい。
また、初期の選択受付エリア522には、特徴量選択機能374によって予め選択された特徴量が、デフォルトとして選択されていてもよい。すなわち、選択受付エリア522においては、決定されたランクに従って、生成された複数の特徴量のうち予め定められた数の特徴量が選択された状態で表示されてもよい。図24には、2つの特徴量が選択されている状態を示す。
グラフ表示エリア526の詳細については、図19を参照して上述した通りであるため、詳細な説明を省略する。なお、グラフ表示エリア526に表示されるグラフ528は、選択受付エリア522のチェックボックス524に対するチェックによって選択された1または複数の特徴量に基づいて算出されたスコアの変化を示す。
ユーザインターフェイス画面520Aの更新データ生成ボタン538が操作されると(ステップS10においてYES)、解析ツール330Aは、当該時点において設定されている内容に従って、更新用の学習データセット51、判定基準情報52および特徴量指定情報53を生成する(ステップS112)。すなわち、解析ツール330Aは、図24に示すチェックボックス524に対するチェックによって選択された1または複数の特徴量を指定するための特徴量指定情報53を生成する。さらに、解析ツール330Aは、「正常」のラベルが付与された各サンプリングタイミングの特徴量のうち特徴量指定情報53で指定される特徴量を学習データとする更新用の学習データセット51を生成する。さらに、解析ツール330Aは、調整されたしきい値を示す更新用の判定基準情報52を生成する。
そして、サポート装置300Aから制御装置100Aに対して、ステップS112において生成された更新用の学習データセット51、判定基準情報52および特徴量指定情報53が送信され(ステップS114)、制御装置100Aに設定されている学習データセット41、判定基準情報42および特徴量指定情報43が更新される。
(2-10-4.特徴量の重要度の算出およびランク付け)
図25は、変形例に係るサポート装置の解析ツールが実行する特徴量の重要度を評価する処理を説明するための模式図である。図25を参照して、解析ツール330Aの特徴量選択機能374は、各特徴量の重要度を複数の手法でそれぞれ算出する。図25には、一例として、尖度、ロジスティック回帰、決定木の3つの手法でそれぞれ評価する例を示す。
評価値コラム702に格納される尖度は、対象の特徴量700のデータ系列についての頻度分布の鋭さを評価した値である。尖度が大きいほど、頻度分布のピークが鋭く、分布の裾が広いことを示す。異常検知に用いる統計量としては、尖度が大きいほど有益、すなわち重要であるとみなすことができる。
また、対象の特徴量のデータ系列についての頻度分布の標準偏差を評価値として用いてもよい。この場合、標準偏差が大きいほど、特徴量に変化があり異常検知の能力が高い(すなわち、重要である)と判定できる。
評価値コラム704に格納されるロジスティック回帰は、任意のロジスティック関数を対象の特徴量のデータ系列に適用して、尤度を最大化するロジスティック関数を規定するパラメータを探索する。最終的に探索されたパラメータに対応する尤度を重要度とみなす。すなわち、任意のロジスティック関数でより精度の高い推定ができる特徴量ほど、優先度が高いとみなすことができる。
典型的には、ロジスティック回帰は、特徴量毎にパラメータの探索および尤度の算出を行うことができる。
評価値コラム706に格納される決定木は、対象の特徴量のデータ系列に対して分類木を適用し、その分類能力を重要度として用いるものである。決定木のアルゴリズムとしては、CART、C4.5、ID3などが知られており、いずれのアルゴリズムを用いてもよい。
このように、典型例としては、重要度は、少なくとも、特徴量のデータ系列についての尖度、特徴量のデータ系列に対してロジスティック回帰の実行によって得られる尤度、決定木のアルゴリズムに従って算出される重要度を含む。
以上のように、各特徴量について重要度を示す値を複数の手法でそれぞれ算出し、それぞれの結果を統合した結果が評価値コラム708に格納される。評価値コラム708に格納される各評価値に基づいて、それぞれの特徴量に対するランク付けがなされる(ランクコラム710)。
<2-11.付記>
以上のように、本実施の形態は以下のような開示を含む。
(構成1)
制御対象から周期的に収集される状態値を用いて、前記制御対象を制御するための制御演算を実行する制御演算部(10)と、
前記収集される状態値のうち監視対象に関連する状態値から生成される特徴量と予め設定された学習データセット(101)との比較結果を示すスコアを算出し、算出したスコアと予め設定された判定基準(102)とに基づいて、前記監視対象の異常の有無を判定する異常判定部(20)とを備え、
前記異常判定部(20)は、前記制御対象を制御するためのユーザプログラム(130)内に命令が規定されることにより実現され、
外部から更新用の学習データセット(301)および更新用の判定基準(302)を受けて、現在設定されている学習データセット(101)および判定基準(102)をそれぞれ更新する更新部(30)をさらに備える、制御装置(100,100A)。
(構成2)
前記生成される特徴量は、監視対象毎に予め定められており、
前記生成される特徴量に応じて学習データセット(101)および判定基準(102)が設定される、構成1に記載の制御装置(100,100A)。
(構成3)
前記異常判定部(20)は、前記ユーザプログラム(130)内にファンクションブロック(282)の形で命令が規定されることにより実現される、構成1に記載の制御装置(100,100A)。
(構成4)
監視対象毎に前記ファンクションブロック(282)と仮の学習データセット(101)と仮の判定基準(102)とが対応付けて予め作成されており、
前記ファンクションブロック(282)が規定されることにより、当該ファンクションブロック(282)に対応する仮の学習データセット(101)および仮の判定基準(102)が設定される、構成3に記載の制御装置(100,100A)。
(構成5)
前記異常判定部(20)は、状態値の種類および特徴量の種類を指定する指定情報(103)に従って、前記特徴量を生成し、
前記更新部(30)は、外部から更新用の指定情報(303)を受けて、現在設定されている指定情報(103)を更新する、構成1に記載の制御装置(100A)。
(構成6)
制御システム(1)であって、
制御対象から周期的に収集される状態値を用いて、当該制御対象を制御するための制御演算を実行する制御演算部(10)と、
前記収集される状態値のうち監視対象に関連する状態値から生成される特徴量と予め設定された学習データセット(101)との比較結果を示すスコアを算出し、算出したスコアと予め設定された判定基準(102)とに基づいて、前記監視対象の異常の有無を判定する異常判定部(20)とを備え、
前記異常判定部(20)は、前記制御対象を制御するためのユーザプログラム(130)内に規定されることにより実現され、
前記制御システム(1)は、さらに、
前記監視対象に関連する状態値または前記生成される特徴量を用いて、更新用の学習データセット(301)と更新用の判定基準(302)とを決定する決定部(330,330A)と、
前記更新用の学習データセット(301)および前記更新用の判定基準(302)を受けて、現在設定されている学習データセット(101)および判定基準(102)をそれぞれ更新する更新部(30)とを備える、制御システム(10)。
(構成7)
前記ユーザプログラム(130)を作成するプログラム作成部(200)をさらに備え、
前記プログラム作成部(200)は、
前記異常判定部(20)を実現するための命令を規定するファンクションブロック(282)を用いて前記ユーザプログラム(130)を作成し、
前記ファンクションブロック(282)に対応付けられた仮の学習データセット(101)および仮の判定基準(102)を設定する、構成6に記載の制御システム(1)。
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。