(57)【要約】【課題】対象の機械に起こり得る異常を熟知していないユーザであっても、異常検知システムを適切に設定して異常検知を容易に実行することが可能な異常検知システムを実現する。【解決手段】異常検知システム（１）は、異常定義情報、異常対応ファンクションブロック、および異常判定基準情報を利用可能にする手段（１２０）と、制御プログラムを生成する制御プログラム編集部（１１０）とを有する設定ツール装置（１０）を備え、制御プログラムを実行する制御プログラム実行部（２１０）と、異常判定基準情報を用いた判定をすることにより、異常判定結果を求める異常監視部（２４０）とを有するコントローラ（２０）を備える。【選択図】図１
2019215674.tif 000002
【特許請求の範囲】
【請求項１】
可動の機械要素を含み所定の動作を繰り返す機械の異常を検知するための、設定ツール装置およびコントローラを備える異常検知システムであって、
前記設定ツール装置は、
指定可能な前記機械要素の種類にそれぞれ対応する、
（１）異常検知に用いる特徴量の種類を指定する特徴量指定情報を含む異常定義情報、
（２）前記特徴量を求めるための説明変数値と、前記機械の繰り返し動作の単位期間であるフレーム内の期間であるサブフレームの期間を特定するために用いるサブフレーム情報とを、入力変数値に基づいて求める異常対応ファンクションブロック、および
（３）異常判定基準情報
を利用可能にする手段と、
前記機械要素の種類についてのユーザによる指定を受け付ける指定受付部と、
指定された前記機械要素の種類に対応する前記異常対応ファンクションブロックを自身の一部として含み、当該異常対応ファンクションブロックに前記入力変数値を与える制御プログラムを生成するためのユーザによる指示を受け付け、当該指示に基づいて前記制御プログラムを生成する制御プログラム編集部と、
前記制御プログラム、指定された前記機械要素の種類に対応する前記特徴量指定情報、および指定された前記機械要素の種類に対応する前記異常判定基準情報を出力する設定情報出力部とを備え、
前記コントローラは、
前記設定情報出力部から出力された情報を入力する設定情報入力部と、
前記制御プログラムを所定の実行周期ごとに実行し、前記制御プログラムの実行に伴う前記異常対応ファンクションブロックの実行によって前記説明変数値および前記サブフレーム情報を生成する制御プログラム実行部と、
前記特徴量指定情報によって指定される特徴量を算出するための特徴量算出プログラムを実行することにより、前記サブフレーム情報に基づいて特定される前記サブフレームの期間内の前記説明変数値に基づいて前記特徴量を算出し、前記特徴量に対して前記異常判定基準情報を用いた判定をすることにより、前記機械要素についての異常判定結果を求める異常監視部とを備える、異常検知システム。
【請求項２】
前記異常対応ファンクションブロックは、前記フレームの期間を特定するために用いるフレーム情報を求めるための値をさらに入力し、前記フレーム情報を求める処理を含み、
前記制御プログラム実行部は、前記フレーム情報をさらに生成し、
前記異常監視部は、前記フレーム情報に基づいて特定される前記フレームごとに前記異常判定結果を求める、請求項１に記載の異常検知システム。
【請求項３】
前記利用可能にする手段は、前記異常定義情報をファイル形式で格納し、前記異常対応ファンクションブロックを、利用先の前記制御プログラムごとに決定される情報である、自身の識別名称、前記説明変数の識別情報、および前記サブフレームの識別情報が未定義であるテンプレートの状態で格納し、さらにファイル形式の前記異常定義情報およびテンプレートの状態の前記異常対応ファンクションブロックの追加格納が可能である記録部である、請求項１または２に記載の異常検知システム。
【請求項４】
前記設定ツール装置は、前記コントローラによって求められた前記特徴量と、その特徴量が得られたときの前記機械要素の状態が異常か否かの情報または異常の程度の情報とを収集し、収集した情報を用いた機械学習によって前記異常判定基準情報を生成する機械学習部をさらに備える、請求項１〜３のいずれか一項に記載の異常検知システム。
【請求項５】
可動の機械要素を含み所定の動作を繰り返す機械の異常を検知するための、設定ツール装置およびコントローラを備える異常検知システムに用いられる前記設定ツール装置であって、
指定可能な前記機械要素の種類にそれぞれ対応する、
（１）異常検知に用いる特徴量の種類を指定する特徴量指定情報を含む異常定義情報、
（２）前記特徴量を求めるための説明変数値と、前記機械の繰り返し動作の単位期間であるフレーム内の期間であるサブフレームの期間を特定するために用いるサブフレーム情報とを、入力変数値に基づいて求める異常対応ファンクションブロック、および
（３）異常判定基準情報
を利用可能にする手段と、
前記機械要素の種類についてのユーザによる指定を受け付ける指定受付部と、
指定された前記機械要素の種類に対応する前記異常対応ファンクションブロックを自身の一部として含み、当該異常対応ファンクションブロックに前記入力変数値を与える制御プログラムを生成するためのユーザによる指示を受け付け、当該指示に基づいて前記制御プログラムを生成する制御プログラム編集部と、
前記制御プログラム、指定された前記機械要素の種類に対応する前記特徴量指定情報、および指定された前記機械要素の種類に対応する前記異常判定基準情報を出力する設定情報出力部とを備える、設定ツール装置。
【請求項６】
可動の機械要素を含み所定の動作を繰り返す機械の異常を検知するための、設定ツール装置およびコントローラを備える異常検知システムに用いられるコントローラであって、
制御プログラム、前記機械要素の種類に対応する、異常検知に用いる特徴量の種類を指定する特徴量指定情報、および前記機械要素の種類に対応する異常判定基準情報を入力する設定情報入力部を備え、
前記制御プログラムは、前記特徴量を求めるための説明変数値と、前記機械の繰り返し動作の単位期間であるフレーム内の期間であるサブフレームの期間を特定するために用いるサブフレーム情報とを、入力変数値に基づいて求める、前記機械要素の種類に対応する異常対応ファンクションブロックを自身の一部として含み、当該異常対応ファンクションブロックに前記入力変数値を与え、
さらに、前記制御プログラムを所定の実行周期ごとに実行する制御プログラム実行部と、
前記特徴量指定情報によって指定される特徴量を算出するための特徴量算出プログラムを実行することにより、前記サブフレーム情報に基づいて特定されるサブフレームの期間内の前記説明変数値に基づいて前記特徴量を算出し、前記特徴量に対して前記異常判定基準情報を用いた判定をすることにより、前記機械要素についての異常判定結果を求める異常監視部とを備える、コントローラ。
【請求項７】
請求項１〜４のいずれか一項に記載の異常検知システムにおいて利用可能な前記異常定義情報のデータ構造であって、
前記機械要素の種類を特定する情報、前記特徴量指定情報、前記説明変数の識別名称を生成するために用いられる情報、および前記サブフレーム情報の識別名称を生成するために用いられる情報を含む、前記異常定義情報のデータ構造。
【請求項８】
請求項１〜４のいずれか一項に記載の異常検知システムにおいて用いられる前記異常対応ファンクションブロックであって、利用先の前記制御プログラムごとに決定される情報である、自身の識別名称、前記説明変数の識別名称、および前記サブフレームの識別名称が未定義であるテンプレートの状態である、前記異常対応ファンクションブロック。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば工業製品の製造工程などで使用される、所定の動作を繰り返す機械の異常の検知を行う異常検知システム、設定ツール装置、コントローラ、異常定義情報のデータ構造、および異常対応ファンクションブロックに関する。
【背景技術】
【０００２】
機械の異常の検知を行う技術として、例えば特許文献１に開示されている半導体製造装置管理方法が知られている。該半導体製造装置管理方法では、管理コンピュータが、半導体製造装置に付加した各種センサ類より入手したＩ／Ｏデータから装置全体の動作タイミングを管理する。また、前記管理コンピュータは、その装置全体の動作タイミングを正常な状態と比較してタイミングの差が管理基準を越えた場合に警告を発生させる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平７−２８２１４６号公報（１９９５年１０月２７日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示されている半導体製造装置管理方法では、製造装置の特定箇所の動作タイミングが予め登録されたタイミングからずれたことにより故障の判断をしている。しかし、タイミングを監視する対象箇所をどのようにして決めるかについては言及されていない。
【０００５】
また、所定の動作を繰り返す機械の異常を異常検知システムにより検知するに際して、どのようなデータを収集し、収集したデータに基づいてどのように判定すれば異常を検知できるのかは機械の種類ごとに異なる。したがって、機械の種類別に、これらの事項を反映して、異常検知システムに実行させるプログラムを作成する必要がある。しかしながら、対象の機械に起こり得る異常を熟知しているユーザでないとそのようなプログラムを作成することが困難であるという課題がある。
【０００６】
本発明の一態様は、対象の機械に起こり得る異常を熟知していないユーザであっても、異常検知システムを適切に設定して異常検知を容易に実行することが可能な異常検知システムを実現することを目的とする。
【課題を解決するための手段】
【０００７】
機械において異常が発生しやすいのは可動部である。可動部は、ボールねじ、エアシリンダのような類型化された可動機械要素で構成されていることが多い。したがって、機械全体について異常を検知しようとしなくても、多くの場合、機械を構成している可動機械要素について異常を検知できれば足りる。しかし、機械のユーザは、対象の機械においてどのような種類の可動機械要素が使用されているかは容易に認識できるものの、どのようにすればその機械要素についての異常検知ができるのかまではわからないことが多い。
【０００８】
一方、異常検知システムの経験豊富な提供者においては、機械要素の種類ごとに起こりうる故障の種類および故障の予兆とみなせる異常事象を想定することができる。さらに異常事象を検出するために取得すべきデータの種類や、取得したデータについての適切な処理および判断の手法についての知見を蓄積することができる。ここで、機械要素の種類と故障の種類は、たとえば、潤滑不良によるボールねじの停止であり、異常事象は、たとえば、トルクの増大である。取得すべきデータの種類は、例えば、速度が所定値よりも大きい期間のトルク値であり、適切な処理および判断の手法は、例えば、取得したトルク値の平均値を求めてしきい値と比較することである。
【０００９】
したがって、機械のユーザに対象の機械において使用されている機械要素の種類を指定させ、その指定に基づいてユーザに追加の入力をするよう案内しつつ対象の機械についての異常検知機能を構築することが可能であるようなシステムを提供する。これにより、対象の機械において起こりうる異常の態様について熟知していないユーザであっても、異常検知システムを適切に設定して異常検知を実行することができる。
【００１０】
より具体的には、本発明の一態様に係る異常検知システムは、可動の機械要素を含み所定の動作を繰り返す機械の異常を検知するための、設定ツール装置およびコントローラを備える異常検知システムであって、前記設定ツール装置は、指定可能な前記機械要素の種類にそれぞれ対応する、（１）異常検知に用いる特徴量の種類を指定する特徴量指定情報を含む異常定義情報、（２）前記特徴量を求めるための説明変数値と、前記機械の繰り返し動作の単位期間であるフレーム内の期間であるサブフレームの期間を特定するために用いるサブフレーム情報とを、入力変数値に基づいて求める異常対応ファンクションブロック、および（３）異常判定基準情報を利用可能にする手段と、前記機械要素の種類についてのユーザによる指定を受け付ける指定受付部と、指定された前記機械要素の種類に対応する前記異常対応ファンクションブロックを自身の一部として含み、当該異常対応ファンクションブロックに前記入力変数値を与える制御プログラムを生成するためのユーザによる指示を受け付け、当該指示に基づいて前記制御プログラムを生成する制御プログラム編集部と、前記制御プログラム、指定された前記機械要素の種類に対応する前記特徴量指定情報、および指定された前記機械要素の種類に対応する前記異常判定基準情報を出力する設定情報出力部とを備え、前記コントローラは、前記設定情報出力部から出力された情報を入力する設定情報入力部と、前記制御プログラムを所定の実行周期ごとに実行し、前記制御プログラムの実行に伴う前記異常対応ファンクションブロックの実行によって前記説明変数値および前記サブフレーム情報を生成する制御プログラム実行部と、前記特徴量指定情報によって指定される特徴量を算出するための特徴量算出プログラムを実行することにより、前記サブフレーム情報に基づいて特定される前記サブフレームの期間内の前記説明変数値に基づいて前記特徴量を算出し、前記特徴量に対して前記異常判定基準情報を用いた判定をすることにより、前記機械要素についての異常判定結果を求める異常監視部とを備える。
【００１１】
ここで、利用可能にする手段は、異常定義情報、異常対応ファンクションブロック、および異常判定基準情報を予め格納している設定ツール装置内の記録部、または必要に応じてこれらの情報を外部記録媒体から入手したり通信により外部から入手したりするための構成であってもよい。
【００１２】
また、指定受付部が機械要素の種類についてのユーザによる指定を受け付けることは、機械要素の種類の名称の入力を受け付けること、および機械要素の種類の選択肢からの選択を受け付けることを含むほか、機械要素の種類に対応付けられている異常対応ファンクションブロックの選択を受け付けることのような、間接的に機械要素の種類の選択を受け付けることも含む。
【００１３】
さらに、制御プログラム編集部が制御プログラムを生成することは、ユーザがキーボードなどの入力デバイスを操作して入力した制御プログラムを記憶すること、または記憶している制御プログラムをユーザの操作にしたがい修正すること、であってもよい。
【００１４】
前記構成によれば、対象の機械に起こり得る異常を熟知していないユーザであっても、異常検知システムを適切に設定して異常検知を容易に実行することができる。
【００１５】
本発明の一態様に係る異常検知システムでは、前記異常対応ファンクションブロックは、前記フレームの期間を特定するために用いるフレーム情報を求めるための値をさらに入力し、前記フレーム情報を求める処理を含み、前記制御プログラム実行部は、前記フレーム情報をさらに生成し、前記異常監視部は、前記フレーム情報に基づいて特定される前記フレームごとに前記異常判定結果を求めてもよい。
【００１６】
前記構成によれば、例えば１フレーム内に複数のサブフレームが含まれている場合に、１フレーム内の所定回目のサブフレーム内だけで得られた説明変数値に基づいてフレームごとに異常判定結果を求めることが可能となる。
【００１７】
本発明の一態様に係る異常検知システムでは、前記利用可能にする手段は、前記異常定義情報をファイル形式で格納し、前記異常対応ファンクションブロックを、利用先の前記制御プログラムごとに決定される情報である、自身の識別名称、前記説明変数の識別情報、および前記サブフレームの識別情報が未定義であるテンプレートの状態で格納し、さらにファイル形式の前記異常定義情報およびテンプレートの状態の前記異常対応ファンクションブロックの追加格納が可能である記録部であってもよい。
【００１８】
前記構成によれば、記録部に格納されていない異常定義情報および異常対応ファンクションブロックを記録部に追加格納することにより、異常判定可能な機械要素の種類を増やすことができる。
【００１９】
本発明の一態様に係る異常検知システムでは、前記設定ツール装置は、前記コントローラによって求められた前記特徴量と、その特徴量が得られたときの前記機械要素の状態が異常か否かの情報または異常の程度の情報とを収集し、収集した情報を用いた機械学習によって前記異常判定基準情報を生成する機械学習部をさらに備えてもよい。
【００２０】
前記構成によれば、特徴量と異常判定との因果関係が複雑な場合であっても、適当な異常判定基準情報を生成することができる。
【００２１】
本発明の一態様に係る設定ツール装置は、可動の機械要素を含み所定の動作を繰り返す機械の異常を検知するための、設定ツール装置およびコントローラを備える異常検知システムに用いられる前記設定ツール装置であって、指定可能な前記機械要素の種類にそれぞれ対応する、（１）異常検知に用いる特徴量の種類を指定する特徴量指定情報を含む異常定義情報、（２）前記特徴量を求めるための説明変数値と、前記機械の繰り返し動作の単位期間であるフレーム内の期間であるサブフレームの期間を特定するために用いるサブフレーム情報とを、入力変数値に基づいて求める異常対応ファンクションブロック、および（３）異常判定基準情報を利用可能にする手段と、前記機械要素の種類についてのユーザによる指定を受け付ける指定受付部と、指定された前記機械要素の種類に対応する前記異常対応ファンクションブロックを自身の一部として含み、当該異常対応ファンクションブロックに前記入力変数値を与える制御プログラムを生成するためのユーザによる指示を受け付け、当該指示に基づいて前記制御プログラムを生成する制御プログラム編集部と、前記制御プログラム、指定された前記機械要素の種類に対応する前記特徴量指定情報、および指定された前記機械要素の種類に対応する前記異常判定基準情報を出力する設定情報出力部とを備える。
【００２２】
前記構成によれば、対象の機械に起こり得る異常を熟知していないユーザであっても、異常検知のための処理を含む制御プログラムを容易に作成することができる。
【００２３】
本発明の一態様に係るコントローラは、可動の機械要素を含み所定の動作を繰り返す機械の異常を検知するための、設定ツール装置およびコントローラを備える異常検知システムに用いられるコントローラであって、制御プログラム、前記機械要素の種類に対応する、異常検知に用いる特徴量の種類を指定する特徴量指定情報、および前記機械要素の種類に対応する異常判定基準情報を入力する設定情報入力部を備え、前記制御プログラムは、前記特徴量を求めるための説明変数値と、前記機械の繰り返し動作の単位期間であるフレーム内の期間であるサブフレームの期間を特定するために用いるサブフレーム情報とを、入力変数値に基づいて求める、前記機械要素の種類に対応する異常対応ファンクションブロックを自身の一部として含み、当該異常対応ファンクションブロックに前記入力変数値を与え、さらに、前記制御プログラムを所定の実行周期ごとに実行する制御プログラム実行部と、前記特徴量指定情報によって指定される特徴量を算出するための特徴量算出プログラムを実行することにより、前記サブフレーム情報に基づいて特定されるサブフレームの期間内の前記説明変数値に基づいて前記特徴量を算出し、前記特徴量に対して前記異常判定基準情報を用いた判定をすることにより、前記機械要素についての異常判定結果を求める異常監視部とを備える。
【００２４】
前記構成によれば、対象の機械に起こり得る異常を熟知していないユーザであっても、異常検知を容易に実行することができる。
【００２５】
本発明の一態様に係る異常定義情報のデータ構造は、前記異常検知システムにおいて利用可能な前記異常定義情報のデータ構造であって、前記機械要素の種類を特定する情報、前記特徴量指定情報、前記説明変数の識別名称を生成するために用いられる情報、および前記サブフレーム情報の識別名称を生成するために用いられる情報を含む。
【００２６】
前記構成によれば、異常検知システムは、異常定義データ構造を参照することにより、機械要素の種類に応じた異常検知を実行することができる。
【００２７】
本発明の一態様に係る異常対応ファンクションブロックは、前記異常検知システムにおいて用いられる前記異常対応ファンクションブロックであって、利用先の前記制御プログラムごとに決定される情報である、自身の識別名称、前記説明変数の識別名称、および前記サブフレームの識別名称が未定義であるテンプレートの状態である。
【００２８】
前記構成によれば、異常検知システムは、テンプレートの状態の異常対応ファンクションブロックを個別の制御プログラムの作成に利用することができる。
【発明の効果】
【００２９】
本発明の一態様によれば、対象の機械に起こり得る異常を熟知していないユーザであっても、異常検知システムを適切に設定して異常検知を容易に実行することが可能な異常検知システムを実現することができる。
【図面の簡単な説明】
【００３０】
【図１】本発明の実施形態に係る異常検知システムの構成の一例を示すブロック図である。
【図２】図１に示す異常検知システムの制御対象の機械の一例を示す斜視図である。
【図３】図１に示す異常検知システムの動作の一例の詳細を示すブロック図である。
【図４】図１に示す異常検知システムの動作の一例を示すフローチャートである。
【図５】図１に示す異常検知システムによって特定される異常対応ファンクションブロックの一例を示す図である。
【図６】図１に示す異常検知システムによって特定される異常対応ファンクションブロックの入力および出力の各変数の値を示すグラフである。
【図７】図１に示す異常検知システムの制御対象の機械の変形例を示す模式図である。
【発明を実施するための形態】
【００３１】
〔実施形態〕
以下、本発明の一側面に係る実施形態を、図面に基づいて説明する。
【００３２】
§１  適用例
まず、図１を用いて、本発明が適用される場面の一例について説明する。図１は、本発明の実施形態に係る異常検知システム１の構成の一例を示すブロック図である。異常検知システム１は、工業製品の製造工程等で用いられる、所定の動作を繰り返す機械の異常を検知する。つまり、異常検知システム１は、可動の機械要素を含み所定の動作を繰り返す機械の異常を検知するためのシステムである。可動の機械要素とは、例えば、ボールねじまたはエアシリンダ等であり、所定の動作を繰り返す機械のうちの可動部分である。
【００３３】
また、機械において異常が発生し易い部分は可動部分である。よって、機械の異常を検知する場合、機械全体について異常を検知する必要はなく、機械のうち可動部分について異常を検知すればよい。
【００３４】
異常検知システム１は、可動の機械要素を含み所定の動作を繰り返す機械の異常を検知するための、設定ツール装置１０およびコントローラ２０を備える。設定ツール装置１０は、記録部１２０、指定受付部１６０、制御プログラム編集部１１０、および設定情報出力部１７０を備える。
【００３５】
設定ツール装置１０は、指定可能な機械要素の種類にそれぞれ対応する、（１）異常検知に用いる特徴量の種類を指定する特徴量指定情報を含む異常定義情報、（２）特徴量を求めるための説明変数値と、機械の繰り返し動作の単位期間であるフレーム内の期間であるサブフレームの期間を特定するために用いるサブフレーム情報とを、入力変数値に基づいて求める異常対応ファンクションブロック、および（３）異常判定基準情報を利用可能にする手段として、記録部１２０を備える。
【００３６】
指定受付部１６０は、機械要素の種類についてのユーザによる指定を受け付ける。制御プログラム編集部１１０は、指定された機械要素の種類に対応する異常対応ファンクションブロックを自身の一部として含み、当該異常対応ファンクションブロックに入力変数値を与える制御プログラムを生成するためのユーザによる指示を受け付け、当該指示に基づいて前記制御プログラムを生成する。
【００３７】
設定情報出力部１７０は、前記制御プログラム、指定された機械要素の種類に対応する特徴量指定情報、および指定された機械要素の種類に対応する異常判定基準情報を出力する。
【００３８】
コントローラ２０は、設定情報入力部２７０、制御プログラム実行部２１０、および異常監視部２４０を備える。設定情報入力部２７０は、設定情報出力部１７０から出力された情報を入力する。制御プログラム実行部２１０は、設定ツール装置１０から受信した前記制御プログラムを所定の実行周期ごとに実行し、前記制御プログラムの実行に伴う異常対応ファンクションブロックの実行によって説明変数値およびサブフレーム情報を生成する。
【００３９】
異常監視部２４０は、設定ツール装置１０から受信した特徴量指定情報によって指定される特徴量を算出するための特徴量算出プログラムを実行することにより、サブフレーム情報に基づいて特定されるサブフレームの期間内の説明変数値に基づいて特徴量を算出する。また、異常監視部２４０は、特徴量に対して設定ツール装置１０から受信した異常判定基準情報を用いた判定をすることにより、機械要素についての異常判定結果を求める。
【００４０】
以上の構成により、対象の機械に起こり得る異常を熟知していないユーザであっても、異常検知システム１を適切に設定して異常検知を容易に実行することができる。
【００４１】
§２  構成例
（異常検知システム１の構成）
以下に、より詳細に異常検知システム１について説明する。設定ツール装置１０は、例えば、汎用のコンピュータに設定ツールプログラムをインストールすることにより構成される。設定ツールプログラムとは、設定ツール装置１０が備える各部構成が後述する処理を行うことが可能なようにするプログラムである。設定ツール装置１０は、例えば、指定受付部１６０、制御プログラム編集部１１０、記録部１２０、コンパイル／ビルド部１３０、設定ツール通信部１４０、機械学習部１５０、および設定情報出力部１７０を備えていてもよい。
【００４２】
制御プログラム編集部１１０は、ユーザによる操作にしたがい、機械を制御するための制御プログラムのソースプログラムを入力したり、当該ソースプログラムを修正したりする部分である。制御プログラムは、コントローラ２０が制御対象の機械に対して行う制御の内容が記述されたプログラムである。制御プログラムは、ユーザプログラムと呼ばれることもある。
【００４３】
記録部１２０に記録されている異常定義情報は、ファイル形式のデータであり、機械要素の種類およびイベントの種類の組み合わせごとに形成されている。ここでは、イベントとは、異常事象のことを示している。異常事象とは、正常な状態とは異なる状態であり、故障には至っていない状態を含む。異常定義情報は、独立したファイル形式のデータでなくてもよく、例えば、異常対応ファンクションブロックに含まれるデータであってもよい。
【００４４】
異常定義情報は、異常検知システム１において利用可能なデータ構造を有する。異常定義情報は、機械要素の種類を特定する情報、特徴量指定情報、後述する説明変数の識別名称を生成するために用いられる情報、および後述するサブフレーム情報の識別名称を生成するために用いられる情報を含む。これにより、異常検知システム１は、異常定義情報を参照することにより、機械要素の種類に応じた異常検知を実行することができる。後述する表１、表２に示すように、異常定義情報のデータ構造は、情報の項目（例えば「機械要素の種類」）と情報の内容（例えば「１軸アクチュエータ」）とを対応付けた形式であってよい。
【００４５】
また、１つの異常定義情報（１つの異常定義ファイル）を１つの機械要素の種類および１つのイベントの種類のみに対応付けなくてもよい。例えば、１つの異常定義情報を１つの機械要素の種類、およびその機械要素の種類にて起こり得る複数のイベントの種類に対応付けてもよい。１つの機械要素の種類で起こり得る複数のイベントの種類を１つの異常対応ファンクションブロックで扱ってもよい。
【００４６】
コントローラ２０の制御対象の機械は、フレームごとに略同一の動作を繰り返す、または、フレームごとに略同一の現象、例えば、ワークが通過するという現象を繰り返す。
【００４７】
異常検知システム１における異常対応ファンクションブロックは、説明変数値とフレーム情報としてのフレーム変数値とサブフレーム情報としてのサブフレーム変数値とを、入力変数値に基づいて求める。フレーム情報は、機械の繰り返し動作の単位期間であるフレームの期間を特定するために用いる情報である。フレーム変数値は、フレームごとに異なる値となるようにする。例えば、フレーム変数値は、フレームが１つ進むごとに１だけ増加するようにしてもよい。
【００４８】
サブフレーム情報は、フレーム内の期間であるサブフレームの期間を特定するために用いる情報である。サブフレームは、説明変数値を求めるために必要な異常対応ファンクションブロックの入力の値を取得する期間である。サブフレーム変数値は、現時点がサブフレーム内であるか否かを示す２値の変数値である。サブフレーム変数値は、３値以上の変数値であってもよい。この場合、サブフレーム変数値が所定の値である期間、またはサブフレーム変数値が所定の範囲内にある期間が１つのサブフレームであってもよい。
【００４９】
サブフレーム変数値を用いずにサブフレームを特定してもよい。この場合、例えば、パルス状に変化する変数値を用いて、互いに隣接するパルス間において前方のパルスの立ち上がり時点から後方のパルスの立ち上がり時点までをサブフレームとしてもよい。また、互いに異なる２つの変数を用いて、一方の変数の変数値が変化した時点から他方の変数の変数値が変化した時点までをサブフレームとしてもよい。サブフレーム情報は、サブフレーム変数値のほか、サブフレームの期間を特定するために用いることができるこれらの情報であってもよい。
【００５０】
さらに、フレーム情報を用いずに異常監視するようにしてもよい。例えば、サブフレームが機械の繰り返し動作の単位期間内に１回だけ発生するときは、フレーム情報を用いなくてもよい。
【００５１】
異常対応ファンクションブロックは、ＰＬＣ（Programmable Logic Controller）のプログラミングに用いられるカプセル化されたプログラムである。異常対応ファンクションブロックは、ＩＥＣ（International Electrotechnical Commission）６１１３１−３に規定されているファンクションブロックであってもよい。
【００５２】
異常対応ファンクションブロックは、プログラミングツールにおいて標準的に使用可能とされていてもよく、プログラミングツールにオプションとして追加されることにより使用可能となってもよい。異常対応ファンクションブロックは、機械要素の種類およびイベントの組み合わせごとに記録部１２０に格納されている。
【００５３】
異常判定基準情報は、後述する異常監視部２４０において異常判定基準として用いられる情報である。異常監視部２４０の構成によって異常判定基準情報の態様が異なる。例えば、異常判定基準情報は、特徴量と比較される閾値である場合や、機械学習された学習済モデルに含まれる学習済パラメータデータである場合がある。閾値のような単純な異常判定基準情報は、ユーザによって入力されてもよい。
【００５４】
記録部１２０は、ファイル形式の複数の異常定義情報、複数の異常対応ファンクションブロックのテンプレート、および複数の異常判定基準情報を格納する。記録部１２０に格納される異常対応ファンクションブロックは、利用先の制御プログラムごとに決定される情報である、自身の識別名称、説明変数の識別情報、およびサブフレームの識別情報が未定義であるテンプレートの状態である。記録部１２０には、ファイル形式の異常定義情報およびテンプレートの状態の異常対応ファンクションブロックの追加格納が可能である。
【００５５】
これにより、記録部１２０に格納されていない異常定義情報および異常対応ファンクションブロックを記録部１２０に追加格納することにより、異常判定可能な機械要素の種類を増やすことができる。
【００５６】
異常対応ファンクションブロックのテンプレートは、属性情報として、自身に対応する機械要素の種類の情報を含んでいてもよく、自身に対応するイベントの種類の情報を含んでいてもよい。これにより、機械要素の種類の情報または機械要素の種類とイベントの種類とを組み合わせた情報により異常対応ファンクションブロックのテンプレートを特定することができる。
【００５７】
異常判定基準情報は、属性情報として、自身に対応する機械要素の種類の情報を含んでいてもよく、自身に対応するイベントの種類の情報を含んでいてもよい。これにより、機械要素の種類の情報または機械要素の種類とイベントの種類とを組み合わせた情報により異常判定基準情報を特定することができる。
【００５８】
コンパイル／ビルド部１３０は、制御プログラムのソースプログラムをコントローラ２０において実行可能な実行形式のプログラムに変換する。コンパイル／ビルド部１３０は、変換した実行形式のプログラムを設定情報出力部１７０に供給する。
【００５９】
設定情報出力部１７０は、制御プログラム、指定された機械要素の種類に対応する特徴量指定情報、および指定された機械要素の種類に対応する異常判定基準情報を出力する。当該制御プログラムは、コンパイル／ビルド部１３０から供給された実行形式のプログラムである。
【００６０】
設定ツール通信部１４０は、設定ツール装置１０がコントローラ２０と通信を行うためのインタフェースであり、後述するコントローラ通信部２６０と通信を行う。また、設定ツール通信部１４０は、異常検知システム１の外部のネットワークまたは記録媒体と接続することによりそのネットワークまたは記録媒体と通信を行ってもよい。設定ツール通信部１４０は、設定情報出力部１７０から出力された情報をコントローラ２０のコントローラ通信部２６０に送信する。
【００６１】
機械学習部１５０は、異常監視部２４０が学習済モデルを用いて異常の判定を行うものである場合、後述する入出力部２３０によって取得された制御対象の機械の動作に関するデータを用いて、異常監視部２４０の判定アルゴリズムが用いる学習済パラメータデータを異常判定基準情報として生成する。機械学習部１５０は、入出力部２３０から設定ツール通信部１４０および後述するコントローラ通信部２６０を介してこの機械の動作に関するデータを取得する。特に、機械学習部１５０は、コントローラ２０によって求められた特徴量と、その特徴量が得られたときの機械要素の状態が異常か否かの情報または異常の程度の情報とを収集し、収集した情報を用いた機械学習によって異常判定基準情報を生成する。これにより、特徴量と異常判定との因果関係が複雑な場合であっても、適当な異常判定基準情報を生成することができる。機械学習部１５０は、生成した異常判定基準情報を記録部１２０に格納する。
【００６２】
コントローラ２０は、制御プログラム編集部１１０によって生成された制御プログラムを実行することにより、制御対象の機械を制御する。また、コントローラ２０は、設定ツール装置１０でユーザにより指定された機械要素における異常の発生を監視する。前記制御プログラムおよび異常監視部２４０が備える特徴量算出プログラムは、汎用コンピュータに用いられるＣＰＵ（Central Processing Unit）で実行されてよく、ＦＰＧＡ（Field Programmable Gate Array）、ＡＳＩＣ（Application Specific Integrated Circuits）、またはこれらとＣＰＵとを組み合わせたもので実行されてもよい。
【００６３】
コントローラ２０は、例えば、設定情報入力部２７０、制御プログラム実行部２１０、制御プログラム格納部２２０、入出力部２３０、異常監視部２４０、時系列データ格納部２５０、およびコントローラ通信部２６０を備えていてもよい。
【００６４】
設定情報入力部２７０は、設定ツール通信部１４０およびコントローラ通信部２６０を介して、設定情報出力部１７０から出力された情報を入力する。具体的には、設定情報入力部２７０は、制御プログラム、機械要素の種類に対応する、異常検知に用いる特徴量の種類を指定する特徴量指定情報、および異常判定基準情報を入力する。制御プログラム実行部２１０は、設定ツール装置１０から受信した、制御プログラムを所定の実行周期ごとに実行する。所定の実行周期としては、例えば、１ｍｓであってもよい。制御プログラム実行部２１０は、前記制御プログラムの実行に伴う異常対応ファンクションブロックの実行によって説明変数値、フレーム情報、およびサブフレーム情報を生成する。
【００６５】
制御プログラム格納部２２０は、実行形式の制御プログラムを格納する。入出力部２３０は、制御対象の機械に設けられたセンサ等からの信号を入力し、制御対象の機械に設けられたモータ等に動作指示の信号を出力する。
【００６６】
異常監視部２４０は、複数の種類の特徴量算出プログラムを実行可能に備えている。つまり、異常監視部２４０は、指定可能な特徴量の種類のそれぞれに対応する特徴量算出プログラムを実行可能に備えている。設定ツール装置１０から異常監視部２４０に特徴量算出プログラムを追加すれば、異常監視部２４０は、新しい種類の特徴量を算出することができる。異常監視部２４０は、異常検知システム１の外部のネットワークまたは記録媒体からコントローラ通信部２６０を介して、特徴量算出プログラムを入手してもよい。
【００６７】
異常監視部２４０は、設定ツール装置１０から受信した特徴量指定情報によって指定される特徴量を算出するための特徴量算出プログラムを実行する。これにより、異常監視部２４０は、サブフレーム情報に基づいて特定されるサブフレームの期間内の説明変数値に基づいて特徴量を算出する。異常監視部２４０は、特徴量に対して異常判定基準情報を用いた判定をすることにより、機械要素についての異常判定結果を求める。
【００６８】
例えば、サブフレームが制御対象の機械に設けられたセンサ等からの信号のオン期間に対応する場合、１つのフレーム内にオン期間が複数存在するとき、サブフレームは１つのフレーム内で所定回目のオン期間であるとしてもよい。この場合、特徴量は、フレーム内の１つのオン期間における説明変数により算出される。また、サブフレームは１つのフレーム内の全てのオン期間であるとしてもよい。この場合、特徴量は、フレーム内の全てのオン期間における説明変数により算出される。
【００６９】
特徴量の種類としては、物理量に基づく特徴量と論理値に基づく特徴量とがある。物理量に基づく特徴量の種類としては、例えば、平均、標準偏差、歪度、尖度、最大、および最小の６種類がある。サブフレーム内で生成された説明変数値に対してこの６種類の名称によって示される演算を行った結果の値を特徴量とする。一方、論理値に基づく特徴量の種類としては、例えば、オン時間およびオフ時間の２種類がある。オン時間とは、サブフレーム内で説明変数値がオンである期間である。オフ時間とは、サブフレーム内で説明変数値がオフである期間である。
【００７０】
時系列データ格納部２５０は、制御プログラムの実行によって取得または生成されたデータ、および異常監視部２４０によって算出された特徴量のデータ等の制御対象の機械の動作に関するデータを時系列に格納する。時系列データ格納部２５０に格納されたデータは、設定ツール装置１０に供給されてもよい。
【００７１】
コントローラ通信部２６０は、コントローラ２０が設定ツール装置１０と通信を行うためのインタフェースであり、設定ツール装置１０と通信を行う。また、コントローラ通信部２６０は、異常検知システム１の外部のネットワークまたは記録媒体と接続することによりそのネットワークまたは記録媒体と通信を行ってもよい。
【００７２】
（制御対象の機械の例）
コントローラ２０の制御対象の機械としては、例えば、図２に示す１軸アクチュエータ３０が挙げられる。図２は、異常検知システム１の制御対象の機械の一例を示す斜視図である。１軸アクチュエータ３０は、図２に示すように、ねじ軸３１０およびサーボモータアンプ３２０を備えている。ねじ軸３１０はモータ（図示せず）の駆動に伴って回転する。サーボモータアンプ３２０は、入出力部２３０からの制御指示に従ってモータの駆動を制御する。
【００７３】
１軸アクチュエータ３０の故障の種類としては、例えば、ねじ軸３１０の停止がある。ねじ軸３１０の停止の原因には、潤滑不良、異物侵入、過大荷重、衝撃、および大きな回転変動等がある。コントローラ２０が検出可能なイベントの種類としては、例えば、トルクの増大、特定周波数に現れる振動、特定周波数に現れる異音、および発熱がある。経験によって故障の原因とイベントの種類との関連づけについての知見が得られる。ここでは、潤滑不良によるねじ軸３１０の停止の予兆がトルクの増大によって検出することができるものとする。
【００７４】
§３  動作例
（異常検知システム１の動作）
次に、異常検知システム１の動作について、図１、図３〜図６に基づいて説明する。図３は、異常検知システム１の動作の一例の詳細を示すブロック図である。図４は、異常検知システム１の動作の一例を示すフローチャートである。図５は、異常検知システム１によって特定される異常対応ファンクションブロックの一例を示す図である。図６は、異常検知システム１によって特定される異常対応ファンクションブロックの入力および出力の各変数の値を示すグラフである。
【００７５】
まず、図３に示すように、指定受付部１６０は、ユーザによる機械要素の種類の指定を受け付ける（ステップＳ１０）。具体的には、ユーザは、設定ツール装置１０に設けられた入力デバイス（図示せず）を操作することにより、設定ツール装置１０に設けられた表示画面（図示せず、以下、表示画面と称する）に表示された複数の機械要素の種類の中から少なくとも１つの機械要素の種類を指定する。指定受付部１６０は、設定ツール装置１０の設定ツールプログラムの実行による設定ツール装置１０の内部処理として、機械要素の種類の指定を受け付ける。
【００７６】
指定受付部１６０は、ユーザによる機械要素の種類の指定を受け付けると、ユーザによって指定された機械要素の種類に対応する、異常定義情報、異常対応ファンクションブロック、および異常判定基準情報を特定する（ステップＳ２０）。
【００７７】
具体的には、指定受付部１６０は、記録部１２０に格納されている複数の異常定義情報から、ユーザによって指定された機械要素の種類を含んでいる異常定義情報を特定する。指定受付部１６０は、特定した異常定義情報を制御プログラム編集部１１０に供給する。
【００７８】
また、指定受付部１６０は、記録部１２０に格納されている複数の異常対応ファンクションブロックのテンプレートから、ユーザによって指定された機械要素の種類を属性情報として含んでいる異常対応ファンクションブロックのテンプレートを特定する。指定受付部１６０は、特定した異常対応ファンクションブロックのテンプレートを制御プログラム編集部１１０に供給する。
【００７９】
さらに、指定受付部１６０は、記録部１２０に格納されている複数の異常判定基準情報から、ユーザによって指定された機械要素の種類を属性情報として含んでいる異常判定基準情報を特定する。指定受付部１６０は、特定した異常判定基準情報を設定情報出力部１７０に供給する。設定情報出力部１７０は、指定受付部１６０から供給された異常判定基準情報を設定ツール通信部１４０およびコントローラ通信部２６０を介して設定情報入力部２７０に供給する。設定情報入力部２７０は、設定情報出力部１７０から出力された異常判定基準情報を入力し、入力した異常判定基準情報を異常監視部２４０に供給する。
【００８０】
ユーザによる機械要素の種類の指定方法としては、例えば、以下に説明する２つの方法がある。１つ目の方法は、ユーザが機械要素の種類を直接指定する方法である。例えば、指定受付部１６０が、選択可能な複数の機械要素の種類の名称を表示画面に表示させ、ユーザに、表示画面に表示された複数の機械要素の種類から少なくとも１つを選択させる。２つ目の方法は、ユーザが機械要素の種類に対応して用意された異常対応ファンクションブロックのいずれかを制御プログラム作成に利用する異常対応ファンクションブロックとして指定することにより、機械要素の種類を間接的に指定する方法である。
【００８１】
また、ユーザによるイベントの種類の指定方法としては、例えば、以下に説明する２つの方法がある。１つ目の方法は、指定受付部１６０が、ユーザによって指定された機械要素の種類に対応するイベントの種類を指定する。このとき、特定の機械要素の種類に対応するイベントの種類が１つしか用意されていない場合、指定受付部１６０はそのイベントの種類を指定する。この場合、イベントの種類の指定を省略してもよい。また、特定の機械要素の種類に対応するイベントの種類が複数用意されている場合、指定受付部１６０は、特定の機械要素の種類に対応する全てのイベントの種類を指定する。このとき、指定受付部１６０は、特定の機械要素の種類とイベントの種類との組み合わせに対応する異常定義情報、異常対応ファンクションブロック、および異常判定基準情報をそれぞれ複数指定する。ユーザにより機械要素の種類とイベントの種類との組み合わせに対応する異常対応ファンクションブロックが指定された場合には、機械要素の種類とイベントの種類との組み合わせが指定されたものと扱うことができる。
【００８２】
２つ目の方法は、指定受付部１６０がユーザにイベントの種類を明示的に指定させる。具体的には、例えば、指定受付部１６０は、表示画面に、ユーザによって指定された機械要素の種類に対応する複数のイベントの種類を表示させ、ユーザに、表示された複数のイベントの種類の中から少なくとも１つを指定させる。指定受付部１６０は、表示画面に、機械要素の種類とイベントの種類との組み合わせを表示させ、ユーザに、表示された組み合わせの中から少なくとも１つを指定させることにより、機械要素の種類およびイベントの種類を同時に指定してもよい。
【００８３】
表１および表２は、それぞれ異常定義情報の例である。表１に示す異常定義情報は、機械要素の種類、イベントの種類、説明変数名、フレーム変数名、サブフレーム変数名、および特徴量の種類を含んでいる。
【００８４】
【表１】
2019215674.tif 000003
【００８５】
【表２】
2019215674.tif 000004
【００８６】
表１に示す異常定義情報では、機械要素の種類として「１軸アクチュエータ」が設定されており、イベントの種類として「トルク増大」が設定されている。また、表１に示す異常定義情報では、説明変数名、フレーム変数名、およびサブフレーム変数名として、「＊＊＊．１ａｘｉｓ＿ｔｏｒｑｕｅ＿０１」、「＊＊＊．１ａｘｉｓ＿ｔｏｒｑｕｅ＿０２」、および「＊＊＊．１ａｘｉｓ＿ｔｏｒｑｕｅ＿０３」が設定されている。ここで、「＊＊＊」および「＊＊」は任意の文字列であることを示し、その文字数も任意である。さらに、表１に示す異常定義情報では、特徴量の種類として「平均」が設定されている。
【００８７】
異常対応ファンクションブロックは、指定受付部１６０に特定された時点では、ユーザから名称を指定されておらず、また、入力および出力の接続先が設定されていないテンプレートの状態である。特定された異常対応ファンクションブロックは、制御プログラム編集部１１０がユーザによる指示に基づいて制御プログラムを作成する際に、制御プログラムに組み込まれることが可能である。
【００８８】
図５は、制御プログラム編集部１１０が表示画面に表示させる制御プログラム編集領域に表示される、異常対応ファンクションブロックの図形表示の例である。この例の異常対応ファンクションブロックは、入力端子として、Ｅｎ１、Ｂｕｓｙ、Ｖｅｌ、Ｐｏｓ、Ｔｒｑを備え、出力端子としてＥｎ２、Ｅｒ、ＥｒＩＤを備えている。ＡｃｔＭは、異常対応ファンクションブロックのテンプレートの名称である。
【００８９】
入力端子のＥｎ１には、この異常対応ファンクションブロックを有効状態、すなわち他の入力端子に入力を受け付け可能な状態にするときにオン入力が与えられる。入力端子のＢｕｓｙには、フレームの区切りとするタイミングでオフからオンに変化する入力が与えられる。入力がオンからオフに変化するタイミングは任意でよい。入力端子のＶｅｌには、１軸アクチュエータの速度の実測値が与えられる。速度の実測値は、制御プログラムによって１軸アクチュエータのモータが備えるエンコーダの出力から求められる。入力端子のＰｏｓには、１軸アクチュエータの位置の実測値が与えられる。位置の実測値は、制御プログラムによって１軸アクチュエータのモータが備えるエンコーダの出力から求められる。入力端子のＴｒｑには、１軸アクチュエータのトルクの実測値が与えられる。トルクの実測値は、制御プログラムによって１軸アクチュエータのモータに流れる電流値から求められる。Ａｃｔ＿Ｂｕｓｙ、Ａｃｔ＿Ｖｅｌ、Ａｃｔ＿Ｐｏｓ、Ａｃｔ＿Ｔｒｑは、各入力端子に与える変数値を格納する変数名の例であり、これらの変数名は制御プログラムの中で用いられる変数の名称であってユーザが任意に決定する。
【００９０】
出力端子Ｅｎ２は、入力端子Ｅｎ１に入力された値をリピートして出力する。出力端子Ｅｒは、異常対応ファンクションブロックの実行時にエラーが発生した場合にオン値を出力する。出力端子ＥｒＩＤは、異常対応ファンクションブロックの実行時にエラーが発生した場合に、そのエラーの内容を特定するコードを出力する。
【００９１】
ステップＳ２０の処理の後、図３に示すように、ユーザによる異常対応ファンクションブロックの名称の入力を受け付け、説明変数名、フレーム変数名、およびサブフレーム変数名を決定する（ステップＳ３０）。具体的には、ユーザがキーボード等により、異常対応ファンクションブロックに名称として「ＡｃｔＭ＿００１」を入力する場合を考える。この名称は、テンプレート名称であるＡｃｔＭを含まない任意の名称でもよい。この場合、制御プログラム編集部１１０は、図５に示すように、制御プログラムに組み込まれた異常対応ファンクションブロックの名称として「ＡｃｔＭ＿００１」を与える。
【００９２】
また、制御プログラム編集部１１０は、異常定義情報における説明変数名、フレーム変数名、およびサブフレーム変数名の文字列の中の「＊＊＊」の部分に異常対応ファンクションブロックの名称である「ＡｃｔＭ＿００１」を代入する。その結果、この制御プログラムに組み込まれた異常対応ファンクションブロックＡｃｔＭ＿００１の説明変数名は、「ＡｃｔＭ＿００１．１ａｘｉｓ＿ｔｏｒｑｕｅ＿０１」、フレーム変数名は、「ＡｃｔＭ＿００１．１ａｘｉｓ＿ｔｏｒｑｕｅ＿０２」、サブフレーム変数名は、「ＡｃｔＭ＿００１．１ａｘｉｓ＿ｔｏｒｑｕｅ＿０３」と決定される。これらの変数名は、異常対応ファンクションブロックの出力値を格納する変数の名称である。これらの変数の値は、コントローラ２０の異常監視部２４０によって読み出されることになるが、ユーザに対しては公開されておらず、制御プログラムにおいて利用することはできないので、図５の出力端子としては表示されない。説明変数、フレーム変数、およびサブフレーム変数の名称については、上記のように制御プログラム編集部１１０が異常対応ファンクションブロックの名称に基づいて自動付与した名称をユーザが変更できるようにしてもよいし、自動付与なしにユーザが名称を入力することを可能にしてもよい。
【００９３】
表２に示す異常定義情報は、表１に示す異常定義情報と比べて、説明変数名、フレーム変数名、およびサブフレーム変数名の代わりに、変数名共通部を含んでいる。表２に示す異常定義情報では、変数名共通部として「＊＊＊＿１ａｘｉｓ＿ｔｏｒｑｕｅ＿＊＊」が設定されている。制御プログラム編集部１１０は、変数名共通部に基づいて、説明変数名、フレーム変数名、およびサブフレーム変数名を生成する。具体的には、制御プログラム編集部１１０は、変数名共通部の冒頭の「＊＊＊」の部分に異常対応ファンクションブロックの名称である「ＡｃｔＭ＿００１」を代入する。また、制御プログラム編集部１１０は、変数名共通部の末尾の「＊＊」の部分には、説明変数名については「０１」を、フレーム変数名については「０２」を、サブフレーム変数名については「０３」を代入する。その結果、表１について説明した場合と同じ変数名が生成される。
【００９４】
ステップＳ３０の処理の後、図３に示すように、制御プログラム編集部１１０は、ユーザの指示に基づいて、制御プログラムのソースプログラムを生成する（ステップＳ４０）。ユーザは、制御プログラム編集部１１０に指示して、異常対応ファンクションブロックの各入力端子を図５に示すように適切な変数に接続する。
【００９５】
制御プログラム編集部１１０は、生成した制御プログラムのソースプログラムをコンパイル／ビルド部１３０に供給する。コンパイル／ビルド部１３０は、図３に示すように、制御プログラム編集部１１０から供給された制御プログラムのソースプログラムをコントローラ２０において実行可能な実行形式のプログラムに変換する（ステップＳ５０）。
【００９６】
制御プログラムのソースプログラムが実行形式のプログラムに変換されることにより、説明変数、フレーム変数、およびサブフレーム変数のコントローラ２０におけるアドレス情報が決定される。
【００９７】
コンパイル／ビルド部１３０は、実行形式の制御プログラムおよび各変数のアドレス情報を設定情報出力部１７０に供給する。設定情報出力部１７０は、実行形式の制御プログラムおよび各変数のアドレス情報を設定ツール通信部１４０およびコントローラ通信部２６０を介して設定情報入力部２７０に供給する。このとき、設定情報出力部１７０は、指定された機械要素の種類に対応する特徴量指定情報も設定ツール通信部１４０およびコントローラ通信部２６０を介して設定情報入力部２７０に供給する。設定情報入力部２７０は、実行形式の制御プログラムを制御プログラム格納部２２０に格納する。設定情報入力部２７０は、特徴量指定情報および各変数のアドレス情報を異常監視部２４０に供給する。
【００９８】
制御プログラム実行部２１０は、制御プログラム格納部２２０に格納されている制御プログラムを所定の実行周期ごとに実行する（ステップＳ６０）。このとき、制御プログラムに組み込まれた異常対応ファンクションブロックも所定の実行周期ごとに実行される。この結果、異常対応ファンクションブロックの実行によって生成される説明変数値、フレーム変数値、およびサブフレーム変数値は所定の実行周期ごとに更新される。
【００９９】
前述したとおり、説明変数値は、変数名がＡｃｔＭ＿００１．Ａｃｔｍ＿０１である変数に格納される。フレーム変数値は、変数名がＡｃｔＭ＿００１．Ａｃｔｍ＿０２の変数に格納される。サブフレーム変数値は、変数名がＡｃｔＭ＿００１．Ａｃｔｍ＿０３の変数に格納される。
【０１００】
一方、制御プログラム実行部２１０は、説明変数値、フレーム変数値、およびサブフレーム変数値を時系列データ格納部２５０にも時刻情報とともに格納する。格納されたデータは、設定ツール装置１０における機械学習や事後分析に用いることができる。
【０１０１】
制御プログラム実行部２１０が制御プログラムを実行した結果、異常対応ファンクションブロックの入力および出力の各変数の値は、図６に示すような値になる。図６に示すように、入力変数Ａｃｔ＿Ｂｕｓｙは、フレームの区切りのタイミングでオフからオンに変化する。１軸アクチュエータの１回の往復期間をフレームとしている。
【０１０２】
フレーム変数ＡｃｔＭ＿００１．Ａｃｔｍ＿０２の値は、フレームが１つ進むごとに１だけ増加している。また、この異常対応ファンクションブロックは、入力変数Ａｃｔ＿Ｖｅｌの値が−１０より小さくなる期間をサブフレームとしているため、サブフレーム変数ＡｃｔＭ＿００１．Ａｃｔｍ＿０３の値は、入力変数Ａｃｔ＿Ｖｅｌが−１０より小さくなる期間でオンに変化している。
【０１０３】
異常監視部２４０は、制御プログラムの所定の実行周期ごとに、説明変数値、フレーム情報としてのフレーム変数値、およびサブフレーム情報としてのサブフレーム変数値を取得する。具体的には、異常監視部２４０は、図３に示すように、指定された特徴量の種類に対応する特徴量算出プログラムを実行する。これにより、異常監視部２４０は、設定ツール装置１０から供給された前記アドレス情報を参照して、説明変数値、フレーム変数値、およびサブフレーム変数値を取得する。
【０１０４】
異常監視部２４０は、サブフレームごとに、制御プログラム実行部２１０から説明変数値を一括して取得してもよい。
【０１０５】
また、異常監視部２４０は、制御プログラム実行部２１０から供給されたフレーム情報に基づいて特定されるフレームごとに異常判定結果を求める。これにより、例えば１フレーム内に複数のサブフレームが含まれている場合に、１フレーム内の所定回目のサブフレーム内だけで得られた説明変数値に基づいてフレームごとに異常判定結果を求めることが可能となる。
【０１０６】
異常監視部２４０は、図３に示すように、フレームごとに、サブフレーム期間について、制御プログラム実行部２１０から供給された説明変数値を対象として特徴量を算出する（ステップＳ７０）。具体的には、例えば、異常監視部２４０は、サブフレーム内における入力変数Ａｃｔ＿Ｔｒｑの値の平均値を特徴量として算出する。現時点が直前の時点と同一のフレーム内および次のフレーム内のうちいずれであるかは、現時点のフレーム変数値が直前の時点のフレーム変数値と同一であるか否かによって判断することができる。
【０１０７】
ステップＳ７０の処理の後、図３に示すように、異常監視部２４０は、特徴量に対して、異常判定基準情報を用いた判定をすることにより、異常判定結果を出力する（ステップＳ８０）。
【０１０８】
具体的には、異常監視部２４０は、特徴量として算出した入力変数Ａｃｔ＿Ｔｒｑの値の平均値を、異常判定基準情報としての閾値と比較する。異常監視部２４０は、前記平均値が異常判定基準情報としての閾値より大きい場合、異常判定結果として異常発生という結果を出力する。１つのフレーム内にサブフレームが１つしかない場合、フレームを設定しなくても同一の異常判定結果が得られる。この場合、フレームを設定しなくてもよい。
【０１０９】
§４  他の適用例
図７は、異常検知システム１の制御対象の機械の変形例を示す模式図である。ここでは、異常検知システム１の制御対象の機械は、ベース４１０の上に４本の突起４２０が設けられたワーク４０を加工しながら搬送するワーク加工システムであるとする。可動の機械要素は加工機の先端の位置を変えるモータであるとする。この例では、サブフレームだけでなく、フレームが必要な場合について説明することを目的とするので、異常検知の方法の詳細は説明しない。所定の位置に１つのワーク４０が到達する時点から所定の位置に次のワーク４０が到達する時点までの期間をフレームとする。
【０１１０】
ワーク加工システムは、第１の光電センサ（図示せず）によってベース４１０の通過を認識する。異常検知システム１は、第１の光電センサの出力に基づいてフレームを設定する。また、ワーク加工システムは、第２の光電センサ（図示せず）によって突起４２０の通過を認識する。ワーク加工システムは、１つのフレーム内で突起４２０の通過を４回認識する。
【０１１１】
ワーク４０を加工する加工機（図示せず）の先端がベース４１０から受ける力の値を説明変数値とする。図７に示すように、説明変数値としての、加工機の先端がベース４１０から受ける力の値は、１つのフレーム内で第２の光電センサによって最初に認識される突起４２０の通過の期間内に認識される。よって、１つのフレーム内で第２の光電センサによって最初に認識される突起４２０の通過の期間をサブフレームとする。異常監視部２４０は、サブフレーム内の説明変数値から特徴量を算出する。
【０１１２】
フレームを設定せずに第２の光電センサによって認識される期間の全てをサブフレームとした場合、特徴量を算出するための説明変数値を適切に抽出することができない。つまり、１つのベース４１０が通過する期間内の４つのサブフレームのうち最初のサブフレームを除いた３つのサブフレーム内で加工機の先端がベース４１０から受ける力の値を特徴量算出に用いることは不適切である。この例から分かるように、フレームを設定可能な構成にすることにより制御対象の様々な機械に幅広く対応することができる。
【０１１３】
〔ソフトウェアによる実現例〕
異常検知システム１の各機能ブロック（特に制御プログラム編集部１１０、コンパイル／ビルド部１３０、機械学習部１５０、制御プログラム実行部２１０、入出力部２３０、および異常監視部２４０）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ソフトウェアによって実現してもよい。
【０１１４】
後者の場合、異常検知システム１は、各機能を実現するソフトウェアであるプログラムの命令を実行するコンピュータを備えている。また、記録部１２０に格納される異常対応ファンクションブロックは、異常検知システム１において用いられ、利用先の制御プログラムごとに決定される情報である、自身の識別名称、説明変数の識別名称、およびサブフレームの識別名称が未定義であるテンプレートの状態である。これにより、異常検知システム１は、テンプレートの状態の異常対応ファンクションブロックを個別の制御プログラムの作成に利用することができる。テンプレートの状態の異常対応ファンクションブロックは、コンピュータ読み取り可能な可搬型の記録媒体に記録して流通させるのに好適である。特定の機械要素の種類に対応する異常対応ファンクションブロックと、同じ機械要素の種類に対応する異常定義情報とを、同じ記録媒体に記録して流通させてもよい。テンプレートの状態の異常対応ファンクションブロックおよび異常定義情報は、任意の伝送媒体（通信ネットワークや放送波等）を介してユーザに供給されてもよい。
【０１１５】
前記コンピュータは、例えば１つ以上のプロセッサを備えていると共に、上記各機能を実現するプログラムを記憶したコンピュータ読み取り可能な記録媒体を備えている。そして、上記コンピュータにおいて、上記プロセッサが上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記プロセッサとしては、例えばＣＰＵを用いることができる。上記記録媒体としては、「一時的でない有形の媒体」、例えば、ＲＯＭ（Read Only Memory）等の他、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムを展開するＲＡＭ（Random Access Memory）などをさらに備えていてもよい。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【０１１６】
本発明は前述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【０１１７】
１  異常検知システム                        １０  設定ツール装置
２０  コントローラ                          ３０  １軸アクチュエータ
４０  ワーク                                １１０  制御プログラム編集部
１２０  記録部                              １３０  コンパイル／ビルド部
１４０  通信部                              １５０  機械学習部
２１０  制御プログラム実行部                ２２０  制御プログラム格納部
２３０  入出力部                            ２４０  異常監視部
２５０  時系列データ格納部                  ２６０  コントローラ通信部
３１０  ねじ軸                              ３２０  サーボモータアンプ
４１０  ベース                              ４２０  突起
【図１】
2019215674.tif 000005
【図２】
2019215674.tif 000006
【図３】
2019215674.tif 000007
【図４】
2019215674.tif 000008
【図５】
2019215674.tif 000009
【図６】
2019215674.tif 000010
【図７】
2019215674.tif 000011