特開2018-206362(P2018-206362A)IP Force 特許公報掲載プロジェクト 2015.5.11 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧
特開2018-206362工程解析装置、工程解析方法、及び工程解析プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2018-206362(P2018-206362A)
(43)【公開日】2018年12月27日
(54)【発明の名称】工程解析装置、工程解析方法、及び工程解析プログラム
(51)【国際特許分類】
   G05B 19/418 20060101AFI20181130BHJP
【FI】
   G05B19/418 Z
【審査請求】有
【請求項の数】15
【出願形態】OL
【全頁数】34
(21)【出願番号】特願2018-46755(P2018-46755)
(22)【出願日】2018年3月14日
(31)【優先権主張番号】特願2017-110153(P2017-110153)
(32)【優先日】2017年6月2日
(33)【優先権主張国】JP
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】100124039
【弁理士】
【氏名又は名称】立花 顕治
(74)【代理人】
【識別番号】100179213
【弁理士】
【氏名又は名称】山下 未知子
(74)【代理人】
【識別番号】100170542
【弁理士】
【氏名又は名称】桝田 剛
(72)【発明者】
【氏名】服部 玲子
(72)【発明者】
【氏名】太田 雄也
(72)【発明者】
【氏名】峯本 俊文
(72)【発明者】
【氏名】広橋 佑紀
(72)【発明者】
【氏名】鶴田 浩輔
(72)【発明者】
【氏名】川ノ上 真輔
(72)【発明者】
【氏名】白水 岳
(72)【発明者】
【氏名】阿部 泰明
(72)【発明者】
【氏名】仲島 晶
【テーマコード(参考)】
3C100
【Fターム(参考)】
3C100AA58
3C100AA68
3C100BB01
3C100BB12
(57)【要約】
【課題】製造ラインを構成する複数の機構間の因果関係を正確にモデル化する技術を提供する。
【解決手段】本発明の一側面に係る工程解析装置は、製造ラインを構成する複数の機構の状態に関する複数件の状態データを取得する第1取得部と、前記製造ラインの動作を制御するための制御プログラムを取得する第2取得部と、取得した前記複数件の状態データを解析することにより、前記複数の機構間の接続状態を特定する第1解析部と、取得した前記制御プログラムを解析することにより、前記複数の機構の順序関係を特定する第2解析部と、それぞれ特定した前記接続状態及び前記順序関係に基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定する関係特定部と、を備える。
【選択図】図1
【特許請求の範囲】
【請求項1】
製造ラインを構成する複数の機構の状態に関する複数件の状態データを取得する第1取得部と、
前記製造ラインの動作を制御するための制御プログラムを取得する第2取得部と、
取得した前記複数件の状態データを解析することにより、前記複数の機構間の接続状態を特定する第1解析部と、
取得した前記制御プログラムを解析することにより、前記複数の機構の順序関係を特定する第2解析部と、
それぞれ特定した前記接続状態及び前記順序関係に基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定する関係特定部と、
を備える、
工程解析装置。
【請求項2】
前記関係特定部は、特定した前記複数の機構間の因果関係を示す有向グラフ情報を出力する、
請求項1に記載の工程解析装置。
【請求項3】
前記第1解析部は、特定した前記複数の機構間の接続状態を示す無向グラフ情報を構築し、
前記関係特定部は、前記無向グラフ情報に前記順序関係を適用することにより、前記有向グラフ情報を作成する、
請求項2に記載の工程解析装置。
【請求項4】
前記第1解析部は、(1)前記各件の状態データから特徴量を算出し、(2)当該各特徴量間の相関係数又は偏相関係数を算出する、ことによって、前記複数の機構間の接続状態を特定する、
請求項1から3のいずれか1項に記載の工程解析装置。
【請求項5】
前記第2解析部は、前記制御プログラムを利用して前記製造ラインを稼働させることで得られるログデータに基づいて、前記複数の機構の順序関係を特定する、
請求項1から4のいずれか1項に記載の工程解析装置。
【請求項6】
前記第2解析部は、(1)前記制御プログラムから抽象構文木を構築し、(2)構築した当該抽象構文木から前記各機構に関する変数と条件分岐とを抽出し、(3)前記制御プログラムを利用して前記製造ラインを正常に稼働させたときのログデータを取得し、(4)取得した前記ログデータを参照して、前記条件分岐の実行結果に基づいた、前記各変数の順番付けを行う、ことによって、前記複数の機構の順序関係を特定する、
請求項5に記載の工程解析装置。
【請求項7】
前記第2解析部は、(1)前記制御プログラムから抽象構文木を構築し、(2)構築した当該抽象構文木から前記各機構に関する変数を抽出し、(3)構築した当該抽象構文木に基づいて、前記制御プログラムの処理における前記変数の依存関係を特定し、(4)特定した依存関係に基づいて、前記複数の機構の順序関係を特定する、
請求項1から4のいずれか1項に記載の工程解析装置。
【請求項8】
前記(3)構築した当該抽象構文木に基づいて、前記制御プログラムの処理における前記変数の依存関係を特定するステップは、構築した当該抽象構文木から制御フローグラフを生成するステップと、生成した当該制御フローグラフに基づいて、抽出した前記変数の依存関係を特定するステップと、を含む、
請求項7に記載の工程解析装置。
【請求項9】
前記各件の状態データは、トルク、速度、加速度、温度、電流、電圧、空圧、圧力、流量、位置、寸法及び面積の少なくともいずれかを示す、
請求項1から8のいずれか1項に記載の工程解析装置。
【請求項10】
前記制御プログラムは、ラダー・ダイアグラム言語、ファンクション・ブロック・ダイアグラム言語、ストラクチャード・テキスト言語、インストラクション・リスト言語、及びシーケンシャル・ファンクション・チャート言語、C言語の少なくともいずれかを利用して記述されている、
請求項1から9のいずれか1項に記載の工程解析装置。
【請求項11】
前記第1解析部は、取得した前記複数件の状態データを統計的に解析することにより、前記複数の機構間の接続状態を特定する、
請求項1から10のいずれか1項に記載の工程解析装置。
【請求項12】
前記第1解析部は、前記接続状態として、前記複数の機構間の関係の強さを特定する、
請求項1から11のいずれか1項に記載の工程解析装置。
【請求項13】
前記複数の機構それぞれに含まれる装置の相対的な位置関係及び前記装置が前記工程に関与する順序の少なくとも一方に関する機構データを取得する第3取得部と、
取得した前記機構データを解析し、前記製造ラインで実施される前記工程をモデル化することで、前記複数の機構の順序関係を示す工程モデルを特定する第3解析部と、
を更に備え、
前記関係特定部は、それぞれ特定した前記接続状態、前記順序関係、及び前記工程モデルに基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定する、
請求項1から12のいずれか1項に記載の工程解析装置。
【請求項14】
コンピュータが、
製造ラインを構成する複数の機構の状態に関する複数件の状態データを取得するステップと、
前記製造ラインの動作を制御するための制御プログラムを取得するステップと、
取得した前記複数件の状態データを解析することにより、前記複数の機構間の接続状態を特定するステップと、
取得した前記制御プログラムを解析することにより、前記複数の機構の順序関係を特定するステップと、
それぞれ特定した前記接続状態及び前記順序関係に基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定するステップと、
を実行する工程解析方法。
【請求項15】
コンピュータに、
製造ラインを構成する複数の機構の状態に関する複数件の状態データを取得するステップと、
前記製造ラインの動作を制御するための制御プログラムを取得するステップと、
取得した前記複数件の状態データを解析することにより、前記複数の機構間の接続状態を特定するステップと、
取得した前記制御プログラムを解析することにより、前記複数の機構の順序関係を特定するステップと、
それぞれ特定した前記接続状態及び前記順序関係に基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定するステップと、
を実行させるための工程解析プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、工程解析装置、工程解析方法、及び工程解析プログラムに関する。
【背景技術】
【0002】
工場等における製造ラインは、コンベア、ロボットアーム等の複数の機構で構成されている。この製造ラインのいずれかの機構で異常が発生すると、製品の製造が停止してしまい、大きな損害をもたらす可能性がある。そのため、工場等では、保全員が、製造ラインを定期的に巡回して、異常の発生又はその予兆の有無の確認を行っている。
【0003】
製造ライン内で異常の発生又はその予兆を検知したとき、異常が検知された機構よりも前の機構に真の異常の原因が存在する場合がある。したがって、真の異常の原因を特定するためには、製造ライン内の各機構の因果関係を把握することが重要である。しかしながら、製造ラインを構成する機構の数が多くなり、かつ各機構の動作条件が日々変化し得ることから、全ての機構の因果関係を正確に把握するのは困難である。
【0004】
そのため、従来、熟練の保全員が、自身の経験及び勘に基づいて、製造ラインを構成する複数の機構間の因果関係を把握して、製造ライン内で生じた異常又はその予兆の検知を行っていた。このような保全業務を非熟練の保全員が行うことができるようにするため、製造ラインを構成する複数の機構の因果関係を可視化する技術の開発が望まれていた。
【0005】
そこで、特許文献1では、複数の製造装置と制御装置との間でやりとりされる信号を解析することで、製造ライン内の製造装置の関係をモデル化する方法が提案されている。具体的には、取得される複数の信号から特徴量を算出し、かつ当該複数の信号の発生順序を抽出する。そして、特徴量間の相関と信号の発生順序とに基づいて、信号間の因果構造を作成する。これによって、特許文献1により提案されている方法では、製造ライン内の製造装置の関係をモデル化することができる。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2009−064407号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
上記特許文献1の方法によれば、製造ラインを構成する複数の機構間の因果関係を自動的にモデル化することができる。しかしながら、製造ラインは同じ動作を繰り返すため、信号の発生順序から、各機構の相対的な順序関係を特定することはできるものの、どの信号(機構)が動作の起点であるかを特定するのは困難であった。例えば、製造ラインが、機構A1、機構A2、及び機構A3の3つの機構を備え、機構A1、機構A2、及び機構A3の順で動作している場合に、従来の方法では、機構A1が動作の起点であることを特定するのが困難であった。そのため、特許文献1の方法では、起点となる信号を取り違えてしまい、複数の機構の因果関係を正確にモデル化することができない可能性があった。
【0008】
本発明は、一側面では、このような点を考慮してなされたものであり、その目的は、製造ラインを構成する複数の機構間の因果関係を正確にモデル化する技術を提供することである。
【課題を解決するための手段】
【0009】
本発明は、上述した課題を解決するために、以下の構成を採用する。
【0010】
すなわち、本発明の一側面に係る工程解析装置は、製造ラインを構成する複数の機構の状態に関する複数件の状態データを取得する第1取得部と、前記製造ラインの動作を制御するための制御プログラムを取得する第2取得部と、取得した前記複数件の状態データを解析することにより、前記複数の機構間の接続状態を特定する第1解析部と、取得した前記制御プログラムを解析することにより、前記複数の機構の順序関係を特定する第2解析部と、それぞれ特定した前記接続状態及び前記順序関係に基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定する関係特定部と、を備える。
【0011】
上記構成では、製造ラインを構成する複数の機構の状態に関する複数件の状態データに基づいて、当該複数の機構間の接続状態を特定する。また、製造ラインを制御するための制御プログラムに基づいて、複数の機構間の順序関係を特定する。そして、それぞれで特定した接続状態及び順序関係を統合することによって、製造ラインで実施される工程における複数の機構間の因果関係を特定する。ここで、制御プログラムは、各機構の動作を規定する。そのため、制御プログラムを利用することで、各機構の順序関係を適切に特定することができる。したがって、上記構成によれば、製造ラインを構成する複数の機構間の因果関係を正確にモデル化することができる。
【0012】
なお、製造ラインは、何らかの物を製造可能であればよく、複数の装置で構成されてもよいし、包装機等の1つの装置で構成されてもよい。また、各機構は、製造工程の何らかの処理を実施可能であればよい。各機構は、例えば、コンベア、ロボットアーム、サーボモータ、シリンダ(成形機等)、吸着パッド、カッター装置、シール装置等であってよい。また、各機構は、例えば、印刷機、実装機、リフロー炉、基板検査装置等の複合装置であってもよい。更に、各機構は、上記のような何らかの物理的な動作を伴う装置の他に、例えば、各種センサにより何らかの情報を検知する装置、各種センサからデータを取得する装置、取得したデータから何らかの情報を検知する装置、取得したデータを情報処理する装置等の内部処理を行う装置を含んでもよい。1つの機構は、1又は複数の装置で構成されてもよいし、装置の一部で構成されてもよい。1つの機構が装置の一部で構成される場合、複数の機構は、1つの装置で構成されてもよい。また、同一の装置が複数の処理を実施する場合には、それぞれを別の機構とみなしてもよい。例えば、同一の装置が第1の処理と第2の処理とを実施する場合に、第1の処理をする当該装置を第1の機構とみなし、第2の処理をする当該装置を第2の機構とみなしてもよい。
【0013】
状態データは、製造ラインを構成する各機構の状態に関するあらゆる種類のデータを含んでよい。状態データは、1又は複数のセンサ、カメラ等の計測装置から得られるデータで構成されてもよい。また、状態データは、計測装置から得られるデータそのままであってもよいし、画像データから取得される位置データ等のように計測装置から得られたデータに何らかの処理を適用することで得られるデータであってもよい。
【0014】
制御プログラムは、製造ラインを構成する各機構の動作を制御するあらゆる種類のプログラムを含んでよい。制御プログラムは、1件のプログラムで構成されてもよいし、複数件のプログラムで構成されてもよい。
【0015】
接続状態の表現方法は、複数の機構間のつながりを示し得るものであれば、特に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。接続状態は、例えば、関係の強さ(例えば、相関関係を示す相関係数)、関係の有無、関係の変化等によって表現されてよい。なお、関係の変化は、例えば、関係の強さ又は有無で表現された関係性の時系列での差分(変化量)で示されてよい。
【0016】
上記一側面に係る工程解析装置において、前記関係特定部は、特定した前記複数の機構間の因果関係を示す有向グラフ情報を出力してもよい。当該構成によれば、出力される有向グラフ情報によって、非熟練の保全員でも、製造ラインを構成する複数の機構間の因果関係を容易に把握することができるようになる。
【0017】
上記一側面に係る工程解析装置において、前記第1解析部は、特定した前記複数の機構間の接続状態を示す無向グラフ情報を構築してよく、前記関係特定部は、前記無向グラフ情報に前記順序関係を適用することにより、前記有向グラフ情報を作成してもよい。当該構成によれば、複数の機構間の因果関係を示す有向グラフ情報を適切に作成することができる。
【0018】
上記一側面に係る工程解析装置において、前記第1解析部は、(1)前記各件の状態データから特徴量を算出し、(2)当該各特徴量間の相関係数又は偏相関係数を算出する、ことによって、前記複数の機構間の接続状態を特定してもよい。当該構成によれば、複数の機構間の接続状態を適切に特定することができる。
【0019】
上記一側面に係る工程解析装置において、前記第2解析部は、前記制御プログラムを利用して前記製造ラインを稼働させることで得られるログデータに基づいて、前記複数の機構の順序関係を特定してもよい。当該構成によれば、複数の機構間の順序関係を適切に特定することができる。
【0020】
上記一側面に係る工程解析装置において、前記第2解析部は、(1)前記制御プログラムから抽象構文木を構築し、(2)構築した当該抽象構文木から前記各機構に関する変数と条件分岐とを抽出し、(3)前記制御プログラムを利用して前記製造ラインを正常に稼働させたときのログデータを取得し、(4)取得した前記ログデータを参照して、前記条件分岐の実行結果に基づいた、前記各変数の順番付けを行う、ことによって、前記複数の機構の順序関係を特定してもよい。当該構成によれば、複数の機構間の順序関係を適切に特定することができる。
【0021】
上記一側面に係る工程解析装置において、前記第2解析部は、(1)前記制御プログラムから抽象構文木を構築し、(2)構築した当該抽象構文木から前記各機構に関する変数を抽出し、(3)構築した当該抽象構文木に基づいて、前記制御プログラムの処理における前記変数の依存関係を特定し、(4)特定した依存関係に基づいて、前記複数の機構の順序関係を特定してもよい。当該構成によれば、複数の機構間の順序関係を適切に特定することができる。
【0022】
上記一側面に係る工程解析装置において、前記(3)構築した当該抽象構文木に基づいて、前記制御プログラムの処理における前記変数の依存関係を特定するステップは、構築した当該抽象構文木から制御フローグラフを生成するステップと、生成した当該制御フローグラフに基づいて、抽出した前記変数の依存関係を特定するステップと、を含んでもよい。当該構成によれば、複数の機構間の順序関係を適切に特定することができる。
【0023】
上記一側面に係る工程解析装置において、前記各件の状態データは、トルク、速度、加速度、温度、電流、電圧、空圧、圧力、流量、位置、寸法(高さ、長さ、幅)及び面積の少なくともいずれかを示すデータであってよい。また、前記制御プログラムは、ラダー・ダイアグラム言語、ファンクション・ブロック・ダイアグラム言語、ストラクチャード・テキスト言語、インストラクション・リスト言語、及びシーケンシャル・ファンクション・チャート言語、C言語の少なくともいずれかを利用して記述されていてもよい。当該構成によれば、様々な種類のデータ及びプログラムを取り扱うことのできる工程解析装置を提供することができる。
【0024】
上記一側面に係る工程解析装置において、前記第1解析部は、取得した前記複数件の状態データを統計的に解析することにより、前記複数の機構間の接続状態を特定してもよい。当該構成によれば、複数の機構間の接続状態を適切に特定することができる。
【0025】
上記一側面に係る工程解析装置において、前記第1解析部は、前記接続状態として、前記複数の機構間の関係の強さを特定してもよい。当該構成によれば、複数の機構間の接続状態を適切に特定することができる。
【0026】
上記一側面に係る工程解析装置は、前記複数の機構それぞれに含まれる装置の相対的な位置関係及び前記装置が前記工程に関与する順序の少なくとも一方に関する機構データを取得する第3取得部と、取得した前記機構データを解析し、前記製造ラインで実施される前記工程をモデル化することで、前記複数の機構の順序関係を示す工程モデルを特定する第3解析部と、を更に備えてもよい。そして、前記関係特定部は、それぞれ特定した前記接続状態、前記順序関係、及び前記工程モデルに基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定してもよい。当該構成によれば、特定された工程モデルの知見を更に利用することで、製造ラインを構成する複数の機構間の因果関係をより正確にモデル化することができる。
【0027】
なお、上記各形態に係る工程解析装置の別の形態として、以上の各構成を実現する情報処理方法であってもよいし、プログラムであってもよいし、このようなプログラムを記録したコンピュータその他装置、機械等が読み取り可能な記憶媒体であってもよい。ここで、コンピュータ等が読み取り可能な記録媒体とは、プログラム等の情報を、電気的、磁気的、光学的、機械的、又は化学的作用によって蓄積する媒体である。
【0028】
例えば、本発明の一側面に係る工程解析方法は、コンピュータが、製造ラインを構成する複数の機構の状態に関する複数件の状態データを取得するステップと、前記製造ラインの動作を制御するための制御プログラムを取得するステップと、取得した前記複数件の状態データを解析することにより、前記複数の機構間の接続状態を特定するステップと、取得した前記制御プログラムを解析することにより、前記複数の機構の順序関係を特定するステップと、それぞれ特定した前記接続状態及び前記順序関係に基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定するステップと、を実行する情報処理方法である。
【0029】
また、例えば、本発明の一側面に係る工程解析プログラムは、コンピュータに、製造ラインを構成する複数の機構の状態に関する複数件の状態データを取得するステップと、前記製造ラインの動作を制御するための制御プログラムを取得するステップと、取得した前記複数件の状態データを解析することにより、前記複数の機構間の接続状態を特定するステップと、取得した前記制御プログラムを解析することにより、前記複数の機構の順序関係を特定するステップと、それぞれ特定した前記接続状態及び前記順序関係に基づいて、前記製造ラインで実施される工程における前記複数の機構間の因果関係を特定するステップと、を実行させるためのプログラムである。
【発明の効果】
【0030】
本発明によれば、製造ラインを構成する複数の機構間の因果関係を正確にモデル化することができる。
【図面の簡単な説明】
【0031】
図1図1は、実施の形態に係る工程解析装置の適用場面の一例を模式的に例示する。
図2図2は、実施の形態に係る工程解析装置のハードウェア構成の一例を模式的に例示する。
図3図3は、実施の形態に係る制御装置(PLC)のハードウェア構成の一例を模式的に例示する。
図4図4は、実施の形態に係る工程解析装置のソフトウェア構成の一例を模式的に例示する。
図5図5は、実施の形態に係る工程解析装置の処理手順の一例を例示する。
図6図6は、実施の形態に係る工程解析装置の状態データを解析する際の処理手順の一例を例示する。
図7図7は、状態データを解析する過程の一例を例示する。
図8図8は、制御信号とタクト時間との関係を例示する。
図9図9は、実施の形態に係る工程解析装置の制御プログラムを解析する際の処理手順の一例を例示する。
図10図10は、制御プログラムから構築される抽象構文木の一例を例示する。
図11A図11Aは、各変数の順序付けの初期化を行った場面の一例を例示する。
図11B図11Bは、制御プログラムの解析により特定される複数の機構間の順序関係の一例を例示する。
図12図12は、複数の機構間の相関関係を示す有向グラフ情報の一例を例示する。
図13A図13Aは、実施例に係る製造ラインの動作例を示す。
図13B図13Bは、実施例に係る製造ラインの動作例を示す。
図13C図13Cは、実施例に係る製造ラインの動作例を示す。
図14図14は、実施例で得られた各特徴量の一部を示す。
図15図15は、図14の各特徴量から算出された相関係数行列を示す。
図16図16は、図15の相関係数行列から得られた無向グラフ情報を示す。
図17図17は、実施例で利用した制御プログラムの一部を示す。
図18A図18Aは、図17の制御プログラムから構築される抽象構文木を示す。
図18B図18Bは、図17の制御プログラムから構築される抽象構文木を示す。
図18C図18Cは、図17の制御プログラムから構築される抽象構文木を示す。
図18D図18Dは、図17の制御プログラムから構築される抽象構文木を示す。
図19図19は、実施例で得られた各変数の順序関係を示す。
図20図20は、実施例で得られた有向グラフ情報を示す。
図21図21は、制御プログラムを解析する処理手順の一例を示すフローチャートである。
図22図22は、制御フローグラフの一例を模式的に例示する。
図23図23は、制御フローグラフに基づいて各変数間の依存関係を特定する処理手順の一例を示すフローチャートである。
図24A図24Aは、得られる変数グループの一例を模式的に例示する。
図24B図24Bは、ペアの変数グループ内の変数間の依存関係を模式的に例示する。
図24C図24Cは、各変数間の依存関係に基づいて特定された複数の機構間の順序関係の一例を模式的に例示する。
図25図25は、変形例に係る工程解析装置のソフトウェア構成の一例を模式的に例示する。
図26図26は、機構データを解析する過程の一例を例示する。
【発明を実施するための形態】
【0032】
以下、本発明の一側面に係る実施の形態(以下、「本実施形態」とも表記する)を、図面に基づいて説明する。ただし、以下で説明する本実施形態は、あらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。つまり、本発明の実施にあたって、実施形態に応じた具体的構成が適宜採用されてもよい。なお、本実施形態において登場するデータを自然言語により説明しているが、より具体的には、コンピュータが認識可能な疑似言語、コマンド、パラメータ、マシン語等で指定される。
【0033】
§1 適用例
まず、図1を用いて、本発明が適用される場面の一例について説明する。図1は、本実施形態に係る工程解析装置1の利用場面の一例を模式的に例示する。
【0034】
図1に示されるとおり、本実施形態に係る工程解析装置1は、製造ライン3を構成する複数の機構31の状態に関する複数件の状態データ222を取得する。製造ライン3は、何らかの物を製造可能であればよく、複数の装置で構成されてもよいし、包装機等の1つの装置で構成されてもよい。また、各機構31は、製造工程の何らかの処理を実施可能であればよく、1又は複数の装置で構成されてもよいし、装置の一部で構成されてもよい。1つの機構31が装置の一部で構成される場合、複数の機構31は、1つの装置で構成されてもよい。また、同一の装置が複数の処理を実施する場合には、それぞれを別の機構31とみなしてもよい。例えば、同一の装置が第1の処理と第2の処理とを実施する場合に、第1の処理をする当該装置を第1の機構31とみなし、第2の処理をする当該装置を第2の機構31とみなしてもよい。更に、状態データ222は、製造ライン3を構成する各機構31の状態に関するあらゆる種類のデータを含んでよい。
【0035】
また、本実施形態に係る工程解析装置1は、製造ライン3の動作を制御するための制御プログラム221を取得する。制御プログラム221は、製造ライン3を構成する各機構31の動作を制御するあらゆる種類のプログラムを含んでよい。制御プログラム221は、1件のプログラムで構成されてもよいし、複数件のプログラムで構成されてもよい。なお、本実施形態では、製造ライン3の動作は、PLC(programmable logic controller)2によって制御される。そのため、工程解析装置1は、複数件の状態データ222及び制御プログラム221をPLC2から取得する。
【0036】
次に、本実施形態に係る工程解析装置1は、取得した複数件の状態データ222を統計的に解析することにより、製造ライン3内における複数の機構31間の関係の強さを特定する。関係の強さは、本発明の「接続状態」の一例である。また、本実施形態に係る工程解析装置1は、取得した制御プログラム221を解析することにより、製造ライン3内における複数の機構31の順序関係を特定する。そして、本実施形態に係る工程解析装置1は、それぞれ特定した関係の強さ及び順序関係に基づいて、製造ライン3で実行される工程における複数の機構31間の因果関係を特定する。
【0037】
以上のとおり、本実施形態では、複数の機構31間の因果関係を解析する過程において、複数の機構31間の順序関係を特定するために、制御プログラム221を利用している。制御プログラム221は各機構31の動作を規定しているため、制御プログラム221を利用することで、各機構31の順序関係をより正確に特定可能である。したがって、本実施形態によれば、製造ライン3を構成する複数の機構31間の因果関係を正確にモデル化することができる。
【0038】
§2 構成例
[ハードウェア]
<工程解析装置>
次に、図2を用いて、本実施形態に係る工程解析装置1のハードウェア構成の一例について説明する。図2は、本実施形態に係る工程解析装置1のハードウェア構成の一例を模式的に例示する。
【0039】
図2に示されるとおり、本実施形態に係る工程解析装置1は、制御部11、記憶部12、通信インタフェース13、入力装置14、出力装置15、及びドライブ16が電気的に接続されたコンピュータである。なお、図2では、通信インタフェースを「通信I/F」と記載している。
【0040】
制御部11は、ハードウェアプロセッサであるCPU(Central Processing Unit)、RAM(Random Access Memory)、ROM(Read Only Memory)等を含み、情報処理に応じて各構成要素の制御を行う。記憶部12は、例えば、ハードディスクドライブ、ソリッドステートドライブ等の補助記憶装置であり、制御部11で実行される工程解析プログラム121等を記憶する。
【0041】
工程解析プログラム121は、複数件の状態データ222及び制御プログラム221を利用して、製造ライン3の実施する製造工程における複数の機構31間の因果関係を解析する後述の処理(図5)を工程解析装置1に実行させるためのプログラムである。詳細は後述する。
【0042】
通信インタフェース13は、例えば、有線LAN(Local Area Network)モジュール、無線LANモジュール等であり、ネットワークを介した有線又は無線通信を行うためのインタフェースである。工程解析装置1は、この通信インタフェース13により、PLC2との間でネットワークを介したデータ通信を行うことができる。なお、ネットワークの種類は、例えば、インターネット、無線通信網、移動通信網、電話網、専用網等から適宜選択されてよい。
【0043】
入力装置14は、例えば、マウス、キーボード等の入力を行うための装置である。また、出力装置15は、例えば、ディスプレイ、スピーカ等の出力を行うための装置である。オペレータは、入力装置14及び出力装置15を介して、工程解析装置1を操作することができる。
【0044】
ドライブ16は、例えば、CDドライブ、DVDドライブ等であり、記憶媒体91に記憶されたプログラムを読み込むためのドライブ装置である。ドライブ16の種類は、記憶媒体91の種類に応じて適宜選択されてよい。上記工程解析プログラム121は、この記憶媒体91に記憶されていてもよい。
【0045】
記憶媒体91は、コンピュータその他装置、機械等が記録されたプログラム等の情報を読み取り可能なように、当該プログラム等の情報を、電気的、磁気的、光学的、機械的又は化学的作用によって蓄積する媒体である。工程解析装置1は、この記憶媒体91から、上記工程解析プログラム121を取得してもよい。
【0046】
ここで、図2では、記憶媒体91の一例として、CD、DVD等のディスク型の記憶媒体を例示している。しかしながら、記憶媒体91の種類は、ディスク型に限定される訳ではなく、ディスク型以外であってもよい。ディスク型以外の記憶媒体として、例えば、フラッシュメモリ等の半導体メモリを挙げることができる。
【0047】
なお、工程解析装置1の具体的なハードウェア構成に関して、実施形態に応じて、適宜、構成要素の省略、置換及び追加が可能である。例えば、制御部11は、複数のプロセッサを含んでもよい。工程解析装置1は、複数台の情報処理装置で構成されてもよい。また、工程解析装置1は、提供されるサービス専用に設計された情報処理装置の他、汎用のサーバ装置、PC(Personal Computer)等であってもよい。
【0048】
<PLC>
次に、図3を用いて、製造ライン3の動作を制御するPLC2のハードウェア構成の一例を説明する。図3は、本実施形態に係るPLC2のハードウェア構成の一例を模式的に例示する。
【0049】
図3に示されるとおり、PLC2は、制御部21、記憶部22、入出力インタフェース23、及び通信インタフェース24が電気的に接続されたコンピュータである。これにより、PLC2は、製造ライン3の各機構31の動作を制御するように構成される。なお、図3では、入出力インタフェース及び通信インタフェースをそれぞれ「入出力I/F」及び「通信I/F」と記載している。
【0050】
制御部21は、CPU、RAM、ROM等を含み、プログラム及びデータに基づいて各種情報処理を実行するように構成される。記憶部22は、例えば、RAM、ROM等で構成され、制御プログラム221、状態データ222、ログデータ223等を記憶する。制御プログラム221は、製造ライン3の動作を制御するためのプログラムである。状態データ222は、各機構31の状態に関するデータである。ログデータ223は、製造ライン3の動作のログを示すデータである。
【0051】
入出力インタフェース23は、外部装置と接続するためのインタフェースであり、接続する外部装置に応じて適宜構成される。本実施形態では、PLC2は、入出力インタフェース23を介して、製造ライン3に接続される。なお、単一の装置について異なる状態データを取得可能な場合、当該対象の単一の装置は、複数の機構31とみなされてもよいし、単一の機構31とみなされてもよい。そのため、入出力インタフェース23の数は、製造ライン3を構成する機構31の数と同じであってもよいし、製造ライン3を構成する機構31の数と相違していてもよい。
【0052】
通信インタフェース24は、例えば、有線LANモジュール、無線LANモジュール等であり、有線又は無線通信を行うためのインタフェースである。PLC2は、通信インタフェース24により、工程解析装置1との間でデータ通信を行うことができる。
【0053】
なお、PLC2の具体的なハードウェア構成に関して、実施の形態に応じて、適宜、構成要素の省略、置換、及び追加が可能である。例えば、制御部21は、複数のプロセッサを含んでもよい。記憶部22は、制御部21に含まれるRAM及びROMにより構成されてもよい。記憶部22は、ハードディスクドライブ、ソリッドステートドライブ等の補助記憶装置で構成されてもよい。また、PLC2は、提供されるサービス専用に設計された情報処理装置の他、制御する対象に応じて、汎用のデスクトップPC、タブレットPC等に置き換えられてもよい。
【0054】
[ソフトウェア構成]
次に、図4を用いて、本実施形態に係る工程解析装置1のソフトウェア構成の一例を説明する。図4は、本実施形態に係る工程解析装置1のソフトウェア構成の一例を模式的に例示する。
【0055】
工程解析装置1の制御部11は、記憶部12に記憶された工程解析プログラム121をRAMに展開する。そして、制御部11は、RAMに展開された工程解析プログラム121をCPUにより解釈及び実行して、各構成要素を制御する。これによって、図4に示されるとおり、本実施形態に係る工程解析装置1は、ソフトウェアモジュールとして、第1取得部111、第2取得部112、第1解析部113、第2解析部114、及び関係特定部115を備えるコンピュータとして構成される。
【0056】
第1取得部111は、製造ライン3を構成する複数の機構31の状態に関する複数件の状態データ222を取得する。第2取得部112は、製造ライン3の動作を制御するための制御プログラム221を取得する。第1解析部113は、取得した複数件の状態データ222を統計的に解析することにより、複数の機構31間の関係の強さを特定する。第2解析部114は、取得した制御プログラム221を解析することにより、複数の機構31の順序関係を特定する。本実施形態では、第2解析部114は、制御プログラム221を実行して得られるログデータ223を利用して、複数の機構31の順序関係を特定する。そして、関係特定部115は、それぞれ特定した関係の強さ及び順序関係に基づいて、製造ライン3で実施される工程における複数の機構31間の因果関係を特定する。
【0057】
工程解析装置1の各ソフトウェアモジュールに関しては後述する動作例で詳細に説明する。なお、本実施形態では、工程解析装置1の各ソフトウェアモジュールがいずれも汎用のCPUにより実現される例について説明している。しかしながら、以上のソフトウェアモジュールの一部又は全部が、1又は複数の専用のハードウェアプロセッサにより実現されてもよい。また、工程解析装置1のソフトウェア構成に関して、実施形態に応じて、適宜、ソフトウェアモジュールの省略、置換及び追加が行われてもよい。
【0058】
§3 動作例
次に、図5を用いて、工程解析装置1の動作例を説明する。図5は、工程解析装置1の処理手順の一例を例示する。なお、以下で説明する工程解析装置1の処理手順は、本発明の「工程解析方法」に相当する。ただし、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてもよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
【0059】
[ステップS101]
まず、ステップS101では、制御部11は、第1取得部111として動作し、各機構31の状態に関する複数件の状態データ222をPLC2から取得する。各機構31は、例えば、コンベア、ロボットアーム、サーボモータ、シリンダ(成形機等)、吸着パッド、カッター装置、シール装置等の装置又はその装置の一部で構成されてよい。また、各機構31は、例えば、印刷機、実装機、リフロー炉、基板検査装置等の複合装置であってもよい。更に、各機構31は、上記のような何らかの物理的な動作を伴う装置の他に、例えば、各種センサにより何らかの情報を検知する装置、各種センサからデータを取得する装置、取得したデータから何らかの情報を検知する装置、取得したデータを情報処理する装置等の内部処理を行う装置を含んでもよい。具体例として、コンベアを流れる対象物に付与されたマークを検知する光学センサを備える製造ラインにおいて、当該光学センサ及び光学センサにより検知した情報を利用する装置が各機構31として取り扱われてよい。また、各件の状態データ222は、例えば、トルク、速度、加速度、温度、電流、電圧、空圧、圧力、流量、位置、寸法(高さ、長さ、幅)及び面積の少なくともいずれかを示すデータであってよい。このような状態データ222は、公知のセンサ、カメラ等の計測装置によって得ることができる。例えば、流量は、フロートセンサにより得ることができる。また、位置、寸法、及び面積は、画像センサにより得ることができる。
【0060】
なお、状態データ222は、1又は複数の計測装置から得られるデータで構成されてもよい。また、状態データ222は、計測装置から得られるデータそのままであってもよいし、画像データから取得される位置データ等のように計測装置から得られたデータに何らかの処理を適用することで取得可能なデータであってもよい。各件の状態データ222は、各機構31に対応して取得される。
【0061】
各計測装置は、製造ライン3の各機構31を監視可能に適宜配置される。PLC2は、製造ライン3を稼働させて、各計測装置から各件の状態データ222を収集する。制御部11は、PLC2から、製造ライン3を正常に稼働させたときの各機構31の状態に関する状態データ222を取得する。これにより、制御部11は、複数件の状態データ222を取得することができる。複数件の状態データ222の取得が完了すると、制御部11は、次のステップS102に処理を進める。
【0062】
[ステップS102]
次のステップS102では、制御部11は、第2取得部112として動作し、制御プログラム221をPLC2から取得する。制御プログラム221は、PLC2で実行可能なように、例えば、ラダー・ダイアグラム言語、ファンクション・ブロック・ダイアグラム言語、ストラクチャード・テキスト言語、インストラクション・リスト言語、及びシーケンシャル・ファンクション・チャート言語、C言語の少なくともいずれかを利用して記述されていてもよい。制御プログラム221の取得が完了すると、制御部11は、次のステップS103に処理を進める。なお、本ステップS102は、上記ステップS101と並列に実行されてもよいし、上記ステップS101の前に実行されてもよい。
【0063】
[ステップS103]
次のステップS103では、制御部11は、第1解析部113として動作し、ステップS101で取得した複数件の状態データ222を統計的に解析することにより、製造ライン3内における複数の機構31間の関係の強さを特定する。複数件の状態データ222の解析処理が完了すると、制御部11は、次のステップS104に処理を進める。なお、本ステップS103は、上記ステップS101の後であれば、いかなるタイミングに実行されてもよい。例えば、本ステップS103は、上記ステップS102の前に実行されてもよい。
【0064】
<状態データの解析処理>
ここで、図6及び図7を更に用いて、複数件の状態データ222を統計的に解析する処理について詳細に説明する。図6は、状態データ222を解析する処理の手順の一例を例示する。図7は、図6により示される手順により状態データ222を解析する過程の一例を模式的に例示する。以下の説明では、説明の便宜のため、製造ライン3は、複数の機構31として、4つの機構(例えば、4つのサーボモータ)F1〜F4を備えており、上記ステップS101では、制御部11は、各機構F1〜F4の状態データ222を取得したものと仮定する。
【0065】
(ステップS1301)
まず、ステップS1301では、制御部11は、ステップS101で取得した各件の状態データ222から特徴量2221を算出する。特徴量2221の種類は、特に限定されなくてもよく、実施の形態に応じて適宜選択されてもよい。また、特徴量2221を算出する方法は、実施の形態に応じて適宜決定可能である。
【0066】
具体例として、本実施形態では、制御部11は、次のような方法で、状態データ222から特徴量2221を算出する。まず、制御部11は、特徴量2221を算出する処理範囲を規定するため、取得した各件の状態データ222をフレーム毎に分割する。各フレームの長さは、実施の形態に応じて適宜設定されてよい。
【0067】
制御部11は、例えば、各件の状態データ222を一定時間長のフレーム毎に分割してもよい。ただし、製造ライン3は必ずしも一定時間間隔で動作しているとは限らない。そのため、各件の状態データ222を一定時間長のフレーム毎に分割すると、各フレームに反映される各機構31の動作がずれてしまう可能性がある。
【0068】
そこで、制御部11は、状態データ222をタクト時間毎にフレーム分割してもよい。タクト時間は、製造ライン3が製品を所定個数分生産するのにかかる時間である。このタクト時間は、製造ライン3を制御する信号、例えば、PLC2が製造ライン3の各機構31の動作を制御する制御信号に基づいて特定することができる。
【0069】
図8を用いて、制御信号とタクト時間との関係について説明する。図8は、制御信号とタクト時間との関係を模式的に例示する。図8に示されるとおり、製品の生産を繰り返す製造ライン3に対する制御信号は、所定個数分の製品の生産に応じて「on」と「off」とが周期的に表れるパルス信号になっている。
【0070】
そのため、制御部11は、この制御信号をPLC2から取得し、取得した制御信号の立ち上がり(「on」)から次の立ち上がり(「on」)までの時間をタクト時間とすることができる。そして、制御部11は、図8に例示されるように、タクト時間毎に状態データ222をフレームに分割することができる。
【0071】
次に、制御部11は、状態データ222の各フレームから特徴量2221の値を算出する。状態データ222が計測データ等のような連続値データである場合には、制御部11は、例えば、フレーム内の振幅、最大値、最小値、平均値、分散値、標準偏差、瞬時値(1点サンプル)等を特徴量2221として算出してもよい。また、状態データ222が検出データ等のような離散値データである場合には、制御部11は、例えば、各フレーム内の「on」時間、「off」時間、Duty比、「on」回数、「off」回数等を特徴量2221として算出してもよい。これにより、各特徴量2221の算出が完了すると、制御部11は、次のステップS1302に処理を進める。
【0072】
(ステップS1302)
図6及び図7に戻り、次のステップS1302では、制御部11は、各特徴量2221間の相関係数又は偏相関係数を算出する。相関係数は、以下の数1の計算式により算出することができる。また、偏相関係数は、以下の数2の計算式により算出することができる。
【0073】
【数1】
なお、rijは、行列2222のi行目j列目の要素を示す。xi及びxjは、各件の状態データ222から算出された特徴量2221を示すデータに対応する。Xi及びXjはそれぞれ、xi及びxjの標本平均を示す。nは、相関の計算に利用する各特徴量2221の数を示す。
【0074】
【数2】
なお、行列R(rij)の逆行列をR-1(rij)と表現し、rijは行列2222の逆行列のi行目j列目の要素を示す。
【0075】
これにより、制御部11は、相関係数又は偏相関係数を各要素とする行列2222を得ることができる。各特徴量2221間の相関係数及び偏相関係数は、対応する機構31間の関係の強さを示す。すなわち、行列2222の各要素により、対応する機構31間の関係の強さが特定される。各特徴量2221間の相関係数又は偏相関係数の算出が完了すると、制御部11は、次のステップS1303に処理を進める。
【0076】
(ステップS1303)
次のステップS1303では、制御部11は、各特徴量2221間の相関係数又は偏相関係数に基づいて、対応する機構31間の関係の強さを示す無向グラフ情報2223を構築する。
【0077】
例えば、制御部11は、各機構31に対応するノードを作成する。そして、2つの機構31間に対して算出した相関係数又は偏相関係数の値が閾値以上である場合に、制御部11は、対応する両ノード間をエッジで連結する。一方、2つの機構31間に対して算出した相関係数又は偏相関係数の値が閾値未満である場合には、制御部11は、対応する両ノード間をエッジで連結しない。なお、閾値は、工程解析プログラム121内で規定された固定値であってもよいし、オペレータ等により変更可能な設定値であってもよい。また、エッジの太さは、対応する相関係数又は偏相関係数の値の大きさに対応して決定されてもよい。
【0078】
これにより、図7で例示するような無向グラフ情報2223を作成することができる。図7の例では、4つの機構F1〜F4に対応する4つのノードが作成されている。そして、機構F1及びF2のノード間、機構F1及びF3のノード間、機構F2及びF3のノード間、並びに機構F3及びF4のノード間にそれぞれエッジが形成されている。また、機構F1及びF3の間並びに機構F3及びF4の間の相関が他の機構間の相関よりも大きいことに対応して、機構F1及びF3のノード間並びに機構F3及びF4のノード間のエッジが他のエッジに比べて太く形成されている。以上により、複数の機構31間の関係の強さを示す無向グラフ情報2223の構築が完了すると、本実施形態に係る状態データ222の解析処理は完了し、制御部11は、次のステップS104に処理を進める。
【0079】
なお、図7の例では、無向グラフ情報2223は、形成された無向グラフを画像により表現している。しかしながら、無向グラフ情報2223の出力形式は、画像に限定されなくてもよく、テキスト等により表現されてもよい。また、上記の例では、相関係数又は偏相関係数と閾値との比較により、関係の弱いノード(機構31)間にエッジを形成しないようにしている。しかしながら、関係の弱いノード間のエッジを除去する方法は、このような例に限られなくてもよい。例えば、全てのノードをエッジで連結したグラフを形成した後、制御部11は、逸脱度を表わす適合度指標(GFI、SRMR等)が閾値を超えないように、相関係数又は偏相関係数の小さいエッジから順に、形成したグラフのエッジを削除してもよい。
【0080】
[ステップS104]
図5に戻り、次のステップS104では、制御部11は、第2解析部114として動作し、ステップS102で取得した制御プログラム221を解析することにより、製造ライン3内における複数の機構31の順序関係を特定する。本実施形態では、制御部11は、制御プログラム221を利用して製造ライン3を稼働させることで得られるログデータ223に基づいて、複数の機構31の順序関係を特定する。制御プログラム221の解析処理が完了すると、制御部11は、次のステップS105に処理を進める。なお、本ステップS104は、上記ステップS102の後であれば、いかなるタイミングに実行されてもよい。例えば、上記ステップS102が上記ステップS101よりも先に実行される場合には、本ステップS104は、上記ステップS101の前に実行されてもよい。
【0081】
<制御プログラムの解析処理>
ここで、図9を更に用いて、制御プログラム221を解析する処理について詳細に説明する。図9は、制御プログラム221を解析する処理の手順の一例を例示する。以下の説明では、説明の便宜のため、上記と同様に、製造ライン3は、複数の機構31として、4つの機構F1〜F4を備えており、上記ステップS102では、制御部11は、4つの機構F1〜F4に対応する変数v1〜v4が使用された制御プログラム221を取得したものと仮定する。
【0082】
(ステップS1401)
まず、ステップS1401では、制御部11は、取得した制御プログラム221の構文解析を行い、当該制御プログラム221から抽象構文木を構築する。抽象構文木の構築には、トップダウン構文解析又はボトムアップ構文解析による公知の構文解析方法が用いられてもよい。例えば、抽象構文木の構築には、特定の形式文法に従った文字列を扱う構文解析器が用いられてもよい。抽象構文木の構築が完了すると、制御部11は、次のステップS1402に処理を進める。
【0083】
図10は、制御プログラム221内の「if(a>0)[v1=a;]else[v2=-a;]」という構文から得られる抽象構文木2211を例示する。図10に例示するとおり、抽象構文木は、プログラムの意味を解釈するために、当該プログラムの構造を木構造で表現したデータ構造である。
【0084】
具体的には、制御部11は、プログラムに使用されているトークン(字句)のうち、当該プログラムの意味の解釈に不要な括弧等のトークンを省略し、当該プログラムの意味の解釈に関係あるトークンを抽出する。そして、制御部11は、条件分岐等の演算子を節点に対応付けて、変数等のオペランドを葉に対応付ける。制御部11は、このように制御プログラム221の構文解析を行うことにより、図10に例示する抽象構文木を構築することができる。なお、このように構成される抽象構文木は、変数、演算子、及びノード間の関係(演算と被演算との関係等)を表わす。この抽象構文木の構成について、その示す内容が変わらない範囲で適宜表記の修正、変更、省略等がなされてよい。
【0085】
(ステップS1402)
次のステップS1402では、制御部11は、ステップS1401により構築した抽象構文木から各機構31に関する変数(v1〜v4)と条件分岐及び代入演算を含む演算子とを抽出する。例えば、図10に示す抽象構文木2211が得られた場合、制御部11は、当該抽象構文木2211から(「if」、「v1」、「=」、「a」、「v2」、「=」、及び「-a」)を抽出する。当該抽出が完了すると、制御部11は、次のステップS1403に処理を進める。
【0086】
(ステップS1403及びステップS1404)
次のステップS1403では、制御部11は、ステップS1402で抽出した変数及び演算子を順番に並べて、因果関係を特定する対象となる各機構31に対応する変数(v1〜v4)に関連する部分に実行順序を監視する対象を限定する。上記の例では、制御部11は、(「if」、「v1」、「=」、「a」、「v2」、「=」、及び「-a」)から(「if」、「v1」、及び「v2」)を更に抽出する。
【0087】
そして、次のステップS1404では、条件分岐をランダムに選択して、制御プログラム221の実行を試行することで、限定した各変数の順序付けの初期化を行う。具体的には、制御部11は、当該制御プログラム221の実行の試行において、限定した各変数の利用される順序を監視することで、当該各変数の順序付けの初期化を行うことができる。
【0088】
図11Aは、当該初期化の一例を例示する。図11Aのグラフ2212は、初期化の結果として、以下の(1)〜(5)の順序関係を示す。
(1)変数「v1」〜「v4」のうち、変数「v1」が最初に利用される。
(2)変数「v1」の次には、0.5の確率で変数「v2」が利用され、0.5の確率で変数「v3」が利用される。
(3)変数「v2」の次には、1の確率で変数「v3」が利用される。
(4)変数「v3」の次には、1の確率で変数「v4」が利用される。
(5)変数「v1」〜「v4」のうち、変数「v4」が最後に利用される。
このような初期化が完了すると、制御部11は、次のステップS1405に処理を進める。
【0089】
(ステップS1405)
次のステップS1405では、制御部11は、制御プログラム221を利用して製造ライン3を正常に稼働させたときの実行結果を示すログデータ223をPLC2から取得する。PLC2は、例えば、上記状態データ222を収集する際に、併せて制御プログラム221の実行結果を示すログデータ223を作成してもよい。この場合、ログデータ223には、タイムスタンプ、利用された変数の値等が記録される。また、例えば、制御プログラム221には、各コード行が実行される頻度、実行されたコード行、コードの各セクションが消費する計算時間等の情報を収集するためのデバッグモードが設けられてもよい。この場合、PLC2は、制御プログラム221をデバッグモードで実行することで、各情報を記録したログデータ223を作成することができる。制御部11は、このように作成されたログデータ223をPLC2から取得してもよい。ログデータ223の取得が完了すると、制御部11は、次のステップS1406に処理を進める。
【0090】
(ステップS1406)
次のステップS1406では、制御部11は、ステップS1405で取得したログデータ223を参照して、条件分岐の実行結果に基づいた、上記各変数(v1〜v4)の順番付けを行うことで、製造ライン3内における各機構31の順序関係を特定する。
【0091】
図11Bは、当該順序付けの結果の一例を例示する。図11Bのグラフ2213は、ログデータ223を利用して順番付けを行った結果として、以下の(A)〜(E)の順序関係を示す。
(A)変数「v1」〜「v4」のうち、変数「v1」が最初に利用される。
(B)変数「v1」の次には、0.01の確率で変数「v2」が利用され、0.99の確率で変数「v3」が利用される。
(C)変数「v2」の次には、1の確率で変数「v3」が利用される。
(D)変数「v3」の次には、1の確率で変数「v4」が利用される。
(E)変数「v1」〜「v4」のうち、変数「v4」が最後に利用される。
以上により、複数の機構31の順序関係の特定が完了すると、本実施形態に係る制御プログラム221の解析処理は完了し、制御部11は、次のステップS105に処理を進める。
【0092】
[ステップS105]
図5に戻り、次のステップS105では、制御部11は、関係特定部115として動作する。すなわち、制御部11は、ステップS103及びS104それぞれにより特定した製造ライン3内における複数の機構31間の関係の強さ及び順序関係に基づいて、当該製造ライン3で実施される工程における複数の機構31間の因果関係を特定する。
【0093】
本実施形態では、制御部11は、上記ステップS1303で構築した無向グラフ情報2223に上記ステップS1406で特定した各機構31の順序関係を適用することにより、各機構31間の因果関係を示す有向グラフ情報を作成する。このとき、制御部11は、各機構31の順序関係において発生する確率が閾値よりも低い順序(遷移)を特定し、無向グラフ情報2223を構成するエッジから特定した順序に対応するエッジを削除してもよい。なお、閾値は、工程解析プログラム121内で規定された固定値であってもよいし、オペレータ等により変更可能な設定値であってもよい。
【0094】
図12は、作成される有向グラフ情報の一例を例示する。図12の有向グラフ122は、以下の(a)〜(d)の因果関係を示す。
(a)機構「F1」〜「F4」のうち、機構「F1」又は「F2」が最初に利用される。
(b)機構「F1」及び「F2」の次には、機構「F3」が利用される。
(c)機構「F3」の次には、機構「F4」が利用される。
(d)機構「F1」〜「F4」のうち、機構「F4」が最後に利用される。
なお、図12の例では、変数「v1」から「v2」への順序の発生確率が低いことに対応して、無向グラフ情報2223では存在した機構「F1」及び「F2」間のエッジが削除されている。また、有向グラフ122の各エッジの太さは、無向グラフ情報2223の各エッジの太さに対応して設定されている。以上により、有向グラフ情報の作成が完了すると、制御部11は、次のステップS106に処理を進める。
【0095】
なお、図12の例では、有向グラフ情報は、有向グラフ(有向グラフ122)を画像により表現している。しかしながら、有向グラフ情報の出力形式は、画像に限定されなくてもよく、テキスト等により表現されてもよい。また、上記の例では、ノード(機構31)間の関係の強さをエッジの太さで表現している。しかしながら、ノード間の関係の強さを表現する方法は、このような例に限定されなくてもよい。各エッジの近傍に数字を付すことにより、各ノード間の関係の強さを表現してもよい。
【0096】
[ステップS106]
次のステップS106では、制御部11は、ステップS105で作成した有向グラフ情報を出力する。例えば、制御部11は、ディスプレイ等の出力装置15に作成した有向グラフを画像形式で出力する。以上により、制御部11は、本動作例に係る処理を終了する。
【0097】
[特徴]
以上のように、本実施形態では、上記ステップS104により、制御プログラム221を解析することで、製造ライン3内における複数の機構31間の順序関係を特定する。そして、上記ステップS103により状態データ222から導出した関係の強さを示す無向グラフ情報に、制御プログラム221から特定した順序関係を適用することで、製造ライン3で実施される工程における複数の機構31間の因果関係を示す有向グラフ情報を作成する。ここで、制御プログラム221は、各機構31の動作を規定する。そのため、複数の機構31間の因果関係を解析する過程で、制御プログラム221を利用することで、当該複数の機構31間の順序関係を適切に特定することができる。したがって、本実施形態によれば、製造ライン3を構成する複数の機構31間の因果関係を正確にモデル化することができる。
【0098】
また、本実施形態では、ステップS106により、製造ラインを構成する複数の機構間の因果関係を解析した結果として、図12(及び後述する図20)に例示される有向グラフ情報を出力する。この出力される有向グラフ情報は、各機構間の因果関係を端的に示す。そのため、本実施形態によれば、出力される有向グラフ情報によって、非熟練の保全員でも、製造ラインを構成する複数の機構間の因果関係を容易に把握することができるようになる。
【0099】
[実施例]
次に、上記ステップS101〜S106の処理により、各機構31間の因果関係を示す有向グラフ情報を作成する過程の実施例を説明する。ただし、本発明は、以下の実施例に限定される訳ではない。
【0100】
実施例として、以下の条件を有する製造ラインの各機構間の因果関係を示す有向グラフ情報を作成した。
<各種条件>
・製造ライン:基板上の実装位置に2つの部品を固定する製造装置
・機構(6つ):
− 基板(マーカ)のX軸の位置を調整する第1機構
− 基板(マーカ)のY軸の位置を調整する第2機構
− 第1部品のA軸の位置を調整する第3機構
− 第1部品のB軸の位置を調整する第4機構
− 第2部品のC軸の位置を調整する第5機構
− 第2部品のD軸の位置を調整する第6機構
・制御プログラムのプログラム言語:ST言語
・計測装置:カメラ
・状態データ:各機構によって調整された各軸の位置
・特徴量:瞬時値
・工程解析装置:汎用PC
なお、説明の便宜のため、第1〜第6機構をそれぞれ、「マーカ位置X軸」、「マーカ位置Y軸」、「第1部品位置A軸」、「第1部品位置B軸」、「第2部品位置C軸」、及び「第2部品位置D軸」とも記載する。「X軸」、「A軸」、及び「C軸」はカメラにより得られる画像の縦軸に対応し、「Y軸」、「B軸」、及び「D軸」は当該画像の横軸に対応する。
【0101】
ここで、図13A図13Cを用いて、実施例に係る製造ラインを構成する製造装置について説明する。図13A図13Cは、当該製造装置の構成を模式的に例示する。図13A図13Cに示されるとおり、実施例に係る製造装置は、基板52を運搬するコンベア51と、第1部品53を運搬する第1ロボットアーム531と、第2部品54を運搬する第2ロボットアーム541と、作業場所を撮影するカメラ55と、を備えている。第1機構及び第2機構によってコンベア51上の基板52の位置が調節され、第3機構及び第4機構によって第1ロボットアーム531の把持する第1部品53の位置が調節され、第5機構及び第6機構によって第2ロボットアーム541の把持する第2部品54の位置が調節される。
【0102】
製造装置は、コンベア51によって基板52を所定の位置に運搬する(図13A)。基板52の面にはマーカ521が設けられており、このマーカ521により位置決めがなされる。次に、製造装置は、第1ロボットアーム531によって、基板52の面に設けられた第1実装位置522に第1部品53を固定する(図13B)。そして、製造装置は、第2ロボットアーム541によって、基板52の面に設けられた第2実装位置523に第2部品54を固定する(図13C)。これによって、基板52の上面に2つの部品(53、54)を実装した製品を製造することができる。
【0103】
本実施例では、状態データの解析処理を実施するため、1000個の製品を断続的に製造し、その過程をカメラ55で撮影した。なお、製品1個あたりにかかった製造時間は1分程度であった。そして、得られた画像データ551内において、基板52(マーカ521)のX軸及びY軸、第1部品53のA軸及びB軸、並びに第2部品のC軸及びにD軸の位置(座標)を特定することで、各機構に対応する特徴量を得た。図14は、上記により得られた各特徴量の一部を示す。
【0104】
続いて、上記数1に示す数式に図14に示される各特徴量を適用することで、各特徴量間の相関を示す相関係数行列を算出した。図15は、算出された相関係数行列を示す。この相関係数行列の各要素のうち相関係数の値が閾値0.2以上の要素を抽出することで、各機構間の関係の強さを示す無向グラフ情報を得た。図16は、これにより得られた無向グラフ情報を示す。
【0105】
また、制御プログラムの解析処理を実施するため、上記製造装置の利用する制御プログラムを得た。図17は、これにより得られた制御プログラムの一部を示す。次に、公知のソフトウェア(名称:Sysmac(登録商標) Studio)を利用して、この制御プログラムの構文解析を実施することで、抽象構文木の構築を行った。図18A図18Dは、これにより構築された抽象構文木の一部を示す。図18A図18Dに示される各抽象構文木は、図17の符号561〜564の各構文に対応する。この抽象構文木に上記ステップS1402〜S1404の処理を適用し、各機構に対応する各変数の順序付けの初期化を行った。更に、上記の製造工程で得られたログデータを利用することで、正常に稼働した際の各機構の順序関係を特定した。図19は、これにより特定した各機構の順序関係を示す。なお、図19のエッジに付された数字はノード間の遷移が発生する確率を示し、矢印の向きは、発生する遷移の向きを示す。
【0106】
そして、状態データの解析で得られた無向グラフ情報(図16)に、制御プログラムの解析で特定した順序関係(図19)を適用することで、各機構の因果関係を示す有向グラフ情報を得た。有向グラフ情報を形成する際には、図19の示す順序関係において発生する確率が閾値0.1よりも低い遷移に対応するエッジを削除した。図20は、これにより得られた有向グラフ情報を示す。図20の有向グラフ情報は、各軸において「基板(マーカ)の移動」、「第1部品の実装」、及び「第2部品の実装」の順で製造装置が動作するという因果関係を示している。この因果関係は、製造装置の実際の動作と一致している。そのため、上記実施形態に係る方法によれば、製造ラインを構成する複数の機構間の因果関係を正確にモデル化できることが分かった。
【0107】
§4 変形例
以上、本発明の実施の形態を詳細に説明してきたが、前述までの説明はあらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。例えば、以下のような変更が可能である。なお、以下では、上記実施形態と同様の構成要素に関しては同様の符号を用い、上記実施形態と同様の点については、適宜説明を省略した。以下の変形例は適宜組み合わせ可能である。
【0108】
<4.1>
上記実施形態では、工程解析装置1は、製造ライン3を制御する制御装置であるPLC2から制御プログラム221を取得している。しかしながら、解析対象となる制御プログラムの取得先は、その制御プログラムを利用する制御装置に限られなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、NAS(Network Attached Storage)等の外部の記憶装置に制御プログラムが保存されている場合、工程解析装置1は、当該外部の記憶装置から制御プログラムを取得してもよい。また、例えば、CD、半導体メモリ等の記憶媒体に制御プログラムが保存されている場合、工程解析装置1は、当該記憶媒体から制御プログラムを取得してもよい。特に、上記実施形態では、抽象構文木を構築することで、制御プログラムの解析を行っている。この抽象構文木は、プログラム言語で記述されたプログラムをコンパイルする過程で作成可能である。そのため、工程解析装置1は、コンパイル前のプログラムを制御プログラム221として取得するのが好ましい。コンパイル前のプログラムを制御装置が保持していない場合には、工程解析装置1は、制御装置で実行される制御プログラムに対応するコンパイル前のプログラムを、制御装置以外の外部装置、記憶媒体等から取得してもよい。
【0109】
<4.2>
上記実施形態では、制御プログラム221は、PLC2で実行可能なように、例えば、ラダー・ダイアグラム言語、ファンクション・ブロック・ダイアグラム言語、ストラクチャード・テキスト言語、インストラクション・リスト言語、及びシーケンシャル・ファンクション・チャート言語、C言語の少なくともいずれかを利用して記述される。しかしながら、解析対象となる制御プログラムの種類は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、解析対象となる制御プログラムは、Java(登録商標)、Python、C++、Ruby、Lua等が利用されて記述されてよい。
【0110】
<4.3>
上記実施形態では、工程解析装置1は、製造ライン3を制御するPLC2から状態データ222を取得している。しかしながら、解析対象となる状態データの取得先は、製造ラインを制御する制御装置に限られなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、NAS等の外部の記憶装置に状態データが保存されている場合、工程解析装置1は、当該外部の記憶装置から状態データを取得してもよい。また、例えば、CD、半導体メモリ等の記憶媒体に状態データが保存されている場合、工程解析装置1は、当該記憶媒体から状態データを取得してもよい。更に、例えば、工程解析装置1は、状態データを各計測装置から直接取得してもよい。
【0111】
<4.4>
上記実施形態では、工程解析装置1は、複数の機構31間の因果関係を解析した結果を有向グラフ情報として出力している。しかしながら、解析結果の出力形式は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。因果関係の解析結果は、例えば、遷移確率行列、テキスト等で表現されてもよい。
【0112】
また、上記実施形態では、ステップS1303で構築した無向グラフ情報を利用して、有向グラフ情報を作成している。しかしながら、有向グラフ情報を作成する方法は、このような例に限定されなくてもよい。例えば、工程解析装置1は、上記ステップS1303を省略して、相関係数又は偏相関係数の行列を利用して、有向グラフ情報を作成してもよい。
【0113】
<4.5>
上記実施形態では、工程解析装置1とPLC2とは別々のコンピュータにより構成されている。しかしながら、工程解析装置1とPLC2とは1台のコンピュータにより構成されてもよい。すなわち、1台のコンピュータが、工程解析装置及び製造ラインの制御装置の両方の機能を備えてもよい。
【0114】
<4.6>
上記実施形態では、工程解析装置1は、状態データ222を解析する過程において、相関係数又は偏相関係数を算出する前に、各件の状態データ222から特徴量を算出している。しかしながら、状態データ222を統計的に解析する方法は、このような例に限定されなくてもよい。例えば、工程解析装置1は、各件の状態データ222をそのまま利用して相関係数又は偏相関係数を算出してもよい。
【0115】
また、上記実施形態では、各機構31間の関係の強さを示すために、相関係数又は偏相関係数を用いている。しかしながら、各機構間の関係の強さを示す指標は、相関係数又は偏相関係数に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、各機構間の関係の強さを示す指標として、MIC(Maximum Information Coefficient)、HSIC(Hilbert-Schmidt Independence Criteria)、相互情報量等が用いられてもよい。
【0116】
<4.7>
上記実施形態では、工程解析装置1は、抽象構文木を利用して、制御プログラム221の解析を行っている。しかしながら、制御プログラムを解析する方法は、このような例に限定されなくてもよく、実施の形態に応じて適宜選択されてよい。例えば、工程解析装置1は、コンパイルの過程で形成される中間言語のコードを利用して、制御プログラムを解析してもよい。
【0117】
また、上記実施形態では、抽象構文木から変数と条件分岐とを抽出した後に、制御プログラム221を利用して製造ライン3を稼働させることで得られるログデータ223を参照して、条件分岐の実行結果に基づいた各変数の順番付けを行うことで、複数の機構31の順序関係を特定している。しかしながら、ログデータ223に基づいて、複数の機構31の順序関係を特定する方法は、このような例に限定されなくてもよい。上記工程解析装置1は、ログデータ223を適宜解析することで、複数の機構31の順序関係を特定してもよい。
【0118】
<4.8>
上記実施形態では、工程解析装置1は、ステップS103において、複数の機構31間の接続状態として、複数の機構31間の関係の強さを特定している。しかしながら、接続状態の表現方法は、このような例に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。例えば、複数の機構31間の接続状態は、関係の有無、関係の変化等によって表現されてよい。関係の変化は、例えば、関係の強さ又は有無で表現された関係性の時系列での差分(変化量)で示されてよい。
【0119】
<4.9>
上記実施形態では、工程解析装置1は、ステップS103において、相関係数又は偏相関係数を算出することをもって、複数件の状態データ222を統計的に解析している。しかしながら、複数件の状態データ222を統計的に解析する方法は、このような例に限定されなくてもよく、実施の形態に応じて適宜決定されてよい。制御部11は、上記ステップS103において、例えば、GLASSO(Graphical LASSO)、共分散選択法等により、複数件の状態データ222を統計的に解析してもよい。これにより、制御部11は、複数の機構31間の接続状態を示す無向グラフを得ることができる。また、制御部11は、上記ステップS103において、例えば、SGS(Spirtes,Glymour,and Scheines)、PC(Peter & Clark)、FCI(Fast Causal Inference)、LiNGAM(Liner Non-Gaussian Acyclic Model)、ベイジアンネットワーク等により、複数件の状態データ222を統計的に解析してもよい。これにより、制御部11は、複数の機構31間の接続状態を示す有向グラフを得ることができる。
【0120】
<4.10>
上記実施形態では、工程解析装置1は、ステップS103において、複数件の状態データ222を統計的に解析している。しかしながら、複数件の状態データ222を解析する方法は、このような統計的手法に限られなくてもよく、制御部11は、ステップS103において、統計的手法以外の方法により、複数件の状態データ222を解析してもよい。
【0121】
例えば、制御部11は、各機構31より得られた各件の状態データ222から特徴量を算出し、算出した各特徴量の変化に基づいて、複数の機構31間の接続状態を特定してもよい。算出する特徴量の種類は、上記ステップS1301と同様であってよい。各特徴量の変化に基づいて接続状態を特定する方法の一例として、関係の有する機構31間で故障等の異常が生じると、その関係の有する各機構31から得られる特徴量は大きく変化する。そこで、制御部11は、算出した各特徴量の変化量を所定の閾値と比較して、閾値以上の変化の生じている特徴量を抽出してもよい。そして、制御部11は、抽出した特徴量に対応する機構31間は関係を有しているとして、接続状態を特定してもよい。
【0122】
また、例えば、制御部11は、決定木、ロジスティクス回帰、ベイジアンネットワーク、ニューラルネットワーク等の機械学習により得られる学習モデルを利用して、複数件の状態データ222の解析を行ってもよい。学習モデルを利用する手法の一例として、制御部11は、状態データに基づいて異常が生じているか否かを判定する能力を習得するための機械学習を行った学習済みの学習モデルを取得してもよい。そして、制御部11は、各件の状態データ222を取得した学習モデルに入力し、対応する機構31に異常が生じているか否かを示す出力を学習済みの学習モデルから取得してもよい。これにより、制御部11は、異常の生じていると判定された機構31同士は関係を有しているとみなすことで、複数の機構31間の接続状態を特定することができる。
【0123】
<4.11>
上記実施形態では、工程解析装置1は、上記ステップS104において、ログデータ223を利用して、複数の機構31間の順序関係を特定している。しかしながら、複数の機構31間の順序関係を特定する方法は、このようなログデータ223を利用した方法に限られなくてもよい。工程解析装置1は、ログデータ223を利用せずに、複数の機構31間の順序関係を特定してもよい。
【0124】
図21は、本変形例における制御プログラム221を解析する処理手順の一例を示すフローチャートである。例えば、制御部11は、第2解析部114として動作し、上記ステップS104に代えて、図21により示される処理手順により、複数の機構31間の順序関係を特定してもよい。
【0125】
(ステップS1411)
ステップS1411では、制御部11は、取得した制御プログラム221の構文解析を行うことで、制御プログラム221から抽象構文木を構築する。抽象構文木の構築は、上記ステップS1401と同様に行われてよい。抽象構文木の構築が完了すると、制御部11は、次のステップS1412に処理を進める。
【0126】
(ステップS1412)
ステップS1412では、制御部11は、ステップS1411により構築した抽象構文木から各機構31に関する変数を抽出する。変数の抽出は、上記ステップS1402と同様に行われてよい。各機構31に関する変数の抽出が完了すると、制御部11は、次のステップS1413に処理を進める。
【0127】
(ステップS1413)
ステップS1413では、制御部11は、ステップS1411により構築した抽象構文木から制御フローグラフを生成する。制御フローグラフは、プログラムを実行したときに通過する可能性のある全ての経路をグラフにより示すものである。
【0128】
ここで、図22を更に用いて、制御フローグラフについて説明する。図22は、プログラムの一例(プログラム501)とそのプログラムの一例から導出される制御フローグラフの一例(制御フローグラフ502)を模式的に例示する。図22の例では、プログラム501は、処理L1〜L6を含んでいる。このプログラム501から構築される抽象構文木を利用して、プログラム501の依存性解析を行うことで、図22に示される制御フローグラフ502を得ることができる。
【0129】
制御フローグラフ502は、プログラム501の処理の流れ(実線の矢印)、データの依存性(点線の矢印)、及び制御の依存性(一点鎖線の矢印)を示している。処理の流れは、プログラム内の処理が実行される順序を示す。例えば、プログラム501では、処理L1の後に、処理L2が実行される。そのため、制御フローグラフ502において、処理L1と処理L2とは、処理の流れを示す矢印で連結されている。また、処理L4は分岐構文であり、処理L4の実行結果に基づいて、次に実行する処理が処理L5又は処理L6のいずれかに決定される。そのため、処理L4は、処理L5及び処理L6と処理の流れを示す矢印で連結されている。
【0130】
データの依存性は、影響を与える処理の関係を示す。例えば、プログラム501では、処理L2が、処理L4及び処理L5の結果に影響を与える。そのため、制御フローグラフ502において、処理L2は、処理L4及び処理L5とデータの依存性を示す矢印で連結されている。また、制御の依存性は、条件分岐等により実行の可否を決定する処理の関係を示す。例えば、プログラム501では、処理L4の実行結果に基づいて、処理L5の実行の可否が決定される。そのため、制御フローグラフ502において、処理L4は、処理L5と制御の依存性を示す矢印で連結されている。
【0131】
このように制御フローグラフによれば、制御プログラム221における変数の演算を含む処理同士の依存関係を特定することができる。制御部11は、抽象構文木を利用して、制御プログラム221の依存性解析を行うことで、制御フローグラフを生成する。そして、制御フローグラフの生成が完了すると、制御部11は、次のステップS1414に処理を進める。なお、本ステップS1413は、上記ステップS1412の前に実行されてもよいし、上記ステップS1412と並列に実行されてもよい。
【0132】
(ステップS1414及びS1415)
ステップS1414では、制御部11は、生成した制御フローグラフに基づいて、抽出した変数の依存関係を特定する。本変形例では、上記ステップS1413及び本ステップS1414により、制御部11は、ステップS1411で構築した抽象構文木に基づいて、制御プログラム221の処理における変数の依存関係を特定する。そして、次のステップS1415では、制御部11は、特定した変数の依存関係に基づいて、複数の機構31の順序関係を特定する。複数の機構31の順序関係の特定が完了すると、本変形例に係る制御プログラム221の解析処理は終了する。
【0133】
ここで、図23を更に用いて、ステップS1414及びS1415の処理について説明する。図23は、制御フローグラフに基づいて各変数間の依存関係を特定し、特定した変数間の依存関係に基づいて複数の機構31の順序関係を特定する処理手順の一例を示すフローチャートである。
【0134】
(ステップS401)
ステップS401では、制御部11は、ステップS1412により抽出した変数のグルーピングを行うことで、各機構31に対応する変数グループを生成する。
【0135】
図24Aは、変数グループを生成する場面の一例を模式的に例示する。制御プログラム221が複数件のプログラムに分割されている場合、同一の機構31に対応する変数に同じ名称が付与されているとは限らない。そこで、制御部11は、ステップS1412により得られた変数から、各機構31に対応する注目変数をピックアップする。続いて、制御部11は、ステップS1412により得られた変数から、各注目変数に依存するグローバル変数を抽出する。そして、制御部11は、各注目変数と各注目変数に依存するグローバル変数とのグループを各機構31に対応する変数グループとして生成する。これにより、制御部11は、各機構31に対応する変数のグルーピングを行うことができる。変数のグルーピングが完了すると、制御部11は、次のステップS402に処理を進める。
【0136】
(ステップS402)
ステップS402では、制御部11は、ステップS401で生成した変数グループから2つの変数グループを総当たりで選択する。これにより、制御部11は、変数グループのペア(組合せ)を生成し、生成した変数グループのペアをリストアップする。例えば、D(A)、D(B)、及びD(C)という3つの変数グループが生成されたとする。この場合、制御部11は、本ステップS402の処理により、(D(A)、D(B))、(D(A)、D(C))、(D(B)、D(C))という3つの変数グループのペアをリストアップすることができる。変数グループのペアのリストアップが完了すると、制御部11は、次のステップS403に処理を進める。
【0137】
(ステップS403)
ステップS403では、制御部11は、ステップS402でリストアップした変数グループのペアから1つの変数グループのペアを取り出し、取り出したペアの各変数グループから1つずつ変数を総当たりで取り出す。これにより、制御部11は、各変数グループに含まれる変数のペア(組合せ)を生成し、生成した変数のペアをリストアップする。例えば、(D(A)、D(B))のペアを取り出し、変数グループD(A)には、AA1、AA2という2つの変数が含まれており、変数グループD(B)には、BB1、BB2という2つの変数が含まれているとする。この場合、制御部11は、本ステップS403の処理により、(AA1、BB1)、(AA1、BB2)、(AA2、BB1)、(AA2、BB2)という4つの変数のペアをリストアップすることができる。変数のペアのリストアップが完了すると、制御部11は、次のステップS404に処理を進める。
【0138】
(ステップS404)
ステップS404では、制御部11は、ステップS403でリストアップした変数のペアから1つの変数のペアを取り出し、制御フローグラフに基づいて、取り出したペアの変数間の依存関係を導出する。例えば、(AA1、BB1)のペアを取り出したとする。制御フローグラフにより、AA1を含む処理の後にBB1を含む処理が実行されるという依存関係が示されている場合には、制御部11は、本ステップS404により、AA1が先でBB1が後であるという順序の依存関係があることを導出することができる。同様に、制御フローグラフにより、BB1を含む処理の後にAA1を含む処理が実行されるという依存関係が示されている場合には、制御部11は、本ステップS404により、AA1が後でBB1が前であるという順序の依存関係があることを導出することができる。一方、制御フローグラフにおいて、AA1を含む処理とBB1を含む処理とが直接的にも間接的にも連結されていない場合には、制御部11は、本ステップS404により、AA1とBB1との間には依存関係がないと特定することができる。このような依存関係の導出が完了すると、制御部11は、次のステップS405に処理を進める。
【0139】
(ステップS405)
ステップS405では、制御部11は、全ての変数のペアに対してステップS404の処理が完了したか否かを判定する。全ての変数のペアに対してステップS404の処理が完了していないと判定した場合には、制御部11は、ステップS404に処理を戻し、他の変数のペアに対して依存関係を導出する処理を実行する。これにより、制御部11は、ステップS403によりリストアップした全ての変数のペアに対して、ステップS404による依存関係の導出処理を実行する。全ての変数のペアに対して依存関係の導出処理が完了すると、制御部11は、全ての変数のペアに対してステップS404の処理が完了したと判定し、次のステップS406に処理を進める。
【0140】
(ステップS406)
ステップS406では、制御部11は、ステップS404の処理を繰り返すことで得られた各変数間の依存関係を、ステップS403で取り出したペアの変数グループ間の依存関係に集約する。これにより、制御部11は、取り出したペアの変数グループ間の依存関係、すなわち、取り出したペアの変数グループに対応する2つの機構31間の順序関係を特定する。
【0141】
図24Bは、各変数間で得られた依存関係を模式的に例示する。ペアP1では、変数グループD(Axis001)内の変数が先で変数グループD(Axis002)が後であるという順序の依存関係が得られている。この場合、制御部11は、本ステップS406により、変数グループD(Axis001)に対応する機構31が先で変数グループD(Axis002)に対応する機構31が後であるという順序関係があることを特定することができる。つまり、順序の依存関係が一方向に偏っている場合には、制御部11は、2つの機構31間にはその方向の順序関係があると特定することができる。
【0142】
一方、ペアP2では、変数グループD(Axis001)内の変数が後で変数グループD(Sensor001)が先であるという順序の依存関係を有する変数のペアと、変数グループD(Axis001)内の変数が先で変数グループD(Sensor001)が後であるという順序の依存関係を有する変数のペアとが存在する。この場合、制御部11は、取り出したペアの変数グループに対応する2つの機構31間には双方向の順序関係があると特定してもよい。又は、制御部11は、所定の方法に基づいて、取り出したペアの変数グループに対応する2つの機構31間の双方向の順序関係のうちいずれかの順序関係を採用することで、2つの機構31間の順序関係を特定してもよい。
【0143】
例えば、制御部11は、2つの機構31間の双方向の順序関係のうち採用する順序関係の選択をユーザから受け付けてもよい。この場合、制御部11は、ユーザの指定した順序関係を、2つの機構31間の順序関係として採用することができる。
【0144】
なお、いずれの変数のペアにも依存関係が存在しない場合には、制御部11は、取り出したペアの変数グループに対応する2つの機構31間には順序関係がないと特定することができる。これにより、2つの機構31間の順序関係の特定が完了すると、制御部11は、次のステップS407に処理を進める。
【0145】
(ステップS407)
ステップS407では、制御部11は、全ての変数グループのペアに対してステップS403〜S406の一連の処理が完了したか否かを判定する。全ての変数グループのペアに対してステップS403〜S406の一連の処理が完了していないと判定した場合には、制御部11は、ステップS403に処理を戻し、他の変数グループのペアに対して、ステップS403〜S406の一連の処理を実行する。これにより、制御部11は、ステップS402によりリストアップした全ての変数グループのペアに対して、ステップS403〜S406による機構31間の順序関係を特定する処理を実行する。
【0146】
図24Cは、各変数間の順序の依存関係に基づいて特定された複数の機構31の順序関係の一例を模式的に例示する。全ての変数グループのペアに対してステップS403〜S406の一連の処理を実行した結果、制御部11は、図24Cで例示されるような全ての機構31間の順序関係を特定することができる。このように全ての機構31間の順序関係を特定する処理が完了すると、制御部11は、全ての変数グループのペアに対してステップS403〜S406の処理が完了したと判定し、制御フローグラフを利用して複数の機構31の順序関係を特定する処理を終了する。
【0147】
以上のように、本変形例に係る処理手順によれば、ログデータ223を利用せずに、制御プログラム221を解析して、複数の機構31の順序関係を特定することができる。なお、本変形例では、構築した抽象構文木に基づいて、制御プログラム221の処理における変数の依存関係を特定するステップは、構築した抽象構文木から制御フローグラフを生成するステップ(ステップS1413)、及び生成した制御フローグラフに基づいて、抽出した変数の依存関係を特定するステップ(ステップS1414)を含んでいる。しかしながら、構築した抽象構文木に基づいて、制御プログラム221の処理における変数の依存関係を特定するステップは、このような例に限定されなくてもよい。制御部11は、制御フローグラフを利用することなく、抽象構文木に基づいて、制御プログラム221の処理における変数の依存関係を特定してもよい。
【0148】
<4.12>
上記実施形態では、複数の機構31間の因果関係を特定するために、状態データ222から特定される複数の機構31間の関係の強さ(接続状態)及び制御プログラム221から特定される複数の機構31の順序関係を利用している。しかしながら、因果関係の特定に利用する情報は、これらの情報のみに限定されなくてもよい。上記工程解析装置1は、関係の強さ(接続状態)及び順序関係以外の情報を更に利用して、複数の機構31間の因果関係を特定してもよい。
【0149】
図25は、本変形例に係る工程解析装置1Aのソフトウェア構成の一例を模式的に例示する。工程解析装置1Aは、機構データ250を取得する第3取得部116、及び取得した機構データ250を解析し、製造ラインで実施される工程をモデル化することで、複数の機構31の順序関係を示す工程モデルを特定する第3解析部117を更に備える。また、関係特定部115は、それぞれ特定した関係の強さ、順序関係、及び工程モデルに基づいて、製造ライン3で実施される工程における複数の機構31間の因果関係を特定する。これらの点を除き、工程解析装置1Aは、上記工程解析装置1と同様に構成される。また、工程解析装置1Aは、上記工程解析装置1と同様のハードウェア構成を有してよい。
【0150】
図26は、機構データ250を解析することで、工程モデル252を特定する過程の一例を模式的に例示する。工程解析装置1Aの制御部11は、上記ステップS105を実行する前までに、第3取得部116として動作し、機構データ250を取得する。機構データ250は、複数の機構31それぞれに含まれる装置の相対的な位置関係、及びその装置が工程に関与する順序の少なくとも一方に関するデータであれば特に限定されなくてもよく、例えば、装置のリスト、装置の動作を監視するセンサのリスト、工程の順序を示す情報、センサの設置位置を示す情報等であってよい。続いて、制御部11は、第3解析部117として動作し、機構データ250を解析することで、工程モデル252を特定する。例えば、制御部11は、機構データ250を参照して、2つの機構31間の順序関係を特定し、2つの機構31間の関係を示す表251の対応するセルに特定した結果を入力する。この表251を完成させることで、制御部11は、工程モデル252を特定することができる。
【0151】
そして、上記ステップS105では、制御部11は、それぞれ特定した関係の強さ、順序関係、及び工程モデルに基づいて、製造ライン3で実施される工程における複数の機構31間の因果関係を特定する。例えば、制御部11は、それぞれ特定した関係の強さ、順序関係、及び工程モデルの積により、各機構31間の関係の有無を特定してもよい。本変形例によれば、機構データ250から特定された工程モデルの知見を更に利用することで、製造ライン3を構成する複数の機構31間の因果関係をより正確にモデル化することができる。
【符号の説明】
【0152】
1…工程解析装置、
11…制御部、12…記憶部、13…通信インタフェース、
14…入力装置、15…出力装置、16…ドライブ、
111…第1取得部、112…第2取得部、
113…第1解析部、114…第2解析部、115…関係特定部、
2…PLC、
21…制御部、22…記憶部、
23…入出力インタフェース、24…通信インタフェース、
221…制御プログラム、222…状態データ、
223…ログデータ、
3…製造ライン、31…機構
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11A
図11B
図12
図13A
図13B
図13C
図14
図15
図16
図17
図18A
図18B
図18C
図18D
図19
図20
図21
図22
図23
図24A
図24B
図24C
図25
図26