(57)【特許請求の範囲】
【請求項１】
少なくともロボットを含む複数のローカル機器をそれぞれ制御する複数のローカルコントローラと、
前記複数のローカルコントローラと通信可能な環境管理部と、
を備え、
前記環境管理部は、
環境情報を格納する環境情報格納部と、
前記複数のローカル機器の動作に応じて前記環境情報を更新する情報更新部と、を有し、
前記複数のローカルコントローラのそれぞれは、
前記環境情報格納部に格納された前記環境情報が所定の条件を満たすか否かを監視する条件監視部と、
前記環境情報が所定の条件を満たす場合に制御対象のローカル機器に所定の動作を実行させる動作実行部と、
を有する、制御システム。
【請求項２】
前記複数のローカルコントローラのそれぞれは、制御対象のローカル機器のステータス情報を前記環境管理部に出力するステータス出力部を更に有し、
前記情報更新部は、前記複数のローカルコントローラから取得した前記ステータス情報に基づいて前記環境情報を更新する、請求項１記載の制御システム。
【請求項３】
前記複数のローカル機器は、第１ローカル機器と、第２ローカル機器とを含み、
前記複数のローカルコントローラは、前記第１ローカル機器を制御する第１コントローラと、前記第２ローカル機器を制御する第２コントローラとを含み、
前記情報更新部は、前記第１ローカル機器の動作に応じて前記環境情報の第１情報を更新し、
前記第２コントローラの前記条件監視部は、前記第１情報が所定の条件を満たすか否かを監視し、
前記第２コントローラの前記動作実行部は、前記第１情報が所定の条件を満たした場合に前記第２ローカル機器に所定の動作を実行させる、請求項１又は２記載の制御システム。
【請求項４】
前記第１ローカル機器は、ワークを搬送する搬送装置であり、
前記第２ローカル機器は、前記搬送装置が搬送するワークに対して作業を行うロボットである、請求項３記載の制御システム。
【請求項５】
前記複数のローカル機器は、前記搬送装置が搬送するワークに対して作業を行う第２ロボットを更に含み、
前記複数のローカルコントローラは、前記第２ロボットを制御する第３コントローラを更に含み、
前記情報更新部は、前記搬送装置及び前記ロボットの動作に応じて前記環境情報の第２情報を更新し、
前記第３コントローラの前記動作実行部は、前記第２情報が所定の条件を満たした場合に前記第２ロボットに所定の動作を実行させる、請求項４記載の制御システム。
【請求項６】
前記ロボットが、自律走行可能な移動型ロボットである、請求項４又は５記載の制御システム。
【請求項７】
前記第２ロボットが、自律走行可能な移動型ロボットである、請求項５記載の制御システム。
【請求項８】
前記環境管理部は、前記複数のローカルコントローラの少なくとも１以上と無線通信する、請求項１〜７のいずれか一項記載の制御システム。
【請求項９】
前記環境管理部は、前記複数のローカルコントローラと同期通信を行い、
前記情報更新部は、前記同期通信の通信周期で前記環境情報を更新する、請求項１〜８のいずれか一項記載の制御システム。
【請求項１０】
環境状態を検出する外部センサを更に備え、
前記環境管理部は、前記外部センサから取得したセンサ情報に対して、所定の処理を行うセンサ情報処理部を更に有し、
前記情報更新部は、前記センサ情報処理部による処理結果に更に基づいて前記環境情報を更新する、請求項９記載の制御システム。
【請求項１１】
前記環境管理部は、
前記環境情報格納部と前記情報更新部とを有し、前記複数のローカルコントローラと前記同期通信を行う上位コントローラと、
前記センサ情報処理部を有し、前記上位コントローラに対して、前記同期通信の通信周期よりも長い周期の同期通信又は非同期通信を行うデータ管理装置と、を有する、請求項１０記載の制御システム。
【請求項１２】
前記データ管理装置は、前記環境情報格納部に格納される環境情報の履歴を保持する環境情報データベースを更に有する、請求項１１記載の制御システム。
【請求項１３】
前記複数のローカルコントローラのそれぞれは、
制御対象のローカル機器の動作を表す動作プログラムと、実行条件を表す条件ヘッダとを含むタスクプログラムを格納したタスクプログラム保持部を更に有し、
前記条件監視部は、前記環境情報と、前記タスクプログラムの条件ヘッダとに基づいて、当該タスクプログラムの実行条件が満たされたか否かを監視し、
前記動作実行部は、前記タスクプログラムの実行条件が満たされた場合に、当該タスクプログラムの動作プログラムに基づいて、制御対象のローカル機器を動作させる、請求項１〜１２のいずれか一項記載の制御システム。
【請求項１４】
前記タスクプログラム保持部は、前記タスクプログラムを含む複数のタスクプログラムを格納し、前記複数のタスクプログラムのそれぞれが、制御対象のローカル機器の動作を表す動作プログラムと、実行条件を表す条件ヘッダとを含み、
前記条件監視部は、前記環境情報と、前記複数のタスクプログラムの条件ヘッダとに基づいて、前記複数のタスクプログラムのそれぞれの実行条件が満たされたか否かを判定し、
前記動作実行部は、前記複数のタスクプログラムのうち実行条件が満たされたタスクプログラムの動作プログラムに基づいて、制御対象のローカル機器を動作させる、請求項１３記載の制御システム。
【請求項１５】
前記環境管理部は、
前記複数のローカル機器に関する情報を格納する機器データベースと、
新たなローカル機器に関する情報を、前記機器データベースに登録する機器登録部と、
前記新たなローカル機器が登録されると、当該ローカル機器のローカルコントローラから収集する当該ローカル機器のステータス情報に基づく新たな情報の格納領域を前記環境情報格納部に設ける格納領域割当部と、
を有する、請求項２記載の制御システム。
【請求項１６】
前記環境管理部は、
前記複数のローカルコントローラのそれぞれの前記タスクプログラムを格納する複製プログラム保持部と、
環境情報に対応する仮想環境情報を格納する仮想情報格納部と、
前記仮想環境情報と、タスクプログラムの条件ヘッダとに基づいて、当該タスクプログラムの実行条件が満たされたか否かを監視し、前記タスクプログラムの実行条件が満たされた場合に、当該タスクプログラムの動作プログラムに基づいて、制御対象のローカル機器の動作のシミュレーションを実行するシミュレーション部と、
前記シミュレーション部によるシミュレーションにおける前記複数のローカル機器の動作に応じて前記仮想環境情報を更新する仮想情報更新部と、を更に有する、請求項１３又は１４記載の制御システム。
【請求項１７】
前記環境管理部は、
新たなローカル機器の追加に伴い、当該ローカル機器の動作を表す動作プログラムと、実行条件を表す条件ヘッダとを含む新たなタスクプログラムを当該ローカル機器のローカルコントローラから取得する新規プログラム取得部と、
前記新規プログラム取得部が取得した前記新たなタスクプログラムに基づいて前記新たなローカルコントローラによる前記新たなローカル機器の動作のシミュレーションを前記シミュレーション部に実行させ、当該シミュレーションの結果に基づいて前記新たなタスクプログラムを変更するプログラム変更部と、を更に備える、請求項１６記載の制御システム。
【請求項１８】
環境状態を検出する外部センサを更に備え、
前記情報更新部は、前記外部センサの検出結果に更に基づいて前記環境情報を更新する、請求項２記載の制御システム。
【請求項１９】
前記複数のローカルコントローラの少なくともいずれかにおいて、前記条件監視部は、前記環境情報のうち前記外部センサの検出結果に基づいて更新されたセンサ関連情報が所定の条件を満たすか否かを監視し、前記動作実行部は、前記センサ関連情報が所定の条件を満たした場合に前記ローカル機器に所定の動作を実行させる、請求項１８記載の制御システム。
【請求項２０】
環境情報を格納する環境情報格納部と、少なくともロボットを含む複数のローカル機器の動作に応じて前記環境情報を更新する情報更新部とを有し、前記複数のローカル機器をそれぞれ制御する複数のローカルコントローラと通信可能な環境管理部において、前記環境情報格納部に格納された前記環境情報が所定の条件を満たすか否かを監視する条件監視部と、
前記環境情報が所定の条件を満たす場合に制御対象のローカル機器に所定の動作を実行させる動作実行部と、を備える、ローカルコントローラ。
【請求項２１】
少なくともロボットを含む複数のローカル機器をそれぞれ制御する複数のローカルコントローラと通信可能な環境管理部により、
環境情報を環境情報格納部に格納することと、
前記複数のローカル機器の動作に応じて前記環境情報を更新することと、
前記複数のローカルコントローラのそれぞれにより、
前記環境管理部において、前記環境情報格納部に格納された環境情報が所定の条件を満たすか否かを監視することと、
前記環境情報が所定の条件を満たす場合に制御対象のローカル機器に所定の動作を実行させることと、を含む制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、制御システム、ローカルコントローラ及び制御方法に関する。
【背景技術】
【０００２】
特許文献１は、第一コントローラと、第二コントローラと、第三コントローラとを備えるコントロールシステムを開示する。第三コントローラは、第一通信部と、第二通信部とを有する。第三コントローラは、第一制御対象を動作させる第一動作指令を第一通信部により第一コントローラに出力することと、第二制御対象を動作させる第二動作指令を第二通信部により第二コントローラに出力することと、第一制御対象の現在位置に関する情報を第一通信部により第一コントローラから取得することと、第一制御対象の現在位置に関する情報に基づいて、第二動作指令を補正することと、を実行するように構成された制御処理部と、を更に有する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１８−１５３８８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本開示は、ローカル機器の追加・変更に適応し易い制御システムを提供する。
【課題を解決するための手段】
【０００５】
本開示の一側面に係る制御システムは、少なくともロボットを含む複数のローカル機器をそれぞれ制御する複数のローカルコントローラと、複数のローカルコントローラと通信可能な環境管理部と、を備え、環境管理部は、環境情報を格納する環境情報格納部と、複数のローカル機器の動作に応じて環境情報を更新する情報更新部と、を有し、複数のローカルコントローラのそれぞれは、環境情報格納部に格納された環境情報が所定の条件を満たすか否かを監視する条件監視部と、環境情報が所定の条件を満たす場合に制御対象のローカル機器に所定の動作を実行させる動作実行部と、を有する。
【０００６】
本開示の他の側面に係るローカルコントローラは、複数のローカル機器をそれぞれ制御する複数のローカルコントローラと通信可能な環境管理部において、複数のローカル機器の動作に応じて更新される環境情報が所定の条件を満たすか否かを監視する条件監視部と、環境情報が所定の条件を満たす場合に制御対象のローカル機器に所定の動作を実行させる動作実行部と、を備える。
【０００７】
本開示の更に他の側面に係る制御方法は、複数のローカル機器をそれぞれ制御する複数のローカルコントローラと通信可能な環境管理部において、複数のローカル機器の動作に応じて更新される環境情報が所定の条件を満たすか否かを監視することと、環境情報が所定の条件を満たす場合に制御対象のローカル機器に所定の動作を実行させることと、を含む。
【発明の効果】
【０００８】
本開示によれば、ローカル機器の追加・変更に適応し易い制御システムを提供することができる。
【図面の簡単な説明】
【０００９】
【図１】生産システムの構成を例示する模式図である。
【図２】ロボットの構成を例示する模式図である。
【図３】データ管理装置及びローカルコントローラの機能的な構成を例示するブロック図である。
【図４】機器情報を例示するテーブルである。
【図５】ワーク情報を例示するテーブルである。
【図６】データ管理装置の変形例を示すブロック図である。
【図７】制御システムのハードウェア構成を例示するブロック図である。
【図８】環境情報の更新手順を例示するフローチャートである。
【図９】ローカル機器の制御手順を例示するフローチャートである。
【図１０】タスクプログラムの変更手順を例示するフローチャートである。
【図１１】シミュレーション手順を例示するフローチャートである。
【図１２】異常検知手順を例示するフローチャートである。
【発明を実施するための形態】
【００１０】
以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
【００１１】
〔生産システム〕
図１に示す生産システム１は、複数のローカル機器の協調動作によって、ワークの生産を行うシステムである。以下、ワークの生産過程において、各ローカル機器の作業対象となる物体の全てを「ワーク」という。例えば「ワーク」は、生産システム１における最終生産物、最終生産物の部品、及び複数の部品を組み合わせたユニット等を含む。
【００１２】
協調動作は、少なくとも一つの上記最終生産物を得るための複数の工程を分担するように複数のローカル機器が動作することを意味する。複数のローカル機器は、一つの最終生産物を得るための複数の工程を工程単位で分担するように動作してもよいし、複数の最終生産物を得るための複数の工程を最終生産物単位で分担するように動作してもよい。
【００１３】
生産システム１は、複数のローカル機器２と、制御システム１００とを含む。ローカル機器２は、ワーク９の生産現場においてワーク９に対し直接的に作業を実行する機器である。直接的な作業は、例えば、熱エネルギー、運動エネルギー、位置エネルギー等の何らかのエネルギーをワーク９に付与する作業である。
【００１４】
複数のローカル機器２は、少なくともロボットを含む（少なくとも１つのローカル機器２はロボットである）。図１に示す複数のローカル機器２は、搬送装置２Ａと、ロボット２Ｂ，２Ｃと、移動型ロボット２Ｄとを含んでいるが、これに限られない。少なくとも１台のロボットを含んでいる限り、ローカル機器２の数及び種類は適宜変更可能である。
【００１５】
搬送装置２Ａは、例えば電動モータ等の動力によりワーク９を搬送する。搬送装置２Ａの具体例としては、ベルトコンベヤ、ローラコンベヤ等が挙げられる。ロボット２Ｂ，２Ｃ、及び移動型ロボット２Ｄは、搬送装置２Ａが搬送するワーク９に対する作業を行う。ワーク９に対する作業の具体例としては、搬送装置２Ａが搬送するワーク９（例えばベースパーツ）に対する他のワーク９（例えばサブパーツ）の組付け、搬送装置２Ａが搬送するワーク９におけるパーツ同士の締結（例えばボルト締結）・接合（例えば溶接）等が挙げられる。
【００１６】
例えばロボット２Ｂ，２Ｃは、６軸の垂直多関節ロボットであり、図２に示すように、基部１１と、旋回部１２と、第１アーム１３と、第２アーム１４と、第３アーム１７と、先端部１８と、アクチュエータ４１，４２，４３，４４，４５，４６とを有する。基部１１は、搬送装置２Ａの周囲に設置されている。旋回部１２は、鉛直な軸線２１まわりに旋回するように基部１１上に設けられている。第１アーム１３は、軸線２１に交差（例えば直交）する軸線２２まわりに揺動するように旋回部１２に接続されている。交差は、所謂立体交差のようにねじれの関係にある場合も含む。第２アーム１４は、軸線２２に実質的に平行な軸線２３まわりに揺動するように第１アーム１３の先端部に接続されている。第２アーム１４は、アーム基部１５とアーム端部１６とを含む。アーム基部１５は、第１アーム１３の先端部に接続され、軸線２３に交差（例えば直交）する軸線２４に沿って延びている。アーム端部１６は、軸線２４まわりに旋回するようにアーム基部１５の先端部に接続されている。第３アーム１７は、軸線２４に交差（例えば直交）する軸線２５まわりに揺動するようにアーム端部１６の先端部に接続されている。先端部１８は、軸線２５に交差（例えば直交）する軸線２６まわりに旋回するように第３アーム１７の先端部に接続されている。
【００１７】
このように、ロボット１０は、基部１１と旋回部１２とを接続する関節３１と、旋回部１２と第１アーム１３とを接続する関節３２と、第１アーム１３と第２アーム１４とを接続する関節３３と、第２アーム１４においてアーム基部１５とアーム端部１６とを接続する関節３４と、アーム端部１６と第３アーム１７とを接続する関節３５と、第３アーム１７と先端部１８とを接続する関節３６とを有する。
【００１８】
アクチュエータ４１，４２，４３，４４，４５，４６は、例えば電動モータ及び減速機を含み、関節３１，３２，３３，３４，３５，３６をそれぞれ駆動する。例えばアクチュエータ４１は、軸線２１まわりに旋回部１２を旋回させ、軸線２２まわりに第１アーム１３を揺動させ、軸線２３まわりに第２アーム１４を揺動させ、軸線２４まわりにアーム端部１６を旋回させ、軸線２５まわりに第３アーム１７を揺動させ、軸線２６まわりに先端部１８を旋回させる。
【００１９】
なお、ロボット２Ｂ，２Ｃの具体的な構成は適宜変更可能である。例えばロボット２Ｂ，２Ｃは、上記６軸の垂直多関節ロボットに更に１軸の関節を追加した７軸の冗長型ロボットであってもよく、所謂スカラー型の多関節ロボットであってもよい。
【００２０】
図１に戻り、移動型ロボット２Ｄは、自律走行可能なロボットである。移動型ロボット２Ｄは、ロボット２Ｂ，２Ｃと同様に構成されたロボット１０と、無人搬送車５０とを有する。無人搬送車５０は、ロボット１０を搬送するように自律走行する。無人搬送車５０の具体例としては、電動式の所謂ＡＧＶ（Ａｕｔｏｍａｔｅｄ  Ｇｕｉｄｅｄ  Ｖｅｈｃｌｅ）が挙げられる。
【００２１】
生産システム１は、外部センサ５を更に備えてもよい。外部センサ５は、複数のローカル機器２の作業環境の状態（以下、「環境状態」という。）を検出する。外部センサ５の具体例としては、例えば複数のローカル機器２の作業環境を撮影するカメラが挙げられる。外部センサ５は、レーザ光等により、所定位置におけるワーク９の有無を検出するセンサであってもよいし、ワーク９のサイズ等を検出するセンサであってもよい。生産システム１は、複数の外部センサ５を備えてもよい。例えば生産システム１は、外部センサ５ａ，５ｂを有する。外部センサ５ａは例えばリミットスイッチ等のＯＮ／ＯＦＦ信号を出力するセンサである。外部センサ５ｂは、例えばカメラ等、１まとまりのデータを出力するセンサである。
【００２２】
〔制御システム〕
制御システム１００は、環境管理部１１０と、複数のローカルコントローラ４００とを有する。複数のローカルコントローラ４００は、複数のローカル機器２をそれぞれ制御する。
【００２３】
図１において、制御システム１００は、４つのローカルコントローラ４００Ａ，４００Ｂ，４００Ｃ，４００Ｄを有する。ローカルコントローラ４００Ａは搬送装置２Ａを制御し、ローカルコントローラ４００Ｂはロボット２Ｂを制御し、ローカルコントローラ４００Ｃはロボット２Ｃを制御し、ローカルコントローラ４００Ｄは移動型ロボット２Ｄを制御する。ローカルコントローラ４００の数及び各ローカルコントローラ４００の構成は、ローカル機器２の数及び各ローカル機器２の種類に従って適宜変更可能である。
【００２４】
上位コントローラ３００は、少なくとも一つのローカルコントローラ４００に対し指令（例えば生産開始指令、生産停止指令等）を出力し、複数のローカル機器２のステータス情報を複数のローカルコントローラ４００から取得する。また、上位コントローラ３００は、外部センサ５による検出結果を取得する。上位コントローラ３００の具体例としては、ラダープログラムに従って動作するプログラマブルロジックコントローラが挙げられる。
【００２５】
環境管理部１１０は、複数のローカルコントローラ４００と有線通信又は無線通信により通信可能であり、複数のローカル機器２の動作に応じて環境情報を更新する。環境管理部１１０は、複数の装置により構成されていてもよい。例えば環境管理部１１０は、複数のローカルコントローラ４００と同期通信を行い、同期通信の通信周期で環境情報を更新する。ここで、同期通信とは、一定の周期（上記通信周期）の同期フレームに同期して、１周期ごとに、複数のローカルコントローラ４００との通信を行うことを意味する。環境管理部１１０は、外部センサ５から取得したセンサ情報に対して、所定の処理（例えば外部センサ５ｂから取得した画像情報に対する画像処理）を行い、処理結果に更に基づいて環境情報を更新するように構成されていてもよい。
【００２６】
環境管理部１１０は、複数の装置により構成されていてもよい。例えば環境管理部１１０は、データ管理装置２００と、上位コントローラ３００とを有する。上位コントローラ３００は、複数のローカルコントローラ４００と同期通信を行い、同期通信の通信周期で環境情報を更新する。データ管理装置２００は、外部センサ５から取得したセンサ情報に対して所定の処理を行い、上位コントローラ３００は、データ管理装置２００によるセンサ情報の処理結果に更に基づいて環境情報を更新する。データ管理装置２００は、上位コントローラ３００に対して、上記同期通信の通信周期よりも長い周期の同期通信又は非同期通信を行う。
【００２７】
例えば図３に示すように、上位コントローラ３００は、機能上の構成（以下、「機能ブロック」という。）として、環境情報格納部３１１と、情報更新部３１２とを有する。環境情報格納部３１１は、環境情報を格納する。
【００２８】
環境情報は、例えばローカル機器２に関する情報（以下、「機器情報」という。）と、ワーク９に関する情報（以下、「ワーク情報」という。）とを含む。機器情報の具体例としては、ローカル機器２の位置・姿勢情報が挙げられる。ローカル機器２の位置・姿勢情報の具体例としては、ロボット２Ｂ，２Ｃの姿勢情報、及び移動型ロボット２Ｄの位置・姿勢情報等が挙げられる。ロボット２Ｂ，２Ｃの姿勢情報は、関節３１，３２，３３，３４，３５，３６の動作角度情報であってもよいし、先端部１８の位置・姿勢情報であってもよい。移動型ロボット２Ｄの位置・姿勢情報は、例えば無人搬送車５０の位置・姿勢情報と、ロボット１０の姿勢情報とを含む。ロボット１０の姿勢情報は、関節３１，３２，３３，３４，３５，３６の動作角度情報であってもよいし、先端部１８の位置・姿勢（無人搬送車５０を基準にした位置・姿勢）情報であってもよい。
【００２９】
図４は、機器情報を例示するテーブルである。図４においては、ローカル機器２の識別情報と、ローカル機器２に関する情報を示す少なくとも一つの状態パラメータとが対応付けられている。
【００３０】
ワーク情報の具体例としては、搬送装置２Ａにおける各ワーク９の位置情報と、各ワーク９の工程進捗情報とが挙げられる。工程進捗情報は、例えば上記最終生産物となるまでの全工程のうち、何工程目までが完了しているかを示す情報である。
【００３１】
図５は、ワーク情報を例示するテーブルである。図５においては、ワーク９の識別情報（例えば種別及びシリアル番号）と、ワーク９の位置情報と、ワーク９の工程進捗情報とが対応付けられている。
【００３２】
図３に戻り、情報更新部３１２は、複数のローカル機器２の動作に応じて、環境情報格納部３１１の環境情報を更新する。例えば情報更新部３１２は、複数のローカルコントローラ４００のそれぞれからローカル機器２のステータス情報を取得し、当該ステータス情報に基づいて機器情報を更新する。情報更新部３１２は、ローカル機器２のステータス情報に基づいてワーク情報を更に更新してもよい。例えば情報更新部３１２は、ローカルコントローラ４００Ａから取得した搬送装置２Ａのステータス情報に基づいて、各ワーク９の位置情報を更新してもよい。
【００３３】
ステータス情報は、ローカル機器２がどの作業を実行したかを示す情報（以下、「作業内容情報」という。）を含んでいてもよい。作業内容情報の具体例としては、ローカルコントローラ４００がどのプログラムに従ってローカル機器２を動作させたかを示す情報が挙げられる。情報更新部３１２は、作業内容情報に基づいて作業対象のワーク９の工程進捗情報を更新してもよい。
【００３４】
情報更新部３１２は、外部センサ５の検出結果に更に基づいて環境情報を更新してもよい。例えば情報更新部３１２は、外部センサ５ｂが出力する信号に基づいて環境情報を更新してもよい。
【００３５】
データ管理装置２００は、機能ブロックとして、環境情報データベース２１１と、情報更新部２１２と、センサ情報処理部２１３と、データクローン部２１４とを有する。環境情報データベース２１１は、環境情報格納部３１１に格納される環境情報の履歴を保持する。例えば環境情報データベース２１１は、環境情報格納部３１１に格納された環境情報を時系列で保持する。
【００３６】
データクローン部２１４は、環境情報データベース２１１における最新の環境情報を、環境情報格納部３１１の環境情報に一致させる。例えばデータクローン部２１４は、上位コントローラ３００において環境情報格納部３１１の環境情報が更新された場合に、当該環境情報を環境情報格納部３１１から取得し、これを最新の環境情報として環境情報データベース２１１に格納する。データクローン部２１４は、環境情報データベース２１１に格納された環境情報を取得し、これを環境情報格納部３１１に格納してもよい。
【００３７】
センサ情報処理部２１３は、外部センサ５から取得したセンサ情報に対して、所定の処理を行う。所定の処理の具体例としては、外部センサ５ｂから取得した画像情報及び他の外部センサ５から取得したセンサ情報とに基づいて、ワークの種類・位置・姿勢等のワーク情報、ロボットの位置、ロボットの動作状態等の機器情報、及び、ワークに対するエンドエフェクタのアプローチ方法（ワーク情報及び機器情報の複合情報）等を抽出する処理が挙げられる。
【００３８】
情報更新部２１２は、センサ情報処理部２１３の処理結果に基づいて、環境情報データベース２１１における最新の環境情報を更新する。情報更新部２１２は、センサ情報処理部２１３の処理結果を上位コントローラ３００の情報更新部３１２に出力する。これに応じ、情報更新部３１２は、センサ情報処理部２１３の処理結果に基づいて、環境情報格納部３１１の環境情報を更新する。
【００３９】
ローカルコントローラ４００は、上位コントローラ３００において、複数のローカル機器２の動作に応じて更新される環境情報が所定の条件を満たすか否かを監視することと、環境情報が所定の条件を満たす場合に制御対象のローカル機器２に所定の動作を実行させることと、を実行するように構成されている。ローカルコントローラ４００は、ローカル機器２の近傍に配置される所謂エッジデバイスである。例えばローカルコントローラ４００は、機能ブロックとして、タスクプログラム保持部４１０と、環境情報取得部４２１と、条件監視部４２２と、動作実行部４２３と、ステータス出力部４２４とを有する。
【００４０】
タスクプログラム保持部４１０は、少なくとも一つのタスクプログラム４１１を格納する。タスクプログラム４１１は、条件ヘッダ４１２と、動作プログラム４１３とを含む。動作プログラム４１３は、制御対象のローカル機器２の動作を表す。例えば動作プログラム４１３は、ローカル機器２に一まとまりの動作を実行させるように時系列に並ぶ複数の移動命令を含む。例えばロボット２Ｂ，２Ｃ、及び移動型ロボット２Ｄの動作プログラム４１３における移動命令は、先端部１８の目標位置・目標姿勢を含む。
【００４１】
条件ヘッダ４１２は、動作プログラム４１３の実行条件を表す。実行条件は、動作プログラム４１３を実行するために、上記環境情報が満たすべき条件である。実行条件の具体例としては、以下が挙げられる。
例１）
動作プログラム４１３の実行に伴うローカル機器２の動作範囲内に、隣接するローカル機器２が位置していないこと。
例２）
動作プログラム４１３の実行に伴うローカル機器２の作業が実行可能な位置に、作業対象のワーク９が配置されていること。
【００４２】
実行条件は、上記例１及び例２の組み合わせであってもよい。なお、作業対象のワーク９は、例えば上記作業が実行されておらず、当該作業の直前の作業が完了しているワーク９である。
【００４３】
タスクプログラム保持部４１０は、複数のタスクプログラム４１１を格納し、複数のタスクプログラム４１１のそれぞれが、条件ヘッダ４１２と動作プログラム４１３とを含んでいてもよい。
【００４４】
環境情報取得部４２１は、上位コントローラ３００の環境情報格納部３１１に格納された環境情報を取得する。なお、環境情報取得部４２１は、上位コントローラ３００に環境情報の出力を要求し、要求に応じて出力された環境情報を取得してもよいし、要求の有無によらずに、例えば上記同期通信において上位コントローラ３００から出力された環境情報を取得してもよい。
【００４５】
条件監視部４２２は、環境情報取得部４２１が取得した環境情報が、所定の条件を満たすか否かを監視する。例えば条件監視部４２２は、環境情報取得部４２１が取得した環境情報と、タスクプログラム４１１の条件ヘッダ４１２とに基づいて、タスクプログラム４１１の実行条件が満たされたか否かを監視する。
【００４６】
例えば、条件ヘッダ４１２により上記例１の実行条件が定められている場合、条件監視部４２２は、環境情報から、上記隣接するローカル機器２の位置・姿勢情報を抽出し、抽出した情報に基づいて、上記ローカル機器２の動作範囲内に隣接するローカル機器２が位置しているか否かを監視する。上記ローカル機器２の動作範囲内に隣接するローカル機器２が位置していない場合、条件監視部４２２は、上記例１の実行条件が満たされたと判定する。
【００４７】
条件ヘッダ４１２により上記例２の実行条件が定められている場合、条件監視部４２２は、環境情報から、搬送装置２Ａが搬送するワーク９の位置に関する情報と、ワーク９の工程進捗情報とを抽出し、抽出した情報に基づいて、上記作業が実行可能な位置に、上記作業対象のワーク９が配置されているか否かを監視する。上記作業が実行可能な位置に上記作業対象のワーク９が配置されている場合、条件監視部４２２は、上記例２の実行条件が満たされたと判定する。
【００４８】
タスクプログラム保持部４１０が複数のタスクプログラム４１１を格納している場合、条件監視部４２２は、環境情報取得部４２１が取得した環境情報と、複数のタスクプログラム４１１の条件ヘッダ４１２とに基づいて、複数のタスクプログラム４１１のそれぞれの実行条件が満たされたか否かを判定してもよい。
【００４９】
動作実行部４２３は、環境情報が所定の条件を満たす場合に制御対象のローカル機器２に所定の動作を実行させる。例えば動作実行部４２３は、条件監視部４２２による監視結果においてタスクプログラム４１１の実行条件が満たされた場合に、当該タスクプログラム４１１の動作プログラムに基づいて、制御対象のローカル機器２を動作させる。
【００５０】
タスクプログラム保持部４１０が複数のタスクプログラム４１１を格納している場合、動作実行部４２３は、条件監視部４２２による監視結果において複数のタスクプログラム４１１のいずれかのタスクプログラム４１１の実行条件が満たされた場合に、当該タスクプログラム４１１の動作プログラムに基づいて、制御対象のローカル機器２を動作させる。
【００５１】
ステータス出力部４２４は、制御対象のローカル機器２の上記ステータス情報を上位コントローラ３００に出力する。上述したように、ステータス情報は、少なくともローカル機器２の位置・姿勢情報を含み、上記作業内容情報（ローカル機器２がどの作業を実行したかを示す情報）を更に含んでいてもよい。
【００５２】
ステータス出力部４２４は、作業内容情報に基づいて、作業対象のワーク９の上記工程進捗情報（上記最終生産物となるまでの全工程のうち、何工程目までが完了しているかを示す情報）を導出し、導出した工程進捗情報をステータス情報に含めて出力してもよい。この場合、上位コントローラ３００の情報更新部３１２において、作業内容情報に基づき工程進捗情報を導出することが不要となる。
【００５３】
なお、ステータス出力部４２４は、上記同期通信における上位コントローラ３００からの要求に応じてステータス情報を出力してもよいし、上位コントローラ３００からの要求の有無によらずにステータス情報を出力してもよい。
【００５４】
各ローカルコントローラ４００が上述のように構成されることによって、制御システム１００が実行する制御を以下に例示する。この例示においては、環境情報格納部３１１の環境情報のうち、ローカルコントローラ４００Ｂの条件監視部４２２が参照する情報を「第１情報」といい、ローカルコントローラ４００Ｃの条件監視部４２２が参照する情報を「第２情報」といい、ローカルコントローラ４００Ｄの条件監視部４２２が参照する情報を「第３情報」という。第１情報、第２情報及び第３情報は、少なくともワーク情報を含む。
【００５５】
例えばローカルコントローラ４００Ａ（第１コントローラ）の動作実行部４２３は、ワーク９を搬送するように搬送装置２Ａを制御する。ローカルコントローラ４００Ａのステータス出力部４２４は、搬送装置２Ａのステータス情報を出力する。
【００５６】
情報更新部３１２は、搬送装置２Ａの動作に応じてワーク情報を更新する。これにより、第１情報、第２情報及び第３情報が更新される。例えば情報更新部３１２は、搬送装置２Ａのステータス情報に基づいて、搬送装置２Ａにおける各ワーク９の位置情報を更新する。
【００５７】
ローカルコントローラ４００Ｂ，４００Ｃ，４００Ｄの条件監視部４２２は、ワーク情報が所定の条件を満たすか否かを監視し、ローカルコントローラ４００Ｂ，４００Ｃ，４００Ｄの動作実行部４２３は、ワーク情報が所定の条件を満たした場合にローカル機器２に所定の動作を実行させる。例えば、ローカルコントローラ４００Ｂ（第２コントローラ）の条件監視部４２２は、第１情報が、次の条件を満たすか否かを監視する。
条件１−１）
動作プログラム４１３の実行に伴うロボット２Ｂの作業が実行可能な位置に、作業対象のワーク９が配置されている。
【００５８】
ローカルコントローラ４００Ｂの動作実行部４２３は、第１情報が上記条件１−１を満たした場合に、作業対象のワーク９に対する所定の作業をロボット２Ｂに実行させる。ローカルコントローラ４００Ｂのステータス出力部４２４は、少なくとも上記作業の実行中又は実行後におけるロボット２Ｂのステータス情報を出力する。
【００５９】
ローカルコントローラ４００Ｃ（第３コントローラ）の条件監視部４２２は、第２情報が次の条件を満たすか否かを監視する。
条件１−２）
動作プログラム４１３の実行に伴うロボット２Ｃの作業が実行可能な位置に、作業対象のワーク９が配置されている。
【００６０】
ローカルコントローラ４００Ｃの動作実行部４２３は、第２情報が上記条件１−２を満たした場合に、作業対象のワーク９に対する所定の作業をロボット２Ｃに実行させる。ローカルコントローラ４００Ｃのステータス出力部４２４は、少なくとも上記作業の実行中又は実行後におけるロボット２Ｃのステータス情報を出力する。
【００６１】
ローカルコントローラ４００Ｄ（第４コントローラ）の条件監視部４２２は、第３情報が次の条件を満たすか否かを監視する。
条件１−３）
動作プログラム４１３の実行に伴うロボット１０の作業が実行可能な位置に、作業対象のワーク９が配置されている。
【００６２】
なお、ワーク９の位置が搬送装置２Ａを基準とする座標系（以下、「第１座標系」という。）で表されるのに対し、ロボット１０の作業が実行可能な位置は無人搬送車５０を基準とする座標系（以下、「第２座標系」という。）で表される場合がある。このような場合、条件監視部４２２は、ワーク９の位置に対し、第１座標系から第２座標系への座標変換を施し、第２座標系におけるワーク９の位置が条件１−３を満たすか否かを監視してもよい。
【００６３】
ローカルコントローラ４００Ｄは、第３情報が上記条件１−３を満たす場合に、作業対象のワーク９に対する所定の作業を移動型ロボット２Ｄに実行させる。ローカルコントローラ４００Ｄのステータス出力部４２４は、少なくとも上記作業の実行中又は実行後における移動型ロボット２Ｄのステータス情報を出力する。これに応じ、情報更新部３１２が移動型ロボット２Ｄの機器情報（第２情報）を更新する。
【００６４】
情報更新部３１２は、ロボット２Ｂ，２Ｃ及び移動型ロボット２Ｄの動作に応じて機器情報及びワーク情報を更新する。例えば情報更新部３１２は、ローカルコントローラ４００Ｂのステータス出力部４２４が出力したステータス情報に基づいてロボット２Ｂの機器情報を更新し、ロボット２Ｂによる作業対象のワーク９のワーク情報（工程進捗情報）を更新する。情報更新部３１２は、ローカルコントローラ４００Ｃのステータス出力部４２４が出力したステータス情報に基づいてロボット２Ｃの機器情報を更新し、ロボット２Ｃによる作業対象のワーク９のワーク情報（工程進捗情報）を更新する。情報更新部３１２は、ローカルコントローラ４００Ｄのステータス出力部４２４が出力したステータス情報に基づいて移動型ロボット２Ｄの機器情報を更新し、移動型ロボット２Ｄによる作業対象のワーク９のワーク情報（工程進捗情報）を更新する。
【００６５】
第１情報は、ロボット２Ｂと隣接するローカル機器２（ロボット２Ｃ）の機器情報を更に含んでもよい。この場合、ローカルコントローラ４００Ｂの条件監視部４２２は、第１情報が次の条件を満たすか否かを更に監視する。
条件２−１）
動作プログラム４１３の実行に伴うロボット２Ｂの動作範囲内に、ロボット２Ｃが位置していない。
【００６６】
ローカルコントローラ４００Ｂの動作実行部４２３は、第１情報が上記条件１−１及び条件２−１を満たした場合に、作業対象のワーク９に対する所定の作業をロボット２Ｂに実行させる。
【００６７】
第２情報は、ロボット２Ｃと隣接するローカル機器２（ロボット２Ｂ及び移動型ロボット２Ｄ）の機器情報を更に含んでもよい。この場合、ローカルコントローラ４００Ｃの条件監視部４２２は、第２情報が次の条件を満たすか否かを更に監視する。
条件２−２）
動作プログラム４１３の実行に伴うロボット２Ｃの動作範囲内に、ロボット２Ｂ及び移動型ロボット２Ｄが位置していない。
【００６８】
ローカルコントローラ４００Ｃの動作実行部４２３は、ワーク情報が上記条件１−２及び条件２−２を満たした場合に、作業対象のワーク９に対する所定の作業をロボット２Ｃに実行させる。
【００６９】
第３情報は、移動型ロボット２Ｄと隣接するローカル機器２（ロボット２Ｂ）の機器情報を更に含んでもよい。この場合、ローカルコントローラ４００Ｄの条件監視部４２２は、第３情報が次の条件を満たすか否かを更に監視する。
条件２−３）
動作プログラム４１３の実行に伴う移動型ロボット２Ｄの動作範囲内に、ロボット２Ｃが位置していない。
【００７０】
ローカルコントローラ４００Ｄの動作実行部４２３は、第３情報が上記条件１−３及び条件２−３を満たした場合に、作業対象のワーク９に対する所定の作業を移動型ロボット２Ｄに実行させる。
【００７１】
情報更新部３１２は、外部センサ５の検出結果に更に基づいて第１情報を更新してもよい。この場合、ローカルコントローラ４００Ｂの条件監視部４２２は、外部センサ５の検出結果に基づいて更新されたセンサ関連情報が所定の条件を満たすか否かを監視し、ローカルコントローラ４００Ｂの動作実行部４２３は、センサ関連情報が所定の条件を満たした場合にロボット２Ｂに所定の動作を実行させる。
【００７２】
情報更新部３１２は、外部センサ５の検出結果に更に基づいて第２情報を更新してもよい。この場合、ローカルコントローラ４００Ｃの条件監視部４２２は、外部センサ５の検出結果に基づいて更新されたセンサ関連情報が所定の条件を満たすか否かを監視し、ローカルコントローラ４００Ｃの動作実行部４２３は、センサ関連情報が所定の条件を満たした場合にロボット２Ｃに所定の動作を実行させる。
【００７３】
情報更新部３１２は、外部センサ５の検出結果に更に基づいて第３情報を更新してもよい。この場合、ローカルコントローラ４００Ｄの条件監視部４２２は、外部センサ５の検出結果に基づいて更新されたセンサ関連情報が所定の条件を満たすか否かを監視し、ローカルコントローラ４００Ｄの動作実行部４２３は、センサ関連情報が所定の条件を満たした場合に移動型ロボット２Ｄに所定の動作を実行させる。
【００７４】
環境管理部１１０は、新たなローカル機器２に関する情報を、機器データベースに登録することと、新たなローカル機器２のローカルコントローラ４００から収集する当該ローカル機器２のステータス情報に基づく新たな情報の格納領域を環境情報格納部３１１に設けることと、を更に実行するように構成されていてもよい。例えば図６に示すように、データ管理装置２００は、機能ブロックとして、機器データベース２２１と、機器登録部２２２と、格納領域割当部２２３とを更に有する。
【００７５】
機器データベース２２１は、複数のローカル機器２に関する情報を格納する。ローカル機器２に関する情報は、例えばローカル機器２の識別情報と、ローカル機器２の種別情報と、ローカル機器２のモデル情報等を含む。ローカル機器２のモデル情報は、ローカル機器２の構造及び各部の寸法に関する情報を含む。機器登録部２２２は、新たなローカル機器２に関する情報を、当該ローカル機器２のローカルコントローラ４００から取得し、機器データベース２２１に登録する。機器データベース２２１は、上位コントローラ３００を介して、新たなローカル機器２に関する情報を当該ローカル機器２のローカルコントローラ４００から取得してもよい。
【００７６】
格納領域割当部２２３は、新たなローカル機器２のローカルコントローラ４００から収集する当該ローカル機器２のステータス情報に基づく新たな情報の格納領域を、環境情報データベース２１１と、上位コントローラ３００の環境情報格納部３１１とに設ける。例えば格納領域割当部２２３は、ステータス情報の内容に基づいて、上記新たな情報のデータフォーマットを設定し、設定したデータフォーマットに従って新たな情報の格納領域を環境情報データベース２１１及び環境情報格納部３１１に設ける。なお、新たなローカル機器２のローカルコントローラ４００が上記データフォーマットを設定してもよい。
【００７７】
データ管理装置２００は、仮想環境情報と、タスクプログラムの条件ヘッダとに基づいて、当該タスクプログラムの実行条件が満たされたか否かを監視し、タスクプログラムの実行条件が満たされた場合に、当該タスクプログラムの動作プログラムに基づいて、制御対象のローカル機器の動作のシミュレーションを実行することと、シミュレーションにおけるローカル機器２の動作に応じて仮想環境情報を更新することと、を更に実行するように構成されていてもよい。例えばデータ管理装置２００は、機能ブロックとして、複製プログラム保持部２３１と、仮想情報格納部２３４と、シミュレーション部２３５と、仮想情報更新部２３６とを更に有する。
【００７８】
複製プログラム保持部２３１は、複数のローカル機器２のそれぞれのタスクプログラム（例えばタスクプログラム保持部４１０が保持する複数のタスクプログラムの複製）を格納する。仮想情報格納部２３４は、上記仮想環境情報を格納する。仮想環境情報は、環境情報と同一のデータ構造を有する。格納領域割当部２２３は、新たなローカルコントローラ４００から収集する当該ローカル機器２のステータス情報に基づく新たな情報の格納領域を仮想情報格納部２３４にも設ける。
【００７９】
シミュレーション部２３５は、仮想環境情報と、タスクプログラムの条件ヘッダとに基づいて、当該タスクプログラムの実行条件が満たされたか否かを監視し、タスクプログラムの実行条件が満たされた場合に、当該タスクプログラムの動作プログラムに基づいて、制御対象のローカル機器２の動作のシミュレーションを実行する。例えばシミュレーション部２３５は、搬送装置２Ａのタスクプログラムの実行条件が満たされた場合に、当該タスクプログラムの動作プログラムと、機器データベース２２１が格納する搬送装置２Ａのモデル情報とに基づいて、搬送装置２Ａのモデルをシミュレーション空間で動作させる。
【００８０】
シミュレーション部２３５は、ロボット２Ｂのタスクプログラムの実行条件が満たされた場合に、当該タスクプログラムの動作プログラムと、機器データベース２２１が格納するロボット２Ｂのモデル情報とに基づいて、ロボット２Ｂのモデルをシミュレーション空間で動作させる。
【００８１】
シミュレーション部２３５は、ロボット２Ｃのタスクプログラムの実行条件が満たされた場合に、当該タスクプログラムの動作プログラムと、機器データベース２２１が格納するロボット２Ｃのモデル情報とに基づいて、ロボット２Ｃのモデルをシミュレーション空間で動作させる。
【００８２】
シミュレーション部２３５は、移動型ロボット２Ｄのタスクプログラムの実行条件が満たされた場合に、当該タスクプログラムの動作プログラムと、機器データベース２２１が格納する移動型ロボット２Ｄのモデル情報とに基づいて、移動型ロボット２Ｄのモデルをシミュレーション空間で動作させる。
【００８３】
仮想情報更新部２３６は、シミュレーション部２３５によるシミュレーションにおける複数のローカル機器２の動作に応じて仮想情報格納部２３４の仮想環境情報を更新する。データ管理装置２００は、シミュレーション部２３５によるシミュレーションと、仮想情報更新部２３６による仮想環境情報の更新とを繰り返すことによって、複数のローカルコントローラ４００による複数のローカル機器２の動作をシミュレーションする。
【００８４】
データ管理装置２００は、新たなローカル機器２の追加に伴い、当該ローカル機器２の動作を表す動作プログラムと、実行条件を表す条件ヘッダとを含む新たなタスクプログラムを当該ローカル機器２のローカルコントローラ４００から取得することと、新たなタスクプログラムに基づいて新たなローカルコントローラ４００による新たなローカル機器２の動作のシミュレーションを実行し、当該シミュレーションの結果に基づいて新たなタスクプログラムを変更することと、を更に実行するように構成されていてもよい。例えばデータ管理装置２００は、機能ブロックとして、新規プログラム取得部２４１と、プログラム変更部２４２とを更に有する。
【００８５】
新規プログラム取得部２４１は、新たなローカル機器２の追加に伴い、当該ローカル機器２の動作を表す動作プログラムと、実行条件を表す条件ヘッダとを含む新たなタスクプログラムを当該ローカル機器２のローカルコントローラ４００から取得し、複製プログラム保持部２３１に格納する。新規プログラム取得部２４１は、上位コントローラ３００を介して、新たなローカル機器２のタスクプログラムを当該ローカル機器２のローカルコントローラ４００から取得してもよい。
【００８６】
プログラム変更部２４２は、新規プログラム取得部２４１が取得した新たなタスクプログラムに基づいて新たなローカルコントローラ４００による新たなローカル機器２の動作のシミュレーションをシミュレーション部２３５に実行させ、当該シミュレーションの結果に基づいて新たなタスクプログラムを変更する。例えばプログラム変更部２４２は、新規プログラム取得部２４１により新たなタスクプログラムが仮想情報格納部２３４に格納された後に、シミュレーション部２３５によるシミュレーションと、仮想情報更新部２３６による仮想環境情報の更新とを繰り返すことによって、新たなローカル機器２を含む複数のローカル機器２の動作をシミュレーションし、当該シミュレーションの結果に基づいて新たなタスクプログラムを変更する。
【００８７】
例えばプログラム変更部２４２は、新たなローカル機器２（例えばロボット）のモデルと、既存のローカル機器２（例えばロボット２Ｂ，２Ｃ及び移動型ロボット２Ｄ）のモデルとの干渉が生じないかを確認し、干渉が生じる場合に、当該干渉を回避するように新たなタスクプログラムを変更する。一例として、プログラム変更部２４２は、新たなタスクプログラムの動作プログラムの実行に伴う新たなローカル機器２の動作範囲を拡大するように条件ヘッダを変更する。プログラム変更部２４２は、上記干渉を回避するように新たなタスクプログラムの動作プログラムを変更していてもよい。プログラム変更部２４２は、複製プログラム保持部２３１が記憶する新たなタスクプログラムを変更する。更にプログラム変更部２４２は、新たなローカル機器２のローカルコントローラ４００に、変更後の新たなタスクプログラムを出力し、当該ローカルコントローラ４００のタスクプログラム保持部４１０における新たなタスクプログラムを変更する。
【００８８】
データ管理装置２００は、環境情報データベース２１１が格納する最新の環境情報と、仮想情報格納部２３４が格納する仮想環境情報との比較に基づいて、生産システム１の異常を検知するように構成されていてもよい。例えばデータ管理装置２００は、比較部２５１を更に有する。
【００８９】
比較部２５１は、現実空間における複数のローカル機器２の状態と、シミュレーション空間における複数のローカル機器２のモデルの状態とを一致させ、複数のローカルコントローラ４００による複数のローカル機器２の動作に同期して、複数のローカル機器２の動作をシミュレーション部２３５にシミュレーションさせる。例えば比較部２５１は、複数のローカルコントローラ４００による複数のローカル機器２の動作に同期して、シミュレーション部２３５によるシミュレーションと、仮想情報更新部２３６による仮想環境情報の更新とを繰り返し実行させる。比較部２５１は、環境情報データベース２１１が格納する最新の環境情報と、仮想情報格納部２３４が格納する仮想環境情報とに差異が生じた場合に、生産システム１の異常を検知する。
【００９０】
図７は、制御システム１００のハードウェア構成を例示するブロック図である。図７に示すように、データ管理装置２００は、回路２９０を有する。回路２９０は、一つ又は複数のプロセッサ２９１と、メモリ２９２と、ストレージ２９３と、通信ポート２９４とを含む。ストレージ２９３は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ２９３は、複数のローカル機器２の動作に応じて環境情報を更新することをデータ管理装置２００に実行させるためのプログラムを記憶している。例えばストレージ２９３は、上述したデータ管理装置２００の各機能ブロックを構成するためのプログラムを記憶している。
【００９１】
メモリ２９２は、ストレージ２９３の記憶媒体からロードしたプログラム及びプロセッサ２９１による演算結果を一時的に記憶する。プロセッサ２９１は、メモリ２９２と協働して上記プログラムを実行することで、データ管理装置２００の各機能ブロックを構成する。通信ポート２９４は、プロセッサ２９１からの指令に従って、第１のネットワーク回線ＮＷ１を介して、上位コントローラ３００との間で通信を行う。
【００９２】
上位コントローラ３００は、回路３９０を有する。回路３９０は、一つ又は複数のプロセッサ３９１と、メモリ３９２と、ストレージ３９３と、通信ポート３９４と、入出力ポート３９５と、通信ポート３９６とを含む。ストレージ３９３は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ３９３は、少なくとも一つのローカルコントローラ４００に対し指令を出力することと、複数のローカル機器２のステータス情報を複数のローカルコントローラ４００から取得することと、外部センサ５による検出結果を取得することと、を上位コントローラ３００に実行させるプログラムを記憶している。
【００９３】
メモリ３９２は、ストレージ３９３の記憶媒体からロードしたプログラム及びプロセッサ３９１による演算結果を一時的に記憶する。プロセッサ３９１は、メモリ３９２と協働して上記プログラムを実行することで、上位コントローラ３００の各機能ブロックを構成する。通信ポート３９４は、プロセッサ３９１からの指令に従って、第１のネットワーク回線ＮＷ１を介して、データ管理装置２００との間で通信を行う。入出力ポート３９５は、プロセッサ３９１からの指令に従って、外部センサ５との間で情報の入出力を行う。通信ポート３９６は、プロセッサ３９１からの指令に従って、第２のネットワーク回線ＮＷ２を介して、ローカルコントローラ４００との間で通信を行う。
【００９４】
ローカルコントローラ４００は、回路４９０を有する。回路４９０は、一つ又は複数のプロセッサ４９１と、メモリ４９２と、ストレージ４９３と、通信ポート４９４と、ドライバ回路４９５とを含む。ストレージ４９３は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ４９３は、データ管理装置２００において、複数のローカル機器２の動作に応じて更新される環境情報が所定の条件を満たすか否かを監視することと、環境情報が所定の条件を満たす場合に制御対象のローカル機器２に所定の動作を実行させることと、をローカルコントローラ４００に実行させるプログラムを記憶している。例えばストレージ４９３は、上述したローカルコントローラ４００の各機能ブロックを構成するためのプログラムを記憶している。
【００９５】
メモリ４９２は、ストレージ４９３の記憶媒体からロードしたプログラム及びプロセッサ４９１による演算結果を一時的に記憶する。プロセッサ４９１は、メモリ４９２と協働して上記プログラムを実行することで、ローカルコントローラ４００の各機能ブロックを構成する。通信ポート４９４は、プロセッサ４９１からの指令に従って、第２のネットワーク回線ＮＷ２を介して、上位コントローラ３００との間で通信を行う。ドライバ回路４９５は、プロセッサ４９１からの指令に従って、ローカル機器２に駆動電力を出力する。
【００９６】
なお、回路２９０，３９０，４９０は、必ずしもプログラムにより各機能を構成するものに限られない。例えば回路２９０，３９０，４９０は、専用の論理回路又はこれを集積したＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）により少なくとも一部の機能を構成してもよい。
【００９７】
以上に例示した制御システム１００の構成はあくまで一例であり、適宜変更可能である。例えば、データ管理装置２００は上位コントローラ３００に組み込まれていてもよい。また、複数のローカルコントローラ４００が上位コントローラ３００に組み込まれていてもよい。制御システム１００は、複数のローカル機器２の他のローカル機器を制御する他のローカルコントローラを更に有してもよい。
【００９８】
〔制御手順〕
続いて、制御方法の一例として、制御システム１００が実行する制御手順を例示する。この手順は、データ管理装置２００が実行する環境情報の更新手順と、ローカルコントローラ４００が実行するローカル機器２の制御手順と、データ管理装置２００が実行するタスクプログラム変更手順と、データ管理装置２００が実行する異常検知手順と、を含む。以下、各手順を詳細に例示する。
【００９９】
（環境情報の更新手順）
この手順は、ステータス情報に基づいて環境情報を更新することと、外部センサ５による検出結果に基づいて環境情報を更新することとを含む。図８に示すように、データ管理装置２００は、まずステップＳ０１を実行する。ステップＳ０１では、いずれかのローカルコントローラ４００がステータス情報を出力しているかを情報更新部３１２が確認する。
【０１００】
ステップＳ０１においていずれかのローカルコントローラ４００がステータス情報を出力していると判定した場合、データ管理装置２００は、ステップＳ０２を実行する。ステップＳ０２では、情報更新部３１２が、出力されたステータス情報を取得し、当該ステータス情報に基づいて情報更新部３１２の機器情報を更新する。
【０１０１】
次に、データ管理装置２００は、ステップＳ０３を実行する。ステップＳ０１においていずれのローカルコントローラ４００もステータス情報を出力していないと判定した場合、データ管理装置２００は、ステップＳ０２を実行することなくステップＳ０３を実行する。ステップＳ０３では、情報更新部３１２が、外部センサ５による検出結果を取得する。また、情報更新部２１２が、センサ情報処理部２１３による処理結果を取得する。
【０１０２】
次に、データ管理装置２００は、ステップＳ０４を実行する。ステップＳ０４では、情報更新部２１２が、外部センサ５による検出結果と、センサ情報処理部２１３による処理結果とに基づいて、少なくともワーク情報又は機器情報を更新する。データ管理装置２００は、以上の手順を繰り返す。
【０１０３】
（ローカル機器の制御手順）
図９に示すように、ローカルコントローラ４００は、まずステップＳ１１，Ｓ１２，Ｓ１３を実行する。ステップＳ１１では、環境情報取得部４２１が、上位コントローラ３００の環境情報格納部３１１に格納された環境情報を取得する。ステップＳ１２では、タスクプログラム保持部４１０が記憶する複数のタスクプログラムのいずれかを条件監視部４２２が選択する。ステップＳ１３では、ステップＳ１１で取得された環境情報が、ステップＳ１２で選択されたタスクプログラムの実行条件を満たすか否かを条件監視部４２２が確認する。
【０１０４】
ステップＳ１３において環境情報がタスクプログラムの実行条件を満たさないと判定した場合、ローカルコントローラ４００はステップＳ１４を実行する。ステップＳ１４では、実行条件の確認（実行条件を満たすか否かの確認）をタスクプログラム保持部４１０の全てのタスクプログラムに対して行ったかを条件監視部４２２が確認する。
【０１０５】
ステップＳ１４において、実行条件の確認が行われていないタスクプログラムが残っていると判定した場合、ローカルコントローラ４００は処理をステップＳ１２に戻す。以後、ステップＳ１３においてタスクプログラムの実行条件を満たすと判定されるか、ステップＳ１４において実行条件の確認を全てのタスクプログラムに対して行ったと判定されるまで、タスクプログラムの選択と実行条件の確認とが繰り返される。
【０１０６】
ステップＳ１３において環境情報がタスクプログラムの実行条件を満たすと判定した場合、ローカルコントローラ４００はステップＳ１５，Ｓ１６，Ｓ１７を実行する。ステップＳ１５では、動作実行部４２３が、実行条件が満たされたタスクプログラム４１１の動作プログラム（以下、「アクティブプログラム」という。）に従って、１制御周期分の動作を制御対象のローカル機器２に実行させる。ステップＳ１６では、ステータス出力部４２４が、制御対象のローカル機器２のステータス情報をデータ管理装置２００に出力する。ステップＳ１７では、動作実行部４２３が、アクティブプログラムに基づくローカル機器２の動作が完了したか否かを確認する。
【０１０７】
ステップＳ１７においてアクティブプログラムに基づくローカル機器２の動作が完了していないと判定した場合、ローカルコントローラ４００は処理をステップＳ１５に戻す。以後、アクティブプログラムの実行が完了するまで、アクティブプログラムに従った１制御周期分の動作を制御対象のローカル機器２に実行させることと、制御対象のローカル機器２のステータス情報をデータ管理装置２００に出力することとが繰り返される。
【０１０８】
ステップＳ１７においてアクティブプログラムに基づくローカル機器２の動作が完了したと判定した場合、ローカルコントローラ４００は、処理をステップＳ１１に戻す。ステップＳ１４において全てのタスクプログラムに対して実行条件の確認を行ったと判定した場合、ローカルコントローラ４００は、ステップＳ１５，Ｓ１６，Ｓ１７を実行することなく処理をステップＳ１１に戻す。ローカルコントローラ４００は以上の制御手順を繰り返す。
【０１０９】
（タスクプログラム変更手順）
この手順は、新たなローカル機器２に関する情報を、機器データベースに登録することと、新たなローカル機器２のローカルコントローラ４００から収集する当該ローカル機器２のステータス情報に基づく新たな情報の格納領域を環境情報格納部３１１に設けることと、新たなローカル機器２の追加に伴い、当該ローカル機器２の動作を表す動作プログラムと、実行条件を表す条件ヘッダとを含む新たなタスクプログラムを当該ローカル機器２のローカルコントローラ４００から取得することと、新たなタスクプログラムに基づいて新たなローカルコントローラ４００による新たなローカル機器２の動作のシミュレーションを実行し、当該シミュレーションの結果に基づいて新たなタスクプログラムを変更することと、を含む。
【０１１０】
図１０に示すように、データ管理装置２００は、まずステップＳ２１，Ｓ２２，Ｓ２３，Ｓ２４，Ｓ２５，Ｓ２６を実行する。ステップＳ２１では、機器登録部２２２が、新たなローカル機器２の追加を待機する。例えば機器登録部２２２は、新たなローカル機器２のローカルコントローラ４００から、当該ローカル機器２の登録要求が出力されるのを待機する。
【０１１１】
ステップＳ２２では、機器登録部２２２が、新たなローカル機器２に関する情報を、当該ローカル機器２のローカルコントローラ４００から取得し、機器データベース２２１に登録する。複数の新たなローカル機器２が同時に追加された場合、機器登録部２２２は、複数の新たなローカル機器２に関する情報を取得し、登録する。
【０１１２】
ステップＳ２３では、新規プログラム取得部２４１が、新たなローカル機器２の追加に伴い、当該ローカル機器２の動作を表す動作プログラムと、実行条件を表す条件ヘッダとを含む新たなタスクプログラムを当該ローカル機器２のローカルコントローラ４００から取得し、複製プログラム保持部２３１に格納する。複数の新たなローカル機器２が同時に追加された場合、新規プログラム取得部２４１は、複数の新たなローカル機器２のタスクプログラムを取得し、格納する。
【０１１３】
ステップＳ２４では、格納領域割当部２２３が、新たなローカル機器２のローカルコントローラ４００から収集する当該ローカル機器２のステータス情報に基づく新たな情報の格納領域を環境情報格納部３１１、環境情報データベース２１１及び仮想情報格納部２３４に設ける。例えば格納領域割当部２２３は、ステータス情報の内容に基づいて、上記新たな情報のデータフォーマットを設定し、設定したデータフォーマットに従って新たな情報の格納領域を環境情報格納部３１１、環境情報データベース２１１及び仮想情報格納部２３４に設ける。ステータス情報の内容は、格納領域割当部２２３により、例えば上記新たなタスクプログラムに基づいて認識される。
【０１１４】
ステップＳ２５では、例えばプログラム変更部２４２が、シミュレーション部２３５によるシミュレーションと、仮想情報更新部２３６による仮想環境情報の更新とを繰り返すことによって、新たなローカル機器２を含む複数のローカル機器２の動作をシミュレーションする。ステップＳ２６では、プログラム変更部２４２が、ステップＳ２５におけるシミュレーション結果に問題がないかを確認する。
【０１１５】
ステップＳ２６においてシミュレーション結果に問題があると判定した場合、データ管理装置２００は、ステップＳ２７を実行する。ステップＳ２７では、プログラム変更部２４２が、シミュレーションの結果に基づいて複製プログラム保持部２３１における新たなタスクプログラムを変更する。その後、データ管理装置２００は処理をステップＳ２６に戻す。以後、問題のないシミュレーション結果が得られるまで、シミュレーションと、新たなタスクプログラムの変更とが繰り返される。
【０１１６】
ステップＳ２６においてシミュレーション結果に問題がないと判定した場合、データ管理装置２００は、ステップＳ２８を実行する。ステップＳ２８では、プログラム変更部２４２が、複製プログラム保持部２３１における新たなタスクプログラムを変更したか否かを確認する。
【０１１７】
ステップＳ２８において新たなタスクプログラムを変更したと判定した場合、データ管理装置２００は、ステップＳ２９を実行する。ステップＳ２９では、複製プログラム保持部２３１において変更された新たなタスクプログラムをプログラム変更部２４２が新たなローカル機器２のローカルコントローラ４００に出力し、当該ローカルコントローラ４００のタスクプログラム保持部４１０のタスクプログラムを更新させる。その後、データ管理装置２００は処理をステップＳ２１に戻す。ステップＳ２８において新たなタスクプログラムを変更していないと判定した場合、データ管理装置２００はステップＳ２７を実行することなく処理をステップＳ２１に戻す。データ管理装置２００は以上の手順を繰り返す。
【０１１８】
図１１は、ステップＳ２５のシミュレーションにおいて、データ管理装置２００がローカル機器２ごとに実行するシミュレーション手順を例示するフローチャートである。図１１に示すように、データ管理装置２００は、まず、ステップＳ３１，Ｓ３２，Ｓ３３を実行する。ステップＳ３１では、シミュレーション部２３５が、仮想情報格納部２３４に格納された仮想環境情報を取得する。
【０１１９】
ステップＳ３２では、シミュレーション対象のローカル機器２に対応付けて複製プログラム保持部２３１が記憶する複数のタスクプログラム（以下、「対象タスクプログラム」という。）のいずれかをシミュレーション部２３５が選択する。ステップＳ３３では、ステップＳ３１で取得された仮想環境情報が、ステップＳ３２で選択された対象タスクプログラムの実行条件を満たすか否かをシミュレーション部２３５が確認する。
【０１２０】
ステップＳ３３において仮想環境情報が対象タスクプログラムの実行条件を満たさないと判定した場合、データ管理装置２００は、ステップＳ３４を実行する。ステップＳ３４では、実行条件の確認（実行条件を満たすか否かの確認）を全ての対象タスクプログラムに対して行ったかをシミュレーション部２３５が確認する。
【０１２１】
ステップＳ３４において実行条件の確認を行っていない対象タスクプログラムが残っていると判定した場合、データ管理装置２００は処理をステップＳ３２に戻す。以後、ステップＳ３２において対象タスクプログラムの実行条件を満たすと判定されるか、ステップＳ３４において実行条件の確認を全ての対象タスクプログラムに対して行ったと判定されるまで、対象タスクプログラムの選択と実行条件の確認とが繰り返される。
【０１２２】
ステップＳ３３において仮想環境情報が対象タスクプログラムの実行条件を満たすと判定した場合、データ管理装置２００は、ステップＳ３５，Ｓ３６，Ｓ３７を実行する。ステップＳ３５では、実行条件が満たされた対象タスクプログラムの動作プログラム（以下、「アクティブプログラム」という。）に従って、シミュレーション部２３５がシミュレーション対象のローカル機器２に対し１制御周期分のシミュレーションを実行する。
【０１２３】
ステップＳ３６では、仮想情報更新部２３６が、シミュレーション結果に基づいて、仮想情報格納部２３４の仮想環境情報を更新する。ステップＳ３７では、アクティブプログラムに基づくローカル機器２の動作が完了したか否かをシミュレーション部２３５が確認する。
【０１２４】
ステップＳ３７においてアクティブプログラムに基づくローカル機器２の動作が完了していないと判定した場合、ローカルコントローラ４００は処理をステップＳ３５に戻す。以後、アクティブプログラムの実行が完了するまで、アクティブプログラムに従った１制御周期分のシミュレーションを実行することと、シミュレーション結果に基づいて仮想環境情報を更新することとが繰り返される。
【０１２５】
ステップＳ３７においてアクティブプログラムに基づくローカル機器２の動作が完了したと判定した場合、データ管理装置２００は、処理をステップＳ３１に戻す。ステップＳ３４において実行条件の確認を全ての対象プログラムに対して行ったと判定した場合、データ管理装置２００は、ステップＳ３５，Ｓ３６，Ｓ３７を実行することなく処理をステップＳ３１に戻す。データ管理装置２００は以上の手順を繰り返す。
【０１２６】
（異常検知手順）
この手順は、環境情報と、仮想環境情報との比較に基づいて、生産システム１の異常を検知することを含む。図１２に示すように、データ管理装置２００は、まずステップＳ４１，Ｓ４２を実行する。ステップＳ４１では、比較部２５１が、シミュレーション空間における複数のローカル機器２のモデルの状態を、現実空間における複数のローカル機器２の状態に一致させ、複数のローカルコントローラ４００による複数のローカル機器２の動作の開始を待機する。ステップＳ４２では、比較部２５１が、シミュレーション部２３５によるシミュレーションを開始させる。以後、上述したローカル機器２ごとのシミュレーション手順に従って、シミュレーション部２３５によるシミュレーションと、仮想情報更新部２３６による仮想環境情報の更新とが繰り返される。
【０１２７】
これと並行して、データ管理装置２００は、次にステップＳ４３，Ｓ４４を実行する。ステップＳ４３では、環境情報データベース２１１が格納する最新の環境情報を比較部２５１が取得する。ステップＳ４４では、仮想情報格納部２３４の仮想環境情報と、ステップＳ４３で取得した仮想環境とが同一であるか否かを比較部２５１が確認する。
【０１２８】
ステップＳ４４において仮想環境情報と仮想環境とが同一でないと判定した場合、データ管理装置２００はステップＳ４５を実行する。ステップＳ４５では、比較部２５１が異常を報知する。例えば比較部２５１は、モニタ等の表示デバイスに異常報知画面を表示する。
【０１２９】
次に、データ管理装置２００は、ステップＳ４６を実行する。ステップＳ４４において仮想環境情報と仮想環境とが同一であると判定した場合、データ管理装置２００は、ステップＳ４５を実行することなくステップＳ４６を実行する。ステップＳ４６では、複数のローカルコントローラ４００による複数のローカル機器２の動作が停止したか否かを確認する。
【０１３０】
ステップＳ４６において複数のローカル機器２の動作が停止していないと判定した場合、データ管理装置２００は処理をステップＳ４３に戻す。以後、複数のローカル機器２の動作が停止するまでは、シミュレーション部２３５によるシミュレーション、仮想情報更新部２３６による仮想環境情報の更新、環境情報の取得、及び仮想環境情報と環境情報との比較が継続される。ステップＳ４６において複数のローカル機器２の動作が停止していると判定した場合、異常検知手順が完了する。
【０１３１】
〔本実施形態の効果〕
以上に説明したように、制御システム１００は、少なくともロボット２Ｂ，２Ｃを含む複数のローカル機器２をそれぞれ制御する複数のローカルコントローラ４００と、複数のローカルコントローラ４００と通信可能な環境管理部１１０と、を備え、環境管理部１１０は、環境情報を格納する環境情報格納部３１１と、複数のローカル機器２の動作に応じて環境情報を更新する情報更新部３１２と、を有し、複数のローカルコントローラ４００のそれぞれは、環境情報格納部３１１に格納された環境情報が所定の条件を満たすか否かを監視する条件監視部４２２と、環境情報が所定の条件を満たす場合に制御対象のローカル機器２に所定の動作を実行させる動作実行部４２３と、を有する。
【０１３２】
複数のローカル機器２をそれぞれ制御する複数のローカルコントローラ４００に対し、上位コントローラ３００から動作指令を出力する制御システム１００においては、複数のローカル機器２を協調させるために、上位コントローラ３００に複雑なプログラムが構築される。このため、ローカル機器２の追加・変更に際しては、上位コントローラ３００におけるプログラム改変が煩雑となる。これに対し、複数のローカルコントローラ４００のそれぞれが条件監視部４２２と動作実行部４２３とを有する制御システム１００（以下、「本制御システム」という。）によれば、各ローカルコントローラ４００において制御対象のローカル機器２と他のローカル機器２との協調が自律的に図られる。このため、上位コントローラ３００に複雑なプログラムを構築する必要がない。ローカル機器２の追加・変更に伴う煩雑なプログラム改変も不要である。従って、本制御システムは、ローカル機器２の追加・変更に適応し易い。また、上位コントローラ３００における情報処理負荷の軽減にも有効である。
【０１３３】
複数のローカルコントローラ４００のそれぞれは、制御対象のローカル機器２のステータス情報を環境管理部１１０に出力するステータス出力部４２４を更に有し、情報更新部３１２は、複数のローカルコントローラ４００から取得したステータス情報に基づいて環境情報を更新してもよい。この場合、ローカルコントローラ４００からのステータス情報を環境情報の更新に有効活用することができる。
【０１３４】
複数のローカル機器２は、第１ローカル機器と、第２ローカル機器とを含み、複数のローカルコントローラ４００は、第１ローカル機器を制御する第１コントローラ４００Ａと、第２ローカル機器を制御する第２コントローラ４００Ｂとを含み、情報更新部は、第１ローカル機器の動作に応じて環境情報の第１情報を更新し、第２コントローラ４００Ｂの条件監視部４２２は、第１情報が所定の条件を満たすか否かを監視し、第２コントローラ４００Ｂの動作実行部４２３は、第１情報が所定の条件を満たした場合に第２ローカル機器に所定の動作を実行させてもよい。この場合、第２コントローラ４００Ｂにおいて、第２ローカル機器と第１ローカル機器との協調が自律的に図られる。
【０１３５】
第１ローカル機器は、ワーク９を搬送する搬送装置２Ａであり、第２ローカル機器は、搬送装置２Ａが搬送するワーク９に対して作業を行うロボット２Ｂであってもよい。この場合、第２コントローラ４００Ｂにおいて、ロボット２Ｂと搬送装置２Ａとの協調が自律的に図られる。このため、搬送装置２Ａをペースメーカーとし、自律的システム全体のタクトタイムを管理することができる。
【０１３６】
複数のローカル機器２は、搬送装置２Ａが搬送するワークに対して作業を行う第２ロボット２Ｃを更に含み、複数のローカルコントローラ４００は、第２ロボット２Ｃを制御する第３コントローラ４００Ｃを更に含み、情報更新部３１２は、搬送装置２Ａ及びロボット２Ｂの動作に応じて環境情報の第２情報を更新し、第３コントローラ４００Ｃの動作実行部４２３は、第２情報が所定の条件を満たした場合に第２ロボット２Ｃに所定の動作を実行させてもよい。この場合、搬送装置２Ａをペースメーカーとして動作するロボット同士の協調も容易に図ることができる。
【０１３７】
ロボットは、自律走行可能な移動型ロボット２Ｄであってもよい。第２ロボットは、自律走行可能な移動型ロボット２Ｄであってもよい。環境管理部１１０は、複数のローカルコントローラ４００の少なくとも１以上と無線通信してもよい。
【０１３８】
環境管理部１１０は、複数のローカルコントローラ４００と同期通信を行い、情報更新部３１２は、同期通信の通信周期で環境情報を更新してもよい。この場合、環境情報を制御に必要な通信周期で更新することができる。環境情報が上記のように通信周期で更新されることで、複数のローカルコントローラ４００間を同期させることができる。
【０１３９】
制御システム１００は、環境状態を検出する外部センサ５を更に備え、環境管理部１１０は、外部センサ５から取得したセンサ情報に対して、所定の処理を行うセンサ情報処理部２１３を更に有し、情報更新部３１２は、センサ情報処理部２１３による処理結果に更に基づいて環境情報を更新してもよい。この場合、センサ情報を適切に処理して、環境情報として複数のローカルコントローラ４００で共有することが可能になり、システムを容易かつ柔軟に構築することができる。
【０１４０】
環境管理部１１０は、環境情報格納部３１１と情報更新部３１２とを有し、複数のローカルコントローラ４００と同期通信を行う上位コントローラ３００と、センサ情報処理部２１３を有し、上位コントローラ３００に対して、同期通信の通信周期よりも長い周期の同期通信又は非同期通信を行うデータ管理装置２００と、を有してもよい。この場合、上位コントローラ３００として、例えば、プログラマブルコントローラ、モーションコントローラ、シーケンサ等のコンポーネントを活用することができ、データ処理量が多い重い処理（処理するデータ量が大きい処理、処理時間が長い処理）を上位コントローラ３００と切り離すことで、処理量に応じたスペックのデータ管理装置２００を使用できるので、安価かつ容易にシステムを構築できる。加えて、重い処理を複数のローカルコントローラ４００間の同期を司る上位コントローラと切り離すことで、同期の確実性を担保できる。
【０１４１】
データ管理装置２００は、環境情報格納部３１１に格納される環境情報の履歴を保持する環境情報データベース２１１を更に有してもよい。この場合、環境情報の履歴を保持することで、異常発生時の異常原因のトレースや動作改善のためのデータ収集を容易にできる。
【０１４２】
複数のローカルコントローラ４００のそれぞれは、制御対象のローカル機器２の動作を表す動作プログラム４１３と、実行条件を表す条件ヘッダ４１２とを含むタスクプログラム４１１を格納したタスクプログラム保持部４１０を更に有し、条件監視部４２２は、環境情報と、タスクプログラム４１１の条件ヘッダ４１２とに基づいて、当該タスクプログラム４１１の実行条件が満たされたか否かを監視し、動作実行部４２３は、タスクプログラム４１１の実行条件が満たされた場合に、当該タスクプログラム４１１の動作プログラムに基づいて、制御対象のローカル機器２を動作させてもよい。この場合、条件ヘッダ４１２と動作プログラム４１３とを対応付けたタスクプログラム４１１の登録によって、自律動作用のプログラムを容易に構築することができ。また、条件ヘッダ４１２と、動作プログラム４１３とに切り分けて、プログラムを容易に編集することができる。更に、条件ヘッダ４１２と動作プログラム４１３とを１セットのタスクプログラム４１１とすることで、他のローカルコントローラ４００等へのプログラムの複製又は再利用（例えば複製したプログラムを改変して利用）も容易である。シミュレータへのタスクプログラム４１１の吸い上げも容易である。
【０１４３】
タスクプログラム保持部４１０は、上記タスクプログラム４１１を含む複数のタスクプログラム４１１を格納し、複数のタスクプログラム４１１のそれぞれが、制御対象のローカル機器２の動作を表す動作プログラム４１３と、実行条件を表す条件ヘッダ４１２とを含み、条件監視部４２２は、環境情報と、複数のタスクプログラム４１１の条件ヘッダ４１２とに基づいて、複数のタスクプログラム４１１のそれぞれの実行条件が満たされたか否かを判定し、動作実行部４２３は、複数のタスクプログラム４１１のうち実行条件が満たされたタスクプログラム４１１の動作プログラムに基づいて、制御対象のローカル機器２を動作させてもよい。この場合、環境に応じて複数種類の動作を実行させるプログラムを容易に構築することができる。また、タスクプログラム４１１の追加・削除によって、動作の種類の拡張・改変を容易に図ることができる。
【０１４４】
環境管理部１１０は、複数のローカル機器２に関する情報を格納する機器データベース２２１と、新たなローカル機器２に関する情報を、機器データベース２２１に登録する機器登録部２２２と、新たなローカル機器２が登録されると、当該ローカル機器２のローカルコントローラ４００から収集する当該ローカル機器２のステータス情報に基づく新たな情報の格納領域を環境情報格納部３１１に設ける格納領域割当部２２３と、を有していてもよい。この場合、ローカル機器２の追加に応じて、環境情報の格納領域が自動的に改変される。従って、ローカル機器２の追加に更に適応し易い。
【０１４５】
環境管理部１１０は、複数のローカルコントローラ４００のそれぞれのタスクプログラムを格納する複製プログラム保持部２３１と、環境情報に対応する仮想環境情報を格納する仮想情報格納部２３４と、仮想環境情報と、タスクプログラムの条件ヘッダとに基づいて、当該タスクプログラムの実行条件が満たされたか否かを監視し、タスクプログラムの実行条件が満たされた場合に、当該タスクプログラムの動作プログラムに基づいて、制御対象のローカル機器２の動作のシミュレーションを実行するシミュレーション部２３５と、シミュレーション部２３５によるシミュレーションにおける複数のローカル機器２の動作に応じて仮想環境情報を更新する仮想情報更新部２３６と、を更に有していてもよい。この場合、複数のローカル機器２の動作のシミュレーションに加え、複数のローカル機器２の動作に従った環境情報の変化をもシミュレーションすることによって、複数のローカル機器２の自律動作を容易にシミュレーションすることができる。
【０１４６】
環境管理部１１０は、新たなローカル機器２の追加に伴い、当該ローカル機器２の動作を表す動作プログラムと、実行条件を表す条件ヘッダとを含む新たなタスクプログラムを当該ローカル機器２のローカルコントローラ４００から取得する新規プログラム取得部２４１と、新規プログラム取得部２４１が取得した新たなタスクプログラムに基づいて新たなローカルコントローラ４００による新たなローカル機器２の動作のシミュレーションをシミュレーション部２３５に実行させ、当該シミュレーションの結果に基づいて新たなタスクプログラムを変更するプログラム変更部２４２と、を更に備えていてもよい。この場合、シミュレーション結果を、タスクプログラムの自動調整に有効活用することができる。
【０１４７】
制御システム１００は、環境状態を検出する外部センサ５を更に備え、情報更新部３１２は、外部センサ５の検出結果に更に基づいて環境情報を更新してもよい。この場合、外部センサ５を用いることによって、環境変化をより的確にとらえて環境情報に反映させることができる。
【０１４８】
複数のローカルコントローラ４００の少なくともいずれかにおいて、条件監視部４２２は、環境情報のうち外部センサ５の検出結果に基づいて更新されたセンサ関連情報が所定の条件を満たすか否かを監視し、動作実行部４２３は、センサ関連情報が所定の条件を満たした場合にローカル機器２に所定の動作を実行させてもよい。
【０１４９】
以上、実施形態について説明したが、本開示は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。
【符号の説明】
【０１５０】
２…ローカル機器、２Ａ…搬送装置、２Ｂ，２Ｃ…ロボット、２Ｄ…移動型ロボット、５…外部センサ、９…ワーク、１００…制御システム、１１０…環境管理部、３００…上位コントローラ、２００…データ管理装置、３１１…環境情報格納部、３１２…情報更新部、２１３…センサ情報処理部、２１１…環境情報データベース、２２１…機器データベース、２２２…機器登録部、２２３…格納領域割当部、２３１…複製プログラム保持部、２３４…仮想情報格納部、２３５…シミュレーション部、２３６…仮想情報更新部、２４１…新規プログラム取得部、２４２…プログラム変更部、４００…ローカルコントローラ、４００Ａ…ローカルコントローラ（第１コントローラ）、４００Ｂ…ローカルコントローラ（第２コントローラ）、４００Ｃ…ローカルコントローラ（第３コントローラ）、４１０…タスクプログラム保持部、４１１…タスクプログラム、４１２…条件ヘッダ、４１３…動作プログラム、４２２…条件監視部、４２３…動作実行部、４２４…ステータス出力部。
【要約】      （修正有）【課題】ローカル機器の追加・変更に適応し易い制御システムを提供する。【解決手段】制御システムは、少なくともロボットを含む複数のローカル機器２をそれぞれ制御する複数のローカルコントローラ４００と、複数のローカルコントローラ４００と通信可能な環境管理部１１０と、を備え、環境管理部１１０は、環境情報を格納する環境情報格納部３１１と、複数のローカル機器２の動作に応じて環境情報を更新する情報更新部３１２と、を有し、複数のローカルコントローラ４００のそれぞれは、環境情報格納部３１１に格納された環境情報が所定の条件を満たすか否かを監視する条件監視部４２２と、環境情報が所定の条件を満たす場合に制御対象のローカル機器２に所定の動作を実行させる動作実行部４２３と、を有する。【選択図】図３【図１】
0006754883.tif 000002
【図２】
0006754883.tif 000003
【図３】
0006754883.tif 000004
【図４】
0006754883.tif 000005
【図５】
0006754883.tif 000006
【図６】
0006754883.tif 000007
【図７】
0006754883.tif 000008
【図８】
0006754883.tif 000009
【図９】
0006754883.tif 000010
【図１０】
0006754883.tif 000011
【図１１】
0006754883.tif 000012
【図１２】
0006754883.tif 000013