(57)【特許請求の範囲】
【請求項１】
リアル空間において１以上のロボットを動作プログラムに基づいて動作させるコントローラと、
バーチャル空間において、前記１以上のロボットにそれぞれ対応する１以上のバーチャルロボットを前記動作プログラムに基づいて動作させるバーチャルコントローラと、
前記コントローラによる前記１以上のロボットの動作を中断させる動作中断部と、
前記１以上のロボットの動作が中断した前記リアル空間の状態を、前記バーチャル空間に再現させる中断状態再現部と、
前記中断状態再現部が前記リアル空間の状態を再現させた前記バーチャル空間において、前記バーチャルコントローラにより前記動作プログラムに基づいて前記１以上のバーチャルロボットの動作を再開させる再開シミュレータと、を備える制御システム。
【請求項２】
リアル空間の状態を表すリアル環境情報を格納する環境情報格納部と、
１以上のロボットの動作に応じて環境情報格納部に格納されたリアル環境情報を更新する環境更新部と、を更に備え、
前記中断状態再現部は、前記環境情報格納部に格納されたリアル環境情報に基づいて、前記リアル空間の状態を、前記バーチャル空間に再現させる、請求項１記載の制御システム。
【請求項３】
予め定められた評価条件に基づいて、前記再開シミュレータが再開させた前記１以上のバーチャルロボットの動作を評価する再開評価部を更に備える、請求項１又は２記載の制御システム。
【請求項４】
前記再開シミュレータが再開させた前記１以上のバーチャルロボットの動作の動画を表示させる再開動画再生部を更に備える、請求項３記載の制御システム。
【請求項５】
前記１以上のロボットは複数のロボットを含み、
前記１以上のバーチャルロボットは前記複数のロボットにそれぞれ対応する複数のバーチャルロボットを含み、
前記動作中断部は、前記複数のロボットのいずれかの異常を検知した場合に前記複数のロボットの動作を中断させ、
前記再開シミュレータは、動作を中断した前記複数のロボットの動作可否情報を前記複数のロボットごとに前記コントローラから取得し、動作不可である１以上のロボットに対応する１以上のバーチャルロボットを停止させた状態で、動作可である１以上のロボットに対応する１以上のバーチャルロボットの動作を再開させ、
前記再開評価部は、前記動作不可である１以上のロボットに対応する１以上のバーチャルロボットと、前記動作可である１以上のロボットに対応する１以上のバーチャルロボットとの衝突の有無を評価する、請求項３又は４記載の制御システム。
【請求項６】
前記再開評価部による評価結果に基づいて、前記動作プログラムに基づく前記１以上のロボットの動作の少なくとも一部を前記コントローラに再開させる動作再開部を更に備える、請求項３〜５のいずれか一項記載の制御システム。
【請求項７】
前記再開評価部による評価結果と、再開指示入力部とを含む再開指示画面を表示させる再開指示取得部を更に備え、
前記動作再開部は、前記再開指示画面における前記再開指示入力部への操作に基づいて、前記動作プログラムに基づく前記１以上のロボットの動作を前記コントローラに再開させる、請求項６記載の制御システム。
【請求項８】
前記動作プログラムは時系列の複数の動作指令を含み、
前記動作プログラムに基づく前記１以上のロボットの動作の少なくとも一部を再開させることは、
動作の中断時点以降の動作指令に基づいて前記１以上のロボットの少なくとも一部を動作させる第１モードの再開と、
動作の中断時点より前の動作指令に基づいて前記１以上のロボットの少なくとも一部を動作させる第２モードの再開とを含み、
前記再開シミュレータは、前記第１モード及び前記第２モードを含む複数の再開モードごとに、前記バーチャルコントローラにより前記動作プログラムに基づいて前記１以上のバーチャルロボットの動作を再開させ、
前記再開評価部は、前記複数の再開モードごとに前記１以上のバーチャルロボットの動作を評価し、
前記再開指示取得部は、前記再開評価部による前記複数の再開モードごとの評価結果と、前記複数の再開モードのいずれかを選択可能な前記再開指示入力部とを含む前記再開指示画面を表示させ、
前記動作再開部は、前記再開指示入力部において選択された再開モードにて、前記動作プログラムに基づく前記１以上のロボットの動作を前記コントローラに再開させる、請求項７記載の制御システム。
【請求項９】
前記動作プログラムは時系列の複数の動作指令を含み、
前記動作プログラムに基づく前記１以上のロボットの動作の少なくとも一部を再開させることは、
動作の中断時点以降の動作指令に基づいて前記１以上のロボットの少なくとも一部を動作させる第１モードの再開と、
動作の中断時点より前の動作指令に基づいて前記１以上のロボットの少なくとも一部を動作させる第２モードの再開とを含み、
前記制御システムは、前記第１モード及び前記第２モードを含む複数の再開モードのいずれかを選択可能なシミュレーション条件指定画面を表示させるシミュレーション条件取得部を更に備え、
前記再開シミュレータは、前記シミュレーション条件指定画面において選択された再開モードにて、前記バーチャルコントローラにより前記１以上のバーチャルロボットの動作を再開させる、請求項３〜７のいずれか一項記載の制御システム。
【請求項１０】
前記動作プログラムは時系列の複数の動作指令を含み、
前記再開シミュレータは、動作の中断時点以降の動作指令に基づいて、前記バーチャルコントローラにより前記１以上のバーチャルロボットの動作を再開させる、請求項７記載の制御システム。
【請求項１１】
前記動作プログラムにおけるシミュレーション開始時点を指定可能なシミュレーション条件指定画面を表示させるシミュレーション条件取得部を更に備え、
前記再開シミュレータは、指定された前記シミュレーション開始時点以降の動作指令に基づいて、前記バーチャルコントローラにより前記１以上のバーチャルロボットの動作を再開させる、請求項１０記載の制御システム。
【請求項１２】
前記動作プログラムにおけるシミュレーション終了時点を指定可能なシミュレーション条件指定画面を表示させるシミュレーション条件取得部を更に備え、
前記再開シミュレータは、指定された前記シミュレーション終了時点以前の動作指令に基づいて、前記バーチャルコントローラにより前記１以上のバーチャルロボットの動作を再開させる、請求項１０記載の制御システム。
【請求項１３】
前記再開評価部は、前記１以上のバーチャルロボットの動作に基づいて、前記動作プログラムに基づく前記１以上のロボットの動作を再開した後における動作可能期間を前記１以上のロボットごとに算出し、
前記再開指示取得部は、前記１以上のロボットごとの動作可能期間と、再開時点を指定可能な前記再開指示入力部とを含む前記再開指示画面を表示させ、
前記動作再開部は、指定された前記再開時点以降の動作指令に基づいて、前記コントローラにより前記１以上のロボットの動作の少なくとも一部を再開させる、請求項１０〜１２のいずれか一項記載の制御システム。
【請求項１４】
前記再開評価部は、前記１以上のバーチャルロボットの動作に基づいて、前記動作プログラムに基づく前記１以上のロボットの動作を再開した後における動作可能期間を前記１以上のロボットごとに算出し、
前記再開指示取得部は、前記１以上のロボットごとの動作可能期間と、終了時点を指定可能な前記再開指示入力部とを含む前記再開指示画面を表示させ、
前記動作再開部は、指定された前記終了時点以前の動作指令に基づいて、前記コントローラにより前記１以上のロボットの動作の少なくとも一部を再開させる、請求項１０〜１３のいずれか一項記載の制御システム。
【請求項１５】
前記１以上のロボットの他の機械を制御する第２コントローラが、前記１以上のロボットの動作の中断後に前記他の機械をどのように動作させるかを示す周辺挙動情報を記憶する周辺情報記憶部を更に備え、
前記再開評価部は、前記周辺挙動情報に更に基づいて、前記１以上のバーチャルロボットの動作を評価する、請求項３〜１４のいずれか一項記載の制御システム。
【請求項１６】
前記リアル空間の状態を検出する環境センサを更に備え、
前記中断状態再現部は、前記環境センサによる検出結果に基づいて、前記１以上のロボットの動作が中断した前記リアル空間の状態を前記バーチャル空間に再現させる、請求項１〜１５のいずれか一項記載の制御システム。
【請求項１７】
前記中断状態再現部は、前記コントローラが保持する前記１以上のロボットの状態情報に更に基づいて、前記１以上のロボットの動作が中断した前記リアル空間の状態を前記バーチャル空間に再現させる、請求項１６記載の制御システム。
【請求項１８】
前記動作中断部は、前記動作プログラムに基づき前記１以上のロボットが動作している最中における前記リアル空間の状態と、前記動作プログラムに基づき前記１以上のバーチャルロボットが動作している最中における前記バーチャル空間の状態とに差異が生じた場合に、前記コントローラによる前記１以上のロボットの動作を中断させる、請求項１〜１７のいずれか一項記載の制御システム。
【請求項１９】
前記バーチャルコントローラにより、前記動作プログラムに基づいて前記１以上のバーチャルロボットを動作させることと、前記１以上のバーチャルロボットの動作中における前記バーチャル空間の状態とに基づいて前記動作プログラムを修正することと、を繰り返すプログラム生成部を更に備え、
前記コントローラは、前記プログラム生成部により修正された前記動作プログラムに基づいて前記１以上のロボットを動作させる、請求項１〜１８のいずれか一項記載の制御システム。
【請求項２０】
請求項１〜１９のいずれか一項記載の制御システムと、
前記１以上のロボットと、を備えるロボットシステム。
【請求項２１】
リアル空間において１以上のロボットを動作プログラムに基づいて動作させることと、
前記１以上のロボットの動作を中断させることと、
前記１以上のロボットの動作が中断した前記リアル空間の状態を、バーチャル空間に再現させることと、
前記リアル空間の状態を再現させた前記バーチャル空間において、バーチャルコントローラにより前記動作プログラムに基づいて１以上のバーチャルロボットの動作を再開させることと、を含む制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、制御システム、ロボットシステム及び制御方法に関する。
【背景技術】
【０００２】
特許文献１には、ワークの加工を行う加工装置と、ワークを搬送するロボットとを備える加工システムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１９−２０９４５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示は、ロボットを含む生産システムの停止時における迅速な対処に有効な制御システムを提供する。
【課題を解決するための手段】
【０００５】
本開示の一側面に係る制御システムは、リアル空間において１以上のロボットを動作プログラムに基づいて動作させるコントローラと、バーチャル空間において、１以上のロボットにそれぞれ対応する１以上のバーチャルロボットを動作プログラムに基づいて動作させるバーチャルコントローラと、コントローラによる１以上のロボットの動作を中断させる動作中断部と、１以上のロボットの動作が中断したリアル空間の状態を、バーチャル空間に再現させる中断状態再現部と、中断状態再現部がリアル空間の状態を再現させたバーチャル空間において、バーチャルコントローラにより動作プログラムに基づいて１以上のバーチャルロボットの動作を再開させる再開シミュレータと、を備える。
【０００６】
本開示の他の側面に係るロボットシステムは、上記の制御システムと、１以上のロボットと、を備える。
【０００７】
本開示の更に他の側面に係る制御方法は、リアル空間において１以上のロボットを動作プログラムに基づいて動作させることと、１以上のロボットの動作を中断させることと、１以上のロボットの動作が中断したリアル空間の状態を、バーチャル空間に再現させることと、リアル空間の状態を再現させたバーチャル空間において、バーチャルコントローラにより動作プログラムに基づいて１以上のバーチャルロボットの動作を再開させることと、を含む。
【発明の効果】
【０００８】
本開示によれば、ロボットを含む生産システムの停止時における迅速な対処に有効な制御システムを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】生産システムの構成を例示する模式図である。
【図２】ロボットの構成を例示する模式図である。
【図３】２台のロボットの動作及び動作中断を例示する図である。
【図４】中断した動作の再開シミュレーションを例示する図である。
【図５】中断した動作の再開シミュレーションを例示する図である。
【図６】中断した動作の再開シミュレーションを例示する図である。
【図７】中断した動作の再開シミュレーションを例示する図である。
【図８】コントローラの構成を例示するブロック図である。
【図９】ワークに対するプロセスの割り当て結果を例示するテーブルである。
【図１０】機器情報を例示するテーブルである。
【図１１】ワーク情報を例示するテーブルである。
【図１２】データ管理装置の構成を例示するブロック図である。
【図１３】データ管理装置の構成を例示するブロック図である。
【図１４】再開指令取得画面を例示する模式図である。
【図１５】シミュレーション条件指定画面を例示する模式図である。
【図１６】データ管理装置の変形例を示すブロック図である。
【図１７】生産システムの変形例を示す模式図である。
【図１８】制御システムのハードウェア構成を例示する図である。
【図１９】プログラム生成手順を例示するフローチャートである。
【図２０】上位コントローラによる制御手順を例示するフローチャートである。
【図２１】上位コントローラによる異常確認手順を例示するフローチャートである。
【図２２】ローカルコントローラによる制御手順を例示するフローチャートである。
【図２３】バーチャル環境情報収集手順を例示するフローチャートである。
【図２４】リアル環境情報収集手順を例示するフローチャートである。
【図２５】再開シミュレーション手順を例示するフローチャートである。
【図２６】動作再開後における上位コントローラによる制御手順を例示するフローチャートである。
【発明を実施するための形態】
【００１０】
以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
【００１１】
〔生産システム〕
図１に示す生産システム１（ロボットシステム）は、ワークの生産を行うシステムである。以下、ワークの生産過程において、作業対象となる物体の全てを「ワーク」という。
例えば「ワーク」は、生産システム１における最終生産物、最終生産物の部品、及び複数の部品を組み合わせたユニット等を含む。
【００１２】
生産システム１は、１以上のローカル機器２と、制御システム３とを備える。例えば生産システム１は、複数のローカル機器２を備え、複数のローカル機器２の協調動作によりワークの生産を行う。協調動作は、少なくとも一つの上記最終生産物を得るための複数の工程を分担するように複数のローカル機器が動作することを意味する。複数のローカル機器は、一つの最終生産物を得るための複数の工程を工程単位で分担するように動作してもよいし、複数の最終生産物を得るための複数の工程を最終生産物単位で分担するように動作してもよい。
【００１３】
複数のローカル機器２のそれぞれは、ワーク９の生産現場においてワーク９に対し直接的に作業を実行する機器である。直接的な作業は、例えば、熱エネルギー、運動エネルギー、位置エネルギー等の何らかのエネルギーをワーク９に付与する作業である。
【００１４】
複数のローカル機器２のそれぞれは、例えば産業機械である。複数のローカル機器２は、少なくともロボットを含む（少なくとも一つのローカル機器２はロボットである）。また、複数のローカル機器２は、ロボットと協働する産業機械を含む。ロボットと協働する産業機械の具体例としては、他のロボットの他、ＮＣ工作機械等が挙げられる。
【００１５】
図１に示す複数のローカル機器２は、搬送装置２Ａと、ロボット２Ｂ，２Ｃと、移動型ロボット２Ｄとを含んでいるが、これに限られない。少なくとも一つのロボットを含んでいる限り、ローカル機器２の数及び種類は適宜変更可能である。
【００１６】
搬送装置２Ａは、例えば電動モータ等を動力源としてワーク９を搬送する。搬送装置２Ａの具体例としては、ベルトコンベヤ、ローラコンベヤ等が挙げられる。ロボット２Ｂ，２Ｃ、及び移動型ロボット２Ｄは、搬送装置２Ａが搬送するワーク９に対する作業を行う。ワーク９に対する作業の具体例としては、搬送装置２Ａが搬送するワーク９（例えばベースパーツ）に対する他のワーク９（例えばサブパーツ）の組付け、搬送装置２Ａが搬送するワーク９におけるパーツ同士の締結（例えばボルト締結）・接合（例えば溶接）、搬送装置２Ａの周囲に設置されたＮＣ工作機械へのワーク９の搬入、ＮＣ工作機械からのワーク９の搬出等が挙げられる。
【００１７】
例えばロボット２Ｂ，２Ｃは、６軸の垂直多関節ロボットであり、図２に示すように、基部１１と、旋回部１２と、第１アーム１３と、第２アーム１４と、第３アーム１７と、先端部１８と、アクチュエータ４１，４２，４３，４４，４５，４６とを有する。基部１１は、搬送装置２Ａの周囲に設置されている。旋回部１２は、鉛直な軸線２１まわりに回転するように基部１１上に設けられている。
【００１８】
第１アーム１３は、軸線２１に交差（例えば直交）する軸線２２まわりに回転するように旋回部１２に接続されている。交差は、所謂立体交差のようにねじれの関係にある場合も含む。第２アーム１４は、軸線２２に実質的に平行な軸線２３まわりに回転するように第１アーム１３の先端部に接続されている。第２アーム１４は、アーム基部１５とアーム端部１６とを含む。アーム基部１５は、第１アーム１３の先端部に接続され、軸線２３に交差（例えば直交）する軸線２４に沿って延びている。アーム端部１６は、軸線２４まわりに回転するようにアーム基部１５の先端部に接続されている。第３アーム１７は、軸線２４に交差（例えば直交）する軸線２５まわりに回転するようにアーム端部１６の先端部に接続されている。先端部１８は、軸線２５に交差（例えば直交）する軸線２６まわりに回転するように第３アーム１７の先端部に接続されている。先端部１８には、例えはハンド、吸着ノズル、溶接トーチ等の作業ツールが取り付けられる。
【００１９】
このように、ロボット２Ｂ，２Ｃは、基部１１と旋回部１２とを接続する関節３１と、旋回部１２と第１アーム１３とを接続する関節３２と、第１アーム１３と第２アーム１４とを接続する関節３３と、第２アーム１４においてアーム基部１５とアーム端部１６とを接続する関節３４と、アーム端部１６と第３アーム１７とを接続する関節３５と、第３アーム１７と先端部１８とを接続する関節３６とを有する。
【００２０】
アクチュエータ４１，４２，４３，４４，４５，４６は、例えば電動モータ及び減速機を含み、関節３１，３２，３３，３４，３５，３６をそれぞれ駆動する。例えばアクチュエータ４１は、軸線２１まわりに旋回部１２を回転させ、アクチュエータ４２は、軸線２２まわりに第１アーム１３を回転させ、アクチュエータ４３は、軸線２３まわりに第２アーム１４を回転させ、アクチュエータ４４は、軸線２４まわりにアーム端部１６を回転させ、アクチュエータ４５は、軸線２５まわりに第３アーム１７を回転させ、アクチュエータ４６は、軸線２６まわりに先端部１８を回転させる。
【００２１】
なお、ロボット２Ｂ，２Ｃの具体的な構成は適宜変更可能である。例えばロボット２Ｂ，２Ｃは、上記６軸の垂直多関節ロボットに更に１軸の関節を追加した７軸の冗長型ロボットであってもよく、所謂スカラー型の多関節ロボットであってもよい。
【００２２】
図１に戻り、移動型ロボット２Ｄは、自律走行可能なロボットである。移動型ロボット２Ｄは、ロボット２Ｂ，２Ｃと同様に構成されたロボット１０と、無人搬送車５０とを有する。無人搬送車５０は、ロボット１０を搬送するように自律走行する。無人搬送車５０の具体例としては、電動式の所謂ＡＧＶ（Ａｕｔｏｍａｔｅｄ  Ｇｕｉｄｅｄ  Ｖｅｈｃｌｅ）が挙げられる。
【００２３】
生産システム１は、環境センサ５を更に備えてもよい。環境センサ５は、複数のローカル機器２の作業環境の状態（以下、「環境状態」という。）を検出する。環境センサ５の具体例としては、例えば複数のローカル機器２の作業環境を撮影するカメラが挙げられる。環境センサ５は、レーザ光等により、所定位置におけるワーク９の有無を検出するセンサであってもよいし、ワーク９のサイズ等を検出するセンサであってもよい。生産システム１は、複数の環境センサ５を備えてもよい。
【００２４】
制御システム３は、複数のローカル機器２を制御する。以下、制御システム３の構成を詳細に例示する。
【００２５】
〔制御システム〕
制御システム３は、複数のローカル機器２を動作プログラムに基づいて動作させ、異常発生時等には複数のローカル機器２の動作を中断させる。複数のローカル機器２の動作が中断した後も、複数のローカル機器２の少なくともいずれかは動作できる状態である場合、動作中断の必要性がなくなった時点で動作可能なローカル機器２の動作を直ちに再開させ、システムのダウンタイムを最小限に留めることが望ましい。しかしながら、複数のローカル機器２の動作が中断する際には、複数のローカル機器２の周辺環境に想定外の変化が生じている可能性がある。
【００２６】
これに対し、制御システム３は、リアル空間において複数のローカル機器２を動作プログラムに基づいて動作させることと、複数のローカル機器２の動作を中断させることと、複数のローカル機器２の動作が中断したリアル空間の状態を、バーチャル空間に再現させることと、リアル空間の状態を再現させたバーチャル空間において、バーチャルコントローラにより動作プログラムに基づいて複数のバーチャルローカル機器の動作を再開させることと、を実行するように構成されている。
【００２７】
複数のローカル機器２の動作が中断したリアル空間の状態をバーチャル空間に再現させた上で、そのバーチャル空間において複数のバーチャルローカル機器の動作を再開させることで、リアル空間において複数のローカル機器２の動作を再開させた場合のシミュレーションを容易に行うことができる。これにより、１以上のロボットの動作を再開させた場合に生じる事象を、実際の動作再開に先立って迅速に把握することができる。従って、生産システム１の停止時における迅速な対処に有効である。
【００２８】
以下、図面を参照し、シミュレーションの具体例を示す。図３は、２台のロボットの動作及び動作中断を例示する図である。図３は、制御システム３が、ロボット２Ｂ，２Ｃにワークを搬送させる場合を例示している。具体的に、制御システム３は、図３の（ａ）及び（ｂ）に示すように、ロボット２Ｂによりワーク支持部９２のワーク９Ａをワーク支持部９３に搬送させ、その後、図３の（ｂ）及び（ｃ）に示すように、ロボット２Ｃによりワーク支持部９１のワーク９Ｂをワーク支持部９２に搬送させる。
【００２９】
制御システム３は、異常発生等に応じてロボット２Ｂ，２Ｃの動作を中断させる。異常発生の一例として、図３の（ｄ）は、ロボット２Ｂによるワーク９Ａの把持失敗により、ロボット２Ｂ，２Ｃが停止した状態を示している。ロボット２Ｂの先端部１８はワーク支持部９３に到達しているが、ワーク９Ａはワーク支持部９２上に残されている。このような場合、制御システム３は、ロボット２Ｂ，２Ｃを含む生産システム１の動作を中断させる。
【００３０】
制御システム３は、ロボット２Ｂの先端部１８がワーク支持部９３に移動した後も、ワーク９Ａがワーク支持部９２上に残されたリアル空間の状態をバーチャル空間に再現させる。例えば制御システム３は、図４の（ａ）に示すように、バーチャルロボット２Ｂｖの先端部１８ｖがバーチャルワーク支持部９３ｖ上に位置し、バーチャルワーク９Ａｖがバーチャルワーク支持部９２ｖ上に残され、バーチャルワーク９Ｂｖがバーチャルワーク支持部９１ｖ上に位置し、バーチャルロボット２Ｃｖの先端部１８ｖがバーチャルワーク支持部９１ｖ上に位置する状態をバーチャル空間に再現させる。
【００３１】
バーチャルロボット２Ｂｖはロボット２Ｂに対応し、バーチャルロボット２Ｃｖはロボット２Ｃに対応し、バーチャルワーク９Ａｖはワーク９Ａに対応し、バーチャルワーク９Ｂｖはワーク９Ｂに対応し、バーチャルワーク支持部９１ｖはワーク支持部９１に対応し、バーチャルワーク支持部９２ｖはワーク支持部９２に対応し、バーチャルワーク支持部９３ｖはワーク支持部９３に対応する。
【００３２】
その後、制御システム３は、動作プログラムに基づいて、バーチャル空間においてバーチャルロボット２Ｂｖ，２Ｃｖの動作を再開させる。例えば制御システム３は、バーチャルワーク支持部９１ｖからバーチャルワーク支持部９２ｖにバーチャルワーク９Ｂｖを搬送する動作を、バーチャルロボット２Ｃｖに再開させる（図４の（ｂ）参照）。このシミュレーションにより、バーチャルワーク支持部９２ｖ上に残されたバーチャルワーク９Ａｖと、バーチャルロボット２Ｃｖがバーチャルワーク支持部９２ｖ上に搬送したバーチャルワーク９Ｂｖとの衝突が検出される。このようなシミュレーション結果により、ロボット２Ｃによるワーク９Ｂの搬送から動作を再開させるのは不適切であることを容易に把握することができる。これにより、ロボット２Ｂによるワーク９Ａの把持から動作を再開させる等（図４の（ｃ）参照）、適切な対応を迅速に行うことができる。
【００３３】
制御システム３は、ロボット２Ｂ，２Ｃ自体の異常によりロボット２Ｂ，２Ｃの動作を中断させる場合もある。図５の（ａ）は、ワーク９Ａをワーク支持部９３に到達させた段階で、ロボット２Ｂに過電流等の異常が生じ、ロボット２Ｂ，２Ｃの動作が中断した状態を示している。このような場合、制御システム３は、バーチャルロボット２Ｂｖを停止させた状態で、バーチャルロボット２Ｃｖの動作を再開させる。例えば制御システム３は、バーチャルロボット２Ｂｖを停止させた状態で、バーチャルワーク支持部９１ｖからバーチャルワーク支持部９２ｖにバーチャルワーク９Ｂｖを搬送する動作をバーチャルロボット２Ｃｖに再開させる（図５の（ｂ）参照）。このシミュレーションにより、特に衝突なく、ワーク支持部９１からワーク支持部９２にワーク９Ｂを搬送可能であることが確認される。
【００３４】
図６の（ａ）は、ワーク９Ａを把持した段階で、ロボット２Ｂに過電流等の異常が生じ、ロボット２Ｂ，２Ｃの動作が中断した状態を示している。このような場合、制御システム３は、バーチャルロボット２Ｂｖを停止させた状態で、バーチャルロボット２Ｃｖの動作を再開させる。例えば制御システム３は、バーチャルロボット２Ｂｖを停止させた状態で、バーチャルワーク支持部９１ｖからバーチャルワーク支持部９２ｖにバーチャルワーク９Ｂｖを搬送する動作をバーチャルロボット２Ｃｖに再開させる（図６の（ｂ）参照）。
【００３５】
このシミュレーションにより、バーチャルワーク支持部９２ｖ上において、バーチャルロボット２Ｂｖとバーチャルロボット２Ｃｖとの衝突、バーチャルワーク９Ｂｖとバーチャルロボット２Ｂｖとの衝突、又はバーチャルワーク９Ｂｖとバーチャルワーク９Ａｖとの衝突が検出される。このようなシミュレーション結果により、ロボット２Ｂをワーク支持部９２上に停止させたまま、ロボット２Ｃによるワーク９Ｂの搬送から動作を再開させるのは不適切であることを容易に把握することができる。これにより、ロボット２Ｂ及びワーク９Ａをワーク支持部９３上に退避させた後にロボット２Ｃの動作を再開させる等、適切な対応を迅速に行うことができる。
【００３６】
制御システム３は、ロボット２Ｂ及びワーク９Ａがワーク支持部９３上に退避させられたリアル空間の状態をバーチャル空間に再現させ、再度シミュレーションを実行してもよい。例えば制御システム３は、ロボット２Ｂ及びワーク９Ａがワーク支持部９３上に退避させられた後、バーチャルロボット２Ｂｖの先端部１８ｖ及びバーチャルワーク９Ａｖがバーチャルワーク支持部９３ｖ上に位置し、バーチャルロボット２Ｃｖの先端部１８ｖ及びバーチャルワーク９Ｂｖがバーチャルワーク支持部９１ｖ上に位置する状態をバーチャル空間に再現させる（図７の（ａ）参照）。
【００３７】
その後、制御システム３は、バーチャルロボット２Ｂｖを停止させた状態で、バーチャルロボット２Ｃｖの動作を再開させる。例えば制御システム３は、バーチャルロボット２Ｂｖを停止させた状態で、バーチャルワーク支持部９１ｖからバーチャルワーク支持部９２ｖにバーチャルワーク９Ｂｖを搬送する動作をバーチャルロボット２Ｃｖに再開させる（図７の（ｂ）参照）。このシミュレーションにより、特に衝突なく、ワーク支持部９１からワーク支持部９２にワーク９Ｂを搬送可能であることが確認される。
【００３８】
以下、制御システム３の構成をより詳細に例示する。図１に示すように、制御システム３は、コントローラ６と、データ管理装置３００とを有する。コントローラ６は、リアル空間において複数のローカル機器２を動作プログラムに基づいて動作させる。リアル空間は、複数のローカル機器２が実際に存在する空間である。
【００３９】
コントローラ６は、複数のローカルコントローラ１００と、上位コントローラ２００（セルコントローラ）とを有する。複数のローカルコントローラ１００のそれぞれは、動作プログラムに基づいて、複数のローカル機器２のいずれか一つの管轄ローカル機器２を制御する。
【００４０】
上位コントローラ２００は、ワーク９に対するプロセスと、当該プロセスの進捗情報と、環境情報とに基づいて、複数のローカルコントローラ１００のそれぞれに動作プログラムの実行指令を出力する。例えば動作プログラムは、複数のタスクごとに細分化された複数のタスクプログラムを含む。
【００４１】
上位コントローラ２００は、ワーク９に対するプロセスと、当該プロセスの進捗情報と、環境情報とに基づいて、複数のローカルコントローラ１００のそれぞれに次タスクの実行指令を出力する。上位コントローラ２００は、複数のローカル機器２の動作に応じて進捗情報及び環境情報を更新する。
【００４２】
例えば上位コントローラ２００は、複数のローカルコントローラ１００と同期通信する。同期通信とは、一定の周期の同期フレームに同期した同期通信サイクルにて、複数のローカルコントローラ１００との通信を繰り返し行うことを意味する。上位コントローラ２００は、同期通信のサイクルに同期して、実行指令の出力と、進捗情報及び環境情報の更新とを繰り返し実行する。
【００４３】
複数のローカルコントローラ１００のそれぞれは、次タスクのタスクプログラムに基づいて管轄ローカル機器２を動作させる。図示において、制御システム３は、４つのローカルコントローラ１００Ａ，１００Ｂ，１００Ｃ，１００Ｄを有する。ローカルコントローラ１００Ａは搬送装置２Ａを制御する装置コントローラであり、ローカルコントローラ１００Ｂはロボット２Ｂを制御するロボットコントローラであり、ローカルコントローラ１００Ｃはロボット２Ｃを制御するロボットコントローラであり、ローカルコントローラ１００Ｄは移動型ロボット２Ｄを制御するロボットコントローラである。ローカルコントローラ１００の数及び各ローカルコントローラ１００の構成は、ローカル機器２の数及び種類に応じて適宜変更可能である。
【００４４】
データ管理装置３００は、上記バーチャルコントローラを備え、上位コントローラ２００と同期通信又は非同期通信を行う。データ管理装置３００は、上記バーチャルコントローラを有し、複数のローカル機器２の動作が中断したリアル空間の状態を、バーチャル空間に再現させることと、リアル空間の状態を再現させたバーチャル空間において、バーチャルコントローラにより動作プログラムに基づいて複数のバーチャルローカル機器の動作を再開させることと、を実行するように構成されている。
【００４５】
図８に示すように、上位コントローラ２００は、機能上の構成（以下、「機能ブロック」という。）として、プロセスデータベース２１１と、オーダ取得部２１２と、プロセス割当部２１３と、プロセス格納部２１４と、環境情報格納部２１５と、指令出力部２１６と、進捗更新部２１７と、環境更新部２１８と、動作中断部２１９とを有する。
【００４６】
プロセスデータベース２１１は、生産システム１が作業対象とする複数種類のワーク９ごとに複数のプロセスを記憶する。各プロセスは、ワーク９に対する複数のタスクのそれぞれの識別情報と、当該複数のタスクの実行順序と、当該複数のタスクのそれぞれを実行するローカル機器２の識別情報と、を含む。
【００４７】
複数のタスクは、互いに異なるローカル機器２が実行するタスクを含んでいてもよい。例えば複数のタスクは、ロボット２Ｂ，２Ｃ又は移動型ロボット２Ｄが実行する複数のタスクと、他のローカル機器２が実行する１以上のタスクとを含んでいてもよい。タスクは、１つのローカル機器２が実行する一まとまりの作業単位である。
【００４８】
オーダ取得部２１２は、生産管理コントローラ４からワーク９の生産オーダを取得する。生産オーダは、生産すべきワーク９の種類と、種類ごとの生産数量とを含む。生産管理コントローラ４は、例えば、工場のＭＥＳ（Ｍａｎｕｆａｃｔｕｒｉｎｇ  Ｅｘｅｃｕｔｉｏｎ  Ｓｙｓｔｅｍ）において、生産計画に従ったワーク９の生産オーダを複数の工場セルに割り振るコントローラであり、上位コントローラ２００と同期通信又は非同期通信を行う。
【００４９】
プロセス割当部２１３は、生産オーダが指定するワーク９に対しプロセスを割り当てる。例えばプロセス割当部２１３は、生産オーダが指定するワーク９に対し、プロセスデータベース２１１に基づいてプロセスを割り当てる。生産オーダが複数のワーク９を指定する場合、プロセス割当部２１３は、複数のワーク９のそれぞれに対して、プロセスデータベース２１１に基づいてプロセスを割り当てる。複数のワーク９は、互いに異種のワーク９を含んでいてもよい。
【００５０】
プロセス格納部２１４は、プロセス割当部２１３によるプロセスの割り当て結果と、プロセスごとの進捗情報（リアル空間における進捗情報）とを記憶する。図９は、複数のワーク９に対するプロセスの割り当て結果を例示するテーブルである。このテーブルにおいては、左から右への並び順序によって、各プロセスにおける複数のタスクの実行順序が示されている。図９においては、ワークＡに対し、３ステップのタスクａ１，ａ２，ａ３を含むプロセスが割り当てられている。ワークＢに対し、５ステップのタスクｂ１，ｂ２，ｂ３，ｂ４，ｂ５を含むプロセスが割り当てられている。ワークＣに対し、２ステップのタスクｃ１，ｃ２を含むプロセスが割り当てられている。ワークＤに対し、３ステップのタスクｄ１，ｄ２，ｄ３を含むプロセスが割り当てられている。ワークＥに対し、４ステップのタスクｅ１，ｅ２，ｅ３，ｅ４を含むプロセスが割り当てられている。
【００５１】
プロセスごとの進捗情報は、例えばプロセスの各タスクが未着手であるか、実行中であるか、完了しているかを示す情報である。進捗情報は、未着手、実行中、又は完了を示すフラグであってもよいし、開始時刻及び完了時刻であってもよい。進捗情報が開始時刻及び完了時刻である場合、開始時刻も完了時刻も打刻されていなければ未着手であり、開始時刻が打刻され完了時刻が打刻されていなければ実行中であり、完了時刻が打刻されていれば完了である。
【００５２】
環境情報格納部２１５は、リアル空間の状態を表すリアル環境情報を記憶する。リアル環境情報は、例えばローカル機器２に関する情報（以下、「機器情報」という。）と、ワーク９に関する情報（以下、「ワーク情報」という。）とを含む。機器情報の具体例としては、ローカル機器２の位置・姿勢情報が挙げられる。ローカル機器２の位置・姿勢情報の具体例としては、ロボット２Ｂ，２Ｃの姿勢情報、及び移動型ロボット２Ｄの位置・姿勢情報等が挙げられる。ロボット２Ｂ，２Ｃの姿勢情報は、関節３１，３２，３３，３４，３５，３６の動作角度情報であってもよいし、先端部１８の位置・姿勢情報であってもよい。移動型ロボット２Ｄの位置・姿勢情報は、例えば無人搬送車５０の位置・姿勢情報と、ロボット１０の姿勢情報とを含む。ロボット１０の姿勢情報は、関節３１，３２，３３，３４，３５，３６の動作角度情報であってもよいし、先端部１８の位置・姿勢（無人搬送車５０を基準にした位置・姿勢）情報であってもよい。
【００５３】
機器情報は、ローカルコントローラ１００と、その管轄ローカル機器２との間に発生した制御信号（以下、「リアル制御信号」という。）の情報を含む。リアル制御信号は、管轄ローカル機器２の制御のためにローカルコントローラ１００で生成される内部信号であってもよいし、ローカルコントローラ１００から管轄ローカル機器２に出力される出力信号であってもよいし、管轄ローカル機器２からローカルコントローラ１００に出力されるフィードバック信号であってもよい。内部信号の具体例としては、管轄ローカル機器２の位置・姿勢の指令値等が挙げられる。出力信号の具体例としては、管轄ローカル機器２のアクチュエータへの出力電流値等が挙げられる。フィードバック信号の具体例としては、ローカル機器２における位置・姿勢、速度等の検出値が挙げられる。
【００５４】
図１０は、機器情報を例示するテーブルである。図１０においては、ローカル機器２の識別情報と、ローカル機器２に関する情報を示す少なくとも一つの状態パラメータとが対応付けられている。
【００５５】
ワーク情報の具体例としては、各ワーク９の位置情報が挙げられる。図１１は、ワーク情報を例示するテーブルである。図１１においては、ワーク９の識別情報（例えば種別及びシリアル番号）と、ワーク９の位置情報とが対応付けられている。
【００５６】
図８に戻り、指令出力部２１６は、プロセス格納部２１４が記憶するプロセスと、当該プロセスの進捗情報と、環境情報格納部２１５が記憶するリアル環境情報とに基づいて、次タスクの実行指令を出力する。複数のタスクにおける次タスクは、未着手のタスクのうち、一つ前のタスクが存在しないか、一つ前のタスクが完了しているタスクである。例えば指令出力部２１６は、プロセスの進捗情報に基づいて次タスクを抽出し、リアル環境情報が次タスクの実行条件を満たす場合に、次タスクの実行指令を複数のローカルコントローラ１００のいずれかに出力する。
【００５７】
実行条件の具体例としては、以下が挙げられる。
例１−１）次タスクの対象のワーク９が、次タスクを実行可能な位置に到達していること。
例１−２）次タスクを実行するローカル機器２の動作範囲に障害物が存在しないこと。
【００５８】
障害物の具体例としては、他のローカル機器２、他のローカル機器２が保持するワーク９、又は人等が挙げられる。
【００５９】
プロセス格納部２１４において、複数のワーク９に対し複数のプロセスがそれぞれ割り当てられている場合、指令出力部２１６は、複数のプロセスごとの複数の進捗情報に基づいて、複数のプロセスごとに複数の次タスクを抽出し、抽出した次タスクのうち、リアル環境情報が実行条件を満たしたタスクから順次出力する。なお、指令出力部２１６は、上記同期通信におけるローカルコントローラ１００からの要求に応じて次タスクの実行指令を出力してもよいし、ローカルコントローラ１００からの要求の有無によらずに実行指令を出力してもよい。
【００６０】
進捗更新部２１７は、複数のローカル機器２による次タスクの実行状況に応じて、プロセス格納部２１４の進捗情報を更新する。例えば進捗更新部２１７は、ローカルコントローラ１００が出力する後述のステータス情報に基づいて、プロセス格納部２１４の進捗情報を更新する。
【００６１】
環境更新部２１８は、複数のローカル機器２の動作に応じて、環境情報格納部２１５のリアル環境情報を更新する。例えば環境更新部２１８は、複数のローカルコントローラ１００のそれぞれからローカル機器２のステータス情報を取得し、当該ステータス情報に基づいて機器情報を更新する。
【００６２】
環境更新部２１８は、上記同期通信の各サイクルにおいて、複数のローカルコントローラ１００から複数のローカル機器２のステータス情報を取得し、当該ステータス情報に基づいて機器情報を更新してもよい。これにより、複数のローカル機器２のステータス情報を互いに同期した状態でリアル環境情報に反映させることができる。
【００６３】
環境更新部２１８は、ローカル機器２のステータス情報に基づいてワーク情報を更に更新してもよい。例えば環境更新部２１８は、ローカルコントローラ１００Ａから取得した搬送装置２Ａのステータス情報に基づいて、各ワーク９の位置情報を更新してもよい。また、図３の例において、環境更新部２１８は、ロボット２Ｂがワーク支持部９２からワーク支持部９３にワーク９Ａを搬送するタスクを完了するのに応じて、ワーク９Ａの位置をワーク支持部９２上からワーク支持部９３上に更新してもよい。
【００６４】
環境更新部２１８は、環境センサ５の検出結果に更に基づいてリアル環境情報を更新してもよい。環境センサ５の検出結果も上位コントローラ２００の環境情報に集約することによって、環境センサ５の検出結果と、複数のローカル機器２のステータス情報とを同じ時間軸に沿って環境情報に反映させることができる。例えば環境更新部２１８は、環境センサ５により検出された画像情報等に基づいてワーク情報を更新してもよいし、環境センサ５により検出された画像情報等に基づいて機器情報を更新してもよい。一例として、環境更新部２１８は、環境センサ５により検出された画像情報等に基づいてワークの位置を更新してもよい。
【００６５】
動作中断部２１９は、コントローラ６による複数のローカル機器２の動作を中断させる。例えば動作中断部２１９は、環境情報格納部２１５が記憶する環境情報に基づいて、複数のローカル機器２のいずれかの異常を検知した場合に複数のローカル機器２の動作を中断させる。例えば動作中断部２１９は、複数のローカル機器２のいずれかの異常を検知した場合に、指令出力部２１６による実行指令の出力を中断させ、更に、複数のローカルコントローラ１００のそれぞれに実行中のタスクを中断させる。
【００６６】
複数のローカル機器２のいずれかの異常は、ローカル機器２自体の異常と、ローカル機器２の動作によりもたらされた周辺環境の異常（例えばワーク９の位置の異常）とを含む。図３の例において、ロボット２Ｂの先端部１８がワーク支持部９３上に到達していることを機器情報が示しているにもかかわらず、ワーク９Ａがワーク支持部９２上に残っていることをワーク情報が示している場合に、動作中断部２１９は異常を検知する。このような、機器情報とワーク情報との食い違いは、機器情報がローカル機器２のステータス情報に基づいて更新され、ワーク情報が環境センサ５の検出結果に基づき更新される場合に検出可能となる。
【００６７】
また、図５の例においては、ロボット２Ｂの機器情報のいずれか（例えば位置情報、速度情報、トルク情報、電流情報等）が異常値を示している場合に、動作中断部２１９は異常を検知する。機器情報が異常値を示す場合の具体例としては、減速機等の故障により、トルク情報又は電流情報が過大な値となることが挙げられる。機器情報が異常値を示す場合の他の例としては、先端部１８によるワーク９の把持失敗により、先端部１８の駆動電流が過小な値となることが挙げられる。
【００６８】
図８に示すように、ローカルコントローラ１００は、機能ブロックとして、プログラム格納部１１１と、制御部１１２と、ステータス出力部１１３とを有する。プログラム格納部１１１は、管轄ローカル機器２の動作プログラムを記憶する。上述のように、動作プログラムは、複数のタスクごとに細分化された複数のタスクプログラムを含んでいてもよい。複数のタスクプログラムのそれぞれは、時系列の複数の動作指令を含む。管轄ローカル機器２がロボット２Ｂ，２Ｃ、又は移動型ロボット２Ｄである場合、動作指令は、先端部１８の目標位置・目標姿勢、及び目標位置・目標姿勢への移動速度等を含む。
【００６９】
制御部１１２は、指令出力部２１６が出力した実行指令を取得した場合に、当該実行指令が示す次タスクに対応するタスクプログラムをプログラム格納部１１１から抽出し、抽出したタスクプログラムに基づいてローカル機器２を動作させる。
【００７０】
ステータス出力部１１３は、管轄ローカル機器２の上記ステータス情報を上位コントローラ２００に出力する。ステータス情報は、少なくとも管轄ローカル機器２の位置・姿勢情報を含む。ステータス情報は、ローカルコントローラ１００と、その管轄ローカル機器２との間に発生した制御信号（上記リアル制御信号）の情報を含む。リアル制御信号は、管轄ローカル機器２の制御のためにローカルコントローラ１００で生成される内部信号であってもよいし、ローカルコントローラ１００から管轄ローカル機器２に出力される出力信号であってもよいし、管轄ローカル機器２からローカルコントローラ１００に出力されるフィードバック信号であってもよい。
【００７１】
内部信号の具体例としては、管轄ローカル機器２の位置・姿勢の指令値等が挙げられる。出力信号の具体例としては、管轄ローカル機器２のアクチュエータへの出力電流値等が挙げられる。フィードバック信号の具体例としては、ローカル機器２における位置・姿勢、速度等の検出値が挙げられる。フィードバック信号は、管轄ローカル機器２のアクチュエータの位置、速度、駆動力（例えばトルク）、及び駆動電流等を更に含んでいてもよい。
【００７２】
また、ステータス情報は、管轄ローカル機器２の制御におけるアラーム（例えば過電流のアラーム）等の発生状況を含んでいてもよい。ステータス出力部１１３は、上記タスクプログラムの実行が完了するのに応じ、タスクの完了通知をステータス情報に含めて出力してもよい。
【００７３】
ステータス出力部１１３は、上記同期通信における上位コントローラ２００からの要求に応じてステータス情報を出力してもよいし、上位コントローラ２００からの要求の有無によらずにステータス情報を出力してもよい。
【００７４】
図１２に示すように、データ管理装置３００は、モデル格納部３１１と、バーチャルコントローラ７とを有する。モデル格納部３１１は、複数のローカル機器２に対応する複数のバーチャルローカル機器２ｖのモデルを記憶する。バーチャルローカル機器２ｖのモデルは、対応するローカル機器２のリアル空間における配置、構造、各部の寸法、及び各部の質量等のパラメータを含む。モデル格納部３１１は、バーチャル空間における複数のバーチャルローカル機器２ｖの周辺環境のモデルも記憶する。周辺環境のモデルは、複数のローカル機器２の周辺物体のリアル空間における配置、三次元形状、寸法等のパラメータを含む。
【００７５】
バーチャルコントローラ７は、バーチャル空間において、複数のバーチャルローカル機器２ｖを動作プログラムに基づいて動作させる。バーチャル空間は、複数のローカル機器２が存在しないシミュレーション上の仮想空間である。バーチャル空間において、複数のバーチャルローカル機器２ｖを動作させるとは、モデル格納部３１１が記憶する複数のバーチャルローカル機器２ｖのモデルと、複数のバーチャルローカル機器２ｖの周辺環境のモデルとに基づいて、リアル空間における複数のローカル機器２の動作をシミュレーションすることを意味する。
【００７６】
例えばバーチャルコントローラ７は、複数のバーチャルローカルコントローラ４００と、上位コントローラ２００に対応するバーチャル上位コントローラ５００とを有する。複数のバーチャルローカルコントローラ４００のそれぞれは、動作プログラムに基づいて、複数のバーチャルローカル機器２ｖのいずれか一つの管轄バーチャルローカル機器２ｖを制御する。
【００７７】
バーチャル上位コントローラ５００は、バーチャルワーク９ｖに対するプロセスと、当該プロセスの進捗情報と、環境情報とに基づいて、複数のバーチャルローカルコントローラ４００のそれぞれに動作プログラムの実行指令を出力する。例えばバーチャル上位コントローラ５００は、バーチャルワーク９ｖに対するプロセスと、当該プロセスの進捗情報と、環境情報とに基づいて、複数のバーチャルローカルコントローラ４００のそれぞれに次タスクの実行指令を出力する。バーチャル上位コントローラ５００は、複数のバーチャルローカル機器２ｖの動作に応じて進捗情報及び環境情報を更新する。
【００７８】
複数のバーチャルローカルコントローラ４００は、複数のローカルコントローラ１００にそれぞれ対応する。例えばバーチャルコントローラ７は、ローカルコントローラ１００Ａに対応するバーチャルローカルコントローラ４００Ａと、ローカルコントローラ１００Ｂに対応するバーチャルローカルコントローラ４００Ｂと、ローカルコントローラ１００Ｃに対応するバーチャルローカルコントローラ４００Ｃと、ローカルコントローラ１００Ｄに対応するバーチャルローカルコントローラ４００Ｄとを有する。
【００７９】
ロボットコントローラであるローカルコントローラ１００Ｂ，１００Ｃ，１００Ｄにそれぞれ対応するバーチャルローカルコントローラ４００Ｂ，４００Ｃ，４００Ｄは、バーチャルロボットコントローラである。バーチャルローカルコントローラ４００Ｂ，４００Ｃが制御するバーチャルローカル機器はバーチャルロボット（例えば上記バーチャルロボット２Ｂｖ，２Ｃｖ）であり、バーチャルローカルコントローラ４００Ｄが制御するバーチャルローカル機器はバーチャル移動型ロボットである。
【００８０】
複数のバーチャルローカルコントローラ４００のそれぞれは、次タスクのタスクプログラムと、モデル格納部３１１が記憶する管轄バーチャルローカル機器２ｖのモデル及び周辺環境のモデルとに基づいて、バーチャル空間において管轄バーチャルローカル機器２ｖを動作させる。
【００８１】
バーチャル上位コントローラ５００は、より細分化された機能ブロックとして、プロセスデータベース２１１、オーダ取得部２１２、プロセス割当部２１３、プロセス格納部２１４、環境情報格納部２１５、指令出力部２１６、進捗更新部２１７、及び環境更新部２１８にそれぞれ対応するプロセスデータベース５１１、オーダ取得部５１２、プロセス割当部５１３、プロセス格納部５１４、環境情報格納部５１５、指令出力部５１６、進捗更新部５１７、及び環境更新部５１８を有する。
【００８２】
プロセスデータベース５１１は、プロセスデータベース２１１と同様に、生産システム１が対象とする複数種類のバーチャルワーク９ｖごとに複数のプロセスを記憶する。オーダ取得部５１２は、例えば後述の入力デバイス３９６等から、シミュレーション用の生産オーダを取得する。
【００８３】
プロセス割当部５１３は、プロセス割当部２１３と同様に、生産オーダが指定するバーチャルワーク９ｖに対しプロセスを割り当てる。例えばプロセス割当部５１３は、生産オーダが指定するバーチャルワーク９ｖに対し、プロセスデータベース５１１に基づいてプロセスを割り当てる。プロセス格納部５１４は、プロセス格納部２１４と同様に、プロセス割当部５１３によるプロセスの割り当て結果と、プロセスごとの進捗情報（バーチャル空間における進捗情報）とを記憶する。
【００８４】
環境情報格納部５１５は、バーチャル環境情報を記憶する。バーチャル環境情報の構成は、環境情報の構成と同様である。バーチャル環境情報は、バーチャル空間における機器情報と、バーチャル空間におけるワーク情報とを含む。バーチャル空間における機器情報の具体例としては、バーチャル空間におけるバーチャルローカル機器２ｖの位置・姿勢情報が挙げられる。
【００８５】
バーチャル空間における機器情報は、バーチャルローカルコントローラ４００と、その管轄バーチャルローカル機器２ｖとの間に発生した制御信号（以下、「バーチャル制御信号」という。）の情報を含む。バーチャル制御信号は、管轄バーチャルローカル機器２ｖの制御のためにバーチャルローカルコントローラ４００で生成される内部信号であってもよいし、バーチャルローカルコントローラ４００から管轄バーチャルローカル機器２ｖに出力される出力信号であってもよいし、管轄バーチャルローカル機器２ｖからバーチャルローカルコントローラ４００に出力されるフィードバック信号であってもよい。内部信号の具体例としては、管轄バーチャルローカル機器２ｖの位置・姿勢の指令値等が挙げられる。出力信号の具体例としては、管轄バーチャルローカル機器２ｖのアクチュエータへの出力電流値等が挙げられる。フィードバック信号の具体例としては、出力信号と、モデル格納部３１１が記憶するモデル情報とに基づく管轄バーチャルローカル機器２ｖの動作のシミュレーション結果が挙げられる。バーチャル空間におけるワーク情報の具体例としては、バーチャル空間における各バーチャルワーク９ｖの位置情報が挙げられる。
【００８６】
指令出力部５１６は、指令出力部２１６と同様に、プロセス格納部５１４が記憶するプロセスと、バーチャル空間における当該プロセスの進捗情報と、環境情報格納部５１５が記憶するバーチャル環境情報とに基づいて、次タスクの実行指令を出力する。
【００８７】
指令出力部５１６は、プロセスデータベース５１１に基づいて複数のバーチャルローカルコントローラ４００のいずれかに次タスクの実行指令を出力する。例えば指令出力部５１６は、プロセスの進捗情報に基づいて次タスクを抽出し、バーチャル環境情報が次タスクの実行条件を満たす場合に、次タスクの実行指令を複数のバーチャルローカルコントローラ４００のいずれかに出力する。例えば指令出力部５１６は、プロセスデータベース５１１において次タスクに対応付けられたローカル機器２のバーチャルローカル機器２ｖのバーチャルローカルコントローラ４００に次タスクの実行指令を出力する。
【００８８】
進捗更新部５１７は、進捗更新部２１７と同様に、複数のバーチャルローカル機器による次タスクの実行状況に応じて、プロセス格納部５１４の進捗情報を更新する。例えば進捗更新部５１７は、バーチャルローカルコントローラ４００が出力する後述のステータス情報に基づいて、プロセス格納部５１４の進捗情報を更新する。環境更新部５１８は、複数のバーチャルローカル機器２ｖの動作に応じて、環境情報格納部５１５のバーチャル環境情報を更新する。
【００８９】
バーチャルローカルコントローラ４００は、より細分化された機能ブロックとして、プログラム格納部１１１、制御部１１２、及びステータス出力部１１３にそれぞれ対応するプログラム格納部４１１、制御部４１２、及びステータス出力部４１３を有する。プログラム格納部４１１は、プログラム格納部１１１と同様に、管轄バーチャルローカル機器２ｖの動作プログラムを記憶する。
【００９０】
制御部４１２は、指令出力部５１６が出力した実行指令を取得した場合に、当該実行指令が示す次タスクに対応するタスクプログラムをプログラム格納部４１１から抽出し、抽出したタスクプログラムに基づいてバーチャルローカル機器２ｖを動作させる。具体的に、制御部４１２は、モデル格納部３１１が記憶する複数のバーチャルローカル機器２ｖのモデルと、複数のバーチャルローカル機器２ｖの周辺環境のモデルとに基づいて、リアル空間における管轄バーチャルローカル機器２ｖに対応するローカル機器２の動作をシミュレーションする。ステータス出力部４１３は、ステータス出力部１１３と同様に、管轄バーチャルローカル機器２ｖの上記ステータス情報をバーチャル上位コントローラ５００に出力する。
【００９１】
図１３に示すように、データ管理装置３００は、リアル情報収集部３１２と、リアル情報データベース３１３と、バーチャル情報収集部３１４と、バーチャル情報データベース３１５と、中断状態再現部３２１と、再開シミュレータ３２２とを更に有する。
【００９２】
リアル情報収集部３１２は、リアル環境情報を環境情報格納部２１５から収集し、リアル空間におけるプロセスごとの進捗情報であるリアル進捗情報をプロセス格納部２１４から収集する。リアル情報データベース３１３は、リアル情報収集部３１２が収集したリアル環境情報とリアル進捗情報とを対応付けたリアルデータセットを時系列で蓄積する。
【００９３】
バーチャル情報収集部３１４は、バーチャル環境情報を収集し、バーチャル空間におけるプロセスごとの進捗情報であるバーチャル進捗情報を収集する。図１２を参照して説明したとおり、バーチャル環境情報は環境情報格納部５１５に格納され、バーチャル進捗情報はプロセス格納部５１４に格納されている。そこで、バーチャル情報収集部３１４は、バーチャル環境情報を環境情報格納部５１５から収集し、バーチャル進捗情報をプロセス格納部５１４から収集してもよい。バーチャル情報データベース３１５は、バーチャル情報収集部３１４が収集したバーチャル環境情報とバーチャル進捗情報とを対応付けたバーチャルデータセットを時系列で蓄積する。
【００９４】
中断状態再現部３２１は、複数のローカル機器２の動作が中断したリアル空間の状態をバーチャル空間に再現させる。例えば中断状態再現部３２１は、環境情報格納部２１５に格納されたリアル環境情報に基づいて、リアル空間の状態を、バーチャル空間に再現させる。例えば中断状態再現部３２１は、リアル情報収集部３１２により環境情報格納部２１５から収集され、リアル情報データベース３１３に蓄積された最新のリアル環境情報の複製を、最新のバーチャル環境情報として環境情報格納部５１５に格納する。また、中断状態再現部３２１は、リアル情報収集部３１２によりプロセス格納部２１４から収集され、リアル情報データベース３１３に蓄積された最新のリアル進捗情報の複製を、最新のバーチャル進捗情報としてプロセス格納部５１４に格納する。
【００９５】
上述したように、リアル環境情報は、機器情報を含んでもよい。機器情報は、コントローラ６が保持する複数のローカル機器２の状態情報の一例である。このため、リアル環境情報が機器情報を含む場合、中断状態再現部３２１は、コントローラ６が保持する複数のローカル機器２の状態情報に少なくとも部分的に基づいて、リアル空間の状態をバーチャル空間に再現させることとなる。
【００９６】
リアル環境情報は、環境センサ５による検出結果に少なくとも部分的に基づいて更新される情報を含んでいてもよい。この場合、中断状態再現部３２１は、環境センサ５による検出結果に基づいて、リアル空間の状態をバーチャル空間に再現させることとなる。
【００９７】
再開シミュレータ３２２は、中断状態再現部３２１がリアル空間の状態を再現させたバーチャル空間において、バーチャルコントローラ７により動作プログラムに基づいて１以上のバーチャルローカル機器２ｖの動作を再開させる。動作の再開対象である１以上のバーチャルローカル機器２ｖは、１以上のバーチャルロボットを含む。例えば再開シミュレータ３２２は、動作の中断時点以降の動作指令に基づいて、バーチャルコントローラ７により複数のローカル機器２の動作を再開させる。
【００９８】
例えば再開シミュレータ３２２は、最新のリアル環境情報の複製が最新のバーチャル環境情報として環境情報格納部５１５に格納され、最新のリアル進捗情報の複製が最新のバーチャル進捗情報としてプロセス格納部５１４に格納された状態で、指令出力部５１６に次タスクの実行指令の出力を開始させる。以後、環境情報格納部５１５が格納するバーチャル環境情報と、プロセス格納部５１４が格納するバーチャル進捗情報は、１以上のバーチャルローカル機器２ｖのバーチャル空間における動作に応じて更新される。
【００９９】
再開シミュレータ３２２は、動作を中断した複数のローカル機器２の動作可否情報を複数のローカル機器２ごとにコントローラ６から取得し、動作不可である１以上のローカル機器２に対応する１以上のバーチャルローカル機器２ｖを停止させた状態で、動作可である１以上のローカル機器２に対応する１以上のバーチャルローカル機器２ｖの動作を再開させてもよい（図６の（ｂ）参照）。例えば再開シミュレータ３２２は、最新のリアル環境情報が含む機器情報に基づいて、複数のローカル機器２のそれぞれの動作可否情報を取得する。
【０１００】
データ管理装置３００は、再開評価部３２３と、再開動画再生部３２４とを更に備えていてもよい。再開評価部３２３は、予め定められた評価条件に基づいて、再開シミュレータ３２２が再開させた１以上のバーチャルローカル機器２ｖの動作を評価する。例えば再開評価部３２３は、１以上のバーチャルローカル機器２ｖが動作を再開した後、バーチャル情報収集部３１４が収集してバーチャル情報データベース３１５に蓄積したバーチャルデータセットに基づいて、バーチャルローカル機器２ｖの動作を評価する。
【０１０１】
評価条件の具体例を以下に示す。
例２−１）  いずれのバーチャルローカル機器２ｖも他のバーチャルローカル機器２ｖに衝突せず：ＯＫ／１以上のバーチャルローカル機器２ｖが他のバーチャルローカル機器２ｖに衝突：ＮＧ
例２−２）  いずれのバーチャルローカル機器２ｖも周辺物体に衝突せず：ＯＫ／１以上のバーチャルローカル機器２ｖが周辺物体に衝突：ＮＧ
例２−３）  いずれのバーチャルローカル機器２ｖもバーチャルワーク９ｖに衝突せず：ＯＫ／１以上のバーチャルローカル機器２ｖがバーチャルワーク９ｖに衝突：ＮＧ
【０１０２】
例えば、再開シミュレータ３２２が、動作不可である１以上のローカル機器２に対応する１以上のバーチャルローカル機器２ｖを停止させた状態で、動作可である１以上のローカル機器２に対応する１以上のバーチャルローカル機器２ｖの動作を再開させる場合、再開評価部３２３は、動作不可である１以上のローカル機器２に対応する１以上のバーチャルローカル機器２ｖと、動作可である１以上のローカル機器２に対応する１以上のバーチャルローカル機器２ｖとの衝突の有無を評価してもよい。
【０１０３】
再開評価部３２３は、１以上のバーチャルローカル機器２ｖの動作に基づいて、動作プログラムに基づく１以上のバーチャルローカル機器２ｖの動作を再開した後における動作可能期間を１以上のバーチャルローカル機器２ｖごとに算出してもよい。例えば再開評価部３２３は、１以上のバーチャルローカル機器２ｖの動作において、上述した評価条件に基づく評価結果がＯＫとなる期間を動作可能期間として算出する。
【０１０４】
再開動画再生部３２４は、再開シミュレータが再開させた１以上のバーチャルローカル機器２ｖの動作の動画を表示させる。例えば再開動画再生部３２４は、１以上のバーチャルローカル機器２ｖの動作が再開した後、バーチャル情報収集部３１４が収集してバーチャル情報データベース３１５に蓄積したバーチャル環境情報と、モデル格納部３１１が記憶する複数のバーチャルローカル機器２ｖのモデルと、複数のバーチャルローカル機器２ｖの周辺環境のモデルとに基づいて、バーチャル空間における複数のバーチャルローカル機器２ｖのＣＧ画像のアニメーションを生成し、生成したアニメーションを後述の表示デバイス３９５等に表示させる。
【０１０５】
データ管理装置３００は、再開指示取得部３２５と、動作再開部３２６とを更に備えてもよい。再開指示取得部３２５は、再開評価部３２３による評価結果と、再開指示入力部とを含む再開指示画面を後述の表示デバイス３９５等に表示させる。再開指示取得部３２５は、再開動画再生部３２４が再生する動画の表示ウィンドウを更に含む再開指示画面を表示させてもよい。
【０１０６】
動作再開部３２６は、再開評価部３２３による評価結果に基づいて、動作プログラムに基づく１以上のローカル機器２の動作の少なくとも一部をコントローラ６に再開させる。動作の再開対象である１以上のローカル機器２は、１以上のロボット（例えばロボット２Ｂ，２Ｃ、又は移動型ロボット２Ｄ）を含む。例えば動作再開部３２６は、再開評価部３２３によりＯＫと評価された１以上のローカル機器２の動作の少なくとも一部を再開させる再開指令を指令出力部２１６に出力する。これに応じ、指令出力部２１６は、再開対象の１以上のローカル機器２のローカルコントローラ１００に、中断したタスクを再開させ、タスクの進捗に応じた実行指令の出力を再開する。
【０１０７】
動作再開部３２６は、再開指示画面における再開指示入力部への操作（ユーザによる操作）に基づいて、動作プログラムに基づく１以上のローカル機器２の動作をコントローラ６に再開させてもよい。上述のように、再開指示画面は、再開評価部３２３による評価結果の表示と、再開指示入力部の表示とを含んでいる。このため、ユーザは、再開評価部３２３による評価結果の表示に基づいて、再開指示入力部を操作することとなる。したがって、再開指示画面における再開指示入力部への操作に基づいて、動作プログラムに基づく１以上のローカル機器２の動作をコントローラ６に再開させることは、再開評価部３２３による評価結果に基づいて、動作プログラムに基づく１以上のローカル機器２の動作を再開させることに含まれる。
【０１０８】
動作プログラムに基づく１以上のローカル機器２の動作の少なくとも一部を再開させることは、動作の中断時点以降の動作指令に基づいて１以上のローカル機器２の少なくとも一部を動作させる第１モードの再開と、動作の中断時点より前の動作指令に基づいて１以上のローカル機器２の少なくとも一部を動作させる第２モードの再開とを含んでもよい。第１モードは、動作の中断時点より前の動作指令と、動作の中断時点以降の動作指令とに基づいて１以上のローカル機器２の少なくとも一部を動作させることを含む。
【０１０９】
第２モードは、動作の中断時点より前の動作指令に基づき、当該動作指令の開始位置まで戻るように１以上のローカル機器２の少なくとも一部を動作させることを含む。再開シミュレータ３２２は、第１モード及び第２モードを含む複数の再開モードごとに、バーチャルコントローラ７により動作プログラムに基づいて１以上のバーチャルローカル機器２ｖの動作を再開させてもよい。この場合、再開評価部３２３は、複数の再開モードごとに１以上のバーチャルローカル機器２ｖの動作を評価してもよい。
【０１１０】
再開指示取得部３２５は、再開評価部３２３による複数の再開モードごとの評価結果と、複数の再開モードのいずれかを選択可能な再開指示入力部とを含む再開指示画面を表示させてもよい。再開指示取得部３２５は、１以上のローカル機器２ごとの動作可能期間と、再開時点を指定可能な再開指示入力部とを含む再開指示画面を表示させてもよい。再開指示取得部３２５は、１以上のローカル機器２ごとの動作可能期間と、再開した動作の終了時点を指定可能な再開指示入力部とを含む再開指示画面を表示させてもよい。
【０１１１】
図１４は、再開指示画面を例示する模式図である。図１４に示す再開指示画面３５０は、動画ウィンドウ３５１と、評価結果ウィンドウ３５２と、評価結果ウィンドウ３５３と、再開指示入力部３６０とを有する。
【０１１２】
動画ウィンドウ３５１は、再開動画再生部３２４が再生する動画を表示するウィンドウである。再開動画再生部３２４は、動画を動画ウィンドウ３５１に再生させる。評価結果ウィンドウ３５２は、再開評価部３２３による評価結果を表示するウィンドウである。再開指示取得部３２５は、再開評価部３２３による評価結果をテキスト等で評価結果ウィンドウ３５２に表示させる。評価結果ウィンドウ３５３は、動作を再開した後における１以上のローカル機器２ごとの動作可能期間を表示するウィンドウである。再開指示取得部３２５は、再開評価部３２３による評価結果に基づいて動作可能期間を導出し、導出結果をテキスト等で評価結果ウィンドウ３５３に表示させる。
【０１１３】
再開指示入力部３６０は、１以上のローカル機器２の動作の再開を指示する操作入力部である。例えば再開指示入力部３６０は、モード選択部３６１と、再開時点指定部３６２と、終了時点指定部３６３と、再生指示ボタン３６４と、動作再開指示ボタン３６５とを有する。
【０１１４】
モード選択部３６１は、例えばラジオボタン等により、再開モードを選択する操作入力部である。図示の例においては、第１モードに相当する「継続モード」と、第２モードに相当する「原点復帰モード」とが選択可能となっている。原点復帰モードは、動作プログラムにおける最初の動作指令の開始位置まで戻るモードである。
【０１１５】
再開時点指定部３６２は、上記継続モードにおける動作の再開時点を入力する操作入力部である。例えば再開時点指定部３６２は、中断ステップに対し、何ステップ後から再開させるかを入力する操作入力部である。ここでの「ステップ」は、１つの動作指令に対応する一動作を意味する。
【０１１６】
終了時点指定部３６３は、上記継続モードにおける動作の終了時点を入力する操作入力部である。図示の例においては、中断タスク完了まで、指定タスク完了まで、全タスク完了までのいずれかをラジオボタン等により選択可能となっている。終了時点指定部３６３は、「指定タスク完了まで」が選択される場合に「指定タスク」を入力するための入力部を更に含んでいる。
【０１１７】
再生指示ボタン３６４は、１以上のバーチャルローカル機器２ｖの動作の動画再生を指示する操作入力部である。再生指示ボタン３６４が操作された場合に、再開動画再生部３２４は、モード選択部３６１、再開時点指定部３６２、及び終了時点指定部３６３への入力に基づいて、１以上のバーチャルローカル機器２ｖの動作の動画を動画ウィンドウ３５１に表示させる。例えば再開動画再生部３２４は、モード選択部３６１で選択された再生モードにて、再開時点指定部３６２で指定された再開時点から、終了時点指定部３６３で指定された終了時点までの１以上のバーチャルローカル機器２ｖの動作の動画を動画ウィンドウ３５１に再生させる。
【０１１８】
動作再開指示ボタン３６５は、１以上のローカル機器２の動作の再開を指示する操作入力部である。動作再開部３２６は、動作再開指示ボタン３６５への操作入力に応じて、動作プログラムに基づく１以上のローカル機器２の動作をコントローラ６に再開させる。例えば動作再開部３２６は、モード選択部３６１で選択された再生モードにて、再開時点指定部３６２で指定された再開時点以降、終了時点指定部３６３で指定された終了時点以前の動作指令に基づいて、１以上のローカル機器２の少なくとも一部の動作をコントローラ６に再開させる。
【０１１９】
再シミュレーション指示ボタン３６６は、再開シミュレーションの再実行を指示する操作入力部である。中断状態再現部３２１は、再シミュレーション指示ボタン３６６への操作入力に応じ、リアル情報データベース３１３の最新のリアル環境情報の複製を、最新のバーチャル環境情報として環境情報格納部５１５に再度格納する。また、中断状態再現部３２１は、リアル情報データベース３１３の最新のリアル進捗情報の複製を、最新のバーチャル進捗情報としてプロセス格納部５１４に再度格納する。その後、再開シミュレータ３２２は、動作プログラムに基づく１以上のバーチャルローカル機器２ｖの動作をバーチャルコントローラ７に再開させる。
【０１２０】
データ管理装置３００は、シミュレーション条件取得部３２７を更に有してもよい。シミュレーション条件取得部３２７は、第１モード及び第２モードを含む複数の再開モードのいずれかを選択可能なシミュレーション条件指定画面を表示させる。この場合、再開シミュレータ３２２は、シミュレーション条件指定画面において選択された再開モードにて、バーチャルコントローラ７により１以上のローカル機器２の動作を再開させる。シミュレーション条件取得部３２７は、動作プログラムにおけるシミュレーション開始時点を指定可能なシミュレーション条件指定画面を表示させてもよい。シミュレーション条件取得部３２７は、動作プログラムにおけるシミュレーション終了時点を指定可能なシミュレーション条件指定画面を表示させてもよい。
【０１２１】
図１５は、シミュレーション条件指定画面を例示する模式図である。図１５に示すシミュレーション条件指定画面３７０は、モード選択部３７１と、開始時点指定部３７２と、終了時点指定部３７３と、シミュレーション指示ボタン３７４とを有する。
【０１２２】
モード選択部３７１は、例えばラジオボタン等により、再開モードを選択する操作入力部である。図示の例においては、第１モードに相当する上記「継続モード」と、第２モードに相当する上記「原点復帰モード」とが選択可能となっている。
【０１２３】
開始時点指定部３７２は、上記継続モードにおける動作の再開時点を入力する操作入力部である。例えば開始時点指定部３７２は、中断ステップに対し、何ステップ後から再開させるかを入力する操作入力部である。
【０１２４】
終了時点指定部３７３は、上記継続モードにおける動作の終了時点を入力する操作入力部である。図示の例においては、中断タスク完了まで、指定タスク完了まで、全タスク完了までのいずれかをラジオボタン等により選択可能となっている。終了時点指定部３７３は、「指定タスク完了まで」が選択される場合に「指定タスク」を入力するための入力部を更に含んでいる。
【０１２５】
シミュレーション指示ボタン３７４は、１以上のバーチャルローカル機器２ｖの動作の再開を指示する操作入力部である。再開シミュレータ３２２は、シミュレーション指示ボタン３７４への操作入力に応じて、動作プログラムに基づく１以上のバーチャルローカル機器２ｖの動作をバーチャルコントローラ７に再開させる。例えば再開シミュレータ３２２は、モード選択部３７１において選択された再生モードにて、開始時点指定部３７２において指定された開始時点以降、終了時点指定部３７３において指定された終了時点以前の動作指令に基づいて、バーチャルコントローラ７により１以上のバーチャルローカル機器２ｖの動作を再開させる。
【０１２６】
シミュレーション条件取得部３２７は、シミュレーション後に上述した再シミュレーション指示ボタン３６６が操作された場合に、シミュレーション条件指定画面３７０を再度表示させてもよい。
【０１２７】
リアル情報データベース３１３に蓄積されたリアル環境データと、バーチャル情報データベース３１５に蓄積されたバーチャル環境データとは、複数のローカル機器２の動作を中断させるべきか否かの判定に利用可能である。例えば動作中断部２１９は、動作プログラムに基づき複数のローカル機器２が動作している最中におけるリアル空間の状態と、動作プログラムに基づき複数のバーチャルローカル機器２ｖが動作している最中におけるバーチャル空間の状態とに差異が生じた場合に、コントローラ６による複数のローカル機器２の動作を中断させてもよい。
【０１２８】
例えばデータ管理装置３００は、タスク比較部３１６を更に有する。タスク比較部３１６は、リアル情報データベース３１３が蓄積したリアル環境情報と、バーチャル情報データベース３１５が蓄積したバーチャル環境情報とを、プロセスごとの進捗ごとに比較する。プロセスの進捗ごとに比較するとは、上記リアル進捗情報と、上記バーチャル進捗情報とが互いに一致するリアルデータセットとバーチャルデータセットとで、リアル環境情報とバーチャル環境情報とを比較することを意味する。
【０１２９】
動作中断部２１９は、タスク比較部３１６の比較結果に基づいて、リアル空間の状態とバーチャル空間の状態との差異を検出した場合に、コントローラ６による複数のローカル機器２の動作を中断させる。
【０１３０】
図１６に示すように、環境情報格納部２１５は、周辺情報記憶部３２８を含んでいてもよい。周辺情報記憶部３２８は、複数のローカル機器２の他の機械を制御する第２コントローラが、複数のローカル機器２の動作の中断後に他の機械をどのように動作させるかを示す周辺挙動情報を記憶する。この場合、再開評価部３２３は、周辺挙動情報に更に基づいて、１以上のバーチャルローカル機器２ｖの動作を評価してもよい。
【０１３１】
図１６は、他の機械の一例として、ＮＣ加工装置等の加工装置９４を示し、第２コントローラの一例として、加工装置９４を制御する装置コントローラ９５を示している。加工装置９４は、ワーク９を出し入れするための扉９６を有する。例えば、バーチャルローカル機器２ｖが加工装置９４に対するワーク９の搬入又は搬出の動作を再開する場合には、扉９６が開放されているか否かが未知であると、バーチャルローカル機器２ｖが扉９６と衝突するか否かの評価ができない。
【０１３２】
加工装置９４についての周辺挙動の具体例を以下に示す。
例３−１）  複数のローカル機器２の動作が中断した場合、現在実行中の加工を完了させ、扉９６を開いた状態で待機する。
例３−２）  複数のローカル機器２の動作が中断した場合、現在実行中の加工を完了させ、扉９６を閉じた状態で待機し、１以上のローカル機器２の動作が再開したら直ちに扉９６を開く。
例３−３）  複数のローカル機器２の動作が中断した場合、直ちに加工を中断し、１以上のローカル機器２の動作が再開したら加工を再開する。
【０１３３】
周辺挙動情報に基づけば、バーチャルローカル機器２ｖが加工装置９４に対するワーク９の搬入又は搬出の動作を再開する時点で、扉９６が開いているか否かを特定し、特定結果に基づいてバーチャルローカル機器２ｖの動作を評価することができる。周辺挙動情報は、同期通信又は非同期通信により環境更新部２１８が装置コントローラ９５から取得し、環境情報格納部２１５に格納する。
【０１３４】
図１７に示すように、データ管理装置３００は、機能ブロックとして、プログラム取得部３３１と、プログラム生成部３３２と、プログラム配信部３３３とを更に有してもよい。
【０１３５】
プログラム取得部３３１は、各ローカルコントローラ１００において、ティーチングにより登録された動作プログラムを取得し、バーチャルローカルコントローラ４００のプログラム格納部４１１に記憶させる。
【０１３６】
プログラム生成部３３２は、プログラム取得部３３１が取得した動作プログラムに基づいて、バーチャルコントローラ７により複数のバーチャルローカル機器２ｖを動作させることと、複数のバーチャルローカル機器２ｖの動作中におけるバーチャル環境情報に基づいてプログラム格納部４１１の動作プログラムを修正することと、を１以上のバーチャルローカル機器２ｖの動作が所定条件を満たすまで繰り返す。以下、この所定条件を「プログラム成立条件」という。
【０１３７】
プログラム成立条件の具体例としては、いずれのバーチャルローカル機器２ｖも他のバーチャルローカル機器２ｖに衝突しないこと、いずれのバーチャルローカル機器２ｖも周辺物体に衝突しないこと、いずれのバーチャルローカル機器２ｖもバーチャルワーク９ｖに衝突しない（あるいは干渉しない）動作軌跡（パス）であること、等が挙げられる。以下、プログラム格納部４１１においてかかる干渉回避のパスプランニングにより生成された動作軌跡（パス）に基づいてプログラム生成部３３２により修正されたプログラムを、「生成済みプログラム」という。
【０１３８】
プログラム配信部３３３は、プログラム格納部４１１の生成済みプログラムを、対応するローカルコントローラ１００に出力し、当該ローカルコントローラ１００のプログラム格納部１１１に記憶させる。例えばプログラム配信部３３３は、上位コントローラ２００を介して、生成済みプログラムを対応するローカルコントローラ１００に出力する。このローカルコントローラ１００は、生成済みプログラムに基づいて管轄ローカル機器２を動作させる。
【０１３９】
図１８は、制御システム３のハードウェア構成を例示するブロック図である。図１８に示すように、上位コントローラ２００は、回路２９０を有する。回路２９０は、一つ又は複数のプロセッサ２９１と、メモリ２９２と、ストレージ２９３と、通信ポート２９４，２９５と、入出力ポート２９６を含む。ストレージ２９３は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ２９３は、リアル空間において複数のローカル機器２を動作プログラムに基づいて動作させることと、複数のローカル機器２の動作を中断させることと、を上位コントローラ２００に実行させるためのプログラムを記憶している。例えばストレージ２９３は、上述した各機能ブロックを上位コントローラ２００に構成させるためのプログラムを記憶している。
【０１４０】
メモリ２９２は、ストレージ２９３の記憶媒体からロードしたプログラム及びプロセッサ２９１による演算結果を一時的に記憶する。プロセッサ２９１は、メモリ２９２と協働して上記プログラムを実行することで、上位コントローラ２００の各機能ブロックを構成する。通信ポート２９４は、プロセッサ２９１からの指令に従って、第１のネットワーク回線ＮＷ１を介して、ローカルコントローラ１００との間で通信を行う。通信ポート２９５は、プロセッサ２９１からの指令に従って、第２のネットワーク回線ＮＷ２を介して、データ管理装置３００との間で通信を行う。入出力ポート２９６は、プロセッサ２９１からの指令に従って、環境センサ５との間で情報の入出力を行う。
【０１４１】
ローカルコントローラ１００は、回路１９０を有する。回路１９０は、一つ又は複数のプロセッサ１９１と、メモリ１９２と、ストレージ１９３と、通信ポート１９４と、ドライバ回路１９５を含む。ストレージ１９３は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ１９３は、上述した各機能ブロックをローカルコントローラ１００に構成させるためのプログラムを記憶している。
【０１４２】
メモリ１９２は、ストレージ１９３の記憶媒体からロードしたプログラム及びプロセッサ１９１による演算結果を一時的に記憶する。プロセッサ１９１は、メモリ１９２と協働して上記プログラムを実行することで、ローカルコントローラ１００の各機能ブロックを構成する。通信ポート１９４は、プロセッサ１９１からの指令に従って、第１のネットワーク回線ＮＷ１を介して、上位コントローラ２００との間で通信を行う。ドライバ回路１９５は、プロセッサ１９１からの指令に従って、ローカル機器２に駆動電力を出力する。
【０１４３】
データ管理装置３００は、回路３９０を有する。回路３９０は、一つ又は複数のプロセッサ３９１と、メモリ３９２と、ストレージ３９３と、通信ポート３９４と、表示デバイス３９５と、入力デバイス３９６とを含む。ストレージ３９３は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ３９３は、複数のローカル機器２の動作が中断したリアル空間の状態を、バーチャル空間に再現させることと、リアル空間の状態を再現させたバーチャル空間において、バーチャルコントローラにより動作プログラムに基づいて複数のバーチャルローカル機器の動作を再開させることと、データ管理装置３００に実行させるためのプログラムを記憶している。例えばストレージ３９３は、上述した各機能ブロックをデータ管理装置３００に構成させるためのプログラムを記憶している。
【０１４４】
メモリ３９２は、ストレージ３９３の記憶媒体からロードしたプログラム及びプロセッサ３９１による演算結果を一時的に記憶する。プロセッサ３９１は、メモリ３９２と協働して上記プログラムを実行することで、データ管理装置３００の各機能ブロックを構成する。通信ポート３９４は、プロセッサ３９１からの指令に従って、第２のネットワーク回線ＮＷ２を介して、上位コントローラ２００との間で通信を行う。表示デバイス３９５及び入力デバイス３９６は、データ管理装置３００のユーザインタフェースとして機能する。表示デバイス３９５は、例えば液晶モニタ等を含み、ユーザに対する情報表示に用いられる。入力デバイス３９６は、例えばキーパッド等であり、ユーザによる入力情報を取得する。表示デバイス３９５及び入力デバイス３９６は、所謂タッチパネルのように一体化されていてもよい。表示デバイス３９５及び入力デバイス３９６は、データ管理装置３００に接続される外部機器に設けられていてもよいし、データ管理装置３００に組み込まれていてもよい。
【０１４５】
なお、回路１９０，２９０，３９０は、必ずしもプログラムにより各機能を構成するものに限られない。例えば回路１９０，２９０，３９０は、専用の論理回路又はこれを集積したＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）により少なくとも一部の機能を構成してもよい。ローカルコントローラ１００、上位コントローラ２００及びデータ管理装置３００のそれぞれは、互いに通信可能な複数のコンピュータにより構成されていてもよく、各コンピュータが回路を有していてもよい。例えばデータ管理装置３００は、データ収集装置と、シミュレーション装置とを含む複数のコンピュータにより構成されていてもよい。この場合、上述したデータ管理装置３００の各機能ブロックは、複数のコンピュータに分散して構成されてもよい。一例として、バーチャルローカルコントローラ４００、バーチャル上位コントローラ５００、モデル格納部３１１、プログラム取得部３３１、プログラム生成部３３２、プログラム配信部３３３、中断状態再現部３２１、再開シミュレータ３２２、再開評価部３２３、再開動画再生部３２４、再開指示取得部３２５、動作再開部３２６及びシミュレーション条件取得部３２７がシミュレーション装置に構成され、リアル情報収集部３１２、リアル情報データベース３１３、バーチャル情報収集部３１４、バーチャル情報データベース３１５及びタスク比較部３１６がデータ収集装置に構成されていてもよい。データ収集装置は、各ローカルコントローラ１００のタスクプログラム１３０及び制御パラメータの収集・記憶と、各ローカルコントローラ１００へのタスクプログラム１３０の配信とを更に行ってもよい。この場合、プログラム取得部３３１はデータ収集装置を介してタスクプログラム１３０をローカルコントローラ１００から取得してもよい。プログラム配信部３３３はデータ収集装置を介して生成済みのプログラムをローカルコントローラ１００に出力してもよい。また、シミュレーション装置としての機能を一まとめにしたプログラムにより１台のコンピュータにシミュレーション装置が構成され、データ収集装置としての機能を一まとめにしたプログラムにより同じ１台のコンピュータにデータ収集装置が構成されていてもよい。
【０１４６】
〔制御手順〕
制御方法の一例として、制御システム３が行う制御手順を示す。この手順は、リアル空間において１以上のロボットを動作プログラムに基づいて動作させることと、１以上のロボットの動作を中断させることと、１以上のロボットの動作が中断したリアル空間の状態を、バーチャル空間に再現させることと、リアル空間の状態を再現させたバーチャル空間において、バーチャルコントローラにより動作プログラムに基づいて１以上のバーチャルロボットの動作を再開させることと、を含む。
【０１４７】
以下、制御手順の具体例を示す。この具体例に係る制御手順は、データ管理装置３００によるプログラム生成手順と、上位コントローラ２００による制御手順と、ローカルコントローラ１００による制御手順と、データ管理装置３００によるデータ管理手順と、上位コントローラ２００による動作の再開手順とを含む。以下、各手順を詳細に例示する。
【０１４８】
（プログラム生成手順）
図１９に示すように、データ管理装置３００は、まずステップＳ０１，Ｓ０２，Ｓ０３を実行する。ステップＳ０１では、プログラム取得部３３１が、各ローカルコントローラ１００において、ティーチングにより登録された動作プログラムを取得し、バーチャルローカルコントローラ４００のプログラム格納部４１１に記憶させる。
【０１４９】
ステップＳ０２では、プログラム生成部３３２が、プログラム取得部３３１が取得した動作プログラムに基づいて、バーチャルコントローラ７により複数のバーチャルローカル機器２ｖを動作させる。バーチャルローカル機器２ｖの動作期間中には、バーチャル情報収集部３１４が上記バーチャルデータセットをバーチャル情報データベース３１５に蓄積する。
【０１５０】
ステップＳ０３では、プログラム生成部３３２が、バーチャル情報データベース３１５に蓄積されたバーチャルデータセットに基づいて、複数のバーチャルローカル機器２ｖの動作が上記プログラム成立条件を満たすか否かを確認する。
【０１５１】
ステップＳ０３において、複数のバーチャルローカル機器２ｖの動作が上記プログラム成立条件を満たさないと判定した場合、データ管理装置３００はステップＳ０４を実行する。ステップＳ０４では、プログラム生成部３３２が、バーチャル情報データベース３１５に蓄積されたバーチャルデータセット（複数のバーチャルローカル機器２ｖの動作中におけるバーチャル環境情報）に基づいてプログラム格納部４１１の動作プログラムを修正する。その後、データ管理装置３００は処理をステップＳ０１に戻す。以後、複数のバーチャルローカル機器２ｖの動作が上記プログラム成立条件を満たすまで、バーチャルコントローラ７により複数のバーチャルローカル機器２ｖを動作させることと、複数のバーチャルローカル機器２ｖの動作がプログラム成立条件を満たすか否かを確認することと、複数のバーチャルローカル機器２ｖの動作中におけるバーチャル環境情報に基づいてプログラム格納部４１１の動作プログラムを修正することとが繰り返される。
【０１５２】
ステップＳ０３において、複数のバーチャルローカル機器２ｖの動作が上記プログラム成立条件を満たすと判定した場合、データ管理装置３００はステップＳ０５を実行する。ステップＳ０５では、プログラム配信部３３３が、プログラム格納部４１１の生成済みプログラムを、対応するローカルコントローラ１００に出力し、当該ローカルコントローラ１００のプログラム格納部１１１に記憶させる。以上でプログラム生成手順が完了する。
【０１５３】
（上位コントローラによる制御手順）
図２０に示すように、上位コントローラ２００は、まずステップＳ１１，Ｓ１２，Ｓ１３，Ｓ１４，Ｓ１５，Ｓ１６を実行する。ステップＳ１１では、オーダ取得部２１２が、生産管理コントローラ４からの生産オーダの取得を待機する。ステップＳ１２では、プロセス割当部２１３が、生産オーダが指定するワーク９に対しプロセスを割り当ててプロセス格納部２１４に記憶させる。ステップＳ１３では、指令出力部２１６が、プロセス格納部２１４が記憶するプロセスと、当該プロセスの進捗情報と、環境情報格納部２１５が記憶するリアル環境情報とに基づいて、次タスクの実行指令を出力する。
【０１５４】
ステップＳ１４では、環境更新部２１８が、複数のローカルコントローラ１００のそれぞれからローカル機器２のステータス情報を取得し、環境センサ５の検出結果を取得し、当該ステータス情報及び検出結果に基づいて環境情報を更新する。ステップＳ１５では、進捗更新部２１７が、ステップＳ１４において取得されたステータス情報が含むタスクの完了通知に応じて、プロセス格納部２１４の進捗情報を更新する。ステータス情報がタスクの完了通知を含んでいない場合、進捗情報は変更されない。ステップＳ１６では、動作中断部２１９が、複数のローカル機器２のいずれかの異常がないか否かを確認する。異常の確認手順については別途例示する。
【０１５５】
ステップＳ１６において複数のローカル機器２のいずれにも異常がないと判定した場合、上位コントローラ２００はステップＳ１７を実行する。ステップＳ１７では、指令出力部２１６が、プロセス格納部２１４においてワーク９に割り当てられたプロセスが完了しているかを確認する。例えば指令出力部２１６は、プロセス格納部２１４における全てのタスクが完了しているかを確認する。
【０１５６】
ステップＳ１７において完了していないタスクが残っていると判定した場合、上位コントローラ２００は処理をステップＳ１３に戻す。以後、上位コントローラ２００は、プロセス格納部２１４における全てのタスクが完了するまで、例えば所定周期の同期通信サイクルにてステップＳ１３〜Ｓ１７を繰り返す。
【０１５７】
ステップＳ１７において全てのタスクが完了していると判定した場合、上位コントローラ２００は処理をステップＳ１１に戻す。以後、複数のローカル機器２のいずれかに異常が生じない限り、上位コントローラ２００は以上の処理を繰り返し実行する。
【０１５８】
ステップＳ１６において複数のローカル機器２のいずれかに異常があると判定した場合、上位コントローラ２００はステップＳ２１，Ｓ２２，Ｓ２３を実行する。ステップＳ２１では、動作中断部２１９が、複数のローカル機器２の動作を中断させる。例えば動作中断部２１９は、指令出力部２１６による実行指令の出力を中断させ、複数のローカルコントローラ１００のそれぞれに実行中のタスクを中断させる。
【０１５９】
ステップＳ２２では、環境更新部２１８が、複数のローカルコントローラ１００のそれぞれからローカル機器２のステータス情報を取得し、環境センサ５の検出結果を取得し、当該ステータス情報及び検出結果に基づいて環境情報を更新する。ステップＳ２３では、指令出力部２１６が、動作の再開指令が動作再開部３２６から出力されているかを確認する。
【０１６０】
ステップＳ２３において動作の再開指令が動作再開部３２６から出力されていないと判定した場合、ローカルコントローラ１００は処理をステップＳ２２に戻す。以後、動作再開部３２６から動作の再開指令が出力されるまでは、環境情報格納部２１５の環境情報の更新が繰り返される。これにより、動作の中断中におけるユーザの操作に応じたリアル空間の状態変化が継続的に環境情報に反映される。ステップＳ２３において動作の再開指令が動作再開部３２６から出力されていると判定した場合、動作の再開前における進捗管理手順が完了する。
【０１６１】
図２１は、ステップＳ１６における異常確認手順を例示するフローチャートである。図２１に示すように、上位コントローラ２００は、まずステップＳ３１を実行する。ステップＳ３１では、動作中断部２１９が、環境情報格納部２１５が記憶する環境情報に基づいて、複数のローカル機器２のいずれかに異常があるか否かを確認する。
【０１６２】
ステップＳ３１において複数のローカル機器２のいずれにも異常がないと判定した場合、上位コントローラ２００はステップＳ３２を実行する。ステップＳ３２では、動作中断部２１９が、上記タスク比較部３１６による比較結果に基づいて、リアル空間の状態とバーチャル空間の状態との間に差異があるか否かを確認する。
【０１６３】
ステップＳ３１において複数のローカル機器２のいずれかに異常があると判定した場合、及びステップＳ３２においてリアル空間の状態とバーチャル空間の状態との間に差異があると判定した場合、上位コントローラ２００はステップＳ３３を実行する。ステップＳ３３では、動作中断部２１９が、複数のローカル機器２のいずれかの異常を検知する。
【０１６４】
ステップＳ３２においてリアル空間の状態とバーチャル空間の状態との間に差異がないと判定した場合、動作中断部２１９は、異常を検知することなく異常確認を完了する。
【０１６５】
（ローカルコントローラ１００による制御手順）
図２２に示すように、ローカルコントローラ１００は、まずステップＳ４１，Ｓ４２，Ｓ４３，Ｓ４４を実行する。ステップＳ４１では、制御部１１２が、次タスクの実行指令を待機する。ステップＳ４２では、制御部１１２が、管轄ローカル機器２に、次タスクのうち１制御周期分を実行させる。ステップＳ４３では、ステータス出力部１１３が、管轄ローカル機器２のステータス情報を上位コントローラ２００に出力する。ステップＳ４４では、次タスクの実行が完了したか否かを制御部１１２が確認する。
【０１６６】
ステップＳ４４において次タスクの実行が完了していないと判定した場合、ローカルコントローラ１００は処理をステップＳ４２に戻す。以後、次タスクの実行が完了するまで、ローカルコントローラ１００は所定周期の制御サイクルにてステップＳ４２〜Ｓ４４を繰り返す。制御サイクルは、上記同期通信サイクルと同期していてもよい。
【０１６７】
ステップＳ４４において次タスクの実行が完了したと判定した場合、ローカルコントローラ１００はステップＳ４５を実行する。ステップＳ４５では、ステータス出力部１１３が、次タスクの完了通知をステータス情報に含めて上位コントローラ２００に出力する。その後、ローカルコントローラ１００は処理をステップＳ４１に戻す。ローカルコントローラ１００は以上の処理を繰り返す。
【０１６８】
（データ管理手順）
データ管理装置３００が実行するデータ管理手順は、バーチャル環境情報の収集手順と、リアル環境情報の収集手順と、再開シミュレーション手順とを含む。以下、各手順を詳細に例示する。
【０１６９】
（バーチャル環境情報の収集手順）
図２３に示すように、データ管理装置３００は、Ｓ５１，Ｓ５２，Ｓ５３を順に実行する。ステップＳ５１では、バーチャル上位コントローラ５００が生産オーダに応じたプロセスの実行を開始するのを、バーチャル情報収集部３１４が待機する。
【０１７０】
ステップＳ５２では、バーチャル情報収集部３１４が、バーチャル環境情報を環境情報格納部５１５から取得し、バーチャル空間におけるプロセスごとの進捗情報であるバーチャル進捗情報をプロセス格納部５１４から取得し、これらを対応付けたバーチャルデータセットをバーチャル情報データベース３１５に蓄積させる。ステップＳ５３では、バーチャル上位コントローラ５００によるプロセスの実行が完了したかをバーチャル情報収集部３１４が確認する。
【０１７１】
ステップＳ５３においてバーチャル上位コントローラ５００によるプロセスの実行が完了していないと判定した場合、データ管理装置３００は処理をステップＳ５２に戻す。以後、データ管理装置３００は、バーチャル上位コントローラ５００によるプロセスの実行が完了するまで、バーチャルデータセットの取得・蓄積を繰り返す。ステップＳ５３においてバーチャル上位コントローラ５００によるプロセスの実行が完了したと判定した場合、バーチャル環境情報の収集手順が完了する。
【０１７２】
（リアル環境情報の収集手順）
図２４に示すように、データ管理装置３００は、まずステップＳ６１，Ｓ６２，Ｓ６３を実行する。ステップＳ６１では、上位コントローラ２００が生産オーダに応じたプロセスの実行を開始するのをリアル情報収集部３１２が待機する。ステップＳ６２では、リアル情報収集部３１２が、リアル環境情報を環境情報格納部２１５から取得し、リアル進捗情報をプロセス格納部２１４から取得し、これらを対応付けたリアルデータセットをリアル情報データベース３１３に蓄積させる。ステップＳ６３では、動作中断部２１９が複数のローカル機器２の動作を中断させていないか否かを、リアル情報収集部３１２が確認する。
【０１７３】
ステップＳ６３において動作中断部２１９が複数のローカル機器２の動作を中断させていないと判定した場合、データ管理装置３００はステップＳ６４を実行する。ステップＳ６４では、上位コントローラ２００によるプロセスの実行が完了したかをリアル情報収集部３１２が確認する。
【０１７４】
ステップＳ６４において上位コントローラ２００によるプロセスの実行が完了していないと判定した場合、データ管理装置３００は処理をステップＳ６２に戻す。以後、データ管理装置３００は、上位コントローラ２００によるプロセスの実行が完了するまで、リアルデータセットの取得・蓄積を繰り返す。ステップＳ６４において上位コントローラ２００によるプロセスの実行が完了したと判定した場合、リアル環境情報の収集手順が完了する。
【０１７５】
ステップＳ６３において動作中断部２１９が複数のローカル機器２の動作を中断させていると判定した場合、データ管理装置３００は、後述の再開シミュレーション手順（ステップＳ６５）を実行する。
【０１７６】
（再開シミュレーション手順）
図２５に示すように、データ管理装置３００は、まずステップＳ７１，Ｓ７２，Ｓ７３を実行する。ステップＳ７１では、シミュレーション条件取得部３２７が、上述したシミュレーション条件指定画面３７０を表示させる。
【０１７７】
ステップＳ７２では、中断状態再現部３２１が、リアル情報収集部３１２により環境情報格納部２１５から収集され、リアル情報データベース３１３に蓄積された最新のリアル環境情報の複製を、最新のバーチャル環境情報として環境情報格納部５１５に格納する。また、中断状態再現部３２１は、リアル情報収集部３１２によりプロセス格納部２１４から収集され、リアル情報データベース３１３に蓄積された最新のリアル進捗情報の複製を、最新のバーチャル進捗情報としてプロセス格納部５１４に格納する。
【０１７８】
ステップＳ７３では、シミュレーション指示ボタン３７４の操作によりシミュレーション指令が入力されたか否かを再開シミュレータ３２２が確認する。
【０１７９】
ステップＳ７３においてシミュレーション指令が入力されていないと判定した場合、データ管理装置３００は処理をステップＳ７２に戻す。以後、シミュレーション指令が入力されるまでは、リアル空間の状態をバーチャル空間に再現させることが繰り返される。これにより、バーチャル空間の状態が、リアル空間の最新状態に継続的に合わせられる。
【０１８０】
ステップＳ７３においてシミュレーション指令が入力されたと判定した場合、データ管理装置３００はステップＳ７４，Ｓ７５，Ｓ７６，Ｓ７７，Ｓ７８を実行する。ステップＳ７４では、再開シミュレータ３２２が、シミュレーション指示ボタン３７４への操作入力に応じて、動作プログラムに基づく１以上のバーチャルローカル機器２ｖの動作をバーチャルコントローラ７に再開させる。ステップＳ７５では、再開評価部３２３が、１以上のバーチャルローカル機器２ｖの動作完了を待機する。
【０１８１】
ステップＳ７６では、１以上のバーチャルローカル機器２ｖが動作を再開した後、バーチャル情報収集部３１４が収集してバーチャル情報データベース３１５に蓄積したバーチャルデータセットに基づいて、再開評価部３２３がバーチャルローカル機器２ｖの動作を評価する。ステップＳ７７では、再開指示取得部３２５が、再開評価部３２３による評価結果に基づいて、再開指示画面３５０を表示させる。ステップＳ７８では、動作再開指示ボタン３６５が操作されたか否かを動作再開部３２６が確認する。
【０１８２】
ステップＳ７８において動作再開指示ボタン３６５が操作されていないと判定した場合、データ管理装置３００はステップＳ８１を実行する。ステップＳ８１では、再シミュレーション指示ボタン３６６が操作されたか否かを再開シミュレータ３２２が確認する。
【０１８３】
ステップＳ８１において再シミュレーション指示ボタン３６６が操作されていないと判定した場合、データ管理装置３００はステップＳ８２を実行する。ステップＳ８２では、再生指示ボタン３６４が操作されたか否かを再開動画再生部３２４が確認する。
【０１８４】
ステップＳ８２において再生指示ボタン３６４が操作されていないと判定した場合、データ管理装置３００は処理をステップＳ７８に戻す。以後、データ管理装置３００は、動作再開指示ボタン３６５、再シミュレーション指示ボタン３６６、及び再生指示ボタン３６４のいずれかが操作されるのを待機する。
【０１８５】
ステップＳ８２において再生指示ボタン３６４が操作されたと判定した場合、データ管理装置３００はステップＳ８３を実行する。ステップＳ８３では、再開動画再生部３２４が、モード選択部３６１、再開時点指定部３６２、及び終了時点指定部３６３への入力に基づいて、１以上のバーチャルローカル機器２ｖの動作の動画を動画ウィンドウ３５１に表示させる。
【０１８６】
ステップＳ８１において再シミュレーション指示ボタン３６６が操作されたと判定した場合、データ管理装置３００は処理をステップＳ７１に戻す。これにより、シミュレーション条件指定画面３７０が再度表示される。
【０１８７】
ステップＳ７８において動作再開指示ボタン３６５が操作されたと判定した場合、データ管理装置３００はステップＳ８４を実行する。ステップＳ８４では、動作再開部３２６が、モード選択部３６１で選択された再生モードにて、再開時点指定部３６２で指定された再開時点以降、終了時点指定部３６３で指定された終了時点以前の動作指令に基づいて、１以上のローカル機器２の少なくとも一部の動作の再開指令を出力する。以上で再開シミュレーション手順が完了する。
【０１８８】
（上位コントローラによる動作の再開手順）
図２６に示すように、上位コントローラ２００は、ステップＳ９１，Ｓ９２，Ｓ９３，Ｓ９４，Ｓ９５，Ｓ９６を順に実行する。ステップＳ９１では、指令出力部２１６が、動作の再開指令を待機する。ステップＳ９２では、指令出力部２１６が、再開対象の１以上のローカル機器２のローカルコントローラ１００に、中断したタスクの再開指令を出力する。中断したタスクの再開指令を取得したローカルコントローラ１００は、管轄ローカル機器２に中断したタスクを再開させる。
【０１８９】
ステップＳ９３では、プロセス格納部２１４が記憶するプロセスと、当該プロセスの進捗情報と、環境情報格納部２１５が記憶するリアル環境情報とに基づいて、指令出力部２１６が次タスクの実行指令を出力する。ステップＳ９４では、環境更新部２１８が、複数のローカルコントローラ１００のそれぞれからローカル機器２のステータス情報を取得し、環境センサ５の検出結果を取得し、当該ステータス情報及び検出結果に基づいて環境情報を更新する。
【０１９０】
ステップＳ９５では、進捗更新部２１７が、ステップＳ１４において取得されたステータス情報が含むタスクの完了通知に応じて、プロセス格納部２１４の進捗情報を更新する。ステータス情報がタスクの完了通知を含んでいない場合、進捗情報は変更されない。ステップＳ９６では、指令出力部２１６が、再開指令により指定された終了時点までの動作が完了したか否かを確認する。
【０１９１】
ステップＳ９６において終了時点までの動作が完了していないと判定した場合、上位コントローラ２００は処理をステップＳ９３に戻す。以後、上記終了時点に到達するまで、動作を再開した１以上のローカル機器２の動作が継続される。ステップＳ９６において終了時点までの動作が完了したと判定した場合、動作の再開手順が完了する。
【０１９２】
〔本実施形態の効果〕
以上に説明したように、制御システム３は、リアル空間において１以上のロボット２Ｂ，２Ｃを動作プログラムに基づいて動作させるコントローラ６と、バーチャル空間において、１以上のロボットにそれぞれ対応する１以上のバーチャルロボットを動作プログラムに基づいて動作させるバーチャルコントローラ７と、コントローラ６による１以上のロボット２Ｂ，２Ｃの動作を中断させる動作中断部２１９と、１以上のロボット２Ｂ，２Ｃの動作が中断したリアル空間の状態を、バーチャル空間に再現させる中断状態再現部３２１と、中断状態再現部３２１がリアル空間の状態を再現させたバーチャル空間において、バーチャルコントローラ７により動作プログラムに基づいて１以上のバーチャルロボット２Ｂｖ，２Ｃｖの動作を再開させる再開シミュレータ３２２と、を備える。
【０１９３】
１以上のロボットの動作が中断した後も、１以上のロボットは動作できる状態である場合、動作中断の必要性がなくなった時点で１以上のロボットの動作を直ちに再開させ、システムのダウンタイムを最小限に留めることが望ましい。しかしながら、１以上のロボットの動作が中断する際には、１以上のロボットの周辺環境に想定外の変化が生じている可能性がある。
【０１９４】
これに対し、本制御システム３によれば、１以上のロボット２Ｂ，２Ｃの動作が中断したリアル空間の状態をバーチャル空間に再現させた上で、そのバーチャル空間において１以上のバーチャルロボット２Ｂｖ，２Ｃｖの動作を再開させることで、リアル空間において１以上のロボット２Ｂ，２Ｃの動作を再開させた場合のシミュレーションを容易に行うことができる。これにより、１以上のロボット２Ｂ，２Ｃの動作を再開させた場合に生じる事象を、実際の動作再開に先立って迅速に把握することができる。従って、システムの停止時における迅速な対処に有効である。
【０１９５】
制御システム３は、リアル空間の状態を表すリアル環境情報を格納する環境情報格納部２１５と、１以上のロボット２Ｂ，２Ｃの動作に応じて環境情報格納部２１５に格納されたリアル環境情報を更新する環境更新部２１８と、を更に備え、中断状態再現部３２１は、環境情報格納部２１５に格納されたリアル環境情報に基づいて、リアル空間の状態を、バーチャル空間に再現させてもよい。この場合、１以上のロボット２Ｂ，２Ｃの動作中に、環境情報格納部２１５のリアル環境情報をリアルタイムに更新しておくことで、１以上のロボット２Ｂ，２Ｃの動作が中断したリアル空間の状態を迅速にバーチャル空間に再現させることができる。
【０１９６】
制御システム３は、予め定められた評価条件に基づいて、再開シミュレータ３２２が再開させた１以上のバーチャルロボット２Ｂｖ，２Ｃｖの動作を評価する再開評価部３２３を更に備えていてもよい。この場合、評価結果に基づくことで、１以上のロボット２Ｂ，２Ｃの動作を再開させた場合に生じる事象をより的確にユーザに把握させることができる。従って、システムの停止時における迅速な対処に更に有効である。
【０１９７】
制御システム３は、再開シミュレータ３２２が再開させた１以上のバーチャルロボット２Ｂｖ，２Ｃｖの動作の動画を表示させる再開動画再生部３２４を更に備えていてもよい。この場合、１以上のバーチャルロボット２Ｂｖ，２Ｃｖの動作の動画表示によって、１以上のロボット２Ｂ，２Ｃの動作を再開させた場合に生じる事象をより的確にユーザに把握させることができる。従って、システムの停止時における迅速な対処に更に有効である。
【０１９８】
１以上のロボット２Ｂ，２Ｃは複数のロボット２Ｂ，２Ｃを含み、１以上のバーチャルロボット２Ｂｖ，２Ｃｖは複数のロボットに２Ｂ，２Ｃそれぞれ対応する複数のバーチャルロボット２Ｂｖ，２Ｃｖを含み、動作中断部２１９は、複数のロボット２Ｂ，２Ｃのいずれかの異常を検知した場合に複数のロボット２Ｂ，２Ｃの動作を中断させ、再開シミュレータ３２２は、動作を中断した複数のロボット２Ｂ，２Ｃの動作可否情報を複数のロボット２Ｂ，２Ｃごとにコントローラ６から取得し、動作不可である１以上のロボット２Ｂ，２Ｃに対応する１以上のバーチャルロボット２Ｂｖ，２Ｃｖを停止させた状態で、動作可である１以上のロボット２Ｂ，２Ｃに対応する１以上のバーチャルロボット２Ｂｖ，２Ｃｖの動作を再開させ、再開評価部３２３は、動作不可である１以上のロボット２Ｂ，２Ｃに対応する１以上のバーチャルロボット２Ｂｖ，２Ｃｖと、動作可である１以上のロボット２Ｂ，２Ｃに対応する１以上のバーチャルロボット２Ｂｖ，２Ｃｖとの衝突の有無を評価してもよい。この場合、動作を再開させられないロボット２Ｂ，２Ｃも存在し得ることも踏まえた柔軟なシミュレーションを行うことができる。従って、システムの停止時における迅速な対処に更に有効である。
【０１９９】
制御システム３は、再開評価部３２３による評価結果に基づいて、動作プログラムに基づく１以上のロボット２Ｂ，２Ｃの動作の少なくとも一部をコントローラ６に再開させる動作再開部３２６を更に備えていてもよい。この場合、再開評価部３２３による評価結果に基づくことで、１以上のロボット２Ｂ，２Ｃの動作を適切に再開させることができる。
【０２００】
制御システム３は、再開評価部３２３による評価結果と、再開指示入力部３６０とを含む再開指示画面３５０を表示させる再開指示取得部３２５を更に備え、動作再開部３２６は、再開指示画面３５０における再開指示入力部３６０への操作に基づいて、動作プログラムに基づく１以上のロボット２Ｂ，２Ｃの動作をコントローラ６に再開させてもよい。この場合、再開評価部３２３による評価結果と、当該評価結果に基づくユーザ判断とに基づくことで、１以上のロボット２Ｂ，２Ｃの動作をより適切に再開させることができる。
【０２０１】
動作プログラムは時系列の複数の動作指令を含み、動作プログラムに基づく１以上のロボット２Ｂ，２Ｃの動作の少なくとも一部を再開させることは、動作の中断時点以降の動作指令に基づいて１以上のロボット２Ｂ，２Ｃの少なくとも一部を動作させる第１モードの再開と、動作の中断時点より前の動作指令に基づいて１以上のロボット２Ｂ，２Ｃの少なくとも一部を動作させる第２モードの再開とを含み、再開シミュレータ３２２は、第１モード及び第２モードを含む複数の再開モードごとに、バーチャルコントローラ７により動作プログラムに基づいて１以上のバーチャルロボット２Ｂｖ，２Ｃｖの動作を再開させ、再開評価部３２３は、複数の再開モードごとに１以上のバーチャルロボット２Ｂｖ，２Ｃｖの動作を評価し、再開指示取得部３２５は、再開評価部３２３による複数の再開モードごとの評価結果と、複数の再開モードのいずれかを選択可能な再開指示入力部３６０とを含む再開指示画面３５０を表示させ、動作再開部３２６は、再開指示入力部３６０において選択された再開モードにて、動作プログラムに基づく１以上のロボット２Ｂ，２Ｃの動作をコントローラ６に再開させてもよい。この場合、複数の再開モードのそれぞれに対するシミュレーション結果に基づいて、複数の再開モードのいずれかの適切な選択を促すことができる。従って、１以上のロボット２Ｂ，２Ｃの動作をより適切に再開させることができる。
【０２０２】
動作プログラムは時系列の複数の動作指令を含み、動作プログラムに基づく１以上のロボット２Ｂ，２Ｃの動作の少なくとも一部を再開させることは、動作の中断時点以降の動作指令に基づいて１以上のロボット２Ｂ，２Ｃの少なくとも一部を動作させる第１モードの再開と、動作の中断時点より前の動作指令に基づいて１以上のロボット２Ｂ，２Ｃの少なくとも一部を動作させる第２モードの再開とを含み、制御システム３は、第１モード及び第２モードを含む複数の再開モードのいずれかを選択可能なシミュレーション条件指定画面３７０を表示させるシミュレーション条件取得部３２７を更に備え、再開シミュレータ３２２は、シミュレーション条件指定画面３７０において選択された再開モードにて、バーチャルコントローラ７により１以上のバーチャルロボット２Ｂｖ，２Ｃｖの動作を再開させてもよい。この場合も、再開モードごとのシミュレーション結果に基づいて、複数の再開モードのいずれかの適切な選択を促すことができる。また、ユーザによるモード選択の後に、選択された再開モードのシミュレーションを行うことで、シミュレーション結果をより迅速に提示することができる。
【０２０３】
動作プログラムは時系列の複数の動作指令を含み、再開シミュレータ３２２は、動作の中断時点以降の動作指令に基づいて、バーチャルコントローラ７により１以上のバーチャルロボット２Ｂｖ，２Ｃｖの動作を再開させてもよい。この場合、シミュレーションを容易に実行することができる。
【０２０４】
制御システム３は、動作プログラムにおけるシミュレーション開始時点を指定可能なシミュレーション条件指定画面３７０を表示させるシミュレーション条件取得部３２７を更に備え、再開シミュレータ３２２は、指定されたシミュレーション開始時点以降の動作指令に基づいて、バーチャルコントローラ７により１以上のバーチャルロボット２Ｂｖ，２Ｃｖの動作を再開させてもよい。この場合、ユーザが動作再開時点の調節を望む場合にも対応した柔軟なシミュレーションを行うことができる。
【０２０５】
制御システム３は、動作プログラムにおけるシミュレーション終了時点を指定可能なシミュレーション条件指定画面３７０を表示させるシミュレーション条件取得部３２７を更に備え、再開シミュレータ３２２は、指定されたシミュレーション終了時点以前の動作指令に基づいて、バーチャルコントローラ７により１以上のバーチャルロボット２Ｂｖ，２Ｃｖの動作を再開させてもよい。この場合、ユーザが再開後の動作終了時点の調節を望む場合にも対応した柔軟なシミュレーションを行うことができる。
【０２０６】
再開評価部３２３は、１以上のバーチャルロボット２Ｂｖ，２Ｃｖの動作に基づいて、動作プログラムに基づく１以上のロボット２Ｂ，２Ｃの動作を再開した後における動作可能期間を１以上のロボット２Ｂ，２Ｃごとに算出し、再開指示取得部３２５は、１以上のロボット２Ｂ，２Ｃごとの動作可能期間と、再開時点を指定可能な再開指示入力部３６０とを含む再開指示画面を表示させ、動作再開部３２６は、指定された再開時点以降の動作指令に基づいて、コントローラ６により１以上のロボット２Ｂ，２Ｃの動作の少なくとも一部を再開させてもよい。この場合、動作可能期間と、再開時点を指定可能な再開指示入力部とを提示することで、再開時点の適切な入力を促すことができる。
【０２０７】
再開評価部３２３は、１以上のバーチャルロボット２Ｂｖ，２Ｃｖの動作に基づいて、動作プログラムに基づく１以上のロボット２Ｂ，２Ｃの動作を再開した後における動作可能期間を１以上のロボット２Ｂ，２Ｃごとに算出し、再開指示取得部３２５は、１以上のロボット２Ｂ，２Ｃごとの動作可能期間と、終了時点を指定可能な再開指示入力部３６０とを含む再開指示画面３５０を表示させ、動作再開部３２６は、指定された終了時点以前の動作指令に基づいて、コントローラ６により１以上のロボット２Ｂ，２Ｃの動作の少なくとも一部を再開させてもよい。この場合、動作可能期間と、終了時点を指定可能な再開指示入力部３６０とを提示することで、終了点の適切な入力を促すことができる。
【０２０８】
制御システム３は、１以上のロボット２Ｂ，２Ｃの他の機械を制御する第２コントローラが、１以上のロボット２Ｂ，２Ｃの動作の中断後に他の機械をどのように動作させるかを示す周辺挙動情報を記憶する周辺情報記憶部３２８を更に備え、再開評価部３２３は、周辺挙動情報に更に基づいて、１以上のバーチャルロボット２Ｂｖ、２Ｃｖの動作を評価してもよい。この場合、他の機械の動作も踏まえたより適切なシミュレーションが可能となる。
【０２０９】
制御システム３は、リアル空間の状態を検出する環境センサ５を更に備え、中断状態再現部３２１は、環境センサ５による検出結果に基づいて、１以上のロボット２Ｂ，２Ｃの動作が中断したリアル空間の状態をバーチャル空間に再現させてもよい。この場合、リアル空間をより高い精度でバーチャル空間に再現させることで、より適切なシミュレーションが可能となる。
【０２１０】
中断状態再現部３２１は、コントローラ６が保持する１以上のロボット２Ｂ，２Ｃの状態情報に更に基づいて、１以上のロボット２Ｂ，２Ｃの動作が中断したリアル空間の状態をバーチャル空間に再現させてもよい。この場合、リアル空間をより高い精度でバーチャル空間に再現させることで、より適切なシミュレーションが可能となる。
【０２１１】
動作中断部２１９は、動作プログラムに基づき１以上のロボット２Ｂ，２Ｃが動作している最中におけるリアル空間の状態と、動作プログラムに基づき１以上のバーチャルロボット２Ｂｖ，２Ｃｖが動作している最中におけるバーチャル空間の状態とに差異が生じた場合に、コントローラ６による１以上のロボット２Ｂ，２Ｃの動作を中断させてもよい。この場合、リアル空間のリアル環境情報と、バーチャル空間のバーチャル環境情報との比較によって、リアル空間における異常発生に対して１以上のロボット２Ｂ，２Ｃの動作を迅速に中断させることができる。
【０２１２】
制御システム３は、バーチャルコントローラ７により、動作プログラムに基づいて１以上のバーチャルロボット２Ｂｖ，２Ｃｖを動作させることと、１以上のバーチャルロボット２Ｂｖ，２Ｃｖの動作中におけるバーチャル空間の状態とに基づいて動作プログラムを修正することと、を繰り返すプログラム生成部３３２を更に備え、コントローラ６は、プログラム生成部３３２により修正された動作プログラムに基づいて１以上のロボット２Ｂ，２Ｃを動作させてもよい。この場合、バーチャルロボット２Ｂｖ，２Ｃｖ及びバーチャルコントローラ７によるシミュレーションを、動作プログラムの修正にも有効活用することができる。
【０２１３】
以上、実施形態について説明したが、本開示は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。
【符号の説明】
【０２１４】
１…生産システム（ロボットシステム）、２Ｂ，２Ｃ，１０…ロボット、２Ｂｖ，２Ｃｖ…バーチャルロボット、３…制御システム、５…環境センサ、６…コントローラ、７…バーチャルコントローラ、２１５…環境情報格納部、２１８…環境更新部、２１９…動作中断部、３２１…中断状態再現部、３２２…再開シミュレータ、３２３…再開評価部、３２４…再開動画再生部、３２５…再開指示取得部、３２６…動作再開部、３２７…シミュレーション条件取得部、３２８…周辺情報記憶部、３３２…プログラム生成部、３５０…再開指示画面、３６０…再開指示入力部、３７０…シミュレーション条件指定画面。
【要約】
【課題】ロボットを含む生産システムの停止時における迅速な対処に有効な制御システムを提供する。
【解決手段】制御システム３は、リアル空間において１以上のロボット２Ｂ，２Ｃを動作プログラムに基づいて動作させるコントローラ６と、バーチャル空間において、１以上のロボットにそれぞれ対応する１以上のバーチャルロボットを動作プログラムに基づいて動作させるバーチャルコントローラ７と、コントローラ６による１以上のロボット２Ｂ，２Ｃの動作を中断させる動作中断部２１９と、１以上のロボット２Ｂ，２Ｃの動作が中断したリアル空間の状態を、バーチャル空間に再現させる中断状態再現部３２１と、中断状態再現部３２１がリアル空間の状態を再現させたバーチャル空間において、バーチャルコントローラ７により動作プログラムに基づいて１以上のバーチャルロボット２Ｂｖ，２Ｃｖの動作を再開させる再開シミュレータ３２２と、を備える。
【選択図】図１３【図１】
0006898506.tif 000002
【図２】
0006898506.tif 000003
【図３】
0006898506.tif 000004
【図４】
0006898506.tif 000005
【図５】
0006898506.tif 000006
【図６】
0006898506.tif 000007
【図７】
0006898506.tif 000008
【図８】
0006898506.tif 000009
【図９】
0006898506.tif 000010
【図１０】
0006898506.tif 000011
【図１１】
0006898506.tif 000012
【図１２】
0006898506.tif 000013
【図１３】
0006898506.tif 000014
【図１４】
0006898506.tif 000015
【図１５】
0006898506.tif 000016
【図１６】
0006898506.tif 000017
【図１７】
0006898506.tif 000018
【図１８】
0006898506.tif 000019
【図１９】
0006898506.tif 000020
【図２０】
0006898506.tif 000021
【図２１】
0006898506.tif 000022
【図２２】
0006898506.tif 000023
【図２３】
0006898506.tif 000024
【図２４】
0006898506.tif 000025
【図２５】
0006898506.tif 000026
【図２６】
0006898506.tif 000027