(57)【要約】【課題】製造ラインを構成する複数の機構間の因果関係を正確にモデル化する技術を提供する。【解決手段】本発明の一側面に係る工程解析装置は、製造ラインを構成する複数の機構の状態に関する複数件の状態データを取得する第１取得部と、前記製造ラインの動作を制御するための制御プログラムを取得する第２取得部と、取得した前記複数件の状態データを解析することにより、前記複数の機構間の接続状態を特定する第１解析部と、取得した前記制御プログラムを解析することにより、前記複数の機構の順序関係を特定する第２解析部と、それぞれ特定した前記接続状態及び前記順序関係に基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定する関係特定部と、を備える。【選択図】図１
2018206362.tif 000002
【特許請求の範囲】
【請求項１】
製造ラインを構成する複数の機構の状態に関する複数件の状態データを取得する第１取得部と、
前記製造ラインの動作を制御するための制御プログラムを取得する第２取得部と、
取得した前記複数件の状態データを解析することにより、前記複数の機構間の接続状態を特定する第１解析部と、
取得した前記制御プログラムを解析することにより、前記複数の機構の順序関係を特定する第２解析部と、
それぞれ特定した前記接続状態及び前記順序関係に基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定する関係特定部と、
を備える、
工程解析装置。
【請求項２】
前記関係特定部は、特定した前記複数の機構間の因果関係を示す有向グラフ情報を出力する、
請求項１に記載の工程解析装置。
【請求項３】
前記第１解析部は、特定した前記複数の機構間の接続状態を示す無向グラフ情報を構築し、
前記関係特定部は、前記無向グラフ情報に前記順序関係を適用することにより、前記有向グラフ情報を作成する、
請求項２に記載の工程解析装置。
【請求項４】
前記第１解析部は、（１）前記各件の状態データから特徴量を算出し、（２）当該各特徴量間の相関係数又は偏相関係数を算出する、ことによって、前記複数の機構間の接続状態を特定する、
請求項１から３のいずれか１項に記載の工程解析装置。
【請求項５】
前記第２解析部は、前記制御プログラムを利用して前記製造ラインを稼働させることで得られるログデータに基づいて、前記複数の機構の順序関係を特定する、
請求項１から４のいずれか１項に記載の工程解析装置。
【請求項６】
前記第２解析部は、（１）前記制御プログラムから抽象構文木を構築し、（２）構築した当該抽象構文木から前記各機構に関する変数と条件分岐とを抽出し、（３）前記制御プログラムを利用して前記製造ラインを正常に稼働させたときのログデータを取得し、（４）取得した前記ログデータを参照して、前記条件分岐の実行結果に基づいた、前記各変数の順番付けを行う、ことによって、前記複数の機構の順序関係を特定する、
請求項５に記載の工程解析装置。
【請求項７】
前記第２解析部は、（１）前記制御プログラムから抽象構文木を構築し、（２）構築した当該抽象構文木から前記各機構に関する変数を抽出し、（３）構築した当該抽象構文木に基づいて、前記制御プログラムの処理における前記変数の依存関係を特定し、（４）特定した依存関係に基づいて、前記複数の機構の順序関係を特定する、
請求項１から４のいずれか１項に記載の工程解析装置。
【請求項８】
前記（３）構築した当該抽象構文木に基づいて、前記制御プログラムの処理における前記変数の依存関係を特定するステップは、構築した当該抽象構文木から制御フローグラフを生成するステップと、生成した当該制御フローグラフに基づいて、抽出した前記変数の依存関係を特定するステップと、を含む、
請求項７に記載の工程解析装置。
【請求項９】
前記各件の状態データは、トルク、速度、加速度、温度、電流、電圧、空圧、圧力、流量、位置、寸法及び面積の少なくともいずれかを示す、
請求項１から８のいずれか１項に記載の工程解析装置。
【請求項１０】
前記制御プログラムは、ラダー・ダイアグラム言語、ファンクション・ブロック・ダイアグラム言語、ストラクチャード・テキスト言語、インストラクション・リスト言語、及びシーケンシャル・ファンクション・チャート言語、Ｃ言語の少なくともいずれかを利用して記述されている、
請求項１から９のいずれか１項に記載の工程解析装置。
【請求項１１】
前記第１解析部は、取得した前記複数件の状態データを統計的に解析することにより、前記複数の機構間の接続状態を特定する、
請求項１から１０のいずれか１項に記載の工程解析装置。
【請求項１２】
前記第１解析部は、前記接続状態として、前記複数の機構間の関係の強さを特定する、
請求項１から１１のいずれか１項に記載の工程解析装置。
【請求項１３】
前記複数の機構それぞれに含まれる装置の相対的な位置関係及び前記装置が前記工程に関与する順序の少なくとも一方に関する機構データを取得する第３取得部と、
取得した前記機構データを解析し、前記製造ラインで実施される前記工程をモデル化することで、前記複数の機構の順序関係を示す工程モデルを特定する第３解析部と、
を更に備え、
前記関係特定部は、それぞれ特定した前記接続状態、前記順序関係、及び前記工程モデルに基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定する、
請求項１から１２のいずれか１項に記載の工程解析装置。
【請求項１４】
コンピュータが、
製造ラインを構成する複数の機構の状態に関する複数件の状態データを取得するステップと、
前記製造ラインの動作を制御するための制御プログラムを取得するステップと、
取得した前記複数件の状態データを解析することにより、前記複数の機構間の接続状態を特定するステップと、
取得した前記制御プログラムを解析することにより、前記複数の機構の順序関係を特定するステップと、
それぞれ特定した前記接続状態及び前記順序関係に基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定するステップと、
を実行する工程解析方法。
【請求項１５】
コンピュータに、
製造ラインを構成する複数の機構の状態に関する複数件の状態データを取得するステップと、
前記製造ラインの動作を制御するための制御プログラムを取得するステップと、
取得した前記複数件の状態データを解析することにより、前記複数の機構間の接続状態を特定するステップと、
取得した前記制御プログラムを解析することにより、前記複数の機構の順序関係を特定するステップと、
それぞれ特定した前記接続状態及び前記順序関係に基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定するステップと、
を実行させるための工程解析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工程解析装置、工程解析方法、及び工程解析プログラムに関する。
【背景技術】
【０００２】
工場等における製造ラインは、コンベア、ロボットアーム等の複数の機構で構成されている。この製造ラインのいずれかの機構で異常が発生すると、製品の製造が停止してしまい、大きな損害をもたらす可能性がある。そのため、工場等では、保全員が、製造ラインを定期的に巡回して、異常の発生又はその予兆の有無の確認を行っている。
【０００３】
製造ライン内で異常の発生又はその予兆を検知したとき、異常が検知された機構よりも前の機構に真の異常の原因が存在する場合がある。したがって、真の異常の原因を特定するためには、製造ライン内の各機構の因果関係を把握することが重要である。しかしながら、製造ラインを構成する機構の数が多くなり、かつ各機構の動作条件が日々変化し得ることから、全ての機構の因果関係を正確に把握するのは困難である。
【０００４】
そのため、従来、熟練の保全員が、自身の経験及び勘に基づいて、製造ラインを構成する複数の機構間の因果関係を把握して、製造ライン内で生じた異常又はその予兆の検知を行っていた。このような保全業務を非熟練の保全員が行うことができるようにするため、製造ラインを構成する複数の機構の因果関係を可視化する技術の開発が望まれていた。
【０００５】
そこで、特許文献１では、複数の製造装置と制御装置との間でやりとりされる信号を解析することで、製造ライン内の製造装置の関係をモデル化する方法が提案されている。具体的には、取得される複数の信号から特徴量を算出し、かつ当該複数の信号の発生順序を抽出する。そして、特徴量間の相関と信号の発生順序とに基づいて、信号間の因果構造を作成する。これによって、特許文献１により提案されている方法では、製造ライン内の製造装置の関係をモデル化することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−０６４４０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記特許文献１の方法によれば、製造ラインを構成する複数の機構間の因果関係を自動的にモデル化することができる。しかしながら、製造ラインは同じ動作を繰り返すため、信号の発生順序から、各機構の相対的な順序関係を特定することはできるものの、どの信号（機構）が動作の起点であるかを特定するのは困難であった。例えば、製造ラインが、機構Ａ１、機構Ａ２、及び機構Ａ３の３つの機構を備え、機構Ａ１、機構Ａ２、及び機構Ａ３の順で動作している場合に、従来の方法では、機構Ａ１が動作の起点であることを特定するのが困難であった。そのため、特許文献１の方法では、起点となる信号を取り違えてしまい、複数の機構の因果関係を正確にモデル化することができない可能性があった。
【０００８】
本発明は、一側面では、このような点を考慮してなされたものであり、その目的は、製造ラインを構成する複数の機構間の因果関係を正確にモデル化する技術を提供することである。
【課題を解決するための手段】
【０００９】
本発明は、上述した課題を解決するために、以下の構成を採用する。
【００１０】
すなわち、本発明の一側面に係る工程解析装置は、製造ラインを構成する複数の機構の状態に関する複数件の状態データを取得する第１取得部と、前記製造ラインの動作を制御するための制御プログラムを取得する第２取得部と、取得した前記複数件の状態データを解析することにより、前記複数の機構間の接続状態を特定する第１解析部と、取得した前記制御プログラムを解析することにより、前記複数の機構の順序関係を特定する第２解析部と、それぞれ特定した前記接続状態及び前記順序関係に基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定する関係特定部と、を備える。
【００１１】
上記構成では、製造ラインを構成する複数の機構の状態に関する複数件の状態データに基づいて、当該複数の機構間の接続状態を特定する。また、製造ラインを制御するための制御プログラムに基づいて、複数の機構間の順序関係を特定する。そして、それぞれで特定した接続状態及び順序関係を統合することによって、製造ラインで実施される工程における複数の機構間の因果関係を特定する。ここで、制御プログラムは、各機構の動作を規定する。そのため、制御プログラムを利用することで、各機構の順序関係を適切に特定することができる。したがって、上記構成によれば、製造ラインを構成する複数の機構間の因果関係を正確にモデル化することができる。
【００１２】
なお、製造ラインは、何らかの物を製造可能であればよく、複数の装置で構成されてもよいし、包装機等の１つの装置で構成されてもよい。また、各機構は、製造工程の何らかの処理を実施可能であればよい。各機構は、例えば、コンベア、ロボットアーム、サーボモータ、シリンダ（成形機等）、吸着パッド、カッター装置、シール装置等であってよい。また、各機構は、例えば、印刷機、実装機、リフロー炉、基板検査装置等の複合装置であってもよい。更に、各機構は、上記のような何らかの物理的な動作を伴う装置の他に、例えば、各種センサにより何らかの情報を検知する装置、各種センサからデータを取得する装置、取得したデータから何らかの情報を検知する装置、取得したデータを情報処理する装置等の内部処理を行う装置を含んでもよい。１つの機構は、１又は複数の装置で構成されてもよいし、装置の一部で構成されてもよい。１つの機構が装置の一部で構成される場合、複数の機構は、１つの装置で構成されてもよい。また、同一の装置が複数の処理を実施する場合には、それぞれを別の機構とみなしてもよい。例えば、同一の装置が第１の処理と第２の処理とを実施する場合に、第１の処理をする当該装置を第１の機構とみなし、第２の処理をする当該装置を第２の機構とみなしてもよい。
【００１３】
状態データは、製造ラインを構成する各機構の状態に関するあらゆる種類のデータを含んでよい。状態データは、１又は複数のセンサ、カメラ等の計測装置から得られるデータで構成されてもよい。また、状態データは、計測装置から得られるデータそのままであってもよいし、画像データから取得される位置データ等のように計測装置から得られたデータに何らかの処理を適用することで得られるデータであってもよい。
【００１４】
制御プログラムは、製造ラインを構成する各機構の動作を制御するあらゆる種類のプログラムを含んでよい。制御プログラムは、１件のプログラムで構成されてもよいし、複数件のプログラムで構成されてもよい。
【００１５】
接続状態の表現方法は、複数の機構間のつながりを示し得るものであれば、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。接続状態は、例えば、関係の強さ（例えば、相関関係を示す相関係数）、関係の有無、関係の変化等によって表現されてよい。なお、関係の変化は、例えば、関係の強さ又は有無で表現された関係性の時系列での差分（変化量）で示されてよい。
【００１６】
上記一側面に係る工程解析装置において、前記関係特定部は、特定した前記複数の機構間の因果関係を示す有向グラフ情報を出力してもよい。当該構成によれば、出力される有向グラフ情報によって、非熟練の保全員でも、製造ラインを構成する複数の機構間の因果関係を容易に把握することができるようになる。
【００１７】
上記一側面に係る工程解析装置において、前記第１解析部は、特定した前記複数の機構間の接続状態を示す無向グラフ情報を構築してよく、前記関係特定部は、前記無向グラフ情報に前記順序関係を適用することにより、前記有向グラフ情報を作成してもよい。当該構成によれば、複数の機構間の因果関係を示す有向グラフ情報を適切に作成することができる。
【００１８】
上記一側面に係る工程解析装置において、前記第１解析部は、（１）前記各件の状態データから特徴量を算出し、（２）当該各特徴量間の相関係数又は偏相関係数を算出する、ことによって、前記複数の機構間の接続状態を特定してもよい。当該構成によれば、複数の機構間の接続状態を適切に特定することができる。
【００１９】
上記一側面に係る工程解析装置において、前記第２解析部は、前記制御プログラムを利用して前記製造ラインを稼働させることで得られるログデータに基づいて、前記複数の機構の順序関係を特定してもよい。当該構成によれば、複数の機構間の順序関係を適切に特定することができる。
【００２０】
上記一側面に係る工程解析装置において、前記第２解析部は、（１）前記制御プログラムから抽象構文木を構築し、（２）構築した当該抽象構文木から前記各機構に関する変数と条件分岐とを抽出し、（３）前記制御プログラムを利用して前記製造ラインを正常に稼働させたときのログデータを取得し、（４）取得した前記ログデータを参照して、前記条件分岐の実行結果に基づいた、前記各変数の順番付けを行う、ことによって、前記複数の機構の順序関係を特定してもよい。当該構成によれば、複数の機構間の順序関係を適切に特定することができる。
【００２１】
上記一側面に係る工程解析装置において、前記第２解析部は、（１）前記制御プログラムから抽象構文木を構築し、（２）構築した当該抽象構文木から前記各機構に関する変数を抽出し、（３）構築した当該抽象構文木に基づいて、前記制御プログラムの処理における前記変数の依存関係を特定し、（４）特定した依存関係に基づいて、前記複数の機構の順序関係を特定してもよい。当該構成によれば、複数の機構間の順序関係を適切に特定することができる。
【００２２】
上記一側面に係る工程解析装置において、前記（３）構築した当該抽象構文木に基づいて、前記制御プログラムの処理における前記変数の依存関係を特定するステップは、構築した当該抽象構文木から制御フローグラフを生成するステップと、生成した当該制御フローグラフに基づいて、抽出した前記変数の依存関係を特定するステップと、を含んでもよい。当該構成によれば、複数の機構間の順序関係を適切に特定することができる。
【００２３】
上記一側面に係る工程解析装置において、前記各件の状態データは、トルク、速度、加速度、温度、電流、電圧、空圧、圧力、流量、位置、寸法（高さ、長さ、幅）及び面積の少なくともいずれかを示すデータであってよい。また、前記制御プログラムは、ラダー・ダイアグラム言語、ファンクション・ブロック・ダイアグラム言語、ストラクチャード・テキスト言語、インストラクション・リスト言語、及びシーケンシャル・ファンクション・チャート言語、Ｃ言語の少なくともいずれかを利用して記述されていてもよい。当該構成によれば、様々な種類のデータ及びプログラムを取り扱うことのできる工程解析装置を提供することができる。
【００２４】
上記一側面に係る工程解析装置において、前記第１解析部は、取得した前記複数件の状態データを統計的に解析することにより、前記複数の機構間の接続状態を特定してもよい。当該構成によれば、複数の機構間の接続状態を適切に特定することができる。
【００２５】
上記一側面に係る工程解析装置において、前記第１解析部は、前記接続状態として、前記複数の機構間の関係の強さを特定してもよい。当該構成によれば、複数の機構間の接続状態を適切に特定することができる。
【００２６】
上記一側面に係る工程解析装置は、前記複数の機構それぞれに含まれる装置の相対的な位置関係及び前記装置が前記工程に関与する順序の少なくとも一方に関する機構データを取得する第３取得部と、取得した前記機構データを解析し、前記製造ラインで実施される前記工程をモデル化することで、前記複数の機構の順序関係を示す工程モデルを特定する第３解析部と、を更に備えてもよい。そして、前記関係特定部は、それぞれ特定した前記接続状態、前記順序関係、及び前記工程モデルに基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定してもよい。当該構成によれば、特定された工程モデルの知見を更に利用することで、製造ラインを構成する複数の機構間の因果関係をより正確にモデル化することができる。
【００２７】
なお、上記各形態に係る工程解析装置の別の形態として、以上の各構成を実現する情報処理方法であってもよいし、プログラムであってもよいし、このようなプログラムを記録したコンピュータその他装置、機械等が読み取り可能な記憶媒体であってもよい。ここで、コンピュータ等が読み取り可能な記録媒体とは、プログラム等の情報を、電気的、磁気的、光学的、機械的、又は化学的作用によって蓄積する媒体である。
【００２８】
例えば、本発明の一側面に係る工程解析方法は、コンピュータが、製造ラインを構成する複数の機構の状態に関する複数件の状態データを取得するステップと、前記製造ラインの動作を制御するための制御プログラムを取得するステップと、取得した前記複数件の状態データを解析することにより、前記複数の機構間の接続状態を特定するステップと、取得した前記制御プログラムを解析することにより、前記複数の機構の順序関係を特定するステップと、それぞれ特定した前記接続状態及び前記順序関係に基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定するステップと、を実行する情報処理方法である。
【００２９】
また、例えば、本発明の一側面に係る工程解析プログラムは、コンピュータに、製造ラインを構成する複数の機構の状態に関する複数件の状態データを取得するステップと、前記製造ラインの動作を制御するための制御プログラムを取得するステップと、取得した前記複数件の状態データを解析することにより、前記複数の機構間の接続状態を特定するステップと、取得した前記制御プログラムを解析することにより、前記複数の機構の順序関係を特定するステップと、それぞれ特定した前記接続状態及び前記順序関係に基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定するステップと、を実行させるためのプログラムである。
【発明の効果】
【００３０】
本発明によれば、製造ラインを構成する複数の機構間の因果関係を正確にモデル化することができる。
【図面の簡単な説明】
【００３１】
【図１】図１は、実施の形態に係る工程解析装置の適用場面の一例を模式的に例示する。
【図２】図２は、実施の形態に係る工程解析装置のハードウェア構成の一例を模式的に例示する。
【図３】図３は、実施の形態に係る制御装置（ＰＬＣ）のハードウェア構成の一例を模式的に例示する。
【図４】図４は、実施の形態に係る工程解析装置のソフトウェア構成の一例を模式的に例示する。
【図５】図５は、実施の形態に係る工程解析装置の処理手順の一例を例示する。
【図６】図６は、実施の形態に係る工程解析装置の状態データを解析する際の処理手順の一例を例示する。
【図７】図７は、状態データを解析する過程の一例を例示する。
【図８】図８は、制御信号とタクト時間との関係を例示する。
【図９】図９は、実施の形態に係る工程解析装置の制御プログラムを解析する際の処理手順の一例を例示する。
【図１０】図１０は、制御プログラムから構築される抽象構文木の一例を例示する。
【図１１Ａ】図１１Ａは、各変数の順序付けの初期化を行った場面の一例を例示する。
【図１１Ｂ】図１１Ｂは、制御プログラムの解析により特定される複数の機構間の順序関係の一例を例示する。
【図１２】図１２は、複数の機構間の相関関係を示す有向グラフ情報の一例を例示する。
【図１３Ａ】図１３Ａは、実施例に係る製造ラインの動作例を示す。
【図１３Ｂ】図１３Ｂは、実施例に係る製造ラインの動作例を示す。
【図１３Ｃ】図１３Ｃは、実施例に係る製造ラインの動作例を示す。
【図１４】図１４は、実施例で得られた各特徴量の一部を示す。
【図１５】図１５は、図１４の各特徴量から算出された相関係数行列を示す。
【図１６】図１６は、図１５の相関係数行列から得られた無向グラフ情報を示す。
【図１７】図１７は、実施例で利用した制御プログラムの一部を示す。
【図１８Ａ】図１８Ａは、図１７の制御プログラムから構築される抽象構文木を示す。
【図１８Ｂ】図１８Ｂは、図１７の制御プログラムから構築される抽象構文木を示す。
【図１８Ｃ】図１８Ｃは、図１７の制御プログラムから構築される抽象構文木を示す。
【図１８Ｄ】図１８Ｄは、図１７の制御プログラムから構築される抽象構文木を示す。
【図１９】図１９は、実施例で得られた各変数の順序関係を示す。
【図２０】図２０は、実施例で得られた有向グラフ情報を示す。
【図２１】図２１は、制御プログラムを解析する処理手順の一例を示すフローチャートである。
【図２２】図２２は、制御フローグラフの一例を模式的に例示する。
【図２３】図２３は、制御フローグラフに基づいて各変数間の依存関係を特定する処理手順の一例を示すフローチャートである。
【図２４Ａ】図２４Ａは、得られる変数グループの一例を模式的に例示する。
【図２４Ｂ】図２４Ｂは、ペアの変数グループ内の変数間の依存関係を模式的に例示する。
【図２４Ｃ】図２４Ｃは、各変数間の依存関係に基づいて特定された複数の機構間の順序関係の一例を模式的に例示する。
【図２５】図２５は、変形例に係る工程解析装置のソフトウェア構成の一例を模式的に例示する。
【図２６】図２６は、機構データを解析する過程の一例を例示する。
【発明を実施するための形態】
【００３２】
以下、本発明の一側面に係る実施の形態（以下、「本実施形態」とも表記する）を、図面に基づいて説明する。ただし、以下で説明する本実施形態は、あらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。つまり、本発明の実施にあたって、実施形態に応じた具体的構成が適宜採用されてもよい。なお、本実施形態において登場するデータを自然言語により説明しているが、より具体的には、コンピュータが認識可能な疑似言語、コマンド、パラメータ、マシン語等で指定される。
【００３３】
§１  適用例
まず、図１を用いて、本発明が適用される場面の一例について説明する。図１は、本実施形態に係る工程解析装置１の利用場面の一例を模式的に例示する。
【００３４】
図１に示されるとおり、本実施形態に係る工程解析装置１は、製造ライン３を構成する複数の機構３１の状態に関する複数件の状態データ２２２を取得する。製造ライン３は、何らかの物を製造可能であればよく、複数の装置で構成されてもよいし、包装機等の１つの装置で構成されてもよい。また、各機構３１は、製造工程の何らかの処理を実施可能であればよく、１又は複数の装置で構成されてもよいし、装置の一部で構成されてもよい。１つの機構３１が装置の一部で構成される場合、複数の機構３１は、１つの装置で構成されてもよい。また、同一の装置が複数の処理を実施する場合には、それぞれを別の機構３１とみなしてもよい。例えば、同一の装置が第１の処理と第２の処理とを実施する場合に、第１の処理をする当該装置を第１の機構３１とみなし、第２の処理をする当該装置を第２の機構３１とみなしてもよい。更に、状態データ２２２は、製造ライン３を構成する各機構３１の状態に関するあらゆる種類のデータを含んでよい。
【００３５】
また、本実施形態に係る工程解析装置１は、製造ライン３の動作を制御するための制御プログラム２２１を取得する。制御プログラム２２１は、製造ライン３を構成する各機構３１の動作を制御するあらゆる種類のプログラムを含んでよい。制御プログラム２２１は、１件のプログラムで構成されてもよいし、複数件のプログラムで構成されてもよい。なお、本実施形態では、製造ライン３の動作は、ＰＬＣ（programmable logic controller）２によって制御される。そのため、工程解析装置１は、複数件の状態データ２２２及び制御プログラム２２１をＰＬＣ２から取得する。
【００３６】
次に、本実施形態に係る工程解析装置１は、取得した複数件の状態データ２２２を統計的に解析することにより、製造ライン３内における複数の機構３１間の関係の強さを特定する。関係の強さは、本発明の「接続状態」の一例である。また、本実施形態に係る工程解析装置１は、取得した制御プログラム２２１を解析することにより、製造ライン３内における複数の機構３１の順序関係を特定する。そして、本実施形態に係る工程解析装置１は、それぞれ特定した関係の強さ及び順序関係に基づいて、製造ライン３で実行される工程における複数の機構３１間の因果関係を特定する。
【００３７】
以上のとおり、本実施形態では、複数の機構３１間の因果関係を解析する過程において、複数の機構３１間の順序関係を特定するために、制御プログラム２２１を利用している。制御プログラム２２１は各機構３１の動作を規定しているため、制御プログラム２２１を利用することで、各機構３１の順序関係をより正確に特定可能である。したがって、本実施形態によれば、製造ライン３を構成する複数の機構３１間の因果関係を正確にモデル化することができる。
【００３８】
§２  構成例
［ハードウェア］
＜工程解析装置＞
次に、図２を用いて、本実施形態に係る工程解析装置１のハードウェア構成の一例について説明する。図２は、本実施形態に係る工程解析装置１のハードウェア構成の一例を模式的に例示する。
【００３９】
図２に示されるとおり、本実施形態に係る工程解析装置１は、制御部１１、記憶部１２、通信インタフェース１３、入力装置１４、出力装置１５、及びドライブ１６が電気的に接続されたコンピュータである。なお、図２では、通信インタフェースを「通信Ｉ／Ｆ」と記載している。
【００４０】
制御部１１は、ハードウェアプロセッサであるＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）等を含み、情報処理に応じて各構成要素の制御を行う。記憶部１２は、例えば、ハードディスクドライブ、ソリッドステートドライブ等の補助記憶装置であり、制御部１１で実行される工程解析プログラム１２１等を記憶する。
【００４１】
工程解析プログラム１２１は、複数件の状態データ２２２及び制御プログラム２２１を利用して、製造ライン３の実施する製造工程における複数の機構３１間の因果関係を解析する後述の処理（図５）を工程解析装置１に実行させるためのプログラムである。詳細は後述する。
【００４２】
通信インタフェース１３は、例えば、有線ＬＡＮ（Local Area Network）モジュール、無線ＬＡＮモジュール等であり、ネットワークを介した有線又は無線通信を行うためのインタフェースである。工程解析装置１は、この通信インタフェース１３により、ＰＬＣ２との間でネットワークを介したデータ通信を行うことができる。なお、ネットワークの種類は、例えば、インターネット、無線通信網、移動通信網、電話網、専用網等から適宜選択されてよい。
【００４３】
入力装置１４は、例えば、マウス、キーボード等の入力を行うための装置である。また、出力装置１５は、例えば、ディスプレイ、スピーカ等の出力を行うための装置である。オペレータは、入力装置１４及び出力装置１５を介して、工程解析装置１を操作することができる。
【００４４】
ドライブ１６は、例えば、ＣＤドライブ、ＤＶＤドライブ等であり、記憶媒体９１に記憶されたプログラムを読み込むためのドライブ装置である。ドライブ１６の種類は、記憶媒体９１の種類に応じて適宜選択されてよい。上記工程解析プログラム１２１は、この記憶媒体９１に記憶されていてもよい。
【００４５】
記憶媒体９１は、コンピュータその他装置、機械等が記録されたプログラム等の情報を読み取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的又は化学的作用によって蓄積する媒体である。工程解析装置１は、この記憶媒体９１から、上記工程解析プログラム１２１を取得してもよい。
【００４６】
ここで、図２では、記憶媒体９１の一例として、ＣＤ、ＤＶＤ等のディスク型の記憶媒体を例示している。しかしながら、記憶媒体９１の種類は、ディスク型に限定される訳ではなく、ディスク型以外であってもよい。ディスク型以外の記憶媒体として、例えば、フラッシュメモリ等の半導体メモリを挙げることができる。
【００４７】
なお、工程解析装置１の具体的なハードウェア構成に関して、実施形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。例えば、制御部１１は、複数のプロセッサを含んでもよい。工程解析装置１は、複数台の情報処理装置で構成されてもよい。また、工程解析装置１は、提供されるサービス専用に設計された情報処理装置の他、汎用のサーバ装置、ＰＣ（Personal Computer）等であってもよい。
【００４８】
＜ＰＬＣ＞
次に、図３を用いて、製造ライン３の動作を制御するＰＬＣ２のハードウェア構成の一例を説明する。図３は、本実施形態に係るＰＬＣ２のハードウェア構成の一例を模式的に例示する。
【００４９】
図３に示されるとおり、ＰＬＣ２は、制御部２１、記憶部２２、入出力インタフェース２３、及び通信インタフェース２４が電気的に接続されたコンピュータである。これにより、ＰＬＣ２は、製造ライン３の各機構３１の動作を制御するように構成される。なお、図３では、入出力インタフェース及び通信インタフェースをそれぞれ「入出力Ｉ／Ｆ」及び「通信Ｉ／Ｆ」と記載している。
【００５０】
制御部２１は、ＣＰＵ、ＲＡＭ、ＲＯＭ等を含み、プログラム及びデータに基づいて各種情報処理を実行するように構成される。記憶部２２は、例えば、ＲＡＭ、ＲＯＭ等で構成され、制御プログラム２２１、状態データ２２２、ログデータ２２３等を記憶する。制御プログラム２２１は、製造ライン３の動作を制御するためのプログラムである。状態データ２２２は、各機構３１の状態に関するデータである。ログデータ２２３は、製造ライン３の動作のログを示すデータである。
【００５１】
入出力インタフェース２３は、外部装置と接続するためのインタフェースであり、接続する外部装置に応じて適宜構成される。本実施形態では、ＰＬＣ２は、入出力インタフェース２３を介して、製造ライン３に接続される。なお、単一の装置について異なる状態データを取得可能な場合、当該対象の単一の装置は、複数の機構３１とみなされてもよいし、単一の機構３１とみなされてもよい。そのため、入出力インタフェース２３の数は、製造ライン３を構成する機構３１の数と同じであってもよいし、製造ライン３を構成する機構３１の数と相違していてもよい。
【００５２】
通信インタフェース２４は、例えば、有線ＬＡＮモジュール、無線ＬＡＮモジュール等であり、有線又は無線通信を行うためのインタフェースである。ＰＬＣ２は、通信インタフェース２４により、工程解析装置１との間でデータ通信を行うことができる。
【００５３】
なお、ＰＬＣ２の具体的なハードウェア構成に関して、実施の形態に応じて、適宜、構成要素の省略、置換、及び追加が可能である。例えば、制御部２１は、複数のプロセッサを含んでもよい。記憶部２２は、制御部２１に含まれるＲＡＭ及びＲＯＭにより構成されてもよい。記憶部２２は、ハードディスクドライブ、ソリッドステートドライブ等の補助記憶装置で構成されてもよい。また、ＰＬＣ２は、提供されるサービス専用に設計された情報処理装置の他、制御する対象に応じて、汎用のデスクトップＰＣ、タブレットＰＣ等に置き換えられてもよい。
【００５４】
［ソフトウェア構成］
次に、図４を用いて、本実施形態に係る工程解析装置１のソフトウェア構成の一例を説明する。図４は、本実施形態に係る工程解析装置１のソフトウェア構成の一例を模式的に例示する。
【００５５】
工程解析装置１の制御部１１は、記憶部１２に記憶された工程解析プログラム１２１をＲＡＭに展開する。そして、制御部１１は、ＲＡＭに展開された工程解析プログラム１２１をＣＰＵにより解釈及び実行して、各構成要素を制御する。これによって、図４に示されるとおり、本実施形態に係る工程解析装置１は、ソフトウェアモジュールとして、第１取得部１１１、第２取得部１１２、第１解析部１１３、第２解析部１１４、及び関係特定部１１５を備えるコンピュータとして構成される。
【００５６】
第１取得部１１１は、製造ライン３を構成する複数の機構３１の状態に関する複数件の状態データ２２２を取得する。第２取得部１１２は、製造ライン３の動作を制御するための制御プログラム２２１を取得する。第１解析部１１３は、取得した複数件の状態データ２２２を統計的に解析することにより、複数の機構３１間の関係の強さを特定する。第２解析部１１４は、取得した制御プログラム２２１を解析することにより、複数の機構３１の順序関係を特定する。本実施形態では、第２解析部１１４は、制御プログラム２２１を実行して得られるログデータ２２３を利用して、複数の機構３１の順序関係を特定する。そして、関係特定部１１５は、それぞれ特定した関係の強さ及び順序関係に基づいて、製造ライン３で実施される工程における複数の機構３１間の因果関係を特定する。
【００５７】
工程解析装置１の各ソフトウェアモジュールに関しては後述する動作例で詳細に説明する。なお、本実施形態では、工程解析装置１の各ソフトウェアモジュールがいずれも汎用のＣＰＵにより実現される例について説明している。しかしながら、以上のソフトウェアモジュールの一部又は全部が、１又は複数の専用のハードウェアプロセッサにより実現されてもよい。また、工程解析装置１のソフトウェア構成に関して、実施形態に応じて、適宜、ソフトウェアモジュールの省略、置換及び追加が行われてもよい。
【００５８】
§３  動作例
次に、図５を用いて、工程解析装置１の動作例を説明する。図５は、工程解析装置１の処理手順の一例を例示する。なお、以下で説明する工程解析装置１の処理手順は、本発明の「工程解析方法」に相当する。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてもよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
【００５９】
［ステップＳ１０１］
まず、ステップＳ１０１では、制御部１１は、第１取得部１１１として動作し、各機構３１の状態に関する複数件の状態データ２２２をＰＬＣ２から取得する。各機構３１は、例えば、コンベア、ロボットアーム、サーボモータ、シリンダ（成形機等）、吸着パッド、カッター装置、シール装置等の装置又はその装置の一部で構成されてよい。また、各機構３１は、例えば、印刷機、実装機、リフロー炉、基板検査装置等の複合装置であってもよい。更に、各機構３１は、上記のような何らかの物理的な動作を伴う装置の他に、例えば、各種センサにより何らかの情報を検知する装置、各種センサからデータを取得する装置、取得したデータから何らかの情報を検知する装置、取得したデータを情報処理する装置等の内部処理を行う装置を含んでもよい。具体例として、コンベアを流れる対象物に付与されたマークを検知する光学センサを備える製造ラインにおいて、当該光学センサ及び光学センサにより検知した情報を利用する装置が各機構３１として取り扱われてよい。また、各件の状態データ２２２は、例えば、トルク、速度、加速度、温度、電流、電圧、空圧、圧力、流量、位置、寸法（高さ、長さ、幅）及び面積の少なくともいずれかを示すデータであってよい。このような状態データ２２２は、公知のセンサ、カメラ等の計測装置によって得ることができる。例えば、流量は、フロートセンサにより得ることができる。また、位置、寸法、及び面積は、画像センサにより得ることができる。
【００６０】
なお、状態データ２２２は、１又は複数の計測装置から得られるデータで構成されてもよい。また、状態データ２２２は、計測装置から得られるデータそのままであってもよいし、画像データから取得される位置データ等のように計測装置から得られたデータに何らかの処理を適用することで取得可能なデータであってもよい。各件の状態データ２２２は、各機構３１に対応して取得される。
【００６１】
各計測装置は、製造ライン３の各機構３１を監視可能に適宜配置される。ＰＬＣ２は、製造ライン３を稼働させて、各計測装置から各件の状態データ２２２を収集する。制御部１１は、ＰＬＣ２から、製造ライン３を正常に稼働させたときの各機構３１の状態に関する状態データ２２２を取得する。これにより、制御部１１は、複数件の状態データ２２２を取得することができる。複数件の状態データ２２２の取得が完了すると、制御部１１は、次のステップＳ１０２に処理を進める。
【００６２】
［ステップＳ１０２］
次のステップＳ１０２では、制御部１１は、第２取得部１１２として動作し、制御プログラム２２１をＰＬＣ２から取得する。制御プログラム２２１は、ＰＬＣ２で実行可能なように、例えば、ラダー・ダイアグラム言語、ファンクション・ブロック・ダイアグラム言語、ストラクチャード・テキスト言語、インストラクション・リスト言語、及びシーケンシャル・ファンクション・チャート言語、Ｃ言語の少なくともいずれかを利用して記述されていてもよい。制御プログラム２２１の取得が完了すると、制御部１１は、次のステップＳ１０３に処理を進める。なお、本ステップＳ１０２は、上記ステップＳ１０１と並列に実行されてもよいし、上記ステップＳ１０１の前に実行されてもよい。
【００６３】
［ステップＳ１０３］
次のステップＳ１０３では、制御部１１は、第１解析部１１３として動作し、ステップＳ１０１で取得した複数件の状態データ２２２を統計的に解析することにより、製造ライン３内における複数の機構３１間の関係の強さを特定する。複数件の状態データ２２２の解析処理が完了すると、制御部１１は、次のステップＳ１０４に処理を進める。なお、本ステップＳ１０３は、上記ステップＳ１０１の後であれば、いかなるタイミングに実行されてもよい。例えば、本ステップＳ１０３は、上記ステップＳ１０２の前に実行されてもよい。
【００６４】
＜状態データの解析処理＞
ここで、図６及び図７を更に用いて、複数件の状態データ２２２を統計的に解析する処理について詳細に説明する。図６は、状態データ２２２を解析する処理の手順の一例を例示する。図７は、図６により示される手順により状態データ２２２を解析する過程の一例を模式的に例示する。以下の説明では、説明の便宜のため、製造ライン３は、複数の機構３１として、４つの機構（例えば、４つのサーボモータ）Ｆ１〜Ｆ４を備えており、上記ステップＳ１０１では、制御部１１は、各機構Ｆ１〜Ｆ４の状態データ２２２を取得したものと仮定する。
【００６５】
（ステップＳ１３０１）
まず、ステップＳ１３０１では、制御部１１は、ステップＳ１０１で取得した各件の状態データ２２２から特徴量２２２１を算出する。特徴量２２２１の種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてもよい。また、特徴量２２２１を算出する方法は、実施の形態に応じて適宜決定可能である。
【００６６】
具体例として、本実施形態では、制御部１１は、次のような方法で、状態データ２２２から特徴量２２２１を算出する。まず、制御部１１は、特徴量２２２１を算出する処理範囲を規定するため、取得した各件の状態データ２２２をフレーム毎に分割する。各フレームの長さは、実施の形態に応じて適宜設定されてよい。
【００６７】
制御部１１は、例えば、各件の状態データ２２２を一定時間長のフレーム毎に分割してもよい。ただし、製造ライン３は必ずしも一定時間間隔で動作しているとは限らない。そのため、各件の状態データ２２２を一定時間長のフレーム毎に分割すると、各フレームに反映される各機構３１の動作がずれてしまう可能性がある。
【００６８】
そこで、制御部１１は、状態データ２２２をタクト時間毎にフレーム分割してもよい。タクト時間は、製造ライン３が製品を所定個数分生産するのにかかる時間である。このタクト時間は、製造ライン３を制御する信号、例えば、ＰＬＣ２が製造ライン３の各機構３１の動作を制御する制御信号に基づいて特定することができる。
【００６９】
図８を用いて、制御信号とタクト時間との関係について説明する。図８は、制御信号とタクト時間との関係を模式的に例示する。図８に示されるとおり、製品の生産を繰り返す製造ライン３に対する制御信号は、所定個数分の製品の生産に応じて「on」と「off」とが周期的に表れるパルス信号になっている。
【００７０】
そのため、制御部１１は、この制御信号をＰＬＣ２から取得し、取得した制御信号の立ち上がり（「on」）から次の立ち上がり（「on」）までの時間をタクト時間とすることができる。そして、制御部１１は、図８に例示されるように、タクト時間毎に状態データ２２２をフレームに分割することができる。
【００７１】
次に、制御部１１は、状態データ２２２の各フレームから特徴量２２２１の値を算出する。状態データ２２２が計測データ等のような連続値データである場合には、制御部１１は、例えば、フレーム内の振幅、最大値、最小値、平均値、分散値、標準偏差、瞬時値（１点サンプル）等を特徴量２２２１として算出してもよい。また、状態データ２２２が検出データ等のような離散値データである場合には、制御部１１は、例えば、各フレーム内の「on」時間、「off」時間、Ｄｕｔｙ比、「on」回数、「off」回数等を特徴量２２２１として算出してもよい。これにより、各特徴量２２２１の算出が完了すると、制御部１１は、次のステップＳ１３０２に処理を進める。
【００７２】
（ステップＳ１３０２）
図６及び図７に戻り、次のステップＳ１３０２では、制御部１１は、各特徴量２２２１間の相関係数又は偏相関係数を算出する。相関係数は、以下の数１の計算式により算出することができる。また、偏相関係数は、以下の数２の計算式により算出することができる。
【００７３】
【数１】
2018206362.tif 000003
なお、ｒijは、行列２２２２のｉ行目ｊ列目の要素を示す。ｘi及びｘjは、各件の状態データ２２２から算出された特徴量２２２１を示すデータに対応する。Ｘi及びＸjはそれぞれ、ｘi及びｘjの標本平均を示す。ｎは、相関の計算に利用する各特徴量２２２１の数を示す。
【００７４】
【数２】
2018206362.tif 000004
なお、行列Ｒ（ｒij）の逆行列をＲ-1（ｒij）と表現し、ｒijは行列２２２２の逆行列のｉ行目ｊ列目の要素を示す。
【００７５】
これにより、制御部１１は、相関係数又は偏相関係数を各要素とする行列２２２２を得ることができる。各特徴量２２２１間の相関係数及び偏相関係数は、対応する機構３１間の関係の強さを示す。すなわち、行列２２２２の各要素により、対応する機構３１間の関係の強さが特定される。各特徴量２２２１間の相関係数又は偏相関係数の算出が完了すると、制御部１１は、次のステップＳ１３０３に処理を進める。
【００７６】
（ステップＳ１３０３）
次のステップＳ１３０３では、制御部１１は、各特徴量２２２１間の相関係数又は偏相関係数に基づいて、対応する機構３１間の関係の強さを示す無向グラフ情報２２２３を構築する。
【００７７】
例えば、制御部１１は、各機構３１に対応するノードを作成する。そして、２つの機構３１間に対して算出した相関係数又は偏相関係数の値が閾値以上である場合に、制御部１１は、対応する両ノード間をエッジで連結する。一方、２つの機構３１間に対して算出した相関係数又は偏相関係数の値が閾値未満である場合には、制御部１１は、対応する両ノード間をエッジで連結しない。なお、閾値は、工程解析プログラム１２１内で規定された固定値であってもよいし、オペレータ等により変更可能な設定値であってもよい。また、エッジの太さは、対応する相関係数又は偏相関係数の値の大きさに対応して決定されてもよい。
【００７８】
これにより、図７で例示するような無向グラフ情報２２２３を作成することができる。図７の例では、４つの機構Ｆ１〜Ｆ４に対応する４つのノードが作成されている。そして、機構Ｆ１及びＦ２のノード間、機構Ｆ１及びＦ３のノード間、機構Ｆ２及びＦ３のノード間、並びに機構Ｆ３及びＦ４のノード間にそれぞれエッジが形成されている。また、機構Ｆ１及びＦ３の間並びに機構Ｆ３及びＦ４の間の相関が他の機構間の相関よりも大きいことに対応して、機構Ｆ１及びＦ３のノード間並びに機構Ｆ３及びＦ４のノード間のエッジが他のエッジに比べて太く形成されている。以上により、複数の機構３１間の関係の強さを示す無向グラフ情報２２２３の構築が完了すると、本実施形態に係る状態データ２２２の解析処理は完了し、制御部１１は、次のステップＳ１０４に処理を進める。
【００７９】
なお、図７の例では、無向グラフ情報２２２３は、形成された無向グラフを画像により表現している。しかしながら、無向グラフ情報２２２３の出力形式は、画像に限定されなくてもよく、テキスト等により表現されてもよい。また、上記の例では、相関係数又は偏相関係数と閾値との比較により、関係の弱いノード（機構３１）間にエッジを形成しないようにしている。しかしながら、関係の弱いノード間のエッジを除去する方法は、このような例に限られなくてもよい。例えば、全てのノードをエッジで連結したグラフを形成した後、制御部１１は、逸脱度を表わす適合度指標（ＧＦＩ、ＳＲＭＲ等）が閾値を超えないように、相関係数又は偏相関係数の小さいエッジから順に、形成したグラフのエッジを削除してもよい。
【００８０】
［ステップＳ１０４］
図５に戻り、次のステップＳ１０４では、制御部１１は、第２解析部１１４として動作し、ステップＳ１０２で取得した制御プログラム２２１を解析することにより、製造ライン３内における複数の機構３１の順序関係を特定する。本実施形態では、制御部１１は、制御プログラム２２１を利用して製造ライン３を稼働させることで得られるログデータ２２３に基づいて、複数の機構３１の順序関係を特定する。制御プログラム２２１の解析処理が完了すると、制御部１１は、次のステップＳ１０５に処理を進める。なお、本ステップＳ１０４は、上記ステップＳ１０２の後であれば、いかなるタイミングに実行されてもよい。例えば、上記ステップＳ１０２が上記ステップＳ１０１よりも先に実行される場合には、本ステップＳ１０４は、上記ステップＳ１０１の前に実行されてもよい。
【００８１】
＜制御プログラムの解析処理＞
ここで、図９を更に用いて、制御プログラム２２１を解析する処理について詳細に説明する。図９は、制御プログラム２２１を解析する処理の手順の一例を例示する。以下の説明では、説明の便宜のため、上記と同様に、製造ライン３は、複数の機構３１として、４つの機構Ｆ１〜Ｆ４を備えており、上記ステップＳ１０２では、制御部１１は、４つの機構Ｆ１〜Ｆ４に対応する変数ｖ１〜ｖ４が使用された制御プログラム２２１を取得したものと仮定する。
【００８２】
（ステップＳ１４０１）
まず、ステップＳ１４０１では、制御部１１は、取得した制御プログラム２２１の構文解析を行い、当該制御プログラム２２１から抽象構文木を構築する。抽象構文木の構築には、トップダウン構文解析又はボトムアップ構文解析による公知の構文解析方法が用いられてもよい。例えば、抽象構文木の構築には、特定の形式文法に従った文字列を扱う構文解析器が用いられてもよい。抽象構文木の構築が完了すると、制御部１１は、次のステップＳ１４０２に処理を進める。
【００８３】
図１０は、制御プログラム２２１内の「if(a>0)[v1=a;]else[v2=-a;]」という構文から得られる抽象構文木２２１１を例示する。図１０に例示するとおり、抽象構文木は、プログラムの意味を解釈するために、当該プログラムの構造を木構造で表現したデータ構造である。
【００８４】
具体的には、制御部１１は、プログラムに使用されているトークン（字句）のうち、当該プログラムの意味の解釈に不要な括弧等のトークンを省略し、当該プログラムの意味の解釈に関係あるトークンを抽出する。そして、制御部１１は、条件分岐等の演算子を節点に対応付けて、変数等のオペランドを葉に対応付ける。制御部１１は、このように制御プログラム２２１の構文解析を行うことにより、図１０に例示する抽象構文木を構築することができる。なお、このように構成される抽象構文木は、変数、演算子、及びノード間の関係（演算と被演算との関係等）を表わす。この抽象構文木の構成について、その示す内容が変わらない範囲で適宜表記の修正、変更、省略等がなされてよい。
【００８５】
（ステップＳ１４０２）
次のステップＳ１４０２では、制御部１１は、ステップＳ１４０１により構築した抽象構文木から各機構３１に関する変数（ｖ１〜ｖ４）と条件分岐及び代入演算を含む演算子とを抽出する。例えば、図１０に示す抽象構文木２２１１が得られた場合、制御部１１は、当該抽象構文木２２１１から（「if」、「v1」、「=」、「a」、「v2」、「=」、及び「-a」）を抽出する。当該抽出が完了すると、制御部１１は、次のステップＳ１４０３に処理を進める。
【００８６】
（ステップＳ１４０３及びステップＳ１４０４）
次のステップＳ１４０３では、制御部１１は、ステップＳ１４０２で抽出した変数及び演算子を順番に並べて、因果関係を特定する対象となる各機構３１に対応する変数（ｖ１〜ｖ４）に関連する部分に実行順序を監視する対象を限定する。上記の例では、制御部１１は、（「if」、「v1」、「=」、「a」、「v2」、「=」、及び「-a」）から（「if」、「v1」、及び「v2」）を更に抽出する。
【００８７】
そして、次のステップＳ１４０４では、条件分岐をランダムに選択して、制御プログラム２２１の実行を試行することで、限定した各変数の順序付けの初期化を行う。具体的には、制御部１１は、当該制御プログラム２２１の実行の試行において、限定した各変数の利用される順序を監視することで、当該各変数の順序付けの初期化を行うことができる。
【００８８】
図１１Ａは、当該初期化の一例を例示する。図１１Ａのグラフ２２１２は、初期化の結果として、以下の（１）〜（５）の順序関係を示す。
（１）変数「v1」〜「v4」のうち、変数「v1」が最初に利用される。
（２）変数「v1」の次には、０．５の確率で変数「v2」が利用され、０．５の確率で変数「v3」が利用される。
（３）変数「v2」の次には、１の確率で変数「v3」が利用される。
（４）変数「v3」の次には、１の確率で変数「v4」が利用される。
（５）変数「v1」〜「v4」のうち、変数「v4」が最後に利用される。
このような初期化が完了すると、制御部１１は、次のステップＳ１４０５に処理を進める。
【００８９】
（ステップＳ１４０５）
次のステップＳ１４０５では、制御部１１は、制御プログラム２２１を利用して製造ライン３を正常に稼働させたときの実行結果を示すログデータ２２３をＰＬＣ２から取得する。ＰＬＣ２は、例えば、上記状態データ２２２を収集する際に、併せて制御プログラム２２１の実行結果を示すログデータ２２３を作成してもよい。この場合、ログデータ２２３には、タイムスタンプ、利用された変数の値等が記録される。また、例えば、制御プログラム２２１には、各コード行が実行される頻度、実行されたコード行、コードの各セクションが消費する計算時間等の情報を収集するためのデバッグモードが設けられてもよい。この場合、ＰＬＣ２は、制御プログラム２２１をデバッグモードで実行することで、各情報を記録したログデータ２２３を作成することができる。制御部１１は、このように作成されたログデータ２２３をＰＬＣ２から取得してもよい。ログデータ２２３の取得が完了すると、制御部１１は、次のステップＳ１４０６に処理を進める。
【００９０】
（ステップＳ１４０６）
次のステップＳ１４０６では、制御部１１は、ステップＳ１４０５で取得したログデータ２２３を参照して、条件分岐の実行結果に基づいた、上記各変数（ｖ１〜ｖ４）の順番付けを行うことで、製造ライン３内における各機構３１の順序関係を特定する。
【００９１】
図１１Ｂは、当該順序付けの結果の一例を例示する。図１１Ｂのグラフ２２１３は、ログデータ２２３を利用して順番付けを行った結果として、以下の（Ａ）〜（Ｅ）の順序関係を示す。
（Ａ）変数「v1」〜「v4」のうち、変数「v1」が最初に利用される。
（Ｂ）変数「v1」の次には、０．０１の確率で変数「v2」が利用され、０．９９の確率で変数「v3」が利用される。
（Ｃ）変数「v2」の次には、１の確率で変数「v3」が利用される。
（Ｄ）変数「v3」の次には、１の確率で変数「v4」が利用される。
（Ｅ）変数「v1」〜「v4」のうち、変数「v4」が最後に利用される。
以上により、複数の機構３１の順序関係の特定が完了すると、本実施形態に係る制御プログラム２２１の解析処理は完了し、制御部１１は、次のステップＳ１０５に処理を進める。
【００９２】
［ステップＳ１０５］
図５に戻り、次のステップＳ１０５では、制御部１１は、関係特定部１１５として動作する。すなわち、制御部１１は、ステップＳ１０３及びＳ１０４それぞれにより特定した製造ライン３内における複数の機構３１間の関係の強さ及び順序関係に基づいて、当該製造ライン３で実施される工程における複数の機構３１間の因果関係を特定する。
【００９３】
本実施形態では、制御部１１は、上記ステップＳ１３０３で構築した無向グラフ情報２２２３に上記ステップＳ１４０６で特定した各機構３１の順序関係を適用することにより、各機構３１間の因果関係を示す有向グラフ情報を作成する。このとき、制御部１１は、各機構３１の順序関係において発生する確率が閾値よりも低い順序（遷移）を特定し、無向グラフ情報２２２３を構成するエッジから特定した順序に対応するエッジを削除してもよい。なお、閾値は、工程解析プログラム１２１内で規定された固定値であってもよいし、オペレータ等により変更可能な設定値であってもよい。
【００９４】
図１２は、作成される有向グラフ情報の一例を例示する。図１２の有向グラフ１２２は、以下の（ａ）〜（ｄ）の因果関係を示す。
（ａ）機構「Ｆ１」〜「Ｆ４」のうち、機構「Ｆ１」又は「Ｆ２」が最初に利用される。
（ｂ）機構「Ｆ１」及び「Ｆ２」の次には、機構「Ｆ３」が利用される。
（ｃ）機構「Ｆ３」の次には、機構「Ｆ４」が利用される。
（ｄ）機構「Ｆ１」〜「Ｆ４」のうち、機構「Ｆ４」が最後に利用される。
なお、図１２の例では、変数「v1」から「v2」への順序の発生確率が低いことに対応して、無向グラフ情報２２２３では存在した機構「Ｆ１」及び「Ｆ２」間のエッジが削除されている。また、有向グラフ１２２の各エッジの太さは、無向グラフ情報２２２３の各エッジの太さに対応して設定されている。以上により、有向グラフ情報の作成が完了すると、制御部１１は、次のステップＳ１０６に処理を進める。
【００９５】
なお、図１２の例では、有向グラフ情報は、有向グラフ（有向グラフ１２２）を画像により表現している。しかしながら、有向グラフ情報の出力形式は、画像に限定されなくてもよく、テキスト等により表現されてもよい。また、上記の例では、ノード（機構３１）間の関係の強さをエッジの太さで表現している。しかしながら、ノード間の関係の強さを表現する方法は、このような例に限定されなくてもよい。各エッジの近傍に数字を付すことにより、各ノード間の関係の強さを表現してもよい。
【００９６】
［ステップＳ１０６］
次のステップＳ１０６では、制御部１１は、ステップＳ１０５で作成した有向グラフ情報を出力する。例えば、制御部１１は、ディスプレイ等の出力装置１５に作成した有向グラフを画像形式で出力する。以上により、制御部１１は、本動作例に係る処理を終了する。
【００９７】
［特徴］
以上のように、本実施形態では、上記ステップＳ１０４により、制御プログラム２２１を解析することで、製造ライン３内における複数の機構３１間の順序関係を特定する。そして、上記ステップＳ１０３により状態データ２２２から導出した関係の強さを示す無向グラフ情報に、制御プログラム２２１から特定した順序関係を適用することで、製造ライン３で実施される工程における複数の機構３１間の因果関係を示す有向グラフ情報を作成する。ここで、制御プログラム２２１は、各機構３１の動作を規定する。そのため、複数の機構３１間の因果関係を解析する過程で、制御プログラム２２１を利用することで、当該複数の機構３１間の順序関係を適切に特定することができる。したがって、本実施形態によれば、製造ライン３を構成する複数の機構３１間の因果関係を正確にモデル化することができる。
【００９８】
また、本実施形態では、ステップＳ１０６により、製造ラインを構成する複数の機構間の因果関係を解析した結果として、図１２（及び後述する図２０）に例示される有向グラフ情報を出力する。この出力される有向グラフ情報は、各機構間の因果関係を端的に示す。そのため、本実施形態によれば、出力される有向グラフ情報によって、非熟練の保全員でも、製造ラインを構成する複数の機構間の因果関係を容易に把握することができるようになる。
【００９９】
［実施例］
次に、上記ステップＳ１０１〜Ｓ１０６の処理により、各機構３１間の因果関係を示す有向グラフ情報を作成する過程の実施例を説明する。ただし、本発明は、以下の実施例に限定される訳ではない。
【０１００】
実施例として、以下の条件を有する製造ラインの各機構間の因果関係を示す有向グラフ情報を作成した。
＜各種条件＞
・製造ライン：基板上の実装位置に２つの部品を固定する製造装置
・機構（６つ）：
−  基板（マーカ）のＸ軸の位置を調整する第１機構
−  基板（マーカ）のＹ軸の位置を調整する第２機構
−  第１部品のＡ軸の位置を調整する第３機構
−  第１部品のＢ軸の位置を調整する第４機構
−  第２部品のＣ軸の位置を調整する第５機構
−  第２部品のＤ軸の位置を調整する第６機構
・制御プログラムのプログラム言語：ＳＴ言語
・計測装置：カメラ
・状態データ：各機構によって調整された各軸の位置
・特徴量：瞬時値
・工程解析装置：汎用ＰＣ
なお、説明の便宜のため、第１〜第６機構をそれぞれ、「マーカ位置Ｘ軸」、「マーカ位置Ｙ軸」、「第１部品位置Ａ軸」、「第１部品位置Ｂ軸」、「第２部品位置Ｃ軸」、及び「第２部品位置Ｄ軸」とも記載する。「Ｘ軸」、「Ａ軸」、及び「Ｃ軸」はカメラにより得られる画像の縦軸に対応し、「Ｙ軸」、「Ｂ軸」、及び「Ｄ軸」は当該画像の横軸に対応する。
【０１０１】
ここで、図１３Ａ〜図１３Ｃを用いて、実施例に係る製造ラインを構成する製造装置について説明する。図１３Ａ〜図１３Ｃは、当該製造装置の構成を模式的に例示する。図１３Ａ〜図１３Ｃに示されるとおり、実施例に係る製造装置は、基板５２を運搬するコンベア５１と、第１部品５３を運搬する第１ロボットアーム５３１と、第２部品５４を運搬する第２ロボットアーム５４１と、作業場所を撮影するカメラ５５と、を備えている。第１機構及び第２機構によってコンベア５１上の基板５２の位置が調節され、第３機構及び第４機構によって第１ロボットアーム５３１の把持する第１部品５３の位置が調節され、第５機構及び第６機構によって第２ロボットアーム５４１の把持する第２部品５４の位置が調節される。
【０１０２】
製造装置は、コンベア５１によって基板５２を所定の位置に運搬する（図１３Ａ）。基板５２の面にはマーカ５２１が設けられており、このマーカ５２１により位置決めがなされる。次に、製造装置は、第１ロボットアーム５３１によって、基板５２の面に設けられた第１実装位置５２２に第１部品５３を固定する（図１３Ｂ）。そして、製造装置は、第２ロボットアーム５４１によって、基板５２の面に設けられた第２実装位置５２３に第２部品５４を固定する（図１３Ｃ）。これによって、基板５２の上面に２つの部品（５３、５４）を実装した製品を製造することができる。
【０１０３】
本実施例では、状態データの解析処理を実施するため、１０００個の製品を断続的に製造し、その過程をカメラ５５で撮影した。なお、製品１個あたりにかかった製造時間は１分程度であった。そして、得られた画像データ５５１内において、基板５２（マーカ５２１）のＸ軸及びＹ軸、第１部品５３のＡ軸及びＢ軸、並びに第２部品のＣ軸及びにＤ軸の位置（座標）を特定することで、各機構に対応する特徴量を得た。図１４は、上記により得られた各特徴量の一部を示す。
【０１０４】
続いて、上記数１に示す数式に図１４に示される各特徴量を適用することで、各特徴量間の相関を示す相関係数行列を算出した。図１５は、算出された相関係数行列を示す。この相関係数行列の各要素のうち相関係数の値が閾値０．２以上の要素を抽出することで、各機構間の関係の強さを示す無向グラフ情報を得た。図１６は、これにより得られた無向グラフ情報を示す。
【０１０５】
また、制御プログラムの解析処理を実施するため、上記製造装置の利用する制御プログラムを得た。図１７は、これにより得られた制御プログラムの一部を示す。次に、公知のソフトウェア（名称：Sysmac（登録商標） Studio）を利用して、この制御プログラムの構文解析を実施することで、抽象構文木の構築を行った。図１８Ａ〜図１８Ｄは、これにより構築された抽象構文木の一部を示す。図１８Ａ〜図１８Ｄに示される各抽象構文木は、図１７の符号５６１〜５６４の各構文に対応する。この抽象構文木に上記ステップＳ１４０２〜Ｓ１４０４の処理を適用し、各機構に対応する各変数の順序付けの初期化を行った。更に、上記の製造工程で得られたログデータを利用することで、正常に稼働した際の各機構の順序関係を特定した。図１９は、これにより特定した各機構の順序関係を示す。なお、図１９のエッジに付された数字はノード間の遷移が発生する確率を示し、矢印の向きは、発生する遷移の向きを示す。
【０１０６】
そして、状態データの解析で得られた無向グラフ情報（図１６）に、制御プログラムの解析で特定した順序関係（図１９）を適用することで、各機構の因果関係を示す有向グラフ情報を得た。有向グラフ情報を形成する際には、図１９の示す順序関係において発生する確率が閾値０．１よりも低い遷移に対応するエッジを削除した。図２０は、これにより得られた有向グラフ情報を示す。図２０の有向グラフ情報は、各軸において「基板（マーカ）の移動」、「第１部品の実装」、及び「第２部品の実装」の順で製造装置が動作するという因果関係を示している。この因果関係は、製造装置の実際の動作と一致している。そのため、上記実施形態に係る方法によれば、製造ラインを構成する複数の機構間の因果関係を正確にモデル化できることが分かった。
【０１０７】
§４  変形例
以上、本発明の実施の形態を詳細に説明してきたが、前述までの説明はあらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。例えば、以下のような変更が可能である。なお、以下では、上記実施形態と同様の構成要素に関しては同様の符号を用い、上記実施形態と同様の点については、適宜説明を省略した。以下の変形例は適宜組み合わせ可能である。
【０１０８】
＜４．１＞
上記実施形態では、工程解析装置１は、製造ライン３を制御する制御装置であるＰＬＣ２から制御プログラム２２１を取得している。しかしながら、解析対象となる制御プログラムの取得先は、その制御プログラムを利用する制御装置に限られなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、ＮＡＳ（Network Attached Storage）等の外部の記憶装置に制御プログラムが保存されている場合、工程解析装置１は、当該外部の記憶装置から制御プログラムを取得してもよい。また、例えば、ＣＤ、半導体メモリ等の記憶媒体に制御プログラムが保存されている場合、工程解析装置１は、当該記憶媒体から制御プログラムを取得してもよい。特に、上記実施形態では、抽象構文木を構築することで、制御プログラムの解析を行っている。この抽象構文木は、プログラム言語で記述されたプログラムをコンパイルする過程で作成可能である。そのため、工程解析装置１は、コンパイル前のプログラムを制御プログラム２２１として取得するのが好ましい。コンパイル前のプログラムを制御装置が保持していない場合には、工程解析装置１は、制御装置で実行される制御プログラムに対応するコンパイル前のプログラムを、制御装置以外の外部装置、記憶媒体等から取得してもよい。
【０１０９】
＜４．２＞
上記実施形態では、制御プログラム２２１は、ＰＬＣ２で実行可能なように、例えば、ラダー・ダイアグラム言語、ファンクション・ブロック・ダイアグラム言語、ストラクチャード・テキスト言語、インストラクション・リスト言語、及びシーケンシャル・ファンクション・チャート言語、Ｃ言語の少なくともいずれかを利用して記述される。しかしながら、解析対象となる制御プログラムの種類は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、解析対象となる制御プログラムは、Ｊａｖａ（登録商標）、Ｐｙｔｈｏｎ、Ｃ＋＋、Ｒｕｂｙ、Ｌｕａ等が利用されて記述されてよい。
【０１１０】
＜４．３＞
上記実施形態では、工程解析装置１は、製造ライン３を制御するＰＬＣ２から状態データ２２２を取得している。しかしながら、解析対象となる状態データの取得先は、製造ラインを制御する制御装置に限られなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、ＮＡＳ等の外部の記憶装置に状態データが保存されている場合、工程解析装置１は、当該外部の記憶装置から状態データを取得してもよい。また、例えば、ＣＤ、半導体メモリ等の記憶媒体に状態データが保存されている場合、工程解析装置１は、当該記憶媒体から状態データを取得してもよい。更に、例えば、工程解析装置１は、状態データを各計測装置から直接取得してもよい。
【０１１１】
＜４．４＞
上記実施形態では、工程解析装置１は、複数の機構３１間の因果関係を解析した結果を有向グラフ情報として出力している。しかしながら、解析結果の出力形式は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。因果関係の解析結果は、例えば、遷移確率行列、テキスト等で表現されてもよい。
【０１１２】
また、上記実施形態では、ステップＳ１３０３で構築した無向グラフ情報を利用して、有向グラフ情報を作成している。しかしながら、有向グラフ情報を作成する方法は、このような例に限定されなくてもよい。例えば、工程解析装置１は、上記ステップＳ１３０３を省略して、相関係数又は偏相関係数の行列を利用して、有向グラフ情報を作成してもよい。
【０１１３】
＜４．５＞
上記実施形態では、工程解析装置１とＰＬＣ２とは別々のコンピュータにより構成されている。しかしながら、工程解析装置１とＰＬＣ２とは１台のコンピュータにより構成されてもよい。すなわち、１台のコンピュータが、工程解析装置及び製造ラインの制御装置の両方の機能を備えてもよい。
【０１１４】
＜４．６＞
上記実施形態では、工程解析装置１は、状態データ２２２を解析する過程において、相関係数又は偏相関係数を算出する前に、各件の状態データ２２２から特徴量を算出している。しかしながら、状態データ２２２を統計的に解析する方法は、このような例に限定されなくてもよい。例えば、工程解析装置１は、各件の状態データ２２２をそのまま利用して相関係数又は偏相関係数を算出してもよい。
【０１１５】
また、上記実施形態では、各機構３１間の関係の強さを示すために、相関係数又は偏相関係数を用いている。しかしながら、各機構間の関係の強さを示す指標は、相関係数又は偏相関係数に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、各機構間の関係の強さを示す指標として、ＭＩＣ（Maximum Information Coefficient）、ＨＳＩＣ（Hilbert-Schmidt Independence Criteria）、相互情報量等が用いられてもよい。
【０１１６】
＜４．７＞
上記実施形態では、工程解析装置１は、抽象構文木を利用して、制御プログラム２２１の解析を行っている。しかしながら、制御プログラムを解析する方法は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、工程解析装置１は、コンパイルの過程で形成される中間言語のコードを利用して、制御プログラムを解析してもよい。
【０１１７】
また、上記実施形態では、抽象構文木から変数と条件分岐とを抽出した後に、制御プログラム２２１を利用して製造ライン３を稼働させることで得られるログデータ２２３を参照して、条件分岐の実行結果に基づいた各変数の順番付けを行うことで、複数の機構３１の順序関係を特定している。しかしながら、ログデータ２２３に基づいて、複数の機構３１の順序関係を特定する方法は、このような例に限定されなくてもよい。上記工程解析装置１は、ログデータ２２３を適宜解析することで、複数の機構３１の順序関係を特定してもよい。
【０１１８】
＜４．８＞
上記実施形態では、工程解析装置１は、ステップＳ１０３において、複数の機構３１間の接続状態として、複数の機構３１間の関係の強さを特定している。しかしながら、接続状態の表現方法は、このような例に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。例えば、複数の機構３１間の接続状態は、関係の有無、関係の変化等によって表現されてよい。関係の変化は、例えば、関係の強さ又は有無で表現された関係性の時系列での差分（変化量）で示されてよい。
【０１１９】
＜４．９＞
上記実施形態では、工程解析装置１は、ステップＳ１０３において、相関係数又は偏相関係数を算出することをもって、複数件の状態データ２２２を統計的に解析している。しかしながら、複数件の状態データ２２２を統計的に解析する方法は、このような例に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。制御部１１は、上記ステップＳ１０３において、例えば、ＧＬＡＳＳＯ（Graphical LASSO）、共分散選択法等により、複数件の状態データ２２２を統計的に解析してもよい。これにより、制御部１１は、複数の機構３１間の接続状態を示す無向グラフを得ることができる。また、制御部１１は、上記ステップＳ１０３において、例えば、ＳＧＳ（Spirtes,Glymour,and Scheines）、ＰＣ（Peter & Clark）、ＦＣＩ（Fast Causal Inference）、ＬｉＮＧＡＭ（Liner Non-Gaussian Acyclic Model）、ベイジアンネットワーク等により、複数件の状態データ２２２を統計的に解析してもよい。これにより、制御部１１は、複数の機構３１間の接続状態を示す有向グラフを得ることができる。
【０１２０】
＜４．１０＞
上記実施形態では、工程解析装置１は、ステップＳ１０３において、複数件の状態データ２２２を統計的に解析している。しかしながら、複数件の状態データ２２２を解析する方法は、このような統計的手法に限られなくてもよく、制御部１１は、ステップＳ１０３において、統計的手法以外の方法により、複数件の状態データ２２２を解析してもよい。
【０１２１】
例えば、制御部１１は、各機構３１より得られた各件の状態データ２２２から特徴量を算出し、算出した各特徴量の変化に基づいて、複数の機構３１間の接続状態を特定してもよい。算出する特徴量の種類は、上記ステップＳ１３０１と同様であってよい。各特徴量の変化に基づいて接続状態を特定する方法の一例として、関係の有する機構３１間で故障等の異常が生じると、その関係の有する各機構３１から得られる特徴量は大きく変化する。そこで、制御部１１は、算出した各特徴量の変化量を所定の閾値と比較して、閾値以上の変化の生じている特徴量を抽出してもよい。そして、制御部１１は、抽出した特徴量に対応する機構３１間は関係を有しているとして、接続状態を特定してもよい。
【０１２２】
また、例えば、制御部１１は、決定木、ロジスティクス回帰、ベイジアンネットワーク、ニューラルネットワーク等の機械学習により得られる学習モデルを利用して、複数件の状態データ２２２の解析を行ってもよい。学習モデルを利用する手法の一例として、制御部１１は、状態データに基づいて異常が生じているか否かを判定する能力を習得するための機械学習を行った学習済みの学習モデルを取得してもよい。そして、制御部１１は、各件の状態データ２２２を取得した学習モデルに入力し、対応する機構３１に異常が生じているか否かを示す出力を学習済みの学習モデルから取得してもよい。これにより、制御部１１は、異常の生じていると判定された機構３１同士は関係を有しているとみなすことで、複数の機構３１間の接続状態を特定することができる。
【０１２３】
＜４．１１＞
上記実施形態では、工程解析装置１は、上記ステップＳ１０４において、ログデータ２２３を利用して、複数の機構３１間の順序関係を特定している。しかしながら、複数の機構３１間の順序関係を特定する方法は、このようなログデータ２２３を利用した方法に限られなくてもよい。工程解析装置１は、ログデータ２２３を利用せずに、複数の機構３１間の順序関係を特定してもよい。
【０１２４】
図２１は、本変形例における制御プログラム２２１を解析する処理手順の一例を示すフローチャートである。例えば、制御部１１は、第２解析部１１４として動作し、上記ステップＳ１０４に代えて、図２１により示される処理手順により、複数の機構３１間の順序関係を特定してもよい。
【０１２５】
（ステップＳ１４１１）
ステップＳ１４１１では、制御部１１は、取得した制御プログラム２２１の構文解析を行うことで、制御プログラム２２１から抽象構文木を構築する。抽象構文木の構築は、上記ステップＳ１４０１と同様に行われてよい。抽象構文木の構築が完了すると、制御部１１は、次のステップＳ１４１２に処理を進める。
【０１２６】
（ステップＳ１４１２）
ステップＳ１４１２では、制御部１１は、ステップＳ１４１１により構築した抽象構文木から各機構３１に関する変数を抽出する。変数の抽出は、上記ステップＳ１４０２と同様に行われてよい。各機構３１に関する変数の抽出が完了すると、制御部１１は、次のステップＳ１４１３に処理を進める。
【０１２７】
（ステップＳ１４１３）
ステップＳ１４１３では、制御部１１は、ステップＳ１４１１により構築した抽象構文木から制御フローグラフを生成する。制御フローグラフは、プログラムを実行したときに通過する可能性のある全ての経路をグラフにより示すものである。
【０１２８】
ここで、図２２を更に用いて、制御フローグラフについて説明する。図２２は、プログラムの一例（プログラム５０１）とそのプログラムの一例から導出される制御フローグラフの一例（制御フローグラフ５０２）を模式的に例示する。図２２の例では、プログラム５０１は、処理Ｌ１〜Ｌ６を含んでいる。このプログラム５０１から構築される抽象構文木を利用して、プログラム５０１の依存性解析を行うことで、図２２に示される制御フローグラフ５０２を得ることができる。
【０１２９】
制御フローグラフ５０２は、プログラム５０１の処理の流れ（実線の矢印）、データの依存性（点線の矢印）、及び制御の依存性（一点鎖線の矢印）を示している。処理の流れは、プログラム内の処理が実行される順序を示す。例えば、プログラム５０１では、処理Ｌ１の後に、処理Ｌ２が実行される。そのため、制御フローグラフ５０２において、処理Ｌ１と処理Ｌ２とは、処理の流れを示す矢印で連結されている。また、処理Ｌ４は分岐構文であり、処理Ｌ４の実行結果に基づいて、次に実行する処理が処理Ｌ５又は処理Ｌ６のいずれかに決定される。そのため、処理Ｌ４は、処理Ｌ５及び処理Ｌ６と処理の流れを示す矢印で連結されている。
【０１３０】
データの依存性は、影響を与える処理の関係を示す。例えば、プログラム５０１では、処理Ｌ２が、処理Ｌ４及び処理Ｌ５の結果に影響を与える。そのため、制御フローグラフ５０２において、処理Ｌ２は、処理Ｌ４及び処理Ｌ５とデータの依存性を示す矢印で連結されている。また、制御の依存性は、条件分岐等により実行の可否を決定する処理の関係を示す。例えば、プログラム５０１では、処理Ｌ４の実行結果に基づいて、処理Ｌ５の実行の可否が決定される。そのため、制御フローグラフ５０２において、処理Ｌ４は、処理Ｌ５と制御の依存性を示す矢印で連結されている。
【０１３１】
このように制御フローグラフによれば、制御プログラム２２１における変数の演算を含む処理同士の依存関係を特定することができる。制御部１１は、抽象構文木を利用して、制御プログラム２２１の依存性解析を行うことで、制御フローグラフを生成する。そして、制御フローグラフの生成が完了すると、制御部１１は、次のステップＳ１４１４に処理を進める。なお、本ステップＳ１４１３は、上記ステップＳ１４１２の前に実行されてもよいし、上記ステップＳ１４１２と並列に実行されてもよい。
【０１３２】
（ステップＳ１４１４及びＳ１４１５）
ステップＳ１４１４では、制御部１１は、生成した制御フローグラフに基づいて、抽出した変数の依存関係を特定する。本変形例では、上記ステップＳ１４１３及び本ステップＳ１４１４により、制御部１１は、ステップＳ１４１１で構築した抽象構文木に基づいて、制御プログラム２２１の処理における変数の依存関係を特定する。そして、次のステップＳ１４１５では、制御部１１は、特定した変数の依存関係に基づいて、複数の機構３１の順序関係を特定する。複数の機構３１の順序関係の特定が完了すると、本変形例に係る制御プログラム２２１の解析処理は終了する。
【０１３３】
ここで、図２３を更に用いて、ステップＳ１４１４及びＳ１４１５の処理について説明する。図２３は、制御フローグラフに基づいて各変数間の依存関係を特定し、特定した変数間の依存関係に基づいて複数の機構３１の順序関係を特定する処理手順の一例を示すフローチャートである。
【０１３４】
（ステップＳ４０１）
ステップＳ４０１では、制御部１１は、ステップＳ１４１２により抽出した変数のグルーピングを行うことで、各機構３１に対応する変数グループを生成する。
【０１３５】
図２４Ａは、変数グループを生成する場面の一例を模式的に例示する。制御プログラム２２１が複数件のプログラムに分割されている場合、同一の機構３１に対応する変数に同じ名称が付与されているとは限らない。そこで、制御部１１は、ステップＳ１４１２により得られた変数から、各機構３１に対応する注目変数をピックアップする。続いて、制御部１１は、ステップＳ１４１２により得られた変数から、各注目変数に依存するグローバル変数を抽出する。そして、制御部１１は、各注目変数と各注目変数に依存するグローバル変数とのグループを各機構３１に対応する変数グループとして生成する。これにより、制御部１１は、各機構３１に対応する変数のグルーピングを行うことができる。変数のグルーピングが完了すると、制御部１１は、次のステップＳ４０２に処理を進める。
【０１３６】
（ステップＳ４０２）
ステップＳ４０２では、制御部１１は、ステップＳ４０１で生成した変数グループから２つの変数グループを総当たりで選択する。これにより、制御部１１は、変数グループのペア（組合せ）を生成し、生成した変数グループのペアをリストアップする。例えば、Ｄ（Ａ）、Ｄ（Ｂ）、及びＤ（Ｃ）という３つの変数グループが生成されたとする。この場合、制御部１１は、本ステップＳ４０２の処理により、（Ｄ（Ａ）、Ｄ（Ｂ））、（Ｄ（Ａ）、Ｄ（Ｃ））、（Ｄ（Ｂ）、Ｄ（Ｃ））という３つの変数グループのペアをリストアップすることができる。変数グループのペアのリストアップが完了すると、制御部１１は、次のステップＳ４０３に処理を進める。
【０１３７】
（ステップＳ４０３）
ステップＳ４０３では、制御部１１は、ステップＳ４０２でリストアップした変数グループのペアから１つの変数グループのペアを取り出し、取り出したペアの各変数グループから１つずつ変数を総当たりで取り出す。これにより、制御部１１は、各変数グループに含まれる変数のペア（組合せ）を生成し、生成した変数のペアをリストアップする。例えば、（Ｄ（Ａ）、Ｄ（Ｂ））のペアを取り出し、変数グループＤ（Ａ）には、ＡＡ１、ＡＡ２という２つの変数が含まれており、変数グループＤ（Ｂ）には、ＢＢ１、ＢＢ２という２つの変数が含まれているとする。この場合、制御部１１は、本ステップＳ４０３の処理により、（ＡＡ１、ＢＢ１）、（ＡＡ１、ＢＢ２）、（ＡＡ２、ＢＢ１）、（ＡＡ２、ＢＢ２）という４つの変数のペアをリストアップすることができる。変数のペアのリストアップが完了すると、制御部１１は、次のステップＳ４０４に処理を進める。
【０１３８】
（ステップＳ４０４）
ステップＳ４０４では、制御部１１は、ステップＳ４０３でリストアップした変数のペアから１つの変数のペアを取り出し、制御フローグラフに基づいて、取り出したペアの変数間の依存関係を導出する。例えば、（ＡＡ１、ＢＢ１）のペアを取り出したとする。制御フローグラフにより、ＡＡ１を含む処理の後にＢＢ１を含む処理が実行されるという依存関係が示されている場合には、制御部１１は、本ステップＳ４０４により、ＡＡ１が先でＢＢ１が後であるという順序の依存関係があることを導出することができる。同様に、制御フローグラフにより、ＢＢ１を含む処理の後にＡＡ１を含む処理が実行されるという依存関係が示されている場合には、制御部１１は、本ステップＳ４０４により、ＡＡ１が後でＢＢ１が前であるという順序の依存関係があることを導出することができる。一方、制御フローグラフにおいて、ＡＡ１を含む処理とＢＢ１を含む処理とが直接的にも間接的にも連結されていない場合には、制御部１１は、本ステップＳ４０４により、ＡＡ１とＢＢ１との間には依存関係がないと特定することができる。このような依存関係の導出が完了すると、制御部１１は、次のステップＳ４０５に処理を進める。
【０１３９】
（ステップＳ４０５）
ステップＳ４０５では、制御部１１は、全ての変数のペアに対してステップＳ４０４の処理が完了したか否かを判定する。全ての変数のペアに対してステップＳ４０４の処理が完了していないと判定した場合には、制御部１１は、ステップＳ４０４に処理を戻し、他の変数のペアに対して依存関係を導出する処理を実行する。これにより、制御部１１は、ステップＳ４０３によりリストアップした全ての変数のペアに対して、ステップＳ４０４による依存関係の導出処理を実行する。全ての変数のペアに対して依存関係の導出処理が完了すると、制御部１１は、全ての変数のペアに対してステップＳ４０４の処理が完了したと判定し、次のステップＳ４０６に処理を進める。
【０１４０】
（ステップＳ４０６）
ステップＳ４０６では、制御部１１は、ステップＳ４０４の処理を繰り返すことで得られた各変数間の依存関係を、ステップＳ４０３で取り出したペアの変数グループ間の依存関係に集約する。これにより、制御部１１は、取り出したペアの変数グループ間の依存関係、すなわち、取り出したペアの変数グループに対応する２つの機構３１間の順序関係を特定する。
【０１４１】
図２４Ｂは、各変数間で得られた依存関係を模式的に例示する。ペアＰ１では、変数グループＤ（Axis001）内の変数が先で変数グループＤ（Axis002）が後であるという順序の依存関係が得られている。この場合、制御部１１は、本ステップＳ４０６により、変数グループＤ（Axis001）に対応する機構３１が先で変数グループＤ（Axis002）に対応する機構３１が後であるという順序関係があることを特定することができる。つまり、順序の依存関係が一方向に偏っている場合には、制御部１１は、２つの機構３１間にはその方向の順序関係があると特定することができる。
【０１４２】
一方、ペアＰ２では、変数グループＤ（Axis001）内の変数が後で変数グループＤ（Sensor001）が先であるという順序の依存関係を有する変数のペアと、変数グループＤ（Axis001）内の変数が先で変数グループＤ（Sensor001）が後であるという順序の依存関係を有する変数のペアとが存在する。この場合、制御部１１は、取り出したペアの変数グループに対応する２つの機構３１間には双方向の順序関係があると特定してもよい。又は、制御部１１は、所定の方法に基づいて、取り出したペアの変数グループに対応する２つの機構３１間の双方向の順序関係のうちいずれかの順序関係を採用することで、２つの機構３１間の順序関係を特定してもよい。
【０１４３】
例えば、制御部１１は、２つの機構３１間の双方向の順序関係のうち採用する順序関係の選択をユーザから受け付けてもよい。この場合、制御部１１は、ユーザの指定した順序関係を、２つの機構３１間の順序関係として採用することができる。
【０１４４】
なお、いずれの変数のペアにも依存関係が存在しない場合には、制御部１１は、取り出したペアの変数グループに対応する２つの機構３１間には順序関係がないと特定することができる。これにより、２つの機構３１間の順序関係の特定が完了すると、制御部１１は、次のステップＳ４０７に処理を進める。
【０１４５】
（ステップＳ４０７）
ステップＳ４０７では、制御部１１は、全ての変数グループのペアに対してステップＳ４０３〜Ｓ４０６の一連の処理が完了したか否かを判定する。全ての変数グループのペアに対してステップＳ４０３〜Ｓ４０６の一連の処理が完了していないと判定した場合には、制御部１１は、ステップＳ４０３に処理を戻し、他の変数グループのペアに対して、ステップＳ４０３〜Ｓ４０６の一連の処理を実行する。これにより、制御部１１は、ステップＳ４０２によりリストアップした全ての変数グループのペアに対して、ステップＳ４０３〜Ｓ４０６による機構３１間の順序関係を特定する処理を実行する。
【０１４６】
図２４Ｃは、各変数間の順序の依存関係に基づいて特定された複数の機構３１の順序関係の一例を模式的に例示する。全ての変数グループのペアに対してステップＳ４０３〜Ｓ４０６の一連の処理を実行した結果、制御部１１は、図２４Ｃで例示されるような全ての機構３１間の順序関係を特定することができる。このように全ての機構３１間の順序関係を特定する処理が完了すると、制御部１１は、全ての変数グループのペアに対してステップＳ４０３〜Ｓ４０６の処理が完了したと判定し、制御フローグラフを利用して複数の機構３１の順序関係を特定する処理を終了する。
【０１４７】
以上のように、本変形例に係る処理手順によれば、ログデータ２２３を利用せずに、制御プログラム２２１を解析して、複数の機構３１の順序関係を特定することができる。なお、本変形例では、構築した抽象構文木に基づいて、制御プログラム２２１の処理における変数の依存関係を特定するステップは、構築した抽象構文木から制御フローグラフを生成するステップ（ステップＳ１４１３）、及び生成した制御フローグラフに基づいて、抽出した変数の依存関係を特定するステップ（ステップＳ１４１４）を含んでいる。しかしながら、構築した抽象構文木に基づいて、制御プログラム２２１の処理における変数の依存関係を特定するステップは、このような例に限定されなくてもよい。制御部１１は、制御フローグラフを利用することなく、抽象構文木に基づいて、制御プログラム２２１の処理における変数の依存関係を特定してもよい。
【０１４８】
＜４．１２＞
上記実施形態では、複数の機構３１間の因果関係を特定するために、状態データ２２２から特定される複数の機構３１間の関係の強さ（接続状態）及び制御プログラム２２１から特定される複数の機構３１の順序関係を利用している。しかしながら、因果関係の特定に利用する情報は、これらの情報のみに限定されなくてもよい。上記工程解析装置１は、関係の強さ（接続状態）及び順序関係以外の情報を更に利用して、複数の機構３１間の因果関係を特定してもよい。
【０１４９】
図２５は、本変形例に係る工程解析装置１Ａのソフトウェア構成の一例を模式的に例示する。工程解析装置１Ａは、機構データ２５０を取得する第３取得部１１６、及び取得した機構データ２５０を解析し、製造ラインで実施される工程をモデル化することで、複数の機構３１の順序関係を示す工程モデルを特定する第３解析部１１７を更に備える。また、関係特定部１１５は、それぞれ特定した関係の強さ、順序関係、及び工程モデルに基づいて、製造ライン３で実施される工程における複数の機構３１間の因果関係を特定する。これらの点を除き、工程解析装置１Ａは、上記工程解析装置１と同様に構成される。また、工程解析装置１Ａは、上記工程解析装置１と同様のハードウェア構成を有してよい。
【０１５０】
図２６は、機構データ２５０を解析することで、工程モデル２５２を特定する過程の一例を模式的に例示する。工程解析装置１Ａの制御部１１は、上記ステップＳ１０５を実行する前までに、第３取得部１１６として動作し、機構データ２５０を取得する。機構データ２５０は、複数の機構３１それぞれに含まれる装置の相対的な位置関係、及びその装置が工程に関与する順序の少なくとも一方に関するデータであれば特に限定されなくてもよく、例えば、装置のリスト、装置の動作を監視するセンサのリスト、工程の順序を示す情報、センサの設置位置を示す情報等であってよい。続いて、制御部１１は、第３解析部１１７として動作し、機構データ２５０を解析することで、工程モデル２５２を特定する。例えば、制御部１１は、機構データ２５０を参照して、２つの機構３１間の順序関係を特定し、２つの機構３１間の関係を示す表２５１の対応するセルに特定した結果を入力する。この表２５１を完成させることで、制御部１１は、工程モデル２５２を特定することができる。
【０１５１】
そして、上記ステップＳ１０５では、制御部１１は、それぞれ特定した関係の強さ、順序関係、及び工程モデルに基づいて、製造ライン３で実施される工程における複数の機構３１間の因果関係を特定する。例えば、制御部１１は、それぞれ特定した関係の強さ、順序関係、及び工程モデルの積により、各機構３１間の関係の有無を特定してもよい。本変形例によれば、機構データ２５０から特定された工程モデルの知見を更に利用することで、製造ライン３を構成する複数の機構３１間の因果関係をより正確にモデル化することができる。
【符号の説明】
【０１５２】
１…工程解析装置、
１１…制御部、１２…記憶部、１３…通信インタフェース、
１４…入力装置、１５…出力装置、１６…ドライブ、
１１１…第１取得部、１１２…第２取得部、
１１３…第１解析部、１１４…第２解析部、１１５…関係特定部、
２…ＰＬＣ、
２１…制御部、２２…記憶部、
２３…入出力インタフェース、２４…通信インタフェース、
２２１…制御プログラム、２２２…状態データ、
２２３…ログデータ、
３…製造ライン、３１…機構
【図１】
2018206362.tif 000005
【図２】
2018206362.tif 000006
【図３】
2018206362.tif 000007
【図４】
2018206362.tif 000008
【図５】
2018206362.tif 000009
【図６】
2018206362.tif 000010
【図７】
2018206362.tif 000011
【図８】
2018206362.tif 000012
【図９】
2018206362.tif 000013
【図１０】
2018206362.tif 000014
【図１１Ａ】
2018206362.tif 000015
【図１１Ｂ】
2018206362.tif 000016
【図１２】
2018206362.tif 000017
【図１３Ａ】
2018206362.tif 000018
【図１３Ｂ】
2018206362.tif 000019
【図１３Ｃ】
2018206362.tif 000020
【図１４】
2018206362.tif 000021
【図１５】
2018206362.tif 000022
【図１６】
2018206362.tif 000023
【図１７】
2018206362.tif 000024
【図１８Ａ】
2018206362.tif 000025
【図１８Ｂ】
2018206362.tif 000026
【図１８Ｃ】
2018206362.tif 000027
【図１８Ｄ】
2018206362.tif 000028
【図１９】
2018206362.tif 000029
【図２０】
2018206362.tif 000030
【図２１】
2018206362.tif 000031
【図２２】
2018206362.tif 000032
【図２３】
2018206362.tif 000033
【図２４Ａ】
2018206362.tif 000034
【図２４Ｂ】
2018206362.tif 000035
【図２４Ｃ】
2018206362.tif 000036
【図２５】
2018206362.tif 000037
【図２６】
2018206362.tif 000038