(57)【要約】      （修正有）【課題】知識や経験の乏しいユーザであっても異常を解消しやすいＰＬＣを提供する。【解決手段】ＰＬＣ１００は、異常の種別情報と発生時刻と解消時刻とを含む異常ログ要素が書き込まれた異常履歴データ１２８と、操作の内容情報と実行時刻とを含む操作ログ要素が書き込まれた操作履歴データ１２６とを用いて、対象異常の解消を支援する支援情報を出力する出力部１５を備える。出力部１５は、対象異常と同一の種類を示す種別情報を含む異常ログ要素を異常履歴データ１２８から抽出する。出力部１５は、抽出した異常ログ要素に含まれる発生時刻から解消時刻までの期間に実行時刻が属する操作ログ要素を操作履歴データ１２６から抽出し、抽出した操作ログ要素に基づいて支援情報を生成する。【選択図】図３
2020197934.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御するプログラマブルロジックコントローラを備える制御システムであって、
前記プログラマブルロジックコントローラは、
前記制御対象および前記プログラマブルロジックコントローラの少なくとも一方に関連する異常を検知するための異常検知部と、
操作コマンドを受け、前記操作コマンドに応じた処理を実行するコマンド処理部とを含み、
前記制御システムは、
前記異常検知部によって検知された各異常について、当該異常の種類を示す種別情報と当該異常の発生時刻と当該異常の解消時刻とを含む第１ログ要素を第１履歴データに書き込むための第１書き込み部と、
前記コマンド処理部が受けた各操作コマンドについて、当該操作コマンドの内容を示す内容情報と当該操作コマンドに応じた処理の実行時刻とを含む第２ログ要素を第２履歴データに書き込むための第２書き込み部と、
前記異常検知部によって検知された対象異常の解消を支援する支援情報を出力するための出力部とを備え、
前記出力部は、
前記対象異常と同一の種類を示す前記種別情報を含む１つの第１ログ要素を対象ログ要素として前記第１履歴データから抽出し、
前記対象ログ要素に含まれる前記発生時刻から前記解消時刻までの期間に前記実行時刻が属する第２ログ要素を前記第２履歴データから抽出し、
抽出した第２ログ要素に基づいて前記支援情報を生成する、制御システム。
【請求項２】
前記第２ログ要素は、前記操作コマンドの送信元を識別する送信元識別情報を含み、
前記支援情報は、前記抽出した第２ログ要素に含まれる前記内容情報および前記送信元識別情報を前記実行時刻に従って時系列に並べた情報である、請求項１に記載の制御システム。
【請求項３】
前記第２ログ要素は、前記操作コマンドの送信元を識別する送信元識別情報を含み、
前記出力部は、
前記抽出した第２ログ要素の中から、対象送信元を識別する前記送信元識別情報を含む第２ログ要素を絞り込み、
絞り込まれた第２ログ要素に基づいて前記支援情報を生成する、請求項１に記載の制御システム。
【請求項４】
前記出力部は、前記抽出した第２ログ要素のうち前記実行時刻の最も遅い第２ログ要素に含まれる前記送信元識別情報によって識別される送信元を前記対象送信元として指定する、請求項３に記載の制御システム。
【請求項５】
前記出力部は、
前記第１履歴データの中から、抽出した前記対象ログ要素とは異なり、かつ、前記対象異常と同一の種類を示す前記種別情報を含む少なくとも１つの第１ログ要素を選択し、
前記少なくとも１つの第１ログ要素の各々について、当該第１ログ要素に含まれる解消時刻よりも前であり、かつ当該第１ログ要素に含まれる前記解消時刻に最も近い前記実行時刻を含む第２ログ要素を前記第２履歴データから選択し、
選択した第２ログ要素に含まれる前記送信元識別情報によって代表される送信元を前記対象送信元として指定する、請求項３に記載の制御システム。
【請求項６】
前記支援情報は、前記絞り込まれた第２ログ要素に含まれる前記内容情報を前記実行時刻に従って時系列に並べた情報である、請求項３から５のいずれか１項に記載の制御システム。
【請求項７】
前記送信元識別情報は、前記操作コマンドを生成したプログラム、前記操作コマンドを送信した装置の位置、および、前記操作コマンドを送信したユーザの少なくとも１つを識別する、請求項２から６のいずれか１項に記載の制御システム。
【請求項８】
前記出力部は、前記第１履歴データの中に前記対象異常と同一の種類を示す前記種別情報を含む複数の第１ログ要素が存在する場合、当該複数の第１ログ要素の中から最新の第１ログ要素を前記対象ログ要素として抽出する、請求項１から７のいずれか１項に記載の制御システム。
【請求項９】
制御対象を制御するプログラマブルロジックコントローラであって、
前記制御対象および前記プログラマブルロジックコントローラの少なくとも一方に関連する異常を検知するための異常検知部と、
操作コマンドを受け、前記操作コマンドに応じた処理を実行するコマンド処理部と、
前記異常検知部によって検知された各異常について、当該異常の種類を示す種別情報と当該異常の発生時刻と当該異常の解消時刻とを含む第１ログ要素を第１履歴データに書き込むための第１書き込み部と、
前記コマンド処理部が受けた各操作コマンドについて、当該操作コマンドの内容を示す内容情報と当該操作コマンドに応じた処理の実行時刻とを含む第２ログ要素を第２履歴データに書き込むための第２書き込み部と、
前記異常検知部によって検知された対象異常の解消を支援する支援情報を出力するための出力部とを備え、
前記出力部は、
前記対象異常と同一の種類を示す前記種別情報を含む１つの第１ログ要素を対象ログ要素として前記第１履歴データから抽出し、
前記対象ログ要素に含まれる前記発生時刻から前記解消時刻までの期間に前記実行時刻が属する第２ログ要素を前記第２履歴データから抽出し、
抽出した第２ログ要素に基づいて前記支援情報を生成する、プログラマブルロジックコントローラ。
【請求項１０】
制御対象を制御するプログラマブルロジックコントローラを備える制御システムの情報処理方法であって、
前記プログラマブルロジックコントローラは、
前記制御対象および前記プログラマブルロジックコントローラの少なくとも一方に関連する異常を検知するための異常検知部と、
操作コマンドを受け、前記操作コマンドに応じた処理を実行するコマンド処理部とを含み、
前記情報処理方法は、
前記異常検知部によって検知された各異常について、当該異常の種類を示す種別情報と当該異常の発生時刻と当該異常の解消時刻とを含む第１ログ要素を第１履歴データに書き込むステップと、
前記コマンド処理部が受けた各操作コマンドについて、当該操作コマンドの内容を示す内容情報と当該操作コマンドに応じた処理の実行時刻とを含む第２ログ要素を第２履歴データに書き込むステップと、
前記異常検知部によって検知された対象異常の解消を支援する支援情報を出力するステップとを備え、
前記出力するステップは、
前記対象異常と同一の種類を示す前記種別情報を含む第１ログ要素を対象ログ要素として前記第１履歴データから抽出するステップと、
前記対象ログ要素に含まれる前記発生時刻から前記解消時刻までの期間に前記実行時刻が属する第２ログ要素を前記第２履歴データから抽出するステップと、
抽出した第２ログ要素に基づいて前記支援情報を生成するステップとを含む、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、制御システム、プログラマブルロジックコントローラおよび情報処理方法に関する。
【背景技術】
【０００２】
各種設備および各設備に配置される各種装置の制御には、ＰＬＣ（プログラマブルロジックコントローラ）が用いられる。ＰＬＣは、ＰＬＣ自体の異常、制御対象の設備や機械に生じる異常、ネットワークに関する異常などの様々な異常を監視し、何らかの異常が検知されると外部に対して通知する。
【０００３】
特開平７−１０４８３３号公報（特許文献１）には、有毒ガスの発生および漏洩を監視する監視システムが開示されている。この監視システムでは、検出手段により異常状態が検出されたときに、作業者が行なった処理を異常状態に対応させて記憶手段に一旦記憶させ、前回と同じ異常状態が検出されたときに、記憶させた処理を読み出して表示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−１０４８３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の技術によれば、有毒ガスの異常状態が検出されたときに作業者が行なった処理を、異常状態に対応する手順書として明示的に保存する。これにより、知識や経験の乏しいユーザであっても、手順書を確認することにより、異常を解消しやすくなる。
【０００６】
一方、ＰＬＣでは、ＰＬＣ自体の異常、制御対象の設備や機械に生じる異常、ネットワークに関する異常などの様々な異常が並行して発生することも考えられる。また、例えばネットワークに関する異常が発生しているときに、当該異常とは関係のない操作（例えばＰＬＣ自体に対する操作）が行なわれる場合もある。そのため、ＰＬＣでは、何らかの異常が発生したタイミングで、当該異常に対する手順書を明示的に作成することが困難である。このように、特許文献１の記載の技術をＰＬＣに単純に適用できない。
【０００７】
本発明は、上記の問題に鑑みてなされたものであり、その目的は、知識や経験の乏しいユーザであっても異常を解消しやすい制御システム、プログラマブルロジックコントローラおよび情報処理方法を提供することである。
【課題を解決するための手段】
【０００８】
本開示の一例によれば、制御システムは、制御対象を制御するプログラマブルロジックコントローラを備える。プログラマブルロジックコントローラは、制御対象およびプログラマブルロジックコントローラの少なくとも一方に関連する異常を検知するための異常検知部と、操作コマンドを受け、操作コマンドに応じた処理を実行するコマンド処理部とを含む。制御システムは、第１書き込み部と、第２書き込み部と、出力部とを備える。第１書き込み部は、異常検知部によって検知された各異常について、当該異常の種類を示す種別情報と当該異常の発生時刻と当該異常の解消時刻とを含む第１ログ要素を第１履歴データに書き込む。第２書き込み部は、コマンド処理部が受けた各操作コマンドについて、当該操作コマンドの内容を示す内容情報と当該操作コマンドに応じた処理の実行時刻とを含む第２ログ要素を第２履歴データに書き込む。出力部は、異常検知部によって検知された対象異常の解消を支援する支援情報を出力する。出力部は、対象異常と同一の種類を示す種別情報を含む１つの第１ログ要素を対象ログ要素として第１履歴データから抽出する。出力部は、対象ログ要素に含まれる発生時刻から解消時刻までの期間に実行時刻が属する第２ログ要素を第２履歴データから抽出する。出力部は、抽出した第２ログ要素に基づいて支援情報を生成する。
【０００９】
検知された異常と同一の種類を示す種別情報を含む過去の第１ログ要素の発生時刻から解消時刻までの期間において、当該異常を解消するための操作が実行されている。そのため、上記の開示によれば、当該期間に実行時刻が属する第２ログ要素の中には、異常を解消するための操作に対応する第２ログ要素が含まれる。したがって、知識や経験の乏しいユーザ（作業者や監視者など）であっても、支援情報を確認することにより異常を解消しやすくなる。
【００１０】
上述の開示において、第２ログ要素は、操作コマンドの送信元を識別する送信元識別情報を含む。支援情報は、抽出した第２ログ要素に含まれる内容情報および送信元識別情報を実行時刻に従って時系列に並べた情報である。
【００１１】
この開示によれば、ユーザは、出力された内容情報の中から、送信元識別情報に基づいて所望の送信元に対応する内容情報を確認しやすくなる。さらに、ユーザは、異常を解消するための操作の順番を理解しやすくなる。
【００１２】
上述の開示において、第２ログ要素は、操作コマンドの送信元を識別する送信元識別情報を含む。出力部は、抽出した第２ログ要素の中から、対象送信元を識別する送信元識別情報を含む第２ログ要素を絞り込み、絞り込まれた第２ログ要素に基づいて支援情報を生成する。
【００１３】
この開示によれば、ユーザは、対象異常と同一の種類の種別情報を含む過去の第１ログ要素の発生時刻から解消時刻までの期間に実行された操作のうち、対象送信元に対応する操作の内容のみを確認しやすくなる。
【００１４】
上述の開示において、出力部は、抽出した第２ログ要素のうち実行時刻の最も遅い第２ログ要素に含まれる送信元識別情報によって識別される送信元を対象送信元として指定する。
【００１５】
抽出された第２ログ要素のうち実行時刻の最も遅い第２ログ要素は、対象異常の解消時刻の直前に実行された操作に対応しており、対象異常の解消のために実行された操作である可能性が高い。上記の開示によれば、当該第２ログ要素に含まれる送信元識別情報によって識別される送信元が対象送信元として指定される。これにより、ユーザは、対象異常と同一の種類の種別情報を含む過去の第１ログ要素の発生時刻から解消時刻までの期間に実行された操作のうち、異常の解消のために実行された可能性の高い操作のみを確認できる。
【００１６】
上述の開示において、出力部は、第１履歴データの中から、抽出した対象ログ要素とは異なり、かつ、対象異常と同一の種類を示す種別情報を含む少なくとも１つの第１ログ要素を選択する。出力部は、少なくとも１つの第１ログ要素の各々について、当該第１ログ要素に含まれる解消時刻よりも前であり、かつ当該第１ログ要素に含まれる解消時刻に最も近い実行時刻を含む第２ログ要素を第２履歴データから選択する。出力部は、選択した第２ログ要素に含まれる送信元識別情報によって代表される送信元を対象送信元として指定する。
【００１７】
上記の開示によれば、ユーザは、過去の対象異常の解消時刻の直前に実行された操作と同一の送信元からの操作内容のみを確認できる。上述したように、対象異常の解消時刻の直前に実行された操作は、対象異常の解消のために実行された操作である可能性が高い。そのため、ユーザは、対象異常と同一の種類の種別情報を含む過去の第１ログ要素の発生時刻から解消時刻までの期間に実行された操作のうち、異常の解消のために実行された可能性の高い操作のみを確認しやすくなる。
【００１８】
上述の開示において、支援情報は、絞り込まれた第２ログ要素に含まれる内容情報を実行時刻に従って時系列に並べた情報である。
【００１９】
この開示によれば、ユーザは、絞り込まれた第２ログ要素に対応する操作の順番を理解しやすくなる。
【００２０】
上述の開示において、送信元識別情報は、例えば、操作コマンドを生成したプログラム、操作コマンドを送信した装置の位置、および、操作コマンドを送信したユーザの少なくとも１つを識別する。
【００２１】
上述の開示において、出力部は、第１履歴データの中に対象異常と同一の種類を示す種別情報を含む複数の第１ログ要素が存在する場合、当該複数の第１ログ要素の中から最新の第１ログ要素を対象ログ要素として抽出する。
【００２２】
この開示によれば、ユーザは、対象異常を解消するために最近実行された操作の内容を確認しやすくなる。
【００２３】
本開示の一例によれば、制御対象を制御するプログラマブルロジックコントローラは、上記の異常検知部と、コマンド処理部と、第１書き込み部と、第２書き込み部と、出力部とを備える。
【００２４】
本開示の一例により情報処理方法は、制御対象を制御するプログラマブルロジックコントローラを備える制御システムの情報処理方法である。プログラマブルロジックコントローラは、制御対象およびプログラマブルロジックコントローラの少なくとも一方に関連する異常を検知するための異常検知部と、操作コマンドを受け、操作コマンドに応じた処理を実行するコマンド処理部とを含む。情報処理方法は、第１〜第３のステップを備える。第１のステップは、異常検知部によって検知された各異常について、当該異常の種類を示す種別情報と当該異常の発生時刻と当該異常の解消時刻とを含む第１ログ要素を第１履歴データに書き込むステップである。第２のステップは、コマンド処理部が受けた各操作コマンドについて、当該操作コマンドの内容を示す内容情報と当該操作コマンドに応じた処理の実行時刻とを含む第２ログ要素を第２履歴データに書き込むステップである。第３のステップは、異常検知部によって検知された対象異常の解消を支援する支援情報を出力するステップである。第３のステップは、対象異常と同一の種類を示す種別情報を含む第１ログ要素を対象ログ要素として第１履歴データから抽出するステップと、対象ログ要素に含まれる発生時刻から解消時刻までの期間に実行時刻が属する第２ログ要素を第２履歴データから抽出するステップと、抽出した第２ログ要素に基づいて支援情報を生成するステップとを含む。
【００２５】
これらの開示によれば、知識や経験の乏しいユーザであっても異常を解消しやすくなる。
【発明の効果】
【００２６】
本開示によれば、知識や経験の乏しい者であっても異常を解消しやすい。
【図面の簡単な説明】
【００２７】
【図１】実施の形態に係る制御システムの全体構成を示す概略図である。
【図２】本実施の形態に係る制御システムを構成するＰＬＣのハードウェア構成例を示す模式図である。
【図３】本実施の形態に係る制御システムを構成するＰＬＣの機能構成例を示す模式図である。
【図４】操作コマンドの構成要素の一例を示す図である。
【図５】操作履歴データの一例を示す図である。
【図６】異常履歴データの一例を示す図である。
【図７】内容情報の変換方法の一例を示す図である。
【図８】支援情報の表示画面の一例を示す図である。
【図９】入力されたソースＩＤに対応する操作の一覧を含む画面例を示す図である。
【図１０】操作ログ要素の絞り込みの方法を示す図である。
【図１１】端末およびＨＭＩ装置において実行される支援情報の要求および表示の処理の流れを示すフローチャートである。
【図１２】ＰＬＣにおいて実行される支援情報の生成処理の前半部分を示すフローチャートである。
【図１３】ＰＬＣにおいて実行される支援情報の生成処理の後半部分を示すフローチャートである。
【発明を実施するための形態】
【００２８】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰返さない。
【００２９】
§１  適用例
まず、図１を参照して、本発明が適用される場面の一例について説明する。図１は、実施の形態に係る制御システムの全体構成を示す概略図である。図１に例示される制御システムＳＹＳは、制御対象を制御するためのＰＬＣ（プログラマブルロジックコントローラ）１００と、サポート装置２００と、端末３００，３５０と、ＨＭＩ（ヒューマンマシンインターフェイス）装置４００とを備える。
【００３０】
ＰＬＣ１００は、生産ラインに設置される制御対象（例えばモータ、ロボット、カメラ、各種センサなど）を制御する。ＰＬＣ１００は、予め設計された制御プログラムを実行することにより、接続された図示しない制御対象を制御する。
【００３１】
ＰＬＣ１００は、端末３００，３５０およびＨＭＩ装置４００から操作コマンドを受け、当該操作コマンドに応じた処理を実行する。
【００３２】
ＰＬＣ１００は、ＰＬＣ自体の異常、制御対象の設備や機械に生じる異常、ネットワークに関する異常などの様々な種類の異常を検知し、異常の発生を端末３００，３５０およびＨＭＩ装置４００に通知する。
【００３３】
サポート装置２００は、ＰＬＣ１００で実行される制御プログラムの開発環境、および、ＨＭＩ装置４００で実行されるＨＭＩプログラム４０の開発環境を提供する。このような開発環境は、サポート装置２００にサポートプログラムがインストールされることで提供される。サポートプログラムは、たとえば、オムロン社製の「Ｓｙｓｍａｃ  Ｓｔｕｄｉｏ」である。ユーザ（設計者）は、サポートプログラムを利用して、ＰＬＣ１００用の制御プログラムを設計し、設計した制御プログラムをＰＬＣ１００にインストールすることができる。また、ユーザは、サポートプログラムを利用して、ＨＭＩ装置４００用のＨＭＩプログラム４０を設計し、設計したＨＭＩプログラム４０をＨＭＩ装置４００にインストールすることができる。
【００３４】
ＨＭＩ装置４００は、パーソナルコンピュータにより実現可能である。ＨＭＩ装置４００は、ＨＭＩプログラム４０を実行することにより、ＰＬＣ１００での制御演算によって得られる各種情報をユーザ（作業者や監視者など）へ提示するとともに、ユーザからの操作に従ってＰＬＣ１００に対する操作コマンドを生成する。
【００３５】
端末３００、３５０は、ユーザ（オペレータや監視者など）によって使用され、ＰＬＣ１００での制御演算によって得られる各種情報をユーザへ提示するとともに、ユーザからの操作に従って、ＰＬＣ１００に対して操作コマンドなどを生成する。端末３００，３５０は、例えば、スマートフォン、タブレット、ノートパソコン等の携帯機器である。端末３００、３５０とＰＬＣ１００との間の通信方式は特に限定されない。例えば、端末３００は、クラウドおよびサポート装置２００を介してＰＬＣ１００と通信接続される。端末３５０は、ダイレクトにＰＬＣ１００と通信接続される。
【００３６】
端末３００，３５０には、ＰＬＣ１００からの各種情報を提示するとともに、ＰＬＣ１００に対する操作コマンドを生成するためのプログラム（以下、「専用ツール３０」と称する）が格納されている。専用ツール３０は、ＰＬＣ１００専用のアプリケーションとして、例えばＰＬＣ１００の販売会社等によって予め作成される。ユーザは、サーバから端末３００，３５０に専用ツール３０を予めダウンロードする。専用ツール３０は、ユーザからの操作に従って、ＰＬＣ１００からの各種情報を取得し、ＰＬＣ１００に対する操作コマンドを生成する。
【００３７】
本実施の形態に係る制御システムＳＹＳでは、操作履歴データ１２６および異常履歴データ１２８が蓄積される。
【００３８】
操作履歴データ１２６は、端末３００，３５０およびＨＭＩ装置４００からの操作コマンド毎の操作ログ要素１２７が蓄積されたデータである。操作ログ要素１２７は、操作コマンドの内容を示す内容情報と、当該操作コマンドに応じた処理の実行時刻とを含む。
【００３９】
制御システムＳＹＳでは、以下の手順（ａ１）〜（ａ３）に従って操作履歴データ１２６が構築される。
手順（ａ１）：端末３００，３５０およびＨＭＩ装置４００のいずれか（図１に示す例では端末３００）がＰＬＣ１００に操作コマンドを出力する。
手順（ａ２）：ＰＬＣ１００は、受けた操作コマンドに応じた処理を実行する。
手順（ａ３）：ＰＬＣ１００は、操作コマンドの内容を示す内容情報と、当該操作コマンドに応じた処理の実行時刻とを対応付けた操作ログ要素１２７を作成し、作成した操作ログ要素１２７を操作履歴データ１２６に書き込む。
【００４０】
異常履歴データ１２８は、ＰＬＣ１００によって検知された異常毎の異常ログ要素１２９が蓄積されたデータである。異常ログ要素１２９は、異常の種類を示す種別情報と、当該異常の発生時刻と、当該異常の解消時刻とを含む。
【００４１】
制御システムＳＹＳでは、以下の手順（ｂ１）〜（ｂ４）に従って異常履歴データ１２８が構築される。
手順（ｂ１）：ＰＬＣ１００は、いずれかの異常の発生を検知する。
手順（ｂ２）：ＰＬＣ１００は、発生した異常の種類を示す種別情報と、発生時刻とを対応付けた異常ログ要素１２９を作成し、作成した異常ログ要素１２９を異常履歴データ１２８に書き込む。
手順（ｂ３）：ＰＬＣ１００は、発生中の異常の解消を検知する。
手順（ｂ４）：ＰＬＣ１００は、異常履歴データ１２８のうちの解消された異常に対応する異常ログ要素１２９に解消時刻を書き込む。
【００４２】
本実施の形態に係る制御システムＳＹＳでは、異常が検知されたときに、以下の手順（ｃ１）（Ｃ２）が実行される。
手順（ｃ１）：異常の発生の通知を受けた端末３００，３５０およびＨＭＩ４００のいずれか（図１に示す例では端末３５０）は、ＰＬＣ１００に対して、当該異常の解消を支援するための支援情報を要求する。
手順（ｃ２）：ＰＬＣ１００は、操作履歴データ１２６および異常履歴データ１２８を用いて支援情報を生成し、生成した支援情報を出力する。
【００４３】
上記の手順（ｃ２）は、具体的には、以下の手順（ｃ２−１）〜（ｃ２−３）を含む。
手順（ｃ２−１）：発生の通知を受けた異常と同一の種類を示す種別情報を含む過去の異常ログ要素１２９を異常履歴データ１２８から抽出する。
手順（ｃ２−２）：抽出した異常ログ要素１２９に含まれる発生時刻から解消時刻までの期間に実行時刻が属する操作ログ要素１２７を操作履歴データ１２６から抽出する。
手順（ｃ２−３）：抽出した操作ログ要素１２７に基づいて支援情報を生成する。例えば、支援情報は、抽出した操作ログ要素１２７に含まれる内容情報を実行時刻に従って時系列に並べた情報である。
【００４４】
発生の通知を受けた異常と同一の種類を示す種別情報を含む過去の異常ログ要素１２９の発生時刻から解消時刻までの期間において、当該異常を解消するための操作が実行されている。すなわち、当該期間に実行時刻が属する操作ログ要素１２７の中には、異常を解消するための操作に対応する操作ログ要素１２７が含まれる。したがって、知識や経験の乏しいユーザ（作業者や監視者など）であっても、支援情報を確認することにより異常を解消しやすくなる。
【００４５】
§２  具体例
次に、本実施の形態に係る制御システムの具体例について説明する。
【００４６】
＜Ａ．ＰＬＣのハードウェア構成例＞
図２は、本実施の形態に係る制御システムを構成するＰＬＣのハードウェア構成例を示す模式図である。図２に示されるように、ＰＬＣ１００は、プロセッサ１０２と、メインメモリ１０４と、ストレージ１１０と、第１ネットワークコントローラ１０６と、第２ネットワークコントローラ１０８と、第３ネットワークコントローラ１３０と、ＵＳＢ（Universal Serial Bus）コントローラ１２０と、メモリカードインターフェイス１１２と、ローカルバスコントローラ１１６とを含む。これらのコンポーネントは、プロセッサバス１１８を介して接続されている。
【００４７】
プロセッサ１０２は、主として、制御対象の制御に係る制御演算を実行する演算処理部に相当し、ＣＰＵ（Central Processing Unit）やＧＰＵ（Graphics Processing Unit）などで構成される。具体的には、プロセッサ１０２は、ストレージ１１０に格納されたプログラム（一例として、システムプログラム１２２および制御プログラム１２４）を読み出して、メインメモリ１０４に展開して実行することで、制御対象に応じた制御演算および各種処理を実現する。
【００４８】
メインメモリ１０４は、ＤＲＡＭ（Dynamic Random Access Memory）やＳＲＡＭ（Static Random Access Memory）などの揮発性記憶装置などで構成される。ストレージ１１０は、例えば、ＳＳＤ（Solid State Drive）やＨＤＤ（Hard Disk Drive）などの不揮発性記憶装置などで構成される。
【００４９】
ストレージ１１０には各種プログラムが格納される。各種プログラムは、基本的な機能を実現するためのシステムプログラム１２２および制御対象に応じて作成された制御プログラム１２４を含む。制御プログラム１２４は、ＵＳＢコントローラ１２０を介して接続されたサポート装置２００によってストレージ１１０に格納される。さらに、ストレージ１１０には、操作履歴データ１２６および異常履歴データ１２８が格納される。
【００５０】
第１ネットワークコントローラ１０６、第２ネットワークコントローラ１０８および第３ネットワークコントローラ１３０の各々は、ネットワークを介した任意のデバイスとの間のデータの遣り取りを担当する。第１ネットワークコントローラ１０６、第２ネットワークコントローラ１０８および第３ネットワークコントローラ１３０は、ＥｔｈｅｒＮｅｔなどの汎用的なネットワークプロトコルを採用してもよい。
【００５１】
例えば、第１ネットワークコントローラ１０６は、上位機器との間でデータを遣り取りする。第３ネットワークコントローラ１３０は、端末３５０との間でデータを遣り取りする。
【００５２】
第２ネットワークコントローラ１０８は、フィールドネットワークを介して、制御対象およびＨＭＩ装置４００との間でデータを遣り取りする。フィールドネットワーク上では、予め定められたデータ構造を有する通信フレームが所定周期で順次転送されており、プロセッサ１０２および各装置は、順次転送される通信フレームに対して、指定されたデータを指定された領域に書込み、および、必要なデータを対応する領域から読み出す。具体的には、プロセッサ１０２は、周期的に送信する通信フレームに各装置への指令を含める。各装置は、受信した通信フレームから自装置に対する指令を読み出すとともに、収集または生成したデータを通信フレームに含めて転送する。これにより、プロセッサ１０２は、戻ってきた通信フレームを確認することにより、各装置で収集または生成されたデータを取得できる。
【００５３】
ＵＳＢコントローラ１２０は、ＵＳＢ接続を介して、サポート装置２００との間でデータを遣り取りする。また、ＵＳＢコントローラ１２０は、サポート装置２００を介して端末３００との間でデータを遣り取りすることもできる。
【００５４】
メモリカードインターフェイス１１２は、着脱可能な記録媒体の一例であるメモリカード１１４を受付ける。メモリカードインターフェイス１１２は、メモリカード１１４に対してデータを書込み、メモリカード１１４から各種データ（ログやトレースデータなど）を読出すことが可能になっている。
【００５５】
ローカルバスコントローラ１１６は、ローカルバスを介して、ＰＬＣ１００に接続される任意のユニットとの間でデータを遣り取りする。
【００５６】
図２には、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field-Programmable Gate Array）など）を用いて実装してもよい。あるいは、ＰＬＣ１００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００５７】
＜Ｂ．ＰＬＣの機能構成例＞
図３は、本実施の形態に係る制御システムを構成するＰＬＣの機能構成例を示す模式図である。図３に示す例のＰＬＣ１００は、操作コマンド処理部１１と、操作履歴書き込み部１２と、ＰＬＣモジュール群１３と、異常履歴書き込み部１４と、出力部１５と、状態レジスタ１８とを備える。操作コマンド処理部１１、操作履歴書き込み部１２、ＰＬＣモジュール群１３、異常履歴書き込み部１４および出力部１５は、図２に示すプロセッサ１０２がストレージ１１０に格納される各種プログラムを実行することにより実現される。状態レジスタ１８は、図２に示すメインメモリ１０４およびストレージ１１０によって実現される。
【００５８】
＜Ｂ−１．操作コマンド処理部＞
操作コマンド処理部１１は、端末３００，３５０およびＨＭＩ装置４００のいずれかから操作コマンドを受け、当該操作コマンドに応じた処理を実行する。操作コマンドは、例えばＨＴＴＰ（Hypertext Transfer Protocol）に従ったパケットである。
【００５９】
図４は、操作コマンドの構成要素の一例を示す図である。図４に示す例の操作コマンドは、構成要素２１〜２６を含む。構成要素２１は、操作コマンドを生成したプログラムを識別するソースＩＤを示す。ソースＩＤは、例えば専用ツール３０（図１参照）およびＨＭＩプログラム４０（図１参照）のいずれかを識別する。構成要素２２は、処理の種類を識別する機能ＩＤを示す。機能ＩＤは、例えば「変更」「書き込み」などを識別する。構成要素２３は、処理の対象となるリソースを識別するリソース名を示す。構成要素２４は、処理の対象に対して適用されるデータを識別するデータ名を示す。構成要素２５は、操作コマンドの送信元の装置の位置を識別するロケーションＩＤを示す。構成要素２６は、操作コマンドの送信元のユーザ（作業者や監視者など）を識別するユーザＩＤを示す。なお、操作コマンドにおいて、ロケーションＩＤおよびユーザＩＤの少なくとも一方は省略されてもよい。
【００６０】
端末３００，３５０およびＨＭＩ装置４００は、構成要素２１〜２６にそれぞれ対応する情報を加えることにより操作コマンドを生成する。具体的には、端末３００，３５０は、専用ツール３０を識別するソースＩＤを構成要素２１に貼り付ける。ＨＭＩ装置４００は、ＨＭＩプログラム４０を識別するソースＩＤを構成要素２１に貼り付ける。端末３００，３５０およびＨＭＩ装置４００は、入力情報に従って機能ＩＤ、リソース名およびデータ名を生成し、生成した機能ＩＤ、リソース名およびデータ名を構成要素２２，２３，２４にそれぞれ貼り付ける。端末３００，３５０およびＨＭＩ装置４００のうちＧＰＳ（Global Positioning System）センサを有する装置は、ＧＰＳを用いて取得した緯度経度をロケーションＩＤとして生成し、生成したロケーションＩＤを構成要素２５に貼り付ける。一般に、スマートフォンやタブレットで構成される端末３００，３５０は、ＧＰＳセンサを有しており、ロケーションＩＤを構成要素２５に貼り付けることができる。一方、一般に、ＨＭＩ装置４００は、ＧＰＳセンサを有しておらず、ロケーションＩＤを含まない操作コマンドを生成すればよい。端末３００，３５０およびＨＭＩ装置４００は、ログイン中のユーザＩＤを構成要素２６に貼り付ける。
【００６１】
操作コマンド処理部１１は、バッファを有し、受け付けた操作コマンドをバッファに保存する。操作コマンド処理部１１は、バッファに保存した順に操作コマンドを読み出し、読み出した操作コマンドに応じた処理を実行する。
【００６２】
＜Ｂ−２．操作履歴書き込み部＞
図３に戻って、操作履歴書き込み部１２は、操作コマンド処理部１１が操作コマンドに応じた処理を実行する毎に、当該操作コマンドに対応する操作ログ要素１２７を生成し、生成した操作ログ要素１２７を操作履歴データ１２６に書き込む。操作ログ要素１２７は、少なくとも操作コマンドの内容を示す内容情報および操作コマンドに応じた処理の実行時刻を含む。
【００６３】
図５は、操作履歴データの一例を示す図である。図５に示されるように、操作履歴データ１２６は、操作コマンド毎に生成された操作ログ要素１２７を含む。図５に示す例の操作ログ要素１２７は、ソースＩＤ３１と、内容情報３８と、実行時刻３５と、ロケーションＩＤ３６と、ユーザＩＤ３７とを対応付けた情報である。ソースＩＤ３１、ロケーションＩＤ３６およびユーザＩＤ３７は、対応する操作コマンドの送信元を識別する送信元識別情報である。内容情報３８は、機能ＩＤ３２とリソース名３３とデータ名３４とを含む。
【００６４】
操作履歴書き込み部１２は、操作コマンドの構成要素２１〜２６（図４参照）に定義された値をそれぞれソースＩＤ３１、機能ＩＤ３２、リソース名３３、データ名３４、ロケーションＩＤ３６およびユーザＩＤ３７とする操作ログ要素１２７を生成すればよい。そして、操作履歴書き込み部１２は、操作コマンドに応じた処理の実行時刻３５を操作ログ要素１２７に追加すればよい。
【００６５】
なお、操作履歴書き込み部１２は、緯度経度と地域名（例えば「京都市下京区」）とを対応付けたマップ情報を予め記憶しておき、操作コマンドの構成要素２５に定義されるＧＰＳ情報（緯度経度）を地域名に変換してロケーションＩＤ３６を生成してもよい。さらに、操作履歴書き込み部１２は、ＰＬＣ１００が設置されている位置（ＰＬＣ設置位置）を予め記憶しておき、操作コマンドの構成要素２５に定義される緯度経度とＰＬＣ設置位置との距離が閾値未満である場合に「ＰＬＣ近傍」を示すロケーションＩＤ３６を生成してもよい。
【００６６】
操作履歴書き込み部１２は、操作コマンドに応じた処理を開始または終了した時刻を実行時刻３５とすればよい。あるいは、操作コマンドを受けてから当該操作コマンドに応じた処理を終了するまでの時間が短い場合、操作履歴書き込み部１２は、操作コマンドの受信時刻を実行時刻３５としてもよい。
【００６７】
＜Ｂ−３．ＰＬＣモジュール群＞
図３に戻って、ＰＬＣモジュール群１３は、各種のプログラムに従った制御を行なう複数のモジュールを含む。例えば、ＰＬＣモジュール群１３は、制御対象の動作を監視するモジュール、制御対象との間のネットワークを監視するモジュール、ＰＬＣ１００内の動作を監視するモジュールなどを含む。
【００６８】
ＰＬＣモジュール群１３に含まれるいくつかのモジュールは、制御対象およびＰＬＣ１００の少なくとも一方に関連する異常を検知する異常検知部として動作する。これらのモジュールは、異常を検知すると、異常の発生を端末３００，３５０およびＨＭＩ４００に通知する。
【００６９】
例えば、制御対象の動作を監視するモジュールは、制御対象との間で送受信される通信フレームに含まれる変数と閾値とを比較することにより、制御対象の異常を検知する。異常の種類として、例えば、モータの軸異常、モータの原点復帰中の動作異常、速度異常などがある。
【００７０】
また、制御対象との間のネットワークを監視するモジュールは、例えば通信フレームが送信されてから戻ってくるまでの時間と閾値とを比較することにより、通信異常を検知する。
【００７１】
さらに、ＰＬＣ１００内の動作を監視するモジュールは、例えばウォッチドッグタイマを用いてプロセッサ１０２の動作を監視する。ウォッチドッグタイマは、プロセッサ１０２から周期的にリセットされることで、そのカウント値がリセットされる。プロセッサ１０２が適切に動作しなくなると、ウォッチドッグタイマがリセットされず、カウントアップが継続する。そのため、ＰＬＣ１００内の動作を監視するモジュールは、ウォッチドッグタイマのカウント値と閾値とを比較することにより、プロセッサ１０２の動作異常を検知できる。
【００７２】
状態レジスタ１８は、ＰＬＣモジュール群１３によって検知可能な複数種類の異常の各々に対応する異常フラグを記憶する。ＰＬＣモジュール群１３に含まれるモジュールは、異常を検知した場合に当該異常に対応する異常フラグをオン状態に更新し、異常が解消された場合に当該異常に対応する異常フラグをオフ状態に更新する。
【００７３】
＜Ｂ−４．異常履歴書き込み部＞
異常履歴書き込み部１４は、状態レジスタ１８が記憶する各異常フラグを定期的（例えば１秒毎）に監視する。異常履歴書き込み部１４は、異常フラグの監視結果に応じて異常ログ要素１２９を生成し、生成した異常ログ要素１２９を異常履歴データ１２８に書き込む。異常ログ要素１２９は、異常の種類を示す種別情報と、異常の発生時刻と、異常の解消時刻とを含む。
【００７４】
異常履歴書き込み部１４は、異常フラグがオフ状態からオン状態に切り替わると、当該異常フラグに対応する異常の種類を示す種別情報と、異常の発生時刻とを対応付けた異常ログ要素１２９を生成し、生成した異常ログ要素１２９を異常履歴データ１２８に書き込む。異常履歴書き込み部１４は、異常フラグがオフ状態からオン状態に切り替わったタイミングを異常の発生時刻とすればよい。
【００７５】
異常履歴書き込み部１４は、異常フラグがオン状態からオフ状態に切り替わると、異常履歴データ１２８の中から、当該異常フラグに対応する異常の種類を示す種別情報を含む最新の異常ログ要素１２９を特定する。異常履歴書き込み部１４は、特定した異常ログ要素１２９に解消時刻を追加する。異常履歴書き込み部１４は、異常フラグがオン状態からオフ状態に切り替わったタイミングを解消時刻とすればよい。
【００７６】
図６は、異常履歴データの一例を示す図である。図６に示されるように、異常履歴データ１２８は、検知された異常毎の異常ログ要素１２９を含む。図６に示す例の異常ログ要素１２９は、異常ＩＤおよび異常サブＩＤを含む種別情報４１と、発生時刻４２と、解消時刻４３とを対応付けた情報である。異常ＩＤは、異常の種類の大分類を示し、異常サブＩＤは、異常の種類の小分類を示す。図６に示す例では、異常ログ要素１２９ａ，１２９ｚは、同一の種別情報４１を含み、同一の異常に対応する。なお、異常ログ要素１２９ｚの解消時刻４３がブランクとなっている。これは、異常が解消されていない（異常が継続中である）ためである。
【００７７】
＜Ｂ−５．出力部＞
図３に戻って、出力部１５は、端末３００，３５０およびＨＭＩ装置４００からの要求を受けて、対象異常の解消を支援する支援情報を出力する。対象異常として、通常、新たに通知された異常が指定される。出力部１５は、検索部１６と、支援情報生成部１７とを含む。
【００７８】
検索部１６は、対象異常と同じ種類を示す種別情報４１（図６参照）を含み、かつ解消時刻がブランクではないという条件を満たす１つの異常ログ要素１２９を異常履歴データ１２８から抽出する。検索部１６は、当該条件を満たす複数の異常ログ要素１２９が存在する場合、当該複数の異常ログ要素１２９のうち最新の異常ログ要素１２９を抽出する。検索部１６は、抽出した異常ログ要素１２９の発生時刻４２から解消時刻４３までの期間に実行時刻３５（図５参照）が属する操作ログ要素１２７を操作履歴データ１２６から抽出する。検索部１６は、抽出した操作ログ要素１２７を支援情報生成部１７に出力する。
【００７９】
支援情報生成部１７は、検索部１６から受けた操作ログ要素１２７に基づいて支援情報を生成し、生成した支援情報を要求元の装置（端末３００，３５０およびＨＭＩ装置４００のいずれか）に出力する。これにより、支援情報は、要求元の装置（端末３００，３５０およびＨＭＩ装置４００のいずれか）で表示される。
【００８０】
（Ｂ−５−１．支援情報の第１の生成例）
支援情報生成部１７は、検索部１６から受けた操作ログ要素１２７に含まれるソースＩＤ３１、内容情報３８、ロケーションＩＤ３６およびユーザＩＤ３７を実行時刻３５に従って時系列に並べた支援情報を生成する。支援情報生成部１７は、内容情報３８をユーザが理解しやすい形式に変換してもよい。
【００８１】
図７は、内容情報の変換方法の一例を示す図である。図７に示す例では、支援情報生成部１７は、内容情報３８を構成する機能ＩＤ３２、リソース名３３およびデータ名３４を適宜並び替えるとともに助詞を補うことにより文に変換する。これにより、ユーザ（作業者や監視者など）は、操作の内容を理解しやすくなる。なお、内容情報３８の変換は、支援情報生成部１７ではなく、支援情報を受けた端末３００，３５０およびＨＭＩ装置４００で実行されてもよい。
【００８２】
図８は、支援情報の表示画面の一例を示す図である。図８に示す画面は、支援情報を要求した装置（端末３００，３５０およびＨＭＩ装置４００のいずれか）に表示される。
【００８３】
図８に示す例の画面５０は、対象異常と同じ種類を示す種別情報４１を含む異常ログ要素１２９の発生時刻から解消時刻までの期間内に実行された全ての操作の一覧６０を含む。異常の発生時刻から解消時刻までの期間内に実行された操作には、当該異常を解消するために実行された操作が含まれる。そのため、ユーザは、一覧６０を確認することにより、異常を解消するための操作を行ないやすくなる。
【００８４】
図８に示す例の画面５０では、異常の発生時刻から解消時刻までの期間内に実行された全ての操作が表示される。当該期間内に実行された操作の中には、異常の解消に関係しない操作も含まれ得る。そのため、画面５０には、表示される操作を絞り込むための入力欄５１〜５３を含む。入力欄５１〜５３はそれぞれ、ソースＩＤ、ロケーションＩＤおよびユーザＩＤを入力するための欄である。
【００８５】
入力欄５１にソースＩＤが入力されると、入力されたソースＩＤに対応する操作の一覧を含む画面が表示される。
【００８６】
図９は、入力されたソースＩＤに対応する操作の一覧を含む画面例を示す図である。図９に示す画面５０ａは、図８において入力欄５１に専用ツール３０を示すソースＩＤ「Ｔｏｏｌ」が入力されたときに表示される。支援情報生成部１７は、入力欄５１に入力されたソースＩＤで識別されるソースを絞り込み対象として指定する。支援情報生成部１７は、検索部１６から受けた操作ログ要素１２７の中から、絞り込み対象であるソースを識別するソースＩＤ３１を含む操作ログ要素１２７を絞り込み、絞り込まれた操作ログ要素１２７に基づいて支援情報を生成すればよい。これにより、入力されたソースＩＤに対応する操作の一覧６０ａが表示される。
【００８７】
同様に、入力欄５２にロケーションＩＤが入力されると、検索部１６から受けた操作ログ要素１２７の中から、入力されたロケーションＩＤと同一のロケーションＩＤ３６を含む操作ログ要素１２７が絞り込まれる。そして、絞り込まれた操作ログ要素１２７に対応する操作の一覧を含む画面が表示される。例えば、ユーザは、異常を解消する操作が通常ＰＬＣ１００の近傍で実施されることを考慮して、ロケーションＩＤ「ＰＬＣの近傍」を入力欄５２に入力すればよい。
【００８８】
入力欄５３にユーザＩＤが入力されると、検索部１６から受けた操作ログ要素１２７の中から、入力されたユーザＩＤと同一のユーザＩＤ３７を含む操作ログ要素１２７が絞り込まれる。そして、絞り込まれた操作ログ要素１２７に対応する操作の一覧を含む画面が表示される。例えば、ユーザは、熟練の作業者によって異常が解消されている可能性が高いことを考慮して、当該熟練の作業者のユーザＩＤを入力欄５３に入力すればよい。
【００８９】
なお、入力欄５１〜５３のうちの複数にＩＤが入力された場合、支援情報生成部１７は、検索部１６から受けた操作ログ要素１２７の中から、入力された複数のＩＤ（例えばソースＩＤとユーザＩＤ）と一致する操作ログ要素１２７を絞り込めばよい。
【００９０】
（Ｂ−５−２．支援情報の第２の生成例）
上記の第１の生成例では、支援情報生成部１７は、まず、異常の発生時刻から解消時刻までの期間内に実行された全ての操作の一覧６０を支援情報として生成する。その後、支援情報生成部１７は、入力欄５１〜５３への入力に応じて操作ログ要素１２７を絞り込み、絞り込まれた操作ログ要素１２７に基づいて支援情報を再生成する。
【００９１】
これに対して、第２の生成例では、支援情報生成部１７は、検索部１６から受けた操作ログ要素１２７の中から、異常の解消との関連性が高いと推定される操作ログ要素１２７を自動的に絞り込み、絞り込まれた操作ログ要素１２７に基づいて支援情報を生成する。
【００９２】
図１０は、操作ログ要素の絞り込みの方法を示す図である。図１０において、操作ログ要素群１２７Ａは、検索部１６から受けた操作ログ要素の群である。すなわち、操作ログ要素群１２７Ａは、対象異常と同じ種類を示す種別情報４１を含み、かつ解消時刻がブランクではないという条件を満たす最新の異常ログ要素１２９Ａの発生時刻から解消時刻までに実行された操作に対応する操作ログ要素の群である。
【００９３】
支援情報生成部１７は、異常履歴データ１２８の中から、異常ログ要素１２９Ａとは異なり、かつ、対象異常と同一の種類を示す種別情報４１を含む少なくとも１つの異常ログ要素を選択する。図１０に示す例では、異常ログ要素１２９Ｂ，１２９Ｃが選択される。
【００９４】
支援情報生成部１７は、選択した異常ログ要素１２９Ｂ，１２９Ｃの各々について、当該異常ログ要素に含まれる解消時刻よりも前であり、かつ当該解消時刻に最も近い実行時刻を含む操作ログ要素を操作履歴データ１２６から選択する。図１０に示す例では、操作ログ要素１２７Ｂ，１２７Ｃが選択される。
【００９５】
支援情報生成部１７は、選択した操作ログ要素１２７Ｂ、１２７Ｃに含まれるソースＩＤ３１によって代表されるソースを絞り込み対象として指定する。例えば、選択した操作ログ要素に含まれるソースＩＤ３１で識別されるソースのうち最多ソースが絞り込み対象として指定される。図１０に示される例では、操作ログ要素１２７Ｂ、１２７Ｃに含まれるソースＩＤ３１は、いずれも専用ツール３０を識別する「Ｔｏｏｌ」である。そのため、支援情報生成部１７は、専用ツール３０を絞り込み対象として指定する。
【００９６】
選択した操作ログ要素に含まれるソースＩＤ３１で識別されるソースのうち最多ソースが複数存在する場合、支援情報生成部１７は、当該複数の最多ソースのうちの１つ（例えば最新の実行時刻３５に対応するソースＩＤで識別されるソース）を絞り込み対象として指定すればよい。
【００９７】
支援情報生成部１７は、検索部１６から受けた操作ログ要素１２７の中から、絞り込み対象として指定されたソースを識別するソースＩＤ３１を含む操作ログ要素１２７を絞り込む。支援情報生成部１７は、絞り込まれた操作ログ要素１２７に基づいて支援情報を生成すればよい。
【００９８】
第２の生成例では、図９に示される画面５０ａが最初に表示される。その後、画面５０ａにおいて入力欄５１〜５３のいずれかへの入力に応じて、操作の一覧が変更される。
【００９９】
＜Ｃ．処理フロー＞
次に、図１１〜１３を参照して、支援情報の提供処理の流れについて説明する。図１１は、端末３００，３５０およびＨＭＩ装置４００において実行される支援情報の要求および表示の処理の流れを示すフローチャートである。
【０１００】
まず、端末３００，３５０およびＨＭＩ装置４００は、異常の発生の通知をＰＬＣ１００から受けたか否かを判定する（ステップＳ１）。通知を受けていない場合（ステップＳ１でＮＯ）、支援情報の要求および表示処理はステップＳ１に戻る。
【０１０１】
通知を受けた場合（ステップＳ１でＹＥＳ）、端末３００，３５０およびＨＭＩ装置４００は、ＰＬＣ１００に支援情報を要求する（ステップＳ２）。ステップＳ２において、端末３００，３５０およびＨＭＩ装置４００は、通知された異常を対象異常として指定する。
【０１０２】
次に、端末３００，３５０およびＨＭＩ装置４００は、ＰＬＣ１００から支援情報を受けたか否かを判定する（ステップＳ３）。支援情報を受けた場合（ステップＳ３でＹＥＳ）、端末３００，３５０およびＨＭＩ装置４００は、受けた支援情報を表示する（ステップＳ４）。支援情報なしの通知をＰＬＣ１００から受けた場合（ステップＳ３でＮＯ）、端末３００，３５０およびＨＭＩ装置４００は、支援情報がない旨を表示する（ステップＳ５）。ステップＳ４またはステップＳ５の後、支援情報の要求および表示処理は終了する。
【０１０３】
図１２は、ＰＬＣにおいて実行される支援情報の生成処理の前半部分を示すフローチャートである。図１３は、ＰＬＣにおいて実行される支援情報の生成処理の後半部分を示すフローチャートである。なお、図１２および図１３には、上記の第２の生成例に従って支援情報を生成するときのフローが示される。
【０１０４】
まずステップＳ１１において、ＰＬＣ１００のプロセッサ１０２は、端末３００，３５０およびＨＭＩ装置４００のいずれかから支援情報の要求を受けたか否かを判定する。支援情報の要求を受けていない場合（ステップＳ１１でＮＯ）、支援情報の生成処理はステップＳ１１に戻る。
【０１０５】
支援情報の要求を受けた場合（ステップＳ１１でＹＥＳ）、プロセッサ１０２は、指定された対象異常と同一の種類を示す種別情報４１を含む異常ログ要素１２９が異常履歴データ１２８に含まれるか否かを判定する（ステップＳ１２）。対象異常と同一種別の異常ログ要素１２９が異常履歴データ１２８に含まれない場合（ステップＳ１２でＮＯ）、プロセッサ１０２は、支援情報がない旨を通知する（ステップＳ１３）。ステップＳ１３の後、支援情報の生成処理は終了する。
【０１０６】
対象異常と同一種別の異常ログ要素１２９が異常履歴データ１２８に含まれる場合（ステップＳ１２でＹＥＳ）、プロセッサ１０２は、対象異常と同一種別の１つの異常ログ要素１２９を抽出する（ステップＳ１４）。なお、異常履歴データ１２８の中に対象異常と同一種別の複数の異常ログ要素１２９が存在する場合、プロセッサ１０２は、当該複数の異常ログ要素１２９の中の最新の異常ログ要素１２９を抽出する。次に、プロセッサ１０２は、抽出した異常ログ要素１２９の発生時刻から解消時刻までの期間を特定する（ステップＳ１５）。
【０１０７】
次に、プロセッサ１０２は、操作履歴データ１２６の中から、特定した期間内に実行時刻３５が属する操作ログ要素１２７を全て抽出する（ステップＳ１６）。
【０１０８】
次に、プロセッサ１０２は、抽出された全ての操作ログ要素１２７に含まれるソースＩＤ３１が同一であるか否かを判定する（ステップＳ１７）。全てのソースＩＤが同一である場合（ステップＳ１７でＹＥＳ）、プロセッサ１０２は、抽出された全ての操作ログ要素１２７に基づいて支援情報を生成する（ステップＳ１８）。
【０１０９】
全てのソースＩＤが同一でない場合（ステップＳ１７でＮＯ）、プロセッサ１０２は、ステップＳ１４で抽出した異常ログ要素１２９よりも過去に、対象異常と同一種別の異常ログ要素１２９が存在するか否かを判定する（ステップＳ１９）。
【０１１０】
ステップＳ１４で抽出した異常ログ要素１２９よりも過去に同一種別の異常ログ要素１２９が存在しない場合（ステップＳ１９でＮＯ）、支援情報の生成処理はステップＳ２０に移る。ステップＳ２０において、プロセッサ１０２は、ステップＳ１６で抽出した操作ログ要素１２７のうち最後の（実行時刻が最も遅い）操作ログ要素１２７のソースＩＤ３１で識別されるソースを絞り込み対象として決定する。
【０１１１】
ステップＳ１４で抽出した異常ログ要素１２９よりも過去に同一種別の異常ログ要素１２９が存在する場合（ステップＳ１９でＹＥＳ）、支援情報の生成処理はステップＳ２１に移る。ステップＳ２１において、プロセッサ１０２は、ステップＳ１４で抽出した異常ログ要素１２９よりも過去の同一種別の異常ログ要素１２９について、解消時刻の直前に実行された操作に対応する操作ログ要素１２７を特定する。すなわち、プロセッサ１０２は、異常ログ要素１２９毎に、当該異常ログ要素１２９の解消時刻よりも前であり、かつ、当該解消時刻に最も近い実行時刻３５を含む操作ログ要素１２７を特定する。
【０１１２】
次に、プロセッサ１０２は、特定した操作ログ要素１２７に基づいて、絞り込み対象となるソースを決定する（ステップＳ２２）。具体的には、特定した操作ログ要素１２７が１つである場合、プロセッサ１０２は、当該操作ログ要素１２７のソースＩＤ３１で識別されるソースを絞り込み対象として決定する。特定した操作ログ要素１２７が複数である場合、プロセッサ１０２は、当該複数の操作ログ要素１２７のソースＩＤ３１によって代表されるソースを絞り込み対象として決定する。すなわち、複数の操作ログ要素１２７のソースＩＤで示されるソースのうち最多ソースが絞り込み対象として決定される。最多ソースが複数である場合、当該複数の最多ソースのうち実行時刻が最新の最多ソースが絞り込み対象として決定される。
【０１１３】
次に、プロセッサ１０２は、ステップＳ２０またはステップＳ２２で決定された絞り込み対象に基づいて、ステップＳ１６で抽出した操作ログ要素１２７を絞り込む（ステップＳ２３）。プロセッサ１０２は、絞り込まれた操作ログ要素１２７に基づいて支援情報を生成する（ステップＳ２４）。
【０１１４】
プロセッサ１０２は、ステップＳ１８またはステップＳ２４で生成された支援情報を要求元に出力する（ステップＳ２５）。
【０１１５】
＜Ｄ．変形例＞
図１３に示す例では、ステップＳ１９の判定結果に応じて絞り込み対象となるソースの決定方法を異ならせた。しかしながら、ステップＳ１９を省略し、ステップＳ２０の方法によって絞り込み対象となるソースを決定してもよい。
【０１１６】
また、ステップＳ２０において、プロセッサ１０２は、ステップＳ１６で抽出した操作ログ要素１２７のうち最後の（実行時刻が最も遅い）操作ログ要素１２７のロケーションＩＤ３６で識別される場所を絞り込み対象として決定してもよい。もしくは、ステップＳ２０において、プロセッサ１０２は、ステップＳ１６で抽出した操作ログ要素１２７のうち最後の（実行時刻が最も遅い）操作ログ要素１２７のユーザＩＤ３７で識別されるユーザを絞り込み対象として決定してもよい。
【０１１７】
上記の説明では、出力部１５がＰＬＣ１００に備えられるものとした。しかしながら、出力部１５は、ＰＬＣ１００の外部の装置（例えばサーバ）に備えられていてもよい。また、この場合、操作履歴データ１２６および異常履歴データ１２８もＰＬＣ１００の外部の装置に記憶されてもよい。さらに、操作履歴書き込み部１２および異常履歴書き込み部１４もＰＬＣ１００の外部の装置に備えられていてもよい。
【０１１８】
＜Ｅ．作用・効果＞
以上のように、制御対象を制御するＰＬＣ１００は、制御対象およびＰＬＣ１００の少なくとも一方に関連する異常を検知するためのＰＬＣモジュール群１３と、操作コマンドを受け、操作コマンドに応じた処理を実行する操作コマンド処理部１１とを含む。制御システムＳＹＳは、異常履歴書き込み部１４、操作履歴書き込み部１２および出力部１５を含む。図３に示す例では、異常履歴書き込み部１４、操作履歴書き込み部１２および出力部１５はＰＬＣ１００に備えられる。異常履歴書き込み部１４は、ＰＬＣモジュール群１３によって検知された各異常について、当該異常の種類を示す種別情報４１と当該異常の発生時刻４２と当該異常の解消時刻４３とを含む異常ログ要素１２９を異常履歴データ１２８に書き込む。操作履歴書き込み部１２は、操作コマンド処理部１１が受けた各操作コマンドについて、当該操作コマンドの内容を示す内容情報３８と当該操作コマンドに応じた処理の実行時刻３５とを含む操作ログ要素１２７を操作履歴データ１２６に書き込む。出力部１５は、ＰＬＣモジュール群１３によって検知された対象異常の解消を支援する支援情報を出力する。出力部１５は、対象異常と同一の種類を示す種別情報４１を含む１つの異常ログ要素１２９を対象ログ要素として異常履歴データ１２８から抽出する。出力部１５は、対象ログ要素に含まれる発生時刻４２から解消時刻４３までの期間に実行時刻３５が属する操作ログ要素１２７を操作履歴データ１２６から抽出する。出力部１５は、抽出した操作ログ要素１２７に基づいて支援情報を生成する。
【０１１９】
発生の通知を受けた異常と同一の種類を示す種別情報４１を含む過去の異常ログ要素１２９の発生時刻４２から解消時刻４３までの期間において、当該異常を解消するための操作が実行されている。すなわち、当該期間に実行時刻３５が属する操作ログ要素１２７の中には、異常を解消するための操作に対応する操作ログ要素１２７が含まれる。したがって、知識や経験の乏しいユーザ（作業者や監視者など）であっても、支援情報を確認することにより異常を解消しやすくなる。
【０１２０】
操作ログ要素１２７は、操作コマンドの送信元を識別する送信元識別情報を含む。送信元識別情報は、例えば、操作コマンドを生成したプログラムを識別するソースＩＤ３１、操作コマンドを送信した装置の位置を識別するロケーションＩＤ３６、および、操作コマンドを送信したユーザを識別するユーザＩＤ３７の少なくとも１つを含む。支援情報は、抽出された操作ログ要素１２７に含まれる内容情報３８および送信元識別情報を実行時刻３５に従って時系列に並べた情報である。
【０１２１】
これにより、ユーザは、出力された内容情報３８の中から、送信元識別情報に基づいて所望の送信元に対応する内容情報３８を確認しやすくなる。さらに、ユーザは、異常を解消するための操作の順番を理解しやすくなる。
【０１２２】
出力部１５は、抽出された操作ログ要素１２７の中から、対象送信元を識別する送信元識別情報（例えば、専用ツール３０を識別するソースＩＤ「Ｔｏｏｌ」）を含む操作ログ要素１２７を絞り込み、絞り込まれた操作ログ要素１２７に基づいて支援情報を生成する。
【０１２３】
これにより、ユーザは、過去の異常ログ要素１２９の発生時刻４２から解消時刻４３までの期間に実行された操作のうち、対象送信元に対応する操作の内容のみを確認しやすくなる。
【０１２４】
出力部１５は、抽出された操作ログ要素１２７のうち実行時刻３５の最も遅い操作ログ要素１２７に含まれる送信元識別情報（ソースＩＤ、ロケーションＩＤおよびユーザＩＤのいずれか）によって識別される送信元を対象送信元として指定する。
【０１２５】
抽出された操作ログ要素１２７のうち実行時刻３５の最も遅い操作ログ要素１２７は、対象異常の解消時刻の直前に実行された操作に対応しており、対象異常の解消のために実行された操作である可能性が高い。当該操作ログ要素１２７に含まれる送信元識別情報（ソースＩＤ、ロケーションＩＤおよびユーザＩＤのいずれか）によって識別される送信元が対象送信元として指定される。これにより、ユーザは、抽出された操作ログ要素１２７の中から、異常の解消のために実行された可能性の高い操作のみを確認しやすくなる。
【０１２６】
出力部１５は、異常履歴データ１２８の中から、対象ログ要素とは異なり、かつ、対象異常と同一の種類を示す種別情報４１を含む少なくとも１つの異常ログ要素１２９を選択する。出力部１５は、選択した少なくとも１つの異常ログ要素１２９の各々について、当該異常ログ要素１２９に含まれる解消時刻４３よりも前であり、かつ当該異常ログ要素１２９に含まれる解消時刻４３に最も近い実行時刻３５を含む操作ログ要素１２７を操作履歴データ１２６から選択する。出力部１５は、選択した操作ログ要素１２７に含まれるソースＩＤによって代表されるソースを対象送信元として指定する。
【０１２７】
これにより、ユーザは、過去の対象異常の解消時刻の直前に実行された操作のソースと同一のソースＩＤを含む操作ログ要素１２７の操作内容のみを確認できる。上述したように、対象異常の解消時刻の直前に実行された操作は、対象異常の解消のために実行された操作である可能性が高い。そのため、ユーザは、抽出された操作ログ要素１２７の中から、異常の解消のために実行された可能性の高い操作のみを確認しやすくなる。
【０１２８】
出力部は、異常履歴データ１２８の中に対象異常と同一の種類を示す種別情報４１を含む複数の異常ログ要素１２９が存在する場合、当該複数の異常ログ要素１２９の中から最新の異常ログ要素１２９を対象ログ要素として抽出する。
【０１２９】
これにより、ユーザは、対象異常を解消するために最近実行された操作の内容を確認しやすくなる。
【０１３０】
＜Ｆ．付記＞
以上のように、本実施の形態および変形例は以下のような開示を含む。
【０１３１】
（構成１）
制御対象を制御するプログラマブルロジックコントローラ（１００）を備える制御システム（ＳＹＳ）であって、
前記プログラマブルロジックコントローラ（１００）は、
前記制御対象および前記プログラマブルロジックコントローラ（１００）の少なくとも一方に関連する異常を検知するための異常検知部（１３）と、
操作コマンドを受け、前記操作コマンドに応じた処理を実行するコマンド処理部（１１）とを含み、
前記制御システム（ＳＹＳ）は、
前記異常検知部（１３）によって検知された各異常について、当該異常の種類を示す種別情報（４１）と当該異常の発生時刻（４２）と当該異常の解消時刻（４３）とを含む第１ログ要素（１２９）を第１履歴データ（１２８）に書き込むための第１書き込み部（１４）と、
前記コマンド処理部（１１）が受けた各操作コマンドについて、当該操作コマンドの内容を示す内容情報（３８）と当該操作コマンドに応じた処理の実行時刻（３５）とを含む第２ログ要素（１２７）を第２履歴データ（１２６）に書き込むための第２書き込み部（１２）と、
前記異常検知部（１３）によって検知された対象異常の解消を支援する支援情報を出力するための出力部（１５）とを備え、
前記出力部（１５）は、
前記対象異常と同一の種類を示す前記種別情報を含む１つの第１ログ要素（１２９）を対象ログ要素として前記第１履歴データ（１２８）から抽出し、
前記対象ログ要素に含まれる前記発生時刻から前記解消時刻までの期間に前記実行時刻（３５）が属する第２ログ要素（１２７）を前記第２履歴データ（１２６）から抽出し、
抽出した第２ログ要素（１２７）に基づいて前記支援情報を生成する、制御システム（ＳＹＳ）。
【０１３２】
（構成２）
前記第２ログ要素（１２７）は、前記操作コマンドの送信元を識別する送信元識別情報（３１，３６，３７）を含み、
前記支援情報は、前記抽出した第２ログ要素（１２７）に含まれる前記内容情報（３８）および前記送信元識別情報（３１，３６，３７）を前記実行時刻（３５）に従って時系列に並べた情報である、構成１に記載の制御システム（ＳＹＳ）。
【０１３３】
（構成３）
前記第２ログ要素（１２７）は、前記操作コマンドの送信元を識別する送信元識別情報（３１，３６，３７）を含み、
前記出力部（１５）は、
前記抽出した第２ログ要素（１２７）の中から、対象送信元を識別する前記送信元識別情報（３１，３６，３７）を含む第２ログ要素（１２７）を絞り込み、
絞り込まれた第２ログ要素（１２７）に基づいて前記支援情報を生成する、構成１に記載の制御システム（ＳＹＳ）。
【０１３４】
（構成４）
前記出力部（１５）は、前記抽出した第２ログ要素（１２７）のうち前記実行時刻（３５）の最も遅い第２ログ要素（１２７）に含まれる前記送信元識別情報（３１，３６，３７）によって識別される送信元を前記対象送信元として指定する、構成３に記載の制御システム（ＳＹＳ）。
【０１３５】
（構成５）
前記出力部（１５）は、
前記第１履歴データ（１２８）の中から、抽出した前記対象ログ要素とは異なり、かつ、前記対象異常と同一の種類を示す前記種別情報を含む少なくとも１つの第１ログ要素（１２９）を選択し、
前記少なくとも１つの第１ログ要素（１２９）の各々について、当該第１ログ要素に含まれる解消時刻（４３）よりも前であり、かつ当該第１ログ要素に含まれる前記解消時刻（４３）に最も近い前記実行時刻（３５）を含む第２ログ要素（１２７）を前記第２履歴データ（１２６）から選択し、
選択した第２ログ要素（１２７）に含まれる前記送信元識別情報（３１，３６，３７）によって代表される送信元を前記対象送信元として指定する、構成３に記載の制御システム（ＳＹＳ）。
【０１３６】
（構成６）
前記支援情報は、前記絞り込まれた第２ログ要素（１２７）に含まれる前記内容情報（３８）を前記実行時刻（３５）に従って時系列に並べた情報である、構成３から５のいずれかに記載の制御システム（ＳＹＳ）。
【０１３７】
（構成７）
前記送信元識別情報（３１，３６，３７）は、前記操作コマンドを生成したプログラム、前記操作コマンドを送信した装置の位置、および、前記操作コマンドを送信したユーザの少なくとも１つを識別する、構成２から６のいずれかに記載の制御システム（ＳＹＳ）。
【０１３８】
（構成８）
前記出力部（１５）は、前記第１履歴データ（１２８）の中に前記対象異常と同一の種類を示す前記種別情報（４１）を含む複数の第１ログ要素（１２９）が存在する場合、当該複数の第１ログ要素（１２９）の中から最新の第１ログ要素（１２９）を前記対象ログ要素として抽出する、構成１から７のいずれかに記載の制御システム（ＳＹＳ）。
【０１３９】
（構成９）
制御対象を制御するプログラマブルロジックコントローラ（１００）であって、
前記制御対象および前記プログラマブルロジックコントローラ（１００）の少なくとも一方に関連する異常を検知するための異常検知部（１３）と、
操作コマンドを受け、前記操作コマンドに応じた処理を実行するコマンド処理部（１１）と、
前記異常検知部（１３）によって検知された各異常について、当該異常の種類を示す種別情報と当該異常の発生時刻と当該異常の解消時刻とを含む第１ログ要素（１２９）を第１履歴データ（１２８）に書き込むための第１書き込み部（１４）と、
前記コマンド処理部（１１）が受けた各操作コマンドについて、当該操作コマンドの内容を示す内容情報と当該操作コマンドに応じた処理の実行時刻とを含む第２ログ要素（１２７）を第２履歴データ（１２６）に書き込むための第２書き込み部（１２）と、
前記異常検知部（１３）によって検知された対象異常の解消を支援する支援情報を出力するための出力部（１５）とを備え、
前記出力部（１５）は、
前記対象異常と同一の種類を示す前記種別情報を含む１つの第１ログ要素（１２９）を対象ログ要素として前記第１履歴データ（１２８）から抽出し、
前記対象ログ要素に含まれる前記発生時刻から前記解消時刻までの期間に前記実行時刻が属する第２ログ要素（１２７）を前記第２履歴データ（１２６）から抽出し、
抽出した第２ログ要素（１２７）に基づいて前記支援情報を生成する、プログラマブルロジックコントローラ（１００）。
【０１４０】
（構成１０）
制御対象を制御するプログラマブルロジックコントローラ（１００）を備える制御システム（ＳＹＳ）の情報処理方法であって、
前記プログラマブルロジックコントローラ（１００）は、
前記制御対象および前記プログラマブルロジックコントローラの少なくとも一方に関連する異常を検知するための異常検知部（１３）と、
操作コマンドを受け、前記操作コマンドに応じた処理を実行するコマンド処理部（１１）とを含み、
前記情報処理方法は、
前記異常検知部（１３）によって検知された各異常について、当該異常の種類を示す種別情報と当該異常の発生時刻と当該異常の解消時刻とを含む第１ログ要素（１２９）を第１履歴データ（１２８）に書き込むステップと、
前記コマンド処理部（１１）が受けた各操作コマンドについて、当該操作コマンドの内容を示す内容情報と当該操作コマンドに応じた処理の実行時刻とを含む第２ログ要素（１２７）を第２履歴データ（１２６）に書き込むステップと、
前記異常検知部（１３）によって検知された対象異常の解消を支援する支援情報を出力するステップとを備え、
前記出力するステップは、
前記対象異常と同一の種類を示す前記種別情報を含む第１ログ要素（１２９）を対象ログ要素として前記第１履歴データ（１２８）から抽出するステップと、
前記対象ログ要素に含まれる前記発生時刻から前記解消時刻までの期間に前記実行時刻が属する第２ログ要素（１２７）を前記第２履歴データ（１２６）から抽出するステップと、
抽出した第２ログ要素（１２７）に基づいて前記支援情報を生成するステップとを含む、情報処理方法。
【０１４１】
本発明の実施の形態について説明したが、今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１４２】
１１  操作コマンド処理部、１２  操作履歴書き込み部、１３  ＰＬＣモジュール群、１４  異常履歴書き込み部、１５  出力部、１６  検索部、１７  支援情報生成部、１８  状態レジスタ、２１〜２６  構成要素、３０  専用ツール、３１  ソースＩＤ、３２  機能ＩＤ、３３  リソース名、３４  データ名、３５  実行時刻、３６  ロケーションＩＤ、３７  ユーザＩＤ、３８  内容情報、４０  ＨＭＩプログラム、４１  種別情報、４２  発生時刻、４３  解消時刻、５０，５０ａ  画面、５１〜５３  入力欄、６０，６０ａ  一覧、１００  ＰＬＣ、１０２  プロセッサ、１０４  メインメモリ、１０６  第１ネットワークコントローラ、１０８  第２ネットワークコントローラ、１１０  ストレージ、１１２  メモリカードインターフェイス、１１４  メモリカード、１１６  ローカルバスコントローラ、１１８  プロセッサバス、１２０  ＵＳＢコントローラ、１２２  システムプログラム、１２４  制御プログラム、１２６  操作履歴データ、１２７，１２７Ｂ，１２７Ｃ  操作ログ要素、１２７Ａ  操作ログ要素群、１２８  異常履歴データ、１２９，１２９Ａ〜１２９Ｃ，１２９ａ，１２９ｚ  異常ログ要素、１３０  第３ネットワークコントローラ、２００  サポート装置、３００，３５０  端末、４００  ＨＭＩ装置、ＳＹＳ  制御システム。
【図１】
2020197934.tif 000003
【図２】
2020197934.tif 000004
【図３】
2020197934.tif 000005
【図４】
2020197934.tif 000006
【図５】
2020197934.tif 000007
【図６】
2020197934.tif 000008
【図７】
2020197934.tif 000009
【図８】
2020197934.tif 000010
【図９】
2020197934.tif 000011
【図１０】
2020197934.tif 000012
【図１１】
2020197934.tif 000013
【図１２】
2020197934.tif 000014
【図１３】
2020197934.tif 000015