以下、実施形態について、図面を参照しつつ詳細に説明する。説明において、同一要素又は同一機能を有する要素には同一の符号を付し、重複する説明を省略する。
〔生産システム〕
図1に示す生産システム1は、複数のローカル機器の協調動作によって、ワークの生産を行うシステムである。以下、ワークの生産過程において、各ローカル機器の作業対象となる物体の全てを「ワーク」という。例えば「ワーク」は、生産システム1における最終生産物、最終生産物の部品、及び複数の部品を組み合わせたユニット等を含む。
協調動作は、少なくとも一つの上記最終生産物を得るための複数の工程を分担するように複数のローカル機器が動作することを意味する。複数のローカル機器は、一つの最終生産物を得るための複数の工程を工程単位で分担するように動作してもよいし、複数の最終生産物を得るための複数の工程を最終生産物単位で分担するように動作してもよい。
生産システム1は、複数のローカル機器2と、制御システム3とを含む。ローカル機器2は、ワーク9の生産現場においてワーク9に対し直接的に作業を実行する機器である。
直接的な作業は、例えば、熱エネルギー、運動エネルギー、位置エネルギー等の何らかのエネルギーをワーク9に付与する作業である。
複数のローカル機器2のそれぞれは、例えば産業機械である。複数のローカル機器2は、少なくともロボットを含む(少なくとも1つのローカル機器2はロボットである)。また、複数のローカル機器2は、ロボットと協働する産業機械を含む。ロボットと協働する産業機械の具体例としては、他のロボットの他、NC工作機械等が挙げられる。図1に示す複数のローカル機器2は、搬送装置2Aと、ロボット2B,2Cと、移動型ロボット2Dとを含んでいるが、これに限られない。少なくとも1台のロボットを含んでいる限り、ローカル機器2の数及び種類は適宜変更可能である。
搬送装置2Aは、例えば電動モータ等を動力源としてワーク9を搬送する。搬送装置2Aの具体例としては、ベルトコンベヤ、ローラコンベヤ等が挙げられる。ロボット2B,2C、及び移動型ロボット2Dは、搬送装置2Aが搬送するワーク9に対する作業を行う。ワーク9に対する作業の具体例としては、搬送装置2Aが搬送するワーク9(例えばベースパーツ)に対する他のワーク9(例えばサブパーツ)の組付け、搬送装置2Aが搬送するワーク9におけるパーツ同士の締結(例えばボルト締結)・接合(例えば溶接)、搬送装置2Aの周囲に設置されたNC工作機械へのワーク9の搬入、NC工作機械からのワーク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の先端部に接続されている。先端部18には、例えはハンド、吸着ノズル、溶接トーチ等の作業ツールが取り付けられる。
このように、ロボット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を備えてもよい。
制御システム3は、複数のローカル機器2を制御する。以下、制御システム3の構成を詳細に例示する。
〔制御システム〕
生産システム1においては、ワーク9の目標生産ペースと、実際のワーク9の生産ペースとに乖離が生じる場合がある。また、ワーク9の目標品質と、実際のワーク9の品質とに乖離が生じる場合がある。以下、これらの乖離を、「生産状況の乖離」という。ワーク9に対するプロセスが複数のタスクを含む場合に、上記生産ペースの乖離、又はワーク9の品質の乖離に基づいて、生産状況の乖離の要因を特定するのは困難である。
制御システム3は、リアル空間において、ワークに対するプロセスに含まれる複数のタスクを、ローカル機器2に実行させるローカルコントローラ(リアルコントローラ)と、バーチャル空間において、複数のタスクを、バーチャルローカル機器に実行させるバーチャルローカルコントローラ(バーチャルコントローラ)と、ローカルコントローラによる複数のタスクそれぞれの実行状況を表すリアル実行状況情報を収集するリアル情報収集部と、バーチャルローカルコントローラによる複数のタスクそれぞれの実行状況を表すバーチャル実行状況情報を収集するバーチャル情報収集部と、複数のタスクのうち、リアル実行状況情報とバーチャル実行状況情報とが乖離した1以上の乖離タスクを抽出するタスク比較部と、を備える。これにより、複数のタスクごとに、実行状況の乖離を確認できるため、生産状況の乖離の要因特定が容易になる。
生産システム1においては、生産対象物の変更を含む生産計画の変化への柔軟な適応が求められる場合がある。また、ローカル機器2の種類、台数、配置変更など、生産環境の変化への柔軟な適応も求められる場合がある。これに対し、生産計画の変化及び生産環境の変化に対し、ローカル機器2の自律的な適応を実現することが有効である。しかしながら、実行すべきタスクの特定と、その適切な実行タイミングの特定とをローカルコントローラに行わせるためには、複雑な条件設定が必要となる。複雑な条件設定により自律性を付与したシステムにおいては、当初想定していなかった新たな生産計画、又は生産環境への更なる適応が困難となる。
これに対し、制御システム3は、ワークに対する複数のタスクを含むプロセスと、当該プロセスの進捗情報とに基づいて、次タスクの実行指令を出力する指令出力部と、環境情報を記憶する環境情報格納部と、指令出力部から出力された実行指令と、環境情報格納部の環境情報とに基づいて、ローカル機器2に次タスクを実行させるローカルコントローラと、ローカル機器2の動作に応じて、環境情報格納部の環境情報を更新する環境更新部と、を備えてもよい。環境情報に加え、次タスクの実行指令をローカルトコントローラに提供することによって、ローカルコントローラにおいて次に実行すべきタスクを環境情報に基づき特定する必要がなくなるので、ローカル機器2に自律性を付与するための条件設定が簡素化される。これにより、個々のタスクのローカル機器2による自律的な遂行を容易に実現することができる。このため、複数のタスクの進捗に基づいて次タスクの実行指令を出力し、ローカル機器2の動作に応じて環境情報を更新する簡素な処理によって、複数のタスクを適切な順序で容易に遂行させることができる。このため、生産計画の変化又は生産環境の変化に応じて、個々のローカル機器2に実行させる複数のタスクを容易に組み替えることができる。
図1に示すように、制御システム3は、複数のローカルコントローラ100と、上位コントローラ200(セルコントローラ)と、データ管理装置300とを有する。複数のローカルコントローラ100は、複数のローカル機器2をそれぞれ制御する。
複数のローカルコントローラ100のそれぞれは、リアル空間において、ワーク9に対するプロセスに含まれる複数のタスクを、制御対象のローカル機器2(以下、「管轄ローカル機器2」という。)に実行させる。リアル空間は、管轄ローカル機器2が実際に存在する空間である。
複数のローカルコントローラ100のそれぞれは、複数のタスクごとに、上記環境情報格納部の環境情報に基づいて実行タイミングを調節してもよい。また、ローカルコントローラ100は、上記指令出力部からの実行指令に対応する次タスクを管轄ローカル機器2に実行させてもよい。例えば複数のローカルコントローラ100のそれぞれは、上記実行指令と、上記環境情報とに基づいて、管轄ローカル機器2に上記次タスクを実行させる。例えばローカルコントローラ100は、上記環境情報格納部の環境情報に基づいて実行タイミングを調節しつつ、上記指令出力部からの実行指令に対応する次タスクをローカル機器2に実行させる。
図示において、制御システム3は、4つのローカルコントローラ100A,100B,100C,100Dを有する。ローカルコントローラ100Aは搬送装置2Aを制御し、ローカルコントローラ100Bはロボット2Bを制御するロボットコントローラであり、ローカルコントローラ100Cはロボット2Cを制御するロボットコントローラであり、ローカルコントローラ100Dは移動型ロボット2Dを制御するロボットコントローラである。ローカルコントローラ100の数及び各ローカルコントローラ100の構成は、ローカル機器2の数及び種類に応じて適宜変更可能である。
上位コントローラ200は、上記指令出力部と、上記環境情報格納部と、上記環境更新部と、を備え、複数のローカルコントローラ100と同期通信を行う。同期通信とは、一定の周期(上記通信周期)の同期フレームに同期して、1周期ごとに、複数のローカルコントローラ100との通信を行うことを意味する。上位コントローラ200は、ワーク9に対するプロセスと、当該プロセスの進捗情報とに基づいて、複数のローカルコントローラ100のそれぞれに次タスクの実行指令を出力し、複数のローカル機器2の動作に応じて環境情報を更新する。また、上位コントローラ200は、複数のローカル機器2によるタスクの実行状況に応じて、ワーク9に対するプロセスの進捗情報を更新する。
データ管理装置300は、上記バーチャルローカルコントローラと、上記リアル情報収集部と、上記バーチャル情報収集部と、上記タスク比較部と、を備え、上位コントローラ200と同期通信又は非同期通信を行う。データ管理装置300は、上位コントローラ200を介し、複数のローカルコントローラ100から上記リアル実行状況情報を収集する。データ管理装置300は、複数のローカルコントローラ100にそれぞれ対応する複数のバーチャルローカルコントローラを備え、当該複数のバーチャルローカルコントローラから上記バーチャル実行状況情報を収集する。以下、ローカルコントローラ100、上位コントローラ200及びデータ管理装置300の構成を具体的に例示する。
図3に示すように、上位コントローラ200は、機能上の構成(以下、「機能ブロック」という。)として、プロセスデータベース211と、オーダ取得部212と、プロセス割当部213と、プロセス格納部214と、指令出力部215と、進捗更新部216と、環境情報格納部221と、環境更新部222とを有する。
プロセスデータベース211は、生産システム1が対象とする複数種類のワーク9ごとに複数のプロセスを記憶する。各プロセスは、ワーク9に対する複数のタスクのそれぞれの識別情報と、当該複数のタスクの実行順序と、当該複数のタスクのそれぞれを実行するローカル機器2の識別情報と、を含む。
複数のタスクは、互いに異なるローカル機器2が実行するタスクを含んでいてもよい。例えば複数のタスクは、ロボット2B,2C又は移動型ロボット2Dが実行する複数のタスクと、他のローカル機器2が実行する1以上のタスクとを含んでいてもよい。タスクは、1つのローカル機器2が実行する一まとまりの作業単位である。
オーダ取得部212は、生産管理コントローラ4からワーク9の生産オーダを取得する。生産オーダは、生産すべきワーク9の種類と、種類ごとの生産数量とを含む。生産管理コントローラ4は、例えば、工場のMES(Manufacturing Execution System)において、生産計画に従ったワーク9の生産オーダを複数の工場セルに割り振るコントローラであり、上位コントローラ200と同期通信又は非同期通信を行う。
プロセス割当部213は、生産オーダが指定するワーク9に対しプロセスを割り当てる。例えばプロセス割当部213は、生産オーダが指定するワーク9に対し、プロセスデータベース211に基づいてプロセスを割り当てる。生産オーダが複数のワーク9を指定する場合、プロセス割当部213は、複数のワーク9のそれぞれに対して、プロセスデータベース211に基づいてプロセスを割り当てる。複数のワーク9は、互いに異種のワーク9を含んでいてもよい。
プロセス格納部214は、プロセス割当部213によるプロセスの割り当て結果と、プロセスごとの進捗情報(リアル空間における進捗情報)とを記憶する。図4は、複数のワーク9に対するプロセスの割り当て結果を例示するテーブルである。このテーブルにおいては、左から右への並び順序によって、各プロセスにおける複数のタスクの実行順序が示されている。
図4においては、ワークAに対し、3ステップのタスクa1,a2,a3を含むプロセスが割り当てられている。ワークBに対し、5ステップのタスクb1,b2,b3,b4,b5を含むプロセスが割り当てられている。ワークCに対し、2ステップのタスクc1,c2を含むプロセスが割り当てられている。ワークDに対し、3ステップのタスクd1,d2,d3を含むプロセスが割り当てられている。ワークEに対し、4ステップのタスクe1,e2,e3,e4を含むプロセスが割り当てられている。
プロセスごとの進捗情報は、例えばプロセスの各タスクが未着手であるか、実行中であるか、完了しているかを示す情報である。進捗情報は、未着手、実行中、又は完了を示すフラグであってもよいし、開始時刻及び完了時刻であってもよい。進捗情報が開始時刻及び完了時刻である場合、開始時刻も完了時刻も打刻されていなければ未着手であり、開始時刻が打刻され完了時刻が打刻されていなければ実行中であり、完了時刻が打刻されていれば完了である。
図3に戻り、指令出力部215は、プロセス格納部214が記憶するプロセスと、当該プロセスの進捗情報とに基づいて、次タスクの実行指令を出力する。複数のタスクにおける次タスクは、未着手のタスクのうち、一つ前のタスクが存在しないか、一つ前のタスクが完了しているタスクである。指令出力部215は、プロセスデータベース211に基づいて複数のローカルコントローラ100のいずれかに次タスクの実行指令を出力する。例えば指令出力部215は、プロセスデータベース211において次タスクに対応付けられたローカル機器2のローカルコントローラ100に次タスクの実行指令を出力する。
プロセス格納部214において、複数のワーク9に対し複数のプロセスがそれぞれ割り当てられている場合、指令出力部215は、複数のプロセスごとの複数の進捗情報に基づいて、複数のプロセスごとに複数の次タスクの実行指令を出力してもよい。指令出力部215は、複数の次タスクの実行指令を同じローカルコントローラ100に出力してもよい。
例えば、プロセス格納部214において、第1ワーク9に対し第1プロセスが割り当てられ、第2ワーク9に対し第2プロセスが割り当てられている場合、指令出力部215は、第1プロセスの次タスクの実行指令と第2プロセスの次タスクの実行指令とを同じローカルコントローラ100に出力してもよい。この場合、指令出力部215は、上記第1プロセスの次タスクの実行指令を出力した後、当該次タスクの実行に先立って第2プロセスの次タスクの実行指令を出力してもよい。また、指令出力部215は、上記第2プロセスの次タスクの実行指令を出力した後、当該次タスクの実行に先立って第1プロセスの次タスクの実行指令を出力してもよい。更に、指令出力部215は、第1プロセスの次タスクの実行指令と、第2プロセスの次タスクの実行指令とを同時に出力してもよい。ここでの同時に出力は、第1プロセスの次タスクの実行指令を出力する期間と、第2プロセスの次タスクの実行指令を出力する期間とが少なくとも部分的に重複することを意味する。
なお、指令出力部215は、上記同期通信におけるローカルコントローラ100からの要求に応じて次タスクの実行指令を出力してもよいし、ローカルコントローラ100からの要求の有無によらずに実行指令を出力してもよい。
進捗更新部216は、複数のローカル機器2による次タスクの実行状況に応じて、プロセス格納部214の進捗情報を更新する。例えば進捗更新部216は、ローカルコントローラ100が出力する後述のステータス情報に基づいて、プロセス格納部214の進捗情報を更新する。
環境情報格納部221は、環境情報を記憶する。環境情報は、例えばローカル機器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を基準にした位置・姿勢)情報であってもよい。
機器情報は、ローカルコントローラ100と、その管轄ローカル機器2との間に発生した制御信号(以下、「リアル制御信号」という。)の情報を含む。リアル制御信号は、管轄ローカル機器2の制御のためにローカルコントローラ100で生成される内部信号であってもよいし、ローカルコントローラ100から管轄ローカル機器2に出力される出力信号であってもよいし、管轄ローカル機器2からローカルコントローラ100に出力されるフィードバック信号であってもよい。内部信号の具体例としては、管轄ローカル機器2の位置・姿勢の指令値等が挙げられる。出力信号の具体例としては、管轄ローカル機器2のアクチュエータへの出力電流値等が挙げられる。フィードバック信号の具体例としては、ローカル機器2における位置・姿勢、速度等の検出値が挙げられる。
図5は、機器情報を例示するテーブルである。図5においては、ローカル機器2の識別情報と、ローカル機器2に関する情報を示す少なくとも一つの状態パラメータとが対応付けられている。
ワーク情報の具体例としては、各ワーク9の位置情報が挙げられる。図6は、ワーク情報を例示するテーブルである。図6においては、ワーク9の識別情報(例えば種別及びシリアル番号)と、ワーク9の位置情報とが対応付けられている。
環境更新部222は、複数のローカル機器2の動作に応じて、環境情報格納部221の環境情報を更新する。例えば環境更新部222は、複数のローカルコントローラ100のそれぞれからローカル機器2のステータス情報を取得し、当該ステータス情報に基づいて機器情報を更新する。環境更新部222は、ローカル機器2のステータス情報に基づいてワーク情報を更に更新してもよい。例えば環境更新部222は、ローカルコントローラ100Aから取得した搬送装置2Aのステータス情報に基づいて、各ワーク9の位置情報を更新してもよい。環境更新部222は、外部センサ5の検出結果に更に基づいて環境情報を更新してもよい。
図3に示すように、ローカルコントローラ100は、機能ブロックとして、タスクプログラム格納部111と、パラメータ保持部112と、指令バッファ113と、環境情報取得部114と、選択部115と、制御部116と、ステータス出力部117とを有する。
タスクプログラム格納部111(条件記憶部)は、複数のタスクのうち1以上のタスクごとに予め定められた1以上の実行条件を記憶する。例えばタスクプログラム格納部111は、複数のタスクにおける動作をそれぞれ定める複数のタスクプログラム130を記憶する。ここでの複数のタスクは、作業対象のワーク9が互いに異なるタスクを含んでいてもよい。以下、作業対象のワーク9を、「対象ワーク9」という。
タスクプログラム130は、条件ヘッダ131と、動作プログラム132とを含む。動作プログラム132は、管轄ローカル機器2の動作を表す。例えば動作プログラム132は、管轄ローカル機器2に一まとまりの動作を実行させるように時系列に並ぶ複数の移動命令を含む。管轄ローカル機器2がロボット2B,2C、又は移動型ロボット2Dである場合、動作プログラム132における移動命令は、先端部18の目標位置・目標姿勢を含む。
条件ヘッダ131は、動作プログラム132の実行条件を表す。実行条件は、動作プログラム132の実行タイミングを決定するための条件である。図7は、条件ヘッダ131の一例を示すテーブルである。実行条件は、動作プログラム132(対応するタスク)の実行可否を決定するための実行可否条件と、動作プログラム132の優先度とを含む。優先度は、タスクプログラム格納部111が記憶する複数のタスクプログラム130における優先順位を表す。優先度が、優先順位自体を表す数値である場合、値が小さい程優先度は高くなる。
図7に示されるように、実行可否条件の具体例としては、以下が挙げられる。
例1)管轄ローカル機器2の動作範囲内に、管轄ローカル機器2の動作の障害物が存在しないこと。
例2)対象ワーク9が所定位置にあること。
例3)対象ワーク9の搬入先に他のワーク9がないこと。
例4)対象ワーク9の搬入先が開放されていること。
障害物の具体例としては、他のローカル機器2、他のローカル機器2が保持するワーク9、又は人等が挙げられる。対象ワーク9の搬入先の具体例としては、他のローカル機器2の一例であるNC工作機械が挙げられる。搬入先が開放されていることの具体例としては、NC工作機械のドアが開放されていることが挙げられる。
上述したように、一つの対象ワーク9に対するプロセスは、管轄ローカル機器2の他のローカル機器2によるタスクを含む場合がある。他のローカル機器2によるタスクの具体例としては、産業機械(例えばNC工作機械)が実行するマシンタスクが挙げられる。管轄ローカル機器2がロボット2B,2C、又は移動型ロボット2Dである場合、管轄ローカル機器2が実行する複数のタスクは、当該マシンタスクの前に実行されるタスクと、当該マシンタスクの後に実行されるタスクとを含んでいてもよい。また、管轄ローカル機器2が実行する複数のタスクは、他のローカル機器2(第1産業機械)と協働するタスクと、更に他のローカル機器2(第2産業機械)と協働するタスクとを含んでいてもよい。
管轄ローカル機器2がロボット2B,2C、又は移動型ロボット2Dである場合、管轄ローカル機器2が実行する複数のタスクは、対象ワーク9に対する複数のタスクの他に、1以上の補間タスクを含んでいてもよい。以下、ワーク9に対する複数のタスクを「ワーキングタスク」といい、補間タスクを「エアカットタスク」という。
エアカットタスクは、複数のワーキングタスクのうち2つのワーキングタスク間における管轄ローカル機器2の動作を表す。以下、説明の便宜上、2つのワーキングタスクを「第1ワーキングタスク」及び「第2ワーキングタスク」という。エアカットタスクの具体例を以下に示す。
例1)第1ワーキングタスクの完了時における位置・姿勢から、第2ワーキングタスクの開始時における位置・姿勢まで所定軌道で先端部18を移動させる。
例2)第1ワーキングタスクの開始時における位置・姿勢から、第2ワーキングタスクの開始時における位置・姿勢まで所定軌道で先端部18を移動させる。
例3)第2ワーキングタスクの完了時における位置・姿勢から、第1ワーキングタスクの開始時における位置・姿勢まで所定軌道で先端部18を移動させる。
例4)第2ワーキングタスクの開始時における位置・姿勢から、第1ワーキングタスクの開始時における位置・姿勢まで所定軌道で先端部18を移動させる。
これらのエアカットタスクが、2組以上のワーキングタスク間に設けられていてもよい。プロセスデータベース211及びプロセス格納部214において、ワーク9に対応付けられるプロセスは、複数のワーキングタスクを含んでいればよく、エアカットタスクを含んでいなくてもよい。
パラメータ保持部112は、管轄ローカル機器2を制御するための1以上の制御パラメータを記憶する。1以上の制御パラメータの具体例としては、位置制御ゲイン、速度制御ゲイン、電流制御ゲイン等が挙げられる。
指令バッファ113は、上位コントローラ200から取得した次タスクの実行指令を記憶する。上述のように、指令出力部215は、複数の次タスクの実行指令を同じローカルコントローラ100に出力する場合がある。このため、指令バッファ113は、複数の実行指令を記憶するように構成されていてもよい。
図8は、指令バッファの内容を例示するテーブルであり、複数の次タスクの実行指令として、ワークAに対するタスクa1の実行指令と、ワークBに対するタスクb2の実行指令と、ワークEに対するタスクe3の実行指令とを記憶した状態を示している。
図3に戻り、環境情報取得部114は、環境情報格納部221に格納された環境情報を取得する。環境情報取得部114は、上位コントローラ200に環境情報の出力を要求し、要求に応じて出力された環境情報を取得してもよいし、要求の有無によらずに、例えば上記同期通信において上位コントローラ200から出力された環境情報を取得してもよい。
選択部115は、タスクプログラム格納部111における複数の次タスクのそれぞれの実行条件(条件ヘッダ131)と、環境情報格納部221の環境情報とに基づいて、指令バッファ113の複数の次タスクのいずれかを選択する。例えば選択部115は、複数の次タスクのそれぞれの実行可否を確認する。例えば選択部115は、複数の次タスクのそれぞれの実行可否条件を環境情報が満たしているかを確認する。更に選択部115は、実行可能な1以上の次タスクのいずれかを優先度に基づいて選択する。実行可能な次タスクが一つのみである場合、選択部115は当該次タスクを選択する。2以上の次タスクが実行可能である場合に、選択部115は優先度が最も高い次タスクを選択する。
次タスクの実行に先立ってエアカットタスクの実行が必要となる場合がある。例えば、先端部18の現在位置・姿勢と、次タスクの開始位置・姿勢とが異なっている場合、現在位置・姿勢から開始位置・姿勢までのエアカットタスクが必要となる。この場合、選択部115は、次タスクの先頭にエアカットタスクを含めてもよい。以下、先頭にエアカットタスクが含められた次タスクを、「エアカット付きの次タスク」という。選択部115は、エアカット付きの次タスクの実行可否条件を環境情報が満たしているか否かを確認する際には、エアカットタスクの実行可否条件を環境情報が満たしているか否かを合わせて確認してもよい。
制御部116は、タスクプログラム格納部111における次タスクの実行条件と、環境情報格納部221の環境情報とに基づいて管轄ローカル機器2に次タスクを実行させる。例えば制御部116は、選択部115が選択した次タスクを管轄ローカル機器2に実行させる。選択部115がエアカット付きの次タスクを選択した場合、制御部116は、当該次タスクの先頭に含められたエアカットタスクを実行した後に、当該次タスクを実行する。
ステータス出力部117は、管轄ローカル機器2の上記ステータス情報を上位コントローラ200に出力する。ステータス情報は、少なくとも管轄ローカル機器2の位置・姿勢情報を含む。ステータス出力部117は、上記タスクプログラム130の実行が完了するのに応じ、タスクの完了通知をステータス情報に含めて出力してもよい。
ステータス出力部117は、上記同期通信における上位コントローラ200からの要求に応じてステータス情報を出力してもよいし、上位コントローラ200からの要求の有無によらずにステータス情報を出力してもよい。
以下、図9を参照し、ローカルコントローラ100Bの指令バッファ113が複数の次タスクを記憶している場合に、ローカルコントローラ100Bが実行する制御を具体的に例示する。この例において、複数のローカル機器2は、NC工作機械2Fを更に含む。ロボット2Bは、NC工作機械2Fと搬送装置2Aとの間に設置されている。ロボット2Bの周囲には、NC工作機械2F及び搬送装置2Aの他に、ワーク9を仮置きするためのワーク台91,92が設けられている。
ローカルコントローラ100Bの指令バッファ113は、以下の第1ワーキングタスクの実行指令と、第2ワーキングタスクの実行指令と、第3ワーキングタスクの実行指令とを記憶している。
第1ワーキングタスク:NC工作機械2Fから第1ワーク9Aを搬出してワーク台91に搬送する。
第2ワーキングタスク:ワーク台92から第2ワーク9Bを搬送してNC工作機械2Fに搬入する。
第3ワーキングタスク:ワーク台91から搬送装置2Aに第3ワーク9Cを搬送する。
タスクプログラム格納部111において、第1ワーキングタスクの優先度は第2ワーキングタスクの優先度より高く、第2ワーキングタスクの優先度は第3ワーキングタスクの優先度より高い。
図9の(a)は、第1ワーキングタスクと第3ワークタスクとが実行可能となった状態を示している。この場合、選択部115は、第3ワーキングタスクに比較して優先度の高い第1ワーキングタスクを選択する。これに応じ、制御部116は、ロボット2Bに第1ワーキングタスクを実行させる(図9の(b)参照)。
第1ワーキングタスクが実行され、NC工作機械2F内にワーク9が存在しなくなることで、第2ワーキングタスクと第3ワーキングタスクとが実行可能となる(図10の(a)参照)。この場合、選択部115は、第3ワーキングタスクに比較して優先度の高い第2ワーキングタスクを選択する。これに応じ、制御部116は、ロボット2Bに第2ワーキングタスクを実行させる(図10の(b)参照)。
第1ワーキングタスクと第2ワーキングタスクの実行により、指令バッファ113に残るタスクは第3ワーキングタスクのみとなる。第3ワーキングタスクは依然として実行可能であるため、選択部115は第3ワーキングタスクを選択する。これに応じ、制御部116は、ロボット2Bに第3ワーキングタスクを実行させる(図11の(a)及び(b)参照)。
環境情報格納部221が記憶する環境情報は、上記マシンタスクの完了時間に対応した待ち時間を含んでいてもよい。環境情報は、マシンタスクの完了時間までの時間を表す限りいかなる形式で待ち時間を含んでいてもよい。例えば環境情報は、上記マシンタスクの完了予定時刻と現在時刻との組み合わせを含んでいてもよいし、現在時刻から完了予定時刻までの時間長を含んでいてもよい。
ローカルコントローラ100は選択タイミング調節部121を更に有してもよい。選択タイミング調節部121は、指令バッファ113の複数の次タスクが、マシンタスクが完了したら実行可能になる第1タスクと、すでに実行可能な第2タスクとを含む場合、第1タスク及び第2タスクの優先度と、待ち時間とに基づいて、選択部115による次タスクの選択タイミングを調整する。例えば選択タイミング調節部121は、第1タスクの優先度が、第2タスクの優先度よりも高く、待ち時間が所定の閾値以下の場合、選択部115による次タスクの選択タイミングを待ち時間の経過時以降にする。
図12を参照し、ローカルコントローラ100Bの指令バッファ113が、上記第1ワーキングタスクの実行指令と、上記第2ワーキングタスクの実行指令と、上記第3ワーキングタスクの実行指令とを記憶している場合の選択タイミング調節部121の処理を例示する。この例においては、NC工作機械2Fが第1ワーク9Aに対して行う加工が上記マシンタスクに相当する。マシンタスクの実行中(図12の(a)参照)においては、第3ワーキングタスク(第2タスク)のみが実行可能であり、第1ワーキングタスク(第1タスク)及び第2ワーキングタスクは実行不可である。
NC工作機械2Fが第1ワーク9Aに対して実行中のマシンタスクの待ち時間が所定の閾値以下である場合、選択タイミング調節部121は、選択部115による次タスクの選択タイミングを待ち時間の経過時以降にする。このため、第3ワーキングタスクがすでに実行可能であっても、制御部116はロボット2Bに第3ワーキングタスクを実行させずに待ち時間の経過を待機する。
選択タイミング調節部121が選択部115に次タスクの選択をさせるタイミングにおいては、上記待ち時間の経過により、第1ワーキングタスクと第3ワーキングタスクとが実行可能となる。このため、選択部115は、第3ワーキングに比較して優先度の高い第1ワーキングタスクを実行する。これに応じ、制御部116は、ロボット2Bに第1ワーキングタスクを実行させる(図12の(b)参照)。
ローカルコントローラ100は、中断部122を更に有してもよい。中断部122は、指令バッファ113の複数の次タスクが、第1タスクと、第1タスクよりも優先度の低い第2タスクとを含み、管轄ローカル機器2による第2タスクの実行中に第1タスクが実行可能になった場合、制御部116に第2タスクを中断させ、選択部115に第1タスクを選択させる。また、中断部122は、第2タスクの実行指令を指令バッファ113に戻す。
第2タスクの実行途中において対象ワーク9を解放できない場合、中断部122は、制御部116により管轄ローカル機器2を第2タスクの開始前の状態に戻させた後に、選択部115に第1タスクを選択させてもよい。例えば、第1タスクが第1ワークの搬送を含み、第2タスクが第2ワークの搬送を含む場合に、中断部122は、管轄ローカル機器2による第2タスクの実行中に第1タスクが実行可能となった場合に、制御部116により管轄ローカル機器2を第2ワークの搬送開始前の状態に戻させた後に、選択部115に第1タスクを選択させ、第2タスクの実行指令を指令バッファ113に戻す。
図13を参照し、上記ロボット2Bによる上記第3ワーキングタスク(第2タスク)の実行中に上記第1ワーキングタスク(第1タスク)が実行可能となった場合の中断部122の処理を例示する。
図13の(a)は、NC工作機械2Fが第1ワーク9Aに対してマシンタスクを実行中であるために、第1ワーキングタスクが実行不可である状況において、制御部116がロボット2Bに第3ワーキングタスクを実行させている状態を示している。ロボット2Bは、第3ワーク9Cをワーク台91から搬送装置2Aに搬送している。
この状態において、第1ワーキングタスクが実行可能になると、中断部122は制御部116に第3ワーキングタスクを中断させる。第3ワーク9Cがワーク台91から離れ、搬送装置2Aに到達していない状態において、第3ワーク9Cを解放することはできないので、ロボット2Bは、制御部116によりロボット2Bを第3ワーキングタスクの開始前の状態に戻させる。これにより、第3ワーク9Cがワーク台91上に戻される(図13の(b)参照)。その後、中断部122は、選択部115に第1ワーキングタスクを選択させる。制御部116は、第3ワーキングタスクの開始時における位置・姿勢から、第1ワーキングタスクの開始時における位置・姿勢まで所定軌道で先端部18を移動させるエアカットタスクをロボット2Bに実行させた後に、ロボット2Bに第1ワーキングタスクを実行させる。
中断部122は、制御部116に第2タスクの実行を中断させ、選択部115に第1タスクを選択させる場合に比較して、第2タスクの完了後に選択部115に第1タスクを選択させる方が複数のプロセスの実行時間が短縮される場合に、第2タスクを制御部116に中断させなくてもよい。例えば中断部122は、第1タスクが実行可能となったタイミングにおいて、第2タスクの残り時間が所定の閾値以下である場合に、第2タスクを制御部116に中断させなくてもよい。
ローカルコントローラ100及び上位コントローラ200が以上のように構成されるのに対応して、データ管理装置300は、プロセスと、バーチャル空間における当該プロセスの進捗情報とに基づいて、次タスクの実行指令を出力するバーチャル指令出力部と、バーチャル環境情報を記憶するバーチャル環境情報格納部と、バーチャル指令出力部から出力された実行指令と、バーチャル環境情報格納部のバーチャル環境情報とに基づいて、バーチャルローカル機器にバーチャル空間において次タスクを実行させるバーチャルローカルコントローラと、バーチャルローカル機器の動作に応じて、バーチャル環境情報格納部のバーチャル環境情報を更新するバーチャル環境更新部と、を有してもよい。
例えば図14に示すように、データ管理装置300は、機能ブロックとして、モデル格納部311と、複数のバーチャルローカルコントローラ400と、バーチャル上位コントローラ500とを有する。
モデル格納部311は、複数のバーチャルローカル機器のモデルを記憶する。バーチャルローカル機器のモデルは、対応するローカル機器2のリアル空間における配置、構造、各部の寸法、及び各部の質量等のパラメータを含む。モデル格納部311は、バーチャル空間における複数のバーチャルローカル機器の周辺環境のモデルも記憶する。周辺環境のモデルは、複数のローカル機器2の周辺物体のリアル空間における配置、三次元形状、寸法等のパラメータを含む。モデル格納部311は、制御指令に対するバーチャルローカル機器の応答性を時間で表した標準時間を含んでいてもよい。標準時間の具体例としては、例えば、制御指令に応じた動作時間長が挙げられる。動作時間長は、例えば、制御指令の出力開始時刻から、これに応じたバーチャルローカル機器の動作完了時刻までの時間長である。
複数のバーチャルローカルコントローラ400は、複数のローカルコントローラ100にそれぞれ対応する。例えばデータ管理装置300は、ローカルコントローラ100Aに対応するバーチャルローカルコントローラ400Aと、ローカルコントローラ100Bに対応するバーチャルローカルコントローラ400Bと、ローカルコントローラ100Cに対応するバーチャルローカルコントローラ400Cと、ローカルコントローラ100Dに対応するバーチャルローカルコントローラ400Dとを有する。
ロボットコントローラであるローカルコントローラ100B,100C,100Dにそれぞれ対応するバーチャルローカルコントローラ400B,400C,400Dは、バーチャルロボットコントローラである。バーチャルローカルコントローラ400B,400Cが制御するバーチャルローカル機器はバーチャルロボットであり、バーチャルローカルコントローラ400Dが制御するバーチャルローカル機器はバーチャル移動型ロボットである。
複数のバーチャルローカルコントローラ400は、複数のローカル機器2にそれぞれ対応する複数のバーチャルローカル機器をバーチャル空間においてそれぞれ制御する。複数のバーチャルローカルコントローラ400のそれぞれは、バーチャル空間において、対象ワーク9に対するプロセスに含まれる複数のタスクを、制御対象のバーチャルローカル機器に実行させる。
以下、バーチャルローカルコントローラ400による制御対象のバーチャルローカル機器を「管轄バーチャルローカル機器」といい、管轄バーチャルローカル機器に対応するローカル機器2を「管轄ローカル機器2」という。管轄ローカル機器2は、バーチャルローカルコントローラ400に対応するローカルコントローラ100が制御対象とするローカル機器2である。
バーチャル空間は、管轄ローカル機器2が存在しないシミュレーション上の仮想空間である。バーチャル空間において、管轄バーチャルローカル機器にタスクを実行させるとは、モデル格納部311が記憶する管轄ローカル機器2のモデル情報に基づいて、当該タスクを実行する際のリアル空間における管轄ローカル機器2の動作をシミュレーションすることを意味する。
複数のバーチャルローカルコントローラ400のそれぞれは、複数のタスクごとに、上記バーチャル環境情報格納部のバーチャル環境情報に基づいて実行タイミングを調節してもよい。また、バーチャルローカルコントローラ400は、上記バーチャル指令出力部からの実行指令に対応する次タスクを管轄バーチャルローカル機器に実行させてもよい。例えば複数のバーチャルローカルコントローラ400のそれぞれは、上記実行指令と、上記バーチャル環境情報とに基づいて、管轄バーチャルローカル機器に上記次タスクを実行させる。例えばバーチャルローカルコントローラ400は、上記バーチャル環境情報格納部のバーチャル環境情報に基づいて実行タイミングを調節しつつ、上記バーチャル指令出力部からの実行指令に対応する次タスクを管轄バーチャルローカル機器に実行させる。
バーチャル上位コントローラ500は、より細分化された機能ブロックとして、プロセスデータベース211、オーダ取得部212、プロセス割当部213、プロセス格納部214、指令出力部215、進捗更新部216、環境情報格納部221、環境更新部222にそれぞれ対応するプロセスデータベース511、オーダ取得部512、プロセス割当部513、プロセス格納部514、指令出力部515、進捗更新部516、環境情報格納部521、環境更新部522を有する。
プロセスデータベース511は、プロセスデータベース211と同様に、生産システム1が対象とする複数種類のワーク9ごとに複数のプロセスを記憶する。オーダ取得部512は、例えば後述の入力デバイス396等から、シミュレーション用の生産オーダを取得する。
プロセス割当部513は、プロセス割当部213と同様に、生産オーダが指定するワーク9に対しプロセスを割り当てる。例えばプロセス割当部513は、生産オーダが指定するワーク9に対し、プロセスデータベース511に基づいてプロセスを割り当てる。プロセス格納部514は、プロセス格納部214と同様に、プロセス割当部513によるプロセスの割り当て結果と、プロセスごとの進捗情報(バーチャル空間における進捗情報)とを記憶する。
指令出力部515(バーチャル指令出力部)は、指令出力部215と同様に、プロセス格納部514が記憶するプロセスと、バーチャル空間における当該プロセスの進捗情報とに基づいて、次タスクの実行指令を出力する。指令出力部515は、プロセスデータベース511に基づいて複数のバーチャルローカルコントローラ400のいずれかに次タスクの実行指令を出力する。例えば指令出力部515は、プロセスデータベース511において次タスクに対応付けられたローカル機器2のバーチャルローカル機器のバーチャルローカルコントローラ400に次タスクの実行指令を出力する。
進捗更新部516は、進捗更新部216と同様に、複数のバーチャルローカル機器による次タスクの実行状況に応じて、プロセス格納部514の進捗情報を更新する。例えば進捗更新部516は、バーチャルローカルコントローラ400が出力する後述のステータス情報に基づいて、プロセス格納部514の進捗情報を更新する。
環境情報格納部521(バーチャル環境情報格納部)は、バーチャル環境情報を記憶する。バーチャル環境情報の構成は、環境情報の構成と同様である。バーチャル環境情報は、バーチャル空間における機器情報と、バーチャル空間におけるワーク情報とを含む。
バーチャル空間における機器情報の具体例としては、バーチャル空間におけるバーチャルローカル機器の位置・姿勢情報が挙げられる。バーチャル空間における機器情報は、バーチャルローカルコントローラ400と、その管轄バーチャルローカル機器との間に発生した制御信号(以下、「バーチャル制御信号」という。)の情報を含む。
バーチャル制御信号は、管轄バーチャルローカル機器の制御のためにバーチャルローカルコントローラ400で生成される内部信号であってもよいし、バーチャルローカルコントローラ400から管轄バーチャルローカル機器に出力される出力信号であってもよいし、管轄バーチャルローカル機器からバーチャルローカルコントローラ400に出力されるフィードバック信号であってもよい。内部信号の具体例としては、管轄バーチャルローカル機器の位置・姿勢の指令値等が挙げられる。出力信号の具体例としては、管轄バーチャルローカル機器のアクチュエータへの出力電流値等が挙げられる。フィードバック信号の具体例としては、出力信号と、モデル格納部311が記憶するモデル情報とに基づく管轄ローカル機器2の動作のシミュレーション結果が挙げられる。
バーチャル空間におけるワーク情報の具体例としては、バーチャル空間における各ワーク9の位置情報が挙げられる。
環境更新部522(バーチャル環境更新部)は、複数のバーチャルローカル機器の動作に応じて、環境情報格納部521のバーチャル環境情報を更新する。
バーチャルローカルコントローラ400は、より細分化された機能ブロックとして、タスクプログラム格納部111、パラメータ保持部112、指令バッファ113、環境情報取得部114、選択部115、制御部116、ステータス出力部117、選択タイミング調節部121、及び中断部122にそれぞれ対応するタスクプログラム格納部411、パラメータ保持部412、指令バッファ413、環境情報取得部414、選択部415、制御部416、ステータス出力部417、選択タイミング調節部421、及び中断部422を有する。
タスクプログラム格納部411は、タスクプログラム格納部111と同様に、複数のタスクのうち1以上のタスクごとに予め定められた1以上の実行条件を記憶する。例えばタスクプログラム格納部411は、上記複数のタスクプログラム130を記憶する。パラメータ保持部412は、パラメータ保持部112と同様に、管轄バーチャルローカル機器を制御するための1以上のパラメータを記憶する。
指令バッファ413は、指令バッファ113と同様に、バーチャル上位コントローラ500から取得した次タスクの実行指令を記憶する。環境情報取得部414は、環境情報取得部114と同様に、環境情報格納部521に格納された環境情報を取得する。選択部415は、選択部115と同様に、タスクプログラム格納部411における複数の次タスクのそれぞれの実行条件(条件ヘッダ131)と、環境情報格納部521の環境情報とに基づいて、指令バッファ413の複数の次タスクのいずれかを選択する。
制御部416は、タスクプログラム格納部411における次タスクの実行条件と、環境情報格納部521の環境情報とに基づいて管轄バーチャルローカル機器に次タスクを実行させる。例えば制御部416は、選択部415が選択した次タスクを管轄バーチャルローカル機器に実行させる。以下、選択部415が選択したタスクを「選択済タスク」という。具体的に、制御部416は、モデル格納部311が記憶する管轄ローカル機器2のモデル情報に基づいて、選択済タスクを実行する際のリアル空間における管轄ローカル機器2の動作をシミュレーションする。ステータス出力部417は、ステータス出力部117と同様に、管轄バーチャルローカル機器の上記ステータス情報をバーチャル上位コントローラ500に出力する。
選択タイミング調節部421は、選択タイミング調節部121と同様に、選択部415による次タスクの選択タイミングを調整する。例えば選択タイミング調節部421は、指令バッファ413の複数の次タスクが、マシンタスクが完了したら実行可能になる第1タスクと、すでに実行可能な第2タスクとを含む場合、第1タスク及び第2タスクの優先度と、待ち時間とに基づいて、選択部415による次タスクの選択タイミングを調整する。
中断部422は、中断部122と同様に、指令バッファ413の複数の次タスクが、第1タスクと、第1タスクよりも優先度の低い第2タスクとを含み、管轄バーチャルローカル機器による第2タスクの実行中に第1タスクが実行可能になった場合、制御部416に第2タスクを中断させ、選択部415に第1タスクを選択させる。
図15に示すように、データ管理装置300は、機能ブロックとして、リアル情報収集部312と、リアル情報データベース313と、バーチャル情報収集部314と、バーチャル情報データベース315と、タスク比較部316と、状況対比表示部317と、表示形態変更部318と、リアル信号抽出部321と、バーチャル信号抽出部322と、信号対比表示部323とを更に有する。
リアル情報収集部312は、ローカルコントローラ100による複数のタスクそれぞれの実行状況を表すリアル実行状況情報を収集する。リアル実行状況情報には、対応するタスクの実行時間が含まれる。実行時間は、開始時刻であってもよいし、完了時刻であってもよいし、開始時刻から完了時刻までの時間長であってもよい。例えばリアル情報収集部312は、第1タイムラインにおける複数のタスクのそれぞれの実行開始時刻及び実行完了時刻を含むリアル実行状況情報を収集する。第1タイムラインは、例えば上位コントローラ200内のタイマを基準とする時間軸である。リアル実行状況情報は、対応するタスクの実行後における対象ワーク9の状態情報を含んでもよい。対象ワーク9の状態情報の一例としては、搬送後における対象ワーク9の位置・姿勢等が挙げられる。
リアル情報収集部312は、リアル実行状況情報を上位コントローラ200のプロセス格納部214から取得する。リアル情報収集部312は、更に、上記リアル制御信号を上位コントローラ200の環境情報格納部221から取得してもよい。リアル情報収集部312は、上記リアル制御信号を含む環境情報を第1タイムラインにおける時刻に対応付けて環境情報格納部221から取得してもよい。リアル情報収集部312は、上位コントローラ200にリアル実行状況情報及びリアル制御信号の出力を要求し、要求に応じて出力されたリアル実行状況情報及びリアル制御信号を取得してもよいし、要求の有無によらず上位コントローラ200から出力されたリアル実行状況情報及びリアル制御信号を取得してもよい。
リアル情報データベース313は、リアル情報収集部312が収集したリアル実行状況情報及びリアル制御信号を蓄積する。リアル情報データベース313は、リアル制御信号を上記第1タイムラインに沿った時刻に対応付けて蓄積してもよい。リアル情報データベース313は、上記リアル制御信号を含む環境情報を、上記第1タイムラインに沿った時刻に対応付けて蓄積してもよい。
バーチャル情報収集部314は、バーチャルローカルコントローラ400による複数のタスクそれぞれの実行状況を表すバーチャル実行状況情報を収集する。バーチャル実行状況情報には、対応するタスクの実行時間が含まれる。実行時間は、開始時刻であってもよいし、完了時刻であってもよいし、開始時刻から完了時刻までの時間長であってもよい。例えばバーチャル情報収集部314は、第2タイムラインにおける複数のタスクの実行開始時刻及び実行完了時刻を含むバーチャル実行状況情報を収集する。第2タイムラインは、例えばデータ管理装置300内のタイマを基準とする時間軸である。バーチャル実行状況情報は、対応するタスクの実行後における対象ワーク9の状態情報を含んでもよい。対象ワーク9の状態情報の一例としては、搬送後における対象ワーク9の位置・姿勢等が挙げられる。
バーチャル情報収集部314は、バーチャル実行状況情報をプロセス格納部514から取得する。バーチャル情報収集部314は、更に、上記バーチャル制御信号を環境情報格納部521から取得してもよい。バーチャル情報収集部314は、上記バーチャル制御信号を含むバーチャル環境情報を第2タイムラインにおける時刻に対応付けて環境情報格納部521から取得してもよい。
バーチャル情報データベース315は、バーチャル情報収集部314が収集したバーチャル実行状況情報及びバーチャル制御信号を蓄積する。バーチャル情報データベース315は、バーチャル制御信号を上記第2タイムラインに沿った時刻に対応付けて蓄積してもよい。バーチャル情報データベース315は、上記バーチャル制御信号を含むバーチャル環境情報を、上記第2タイムラインに沿った時刻に対応付けて蓄積してもよい。
タスク比較部316は、複数のタスクのうち、リアル実行状況情報とバーチャル実行状況情報とが乖離した1以上の乖離タスクを抽出する。ここでの乖離は、リアル実行状況情報と、バーチャル実行状況情報との差が所定レベルを超えることを意味する。タスク比較部316は、複数のタスクのうち、少なくとも1以上のタスクについてリアル実行状況情報とバーチャル実行状況情報との比較を行えばよく、必ずしも複数のタスクの全てについて、リアル実行状況情報とバーチャル実行状況情報との比較を行わなくてよい。タスク比較部316による乖離タスクの抽出の具体例を以下に示す。
例1)リアル実行状況情報に基づく実行時間長(開始から完了までの時間長)と、バーチャル実行状況情報に基づく実行時間長との差が所定レベルを超えた1以上の乖離タスクを抽出する。
例2)リアル実行状況情報に基づく対象ワーク9の上記状態情報と、バーチャル実行状況情報に基づく対象ワーク9の上記状態情報との差が所定レベルを超えた1以上の乖離タスクを抽出する。
状況対比表示部317は、リアル情報収集部312が収集した複数のタスクそれぞれのリアル実行状況情報と、バーチャル情報収集部314が収集した複数のタスクそれぞれのバーチャル実行状況情報とをタスクごとに対比して表示部(例えば後述の表示デバイス395)に表示させる。
図16は、リアル実行状況情報とバーチャル実行状況情報との対比表示を例示するテーブルである。このテーブルは、リアル実行状況情報に基づく実行時間長と、バーチャル実行状況情報に基づく実行時間長とを複数のタスクごとに対比して表示する。また、このテーブルは、リアル実行状況情報に基づく対象ワーク9の状態情報と、バーチャル実行状況情報に基づく対象ワーク9の状態情報とを複数のタスクごとに対比して表示する。
表示形態変更部318は、1以上の乖離タスクを、他のタスクと異なる表示形態で表示部に表示させる。表示形態変更部318は、図16に例示するテーブルにおいて、乖離タスクに対応する行を色付け等のスタイル変更により強調表示する。
リアル信号抽出部321は、1以上の乖離タスクに対応するリアル制御信号をリアル情報データベース313から抽出する。例えばリアル信号抽出部321は、第1タイムラインにおける実行開始時刻及び実行完了時刻に基づいて、1以上の乖離タスクに対応するリアル制御信号をリアル情報データベース313から抽出する。より具体的に、リアル信号抽出部321は、第1タイムラインにおいて、乖離タスクの実行開始時刻から実行完了時刻までの時刻に対応付けて蓄積されたリアル制御信号をリアル情報データベース313から抽出する。
バーチャル信号抽出部322は、1以上の乖離タスクに対応するバーチャル制御信号をバーチャル情報データベース315から抽出する。例えばバーチャル信号抽出部322は、第2タイムラインにおける実行開始時刻及び実行完了時刻に基づいて、1以上の乖離タスクに対応するバーチャル制御信号をバーチャル情報データベース315から抽出する。より具体的に、バーチャル信号抽出部322は、第2タイムラインにおいて、乖離タスクの実行開始時刻から実行完了時刻までの時刻に対応付けて蓄積されたバーチャル制御信号をバーチャル情報データベース315から抽出する。
信号対比表示部323は、リアル信号抽出部321が抽出したリアル制御信号とバーチャル信号抽出部322が抽出したバーチャル制御信号とを対比して表示部(例えば後述の表示デバイス395)に表示させる。例えば信号対比表示部323は、制御信号の種別ごとに、乖離タスクの開始時刻を揃えた状態で、リアル制御信号のタイミングチャートとバーチャル制御信号のタイミングチャートとを対比表示させる。
図17は、リアル制御信号と、バーチャル制御信号との対比表示を例示するチャートである。このチャートは、信号種別A,Bについての対比表示を含んでいる。信号種別Aは、管轄ローカル機器2の第1アクチュエータに対する制御信号であり、信号種別Bは、管轄ローカル機器2の第2アクチュエータに対する制御信号である。第1アクチュエータと第2アクチュエータとは協働する。図17の(a)は、信号種別Aについてのリアル制御信号A1のタイミングチャートであり、図17の(b)は、信号種別Aに対応するバーチャル制御信号A2のタイミングチャートである。図17の(c)は、信号種別Bについてのリアル制御信号B1のタイミングチャートである、図17の(d)は、信号種別Bに対応するバーチャル制御信号B2のタイミングチャートである。
図17の(a)のチャートと図17の(b)のチャートとを対比すると、リアル制御信号A1がローレベルとなる期間T1と、バーチャル制御信号A2がローレベルとなる期間T2とに差が生じていることが分かる。図17の(a)のチャートと図17の(c)のチャートとを対比すると、リアル制御信号A1がローレベルとなる期間T1は、リアル制御信号B1がハイレベルとなる期間T11に対応していることが分かる。図17の(b)のチャートと図17の(d)のチャートとを対比すると、バーチャル制御信号A2がローレベルとなる期間T2は、バーチャル制御信号B2がハイレベルとなる期間T12に対応していることが分かる。
そして、これらのチャートから、リアル制御信号B1と、バーチャル制御信号B2との乖離が、乖離タスクにおけるリアル実行状況情報とバーチャル実行状況情報との乖離要因であると推定される。例えば、リアル空間における第2アクチュエータの動作と、バーチャル空間における第2アクチュエータの動作との差が、上記乖離要因であると推定される。より具体的には、管轄ローカル機器2において、第2アクチュエータにより駆動される部分と、モデル格納部311における当該部分のモデル情報との差が上記乖離要因であると推定される。
データ管理装置300は、進捗表示部324を更に有してもよい。進捗表示部324は、リアル空間における、複数のワーク9ごとの複数のプロセスの進捗を表示部(例えば後述の表示デバイス395)に表示させる。例えば進捗表示部324は、リアル情報収集部312が収集するリアル実行状況情報に基づいて、生産システム1が実行中のタスクを表示部に表示させる。
図18は、複数のプロセスの進捗の表示例を示す図である。例えば進捗表示部324は、複数のワークごとのプロセスをフローチャートで表示し、各フローチャートにおいて、生産システム1が実行中のタスクを強調表示する。図18のチャートは、左から順に、ワークAに対するプロセスのフローチャート、ワークBに対するプロセスのフローチャート、ワークCに対するプロセスのフローチャート、ワークDに対するプロセスのフローチャート、及びワークEに対するプロセスのフローチャートを示している。
図19に示すように、データ管理装置300は、機能ブロックとして、プログラム取得部331と、パラメータ取得部332と、プログラム生成部333と、プログラム配信部335とを更に有してもよい。
プログラム取得部331は、各ローカルコントローラ100において、ティーチングにより登録されたワーキングタスクのタスクプログラム130を取得し、バーチャルローカルコントローラ400のタスクプログラム格納部411に記憶させる。ワーキングタスクのティーチング後において、ワーキングタスクの実行条件は未定であってもよい。例えば、タスクプログラム130における条件ヘッダ131は空白であってもよい。
パラメータ取得部332は、各ローカルコントローラ100において、上記パラメータ保持部112が記憶する1以上のパラメータを取得し、バーチャルローカルコントローラ400のパラメータ保持部412に記憶させる。
プログラム生成部333は、プログラム取得部331が取得したワーキングタスクと、モデル格納部311が記憶するモデル情報とに基づいて上記1以上のエアカットタスクを生成し、タスクプログラム格納部411に記憶させる。プログラム生成部333は、エアカットタスクの始点と終点との間に、周辺物体との衝突を回避可能な経由点を追加することを、始点から終点までの全域に亘って周辺物体との衝突が回避可能となるまで繰り返すことでエアカットタスクを生成する。プログラム生成部333は、タスクプログラム格納部411が記憶する複数のワーキングタスクにおいて順に実行されることが想定される2つのワーキングタスクの全組み合わせに対し、上記エアカットタスクを生成してもよい。
プログラム生成部333(実行条件生成部)は、複数のバーチャルローカル機器のバーチャル空間における動作に基づいて、上記1以上の実行条件の少なくとも一部を生成する。例えばプログラム生成部333は、バーチャル情報データベース315に蓄積された環境情報に基づいて実行可否条件を生成する。
例えばプログラム生成部333は、バーチャル情報データベース315に蓄積された環境情報に基づいて、いずれかのバーチャルローカル機器(第1バーチャルローカル機器)と、他のバーチャルローカル機器(第2バーチャルローカル機器)とのバーチャル空間における衝突を避けるように、第1バーチャルローカル機器のタスクの実行可否条件と、第2バーチャルローカル機器の実行可否条件とを生成する。例えば、複数のタスクが、ロボット(例えばロボット2B,2C又は移動型ロボット2D)が実行する第1ロボットタスクと、第2ロボット(例えばロボット2B,2C又は移動型ロボット2D)が実行する第2ロボットタスクとを含む場合に、プログラム生成部333は、ロボットに対応するバーチャルロボットと、第2ロボットに対応する第2バーチャルロボットとのバーチャル空間における衝突を避けるように、第1ロボットタスクの実行可否条件と第2ロボットタスクの実行可否条件とを生成する。
一例として、プログラム生成部333は、第1ロボットタスクを実行するバーチャルロボットの動作領域と、第2ロボットタスクを実行する第2バーチャルロボットの動作領域との重複領域を導出し、第2バーチャルロボットが重複領域内に位置しないことを含むように第1ロボットタスクの実行可否条件を生成し、第1バーチャルロボットが重複領域内に位置しないことを含むように第2ロボットタスクの実行可否条件を生成する。プログラム生成部333は、生成した実行可否条件を、対応するタスクのタスクプログラム130の条件ヘッダ131に登録する。
プログラム生成部333は、生成済みの実行条件に基づいて複数のバーチャルローカル機器が動作する場合の、バーチャル空間における複数のプロセスの実行時間を短縮するように、実行条件の少なくとも一部を変更してもよい。例えばプログラム生成部333は、複数のタスクのそれぞれの優先度を定める優先度組み合わせをランダムに変更し、優先度組み合わせのそれぞれを対応するタスクプログラム130の条件ヘッダ131に登録することと、変更後の優先度組み合わせにおいて複数のプロセスの実行時間を評価することと、を繰り返す。プログラム生成部333は、複数のプロセスの実行時間が最も短くなる優先度組み合わせを採用し、採用した優先度組み合わせのそれぞれを対応するタスクプログラム130の条件ヘッダ131に登録する。
以上に説明したように、プログラム生成部333によるエアカットタスクの追加と、プログラム生成部333による実行条件の追加とがなされた後に、タスクプログラム格納部411が記憶するプログラムを、以下では「生成済みのプログラム」という。
プログラム配信部335は、タスクプログラム格納部411の生成済みのプログラムを、対応するローカルコントローラ100に出力し、当該ローカルコントローラ100のタスクプログラム格納部111に記憶させる。例えばプログラム配信部335は、上位コントローラ200を介して、生成済みのプログラムを対応するローカルコントローラ100に出力する。
図20に示すように、データ管理装置300は、バーチャル調整部341と、リアル調整部342と、状態変化検出部343と、再現部344と、異常検出部345とを更に有してもよい。
バーチャル調整部341は、リアル信号抽出部321が抽出したリアル制御信号及びバーチャル信号抽出部322が抽出したバーチャル制御信号の少なくとも一方に基づいて、モデル格納部311が記憶する複数のバーチャルローカル機器のモデルのパラメータを調整する。以下、リアル信号抽出部321が抽出したリアル制御信号を「抽出済みのリアル制御信号」といい、バーチャル信号抽出部322が抽出したバーチャル制御信号を「抽出済みのバーチャル制御信号」という。
例えばバーチャル調整部341は、バーチャルローカルコントローラ400の制御信号を抽出済みのリアル制御信号に近付けるように、対応するバーチャルローカル機器のモデルのパラメータを変更する。一例として、バーチャル調整部341は、抽出済みのリアル制御信号と、抽出済みのバーチャル制御信号との差を縮小するように、対応するバーチャルローカル機器のモデルのパラメータを変更する。バーチャルローカル機器のモデルのパラメータを変更することの具体例を以下に示す。
例1)上記配置、構造、各部の寸法、及び各部の質量等の物体情報を変更する。
例2)制御指令に応じたローカル機器2の動作時間長に合わせ、上記標準時間を変更する。
リアル調整部342は、抽出済みのリアル制御信号及び抽出済みのバーチャル制御信号の少なくとも一方に基づいて、複数のローカルコントローラ100の制御パラメータ(パラメータ保持部112のパラメータ)を調整する。例えばリアル調整部342は、ローカルコントローラ100の制御信号を抽出済みのバーチャル制御信号に近付けるように、対応するローカルコントローラ100のパラメータを変更する。例えば、リアル調整部342は、抽出済みのリアル制御信号と、抽出済みのバーチャル制御信号との差を縮小するように、上記位置制御ゲイン、速度制御ゲイン、又は電流制御ゲイン等のパラメータを変更する。リアル調整部342がパラメータ保持部112のパラメータを変更した場合に、パラメータ取得部332が変更後のパラメータをパラメータ保持部112から取得し、パラメータ保持部412に登録してもよい。
リアル調整部342がパラメータ保持部112のパラメータを変更することによって、抽出済みのリアル制御信号と、抽出済みのバーチャル制御信号との差が縮小していた場合に、変更後のパラメータがパラメータ保持部412に上書きされると、抽出済みのリアル制御信号と抽出済みのバーチャル制御信号との差が再度拡大する可能性がある。この場合、バーチャル調整部341が、再度拡大した差を縮小するように、バーチャルローカル機器のモデルのパラメータを更に変更してもよい。これにより、ローカル機器2の変化が、対応するバーチャルローカル機器のモデルのパラメータに反映されることとなる。
状態変化検出部343は、抽出済みのリアル制御信号及び抽出済みのバーチャル制御信号の少なくとも一方に基づいて、バーチャルローカル機器2及びバーチャルローカル機器2が協働する装置の少なくとも一方の状態変化を検出する。状態変化の具体例としては、制御指令に対する応答性の変化、制御指令に対する追従精度の変化等が挙げられる。応答性の変化要因としては、摩擦の増大などによる内部不可の増大が挙げられる。追従精度の変化要因としては、可動部のガタツキの拡大等が挙げられる。
再現部344は、状態変化検出部343が状態変化を検出した場合、少なくとも当該状態変化が発生したタスクに対応するリアル制御信号に基づいて、当該タスクを実行する管轄ローカル機器2の動作を管轄バーチャルロボットに再現させる。以下、状態変化が発生したタスクを「変化発生タスク」という。例えば再現部344は、モデル格納部311が記憶するバーチャルローカル機器のモデルと、変化発生タスクに対応するリアル制御信号とに基づいて、変化発生タスクを実行するローカル機器2の動作の再現動画を生成し、表示部(例えば後述の表示デバイス395)等に表示させる。再現部344は、変化発生タスクの前後のタスクについてもリアル制御信号に基づいて管轄ローカル機器2の動作を管轄バーチャルローカル機器に再現させてもよい。
データ管理装置300は、異常検出部345を更に有してもよい。異常検出部345は、上位コントローラ200が発生するアラーム信号等に基づいて、管轄ローカル機器2及び管轄ローカル機器2が協働する装置の少なくとも一方の異常を検出する。再現部344は、異常検出部345が異常を検出した場合、当該異常が発生した時点の前及び後の少なくとも一方の管轄ローカル機器2の動作を、リアル制御信号に基づいて管轄バーチャルローカル機器に再現させてもよい。
図21に示すように、データ管理装置300は、センサ情報処理部351と、情報更新部352とを更に有してもよい。センサ情報処理部351は、外部センサ5から取得したセンサ情報に対して、所定の処理を行う。所定の処理の具体例としては、外部センサ5の一例であるカメラから取得した画像情報等に基づいて、ワーク9の種類・位置・姿勢等のワーク情報、ローカル機器2の位置、ローカル機器2の動作状態等の機器情報、及び、ワーク9に対するローカル機器2のアプローチ状態(ワーク情報及び機器情報の複合情報)等を抽出する処理が挙げられる。
情報更新部352は、センサ情報処理部351の処理結果に基づいて、リアル情報データベース313における最新の環境情報を更新する。情報更新部352により、リアル情報データベース313における最新の環境情報が更新された場合、リアル情報収集部312は更新結果に合わせて、上位コントローラ200の環境情報格納部221の環境情報を更新する。これにより、上位コントローラ200における情報処理負担を軽減し、上位コントローラ200における同期通信リソースなどを節約することができる。
図22は、制御システム3のハードウェア構成を例示するブロック図である。図22に示すように、上位コントローラ200は、回路290を有する。回路290は、一つ又は複数のプロセッサ291と、メモリ292と、ストレージ293と、通信ポート294,295と、入出力ポート296を含む。ストレージ293は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ293は、ワーク9に対する複数のタスクを含むプロセスと、当該プロセスの進捗情報とに基づいて、次タスクの実行指令をローカルコントローラ100に送信することと、環境情報格納部221に環境情報を記憶することと、実行指令と、環境情報格納部221の環境情報とに基づいて、ローカルコントローラ100がローカル機器2に実行させた動作に応じて、環境情報を更新することと、を上位コントローラ200に実行させるためのプログラムを記憶している。例えばストレージ293は、上述した各機能ブロックを上位コントローラ200に構成させるためのプログラムを記憶している。
メモリ292は、ストレージ293の記憶媒体からロードしたプログラム及びプロセッサ291による演算結果を一時的に記憶する。プロセッサ291は、メモリ292と協働して上記プログラムを実行することで、上位コントローラ200の各機能ブロックを構成する。通信ポート294は、プロセッサ291からの指令に従って、第1のネットワーク回線NW1を介して、ローカルコントローラ100との間で通信を行う。通信ポート295は、プロセッサ291からの指令に従って、第2のネットワーク回線NW2を介して、データ管理装置300との間で通信を行う。入出力ポート296は、プロセッサ291からの指令に従って、外部センサ5との間で情報の入出力を行う。
ローカルコントローラ100は、回路190を有する。回路190は、一つ又は複数のプロセッサ191と、メモリ192と、ストレージ193と、通信ポート194と、ドライバ回路195を含む。ストレージ193は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ193は、ワーク9に対する複数のタスクを含むプロセスと、当該プロセスの進捗情報とに基づいて上位コントローラ200が送信した次タスクの実行指令を指令バッファ113に記憶することと、ローカル機器2によるタスクの実行に応じて上位コントローラ200により更新される環境情報と、実行指令とに基づいて、次タスクをローカル機器2に実行させることと、次タスクの実行状況を上位コントローラ200に送信することと、をローカルコントローラ100に実行させるためのプログラムを記憶している。例えばストレージ193は、上述した各機能ブロックをローカルコントローラ100に構成させるためのプログラムを記憶している。
メモリ192は、ストレージ193の記憶媒体からロードしたプログラム及びプロセッサ191による演算結果を一時的に記憶する。プロセッサ191は、メモリ192と協働して上記プログラムを実行することで、ローカルコントローラ100の各機能ブロックを構成する。通信ポート194は、プロセッサ191からの指令に従って、第1のネットワーク回線NW1を介して、上位コントローラ200との間で通信を行う。ドライバ回路195は、プロセッサ191からの指令に従って、ローカル機器2に駆動電力を出力する。
データ管理装置300は、回路390を有する。回路390は、一つ又は複数のプロセッサ391と、メモリ392と、ストレージ393と、通信ポート394と、表示デバイス395と、入力デバイス396とを含む。ストレージ393は、例えば不揮発性の半導体メモリ等、コンピュータによって読み取り可能な記憶媒体を有する。ストレージ393は、ローカルコントローラ100による複数のタスクそれぞれの実行状況を表すリアル実行状況情報を収集することと、バーチャルローカルコントローラ400による複数のタスクそれぞれの実行状況を表すバーチャル実行状況情報を収集することと、複数のタスクのうち、リアル実行状況情報とバーチャル実行状況情報とが乖離した1以上の乖離タスクを抽出することと、をデータ管理装置300に実行させるためのプログラムを記憶している。例えばストレージ393は、上述した各機能ブロックをデータ管理装置300に構成させるためのプログラムを記憶している。
メモリ392は、ストレージ393の記憶媒体からロードしたプログラム及びプロセッサ391による演算結果を一時的に記憶する。プロセッサ391は、メモリ392と協働して上記プログラムを実行することで、データ管理装置300の各機能ブロックを構成する。通信ポート394は、プロセッサ391からの指令に従って、第2のネットワーク回線NW2を介して、上位コントローラ200との間で通信を行う。表示デバイス395及び入力デバイス396は、データ管理装置300のユーザインタフェースとして機能する。表示デバイス395は、例えば液晶モニタ等を含み、ユーザに対する情報表示に用いられる。入力デバイス396は、例えばキーパッド等であり、ユーザによる入力情報を取得する。表示デバイス395及び入力デバイス396は、所謂タッチパネルのように一体化されていてもよい。表示デバイス395及び入力デバイス396は、データ管理装置300に接続される外部機器に設けられていてもよいし、データ管理装置300に組み込まれていてもよい。
なお、回路190,290,390は、必ずしもプログラムにより各機能を構成するものに限られない。例えば回路290,390,490は、専用の論理回路又はこれを集積したASIC(Application Specific Integrated Circuit)により少なくとも一部の機能を構成してもよい。ローカルコントローラ100、上位コントローラ200及びデータ管理装置300のそれぞれは、互いに通信可能な複数のコンピュータにより構成されていてもよく、各コンピュータが回路を有していてもよい。例えばデータ管理装置300は、データ収集装置と、シミュレーション装置とを含む複数のコンピュータにより構成されていてもよい。この場合、上述したデータ管理装置300の各機能ブロックは、複数のコンピュータに分散して構成されてもよい。一例として、バーチャルローカルコントローラ400、バーチャル上位コントローラ500、モデル格納部311、プログラム取得部331、プログラム配信部335、プログラム生成部333、及びパラメータ取得部332がシミュレーション装置に構成され、リアル情報収集部312、リアル情報データベース313、バーチャル情報収集部314、バーチャル情報データベース315、タスク比較部316、状況対比表示部317、表示形態変更部318、リアル信号抽出部321、バーチャル信号抽出部322、信号対比表示部323、進捗表示部324、バーチャル調整部341、リアル調整部342、状態変化検出部343、再現部344、異常検出部345、センサ情報処理部351、及び情報更新部352がデータ収集装置に構成されていてもよい。データ収集装置は、各ローカルコントローラ100のタスクプログラム130及び制御パラメータの収集・記憶と、各ローカルコントローラ100へのタスクプログラム130の配信とを更に行ってもよい。この場合、プログラム取得部331はデータ収集装置を介してタスクプログラム130をローカルコントローラ100から取得してもよい。パラメータ取得部332はデータ収集装置を介して制御パラメータをローカルコントローラ100から取得してもよい。プログラム配信部335はデータ収集装置を介して生成済みのプログラムをローカルコントローラ100に出力してもよい。また、シミュレーション装置としての機能を一まとめにしたプログラムにより1台のコンピュータにシミュレーション装置が構成され、データ収集装置としての機能を一まとめにしたプログラムにより同じ1台のコンピュータにデータ収集装置が構成されていてもよい。
〔制御手順〕
制御方法の一例として、制御システム3が行う制御手順を示す。この制御手順は、ワーク9に対する複数のタスクを含むプロセスと、当該プロセスの進捗情報とに基づいて、次タスクの実行指令をローカルコントローラ100に送信することと、環境情報格納部221に環境情報を記憶することと、実行指令と、環境情報格納部221の環境情報とに基づいて、ローカルコントローラ100がローカル機器2に実行させた動作に応じて、環境情報を更新することと、を含む。
また、制御手順は、ワーク9に対する複数のタスクを含むプロセスと、当該プロセスの進捗情報とに基づいて上位コントローラ200が送信した次タスクの実行指令を指令バッファに記憶することと、ローカル機器2によるタスクの実行に応じて上位コントローラ200により更新される環境情報と、実行指令とに基づいて、次タスクをローカル機器2に実行させることと、次タスクの実行状況を上位コントローラ200に送信することと、を含む。
他の観点において、この制御手順は、リアル空間において、ワーク9に対するプロセスに含まれる複数のタスクを、ローカル機器2に実行させることと、バーチャル空間において、複数のタスクを、バーチャルローカル機器に実行させることと、ローカルコントローラ100による複数のタスクそれぞれの実行状況を表すリアル実行状況情報を収集することと、バーチャルローカルコントローラ400による複数のタスクそれぞれの実行状況を表すバーチャル実行状況情報を収集することと、複数のタスクのうち、リアル実行状況情報とバーチャル実行状況情報とが乖離した1以上の乖離タスクを抽出することと、を含む。
以下、制御手順を、上位コントローラ200が実行する進捗管理手順と、ローカルコントローラ100が実行する制御手順と、データ管理装置300が行うデータ管理手順とに分けて詳細に例示する。少なくとも、上位コントローラ200が実行する進捗管理手順と、ローカルコントローラ100が実行する制御手順とは並行して実行される。
(進捗管理手順)
図23に示すように、上位コントローラ200は、ステップS01,S02,S03,S04,S05,S06を順に実行する。ステップS01では、オーダ取得部212が、生産管理コントローラ4からの生産オーダの取得を待機する。ステップS02では、プロセス割当部213が、生産オーダが指定するワーク9に対しプロセスを割り当ててプロセス格納部214に記憶させる。
ステップS03では、プロセス格納部214が記憶するプロセスと、当該プロセスの進捗情報とに基づいて、指令出力部215が次タスクの実行指令を出力する。プロセス格納部214において、複数のワーク9に対し複数のプロセスがそれぞれ割り当てられている場合、指令出力部215は、複数のプロセスごとの複数の次タスクの実行指令を出力する。
ステップS04では、環境更新部222が、複数のローカルコントローラ100のそれぞれからローカル機器2のステータス情報を取得し、外部センサ5の検出結果を取得し、当該ステータス情報及び検出結果に基づいて環境情報を更新する。ステップS05では、進捗更新部216が、ステップS04において取得されたステータス情報が含むタスクの完了通知に応じて、プロセス格納部214の進捗情報を更新する。ステータス情報がタスクの完了通知を含んでいない場合、進捗情報は変更されない。
ステップS06では、プロセス格納部214においてワーク9に割り当てられたプロセスが完了しているかを指令出力部215が確認する。例えば指令出力部215は、プロセス格納部214における全てのタスクが完了しているかを確認する。
ステップS06において、完了していないタスクが残っていると判定した場合、上位コントローラ200は処理をステップS03に戻す。以後、上位コントローラ200は、プロセス格納部214における全てのタスクが完了するまで、例えば所定周期の同期通信サイクルにてステップS03〜S06を繰り返す。ステップS06において、全てのタスクが完了していると判定した場合、上位コントローラ200は処理をステップS01に戻す。上位コントローラ200は以上の処理を繰り返し実行する。
(制御手順)
図24に示すように、ローカルコントローラ100は、まずステップS11,S12,S13,S14を実行する。ステップS11では、選択部115が、指令バッファ113に1以上の次タスクの実行指令が蓄積されるのを待機する。ステップS12では、環境情報取得部114が、環境情報格納部221に格納された環境情報を取得する。
ステップS13では、選択部115が、1以上の次タスクのそれぞれの実行条件と、環境情報格納部221の環境情報とに基づいて、1以上の次タスクのそれぞれの実行可否を確認する。例えば選択部115は、1以上の次タスクのそれぞれの実行可否条件を環境情報が満たしているかを確認する。ステップS14では、実行可の次タスクが存在するか否かを選択部115が確認する。
ステップS14において実行可の次タスクが存在しないと判定した場合、ローカルコントローラ100は処理をステップS11に戻す。以後、いずれかの次タスクが実行可となるまでは所定周期の通信サイクルでステップS11〜S14が繰り返される。通信サイクルは、上記同期通信サイクルと同期していてもよい。
ステップS14において実行可の次タスクが存在すると判定した場合、ローカルコントローラ100はステップS15,S16,S17,S18を実行する。ステップS15では、選択部115が、実行可の次タスクの中で、優先度が最も高い次タスクを選択する。以下、選択部115が選択した次タスクを「選択済タスク」という。
ステップS16では、制御部116が、管轄ローカル機器2に、選択済タスクのうち1制御周期分を実行させる。ステップS17では、ステータス出力部117が、管轄ローカル機器2のステータス情報を上位コントローラ200に出力する。ステップS18では、選択済タスクの実行が完了したか否かを制御部116が確認する。
ステップS18において選択済タスクの実行が完了していないと判定した場合、ローカルコントローラ100は処理をステップS16に戻す。以後、選択済タスクの実行が完了するまで、ローカルコントローラ100は所定周期の制御サイクルにてステップS16〜S18を繰り返す。制御サイクルは、上記同期通信サイクルと同期していてもよい。
ステップS18において選択済タスクの実行が完了したと判定した場合、ローカルコントローラ100はステップS19を実行する。ステップS19では、ステータス出力部117が、選択済タスクの完了通知をステータス情報に含めて上位コントローラ200に出力する。その後、ローカルコントローラ100は処理をステップS11に戻す。ローカルコントローラ100は以上の処理を繰り返す。
制御手順は、上記待ち時間に基づいて、次タスクの選択タイミングを調整することを更に含んでいてもよい。図25は、待ち時間に基づく次タスクの選択タイミングの調整を含む制御手順を例示するフローチャートである。図25に示すように、ローカルコントローラ100は、まず、ステップS11〜S14と同様のステップS21〜S24を実行する。ステップS21では、選択部115が、指令バッファ113に1以上の次タスクの実行指令が蓄積されるのを待機する。ステップS22では、環境情報取得部114が、環境情報格納部221に格納された環境情報を取得する。
ステップS23では、選択部115が、1以上の次タスクのそれぞれの実行条件と、環境情報格納部221の環境情報とに基づいて、1以上の次タスクのそれぞれの実行可否を確認する。例えば選択部115は、1以上の次タスクのそれぞれの実行可否条件を環境情報が満たしているかを確認する。ステップS24では、実行可の次タスクが存在するか否かを選択部115が確認する。
ステップS24において実行可の次タスクが存在しないと判定した場合、ローカルコントローラ100は処理をステップS21に戻す。ステップS24において実行可の次タスクが存在すると判定した場合、ローカルコントローラ100が、ステップS25を実行する。ステップS25では、選択タイミング調節部121が、現時点では実行不可であるが、実行可の次タスクに比較して優先度の高いタスク(以下、これを「選択候補タスク」という。)があるか否かを確認する。
ステップS25において選択候補タスクが存在すると判定した場合、ローカルコントローラ100はステップS26を実行する。ステップS26では、選択候補タスクが実行可となるまでの待ち時間が所定の閾値を超えているかを選択タイミング調節部121が確認する。待ち時間の具体例としては、選択候補タスクの前に他のローカル機器2が実行する上記マシンタスクの完了までの待ち時間が挙げられる。
ステップS26において、選択候補タスクが実行可となるまでの待ち時間が所定の閾値を超えていないと判定した場合、ローカルコントローラ100は、実行可の次タスクを選択することなく、処理をステップS22に戻す。これにより、次タスクの選択タイミングが、上記待ち時間の経過時以降となる。待ち時間が経過した後には、上記選択候補タスクが実行可の次タスクに加わることとなる。
ステップS26において、選択候補タスクが実行可となるまでの待ち時間が所定の閾値を超えていると判定した場合、ローカルコントローラ100はステップS27を実行する。ステップS25において選択候補タスクが存在しないと判定した場合、ローカルコントローラ100はステップS26を実行せずにステップS27を実行する。ステップS27では、選択部115が、実行可の次タスクの中で、優先度が最も高い次タスクを選択する。以下、選択部115が選択した次タスクを「選択済タスク」という。
次に、ローカルコントローラ100は、ステップS28,S29,S31を実行する。ステップS28では、制御部116が、管轄ローカル機器2に、選択済タスクのうち1制御周期分を実行させる。ステップS29では、ステータス出力部117が、管轄ローカル機器2のステータス情報を上位コントローラ200に出力する。ステップS31では、選択済タスクの実行が完了したか否かを制御部116が確認する。
ステップS31において選択済タスクの実行が完了していないと判定した場合、ローカルコントローラ100は処理をステップS28に戻す。以後、選択済タスクの実行が完了するまで、ローカルコントローラ100は所定周期の制御サイクルにてステップS28〜S31を繰り返す。制御サイクルは、上記同期通信サイクルと同期していてもよい。
ステップS31において選択済タスクの実行が完了したと判定した場合、ローカルコントローラ100はステップS32を実行する。ステップS32では、ステータス出力部117が、選択済タスクの完了通知をステータス情報に含めて上位コントローラ200に出力する。その後、ローカルコントローラ100は処理をステップS21に戻す。ローカルコントローラ100は以上の処理を繰り返す。
制御手順は、管轄ローカル機器2による第2タスクの実行中に、第2タスクよりも優先度の高い第1タスクが実行可能になった場合、第2タスクの実行を中断して第1タスクを選択することを更に含んでいてもよい。図26は実行中のタスクの中断を含む制御手順を例示するフローチャートである。図26は、制御手順のうち、選択済タスクの実行を開始した後、タスクの完了通知を出力するまでの手順を示している。
図26に示すように、ローカルコントローラ100は、まずステップS41,S42,S43を実行する。ステップS41では、制御部116が、ステップS16と同様に、管轄ローカル機器2に、選択済タスクのうち1制御周期分を実行させる。ステップS42では、ステータス出力部117が、管轄ローカル機器2のステータス情報を上位コントローラ200に出力する。ステップS43では、選択済タスクの実行が完了したか否かを制御部116が確認する。
ステップS43において選択済タスクの実行が完了していないと判定した場合、ローカルコントローラ100はステップS44,S45,S46を実行する。ステップS44では、環境情報取得部114が、環境情報格納部221に格納された環境情報を取得する。ステップS45では、選択部115が、1以上の次タスクのそれぞれの実行条件と、環境情報格納部221の環境情報とに基づいて、1以上の次タスクのそれぞれの実行可否を確認する。例えば選択部115は、1以上の次タスクのそれぞれの実行可否条件を環境情報が満たしているかを確認する。ステップS46では、実行可の次タスクが存在するか否かを選択部115が確認する。以下、実行可の次タスクを「入替候補タスク」という。
ステップS46において実行可の次タスクが存在すると判定した場合、ローカルコントローラ100はステップS47を実行する。ステップS47では、入替候補タスクの優先度が、実行中のタスクの優先度より高いか否かを選択部115が確認する。
ステップS47において入替候補タスクの優先度が実行中のタスクの優先度より高いと判定した場合、ローカルコントローラ100はステップS48を実行する。ステップS48では、選択部115が、選択済タスクの実行を中断させ、選択部115に入替候補タスクを選択させることで、選択済タスクの完了後に選択部115に入替候補タスクを選択させるよりも複数のプロセスの実行時間が短縮され得るかを確認する。以下、選択済タスクの実行を中断させ、選択部115に入替候補タスクを選択させる場合を「第1ケース」という。選択済タスクの完了後に選択部115に入替候補タスクを選択させる場合を「第2ケース」という。第1ケースによれば、第2ケースに比べ複数のプロセスの実行時間が短縮され得るかの簡易的な確認手法として、選択部115は、選択済タスクの残り時間が所定の閾値を超えているかを確認してもよい。
ステップS48において、第1ケースによっても、第2ケースに比べ複数のプロセスの実行時間が短縮され得ると言えないと判定した場合、ローカルコントローラ100は処理をステップS42に戻す。例えば、選択済タスクの残り時間が所定の閾値以下である場合、ローカルコントローラ100は処理をステップS42に戻す。ステップS46において実行可の次タスクが存在しないと判定した場合、及びステップS47において入替候補タスクの優先度が実行中のタスクの優先度より高くないと判定した場合も、ローカルコントローラ100は処理をステップS42に戻す。以後、より優先度の高い次タスクが実行可とならない限り、選択済タスクが完了まで遂行される。
ステップS43において選択済タスクの実行が完了したと判定した場合、ローカルコントローラ100はステップS49を実行する。ステップS49では、ステータス出力部117が、選択済タスクの完了通知をステータス情報に含めて上位コントローラ200に出力する。
ステップS48において、第1ケースによれば、第2ケースに比べ複数のプロセスの実行時間が短縮され得ると判定した場合、ローカルコントローラ100はステップS51,S52,S53,S54,S55を実行する。ステップS51では、中断部122が、実行中のタスクを制御部116に中断させる。中断部122は、制御部116により管轄ローカル機器2を中断したタスクの開始前の状態に戻させてもよい。ステップS52では、中断部122が、選択部115に、入替候補タスクを選択させる。以下、入替候補タスクを「入替済タスク」という。
ステップS53では、制御部116が、管轄ローカル機器2に、入替済タスクのうち1制御周期分を実行させる。ステップS54では、ステータス出力部117が、管轄ローカル機器2のステータス情報を上位コントローラ200に出力する。ステップS55では、入替済タスクの実行が完了したか否かを制御部116が確認する。
ステップS55において入替済タスクの実行が完了していないと判定した場合、ローカルコントローラ100は処理をステップS53に戻す。以後、選択済タスクの実行が完了するまで、ローカルコントローラ100は所定周期の制御サイクルにてステップS53〜S55を繰り返す。制御サイクルは、上記同期通信サイクルと同期していてもよい。
ステップS55において入替済タスクの実行が完了したと判定した場合、ローカルコントローラ100はステップS56を実行する。ステップS56では、ステータス出力部117が、入替済タスクの完了通知をステータス情報に含めて上位コントローラ200に出力する。以上で、タスクの完了通知までの手順が完了する。
(データ管理手順)
データ管理装置300が実行するデータ管理手順は、対比手順と、プログラム生成手順と、調整手順と、環境情報更新手順とに大別される。以下、対比手順と、プログラム生成手順と、調整手順とをそれぞれ詳細に例示する。
(対比手順)
対比手順は、リアル情報の収集手順と、バーチャル情報の収集手順と、乖離タスクの抽出手順とを含む。図27は、リアル情報の収集手順を例示するフローチャートである。図27に示すように、データ管理装置300は、ステップS61,S62,S63,S64を順に実行する。ステップS61では、上位コントローラ200が生産オーダに応じたプロセスの実行を開始するのをリアル情報収集部312が待機する。
ステップS62では、リアル情報収集部312が、ローカルコントローラ100による複数のタスクそれぞれの実行状況を表すリアル実行状況情報をプロセス格納部214から取得し、リアル情報データベース313に蓄積する。例えばリアル情報収集部312は、第1タイムラインにおける複数のタスクのそれぞれの実行開始時刻及び実行完了時刻を含むリアル実行状況情報を収集する。また、リアル情報収集部312は、上記リアル制御信号を含む環境情報を環境情報格納部221から取得し、リアル情報データベース313に蓄積する。
ステップS63では、進捗表示部324が、リアル情報収集部312が取得したリアル実行状況情報に基づいて、生産システム1が実行中のタスクを表示部に表示させる。ステップS64では、上位コントローラ200によるプロセスの実行が完了したかをリアル情報収集部312が確認する。
ステップS64において上位コントローラ200によるプロセスの実行が完了していないと判定した場合、データ管理装置300は処理をステップS62に戻す。以後、データ管理装置300は、上位コントローラ200によるプロセスの実行が完了するまで、リアル実行状況情報及び環境情報の取得・蓄積と、実行中のタスクの表示とを繰り返す。ステップS64において上位コントローラ200によるプロセスの実行が完了したと判定した場合、リアル情報の収集手順が完了する。
図28は、バーチャル情報の収集手順を例示するフローチャートである。データ管理装置300は、ステップS71,S72,S73を順に実行する。ステップS71では、バーチャル上位コントローラ500が生産オーダに応じたプロセスの実行を開始するのをバーチャル情報収集部314が待機する。
ステップS72では、バーチャル情報収集部314が、バーチャルローカルコントローラ400による複数のタスクそれぞれの実行状況を表すバーチャル実行状況情報をプロセス格納部514から取得し、バーチャル情報データベース315に蓄積する。例えばバーチャル情報収集部314は、第2タイムラインにおける複数のタスクのそれぞれの実行開始時刻及び実行完了時刻を含むバーチャル実行状況情報を収集する。また、バーチャル情報収集部314は、上記バーチャル制御信号を含むバーチャル環境情報を環境情報格納部521から取得し、バーチャル情報データベース315に蓄積する。ステップS73では、バーチャル上位コントローラ500によるプロセスの実行が完了したかをバーチャル情報収集部314が確認する。
ステップS73においてバーチャル上位コントローラ500によるプロセスの実行が完了していないと判定した場合、データ管理装置300は処理をステップS72に戻す。以後、データ管理装置300は、バーチャル上位コントローラ500によるプロセスの実行が完了するまで、バーチャル実行状況情報及びバーチャル環境情報の取得・蓄積を繰り返す。ステップS73においてバーチャル上位コントローラ500によるプロセスの実行が完了したと判定した場合、バーチャル情報の収集手順が完了する。
図29は、乖離タスクの抽出手順を例示するフローチャートである。データ管理装置300は、まずステップS81,S82,S83を実行する。ステップS81では、タスク比較部316が、プロセスにおける最初のタスクを選択する。以下、タスク比較部316が選択したタスクを「比較対象タスク」という。ステップS82では、タスク比較部316が、比較対象タスクのリアル実行状況情報をリアル情報データベース313から抽出し、比較対象タスクのバーチャル実行状況情報をバーチャル情報データベース315から抽出し、抽出したリアル実行状況情報とバーチャル実行状況情報とを比較する。ステップS83では、タスク比較部316が、抽出したリアル実行状況情報と、抽出したバーチャル実行状況情報とに乖離があるか否かを確認する。
ステップS83において抽出したリアル実行状況情報と、抽出したバーチャル実行状況情報とに乖離があると判定した場合、データ管理装置300はステップS84を実行する。ステップS84では、タスク比較部316が、比較対象タスクを乖離タスクの抽出結果に追加する。
次に、データ管理装置300は、ステップS85を実行する。ステップS83において、抽出したリアル実行状況情報と、抽出したバーチャル実行状況情報とに乖離がないと判定した場合、データ管理装置300は、ステップS84を実行することなくステップS85を実行する。ステップS85では、タスク比較部316が、プロセスの全タスクについて、リアル実行状況情報とバーチャル実行状況情報との比較が完了したかを確認する。
ステップS85においてリアル実行状況情報とバーチャル実行状況情報との比較が完了していないタスクがプロセスに残っていると判定した場合、データ管理装置300は、ステップS886を実行する。ステップS86では、タスク比較部316が、プロセスから次の比較対象タスクを選択する。その後、データ管理装置300は処理をステップS82に戻す。以後、全タスクの比較が完了するまで、タスクごとにリアル実行状況情報とバーチャル実行状況情報とを比較することが繰り返される。
ステップS85においてプロセスの全タスクについて、リアル実行状況情報とバーチャル実行状況情報との比較が完了したと判定した場合、乖離タスクの検出手順が完了する。
データ管理装置300が実行する対比手順は、図30に例示する実行状況の対比表示手順を更に含んでもよい。この場合、データ管理装置300は、ステップS91,S92,S93を順に実行する。ステップS91では、状況対比表示部317が、リアル情報収集部312が収集した複数のタスクそれぞれのリアル実行状況情報と、バーチャル情報収集部314が収集した複数のタスクそれぞれのバーチャル実行状況情報とをタスクごとに対比する対比表示画面を生成する。この対比表示画面は、複数のタスクごとのリアル実行状況情報及びバーチャル実行状況情報の表示形態を定めるスタイルデータを含む。
ステップS92では、表示形態変更部318が、上記スタイルデータにおける1以上の乖離タスクの表示形態を、他のタスクの表示形態と変更する。ステップS93では、状況対比表示部317が、表示形態変更部318によりスタイルデータが変更された対比表示画面を表示部に表示させる。以上で実行状況の対比表示手順が完了する。
対比手順は、図31に例示する制御信号の抽出手順を更に含んでもよい。図31に示すように、データ管理装置300は、まずステップS101,S102,S103,S104を実行する。ステップS101では、リアル信号抽出部321が、タスク比較部316が抽出した1以上の乖離タスクから最初の乖離タスクを選択する。以下、選択された乖離タスクを「選択済乖離タスク」という。
ステップS102では、リアル信号抽出部321が、選択済乖離タスクに対応するリアル制御信号をリアル情報データベース313から抽出する。ステップS103では、バーチャル信号抽出部322が、選択済乖離タスクに対応するバーチャル制御信号をバーチャル情報データベース315から抽出する。ステップS104では、リアル信号抽出部321が、1以上の乖離タスクの全てについて、リアル制御信号及びバーチャル制御信号の抽出が完了したか否かを確認する。
ステップS104においてリアル制御信号及びバーチャル制御信号の抽出が行われていない乖離タスクが残っていると判定した場合、データ管理装置300はステップS105を実行する。ステップS105では、リアル信号抽出部321が、1以上の乖離タスクから次の乖離タスクを選択する。その後、データ管理装置300は処理をステップS102に戻す。以後、1以上の乖離タスクの全てについて、リアル制御信号及びバーチャル制御信号の抽出が完了するまで、データ管理装置300はリアル制御信号及びバーチャル制御信号の抽出を繰り返す。ステップS104において1以上の乖離タスクの全てについて、リアル制御信号及びバーチャル制御信号の抽出が完了したと判定した場合、制御信号の抽出手順が完了する。
対比手順は、図32に例示する制御信号の対比表示手順を更に含んでもよい。図32に示すように、データ管理装置300は、ステップS111,S112,S113を順に実行する。ステップS111では、信号対比表示部323が、入力デバイス396に対するユーザ入力等に基づいて、1以上の乖離タスクのいずれかを選択する。例えば信号対比表示部323は、実行状況の対比表示画面において、強調表示された乖離タスクを選択する入力に基づいて、1以上の乖離タスクのいずれかを選択する。以下、選択された乖離タスクを「表示対象乖離タスク」という。
ステップS112では、信号対比表示部323が、表示対象乖離タスクに対応付けてリアル信号抽出部321が抽出したリアル制御信号と、表示対象乖離タスクに対応付けてバーチャル信号抽出部322が抽出したバーチャル制御信号とを制御信号の種別ごとに対比表示する信号対比表示画面を生成する。ステップS113では、信号対比表示部323が、信号対比表示画面を表示部に表示させる。以上で制御信号の対比表示手順が完了する。
(プログラム生成手順)
図33に示すように、データ管理装置300は、ステップS121,S122,S123,S124,S125,S126,S127を順に実行する。ステップS121では、プログラム取得部331が、各ローカルコントローラ100において、ティーチングにより登録されたワーキングタスクのタスクプログラム130を取得し、バーチャルローカルコントローラ400のタスクプログラム格納部411に記憶させる。ステップS122では、パラメータ取得部332が、各ローカルコントローラ100において、上記パラメータ保持部112が記憶する1以上のパラメータを取得し、バーチャルローカルコントローラ400のパラメータ保持部412に記憶させる。ステップS123では、プログラム生成部333が、プログラム取得部331が取得したワーキングタスクと、モデル格納部311が記憶するモデル情報とに基づいて上記1以上のエアカットタスクを生成し、タスクプログラム格納部411に記憶させる。
ステップS124では、プロセス割当部513が、生産オーダが指定するワーク9に対しプロセスを割り当ててプロセス格納部514に記憶させる。ステップS125では、データ管理装置300が、実行可否条件を生成する。ステップS125の具体的内容については後述する。ステップS126では、データ管理装置300が、優先度を生成する。ステップS126の具体的内容については後述する。ステップS127では、プログラム配信部335が、タスクプログラム格納部411の生成済みのプログラムを、対応するローカルコントローラ100に出力し、当該ローカルコントローラ100のタスクプログラム格納部111に記憶させる。以上でプログラム生成手順が完了する。
図34は、ステップS125における実行可否条件の生成手順を例示するフローチャートである。図34に示すように、データ管理装置300は、ステップS131,S132,S133,S134を順に実行する。ステップS131では、バーチャル上位コントローラ500及びバーチャルローカルコントローラ400が、タスクプログラム格納部411の複数のタスクプログラム130に基づいて、バーチャル空間における複数のタスクを複数のバーチャルローカル機器に実行させる。
ステップS132では、プログラム生成部333が、バーチャル情報データベース315に蓄積されたバーチャル環境情報に基づいて、バーチャルローカル機器同士の動作範囲の重複領域を抽出する。例えばプログラム生成部333は、第1バーチャルローカル機器の動作領域と、第2バーチャルローカル機器の動作領域との重複領域を算出する。
ステップS133では、プログラム生成部333が、重複領域に2以上のバーチャルローカル機器が同じ重複領域に入ることが無いように、複数のタスクのそれぞれの実行可否条件を生成する。例えば、第2バーチャルローカル機器が重複領域内に位置しないことを含むように第1バーチャルローカル機器のタスクの実行可否条件を生成し、第1バーチャルローカル機器が重複領域内に位置しないことを含むように第2バーチャルローカル機器のタスクの実行可否条件を生成する。ステップS134では、プログラム生成部333が、生成した実行可否条件を、対応するタスクのタスクプログラム130の条件ヘッダ131に登録する。以上で実行可否条件の生成手順が完了する。
図35は、ステップS126における優先度の生成手順を例示するフローチャートである。図35に示すように、データ管理装置300は、まずステップS141,S142,S143,S144を実行する。ステップS141では、プログラム生成部333が、複数のタスクのそれぞれの優先度を定める優先度組み合わせをランダムに仮決めし、仮決めした優先度組み合わせのそれぞれを対応するタスクプログラム130の条件ヘッダ131に登録する。ステップS142では、バーチャル上位コントローラ500及びバーチャルローカルコントローラ400が、タスクプログラム格納部411の複数のタスクプログラム130に基づいて、バーチャル空間における複数のタスクを複数のバーチャルローカル機器に実行させる。
ステップS143では、プログラム生成部333が、バーチャル情報データベース315に蓄積されたバーチャル実行状況情報に基づいて、複数のプロセスの実行時間を評価する。ステップS144では、優先度を変更し、複数のプロセスの実行時間を評価する試行の回数が所定回数に達したかを、プログラム生成部333が確認する。
ステップS144において、試行の回数が所定回数に達していないと判定した場合、データ管理装置300はステップS145を実行する。ステップS145では、プログラム生成部333が、優先度組み合わせをランダムに変更し、変更した優先度組み合わせのそれぞれを対応するタスクプログラム130の条件ヘッダ131に登録する。その後、ローカルコントローラ100は処理をステップS142に戻す。以後、上記試行の回数が所定回数に達するまで、優先度組み合わせの変更と、複数のプロセスの実行時間の評価とが繰り返される。
ステップS144において試行の回数が所定回数に達したと判定した場合、データ管理装置300はステップS146を実行する。ステップS146では、プログラム生成部333が、上記試行において、複数のプロセスの実行時間が最も短くなった優先度組み合わせを採用し、採用した優先度組み合わせのそれぞれを対応するタスクプログラム130の条件ヘッダ131に登録する。以上で優先度の生成手順が完了する。
(調整手順)
図36に示すように、データ管理装置300は、ステップS151,S152,S153,S154,S155を順に実行する。ステップS151では、データ管理装置300が、上記対比手順を実行する。ステップS152では、データ管理装置300が、ステップS151の対比手順にて抽出されたリアル制御信号及びバーチャル制御信号の少なくとも一方に基づいて、複数のバーチャルローカル機器のモデルのパラメータを調整する。ステップS152の具体的な処理内容については後述する。ステップS153では、データ管理装置300が所定期間の経過を待機する。ステップS154では、データ管理装置300が上記対比手順を実行する。
ステップS155では、データ管理装置300が、ステップS154の対比手順にて抽出されたリアル制御信号及びバーチャル制御信号の少なくとも一方に基づいて、複数のローカルコントローラ100の制御パラメータ(パラメータ保持部112のパラメータ)を調整する。ステップS155の具体的な処理内容については後述する。以上で調整手順が完了する。
図37は、ステップS152におけるモデルのパラメータの調整手順を例示するフローチャートである。図37に示すように、データ管理装置300は、まずステップS161,S162,S163,S164を実行する。ステップS161では、バーチャル調整部341が、タスク比較部316が抽出した1以上の乖離タスクから最初の乖離タスクを選択する。以下、選択された乖離タスクを「バーチャル調整乖離タスク」という。
ステップS162では、バーチャル調整部341が、バーチャル調整乖離タスクに対応するリアル制御信号とバーチャル制御信号とに基づいて、リアル実行状況情報とバーチャル実行状況情報との乖離要因となったバーチャルローカル機器のモデル化誤差を導出する。
ステップS163では、バーチャル調整部341が、ステップS162で導出したモデル化誤差に基づいて、モデル格納部311が記憶するモデルのパラメータを修正する。ステップS164では、バーチャル調整部341が、1以上の乖離タスクの全てについて、モデルのパラメータの調整が完了したか否かを確認する。
ステップS164において、モデルのパラメータの調整が完了していない乖離タスクが残っていると判定した場合、データ管理装置300はステップS165を実行する。ステップS165では、バーチャル調整部341が、1以上の乖離タスクから次の乖離タスクを選択する。その後、データ管理装置300は処理をステップS161に戻す。以後、1以上の乖離タスクの全てについて、モデルの調整が完了するまで、データ管理装置300はモデルのパラメータの調整を繰り返す。ステップS164において1以上の乖離タスクの全てについて、モデルのパラメータの調整が完了したと判定した場合、モデルのパラメータの調整手順が完了する。
図38は、ステップS153における制御パラメータの調整手順を例示するフローチャートである。データ管理装置300は、まずステップS171,S172,S173を実行する。ステップS171では、リアル調整部342が、タスク比較部316が抽出した1以上の乖離タスクから最初の乖離タスクを選択する。以下、選択された乖離タスクを「リアル調整乖離タスク」という。
ステップS172では、リアル調整部342が、リアル調整乖離タスクに対応するリアル制御信号とバーチャル制御信号とに基づいて、リアル実行状況情報とバーチャル実行状況情報との乖離を縮小可能な制御パラメータを選択する。以下、選択した制御パラメータを「選択済み制御パラメータ」という。ステップS173では、リアル調整部342が、リアル調整乖離タスクに対応するリアル制御信号とバーチャル制御信号との差を、選択済み制御パラメータによって所望のレベルまで抑制できるか否かを確認する。
ステップS173において、リアル調整乖離タスクに対応するリアル制御信号とバーチャル制御信号との差を、選択済み制御パラメータによって所望のレベルまで抑制できると判定した場合、データ管理装置300はステップS174,S175を実行する。ステップS174では、リアル調整部342が、リアル調整乖離タスクに対応するリアル制御信号とバーチャル制御信号との差を所望のレベルまで抑制するように、選択済み制御パラメータを変更し、変更結果を対応するローカルコントローラ100のパラメータ保持部112に登録する。ステップS175では、1以上の乖離タスクの全てについて、制御パラメータの調整が完了したか否かを、リアル調整部342が確認する。
ステップS175において、制御パラメータの調整が完了していない乖離タスクが残っていると判定した場合、データ管理装置300はステップS176を実行する。ステップS176では、リアル調整部342が、1以上の乖離タスクから次の乖離タスクを選択する。その後、データ管理装置300は処理をステップS171に戻す。以後、1以上の乖離タスクの全てについて、制御パラメータの調整が完了するまで、データ管理装置300は制御パラメータの調整を繰り返す。
ステップS175において1以上の乖離タスクの全てについて、制御パラメータの調整が完了したと判定した場合、制御パラメータの調整手順が完了する。ステップS173において、リアル調整乖離タスクに対応するリアル制御信号とバーチャル制御信号との差を、選択済み制御パラメータによって所望のレベルまで抑制できないと判定した場合、データ管理装置300は、ステップS177,S178,S179を実行する。
ステップS177では、状態変化検出部343が、リアル調整乖離タスクに対応するリアル制御信号とバーチャル制御信号とに基づいて、バーチャルローカル機器2及び当該バーチャルローカル機器2が協働する装置の少なくとも一方の状態変化を検出する。ステップS178では、状態変化検出部343が、状態変化を検出したことを表示部に表示させる。
ステップS179では、再現部344が、状態変化検出部343が状態変化を検出したタスク(上記変化発生タスク)に対応するリアル制御信号に基づいて、変化発生タスクを実行する管轄ローカル機器2の動作を管轄バーチャルロボットに再現させる。例えば再現部344は、モデル格納部311が記憶するバーチャルローカル機器のモデルと、変化発生タスクに対応するリアル制御信号とに基づいて、変化発生タスクを実行するローカル機器2の動作の再現動画を生成し、表示部等に表示させる。その後、データ管理装置300は、制御パラメータの調整手順を中止する。
図39は、制御パラメータの調整手順の変形例を示すフローチャートである。このフローチャートにおいて、ステップS181〜S189は、ステップS171〜S179と同様である。図39の調整手順は、制御パラメータの調整が完了するステップS185の後に、ステップS191〜S193を更に有する。この調整手順において、データ管理装置300は、ステップS191,S192,S193を順に実行する。ステップS191では、パラメータ取得部332が変更後の制御パラメータをパラメータ保持部112から取得し、パラメータ保持部412に登録する。ステップS192では、データ管理装置300が、上記対比手順を実行する。ステップS193では、データ管理装置300が、ステップS152と同様の調整手順を実行する。付加されたステップS191〜S193によって、ローカル機器2の変化が、対応するバーチャルローカル機器のモデルのパラメータに反映される。
データ管理装置300が実行するデータ管理手順は、状態変化が検出された際の再現表示手順に加え、異常検出時の再現表示手順を更に含んでいてもよい。図40は再現表示手順を例示するフローチャートである。図40に示すように、データ管理装置300は、ステップS201,S202を順に実行する。ステップS201では、再現部344が、上位コントローラ200が発生するアラーム信号等に基づいて、管轄ローカル機器2及び管轄ローカル機器2が協働する装置の少なくとも一方の異常を異常検出部345が検出するのを待機する。ステップS202では、再現部344が、異常が発生した時点の前及び後の少なくとも一方の管轄ローカル機器2の動作を、リアル制御信号に基づいて管轄バーチャルローカル機器に再現させる。以上で再現表示手順が完了する。
(環境情報更新手順)
図41に示すように、データ管理装置300は、ステップS211,S212,S213,S214を順に実行する。ステップS211では、外部センサ5が検出したセンサ情報を、センサ情報処理部351が取得する。ステップS212では、センサ情報処理部351が、外部センサ5から取得したセンサ情報に対して、所定の処理を行う。ステップS213では、情報更新部352が、センサ情報処理部351の処理結果に基づいて、リアル情報データベース313における最新の環境情報を更新する。ステップS214では、リアル情報収集部312が、上記最新の環境情報の更新結果に合わせて、上位コントローラ200の環境情報格納部221の環境情報を更新する。以上で環境情報更新手順が完了する。
〔本実施形態の効果〕
以上に説明したように、生産システム1は、ワーク9に対する複数のタスクを含むプロセスと、当該プロセスの進捗情報とに基づいて、次タスクの実行指令を出力する指令出力部215と、環境情報を記憶する環境情報格納部221と、指令出力部215から出力された実行指令と、環境情報格納部221の環境情報とに基づいて、ロボット2B,2C,10に次タスクを実行させるローカルコントローラ100(ロボットコントローラ)と、ロボット2B,2C,10の動作に応じて、環境情報格納部221の環境情報を更新する環境更新部222と、を備える。
生産システム1によれば、次タスクの実行指令に加え、環境情報をローカルコントローラ100に提供することによって、環境情報に基づくロボット2B,2C,10の自律的なタスク遂行を容易に実現することができる。これにより、個々のタスクのロボット2B,2C,10による自律的な遂行を容易に実現することができる。このため、複数のタスクの進捗に基づいて次タスクの実行指令を出力し、ロボット2B,2C,10の動作に応じて環境情報を更新する簡素な処理によって、複数のタスクを適切な順序で容易に遂行させることができる。このため、ワーク9の生産計画の変化又は生産環境の変化に応じて、ロボット2B,2C,10に実行させる複数のタスクを容易に組み替えることができる。従って、生産システムの柔軟性向上に有効である。
生産システム1は、ロボット2B,2C,10による次タスクの実行状況に応じて、進捗情報を更新する進捗更新部216を更に備えていてもよい。この場合、次タスクの実行状況に応じて進捗情報を更新することによって、適切な進捗管理を継続することができる。
生産システム1は、上位生産管理システムからワーク9の生産オーダを取得するオーダ取得部212と、生産オーダが指定するワーク9に対しプロセスを割り当てるプロセス割当部213と、を更に備え、指令出力部215は、生産オーダが指定するワーク9に対しプロセス割当部213が割り当てたプロセスと、当該プロセスの進捗情報とに基づいて、次タスクの実行指令を出力してもよい。この場合、ワーク9に対するプロセスの割り当てがプロセス割当部213により行われ、プロセスの進捗に基づく次タスクの実行指令が指令出力部215により出力され、実行指令と環境情報とに基づいて次タスクがロボット2B,2C,10により順次実行される。このため、生産管理システムにおいては、生産オーダを生産システム1に割り振る簡素な処理によって生産を管理することができる。
ローカルコントローラ100は、複数のタスクのうち1以上のタスクごとに予め定められた1以上の実行条件を記憶するタスクプログラム格納部111(条件記憶部)と、タスクプログラム格納部111における次タスクの実行条件と、環境情報格納部221の環境情報とに基づいてロボット2B,2C,10に次タスクを実行させる制御部116と、を有していてもよい。この場合、環境情報と組み合わせて参照される実行条件を予め定めておくことにより、ロボット2B,2C,10による自律的な動作を、進捗管理に合わせて調節することができる。
プロセス割当部213は、オーダ取得部212が複数のワーク9の生産オーダを取得した場合に、当該複数のワーク9に対して複数のプロセスをそれぞれ割り当て、複数のプロセスのそれぞれが複数のタスクを含み、指令出力部215は、複数のプロセスごとの複数の進捗情報に基づいて、複数のプロセスごとに複数の次タスクの実行指令を出力し、ローカルコントローラ100は、複数の次タスクの実行指令を記憶する指令バッファ113と、タスクプログラム格納部111における複数の次タスクのそれぞれの実行条件と、環境情報格納部221の環境情報とに基づいて、指令バッファ113の複数の次タスクのいずれかを選択する選択部115と、を更に有し、制御部116は、選択部115が選択した次タスクをロボット2B,2C,10に実行させてもよい。この場合、複数のワーク9に対するタスクの選択もローカルコントローラ100に委ねることによって、複数のワーク9に対するタスクの進捗管理が更に簡素化される。従って、生産システムの柔軟性向上に更に有効である。
1以上の実行条件のそれぞれには、対応するタスクの優先度が含まれており、選択部115は、指令バッファ113の複数の次タスクのうち2以上の次タスクが実行可能である場合に、優先度が最も高い次タスクを選択してもよい。この場合、より適切な選択により、柔軟性と効率の両立を図ることが可能となる。
複数のタスクは、ロボット2B,2C,10の他の産業機械が実行するマシンタスクを含み、環境情報には、マシンタスクの完了時間に対応した待ち時間が含まれ、ローカルコントローラ100は、指令バッファ113の複数の次タスクが、マシンタスクが完了したら実行可能になる第1タスクと、すでに実行可能な第2タスクとを含む場合、第1タスク及び第2タスクの優先度と、待ち時間とに基づいて、選択部による次タスクの選択タイミングを調整する選択タイミング調節部121を更に有していてもよい。この場合、より適切な選択により、柔軟性と効率の両立を図ることが可能となる。
選択タイミング調節部121は、第1タスクの優先度が、第2タスクの優先度よりも高く、待ち時間が所定の閾値以下の場合、選択部による次タスクの選択タイミングを待ち時間の経過時以降にしてもよい。この場合、より適切な選択により、柔軟性と効率の両立を図ることが可能となる。
ローカルコントローラ100は、指令バッファ113の複数の次タスクが、第1タスクと、第1タスクよりも優先度の低い第2タスクとを含み、ロボット2B,2C,10による第2タスクの実行中に第1タスクが実行可能になった場合、制御部116に第2タスクを中断させ、選択部に第1タスクを選択させる中断部122を更に備えていてもよい。この場合、より適切な選択により、柔軟性と効率の両立を図ることが可能となる。
中断部122は、制御部116によりロボットを第2タスクの開始前の状態に戻させた後に、選択部115に第1タスクを選択させてもよい。この場合、第2タスクの実行中に第2ワークを解放することが困難な場合であっても、容易に第2タスクを中断させて第1タスクを優先することができる。
第1タスクは第1ワーク9Aの搬送を含み、第2タスクは第2ワーク9Bの搬送を含み、中断部122は、ロボット2B,2C,10による第2タスクの実行中に第1タスクが実行可能となった場合に、制御部116によりロボット2B,2C,10を第2ワーク9Bの搬送開始前の状態に戻させた後に、選択部115に第1タスクを選択してもよい。この場合、第2タスクの実行中に第2ワーク9Bを解放することが困難な場合であっても、容易に第2タスクを中断させて第1タスクを優先することができる。
中断部122は、制御部116に第2タスクの実行を中断させ、選択部115に第1タスクを選択させる場合に比較して、第2タスクの完了後に選択部115に第1タスクを選択させる方が複数のプロセスの実行時間が短縮される場合に、第2タスクを制御部116に中断させなくてもよい。この場合、より適切な選択により、柔軟性と効率の両立を図ることが可能となる。
生産システム1は、ロボット2B,2C,10に対応するバーチャルロボットのバーチャル空間における動作に基づいて、1以上の実行条件の少なくとも一部を生成するプログラム生成部333(実行条件生成部)を更に備えていてもよい。この場合、適切な実行条件を容易に生成することができる。
プログラム生成部333は、1以上の実行条件に基づいてバーチャルロボットが動作する場合の、バーチャル空間における複数のプロセスの実行時間を短縮するように、1以上の実行条件の少なくとも一部を変更してもよい。この場合、適切な実行条件を容易に生成することができる。
生産システム1は、プロセスと、バーチャル空間における当該プロセスの進捗情報とに基づいて、次タスクの実行指令を出力する指令出力部515(バーチャル指令出力部)と、バーチャル環境情報を記憶する環境情報格納部521(バーチャル環境情報格納部)と、指令出力部515から出力された実行指令と、環境情報格納部521のバーチャル環境情報とに基づいて、バーチャルロボットにバーチャル空間において次タスクを実行させるバーチャルローカルコントローラ400(バーチャルロボットコントローラ)と、バーチャルロボットの動作に応じて、環境情報格納部521のバーチャル環境情報を更新する環境更新部522(バーチャル環境更新部)と、を更に備えていてもよい。この場合、バーチャル空間において、よりリアル空間に近い条件でバーチャルロボットを動作させ、適切な実行条件を容易に生成することができる。
複数のタスクは、ロボット2Bが実行する第1ロボットタスクと、第2ロボット2Cが実行する第2ロボットタスクとを含み、プログラム生成部333は、バーチャルロボットと、第2ロボットに対応する第2バーチャルロボットとのバーチャル空間における衝突を避けるように、第1ロボットタスクの実行条件と第2ロボットタスクの実行条件とを生成してもよい。この場合、衝突回避のための実行条件を容易に生成することができる。
プログラム生成部333は、第1ロボットタスクを実行するバーチャルロボットの動作領域と、第2ロボットタスクを実行する第2バーチャルロボットの動作領域との重複領域を導出し、第2バーチャルロボットが重複領域内に位置しないことを含むように第1ロボットタスクの実行条件を生成し、バーチャルロボットが重複領域内に位置しないことを含むように第2ロボットタスクの実行条件を生成してもよい。この場合、衝突回避のための実行条件を更に容易に生成することができる。
以上、実施形態について説明したが、本開示は必ずしも上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々な変更が可能である。