以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
〔生産システム〕
図1に示す生産システム1は、複数のローカル機器の協調動作によって、ワークの生産を行うシステムである。以下、ワークの生産過程において、各ローカル機器の作業対象となる物体の全てを「ワーク」という。例えば「ワーク」は、生産システム1における最終生産物、最終生産物の部品、及び複数の部品を組み合わせたユニット等を含む。
協調動作は、少なくとも一つの上記最終生産物を得るための複数の工程を分担するように複数のローカル機器が動作することを意味する。複数のローカル機器は、一つの最終生産物を得るための複数の工程を工程単位で分担するように動作してもよいし、複数の最終生産物を得るための複数の工程を最終生産物単位で分担するように動作してもよい。
生産システム1は、複数のローカル機器2と、制御システム100とを含む。ローカル機器2は、ワーク9の生産現場においてワーク9に対し直接的に作業を実行する機器である。直接的な作業は、例えば、熱エネルギー、運動エネルギー、位置エネルギー等の何らかのエネルギーをワーク9に付与する作業である。
複数のローカル機器2は、少なくともロボットを含む(少なくとも1つのローカル機器2はロボットである)。図1に示す複数のローカル機器2は、搬送装置2Aと、ロボット2B,2Cと、移動型ロボット2Dとを含んでいるが、これに限られない。少なくとも1台のロボットを含んでいる限り、ローカル機器2の数及び種類は適宜変更可能である。
搬送装置2Aは、例えば電動モータ等の動力によりワーク9を搬送する。搬送装置2Aの具体例としては、ベルトコンベヤ、ローラコンベヤ等が挙げられる。ロボット2B,2C、及び移動型ロボット2Dは、搬送装置2Aが搬送するワーク9に対する作業を行う。ワーク9に対する作業の具体例としては、搬送装置2Aが搬送するワーク9(例えばベースパーツ)に対する他のワーク9(例えばサブパーツ)の組付け、搬送装置2Aが搬送するワーク9におけるパーツ同士の締結(例えばボルト締結)・接合(例えば溶接)等が挙げられる。
例えばロボット2B,2Cは、6軸の垂直多関節ロボットであり、図2に示すように、基部11と、旋回部12と、第1アーム13と、第2アーム14と、第3アーム17と、先端部18と、アクチュエータ41,42,43,44,45,46とを有する。基部11は、搬送装置2Aの周囲に設置されている。旋回部12は、鉛直な軸線21まわりに旋回するように基部11上に設けられている。第1アーム13は、軸線21に交差(例えば直交)する軸線22まわりに揺動するように旋回部12に接続されている。交差は、所謂立体交差のようにねじれの関係にある場合も含む。第2アーム14は、軸線22に実質的に平行な軸線23まわりに揺動するように第1アーム13の先端部に接続されている。第2アーム14は、アーム基部15とアーム端部16とを含む。アーム基部15は、第1アーム13の先端部に接続され、軸線23に交差(例えば直交)する軸線24に沿って延びている。アーム端部16は、軸線24まわりに旋回するようにアーム基部15の先端部に接続されている。第3アーム17は、軸線24に交差(例えば直交)する軸線25まわりに揺動するようにアーム端部16の先端部に接続されている。先端部18は、軸線25に交差(例えば直交)する軸線26まわりに旋回するように第3アーム17の先端部に接続されている。
このように、ロボット10は、基部11と旋回部12とを接続する関節31と、旋回部12と第1アーム13とを接続する関節32と、第1アーム13と第2アーム14とを接続する関節33と、第2アーム14においてアーム基部15とアーム端部16とを接続する関節34と、アーム端部16と第3アーム17とを接続する関節35と、第3アーム17と先端部18とを接続する関節36とを有する。
アクチュエータ41,42,43,44,45,46は、例えば電動モータ及び減速機を含み、関節31,32,33,34,35,36をそれぞれ駆動する。例えばアクチュエータ41は、軸線21まわりに旋回部12を旋回させ、軸線22まわりに第1アーム13を揺動させ、軸線23まわりに第2アーム14を揺動させ、軸線24まわりにアーム端部16を旋回させ、軸線25まわりに第3アーム17を揺動させ、軸線26まわりに先端部18を旋回させる。
なお、ロボット2B,2Cの具体的な構成は適宜変更可能である。例えばロボット2B,2Cは、上記6軸の垂直多関節ロボットに更に1軸の関節を追加した7軸の冗長型ロボットであってもよく、所謂スカラー型の多関節ロボットであってもよい。
図1に戻り、移動型ロボット2Dは、自律走行可能なロボットである。移動型ロボット2Dは、ロボット2B,2Cと同様に構成されたロボット10と、無人搬送車50とを有する。無人搬送車50は、ロボット10を搬送するように自律走行する。無人搬送車50の具体例としては、電動式の所謂AGV(Automated Guided Vehcle)が挙げられる。
生産システム1は、外部センサ5を更に備えてもよい。外部センサ5は、複数のローカル機器2の作業環境の状態(以下、「環境状態」という。)を検出する。外部センサ5の具体例としては、例えば複数のローカル機器2の作業環境を撮影するカメラが挙げられる。外部センサ5は、レーザ光等により、所定位置におけるワーク9の有無を検出するセンサであってもよいし、ワーク9のサイズ等を検出するセンサであってもよい。生産システム1は、複数の外部センサ5を備えてもよい。例えば生産システム1は、外部センサ5a,5bを有する。外部センサ5aは例えばリミットスイッチ等のON/OFF信号を出力するセンサである。外部センサ5bは、例えばカメラ等、1まとまりのデータを出力するセンサである。
〔制御システム〕
制御システム100は、環境管理部110と、複数のローカルコントローラ400とを有する。複数のローカルコントローラ400は、複数のローカル機器2をそれぞれ制御する。
図1において、制御システム100は、4つのローカルコントローラ400A,400B,400C,400Dを有する。ローカルコントローラ400Aは搬送装置2Aを制御し、ローカルコントローラ400Bはロボット2Bを制御し、ローカルコントローラ400Cはロボット2Cを制御し、ローカルコントローラ400Dは移動型ロボット2Dを制御する。ローカルコントローラ400の数及び各ローカルコントローラ400の構成は、ローカル機器2の数及び各ローカル機器2の種類に従って適宜変更可能である。
上位コントローラ300は、少なくとも一つのローカルコントローラ400に対し指令(例えば生産開始指令、生産停止指令等)を出力し、複数のローカル機器2のステータス情報を複数のローカルコントローラ400から取得する。また、上位コントローラ300は、外部センサ5による検出結果を取得する。上位コントローラ300の具体例としては、ラダープログラムに従って動作するプログラマブルロジックコントローラが挙げられる。
環境管理部110は、複数のローカルコントローラ400と有線通信又は無線通信により通信可能であり、複数のローカル機器2の動作に応じて環境情報を更新する。環境管理部110は、複数の装置により構成されていてもよい。例えば環境管理部110は、複数のローカルコントローラ400と同期通信を行い、同期通信の通信周期で環境情報を更新する。ここで、同期通信とは、一定の周期(上記通信周期)の同期フレームに同期して、1周期ごとに、複数のローカルコントローラ400との通信を行うことを意味する。環境管理部110は、外部センサ5から取得したセンサ情報に対して、所定の処理(例えば外部センサ5bから取得した画像情報に対する画像処理)を行い、処理結果に更に基づいて環境情報を更新するように構成されていてもよい。
環境管理部110は、複数の装置により構成されていてもよい。例えば環境管理部110は、データ管理装置200と、上位コントローラ300とを有する。上位コントローラ300は、複数のローカルコントローラ400と同期通信を行い、同期通信の通信周期で環境情報を更新する。データ管理装置200は、外部センサ5から取得したセンサ情報に対して所定の処理を行い、上位コントローラ300は、データ管理装置200によるセンサ情報の処理結果に更に基づいて環境情報を更新する。データ管理装置200は、上位コントローラ300に対して、上記同期通信の通信周期よりも長い周期の同期通信又は非同期通信を行う。
例えば図3に示すように、上位コントローラ300は、機能上の構成(以下、「機能ブロック」という。)として、環境情報格納部311と、情報更新部312とを有する。環境情報格納部311は、環境情報を格納する。
環境情報は、例えばローカル機器2に関する情報(以下、「機器情報」という。)と、ワーク9に関する情報(以下、「ワーク情報」という。)とを含む。機器情報の具体例としては、ローカル機器2の位置・姿勢情報が挙げられる。ローカル機器2の位置・姿勢情報の具体例としては、ロボット2B,2Cの姿勢情報、及び移動型ロボット2Dの位置・姿勢情報等が挙げられる。ロボット2B,2Cの姿勢情報は、関節31,32,33,34,35,36の動作角度情報であってもよいし、先端部18の位置・姿勢情報であってもよい。移動型ロボット2Dの位置・姿勢情報は、例えば無人搬送車50の位置・姿勢情報と、ロボット10の姿勢情報とを含む。ロボット10の姿勢情報は、関節31,32,33,34,35,36の動作角度情報であってもよいし、先端部18の位置・姿勢(無人搬送車50を基準にした位置・姿勢)情報であってもよい。
図4は、機器情報を例示するテーブルである。図4においては、ローカル機器2の識別情報と、ローカル機器2に関する情報を示す少なくとも一つの状態パラメータとが対応付けられている。
ワーク情報の具体例としては、搬送装置2Aにおける各ワーク9の位置情報と、各ワーク9の工程進捗情報とが挙げられる。工程進捗情報は、例えば上記最終生産物となるまでの全工程のうち、何工程目までが完了しているかを示す情報である。
図5は、ワーク情報を例示するテーブルである。図5においては、ワーク9の識別情報(例えば種別及びシリアル番号)と、ワーク9の位置情報と、ワーク9の工程進捗情報とが対応付けられている。
図3に戻り、情報更新部312は、複数のローカル機器2の動作に応じて、環境情報格納部311の環境情報を更新する。例えば情報更新部312は、複数のローカルコントローラ400のそれぞれからローカル機器2のステータス情報を取得し、当該ステータス情報に基づいて機器情報を更新する。情報更新部312は、ローカル機器2のステータス情報に基づいてワーク情報を更に更新してもよい。例えば情報更新部312は、ローカルコントローラ400Aから取得した搬送装置2Aのステータス情報に基づいて、各ワーク9の位置情報を更新してもよい。
ステータス情報は、ローカル機器2がどの作業を実行したかを示す情報(以下、「作業内容情報」という。)を含んでいてもよい。作業内容情報の具体例としては、ローカルコントローラ400がどのプログラムに従ってローカル機器2を動作させたかを示す情報が挙げられる。情報更新部312は、作業内容情報に基づいて作業対象のワーク9の工程進捗情報を更新してもよい。
情報更新部312は、外部センサ5の検出結果に更に基づいて環境情報を更新してもよい。例えば情報更新部312は、外部センサ5bが出力する信号に基づいて環境情報を更新してもよい。
データ管理装置200は、機能ブロックとして、環境情報データベース211と、情報更新部212と、センサ情報処理部213と、データクローン部214とを有する。環境情報データベース211は、環境情報格納部311に格納される環境情報の履歴を保持する。例えば環境情報データベース211は、環境情報格納部311に格納された環境情報を時系列で保持する。
データクローン部214は、環境情報データベース211における最新の環境情報を、環境情報格納部311の環境情報に一致させる。例えばデータクローン部214は、上位コントローラ300において環境情報格納部311の環境情報が更新された場合に、当該環境情報を環境情報格納部311から取得し、これを最新の環境情報として環境情報データベース211に格納する。データクローン部214は、環境情報データベース211に格納された環境情報を取得し、これを環境情報格納部311に格納してもよい。
センサ情報処理部213は、外部センサ5から取得したセンサ情報に対して、所定の処理を行う。所定の処理の具体例としては、外部センサ5bから取得した画像情報及び他の外部センサ5から取得したセンサ情報とに基づいて、ワークの種類・位置・姿勢等のワーク情報、ロボットの位置、ロボットの動作状態等の機器情報、及び、ワークに対するエンドエフェクタのアプローチ方法(ワーク情報及び機器情報の複合情報)等を抽出する処理が挙げられる。
情報更新部212は、センサ情報処理部213の処理結果に基づいて、環境情報データベース211における最新の環境情報を更新する。情報更新部212は、センサ情報処理部213の処理結果を上位コントローラ300の情報更新部312に出力する。これに応じ、情報更新部312は、センサ情報処理部213の処理結果に基づいて、環境情報格納部311の環境情報を更新する。
ローカルコントローラ400は、上位コントローラ300において、複数のローカル機器2の動作に応じて更新される環境情報が所定の条件を満たすか否かを監視することと、環境情報が所定の条件を満たす場合に制御対象のローカル機器2に所定の動作を実行させることと、を実行するように構成されている。ローカルコントローラ400は、ローカル機器2の近傍に配置される所謂エッジデバイスである。例えばローカルコントローラ400は、機能ブロックとして、タスクプログラム保持部410と、環境情報取得部421と、条件監視部422と、動作実行部423と、ステータス出力部424とを有する。
タスクプログラム保持部410は、少なくとも一つのタスクプログラム411を格納する。タスクプログラム411は、条件ヘッダ412と、動作プログラム413とを含む。動作プログラム413は、制御対象のローカル機器2の動作を表す。例えば動作プログラム413は、ローカル機器2に一まとまりの動作を実行させるように時系列に並ぶ複数の移動命令を含む。例えばロボット2B,2C、及び移動型ロボット2Dの動作プログラム413における移動命令は、先端部18の目標位置・目標姿勢を含む。
条件ヘッダ412は、動作プログラム413の実行条件を表す。実行条件は、動作プログラム413を実行するために、上記環境情報が満たすべき条件である。実行条件の具体例としては、以下が挙げられる。
例1)
動作プログラム413の実行に伴うローカル機器2の動作範囲内に、隣接するローカル機器2が位置していないこと。
例2)
動作プログラム413の実行に伴うローカル機器2の作業が実行可能な位置に、作業対象のワーク9が配置されていること。
実行条件は、上記例1及び例2の組み合わせであってもよい。なお、作業対象のワーク9は、例えば上記作業が実行されておらず、当該作業の直前の作業が完了しているワーク9である。
タスクプログラム保持部410は、複数のタスクプログラム411を格納し、複数のタスクプログラム411のそれぞれが、条件ヘッダ412と動作プログラム413とを含んでいてもよい。
環境情報取得部421は、上位コントローラ300の環境情報格納部311に格納された環境情報を取得する。なお、環境情報取得部421は、上位コントローラ300に環境情報の出力を要求し、要求に応じて出力された環境情報を取得してもよいし、要求の有無によらずに、例えば上記同期通信において上位コントローラ300から出力された環境情報を取得してもよい。
条件監視部422は、環境情報取得部421が取得した環境情報が、所定の条件を満たすか否かを監視する。例えば条件監視部422は、環境情報取得部421が取得した環境情報と、タスクプログラム411の条件ヘッダ412とに基づいて、タスクプログラム411の実行条件が満たされたか否かを監視する。
例えば、条件ヘッダ412により上記例1の実行条件が定められている場合、条件監視部422は、環境情報から、上記隣接するローカル機器2の位置・姿勢情報を抽出し、抽出した情報に基づいて、上記ローカル機器2の動作範囲内に隣接するローカル機器2が位置しているか否かを監視する。上記ローカル機器2の動作範囲内に隣接するローカル機器2が位置していない場合、条件監視部422は、上記例1の実行条件が満たされたと判定する。
条件ヘッダ412により上記例2の実行条件が定められている場合、条件監視部422は、環境情報から、搬送装置2Aが搬送するワーク9の位置に関する情報と、ワーク9の工程進捗情報とを抽出し、抽出した情報に基づいて、上記作業が実行可能な位置に、上記作業対象のワーク9が配置されているか否かを監視する。上記作業が実行可能な位置に上記作業対象のワーク9が配置されている場合、条件監視部422は、上記例2の実行条件が満たされたと判定する。
タスクプログラム保持部410が複数のタスクプログラム411を格納している場合、条件監視部422は、環境情報取得部421が取得した環境情報と、複数のタスクプログラム411の条件ヘッダ412とに基づいて、複数のタスクプログラム411のそれぞれの実行条件が満たされたか否かを判定してもよい。
動作実行部423は、環境情報が所定の条件を満たす場合に制御対象のローカル機器2に所定の動作を実行させる。例えば動作実行部423は、条件監視部422による監視結果においてタスクプログラム411の実行条件が満たされた場合に、当該タスクプログラム411の動作プログラムに基づいて、制御対象のローカル機器2を動作させる。
タスクプログラム保持部410が複数のタスクプログラム411を格納している場合、動作実行部423は、条件監視部422による監視結果において複数のタスクプログラム411のいずれかのタスクプログラム411の実行条件が満たされた場合に、当該タスクプログラム411の動作プログラムに基づいて、制御対象のローカル機器2を動作させる。
ステータス出力部424は、制御対象のローカル機器2の上記ステータス情報を上位コントローラ300に出力する。上述したように、ステータス情報は、少なくともローカル機器2の位置・姿勢情報を含み、上記作業内容情報(ローカル機器2がどの作業を実行したかを示す情報)を更に含んでいてもよい。
ステータス出力部424は、作業内容情報に基づいて、作業対象のワーク9の上記工程進捗情報(上記最終生産物となるまでの全工程のうち、何工程目までが完了しているかを示す情報)を導出し、導出した工程進捗情報をステータス情報に含めて出力してもよい。この場合、上位コントローラ300の情報更新部312において、作業内容情報に基づき工程進捗情報を導出することが不要となる。
なお、ステータス出力部424は、上記同期通信における上位コントローラ300からの要求に応じてステータス情報を出力してもよいし、上位コントローラ300からの要求の有無によらずにステータス情報を出力してもよい。
各ローカルコントローラ400が上述のように構成されることによって、制御システム100が実行する制御を以下に例示する。この例示においては、環境情報格納部311の環境情報のうち、ローカルコントローラ400Bの条件監視部422が参照する情報を「第1情報」といい、ローカルコントローラ400Cの条件監視部422が参照する情報を「第2情報」といい、ローカルコントローラ400Dの条件監視部422が参照する情報を「第3情報」という。第1情報、第2情報及び第3情報は、少なくともワーク情報を含む。
例えばローカルコントローラ400A(第1コントローラ)の動作実行部423は、ワーク9を搬送するように搬送装置2Aを制御する。ローカルコントローラ400Aのステータス出力部424は、搬送装置2Aのステータス情報を出力する。
情報更新部312は、搬送装置2Aの動作に応じてワーク情報を更新する。これにより、第1情報、第2情報及び第3情報が更新される。例えば情報更新部312は、搬送装置2Aのステータス情報に基づいて、搬送装置2Aにおける各ワーク9の位置情報を更新する。
ローカルコントローラ400B,400C,400Dの条件監視部422は、ワーク情報が所定の条件を満たすか否かを監視し、ローカルコントローラ400B,400C,400Dの動作実行部423は、ワーク情報が所定の条件を満たした場合にローカル機器2に所定の動作を実行させる。例えば、ローカルコントローラ400B(第2コントローラ)の条件監視部422は、第1情報が、次の条件を満たすか否かを監視する。
条件1-1)
動作プログラム413の実行に伴うロボット2Bの作業が実行可能な位置に、作業対象のワーク9が配置されている。
ローカルコントローラ400Bの動作実行部423は、第1情報が上記条件1-1を満たした場合に、作業対象のワーク9に対する所定の作業をロボット2Bに実行させる。ローカルコントローラ400Bのステータス出力部424は、少なくとも上記作業の実行中又は実行後におけるロボット2Bのステータス情報を出力する。
ローカルコントローラ400C(第3コントローラ)の条件監視部422は、第2情報が次の条件を満たすか否かを監視する。
条件1-2)
動作プログラム413の実行に伴うロボット2Cの作業が実行可能な位置に、作業対象のワーク9が配置されている。
ローカルコントローラ400Cの動作実行部423は、第2情報が上記条件1-2を満たした場合に、作業対象のワーク9に対する所定の作業をロボット2Cに実行させる。ローカルコントローラ400Cのステータス出力部424は、少なくとも上記作業の実行中又は実行後におけるロボット2Cのステータス情報を出力する。
ローカルコントローラ400D(第4コントローラ)の条件監視部422は、第3情報が次の条件を満たすか否かを監視する。
条件1-3)
動作プログラム413の実行に伴うロボット10の作業が実行可能な位置に、作業対象のワーク9が配置されている。
なお、ワーク9の位置が搬送装置2Aを基準とする座標系(以下、「第1座標系」という。)で表されるのに対し、ロボット10の作業が実行可能な位置は無人搬送車50を基準とする座標系(以下、「第2座標系」という。)で表される場合がある。このような場合、条件監視部422は、ワーク9の位置に対し、第1座標系から第2座標系への座標変換を施し、第2座標系におけるワーク9の位置が条件1-3を満たすか否かを監視してもよい。
ローカルコントローラ400Dは、第3情報が上記条件1-3を満たす場合に、作業対象のワーク9に対する所定の作業を移動型ロボット2Dに実行させる。ローカルコントローラ400Dのステータス出力部424は、少なくとも上記作業の実行中又は実行後における移動型ロボット2Dのステータス情報を出力する。これに応じ、情報更新部312が移動型ロボット2Dの機器情報(第2情報)を更新する。
情報更新部312は、ロボット2B,2C及び移動型ロボット2Dの動作に応じて機器情報及びワーク情報を更新する。例えば情報更新部312は、ローカルコントローラ400Bのステータス出力部424が出力したステータス情報に基づいてロボット2Bの機器情報を更新し、ロボット2Bによる作業対象のワーク9のワーク情報(工程進捗情報)を更新する。情報更新部312は、ローカルコントローラ400Cのステータス出力部424が出力したステータス情報に基づいてロボット2Cの機器情報を更新し、ロボット2Cによる作業対象のワーク9のワーク情報(工程進捗情報)を更新する。情報更新部312は、ローカルコントローラ400Dのステータス出力部424が出力したステータス情報に基づいて移動型ロボット2Dの機器情報を更新し、移動型ロボット2Dによる作業対象のワーク9のワーク情報(工程進捗情報)を更新する。
第1情報は、ロボット2Bと隣接するローカル機器2(ロボット2C)の機器情報を更に含んでもよい。この場合、ローカルコントローラ400Bの条件監視部422は、第1情報が次の条件を満たすか否かを更に監視する。
条件2-1)
動作プログラム413の実行に伴うロボット2Bの動作範囲内に、ロボット2Cが位置していない。
ローカルコントローラ400Bの動作実行部423は、第1情報が上記条件1-1及び条件2-1を満たした場合に、作業対象のワーク9に対する所定の作業をロボット2Bに実行させる。
第2情報は、ロボット2Cと隣接するローカル機器2(ロボット2B及び移動型ロボット2D)の機器情報を更に含んでもよい。この場合、ローカルコントローラ400Cの条件監視部422は、第2情報が次の条件を満たすか否かを更に監視する。
条件2-2)
動作プログラム413の実行に伴うロボット2Cの動作範囲内に、ロボット2B及び移動型ロボット2Dが位置していない。
ローカルコントローラ400Cの動作実行部423は、ワーク情報が上記条件1-2及び条件2-2を満たした場合に、作業対象のワーク9に対する所定の作業をロボット2Cに実行させる。
第3情報は、移動型ロボット2Dと隣接するローカル機器2(ロボット2B)の機器情報を更に含んでもよい。この場合、ローカルコントローラ400Dの条件監視部422は、第3情報が次の条件を満たすか否かを更に監視する。
条件2-3)
動作プログラム413の実行に伴う移動型ロボット2Dの動作範囲内に、ロボット2Cが位置していない。
ローカルコントローラ400Dの動作実行部423は、第3情報が上記条件1-3及び条件2-3を満たした場合に、作業対象のワーク9に対する所定の作業を移動型ロボット2Dに実行させる。
情報更新部312は、外部センサ5の検出結果に更に基づいて第1情報を更新してもよい。この場合、ローカルコントローラ400Bの条件監視部422は、外部センサ5の検出結果に基づいて更新されたセンサ関連情報が所定の条件を満たすか否かを監視し、ローカルコントローラ400Bの動作実行部423は、センサ関連情報が所定の条件を満たした場合にロボット2Bに所定の動作を実行させる。
情報更新部312は、外部センサ5の検出結果に更に基づいて第2情報を更新してもよい。この場合、ローカルコントローラ400Cの条件監視部422は、外部センサ5の検出結果に基づいて更新されたセンサ関連情報が所定の条件を満たすか否かを監視し、ローカルコントローラ400Cの動作実行部423は、センサ関連情報が所定の条件を満たした場合にロボット2Cに所定の動作を実行させる。
情報更新部312は、外部センサ5の検出結果に更に基づいて第3情報を更新してもよい。この場合、ローカルコントローラ400Dの条件監視部422は、外部センサ5の検出結果に基づいて更新されたセンサ関連情報が所定の条件を満たすか否かを監視し、ローカルコントローラ400Dの動作実行部423は、センサ関連情報が所定の条件を満たした場合に移動型ロボット2Dに所定の動作を実行させる。
環境管理部110は、新たなローカル機器2に関する情報を、機器データベースに登録することと、新たなローカル機器2のローカルコントローラ400から収集する当該ローカル機器2のステータス情報に基づく新たな情報の格納領域を環境情報格納部311に設けることと、を更に実行するように構成されていてもよい。例えば図6に示すように、データ管理装置200は、機能ブロックとして、機器データベース221と、機器登録部222と、格納領域割当部223とを更に有する。
機器データベース221は、複数のローカル機器2に関する情報を格納する。ローカル機器2に関する情報は、例えばローカル機器2の識別情報と、ローカル機器2の種別情報と、ローカル機器2のモデル情報等を含む。ローカル機器2のモデル情報は、ローカル機器2の構造及び各部の寸法に関する情報を含む。機器登録部222は、新たなローカル機器2に関する情報を、当該ローカル機器2のローカルコントローラ400から取得し、機器データベース221に登録する。機器データベース221は、上位コントローラ300を介して、新たなローカル機器2に関する情報を当該ローカル機器2のローカルコントローラ400から取得してもよい。
格納領域割当部223は、新たなローカル機器2のローカルコントローラ400から収集する当該ローカル機器2のステータス情報に基づく新たな情報の格納領域を、環境情報データベース211と、上位コントローラ300の環境情報格納部311とに設ける。例えば格納領域割当部223は、ステータス情報の内容に基づいて、上記新たな情報のデータフォーマットを設定し、設定したデータフォーマットに従って新たな情報の格納領域を環境情報データベース211及び環境情報格納部311に設ける。なお、新たなローカル機器2のローカルコントローラ400が上記データフォーマットを設定してもよい。
データ管理装置200は、仮想環境情報と、タスクプログラムの条件ヘッダとに基づいて、当該タスクプログラムの実行条件が満たされたか否かを監視し、タスクプログラムの実行条件が満たされた場合に、当該タスクプログラムの動作プログラムに基づいて、制御対象のローカル機器の動作のシミュレーションを実行することと、シミュレーションにおけるローカル機器2の動作に応じて仮想環境情報を更新することと、を更に実行するように構成されていてもよい。例えばデータ管理装置200は、機能ブロックとして、複製プログラム保持部231と、仮想情報格納部234と、シミュレーション部235と、仮想情報更新部236とを更に有する。
複製プログラム保持部231は、複数のローカル機器2のそれぞれのタスクプログラム(例えばタスクプログラム保持部410が保持する複数のタスクプログラムの複製)を格納する。仮想情報格納部234は、上記仮想環境情報を格納する。仮想環境情報は、環境情報と同一のデータ構造を有する。格納領域割当部223は、新たなローカルコントローラ400から収集する当該ローカル機器2のステータス情報に基づく新たな情報の格納領域を仮想情報格納部234にも設ける。
シミュレーション部235は、仮想環境情報と、タスクプログラムの条件ヘッダとに基づいて、当該タスクプログラムの実行条件が満たされたか否かを監視し、タスクプログラムの実行条件が満たされた場合に、当該タスクプログラムの動作プログラムに基づいて、制御対象のローカル機器2の動作のシミュレーションを実行する。例えばシミュレーション部235は、搬送装置2Aのタスクプログラムの実行条件が満たされた場合に、当該タスクプログラムの動作プログラムと、機器データベース221が格納する搬送装置2Aのモデル情報とに基づいて、搬送装置2Aのモデルをシミュレーション空間で動作させる。
シミュレーション部235は、ロボット2Bのタスクプログラムの実行条件が満たされた場合に、当該タスクプログラムの動作プログラムと、機器データベース221が格納するロボット2Bのモデル情報とに基づいて、ロボット2Bのモデルをシミュレーション空間で動作させる。
シミュレーション部235は、ロボット2Cのタスクプログラムの実行条件が満たされた場合に、当該タスクプログラムの動作プログラムと、機器データベース221が格納するロボット2Cのモデル情報とに基づいて、ロボット2Cのモデルをシミュレーション空間で動作させる。
シミュレーション部235は、移動型ロボット2Dのタスクプログラムの実行条件が満たされた場合に、当該タスクプログラムの動作プログラムと、機器データベース221が格納する移動型ロボット2Dのモデル情報とに基づいて、移動型ロボット2Dのモデルをシミュレーション空間で動作させる。
仮想情報更新部236は、シミュレーション部235によるシミュレーションにおける複数のローカル機器2の動作に応じて仮想情報格納部234の仮想環境情報を更新する。データ管理装置200は、シミュレーション部235によるシミュレーションと、仮想情報更新部236による仮想環境情報の更新とを繰り返すことによって、複数のローカルコントローラ400による複数のローカル機器2の動作をシミュレーションする。
データ管理装置200は、新たなローカル機器2の追加に伴い、当該ローカル機器2の動作を表す動作プログラムと、実行条件を表す条件ヘッダとを含む新たなタスクプログラムを当該ローカル機器2のローカルコントローラ400から取得することと、新たなタスクプログラムに基づいて新たなローカルコントローラ400による新たなローカル機器2の動作のシミュレーションを実行し、当該シミュレーションの結果に基づいて新たなタスクプログラムを変更することと、を更に実行するように構成されていてもよい。例えばデータ管理装置200は、機能ブロックとして、新規プログラム取得部241と、プログラム変更部242とを更に有する。
新規プログラム取得部241は、新たなローカル機器2の追加に伴い、当該ローカル機器2の動作を表す動作プログラムと、実行条件を表す条件ヘッダとを含む新たなタスクプログラムを当該ローカル機器2のローカルコントローラ400から取得し、複製プログラム保持部231に格納する。新規プログラム取得部241は、上位コントローラ300を介して、新たなローカル機器2のタスクプログラムを当該ローカル機器2のローカルコントローラ400から取得してもよい。
プログラム変更部242は、新規プログラム取得部241が取得した新たなタスクプログラムに基づいて新たなローカルコントローラ400による新たなローカル機器2の動作のシミュレーションをシミュレーション部235に実行させ、当該シミュレーションの結果に基づいて新たなタスクプログラムを変更する。例えばプログラム変更部242は、新規プログラム取得部241により新たなタスクプログラムが仮想情報格納部234に格納された後に、シミュレーション部235によるシミュレーションと、仮想情報更新部236による仮想環境情報の更新とを繰り返すことによって、新たなローカル機器2を含む複数のローカル機器2の動作をシミュレーションし、当該シミュレーションの結果に基づいて新たなタスクプログラムを変更する。
例えばプログラム変更部242は、新たなローカル機器2(例えばロボット)のモデルと、既存のローカル機器2(例えばロボット2B,2C及び移動型ロボット2D)のモデルとの干渉が生じないかを確認し、干渉が生じる場合に、当該干渉を回避するように新たなタスクプログラムを変更する。一例として、プログラム変更部242は、新たなタスクプログラムの動作プログラムの実行に伴う新たなローカル機器2の動作範囲を拡大するように条件ヘッダを変更する。プログラム変更部242は、上記干渉を回避するように新たなタスクプログラムの動作プログラムを変更していてもよい。プログラム変更部242は、複製プログラム保持部231が記憶する新たなタスクプログラムを変更する。更にプログラム変更部242は、新たなローカル機器2のローカルコントローラ400に、変更後の新たなタスクプログラムを出力し、当該ローカルコントローラ400のタスクプログラム保持部410における新たなタスクプログラムを変更する。
データ管理装置200は、環境情報データベース211が格納する最新の環境情報と、仮想情報格納部234が格納する仮想環境情報との比較に基づいて、生産システム1の異常を検知するように構成されていてもよい。例えばデータ管理装置200は、比較部251を更に有する。
比較部251は、現実空間における複数のローカル機器2の状態と、シミュレーション空間における複数のローカル機器2のモデルの状態とを一致させ、複数のローカルコントローラ400による複数のローカル機器2の動作に同期して、複数のローカル機器2の動作をシミュレーション部235にシミュレーションさせる。例えば比較部251は、複数のローカルコントローラ400による複数のローカル機器2の動作に同期して、シミュレーション部235によるシミュレーションと、仮想情報更新部236による仮想環境情報の更新とを繰り返し実行させる。比較部251は、環境情報データベース211が格納する最新の環境情報と、仮想情報格納部234が格納する仮想環境情報とに差異が生じた場合に、生産システム1の異常を検知する。
図7は、制御システム100のハードウェア構成を例示するブロック図である。図7に示すように、データ管理装置200は、回路290を有する。回路290は、一つ又は複数のプロセッサ291と、メモリ292と、ストレージ293と、通信ポート294とを含む。ストレージ293は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ293は、複数のローカル機器2の動作に応じて環境情報を更新することをデータ管理装置200に実行させるためのプログラムを記憶している。例えばストレージ293は、上述したデータ管理装置200の各機能ブロックを構成するためのプログラムを記憶している。
メモリ292は、ストレージ293の記憶媒体からロードしたプログラム及びプロセッサ291による演算結果を一時的に記憶する。プロセッサ291は、メモリ292と協働して上記プログラムを実行することで、データ管理装置200の各機能ブロックを構成する。通信ポート294は、プロセッサ291からの指令に従って、第1のネットワーク回線NW1を介して、上位コントローラ300との間で通信を行う。
上位コントローラ300は、回路390を有する。回路390は、一つ又は複数のプロセッサ391と、メモリ392と、ストレージ393と、通信ポート394と、入出力ポート395と、通信ポート396とを含む。ストレージ393は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ393は、少なくとも一つのローカルコントローラ400に対し指令を出力することと、複数のローカル機器2のステータス情報を複数のローカルコントローラ400から取得することと、外部センサ5による検出結果を取得することと、を上位コントローラ300に実行させるプログラムを記憶している。
メモリ392は、ストレージ393の記憶媒体からロードしたプログラム及びプロセッサ391による演算結果を一時的に記憶する。プロセッサ391は、メモリ392と協働して上記プログラムを実行することで、上位コントローラ300の各機能ブロックを構成する。通信ポート394は、プロセッサ391からの指令に従って、第1のネットワーク回線NW1を介して、データ管理装置200との間で通信を行う。入出力ポート395は、プロセッサ391からの指令に従って、外部センサ5との間で情報の入出力を行う。通信ポート396は、プロセッサ391からの指令に従って、第2のネットワーク回線NW2を介して、ローカルコントローラ400との間で通信を行う。
ローカルコントローラ400は、回路490を有する。回路490は、一つ又は複数のプロセッサ491と、メモリ492と、ストレージ493と、通信ポート494と、ドライバ回路495とを含む。ストレージ493は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ493は、データ管理装置200において、複数のローカル機器2の動作に応じて更新される環境情報が所定の条件を満たすか否かを監視することと、環境情報が所定の条件を満たす場合に制御対象のローカル機器2に所定の動作を実行させることと、をローカルコントローラ400に実行させるプログラムを記憶している。例えばストレージ493は、上述したローカルコントローラ400の各機能ブロックを構成するためのプログラムを記憶している。
メモリ492は、ストレージ493の記憶媒体からロードしたプログラム及びプロセッサ491による演算結果を一時的に記憶する。プロセッサ491は、メモリ492と協働して上記プログラムを実行することで、ローカルコントローラ400の各機能ブロックを構成する。通信ポート494は、プロセッサ491からの指令に従って、第2のネットワーク回線NW2を介して、上位コントローラ300との間で通信を行う。ドライバ回路495は、プロセッサ491からの指令に従って、ローカル機器2に駆動電力を出力する。
なお、回路290,390,490は、必ずしもプログラムにより各機能を構成するものに限られない。例えば回路290,390,490は、専用の論理回路又はこれを集積したASIC(Application Specific Integrated Circuit)により少なくとも一部の機能を構成してもよい。
以上に例示した制御システム100の構成はあくまで一例であり、適宜変更可能である。例えば、データ管理装置200は上位コントローラ300に組み込まれていてもよい。また、複数のローカルコントローラ400が上位コントローラ300に組み込まれていてもよい。制御システム100は、複数のローカル機器2の他のローカル機器を制御する他のローカルコントローラを更に有してもよい。
〔制御手順〕
続いて、制御方法の一例として、制御システム100が実行する制御手順を例示する。この手順は、データ管理装置200が実行する環境情報の更新手順と、ローカルコントローラ400が実行するローカル機器2の制御手順と、データ管理装置200が実行するタスクプログラム変更手順と、データ管理装置200が実行する異常検知手順と、を含む。以下、各手順を詳細に例示する。
(環境情報の更新手順)
この手順は、ステータス情報に基づいて環境情報を更新することと、外部センサ5による検出結果に基づいて環境情報を更新することとを含む。図8に示すように、データ管理装置200は、まずステップS01を実行する。ステップS01では、いずれかのローカルコントローラ400がステータス情報を出力しているかを情報更新部312が確認する。
ステップS01においていずれかのローカルコントローラ400がステータス情報を出力していると判定した場合、データ管理装置200は、ステップS02を実行する。ステップS02では、情報更新部312が、出力されたステータス情報を取得し、当該ステータス情報に基づいて情報更新部312の機器情報を更新する。
次に、データ管理装置200は、ステップS03を実行する。ステップS01においていずれのローカルコントローラ400もステータス情報を出力していないと判定した場合、データ管理装置200は、ステップS02を実行することなくステップS03を実行する。ステップS03では、情報更新部312が、外部センサ5による検出結果を取得する。また、情報更新部212が、センサ情報処理部213による処理結果を取得する。
次に、データ管理装置200は、ステップS04を実行する。ステップS04では、情報更新部212が、外部センサ5による検出結果と、センサ情報処理部213による処理結果とに基づいて、少なくともワーク情報又は機器情報を更新する。データ管理装置200は、以上の手順を繰り返す。
(ローカル機器の制御手順)
図9に示すように、ローカルコントローラ400は、まずステップS11,S12,S13を実行する。ステップS11では、環境情報取得部421が、上位コントローラ300の環境情報格納部311に格納された環境情報を取得する。ステップS12では、タスクプログラム保持部410が記憶する複数のタスクプログラムのいずれかを条件監視部422が選択する。ステップS13では、ステップS11で取得された環境情報が、ステップS12で選択されたタスクプログラムの実行条件を満たすか否かを条件監視部422が確認する。
ステップS13において環境情報がタスクプログラムの実行条件を満たさないと判定した場合、ローカルコントローラ400はステップS14を実行する。ステップS14では、実行条件の確認(実行条件を満たすか否かの確認)をタスクプログラム保持部410の全てのタスクプログラムに対して行ったかを条件監視部422が確認する。
ステップS14において、実行条件の確認が行われていないタスクプログラムが残っていると判定した場合、ローカルコントローラ400は処理をステップS12に戻す。以後、ステップS13においてタスクプログラムの実行条件を満たすと判定されるか、ステップS14において実行条件の確認を全てのタスクプログラムに対して行ったと判定されるまで、タスクプログラムの選択と実行条件の確認とが繰り返される。
ステップS13において環境情報がタスクプログラムの実行条件を満たすと判定した場合、ローカルコントローラ400はステップS15,S16,S17を実行する。ステップS15では、動作実行部423が、実行条件が満たされたタスクプログラム411の動作プログラム(以下、「アクティブプログラム」という。)に従って、1制御周期分の動作を制御対象のローカル機器2に実行させる。ステップS16では、ステータス出力部424が、制御対象のローカル機器2のステータス情報をデータ管理装置200に出力する。ステップS17では、動作実行部423が、アクティブプログラムに基づくローカル機器2の動作が完了したか否かを確認する。
ステップS17においてアクティブプログラムに基づくローカル機器2の動作が完了していないと判定した場合、ローカルコントローラ400は処理をステップS15に戻す。以後、アクティブプログラムの実行が完了するまで、アクティブプログラムに従った1制御周期分の動作を制御対象のローカル機器2に実行させることと、制御対象のローカル機器2のステータス情報をデータ管理装置200に出力することとが繰り返される。
ステップS17においてアクティブプログラムに基づくローカル機器2の動作が完了したと判定した場合、ローカルコントローラ400は、処理をステップS11に戻す。ステップS14において全てのタスクプログラムに対して実行条件の確認を行ったと判定した場合、ローカルコントローラ400は、ステップS15,S16,S17を実行することなく処理をステップS11に戻す。ローカルコントローラ400は以上の制御手順を繰り返す。
(タスクプログラム変更手順)
この手順は、新たなローカル機器2に関する情報を、機器データベースに登録することと、新たなローカル機器2のローカルコントローラ400から収集する当該ローカル機器2のステータス情報に基づく新たな情報の格納領域を環境情報格納部311に設けることと、新たなローカル機器2の追加に伴い、当該ローカル機器2の動作を表す動作プログラムと、実行条件を表す条件ヘッダとを含む新たなタスクプログラムを当該ローカル機器2のローカルコントローラ400から取得することと、新たなタスクプログラムに基づいて新たなローカルコントローラ400による新たなローカル機器2の動作のシミュレーションを実行し、当該シミュレーションの結果に基づいて新たなタスクプログラムを変更することと、を含む。
図10に示すように、データ管理装置200は、まずステップS21,S22,S23,S24,S25,S26を実行する。ステップS21では、機器登録部222が、新たなローカル機器2の追加を待機する。例えば機器登録部222は、新たなローカル機器2のローカルコントローラ400から、当該ローカル機器2の登録要求が出力されるのを待機する。
ステップS22では、機器登録部222が、新たなローカル機器2に関する情報を、当該ローカル機器2のローカルコントローラ400から取得し、機器データベース221に登録する。複数の新たなローカル機器2が同時に追加された場合、機器登録部222は、複数の新たなローカル機器2に関する情報を取得し、登録する。
ステップS23では、新規プログラム取得部241が、新たなローカル機器2の追加に伴い、当該ローカル機器2の動作を表す動作プログラムと、実行条件を表す条件ヘッダとを含む新たなタスクプログラムを当該ローカル機器2のローカルコントローラ400から取得し、複製プログラム保持部231に格納する。複数の新たなローカル機器2が同時に追加された場合、新規プログラム取得部241は、複数の新たなローカル機器2のタスクプログラムを取得し、格納する。
ステップS24では、格納領域割当部223が、新たなローカル機器2のローカルコントローラ400から収集する当該ローカル機器2のステータス情報に基づく新たな情報の格納領域を環境情報格納部311、環境情報データベース211及び仮想情報格納部234に設ける。例えば格納領域割当部223は、ステータス情報の内容に基づいて、上記新たな情報のデータフォーマットを設定し、設定したデータフォーマットに従って新たな情報の格納領域を環境情報格納部311、環境情報データベース211及び仮想情報格納部234に設ける。ステータス情報の内容は、格納領域割当部223により、例えば上記新たなタスクプログラムに基づいて認識される。
ステップS25では、例えばプログラム変更部242が、シミュレーション部235によるシミュレーションと、仮想情報更新部236による仮想環境情報の更新とを繰り返すことによって、新たなローカル機器2を含む複数のローカル機器2の動作をシミュレーションする。ステップS26では、プログラム変更部242が、ステップS25におけるシミュレーション結果に問題がないかを確認する。
ステップS26においてシミュレーション結果に問題があると判定した場合、データ管理装置200は、ステップS27を実行する。ステップS27では、プログラム変更部242が、シミュレーションの結果に基づいて複製プログラム保持部231における新たなタスクプログラムを変更する。その後、データ管理装置200は処理をステップS26に戻す。以後、問題のないシミュレーション結果が得られるまで、シミュレーションと、新たなタスクプログラムの変更とが繰り返される。
ステップS26においてシミュレーション結果に問題がないと判定した場合、データ管理装置200は、ステップS28を実行する。ステップS28では、プログラム変更部242が、複製プログラム保持部231における新たなタスクプログラムを変更したか否かを確認する。
ステップS28において新たなタスクプログラムを変更したと判定した場合、データ管理装置200は、ステップS29を実行する。ステップS29では、複製プログラム保持部231において変更された新たなタスクプログラムをプログラム変更部242が新たなローカル機器2のローカルコントローラ400に出力し、当該ローカルコントローラ400のタスクプログラム保持部410のタスクプログラムを更新させる。その後、データ管理装置200は処理をステップS21に戻す。ステップS28において新たなタスクプログラムを変更していないと判定した場合、データ管理装置200はステップS27を実行することなく処理をステップS21に戻す。データ管理装置200は以上の手順を繰り返す。
図11は、ステップS25のシミュレーションにおいて、データ管理装置200がローカル機器2ごとに実行するシミュレーション手順を例示するフローチャートである。図11に示すように、データ管理装置200は、まず、ステップS31,S32,S33を実行する。ステップS31では、シミュレーション部235が、仮想情報格納部234に格納された仮想環境情報を取得する。
ステップS32では、シミュレーション対象のローカル機器2に対応付けて複製プログラム保持部231が記憶する複数のタスクプログラム(以下、「対象タスクプログラム」という。)のいずれかをシミュレーション部235が選択する。ステップS33では、ステップS31で取得された仮想環境情報が、ステップS32で選択された対象タスクプログラムの実行条件を満たすか否かをシミュレーション部235が確認する。
ステップS33において仮想環境情報が対象タスクプログラムの実行条件を満たさないと判定した場合、データ管理装置200は、ステップS34を実行する。ステップS34では、実行条件の確認(実行条件を満たすか否かの確認)を全ての対象タスクプログラムに対して行ったかをシミュレーション部235が確認する。
ステップS34において実行条件の確認を行っていない対象タスクプログラムが残っていると判定した場合、データ管理装置200は処理をステップS32に戻す。以後、ステップS32において対象タスクプログラムの実行条件を満たすと判定されるか、ステップS34において実行条件の確認を全ての対象タスクプログラムに対して行ったと判定されるまで、対象タスクプログラムの選択と実行条件の確認とが繰り返される。
ステップS33において仮想環境情報が対象タスクプログラムの実行条件を満たすと判定した場合、データ管理装置200は、ステップS35,S36,S37を実行する。ステップS35では、実行条件が満たされた対象タスクプログラムの動作プログラム(以下、「アクティブプログラム」という。)に従って、シミュレーション部235がシミュレーション対象のローカル機器2に対し1制御周期分のシミュレーションを実行する。
ステップS36では、仮想情報更新部236が、シミュレーション結果に基づいて、仮想情報格納部234の仮想環境情報を更新する。ステップS37では、アクティブプログラムに基づくローカル機器2の動作が完了したか否かをシミュレーション部235が確認する。
ステップS37においてアクティブプログラムに基づくローカル機器2の動作が完了していないと判定した場合、ローカルコントローラ400は処理をステップS35に戻す。以後、アクティブプログラムの実行が完了するまで、アクティブプログラムに従った1制御周期分のシミュレーションを実行することと、シミュレーション結果に基づいて仮想環境情報を更新することとが繰り返される。
ステップS37においてアクティブプログラムに基づくローカル機器2の動作が完了したと判定した場合、データ管理装置200は、処理をステップS31に戻す。ステップS34において実行条件の確認を全ての対象プログラムに対して行ったと判定した場合、データ管理装置200は、ステップS35,S36,S37を実行することなく処理をステップS31に戻す。データ管理装置200は以上の手順を繰り返す。
(異常検知手順)
この手順は、環境情報と、仮想環境情報との比較に基づいて、生産システム1の異常を検知することを含む。図12に示すように、データ管理装置200は、まずステップS41,S42を実行する。ステップS41では、比較部251が、シミュレーション空間における複数のローカル機器2のモデルの状態を、現実空間における複数のローカル機器2の状態に一致させ、複数のローカルコントローラ400による複数のローカル機器2の動作の開始を待機する。ステップS42では、比較部251が、シミュレーション部235によるシミュレーションを開始させる。以後、上述したローカル機器2ごとのシミュレーション手順に従って、シミュレーション部235によるシミュレーションと、仮想情報更新部236による仮想環境情報の更新とが繰り返される。
これと並行して、データ管理装置200は、次にステップS43,S44を実行する。ステップS43では、環境情報データベース211が格納する最新の環境情報を比較部251が取得する。ステップS44では、仮想情報格納部234の仮想環境情報と、ステップS43で取得した仮想環境とが同一であるか否かを比較部251が確認する。
ステップS44において仮想環境情報と仮想環境とが同一でないと判定した場合、データ管理装置200はステップS45を実行する。ステップS45では、比較部251が異常を報知する。例えば比較部251は、モニタ等の表示デバイスに異常報知画面を表示する。
次に、データ管理装置200は、ステップS46を実行する。ステップS44において仮想環境情報と仮想環境とが同一であると判定した場合、データ管理装置200は、ステップS45を実行することなくステップS46を実行する。ステップS46では、複数のローカルコントローラ400による複数のローカル機器2の動作が停止したか否かを確認する。
ステップS46において複数のローカル機器2の動作が停止していないと判定した場合、データ管理装置200は処理をステップS43に戻す。以後、複数のローカル機器2の動作が停止するまでは、シミュレーション部235によるシミュレーション、仮想情報更新部236による仮想環境情報の更新、環境情報の取得、及び仮想環境情報と環境情報との比較が継続される。ステップS46において複数のローカル機器2の動作が停止していると判定した場合、異常検知手順が完了する。
〔本実施形態の効果〕
以上に説明したように、制御システム100は、少なくともロボット2B,2Cを含む複数のローカル機器2をそれぞれ制御する複数のローカルコントローラ400と、複数のローカルコントローラ400と通信可能な環境管理部110と、を備え、環境管理部110は、環境情報を格納する環境情報格納部311と、複数のローカル機器2の動作に応じて環境情報を更新する情報更新部312と、を有し、複数のローカルコントローラ400のそれぞれは、環境情報格納部311に格納された環境情報が所定の条件を満たすか否かを監視する条件監視部422と、環境情報が所定の条件を満たす場合に制御対象のローカル機器2に所定の動作を実行させる動作実行部423と、を有する。
複数のローカル機器2をそれぞれ制御する複数のローカルコントローラ400に対し、上位コントローラ300から動作指令を出力する制御システム100においては、複数のローカル機器2を協調させるために、上位コントローラ300に複雑なプログラムが構築される。このため、ローカル機器2の追加・変更に際しては、上位コントローラ300におけるプログラム改変が煩雑となる。これに対し、複数のローカルコントローラ400のそれぞれが条件監視部422と動作実行部423とを有する制御システム100(以下、「本制御システム」という。)によれば、各ローカルコントローラ400において制御対象のローカル機器2と他のローカル機器2との協調が自律的に図られる。このため、上位コントローラ300に複雑なプログラムを構築する必要がない。ローカル機器2の追加・変更に伴う煩雑なプログラム改変も不要である。従って、本制御システムは、ローカル機器2の追加・変更に適応し易い。また、上位コントローラ300における情報処理負荷の軽減にも有効である。
複数のローカルコントローラ400のそれぞれは、制御対象のローカル機器2のステータス情報を環境管理部110に出力するステータス出力部424を更に有し、情報更新部312は、複数のローカルコントローラ400から取得したステータス情報に基づいて環境情報を更新してもよい。この場合、ローカルコントローラ400からのステータス情報を環境情報の更新に有効活用することができる。
複数のローカル機器2は、第1ローカル機器と、第2ローカル機器とを含み、複数のローカルコントローラ400は、第1ローカル機器を制御する第1コントローラ400Aと、第2ローカル機器を制御する第2コントローラ400Bとを含み、情報更新部は、第1ローカル機器の動作に応じて環境情報の第1情報を更新し、第2コントローラ400Bの条件監視部422は、第1情報が所定の条件を満たすか否かを監視し、第2コントローラ400Bの動作実行部423は、第1情報が所定の条件を満たした場合に第2ローカル機器に所定の動作を実行させてもよい。この場合、第2コントローラ400Bにおいて、第2ローカル機器と第1ローカル機器との協調が自律的に図られる。
第1ローカル機器は、ワーク9を搬送する搬送装置2Aであり、第2ローカル機器は、搬送装置2Aが搬送するワーク9に対して作業を行うロボット2Bであってもよい。この場合、第2コントローラ400Bにおいて、ロボット2Bと搬送装置2Aとの協調が自律的に図られる。このため、搬送装置2Aをペースメーカーとし、自律的システム全体のタクトタイムを管理することができる。
複数のローカル機器2は、搬送装置2Aが搬送するワークに対して作業を行う第2ロボット2Cを更に含み、複数のローカルコントローラ400は、第2ロボット2Cを制御する第3コントローラ400Cを更に含み、情報更新部312は、搬送装置2A及びロボット2Bの動作に応じて環境情報の第2情報を更新し、第3コントローラ400Cの動作実行部423は、第2情報が所定の条件を満たした場合に第2ロボット2Cに所定の動作を実行させてもよい。この場合、搬送装置2Aをペースメーカーとして動作するロボット同士の協調も容易に図ることができる。
ロボットは、自律走行可能な移動型ロボット2Dであってもよい。第2ロボットは、自律走行可能な移動型ロボット2Dであってもよい。環境管理部110は、複数のローカルコントローラ400の少なくとも1以上と無線通信してもよい。
環境管理部110は、複数のローカルコントローラ400と同期通信を行い、情報更新部312は、同期通信の通信周期で環境情報を更新してもよい。この場合、環境情報を制御に必要な通信周期で更新することができる。環境情報が上記のように通信周期で更新されることで、複数のローカルコントローラ400間を同期させることができる。
制御システム100は、環境状態を検出する外部センサ5を更に備え、環境管理部110は、外部センサ5から取得したセンサ情報に対して、所定の処理を行うセンサ情報処理部213を更に有し、情報更新部312は、センサ情報処理部213による処理結果に更に基づいて環境情報を更新してもよい。この場合、センサ情報を適切に処理して、環境情報として複数のローカルコントローラ400で共有することが可能になり、システムを容易かつ柔軟に構築することができる。
環境管理部110は、環境情報格納部311と情報更新部312とを有し、複数のローカルコントローラ400と同期通信を行う上位コントローラ300と、センサ情報処理部213を有し、上位コントローラ300に対して、同期通信の通信周期よりも長い周期の同期通信又は非同期通信を行うデータ管理装置200と、を有してもよい。この場合、上位コントローラ300として、例えば、プログラマブルコントローラ、モーションコントローラ、シーケンサ等のコンポーネントを活用することができ、データ処理量が多い重い処理(処理するデータ量が大きい処理、処理時間が長い処理)を上位コントローラ300と切り離すことで、処理量に応じたスペックのデータ管理装置200を使用できるので、安価かつ容易にシステムを構築できる。加えて、重い処理を複数のローカルコントローラ400間の同期を司る上位コントローラと切り離すことで、同期の確実性を担保できる。
データ管理装置200は、環境情報格納部311に格納される環境情報の履歴を保持する環境情報データベース211を更に有してもよい。この場合、環境情報の履歴を保持することで、異常発生時の異常原因のトレースや動作改善のためのデータ収集を容易にできる。
複数のローカルコントローラ400のそれぞれは、制御対象のローカル機器2の動作を表す動作プログラム413と、実行条件を表す条件ヘッダ412とを含むタスクプログラム411を格納したタスクプログラム保持部410を更に有し、条件監視部422は、環境情報と、タスクプログラム411の条件ヘッダ412とに基づいて、当該タスクプログラム411の実行条件が満たされたか否かを監視し、動作実行部423は、タスクプログラム411の実行条件が満たされた場合に、当該タスクプログラム411の動作プログラムに基づいて、制御対象のローカル機器2を動作させてもよい。この場合、条件ヘッダ412と動作プログラム413とを対応付けたタスクプログラム411の登録によって、自律動作用のプログラムを容易に構築することができ。また、条件ヘッダ412と、動作プログラム413とに切り分けて、プログラムを容易に編集することができる。更に、条件ヘッダ412と動作プログラム413とを1セットのタスクプログラム411とすることで、他のローカルコントローラ400等へのプログラムの複製又は再利用(例えば複製したプログラムを改変して利用)も容易である。シミュレータへのタスクプログラム411の吸い上げも容易である。
タスクプログラム保持部410は、上記タスクプログラム411を含む複数のタスクプログラム411を格納し、複数のタスクプログラム411のそれぞれが、制御対象のローカル機器2の動作を表す動作プログラム413と、実行条件を表す条件ヘッダ412とを含み、条件監視部422は、環境情報と、複数のタスクプログラム411の条件ヘッダ412とに基づいて、複数のタスクプログラム411のそれぞれの実行条件が満たされたか否かを判定し、動作実行部423は、複数のタスクプログラム411のうち実行条件が満たされたタスクプログラム411の動作プログラムに基づいて、制御対象のローカル機器2を動作させてもよい。この場合、環境に応じて複数種類の動作を実行させるプログラムを容易に構築することができる。また、タスクプログラム411の追加・削除によって、動作の種類の拡張・改変を容易に図ることができる。
環境管理部110は、複数のローカル機器2に関する情報を格納する機器データベース221と、新たなローカル機器2に関する情報を、機器データベース221に登録する機器登録部222と、新たなローカル機器2が登録されると、当該ローカル機器2のローカルコントローラ400から収集する当該ローカル機器2のステータス情報に基づく新たな情報の格納領域を環境情報格納部311に設ける格納領域割当部223と、を有していてもよい。この場合、ローカル機器2の追加に応じて、環境情報の格納領域が自動的に改変される。従って、ローカル機器2の追加に更に適応し易い。
環境管理部110は、複数のローカルコントローラ400のそれぞれのタスクプログラムを格納する複製プログラム保持部231と、環境情報に対応する仮想環境情報を格納する仮想情報格納部234と、仮想環境情報と、タスクプログラムの条件ヘッダとに基づいて、当該タスクプログラムの実行条件が満たされたか否かを監視し、タスクプログラムの実行条件が満たされた場合に、当該タスクプログラムの動作プログラムに基づいて、制御対象のローカル機器2の動作のシミュレーションを実行するシミュレーション部235と、シミュレーション部235によるシミュレーションにおける複数のローカル機器2の動作に応じて仮想環境情報を更新する仮想情報更新部236と、を更に有していてもよい。この場合、複数のローカル機器2の動作のシミュレーションに加え、複数のローカル機器2の動作に従った環境情報の変化をもシミュレーションすることによって、複数のローカル機器2の自律動作を容易にシミュレーションすることができる。
環境管理部110は、新たなローカル機器2の追加に伴い、当該ローカル機器2の動作を表す動作プログラムと、実行条件を表す条件ヘッダとを含む新たなタスクプログラムを当該ローカル機器2のローカルコントローラ400から取得する新規プログラム取得部241と、新規プログラム取得部241が取得した新たなタスクプログラムに基づいて新たなローカルコントローラ400による新たなローカル機器2の動作のシミュレーションをシミュレーション部235に実行させ、当該シミュレーションの結果に基づいて新たなタスクプログラムを変更するプログラム変更部242と、を更に備えていてもよい。この場合、シミュレーション結果を、タスクプログラムの自動調整に有効活用することができる。
制御システム100は、環境状態を検出する外部センサ5を更に備え、情報更新部312は、外部センサ5の検出結果に更に基づいて環境情報を更新してもよい。この場合、外部センサ5を用いることによって、環境変化をより的確にとらえて環境情報に反映させることができる。
複数のローカルコントローラ400の少なくともいずれかにおいて、条件監視部422は、環境情報のうち外部センサ5の検出結果に基づいて更新されたセンサ関連情報が所定の条件を満たすか否かを監視し、動作実行部423は、センサ関連情報が所定の条件を満たした場合にローカル機器2に所定の動作を実行させてもよい。
以上、実施形態について説明したが、本開示は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。