(57)【要約】【課題】複数の製品を同時に製造する製造装置において、並列性の低下を抑制し、且つ単純な設計で、デッドロックを回避することができる技術を提供する。【解決手段】工程制御装置（９）は、製造装置の複数の作業工程と複数の工程実行要素の各作業状態とが対応付けられた工程制約情報を参照して、実行中の作業工程と、次に実行予定の作業工程とを同時に実行するとデッドロックが生じる状況に陥るか否かを判定するデッドロック判定部（１５）と、デッドロック判定部が、前記デッドロックが生じる状況に陥ると判定した場合、前記次に実行予定の作業工程の実行タイミングを遅延させる工程実行制御部（１４）とを備えている。【選択図】図１
2019147204.tif 000002
【特許請求の範囲】
【請求項１】
同時に動作可能な複数の工程実行要素を含み、当該複数の工程実行要素によって複数の製品を同時に製造する製造装置の作業工程を制御する工程制御装置であって、
前記製造装置の複数の作業工程と前記複数の工程実行要素の各作業状態とが対応付けられた工程制約情報を参照して、所定のトリガーに応じて前記工程実行要素に対して前記作業工程を実行させる工程実行制御部と、
前記工程制約情報を参照して、実行中の作業工程と、次に実行予定の作業工程とを同時に実行するとデッドロックが生じる状況に陥るか否かを判定するデッドロック判定部とを備え、
前記デッドロック判定部が、前記デッドロックが生じる状況に陥ると判定した場合、前記工程実行制御部が、前記次に実行予定の作業工程の実行タイミングを遅延させることを特徴とする、工程制御装置。
【請求項２】
前記デッドロック判定部は、前記工程制約情報を参照して、実行中の第１の作業工程に対応する作業状態が存在する第１のリソースと、当該第１の作業工程の次の工程である第２の作業工程に対応する作業状態が存在する第２のリソースと、を抽出し、当該第１の作業工程と、当該第１のリソースと、当該第２のリソースとを対応付けたリソース対応情報を生成し、当該リソース対応情報を参照して前記デッドロックが生じる状況に陥るか否かを判定することを特徴とする、請求項１に記載の工程制御装置。
【請求項３】
前記デッドロック判定部は、
前記工程制約情報及び前記リソース対応情報を参照して、実行中の第１の作業工程に対応する作業状態が存在する第１のリソースと、当該第１の作業工程の次の工程である第２の作業工程に対応する作業状態が存在する第２のリソースと、次に実行予定の第３の作業工程に対応する作業状態が存在する第３のリソースと、当該第３の作業工程の次の工程である第４の作業工程に対応する作業状態が存在する第４のリソースとを抽出し、
前記第１のリソースと前記第４のリソースとが同一であり、且つ、前記第２のリソースと前記第３のリソースとが同一である場合、前記第１の作業工程及び前記第３の作業工程間でデッドロックが生じる状況に陥ると判定することを特徴とする、請求項２に記載の工程制御装置。
【請求項４】
請求項１〜３の何れか１項に記載の工程制御装置と、
前記複数の工程実行要素と、を備えていることを特徴とする、製造装置。
【請求項５】
同時に動作可能な複数の工程実行要素を含み、当該複数の工程実行要素によって複数の製品を同時に製造する製造装置の作業工程を制御する工程制御方法であって、
前記製造装置の複数の作業工程と前記複数の工程実行要素の各作業状態とが対応付けられた工程制約情報を参照して、所定のトリガーに応じて前記工程実行要素に対して前記作業工程を実行させる工程実行制御工程と、
前記工程制約情報を参照して、実行中の作業工程と、次に実行予定の作業工程とを同時に実行するとデッドロックが生じる状況に陥るか否かを判定するデッドロック判定工程とを含み、
前記デッドロック判定工程において、前記デッドロックが生じる状況に陥ると判定した場合、前記工程実行制御工程において、前記次に実行予定の作業工程の実行タイミングを遅延させることを特徴とする、工程制御方法。
【請求項６】
請求項１に記載の工程制御装置としてコンピュータを機能させるための制御プログラムであって、前記工程実行制御部及び前記デッドロック判定部としてコンピュータを機能させるための制御プログラム。
【請求項７】
請求項６に記載の制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同時に動作可能な複数の工程実行要素を含み、当該複数の工程実行要素によって複数の製品を同時に製造する製造装置の作業工程を制御する工程制御装置等に関する。
【背景技術】
【０００２】
複数の製品を同時に製造する製造装置の複数のモジュール（工程実行要素）は、複数の製品を製造する際に同時に動作する（以下では、このように動作することを「並列に動作する」と称し、またこのような性質を「並列性」と称する）。そのため、当該製造装置の制御プログラムは、並行性を有する必要があり、且つ、当該製造装置の複数のモジュールは、機構等に基づく制約を満たす必要がある。この２つの条件を同時に満たすため、モジュール毎に独立性の高いプログラムを作成し、各モジュールが局所的な情報で反射的に連携することで並列性を実現する(例えば、当該プログラムによって、あるモジュールは、ワーク（製造途中の製品）を受け取ったら処理して次に渡すだけの工程を実行する。そして、製造装置は、そのようなモジュールが複数並んで設置され、結果的に全体として上手く連携する構成等を有する)。
【０００３】
以上のような技術の例として、特許文献１には、ソフトウェア発生器とプロジェクト発生器とを含んでいる発生器を備えた自動化ソフトウェアの自動発生装置が記載されている。当該ソフトウェア発生器は、特に計画データ、プログラム知識及び管理知識のような予め定め得る又は予め定められた第１のデータに基づいて開発環境を発生させる。また、当該プロジェクト発生器は、開発環境を使用して特に計画データ、経験データ及びハードウェア知識のような予め定め得る又は予め定められた第２のデータに基づいて制御ソフトウェアを発生させる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２００５−５２７８９３号公報（２００５年９月１５日公表）
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述のプログラムを採用することにより、並列性を上手く表す利点はあるが、製造装置全体の動作が暗黙的である。より詳細には、（１）製造装置全体の動作を把握及び理解することが困難である。また、（２）製造装置全体の動作が予測困難であるため、最適化も困難である。
【０００６】
上記のような問題を以下でより具体的に説明する。上述の製造装置においては、上述の複数のモジュール又はワーク（工程実行要素）をリソースとした、作業工程間のデッドロックが生じる。より詳細には、当該デッドロックとは、第１の作業工程で確保している第１のリソースが、第２の作業工程で第２のリソースを解放するために必要なリソースであり、且つ、第２の作業工程で確保している第２のリソースが、第１の作業工程で第１のリソースを解放するために必要なリソースである状況のことを示す。このような状況では、これらの作業工程間で、リソースの奪い合いが生じてしまうという問題がある。
【０００７】
そこで、上述のモジュール毎に独立性の高いプログラムとして、事前に静的にデッドロック回避を行うソフトウェアを作成した場合、並列に動く可能性のある動作全てでデッドロックを考慮するように設計されるため、並列性が低下し、装置性能が劣化するという問題がある。又は、このような並列性の低下を抑制するために複雑な設計となるという問題がある。
【０００８】
本発明の一態様は、上記の問題点に鑑みてなされたものであり、その目的は、複数の製品を同時に製造する製造装置において、並列性の低下を抑制し、且つ単純な設計で、デッドロックを回避することができる技術を提供することにある。
【課題を解決するための手段】
【０００９】
前記の課題を解決するために、本発明の一態様に係る工程制御装置は、同時に動作可能な複数の工程実行要素を含み、当該複数の工程実行要素によって複数の製品を同時に製造する製造装置の作業工程を制御する工程制御装置であって、前記製造装置の複数の作業工程と前記複数の工程実行要素の各作業状態とが対応付けられた工程制約情報を参照して、所定のトリガーに応じて前記工程実行要素に対して前記作業工程を実行させる工程実行制御部と、前記工程制約情報を参照して、実行中の作業工程と、次に実行予定の作業工程とを同時に実行するとデッドロックが生じる状況に陥るか否かを判定するデッドロック判定部とを備え、前記デッドロック判定部が、前記デッドロックが生じる状況に陥ると判定した場合、前記工程実行制御部が、前記次に実行予定の作業工程の実行タイミングを遅延させる。
【００１０】
前記の構成によれば、実行中の作業工程と、当該実行中の作業工程の次の作業工程との間に存在するデッドロックのみに対応して、作業工程を遅延させることによりデッドロック回避を動的に行うことができる。従って、並列性の低下を抑制し、且つ単純な設計で、デッドロックを回避することができる。
【００１１】
本発明の一態様に係る工程制御装置は、前記デッドロック判定部は、前記工程制約情報を参照して、実行中の第１の作業工程に対応する作業状態が存在する第１のリソースと、当該第１の作業工程の次の工程である第２の作業工程に対応する作業状態が存在する第２のリソースと、を抽出し、当該第１の作業工程と、当該第１のリソースと、当該第２のリソースとを対応付けたリソース対応情報を生成し、当該リソース対応情報を参照して前記デッドロックが生じる状況に陥るか否かを判定してもよい。
【００１２】
前記の構成によれば、生成したリソース対応情報を参照して、作業工程間で循環が生じるリソースを把握することにより、デッドロックが生じるか否かを容易に判定することができる。これにより、効率的にデッドロックを回避することができるため、並列性の低下を抑制し、且つ単純な設計で、デッドロックを回避することができる。
【００１３】
本発明の一態様に係る工程制御装置は、前記デッドロック判定部は、前記工程制約情報及び前記リソース対応情報を参照して、実行中の第１の作業工程に対応する作業状態が存在する第１のリソースと、当該第１の作業工程の次の工程である第２の作業工程に対応する作業状態が存在する第２のリソースと、次に実行予定の第３の作業工程に対応する作業状態が存在する第３のリソースと、当該第３の作業工程の次の工程である第４作業工程に対応する作業状態が存在する第４のリソースとを抽出し、前記第１のリソースと前記第４のリソースとが同一であり、且つ、前記第２のリソースと前記第３のリソースとが同一である場合、前記第１の作業工程及び前記第３の作業工程間でデッドロックが生じる状況に陥ると判定してもよい。
【００１４】
前記の構成によれば、工程制約情報及びリソース対応情報から抽出したリソースの対応関係を判定することで、デッドロックが生じるか否かを容易に判定することができる。これにより、効率的にデッドロックを回避することができるため、並列性の低下を抑制し、且つ単純な設計で、デッドロックを回避することができる。
【００１５】
本発明の一態様に係る製造装置は、上記態様１〜３の何れか１つの工程制御装置と、前記複数の工程実行要素と、を備えている。
【００１６】
前記の構成によれば、製造装置において、実行中の作業工程と、当該実行中の作業工程の次の作業工程との間に存在するデッドロックのみに対応して、作業工程を遅延させることによりデッドロック回避を動的に行うことができる。従って、並列性の低下を抑制し、且つ単純な設計で、デッドロックを回避することができる。
【００１７】
本発明の一態様に係る工程制御方法は、同時に動作可能な複数の工程実行要素を含み、当該複数の工程実行要素によって複数の製品を同時に製造する製造装置の作業工程を制御する工程制御方法であって、前記製造装置の複数の作業工程と前記複数の工程実行要素の各作業状態とが対応付けられた工程制約情報を参照して、所定のトリガーに応じて前記工程実行要素に対して前記作業工程を実行させる工程実行制御工程と、前記工程制約情報を参照して、実行中の作業工程と、次に実行予定の作業工程とを同時に実行するとデッドロックが生じる状況に陥るか否かを判定するデッドロック判定工程とを含み、前記デッドロック判定工程において、前記デッドロックが生じる状況に陥ると判定した場合、前記工程実行制御工程において、前記次に実行予定の作業工程の実行タイミングを遅延させる。
【００１８】
前記の構成によれば、実行中の作業工程と、当該実行中の作業工程の次の作業工程との間に存在するデッドロックのみに対応して、作業工程を遅延させることによりデッドロック回避を動的に行うことができる。従って、並列性の低下を抑制し、且つ単純な設計で、デッドロックを回避することができる。
【発明の効果】
【００１９】
本発明の一態様によれば、複数の製品を同時に製造する製造装置において、並列性の低下を抑制し、且つ単純な設計で、デッドロックを回避することができる。
【図面の簡単な説明】
【００２０】
【図１】本発明の一実施形態に係る製造装置を含む製造システムの構成を示すブロック図である
【図２】本発明の一実施形態に係る製造装置が備えている複数のモジュールの構成を示す概略図である。
【図３】本発明の一実施形態に係る製造装置が参照する作業工程情報が示す、製品の組み立て手順のフローチャート図である。
【図４】本発明の一実施形態に係る製造装置が参照する作業状態情報が示す、複数のモジュールの各状態遷移の図である。
【図５】本発明の一実施形態に係る製造装置が参照する工程制約情報の内容を、状態遷移図で表した図である。
【図６】本発明の一実施形態に係る製造装置が備えている工程制御装置による工程制御方法を説明するフローチャート図である。
【図７】本発明の一実施形態に係る製造装置が備えている工程制御装置によるデッドロック判定方法を説明するフローチャート図である。
【発明を実施するための形態】
【００２１】
〔実施形態１〕
以下、本発明の一側面に係る実施の形態（以下、「本実施形態」とも表記する）を、詳細に説明する。ただし、本実施形態に記載されている構成は、特に特定的な記載がない限り、この発明の範囲をそれのみに限定する趣旨ではなく、単なる説明例に過ぎない。
【００２２】
§１  適用例
図１は、本実施形態に係る製造装置２を含む製造システム１の構成を示すブロック図である（製造システム１の各構成の詳細については後述する）。まず、図１が示す製造装置２が実行する工程制御方法についての理解を容易にするために、製造装置２が備えている工程制御装置９が実行する工程制御方法の概要について説明する。
【００２３】
製造装置２は、同時に動作可能な複数のモジュールを含み、当該複数のモジュールによって複数の製品を同時に製造する。このような構成では、実行中の作業工程と、次に実行予定の作業工程とを同時に実行するとデッドロックが生じる可能性がある。そのため、工程制御装置９は、当該デッドロックを回避するように各作業工程の実行を制御する。
【００２４】
工程制御装置９は、複数の作業工程と複数のモジュール又はワーク（工程実行要素）の各作業状態とが対応付けられた工程制約情報を参照して、次に実行する作業工程を選択し、所定のトリガー（ワーク投入など）に応じて各モジュール（工程実行要素）に対して、選択した作業工程を実行させる。
【００２５】
工程制約情報は、作業工程と、当該作業工程を実行する前に必要な作業状態（複数のモジュール又はワークの作業状態）と、当該作業工程を実行した後に当該作業状態から遷移する作業状態と、が対応付けられたデータである。工程制御装置９は、当該工程制約情報を参照して、各作業工程において必要なリソースの関係から、デッドロックが生じる状況に陥るか否かを判定する。
【００２６】
そして、工程制御装置９は、実行エンジンの動作を監視し、工程制約情報を参照して、実行中の作業工程と、次に実行予定の作業工程とを同時に実行するとデッドロックが生じる状況に陥るか否かを判定する。そして、工程制御装置９は、デッドロックが生じる状況に陥ると判定した場合、実行エンジン１４は、次に実行予定の作業工程の実行タイミングを遅延させる。
【００２７】
工程制御装置９は、以上の工程制御方法を実行することにより、実行中の作業工程に応じて、作業工程の実行順序を変更することにより、動的にデッドロックを回避する。
【００２８】
§２  構成例
［工程制御方法の検討］
製造装置２が備えている工程制御装置９が実行する工程制御方法についての検討を、以下の各項目で説明する。
【００２９】
＜概要＞
本実施形態に係る製造装置２は、製造装置２の制約、及び製造装置２が実行できる工程、並びに製品の組み立て手順を表すアクティビティ図に基づいて、効率的に複数の製品を製造する処理を生成する。
【００３０】
＜組み立て手順及び装置状態＞
以下で、本実施形態に係る製造装置２が参照する、製品の組み立て手順を示すデータ、及び製造装置２の状態を示すデータについて説明する。
【００３１】
（複数のモジュール）
図２は、製造部１０の構成を示す概略図である。まず、当該データの対象となる構成として、本実施形態に係る製造装置２が備えている製造部１０の概要について、図２を参照して説明する。製造部１０は、複数のモジュール（複数の工程実行要素）を含み、当該複数のモジュールにより、複数の製品を同時に製造する。
【００３２】
より詳細には、図２が示すように、製造部１０は、複数のモジュールとして、ローダ２０、ロボット２１、処理１モジュール２２、及びアンローダ２３を含む。そして、これらのモジュールは、ワーク毎に、以下の（１）〜（５）の動作を順に実行する（つまり、複数の製品は、それぞれ、以下の（１）〜（５）の何れか１つの工程の処理を受けることにより、同時に製造される）。
【００３３】
（１）ローダ２０は、供給されたワーク（製造途中の製品）を受け付ける。
【００３４】
（２）ロボット２１は、ローダ２０からワークを取り出し、当該ワークを処理１モジュール２２に搬送する。
【００３５】
（３）処理１モジュール２２は、ロボット２１から供給されたワークを処理する。
【００３６】
（４）ロボット２１は、処理１モジュール２２から処理済みワークを取り出し、当該ワークをアンローダ２３に搬送する。
【００３７】
（５）アンローダ２３は、ロボット２１から供給されたワークを排出する。
【００３８】
（組み立て手順）
図３は、作業工程情報が示す、製品の組み立て手順のフローチャート図である。次に、本実施形態に係る製造装置２が参照する、製品の組み立て手順を示すデータ（作業工程情報）について、図３を参照して説明する。図３が示すように、作業工程情報が示す、製品の組み立て手順は、実行される順に、ロード、処理１、及びアンロードを含む。このように、作業工程情報は、１つのワークに対する作業工程の実行順序（製品の組み立て手順）を示すデータである。
【００３９】
図３が示す作業工程情報において、製品を製造するためには処理１のみが必須であり、ロードの工程とアンロードの工程とは、製造装置２の構造上の制約により追加された工程である。ロードの工程及びアンロードの工程において、ピックとプレースとを分けるなど、工程の粒度をさらに細かくすることも可能であり、これにより、粒度を細かくするほど並列度を上げるなど効率的な動作が可能となる。しかし、その反面、設計が複雑になるという問題がある。
【００４０】
（装置状態）
図４は、作業状態情報が示す、製造装置２の各モジュールの状態遷移の図である。次に、本実施形態に係る製造装置２が参照する、製造装置２の各モジュールの状態遷移（装置状態遷移）を示すデータ（作業状態情報）について、図４を参照して説明する。
【００４１】
図４が示す作業状態情報において、ロボット２１は、「待機」、「ワーク把持中」、「ワーク把持」及び「ワーク解放中」の順に、作業状態が遷移することが示されている（「ワーク解放中」の次には、「待機」に戻り、これらの状態遷移は繰り返される）。
【００４２】
また、図４が示す作業状態情報において、ローダ２０は、「ロード可」、「ロード中」、「ロード済」及び「取り出し中」の順に、作業状態が遷移することが示されている（「取り出し中」の次には、「ロード可」に戻り、これらの状態遷移は繰り返される）。
【００４３】
また、図４が示す作業状態情報において、アンローダ２３は、「アンロード済」、「搬入中」、「アンロード可」及び「アンロード中」の順に、作業状態が遷移することが示されている（「アンロード中」の次には、「アンロード済」に戻り、これらの状態遷移は繰り返される）。
【００４４】
また、図４が示す作業状態情報において、処理１モジュール２２は、「待機」、「搬入中」、「ワークあり」、「処理中」及び「搬出中」の順に、作業状態が遷移することが示されている（「搬出中」の次には、「待機」に戻り、これらの状態遷移は繰り返される）。
【００４５】
製造装置２は、並列に動作する複数のモジュール（上述のローダ２０、ロボット２１、処理１モジュール２２、及びアンローダ２３）を備えており、各モジュールは、状態（作業状態）を有する。モジュールは、より細分化することが可能であり、粒度を下げるほど効率的な制御が可能となるが、制御自体は複雑になる。また、本実施形態では簡略化のため、各モジュールが一階層のモジュールからなる構成について説明しているが、モジュールは、階層化でき、１つのモジュールが複数の並列動作をするモジュールを含み得る。また、図４が示す作業状態情報では、各モジュールの制御に関する状態遷移（作業状態の遷移）のみを表しており、そのモジュールが実現する機能に関する部分は除いてある。
【００４６】
（工程制約情報）
次に、本実施形態に係る製造装置２が参照する、製品の組み立て手順と製造装置２の状態遷移とを一括した表を示す工程制約情報について説明する。上述の作業工程情報が示す製品の組み立て手順は、製造装置２の複数のモジュールによって実現されるため、上述の作業状態情報が示す各モジュールの状態遷移（及びワークの状態遷移）が、製品の組み立て手順の制約上限となる。そこで、製造装置２は、上述の作業工程情報が示す組み立て手順と、上述の作業状態情報が示す状態遷移と、を一括した表を示す工程制約情報を参照する。下記の表１は、工程制約情報の例である。
【００４７】
【表１】
2019147204.tif 000003
【００４８】
表１の縦軸の項目は、作業工程情報が示す各作業工程である。なお、表１の縦軸に示された組み立て手順の順序は、１ワークに対する実行順序を示している。しかしながら、製造装置２における処理経路が複数ある場合などでは、表１の縦軸の項目として、１ワークに対する実行順序ではなく、処理経路毎の複数の作業工程が順に示されてもよい。しかし、また、表１の縦軸の項目は、組み立て手順以外の特別な工程として、初期状態及び終了状態を含む。表１の横軸の項目は、作業状態情報が示す各モジュール及びワーク（リソース）である。なお、表１の横軸に示されたリソースの順序は任意である。
【００４９】
表１の縦軸の各項目と横軸の各項目とに対応するマスは、各作業工程における各リソースの状態遷移を示す。当該マスに「Ａ／Ｂ」と記載されている場合（例えば、「未ロード／ロード済」）、Ａは、対応する作業工程が要求するリソースの作業状態（事前条件）を示し、Ｂは、対応する作業工程を実行した後のリソースの作業状態（事後条件）を示す。また、当該マスに「Ｃ」のみ記載されている場合（例えば、「未処理」）、Ｃは、対応する作業工程が要求するリソースの作業状態を示し、且つ、対応する作業工程を実行した後のリソースの作業状態を示す（つまり、作業工程を経た後も、リソースの作業状態に変化がない）。また、「Ａ／Ｂ」又は「Ｃ」に「on Ｄ」が併記されている場合（例えば、on 処理中）、Ｄは、対応する作業工程を実行している間のリソースの作業状態（実行中状態）を示す。以上の表１の工程制約情報の内容を、状態遷移図で表したものが図５である。
【００５０】
工程制約情報が示す表の作成方法として、まず、作業工程情報が示す組み立て手順を縦軸の項目として抽出し、作業状態情報が示すリソースを横軸の項目として抽出する。次に、縦軸の各項目と横軸の各項目とに対応するマスにおいて、対象の作業工程を実行するために必要な事前条件・事後条件を記述し、また、実行に時間を要する場合は、実行中状態を追記する（表１において、略全ての工程が基本的には実行中状態を有するが、排他に影響のある実行中状態以外は省略）。
【００５１】
＜実行順序の決定＞
以下で、本実施形態に係る製造装置２が実行する作業工程の実行順序について説明する。
【００５２】
作業工程の実行順序の生成タイミングの例として、作業工程の実行順序を静的に生成する方法と、動的に生成する方法とが挙げられる。より詳細には、作業工程の実行順序を静的に生成する方法では、デッドロックを回避した実行手順を前もって完全にプログラミングしておき（並列処理も含めて）、当該実行順序に従って作業工程を順に実行する。一方、作業工程の実行順序を動的に生成する方法では、実行中の作業工程に応じて、作業工程の実行順序を生成する。
【００５３】
作業工程の実行順序を静的に生成する方法では、評価関数を用いるなどの手法を用いることにより実行順序を最適化することができるが、応答が複雑なため困難である。また、当該方法では、実際に並列に動作する作業工程のタイミングは、メカの動作タイミング等で変化するため、事前に静的に生成した作業工程の実行順序から外れないように待ち合せ等が発生し、複雑になる。そのため、本実施形態に係る製造装置２は、作業工程の実行順序を動的に生成する。
【００５４】
［製造装置２の構成及び工程制御方法］
上述の概要及び検討を踏まえた上で、本実施形態に係る製造装置２の構成及び工程制御方法について、以下の各項目で説明する。
【００５５】
＜製造装置２の要部構成＞
図１は、上述の通り、本実施形態に係る製造装置２を含む製造システム１の構成を示すブロック図である。以下で、本実施形態に係る製造装置２の要部構成について図１を参照して説明する。製造システム１は、製造装置２に加えて、パソコン３（開発環境）をさらに含む。
【００５６】
パソコン３は、工程制約情報生成部４、及び記憶部５を備えている。工程制約情報生成部４は、作業工程情報及び作業状態情報を参照して工程制約情報を生成する。記憶部５は、工程制約情報データベース６、状態管理情報データベース７、及び工程情報データベース８を含み、工程制約情報データベース６は、工程制約情報生成部４が生成した工程制約情報を格納し、状態管理情報データベース７は、状態管理情報を格納し、工程情報データベース８は、工程情報を格納する。
【００５７】
作業工程情報は、上述の通り、１つのワークに対する作業工程の実行順序（製品の組み立て手順）を示すデータである。また、作業状態情報は、上述の通り、作業工程に対応する、複数の工程実行要素（モジュール及びワーク）の各作業状態の遷移を示すデータである。
【００５８】
また、工程制約情報は、上述の通り、各作業工程と、複数の工程実行要素の各作業状態とが対応付けられたデータである。より具体的には、工程制約情報は、作業工程と、当該作業工程を実行する前に必要な作業状態（工程実行要素の作業状態）と、当該作業工程を実行した後に当該作業状態から遷移する作業状態と、が対応付けられたデータであり得る。
【００５９】
また、状態管理情報は、ユーザが作成する、製造装置２の各モジュールの状態管理を行うプログラムである。より詳細には、例えば、製造装置２は、自動運転モードの場合、当該プログラムによって、ワーク投入に反応し、実行エンジン１４に対してワークの処理を指示し、各モジュールに動作を開始させる。
【００６０】
また、工程情報は、上述の作業工程情報及び工程制約情報に記述されている作業工程の具体的なプログラムである。
【００６１】
製造装置２は、工程制御装置９及び製造部１０を備えている。工程制御装置９は、工程制約情報取得部１１、状態管理情報取得部１２、工程情報取得部１３、実行エンジン１４（工程実行制御部）、及びデッドロック監視エンジン１５（デッドロック判定部）を備えている。
【００６２】
工程制約情報取得部１１は、パソコン３の記憶部５の工程制約情報データベース６から、工程制約情報を取得する。状態管理情報取得部１２は、パソコン３の記憶部５の状態管理情報データベース７から、状態管理情報を取得する。工程情報取得部１３は、パソコン３の記憶部５の工程情報データベース８から、工程情報を取得する。
【００６３】
実行エンジン１４は、工程制約情報取得部１１が取得した工程制約情報を参照して、次に実行する作業工程を選択し、状態管理情報取得部１２が取得した状態管理情報を参照して、所定のトリガー（ワーク投入など）に応じて製造部１０の各モジュール（工程実行要素）に対して当該作業工程を実行させる。なお、実行エンジン１４が作業工程を選択する方法については、上記の［工程制御方法の概要及び検討］の項目で説明した方法と同様の方法を用いることができる。
【００６４】
デッドロック監視エンジン１５は、実行エンジン１４の動作を監視し、工程制約情報取得部１１が取得した工程制約情報を参照して、実行中の作業工程と、次に実行予定の作業工程とを同時に実行するとデッドロックが生じる状況に陥るか否かを判定する。また、デッドロック監視エンジン１５は、デッドロックが生じる状況に陥ると判定した場合、次に実行予定の作業工程の実行タイミングを遅延させるように、実行エンジン１４に指示する。
【００６５】
製造部１０は、上述の通り、図２に示す複数のモジュールを備えている。当該複数のモジュールは、それぞれ、工程情報取得部１３が取得した工程情報を参照して、デッドロック監視エンジン１５が指示した作業工程を実行する。
【００６６】
＜工程制御方法＞
図６は、本実施形態に係る製造装置２による工程制御方法を説明するフローチャート図である。以下で、本実施形態に係る製造装置２による工程制御方法について、図６を参照して説明する。
【００６７】
まず、実行エンジン１４は、工程制約情報取得部１１が取得した工程制約情報を参照して、次に実行する作業工程を選択する（ステップＳ０）。
【００６８】
次に、実行エンジン１４は、状態管理情報取得部１２が取得した状態管理情報を参照して、所定のトリガー（ワーク投入など）に応じて製造部１０の各モジュール（工程実行要素）に対して、選択した作業工程を実行させる（ステップＳ１）。
【００６９】
次に、デッドロック監視エンジン１５は、実行エンジン１４の動作を監視し、工程制約情報取得部１１が取得した工程制約情報を参照して、実行中の作業工程と、次に実行予定の作業工程とを同時に実行するとデッドロックが生じる状況に陥るか否かを判定する（ステップＳ２）。デッドロック監視エンジン１５によるデッドロックの判定方法の詳細については後述する。
【００７０】
ステップＳ２においてデッドロック監視エンジン１５が、デッドロックが生じる状況に陥ると判定した場合（ステップＳ２のＹＥＳ）、実行エンジン１４は、次に実行予定の作業工程の実行タイミングを遅延させる（ステップＳ３）。
【００７１】
ステップＳ２においてデッドロック監視エンジン１５が、デッドロックが生じないと判定した場合（ステップＳ２のＮＯ）、ステップＳ０に戻る。
【００７２】
以上のステップＳ０〜Ｓ３は繰り返し実行され、製造装置２は、デッドロックが生じる状況に陥ると判定した場合に次に実行予定の作業工程を遅延させることにより、作業工程の実行順序を動的に変更することができる。
【００７３】
以上のように、本実施形態に係る製造装置２が備えている工程制御装置９は、複数の作業工程と複数のモジュール又はワーク（工程実行要素）の各作業状態とが対応付けられた工程制約情報を参照して、所定のトリガー（ワーク投入など）に応じて前記工程実行要素に対して前記作業工程を実行させる実行エンジン１４（工程実行制御部）と、前記工程制約情報を参照して、実行中の作業工程と、次に実行予定の作業工程とを同時に実行すると、デッドロックが生じる状況に陥るか否かを判定するデッドロック監視エンジン１５（デッドロック判定部）とを備え、デッドロック監視エンジン１５が、前記デッドロックが生じる状況に陥ると判定した場合、実行エンジン１４が、前記次に実行予定の作業工程の実行タイミングを遅延させる。
【００７４】
前記の構成によれば、実行中の作業工程と、当該実行中の作業工程の次の作業工程との間に存在するデッドロックのみに対応して、作業工程を遅延させることによりデッドロック回避を動的に行うことができる。従って、並列性の低下を抑制し、且つ単純な設計で、デッドロックを回避することができる。
【００７５】
＜デッドロック判定の具体例＞
（デッドロック判定の各ステップ）
図７は、本実施形態に係る製造装置２による工程制御方法におけるステップＳ２のデッドロック判定方法の詳細を説明するフローチャート図である。以下で、本実施形態に係る製造装置２によるデッドロック判定方法について、図７を参照して説明する。
【００７６】
まず、デッドロック監視エンジン１５は、実行エンジン１４の動作を監視し、工程制約情報取得部１１が取得した工程制約情報を参照して、実行中の第１の作業工程に対応する作業状態が存在する第１のリソースと、当該第１の作業工程の次の工程である第２の作業工程（１ワークに対する作業工程の実行順序における次の作業工程）に対応する作業状態が存在する第２のリソースと、を抽出する（ステップＳ１０）。なお、デッドロック監視エンジン１５は、次に実行予定の作業工程に関しても、ステップＳ１０の工程を同様に実行する。
【００７７】
次に、デッドロック監視エンジン１５は、ステップＳ１０で抽出した第１の作業工程と第１のリソースと第２のリソースとを対応付けたリソース対応情報を生成する（ステップＳ１１）。なお、デッドロック監視エンジン１５は、リソース対応情報の生成に際し、ステップＳ１０で次に実行予定の作業工程に関して抽出した情報に対しても、ステップＳ１１と同様の対応付けを行う。
【００７８】
以上のように、生成したリソース対応情報を参照して、作業工程間で循環が生じるリソースを把握することにより、デッドロックが生じるか否かを容易に判定することができる。これにより、効率的にデッドロックを回避することができるため、並列性の低下を抑制し、且つ単純な設計で、デッドロックを回避することができる。
【００７９】
ステップＳ１１の次の工程として、デッドロック監視エンジン１５は、工程制約情報取得部１１が取得した工程制約情報と、ステップＳ１１で生成したリソース対応情報とを参照して、以下の（１）〜（４）の情報を抽出する（ステップＳ１２）。
【００８０】
（１）実行中の第１の作業工程に対応する作業状態が存在する第１のリソース。
【００８１】
（２）当該第１の作業工程の次の工程である第２の作業工程に対応する作業状態が存在する第２のリソース。
【００８２】
（３）次に実行予定の第３の作業工程に対応する作業状態が存在する第３のリソース。
【００８３】
（４）当該第３の作業工程の次の工程である第４の作業工程に対応する作業状態が存在する第４のリソース。
【００８４】
次に、デッドロック監視エンジン１５は、ステップＳ１２で抽出した第１のリソースと第４のリソースとが同一であり、且つ、第２のリソースと第３のリソースとが同一であるか否かを判定することにより、第１の作業工程及び第３の作業工程間でデッドロックが生じる状況に陥るか否かを判定する（ステップＳ１３）。そして、デッドロック監視エンジン１５が、デッドロックが生じる状況に陥ると判定した場合、上述のステップＳ３に進む。デッドロック監視エンジン１５が、デッドロック生じないと判定した場合、上述のステップＳ０に戻る。
【００８５】
以上のように、工程制約情報及びリソース対応情報から抽出したリソースの対応関係を判定することで、デッドロックが生じるか否かを容易に判定することができる。これにより、効率的にデッドロックを回避することができるため、並列性の低下を抑制し、且つ単純な設計で、デッドロックを回避することができる。
【００８６】
（デッドロック監視エンジン１５の具体的な挙動）
以下で、上述のステップＳ１０〜Ｓ１３のデッドロック判定方法の具体例について説明する。デッドロック監視エンジン１５は、デッドロックが発生する状態への突入を検知し、当該デッドロックが起こらないよう作業工程の実行を抑制する。より詳細には、ある工程（第１の工程）によって、あるリソース（製造装置２の各モジュール及びワークなど）（第１のリソース）が利用された場合、当該リソースを解放するために別のリソース（第２のリソース）が必要であり、且つ、別の工程（第２の工程）によって、当該別のリソースが利用された場合、当該別のリソースを解放するために、あるリソースが必要である場合に、デッドロックが発生し得る。製造装置２は、この関係を工程制約情報「組み立て手順（１ワークに対する作業工程の実行順序）と装置状態（各モジュールの作業状態）とを一括した表現（工程制約情報）」から自動的に判定する。例えば、「アンローダに搬送」の工程は、ロボット２１を確保中に実行でき、その際、アンローダ２３を確保する。つまり、ロボット２１に対して、アンローダ２３が必要である。また、「アンローダに搬送」の前に行われる「処理1モジュールから取り出し」の工程で使用しているロボット２１に対しても、リソース解放のためにはアンローダ２３の確保が必要となる。この関係を一般化すると、実行中の第１の作業工程（アンローダに搬送）に対応する作業状態（ワーク把持又は待機（表１を参照））が存在する第１のリソース（ロボット）に対して、当該第１の作業工程の次の工程である第２の作業工程（アンロード）に対応する作業状態（アンロード済又はアンロード可）が存在する第２のリソース（アンローダ）が必要であるという関係が成り立つ。「処理１モジュールから取り出し」の工程に関しても同様である。以上の関係を表としてまとめたものが下記の表２（リソース対応情報）である。
【００８７】
【表２】
2019147204.tif 000004
【００８８】
表２が示すリソース対応情報において、縦軸の各項目は、作業工程情報に基づく各作業工程である。縦軸の項目の順序は、１つのワークに対する作業工程の実行順序を示す。また、横軸の各項目は、作業状態情報に基づく各リソースである。横軸の項目の順序は任意である。
【００８９】
デッドロック監視エンジン１５は、表２に示すリソース対応情報を参照して、実行エンジンの挙動を監視する。そして、製造装置２が、あるワークに対して「処理１」の作業工程を実行中だとする。「処理１」の作業工程において、横軸に示す処理１モジュール２２を解放するために、縦軸の「処理１」と横軸の「処理１モジュール」とに対応するマスに記載されたロボット２１が必要である。この関係を以下のように示す。「処理１モジュール２２→ロボット２１（解放のため必要）」。
【００９０】
そして、製造装置２は、別のワークに対し「ロード」の作業工程が終わり、その次の工程である「ローダから取り出し」の作業工程（次に実行予定の第２の作業工程）を行うとする。その場合、以下の関係がある。「ロボット→処理１モジュール(解放のため必要)」。
【００９１】
以上の２つの作業工程が同時に実行されると、リソース解放のために確保が必要なリソースが作業工程間で循環するため、デッドロックが発生すると予測できる。当該関係を以下のように示す。「ロボット→処理1モジュール→ロボット」。
【００９２】
以上の関係を一般化すると、実行中の第１の作業工程（処理１）に対応する作業状態（ワークあり（表１を参照））が存在する第１のリソース（処理１モジュール２２）と、次に実行予定の第３の作業工程（ローダから取り出し）の次の工程である第４の作業工程（処理１モジュールに搬送）に対応する作業状態（待機又はワークあり）が存在する第４のリソース（処理１モジュール２２）とが同一であり、且つ、当該第１の作業工程の次の工程である第２の作業工程（処理１モジュールから取り出し）に対応する作業状態（待機又はワーク把持）が存在する第２のリソース（ロボット２１）と、次に実行予定の第３の作業工程（ローダから取り出し）に対応する作業状態（待機又はワーク把持）が存在する第３のリソース（ロボット２１）とが同一であるという関係が成り立つ。
【００９３】
以上のように、デッドロック監視エンジン１５は、上述のステップＳ１０〜Ｓ１３において、実行エンジン１４が「ローダから取り出し」の作業工程を実行しようとする前に、上記の関係が成り立つか否かを判定することにより将来デッドロックが発生するか否かを予測する。そして、デッドロック監視エンジン１５が、デッドロックが発生すると予測した場合、実行エンジン１４は、「処理１」の作業工程が完了して、これらの作業工程間でリソースの循環が発生しなくなるまで、「ローダから取り出し」の実行を待つように動作を抑制する。
【００９４】
〔ソフトウェアによる実現例〕
工程制御装置９の制御ブロック（特に実行エンジン１４およびデッドロック監視エンジン１５）は、集積回路（ＩＣチップ）等に形成された論理回路（ハードウェア）によって実現してもよいし、ソフトウェアによって実現してもよい。
【００９５】
後者の場合、工程制御装置９は、各機能を実現するソフトウェアであるプログラムの命令を実行するコンピュータを備えている。このコンピュータは、例えば１つ以上のプロセッサを備えていると共に、上記プログラムを記憶したコンピュータ読み取り可能な記録媒体を備えている。そして、上記コンピュータにおいて、上記プロセッサが上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記プロセッサとしては、例えばＣＰＵ（Central Processing Unit）を用いることができる。上記記録媒体としては、「一時的でない有形の媒体」、例えば、ＲＯＭ（Read Only Memory）等の他、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムを展開するＲＡＭ（Random Access Memory）などをさらに備えていてもよい。また、上記プログラムは、該プログラムを伝送可能な任意の伝送媒体（通信ネットワークや放送波等）を介して上記コンピュータに供給されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
【００９６】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【００９７】
１  製造システム
２  製造装置
３  パソコン
４  工程制約情報生成部
５  記憶部
６  工程制約情報データベース
７  状態管理情報データベース
８  工程情報データベース
９  工程制御装置
１０  製造部
１１  工程制約情報取得部
１２  状態管理情報取得部
１３  工程情報取得部
１４  実行エンジン
１５  デッドロック監視エンジン
２０  ローダ
２１  ロボット
２２  モジュール
２３  アンローダ
【図１】
2019147204.tif 000005
【図２】
2019147204.tif 000006
【図３】
2019147204.tif 000007
【図４】
2019147204.tif 000008
【図５】
2019147204.tif 000009
【図６】
2019147204.tif 000010
【図７】
2019147204.tif 000011