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