(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-03
(45)【発行日】2024-07-11
(54)【発明の名称】制御システム、生産方法、及びプログラム
(51)【国際特許分類】
G05B 19/042 20060101AFI20240704BHJP
B25J 13/00 20060101ALI20240704BHJP
【FI】
G05B19/042
B25J13/00 Z
(21)【出願番号】P 2022021451
(22)【出願日】2022-02-15
【審査請求日】2022-12-21
(73)【特許権者】
【識別番号】000006622
【氏名又は名称】株式会社安川電機
(74)【代理人】
【識別番号】110000154
【氏名又は名称】弁理士法人はるか国際特許事務所
(72)【発明者】
【氏名】神谷 陽介
(72)【発明者】
【氏名】小畑 慎一朗
(72)【発明者】
【氏名】松永 彩
(72)【発明者】
【氏名】安田 恵
【審査官】大古 健一
(56)【参考文献】
【文献】特開2001-347428(JP,A)
【文献】特開2010-140359(JP,A)
【文献】特開2000-313517(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/04 -19/05
B25J 1/00 -21/02
(57)【特許請求の範囲】
【請求項1】
それぞれ複数の工程が実行されるべき複数の対象物に対して、前記複数の工程のうちの少なくとも1つの工程をそれぞれ他と独立して実行する複数の装置であり、前記複数の装置間において前記対象物を移動させる移動工程を実行する1以上のロボットを含む前記複数の装置を含む制御システムであって、
ユーザにより指定され、前記複数の工程のうちの少なくとも1つの工程の実行条件に関する設定として、前記工程の実行時間
が長いほど優先順位
が高くなり、前記実行時間が最も長い前記工程の前記優先順位が最も高い前記設定を保存する設定保存部と、
前記制御システムにおける現在の状況として、前記複数の工程のうち、前記優先順位が相対的に高い優先工程の実行状況を取得する状況取得部と、
前記設定と前記状況とに基づいて、1の前記対象物に対する前記優先工程が完了した場合に、前記優先工程を実行する前記装置から当該1の対象物を移動させ、他の前記対象物を当該装置に移動させるように、前記優先工程に関連した前記移動工程を、前記複数の工程の中で次に実行すべき工程として動的に決定し、前記複数の装置を制御する装置制御部と、
を有する制御システム。
【請求項2】
前記設定は、1の前記対象物に対する2以上の工程の実行順を含み、
前記2以上の工程の間に、前記移動工程があり、
前記装置制御部は、前記設定に基づいて、前記1の対象物に対しては、前記実行順で前記2以上の工程が実行されるように、前記ロボットの前記移動工程を、前記次に実行すべき工程として決定する、
請求項1に記載の制御システム。
【請求項3】
前記複数の工程のうちの1以上の後続工程の実行を待機する複数の前記対象物が配置されるバッファがあり、
前記装置制御部は、前記設定と前記状況とに基づいて、前記後続工程よりも前の先行工程が完了した場合に、前記対象物を前記バッファに移動させ、前記後続工程を実行する場合に、当該対象物を当該バッファから移動させるように、前記ロボットによる前記移動工程を、前記次に実行すべき工程として決定する、
請求項1又は2に記載の制御システム。
【請求項4】
前記設定は、前記バッファに配置可能な前記対象物の上限数であり、
前記状況は、前記制御システムにおいて、前記バッファに配置された前記対象物の現在の数であり、
前記装置制御部は、
前記現在の数が前記上限数に達した場合に、前記先行工程を、前記次に実行すべき工程として決定せず、
前記現在の数が前記上限数に達していない場合に、前記先行工程を、前記次に実行すべき工程として決定可能とする、
請求項3に記載の制御システム。
【請求項5】
前記装置制御部は、前記優先工程が完了した場合、前記優先工程に関連した前記移動工程を、前記優先順位が相対的に低い工程に関連した前記移動工程よりも優先して、前記次に実行すべき工程として決定する、
請求項1~4の何れかに記載の制御システム。
【請求項6】
前記制御システムは、
前記優先工程
が実行されるときに計測される計測時間が閾値以上であるか否かを判定する判定部と、
前記
計測時間が閾値以上であると判定された場合に、前記ユーザに通知する通知部と、
を含む請求項1~5の何れかに記載の制御システム。
【請求項7】
前記制御システムは、前記複数の工程を仮想的に実行するシミュレータを含み、
前記状況取得部は、前記シミュレータ上の前記状況を取得し、
前記装置制御部は、前記設定と、前記シミュレータ上の前記状況と、に基づいて、前記シミュレータにおいて前記次に実行すべき工程を動的に決定し、前記シミュレータを制御し、
前記制御システムは、前記シミュレータの実行結果を示すシミュレーション画面を表示させる表示制御部を有する、
請求項1~6の何れかに記載の制御システム。
【請求項8】
前記設定は、前記複数の装置の配置を示すレイアウトを含み、
前記シミュレータは、少なくとも前記レイアウトに基づいて、前記移動工程に要する移動時間を計算する、
請求項7に記載の制御システム。
【請求項9】
前記制御システムは、前記シミュレータの実行結果を記憶する結果記憶部を含み、
前記表示制御部は、前記ユーザにより前記設定が変更された場合に、前記結果記憶部に記録された前記実行結果に基づいて、変更前の前記設定に応じたシミュレータの結果と、変更後の前記設定に応じたシミュレータの結果と、を前記シミュレーション画面において比較可能に表示させる、
請求項7又は8に記載の制御システム。
【請求項10】
前記表示制御部は、前記シミュレーション画面における時間軸を有するチャート上に、シミュレーションにおける各工程の開始時間及び終了時間を示す工程画像を表示させる、
請求項7~9の何れかに記載の制御システム。
【請求項11】
前記設定は、少なくとも1の前記工程の実行時間を含み、
前記シミュレータは、前記少なくとも1の工程についての仮想的な実行として、前記実行時間に応じたタイマ処理を実行する、
請求項7~10の何れかに記載の制御システム。
【請求項12】
前記少なくとも1の工程の前記実行時間は、所定の最小時間の整数倍の時間であり、
前記シミュレータは、前記少なくとも1の工程の前記実行時間を前記最小時間で割った値に、前記複数の装置を制御するための制御プログラムの処理周期を示すスキャンタイムの最小値を乗じた値に基づいて、前記タイマ処理を実行する、
請求項11に記載の制御システム。
【請求項13】
前記表示制御部は、前記シミュレータの実行結果をアニメーションとして表示させ、
前記表示制御部は、前記複数の工程のうちの少なくとも1の工程については、前記アニメーションの再生速度を遅くする、
請求項7~12の何れかに記載の制御システム。
【請求項14】
前記設定は、前記複数の工程のうちの少なくとも1の工程の実行に要する実行時間であり、
前記状況は、前記制御システムにおいて、前記少なくとも1の工程の実行が開始された開始時点であり、
前記装置制御部は、前記実行時間と、前記開始時点と、に基づいて、前記次に実行すべき工程を決定する、
請求項1~13の何れかに記載の制御システム。
【請求項15】
前記制御システムは、前記少なくとも1の工程に要した時間の実測値を取得する実測値取得部を更に有し、
前記装置制御部は、前記実測値が取得された場合には、前記ユーザにより指定された前記実行時間に変えて、前記実測値に基づいて、前記次に実行すべき工程を決定する、
請求項14に記載の制御システム。
【請求項16】
前記少なくとも1の工程は、所定の場所に取り付けられた前記対象物に対して実行される工程であり、
前記装置制御部は、前記制御システムにおける現在の時点と前記開始時点との差が前記実行時間以上であることを条件として、前記少なくとも1の工程が完了した前記対象物を前記所定の場所から取り出す前記移動工程を実行可能とする、
請求項14又は15に記載の制御システム。
【請求項17】
前記複数の工程は、前記移動工程に関連する段取り工程を含み、
前記装置制御部は、前記設定と前記状況とに基づいて、前記対象物に対する工程の実行状況に応じて、当該対象物の前記移動工程の前に、前記段取り工程を、前記次に実行すべき工程に決定する、
請求項1~16の何れかに記載の制御システム。
【請求項18】
それぞれ複数の工程が実行されるべき複数の対象物に対して、前記複数の工程のうちの少なくとも1つの工程をそれぞれ他と独立して実行する複数の装置であり、前記複数の装置間において前記対象物を移動させる移動工程を実行する1以上のロボットを含む前記複数の装置により生産される前記複数の対象物の生産方法であって、前記複数の装置を制御する制御装置が、
ユーザにより指定され、前記複数の工程のうちの少なくとも1つの工程の実行条件に関する設定として、前記工程の実行時間
が長いほど優先順位
が高くなり、前記実行時間が最も長い前記工程の前記優先順位が最も高い前記設定を保存し、
前記複数の装置における現在の状況として、前記複数の工程のうち、前記優先順位が相対的に高い優先工程の実行状況を取得し、
前記設定と前記状況とに基づいて、1の前記対象物に対する前記優先工程が完了した場合に、前記優先工程を実行する前記装置から当該1の対象物を移動させ、他の前記対象物を当該装置に移動させるように、前記優先工程に関連した前記移動工程を、前記複数の工程の中で次に実行すべき工程として動的に決定し、前記複数の装置を制御する、
生産方法。
【請求項19】
それぞれ複数の工程が実行されるべき複数の対象物に対して、前記複数の工程のうちの少なくとも1つの工程をそれぞれ他と独立して実行する複数の装置であり、前記複数の装置間において前記対象物を移動させる移動工程を実行する1以上のロボットを含む前記複数の装置を制御する制御装置を、
ユーザにより指定され、前記複数の工程のうちの少なくとも1つの工程の実行条件に関する設定として、前記工程の実行時間
が長いほど優先順位
が高くなり、前記実行時間が最も長い前記工程の前記優先順位が最も高い前記設定を保存する設定保存部、
前記複数の装置を含む制御システムにおける現在の状況として、前記複数の工程のうち、前記優先順位が相対的に高い優先工程の実行状況を取得する状況取得部、
前記設定と前記状況とに基づいて、1の前記対象物に対する前記優先工程が完了した場合に、前記優先工程を実行する前記装置から当該1の対象物を移動させ、他の前記対象物を当該装置に移動させるように、前記優先工程に関連した前記移動工程を、前記複数の工程の中で次に実行すべき工程として動的に決定し、前記複数の装置を制御する装置制御部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、制御システム、生産方法、及びプログラムに関する。
【背景技術】
【0002】
特許文献1には、複数の対象物の各々に対して複数の工程の各々が順番に実行されるシステムの複数の装置を制御するPLC(Programmable Logic Controller)の動作をラダーチャートに記述してプログラムを作成し、作成されたプログラムに基づいて、PLCが1以上の装置を制御する技術が記載されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示が解決しようとする課題は、例えば、制御システムの稼働効率を高めることである。
【課題を解決するための手段】
【0005】
本開示の一側面に係る制御システムは、それぞれ複数の工程が実行されるべき複数の対象物に対して、前記複数の工程のうちの少なくとも1つの工程をそれぞれ他と独立して実行する複数の装置を含む制御システムであって、ユーザにより指定され、前記複数の工程のうちの少なくとも1つの工程の実行条件に関する設定を保存する設定保存部と、前記制御システムにおける現在の状況を取得する状況取得部と、前記設定と前記状況とに基づいて、前記複数の工程の中で次に実行すべき工程を動的に決定し、前記複数の装置を制御する装置制御部と、を有する。
【発明の効果】
【0006】
本開示によれば、例えば、制御システムの稼働効率が高まる。
【図面の簡単な説明】
【0007】
【
図1】制御システムの全体構成の一例を示す図である。
【
図2】制御システムにおける各装置の配置の一例を示す図である。
【
図3】個々の対象物に対して実行される工程の一例を示す図である。
【
図4】問題点1(対象物の行き先が埋まっている)の説明図である。
【
図5】制御システムで実現される機能を示す機能ブロック図である。
【
図9】制御システムで実行される処理の一例を示すフロー図である。
【
図10】問題点2(工程の優先順位を付けられない)の説明図である。
【
図11】第2実施形態における機能ブロック図の一例を示す図である。
【
図12】シミュレーション画面の一例を示す図である。
【
図13】簡易的なシミュレーションの実現方法の一例を示す図である。
【
図14】シミュレーション画面においてチャートの表示が変化する様子の一例を示す図である。
【
図15】第3実施形態における機能ブロック図である。
【
図16】問題点3(終了時間を考慮していない)の説明図である。
【
図17】第4実施形態における機能ブロック図である。
【
図18】ハンドの交換を考慮する場合に実行される工程の一例を示す図である。
【発明を実施するための形態】
【0008】
[1.第1実施形態]
第1実施形態に係る制御システム等を詳細に説明する。
【0009】
[1-1.制御システムの全体構成]
図1は、制御システムの全体構成の一例を示す図である。
図1に示すように、第1実施形態の制御システム1は、上位制御装置10、ロボットコントローラ20、第1装置30、第2装置40、第3装置50、第4装置60、及びエンジニアリング装置70を含み、これらの各装置は通信可能に接続される。第1実施形態では、各装置がEthernet(登録商標)等の一般的なネットワークで接続される場合を説明するが、各装置は、任意のネットワークにより接続可能である。例えば、各装置は、産業用ネットワーク(いわゆるフィールドネットワークを含む)により接続されてもよい。
【0010】
上位制御装置10は、制御システム1全体を制御する装置である。制御システム1全体を、ラインよりも小さな単位であるセルと呼ぶ場合、上位制御装置10は、セルコントローラと呼ばれることがある。CPU11は、少なくとも1つのプロセッサを含む。CPU11は、circuitryの一種である。記憶部12は、RAMなどの揮発性メモリと、フラッシュメモリなどの不揮発性メモリと、の少なくとも一方を含む。記憶部12は、プログラム及びデータを記憶する。通信部13は、有線通信用の通信インタフェースと、無線通信用の通信インタフェースと、の少なくとも一方を含む。
【0011】
ロボットコントローラ20は、ロボット24を制御する装置である。CPU21、記憶部22、及び通信部23の物理的構成は、それぞれCPU11、記憶部12、及び通信部13と同様であってよい。例えば、ロボット24は、アーム、ハンド、モータ、及びセンサを含む。ロボット24は、ロボットコントローラ20と電力線及び通信線によって接続される。
【0012】
第1装置30、第2装置40、第3装置50、及び第4装置60は、上位制御装置10により制御される装置である。例えば、第1装置30、第2装置40、第3装置50、及び第4装置60の各々は、モータ制御装置、モーションコントローラ、ロボットコントローラ、加工装置、計測装置、又は検査装置である。CPU31,41,51,61、記憶部32,42,52,62、及び通信部33,43,53,63の物理的構成は、それぞれCPU11、記憶部12、及び通信部13と同様であってよい。
【0013】
エンジニアリング装置70は、ユーザが操作する装置である。例えば、エンジニアリング装置70は、パーソナルコンピュータ、スマートフォン、又はタブレット端末である。CPU71、記憶部72、及び通信部73の物理的構成は、それぞれCPU11、記憶部12、及び通信部13と同様であってよい。操作部74は、マウス又はキーボードなどの入力デバイスである。表示部75は、液晶ディスプレイ又は有機ELディスプレイである。
【0014】
なお、記憶部12,22,32,42,52,62,72の各々に記憶されるものとして説明するプログラム及びデータは、ネットワークを介して供給されてもよい。また、各装置のハードウェア構成は、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、光ディスクドライブやメモリカードスロット)や外部機器と直接的に接続するための入出力部(例えば、USB端子)が含まれてもよい。この場合、情報記憶媒体に記憶されたプログラムが、読取部又は入出力部を介して供給されてもよい。他にも例えば、FPGA又はASICと呼ばれる回路が含まれてもよい。FPGA又はASICがcircuitryに相当してもよい。
【0015】
[1-2.制御システムの概要]
制御システム1は、それぞれ複数の工程が実行されるべき複数の対象物に対して、複数の工程のうちの少なくとも1つの工程をそれぞれ他と独立して実行する複数の装置を含む。第1実施形態では、ロボットコントローラ20、ロボット24、第1装置30、第2装置40、第3装置50、及び第4装置60は、複数の装置の一例である。第1実施形態では、これら6台の装置が制御システム1に含まれる場合を説明するが、制御システム1に含まれる装置の数は、任意の数であってよく、例えば、2-5台又は7台以上であってもよい。
【0016】
工程とは、対象物に対する作業である。工程は、個々の装置の物理的な動作ということもできる。工程自体は、任意の種類であってよく、例えば、移動工程、加工工程、計測工程、洗浄工程、搬送工程、又は検査工程であってもよい。第1実施形態では、ロボットコントローラ20及びロボット24は、移動工程を実行する。第1装置30は、計測工程を実行する。第2装置40及び第3装置50の各々は、加工工程を実行する。第4装置は、洗浄工程を実行する。
【0017】
対象物は、工程の対象となる物である。対象物は、ワークと呼ばれることもある。対象物は、最終的に生産される製品、中間的な生成物、素材、又は原料の何れであってもよい。対象物自体は、任意の種類であってよく、例えば、半導体、電化製品、自動車、食品、飲料、医薬品、又は日用品である。第1実施形態では、1の対象物に対する複数の工程の順序は、予め定められているものとする。
【0018】
制御システム1では、複数の工程が同時並行で実行される。例えば、対象物Aに対する全ての工程が完了した後に対象物Bに対する最初の工程が開始されるのではなく、対象物Aに対する工程Xと、対象物Bに対する工程Yと、が同時並行で実行されることがある。同時並行して実行される工程の数は、2つに限られず、3つ以上であってもよい。なお、常に複数の工程が同時並行して実行されなければならないわけではなく、1つの工程だけが実行される状態、又は、どの工程も実行されない状態が存在してもよい。制御システム1の稼働中に、複数の工程が同時並行して実行される期間が存在すればよい。
【0019】
図2は、制御システム1における各装置の配置の一例を示す図である。
図2では、上位制御装置10、ロボットコントローラ20、及びエンジニアリング装置70は省略する。例えば、ロボット24を中心として反時計回りの順番に、第1置場P1、第1装置30、第2装置40、第2置場P2、第3置場P3、第3装置50、第4装置60、及び第4置場P4の各々が配置される。なお、各装置は、任意の配置であってよく、
図2の例に限られない。
【0020】
第1置場P1-第4置場P4は、何らかの物を置く場所である。例えば、第1置場P1には、最初の工程が実行される前の対象物が配置される。第2置場P2には、ロボット24に装着可能な1以上のハンドが配置される。第3置場P3には、加工工程が完了した対象物が配置される。第3置場P3は、次の加工工程を待機する対象物が配置される場所ということもできる。第4置場P4には、全ての工程が完了した対象物が配置される。
【0021】
第1実施形態では、第1置場P1、第3置場P3、及び第4置場P4の各々は、対象物を配置可能なスペースが限られているものとする。例えば、第1置場P1及び第4置場P4の各々には、対象物を20個まで配置可能である。例えば、第3置場P3には、対象物を6個まで配置可能である。第1置場P1、第3置場P3、及び第4置場P4の各々に配置可能な対象物の数は、第1実施形態の例に限られず、任意の数であってよい。
【0022】
図3は、個々の対象物に対して実行される工程の一例を示す図である。第1実施形態では、対象物に対し、2段階の加工工程が実行される場合を説明する。第2装置40は、1つ目の加工工程として、対象物の右半分を加工する。第3装置50は、2つ目の加工工程として、対象物の左半分を加工する。ロボット24を中心として反時計回りに移動する個々の対象物に対し、
図3の各工程が実行される。
【0023】
段取り工程は、他の工程の準備に相当する工程である。例えば、段取り工程は、第1置場P1に対し、対象物を入庫する入庫工程を含む。入庫工程は、ロボット24により行われてもよいし、搬送用ロボットなどの周辺装置により行われてもよい。段取り工程は、第2置場P2に配置されたハンドをロボット24に装着させる装着工程といった他の工程を含んでもよい。
【0024】
第1大工程-第3大工程は、比較的時間を要する工程である。例えば、第1大工程は、ロボット24が第1置場P1から第1装置30に対象物を移動させる移動工程と、第1装置30が対象物の計測を行う計測工程と、を含む。第2大工程は、ロボット24が第1装置30から第2装置40に対象物を移動させる移動工程と、第2装置40が対象物の右半分を加工する加工工程と、を含む。
【0025】
第2大工程と第3大工程の間には、内段取り工程が実行される。内段取り工程は、原則として少なくとも1つの装置を停止させて行う内段取りが実行される工程である。例えば、ロボット24にハンドを装着させること、周辺治具を交換すること、又は部品を供給することは、内段取り工程に相当する。第1実施形態の内段取り工程は、ロボット24が第2装置40から第3置場P3に対象物を移動させる移動工程も含むものとする。この移動工程は、第3大工程に含まれてもよい。
【0026】
例えば、第3大工程は、ロボット24が第3置場P3から第3装置50に対象物を移動させる移動工程と、第3装置50が対象物の左半分を加工する加工工程と、を含む。終了工程は、ロボット24が第3装置50から第4装置60に対象物を移動させる移動工程、第4装置60が対象物を洗浄する洗浄工程、及びロボット24が第4装置60から第4置場P4に対象物を移動させる移動工程を含む。終了工程は、搬送用ロボットなどの周辺装置が第4置場P4から対象物を搬出する搬出工程を含んでもよい。
【0027】
複数の工程が同時並行で実行される制御システム1では、タスク調停として、「SourceがComplete、かつ、DestinationがReadyであればタスクを実行する」といった定義が考えられる。Sourceは、タスクに対応する工程の1つ前の工程であり、Destinationは、タスクに相当する工程の1つ後の工程である。即ち、タスク調停として、ある工程を実行する条件として、前工程の実行が完了し、かつ、後工程が準備できていることを設定することが考えられる。
【0028】
しかしながら、上記のようなタスク調停をすると、種々の問題が発生する可能性がある。例えば、(問題点1)対象物の行き先が埋まっていること、(問題点2)工程の優先順位を付けられないこと、(問題点3)工程の終了時間を考慮していないこと、及び(問題点4)複数の工程を同時実行できないこと、が挙げられる。これらの問題が発生すると、制御システム1における稼働効率が低下する。第1実施形態では、問題点1を解決する構成を説明し、問題点2-4を解決する構成は、他の実施形態及び変形例で説明する。
【0029】
図4は、問題点1(対象物の行き先が埋まっている)の説明図である。
図4の例では、13個の対象物が存在し、個々の対象物を円で示す。円内の数値は、第1置場P1から取り出される順番である。第1置場P1に搬入された13個の対象物は、第1置場P1から1つずつ順番に取り出され、次々と各工程が実行される。
【0030】
一般的に、加工工程に要する時間は、他の工程に要する時間に比べて非常に長い。第3装置50の加工工程に非常に時間を要したとすると、第3置場P3には、対象物が溜まりやすい。例えば、第3置場P3に配置可能な対象物の上限数が6個だったとすると、
図4の状態では、これ以上の対象物を第3置場P3に配置できない。
図4の状態で、10個目の対象物が第2装置40から取り出されると、第3置場P3に配置された4個目-9個目の対象物に接触する可能性がある。この場合、制御システム1はエラーが検知されて動作が停止し、稼働効率が低下する。
【0031】
そこで、上位制御装置10は、第3置場P3に配置された対象物の数をカウントし、第2装置40から第3置場P3への移動工程を実行するか否かを判定する。上位制御装置10は、カウントした対象物の数が6個未満(5個以下)であることを条件として、この移動工程を実行することによって、問題点1(対象物の行き先が埋まっている)を解決するようにしている。以降、第1実施形態の制御システム1の詳細を説明する。
【0032】
[1-3.制御システムで実現される機能]
図5は、制御システム1で実現される機能を示す機能ブロック図である。第1実施形態では、上位制御装置10、ロボットコントローラ20、第1装置30、第2装置40、第3装置50、第4装置60、及びエンジニアリング装置70の各々で実現される機能について説明する。
【0033】
[1-3-1.上位制御装置で実現される機能]
図5に示すように、上位制御装置10は、データ記憶部100、設定保存部101、状況取得部102、及び装置制御部103を含む。データ記憶部100は、記憶部12を主として実現される。設定保存部101、状況取得部102、及び装置制御部103の各々は、CPU11を主として実現される。
【0034】
[データ記憶部]
データ記憶部100は、ロボットコントローラ20などの複数の装置を制御するために必要なデータを記憶する。第1実施形態では、データ記憶部100が記憶するデータの一例として、設定データD1と、状況データD2と、について説明する。
【0035】
図6は、設定データD1のデータ格納例を示す図である。設定データD1は、制御システム1における設定に関するデータである。第1実施形態では、設定データD1は、後述するエンジニアリングツールから指定された設定内容が示される。例えば、設定データD1には、工程の実行順、工程名、初期フラグ、サイクル情報、終了フラグ、時間情報、台数情報、優先順位情報、及び実行条件が含まれる。
【0036】
実行順は、個々の対象物に対する工程が実行される順番である。設定データD1に格納される実行順は、個々の対象物から見た場合の工程の実行順(ある1つの対象物に対してどの順番で工程を実行するか)である。制御システム1全体から見た場合の工程の実行順(ある対象物に対する工程の後に、どの対象物に対するどの工程を実行するか)は、後述する装置制御部103によって動的に決定される。第1実施形態では、段取り工程、第1大工程、第2大工程、内段取り工程、第3大工程、及び終了工程の6個の工程が実行されるので、これら6個の工程の各々の実行順が示される。
【0037】
工程名は、個々の工程の名前である。初期フラグは、最初に実行される工程を識別する情報である。第1実施形態では、段取り工程が最初に実行されるので、段取り工程の初期フラグがオンになっている。サイクル情報は、そのサイクル情報に対応する工程を完了しないと次以降の工程を実行しないことを識別する情報である。第1実施形態では、サイクル情報は用いられないものとする。
【0038】
終了フラグは、最後に実行される工程を識別する情報である。第1実施形態では、終了工程が最後に実行されるので、終了工程の終了フラグがオンになっている。なお、初期フラグと終了フラグがあれば、最初の工程と最後の工程を識別可能なので、実行順は設定データD1に含まれなくてもよい。この場合、ユーザが想定する実行順で実行されるように、実行条件が指定されるようにすればよい。
【0039】
時間情報は、工程の実行に要する時間に関する情報である。第1実施形態では、時間情報が工程の実行に要する時間の予測値を示す場合を説明するが、時間情報は、実測値を示してもよい。予測値は、ユーザにより指定された値であってもよいし、シミュレーションによって計算された値であってもよい。
図6に示すように、第1実施形態では、第2大工程及び第3大工程は、他の工程に比べると非常に時間を要するものとする。更に、第3大工程は、第2大工程よりも時間を要するものとする。
【0040】
台数情報は、対象物を配置可能な上限数に関する情報である。台数情報は、対象物の配置が発生する工程についてのみ指定される。第1実施形態では、段取り工程、内段取り工程、及び終了工程についてのみ台数情報が設定される。段取り工程の台数情報は、第1置場P1に配置可能な対象物の上限数を示す。内段取り工程の台数情報は、第3置場P3に配置可能な対象物の上限数を示す。終了工程の台数情報は、第4置場P4に配置可能な対象物の上限数を示す。
【0041】
優先順位情報は、工程の優先順位に関する情報である。全ての工程に対し、優先順位情報が設定されてもよいし、一部の工程についてのみ、優先順位情報が設定されてもよい。
図6のデータ格納例では、第3大工程の優先順位が最も高く、第2大工程の優先順位がその次に高い。他の工程については、優先順位は指定されていない。優先順位情報は、後述する第2実施形態における問題点2(工程の優先順位を付けられない)を解決するために利用される。
【0042】
実行条件は、工程を実行するための条件である。実行条件は、工程のトリガとなる条件ということもできる。ある工程の実行条件が満たされた場合に、その工程が実行される。第1実施形態では、複数の対象物が存在するので、ある工程の実行条件が満たされた場合に、その工程がまだ実行されていない対象物の何れかに対し、その工程が実行される。実行条件は、種々の条件を定めることができる。例えば、ある工程の実行条件として、他の工程の実行状況を定めてもよい。ある工程の実行条件として、特定の装置又はセンサから特定の信号を受信することを定めてもよい。
【0043】
第1実施形態では、複数の対象物の各々が第1置場P1から取り出される順番(
図4に示す円内の数値)が決められているので、ある工程の実行条件が満たされた場合に、その工程がまだ実行されていない対象物のうち、最も順番が先の対象物(
図4に示す円内の数値が小さい対象物)に対し、その工程が実行される。例えば、3個目の対象物までは第1大工程が完了しており、その状態で、第1大工程の実行条件が満たされた場合、4個目の対象物に対する第1大工程が実行される。
【0044】
なお、複数の工程の実行条件が同時に満たされた場合には、予め定められた優先順位に基づいて、実行される工程が選択されるようにすればよい。第1実施形態では、データ記憶部100に記憶された変数が所定の値になることが実行条件として定められている場合を説明するが、実行条件は、任意の条件を指定可能である。例えば、実行条件は、上位制御装置10が他の装置又はセンサから所定の信号を受信することであってもよい。実行条件は、ビジョンセンサの画像を解析して所定の動作を検出することであってもよい。
【0045】
先述した「SourceがComplete、かつ、DestinationがReadyであればタスクを実行する」ようにタスク調停を実現するのであれば、実行順がn(nは自然数)の工程の実行条件として、実行順がn-1の工程がCompleteであり、かつ、実行順がn+1の工程がReadyであることが指定される。第1実施形態では、個々の工程の状態が状況データD2に示される場合を説明するが、個々の工程の状態を識別する方法自体は、種々の手法を利用可能である。例えば、個々の工程の状態は、状況データD2とは別にデータ記憶部100に記憶された変数によって識別されてもよいし、制御装置又はセンサから受信した信号によって識別されてもよい。
【0046】
第1実施形態では、問題点1(行き先が埋まっている)を解決するために、第3置場P3に配置された対象物の現在の数(以降、現在配置数)が用意されるので、内段取り工程において第2装置40から対象物を取り出す工程の実行条件として、現在配置数が上限数未満であることが指定される。この上限数は、内段取り工程の台数情報が示す値である。なお、内段取り工程の実行条件には、他の条件が含まれてもよい。例えば、第3大工程がCompleteであることが、内段取り工程の実行条件に含まれてもよい。
【0047】
終了工程以外の他の工程についても同様に、実行条件は、1つの条件だけであってもよいし、複数の条件を含んでもよい。第1実施形態では、他の工程の実行条件は、上記タスク調停と同様の条件であってもよいし、後述する他の実施形態で説明する条件であってもよい。第1実施形態では、他の工程の実行条件については、任意の条件であってよく、内段取り工程の実行条件として、現在配置数に関する条件が含まれていればよい。
【0048】
なお、設定データD1に含まれる情報は、
図6の例に限られない。設定データD1には、後述する装置制御部103が次に実行すべき工程を動的に決定するために必要な情報が含まれるようにすればよい。例えば、設定データD1には、装置制御部103により実行可否が動的に決定される工程であるか否かを示すフラグが含まれていてもよい。
【0049】
図7は、状況データD2のデータ格納例を示す図である。状況データD2は、制御システム1における現在の状況に関するデータである。第1実施形態では、制御システム1における現在の状況が変数によって管理される場合を説明する。変数は、制御プログラムにより参照及び変更の少なくとも一方が行われる情報である。なお、個々の変数は、状況データD2としてまとめられている必要はなく、別々のデータとして扱われてもよい。
【0050】
例えば、状況データD2には、個々の工程の現在の実行状況を示す状況変数が含まれる。状況変数は、工程の実行準備が完了したことを示す第1の値(Readyに相当する値)、工程が実行中であること示す第2の値(Completeではないことに相当する値)、及び工程が完了したことを示す第3の値(Completeに相当する値)の何れかになる。
【0051】
各工程の状況変数の初期値は、第1の値とする。装置制御部103は、ある装置が実行する工程を開始させると、この工程の状況変数を第2の値に変更する。装置制御部103は、この装置から工程が完了した旨の通知を受信すると、この工程の状況変数を第3の値に変更する。第3の値になった状況変数は、所定のタイミングで第1の値に戻る。例えば、状況変数が第3の値になった工程の次の工程が実行されると、この状況変数は第1の値に戻る。なお、状況変数は、他の値が存在してもよく、例えば、工程でエラーが発生したことを示す値などが存在してもよい。
【0052】
例えば、状況データD2には、第3置場P3に配置された対象物の現在の数を示す配置数変数が含まれる。配置数変数の初期値は0とする。例えば、装置制御部103は、内段取り工程により第2装置40から対象物が取り出されて第3置場P3に対象物が配置されると、配置数変数を1つ増加させる。装置制御部103は、第3置場P3に配置された対象物がロボット24により把持されて、第3大工程により第3装置50へ対象物が取り付けられると、配置数変数を1つ減少させる。
【0053】
なお、状況データD2には、任意の種類の変数が含まれてよく、変数の種類は、上記の例に限られない。例えば、状況データD2には、個々の対象物の現在の状況を示す対象物変数が含まれてもよい。
図7のデータ格納例であれば、対象物変数は、対象物に対する実行が完了した工程を示しており、1個目の対象物と2個目の対象物は、6個全ての工程が完了し、第4置場P4に配置されたことを意味する。n個目の対象物は、どの工程も完了しておらず、第1置場P1にも入庫されていないことを意味する。
【0054】
例えば、状況データD2には、対象物が配置されている現在の位置を示す変数、又は、センサで検出された物理量を示す変数が含まれてもよい。状況データD2には、変数以外の情報が含まれてもよい。例えば、状況データD2には、個々の工程の開始時点及び終了時点の少なくとも一方を示す情報が含まれてもよい。状況データD2には、制御システム1における現在日時が含まれてもよい。現在日時は、年月日などの一般的な情報で管理されてもよいし、タイマ値のような情報で管理されてもよい。
【0055】
また、データ記憶部100が記憶するデータは、上記の例に限られない。例えば、データ記憶部100は、制御プログラムを記憶する。制御プログラムは、ロボットコントローラ20などの装置を制御するためのプログラムである。制御プログラムは、任意の言語で作成可能であり、例えば、ラダー言語又はロボット言語で作成可能である。制御プログラムは、設定データD1及び状況データD2に基づいて個々の工程の実行条件が満たされたか否かを判定するためのコードと、満たされたと判定された実行条件に対応する工程を装置に実行するためのコードと、を含む。データ記憶部100は、制御プログラムが参照するパラメータを記憶してもよい。データ記憶部100は、ファームウェアなどの他のプログラムを記憶してもよい。
【0056】
[設定保存部]
設定保存部101は、ユーザにより指定され、複数の工程のうちの少なくとも1つの工程の実行条件に関する設定を保存する。この設定は、実行条件そのもの(例えば、設定データD1に含まれる実行条件)であってもよいし、実行条件が満たされたか否かを判定するために必要な情報(例えば、設定データD1に含まれる時間情報など)であってもよい。設定を保存するとは、設定内容を示すデータをデータ記憶部100に記録することである。設定保存部101は、保存された設定を任意のタイミングで取得可能である。
【0057】
第1実施形態では、ユーザにより指定された設定が設定データD1に含まれているので、設定保存部101は、設定データD1をデータ記憶部100に記録することによって、設定を保存する。なお、ユーザにより指定された設定は、設定データD1として保存されるのではなく、制御プログラムの一部として組み込まれていてもよい。この場合、設定保存部101は、制御プログラムをデータ記憶部100に記録することによって、設定を保存すればよい。
【0058】
例えば、設定は、1の対象物に対する2以上の工程の実行順を含む。
図6のデータ格納例であれば、設定データD1が示す設定には、実行順と、工程名と、が含まれている。
図6の工程名は、比較的大まかな工程の名前であるが、より細かな工程の工程名が含まれていてもよい。例えば、2以上の工程の間に、対象物を移動させる移動工程が存在する。この場合、移動工程の工程名が設定に含まれていてもよい。
【0059】
例えば、設定は、第3置場P3に配置可能な対象物の上限数であってもよい。第3置場P3は、バッファの一例である。このため、第3置場P3について説明している箇所は、バッファと読み替えることができる。バッファは、対象物を一時的に配置する場所である。バッファは、対象物を配置可能な場所であればよく、例えば、作業台、棚、箱、又はケースであってもよい。
【0060】
第1実施形態では、第3置場P3に配置された対象物に対し、第3大工程が実行されるので、設定に含まれる上限数は、複数の工程のうちの第3大工程の実行を待機可能な対象物の上限数ということもできる。第3置場P3には、第2大工程及び内段取り工程が完了した対象物が配置されるので、設定に含まれる上限数は、第2大工程及び内段取り工程が完了した後の対象物を配置可能な上限数ということもできる。
【0061】
図6のデータ格納例であれば、上限数は、内段取り工程の台数情報に示されている。このため、設定保存部101は、設定データD1に含まれる内段取り工程の台数情報を保存することによって、上限数を保存する。なお、第3大工程の実行条件の一部として上限数が含まれていてもよい。この場合には、設定保存部101は、設定データD1に含まれる第3大工程の実行条件を保存することによって、上限数を保存する。
【0062】
[状況取得部]
状況取得部102は、制御システム1における現在の状況を取得する。第1実施形態では、状況データD2に現在の状況が示されているので、状況取得部102は、状況データD2を取得することによって、現在の状況を取得する。状況データD2が上位制御装置10以外の装置又はメモリに記憶されている場合には、状況取得部102は、当該装置又は当該メモリから状況データD2を取得する。
【0063】
なお、現在の状況が状況データD2に含まれているのではなく、状況データD2とは別の変数として用意されている場合には、状況取得部102は、当該変数を取得することによって、現在の状況を取得すればよい。また、センサからの信号によって現在の状況を特定するのであれば、状況取得部102は、センサからの信号を受信することによって、現在の状況を取得する。例えば、状況取得部102は、ビジョンセンサから受信した画像を解析して現在の状況を取得してもよい。
【0064】
例えば、状況取得部102が取得する状況は、制御システム1において、第3置場P3に配置された対象物の現在の数である。状況取得部102は、状況データD2に含まれる配置数変数を取得する。例えば、状況取得部102が取得する状況は、第2装置40及び第3装置50の各々の状況である。状況取得部102は、状況データD2に含まれる状況変数を取得することによって、第2装置40及び第3装置50の各々の状況を取得する。
【0065】
[装置制御部]
装置制御部103は、設定保存部101が保存した設定と、状況取得部102が取得した状況とに基づいて、複数の工程の中で次に実行すべき工程を動的に決定し、複数の装置を制御する。例えば、装置制御部103は、第2装置40又は第3装置50の何れかに関する工程を、次に実行すべき工程として決定する。装置制御部103は、複数の対象物及び複数の工程のうち、どの対象物に対するどの工程を、次に実行するかを決定する。
【0066】
別の言い方をすれば、装置制御部103は、複数の対象物及び複数の工程の組み合わせのうち、次に実行すべき対象物及び工程の組み合わせを決定する。制御システム1における対象物の総数をk個(kは2以上の整数であり、
図4の場合にはk=13)とし、1個の対象物に対して実行される工程の総数をm個(mは自然数であり、第1実施形態ではm=6)とすると、制御システム1全体で考えれば、対象物と工程の組み合わせは、k×m通り(
図4の場合には13×6=78通り)存在する。k×m通りの組み合わせの実行順は、ユーザが指定するわけではなく、装置制御部103がその場で動的に決定する。
【0067】
例えば、装置制御部103は、制御プログラムを実行し、状況データD2に基づいて、設定データD1に含まれる個々の実行条件が満たされたか否かを判定する。装置制御部103は、何れかの工程の実行条件が満たされた場合、その工程を実行する装置に対し、その工程を開始するための指示を送信する。この指示は、実行すべき工程の識別情報を示すコマンドであってもよいし、後述する工程プログラムに関連付けられた開始変数を所定の値に変更するための指示であってもよい。更に、この指示には、何個目の対象物に対する工程であるかを識別する情報が含まれてもよい。例えば、段取り工程が実行される場合、この情報が含まれることによって、ロボットコントローラ20は、第1置場P1におけるどの対象物を把持すればよいかを特定できる。例えば、第3大工程についても同様に、ロボットコントローラ20は、第3置場P3におけるどの対象物を把持すればよいかを特定できる。
【0068】
第1実施形態では、複数の装置は、複数の装置間において対象物を移動させる移動工程を実行する1以上のロボット24を含むので、装置制御部103は、設定保存部101により保存された設定と、状況取得部102により取得された状況と、に基づいて、1の装置による1の工程が完了した場合に、他の装置による他の工程が実行されるように、ロボット24による移動工程を、次に実行すべき工程として決定する。
【0069】
例えば、第2装置40から第3置場P3に対象物を移動させる移動工程は、内段取り工程に含まれる工程の1つである。装置制御部103は、第2装置40が対象物に対する加工工程を完了した場合に、第3装置50による加工工程が実行されるように、ロボット24が第2装置40から第3置場P3に対象物を移動させる移動工程を、次に実行すべき工程として決定する。
【0070】
例えば、第3装置50から第4装置60に対象物を移動させる移動工程は、終了工程に含まれる工程の1つである。装置制御部103は、第3装置50が対象物に対する加工工程を完了した場合に、第4装置60による洗浄工程が実行されるように、ロボット24が第3装置50から第4装置60に対象物を移動させる移動工程を、次に実行すべき工程として決定する。他の移動工程も同様にして、ある装置の工程が完了した対象物を、次の工程の装置に移動させるように、移動工程が実行されるようにすればよい。
【0071】
例えば、装置制御部103は、設定保存部101により保存された設定に基づいて、1の対象物に対しては、当該設定に含まれる実行順で2以上の工程が実行されるように、ロボット24の移動工程を、次に実行すべき工程として決定してもよい。装置制御部103は、1の対象物に対しては、設定データD1に含まれる実行順が維持されるように、ロボット24の移動工程を、次に実行すべき工程として決定する。
【0072】
例えば、装置制御部103は、第2装置40の加工工程が完了した場合に、第3装置50の加工工程が実行されるように、ロボット24が第2装置40から第3置場P3に対象物を移動させる移動工程を、次に実行すべき工程として決定する。装置制御部103は、第3装置50の加工工程が完了した場合に、第4装置60の洗浄工程が実行されるように、ロボット24が第3装置50から第4装置60に対象物を移動させる移動工程を、次に実行すべき工程として決定する。
【0073】
第1実施形態では、複数の工程のうちの1以上の後続工程(第3大工程における第3装置50の加工工程)の実行を待機する複数の対象物が配置される第3置場P3があるので、装置制御部103は、設定保存部101により保存された設定と、状況取得部102により取得された状況と、に基づいて、後続工程よりも前の先行工程(第2大工程における第2装置40の加工工程)が完了した場合に、対象物を第3置場P3に移動させ、後続工程を実行する場合に、当該対象物を当該第3置場P3から移動させるように、ロボット24による移動工程を、次に実行すべき工程として決定する。
【0074】
例えば、状況データD2が示す状況は、制御システムSにおいて、第3置場P3に配置された対象物の現在の数である。装置制御部103は、現在の数が上限数に達した場合に、先行工程(第2大工程における第2装置40の加工工程)を、次に実行すべき工程として決定せず、現在の数が上限数に達していない場合に、先行工程を、次に実行すべき工程として決定可能とする。装置制御部103は、状況データD2の配置数変数が示す値が上限数に達したか否かを判定する。なお、後続工程及び先行工程は、上記の例に限られない。後続工程は、相対的に実行順が後の工程であればよい。先行工程は、相対的に実行順が前の工程であればよい。
【0075】
例えば、装置制御部103は、設定データD1に含まれる台数情報と、状況データD2に含まれる配置数変数と、に基づいて、第3大工程の実行を待機している対象物の現在の数が上限数に達したか否かを判定する。装置制御部103は、第3大工程の実行を待機している対象物の現在の数が上限数に達した場合に、第3大工程よりも前の工程を、次に実行すべき工程として決定しない。例えば、装置制御部103は、上記配置数変数が上限数に達していない場合に、第3装置50による加工工程よりも前の先行工程を、次に実行すべき工程として決定可能である。ここでは、第3装置50に対象物を移動させる移動工程が先行工程に相当する場合を説明するが、先行工程は、更に前の工程であってもよい。
【0076】
第1実施形態では、第3装置50による加工工程の実行条件の一つとして、上記現在の数が上限数に達していないことが定められているので、装置制御部103は、第3装置50に対する対象物の移動工程を、次に実行すべき工程として決定する。なお、装置制御部103は、この条件が満たされたからといって、第3装置50に対する対象物の移動工程を実行しなければならないわけではなく、この工程の他の条件が満たされていなければ、この工程を実行しない。上記現在の数が上限数に達していないことが条件の1つであればよい。他にも例えば、装置制御部103は、優先順位が高い他の工程の実行条件が満たされた場合には、当該他の工程を実行してもよい。
【0077】
[1-3-2.ロボットコントローラなどの装置で実現される機能]
ロボットコントローラ20、第1装置30、第2装置40、第3装置50、及び第4装置60の各々では、データ記憶部200,300,400,500,600及び工程実行部201,301,401,501,601が実現される。データ記憶部200,300,400,500,600は、それぞれ記憶部22,32,42,52,62を主として実現される。工程実行部201,301,401,501,601は、それぞれCPU21,31,41,51,61を主として実現される。
【0078】
なお、以降では、データ記憶部200及び工程実行部201について説明するが、工程を実行する流れ自体は、どの装置も同様である。このため、データ記憶部300,400,500,600及び工程実行部301,401,501,601についても、それぞれデータ記憶部200及び工程実行部201と同様であってよい。データ記憶部200をデータ記憶部300,400,500,600と読み替えて、工程実行部201を工程実行部301,401,501,601と読み替えればよい。
【0079】
[データ記憶部]
データ記憶部200は、工程の実行に必要なデータを記憶する。例えば、データ記憶部200は、工程プログラムを記憶する。工程プログラムは、工程ごとに用意される。工程プログラムには、工程における個々の動作が定義されている。例えば、データ記憶部200は、工程プログラムにより参照及び変更の少なくとも一方が行われる変数を記憶する。この変数には、工程プログラムの実行条件になる変数が含まれているものとする。例えば、工程プログラムごとに、工程の実行を開始するための開始変数と、工程の実行を終了したことを示す終了変数と、が用意されてもよい。なお、終了変数は省略してもよい。工程プログラムの実行は、変数によって制御されるのではなく、上位制御装置10からのコマンドによって制御されてもよい。
【0080】
[工程実行部]
工程実行部201は、工程プログラムに基づいて、工程を実行する。第1実施形態では、工程プログラムごとに開始変数と終了変数が用意されているので、工程実行部201は、開始変数が所定の値になったか否かを監視する。工程プログラムの開始変数は、上位制御装置10からその開始変数を所定の値にする旨の指示が受信された場合に、所定の値に変更される。開始変数の変更は、工程実行部201以外の機能ブロックによって実現されてよい。工程実行部201は、開始変数が所定の値になったことを検出すると、当該開始変数に対応する工程プログラムを実行し、工程の実行を開始する。工程実行部201は、開始した工程が終了した場合に、当該工程に対応する工程プログラムの終了変数を所定の値に変更する。工程実行部201は、上位制御装置10に対し、工程の実行が完了したことを通知する。その後、開始変数は、所定のタイミングで初期値に戻る。
【0081】
[1-3-3.エンジニアリング装置で実現される機能]
図5に示すように、エンジニアリング装置70は、データ記憶部700、表示制御部701、及び受付部702を含む。データ記憶部700は、記憶部72を主として実現される。表示制御部701及び受付部702の各々は、CPU71を主として実現される。
【0082】
[データ記憶部]
データ記憶部700は、制御システム1における設定を行うために必要なデータを記憶する。例えば、データ記憶部700は、エンジニアリングツールを記憶する。エンジニアリングツールは、ユーザの設定作業を支援するためのツールである。例えば、エンジニアリングツールは、制御プログラム及び工程プログラムなどの各種プログラムの作成、パラメータの設定、装置間の通信設定、レジスタの定義、又は変数の定義といった種々の目的で利用される。例えば、データ記憶部700は、ユーザがエンジニアリングツールを利用して作成されたプログラムやパラメータのバックアップを記憶してもよい。
【0083】
[表示制御部]
表示制御部701は、エンジニアリングツールを利用した設定をするための設定画面を表示部75に表示させる。
図8は、設定画面の一例を示す図である。
図8に示すように、設定画面G1は、設定データD1に含まれる個々の項目の値を指定するためのグラフィカル・ユーザ・インタフェースである。ユーザは、任意の値を設定画面G1に対して入力可能である。なお、
図8では省略しているが、工程の実行条件として、変数などの条件を指定可能とする。
【0084】
[受付部]
受付部702は、ユーザによる各種操作を受け付ける。例えば、受付部702は、設定画面G1に対する個々の項目の値の指定を受け付ける。エンジニアリング装置70は、受付部702により受け付けられた値に基づいて、設定データD1を生成して上位制御装置10のデータ記憶部100に書き込む。設定データD1は、データ記憶部700に記憶されてもよい。
【0085】
[1-4.制御システムで実行される処理]
図9は、制御システム1で実行される処理の一例を示すフロー図である。
図9では、制御システム1で実行される処理のうち、上位制御装置10が実行する処理が示されている。CPU11が記憶部12に記憶された制御プログラムを実行することによって、
図9に示す処理が実行される。
図9に示す処理は、
図5に示す機能ブロックにより実行される処理の一例である。
【0086】
図9に示すように、上位制御装置10は、記憶部12に設定データD1を保存し(S1)、制御システム1における現在の状況を示すように、記憶部12に記憶された状況データD2を更新する(S2)。S2においては、例えば、上位制御装置10は、ロボットコントローラ20等の装置との通信内容に基づいて、状況データD2を更新する。例えば、上位制御装置10は、制御プログラムの実行結果に基づいて、状況データD2を更新する。
【0087】
上位制御装置10は、更新後の状況データD2を取得し(S3)、S1で保存した設定データD1と、S3で取得した更新後の状況データD2と、に基づいて、個々の工程の実行条件が満たされたか否かを判定する(S4)。S4においては、先述したように、工程ごとに実行条件が満たされたか否かが判定される。例えば、内段取り工程における第2装置40からの対象物の取り出しであれば、上位制御装置10は、設定データD1が示す台数情報と、状況データD2が示す配置数変数と、に基づいて、実行条件が満たされたか否かを判定する。この判定方法の詳細は、後述した通りである。
【0088】
実行条件が満たされた工程が存在する場合(S4;Y)、上位制御装置10は、実行条件が満たされた工程を、次に実行すべき工程として決定し、ロボットコントローラ20などの装置を制御する(S5)。S5においては、上位制御装置10は、実行条件が満たされた工程を実行する装置に対し、その工程を開始させるための指令(例えば、工程プログラムの開始変数を所定の値に変更するための指令)を送信する。
【0089】
一方、実行条件が満たされた工程が存在しない場合(S4;N)、上位制御装置10は、所定の終了条件を満たすか否かを判定する(S6)。終了条件は、本処理を終了させるための任意の条件であってよい。例えば、制御プログラムがラダー言語で作成されるのであれば、ラダー言語で記述された最後の命令が実行されることが終了条件を満たすことに相当する。例えば、対象物の総数が予め定められているのであれば、全ての対象物に対する6個の工程が完了して全て完成品になることが終了条件を満たすことに相当する。終了条件を満たすと判定されない場合(S6;N)、S2の処理に戻り、まだ完成品になっていない対象物に対する工程が実行される。終了条件を満たすと判定された場合(S6;Y)、本処理は終了する。
【0090】
以上説明したように、第1実施形態の制御システム1は、それぞれ複数の工程が実行されるべき複数の対象物に対して、複数の工程のうちの少なくとも1つの工程をそれぞれ他と独立して実行する複数の装置を含む。制御システム1は、ユーザにより指定され、複数の工程のうちの少なくとも1つの工程の実行条件に関する設定と、制御システム1における現在の状況と、に基づいて、複数の工程の中で次に実行すべき工程を動的に決定し、複数の装置を制御する。これにより、複数の対象物に対する複数の工程を同時並行で実行できるので、制御システム1の稼働効率が高まる。例えば、制御プログラムの作成者が、個々の工程に要する時間を予想して効率的になるように、複数の工程の各々の実行順を手動で指定することも考えられる。しかしながら、複数の対象物の各々に対し、複数の工程の各々が同時並行して実行される制御システム1では、考え得るスケジューリングが無数に存在し、どのような実行順にすれば稼働効率が向上するかを予想することは難しい。例えば、作成者が予想した時間と、制御システム1において実際に要した時間と、が異なることがあり、予想外に時間を要した工程があったとすると、その工程を完了するまでは次の工程を開始できず、制御システム1の稼働効率が低下する可能性がある。この点、制御システム1によれば、作成者が指定した静的な実行順で工程が実行されるのではなく、制御システム1の状況に応じて動的に工程の実行順が決定されるので、制御システム1の実際の状況に応じて稼働効率が高まる。
【0091】
また、制御システム1の複数の装置は、複数の装置間において対象物を移動させる移動工程を実行する1以上のロボット24を含む。制御システム1は、1の装置による1の工程が完了した場合に、他の装置による他の工程が実行されるように、ロボット24による移動工程を、次に実行すべき工程として決定する。これにより、制御システム1における対象物の移動の自由度が高かったとしても、全体として稼働効率が高くなるように対象物を移動させることができる。
【0092】
また、制御システム1における設定は、1の対象物に対する2以上の工程の実行順を含む。2以上の工程の間に、移動工程がある。制御システム1は、1の対象物に対しては、設定に含まれる実行順で2以上の工程が実行されるように、ロボット24の移動工程を、次に実行すべき工程として決定する。これにより、1の対象物に対する実行順を守るように、動的に工程が実行されるので、制御システム1の稼働効率が高めつつ、想定した実行順通りに1の対象物に対する工程を実行できる。
【0093】
また、制御システム1には、複数の工程のうちの1以上の後続工程の実行を待機する複数の対象物が配置される第3置場P3がある。制御システム1は、後続工程よりも前の先行工程が完了した場合に、対象物を第3置場P3に移動させ、後続工程を実行する場合に、当該対象物を当該第3置場P3から移動させるように、ロボット24による移動工程を、次に実行すべき工程として決定する。これにより、後続工程が完了するまでの間、先行工程を実行できないといったことを防止できるので、制御システム1の稼働効率が高まる。
【0094】
また、制御システム1における設定は、第3置場P3に配置可能な対象物の上限数である。状況は、制御システム1において、第3置場P3に配置された対象物の現在の数である。制御システム1は、現在の数が上限数に達した場合に、先行工程を、次に実行すべき工程として決定せず、現在の数が上限数に達していない場合に、先行工程を、次に実行すべき工程として決定可能とする。これにより、第3置場P3が埋まってしまうことを防止できる。その結果、例えば、第3置場P3に対象物を配置することができず、制御システム1にエラーが発生して停止してしまったり、第3置場P3における対象物同士が接触してしまったりすることを防止できる。例えば、現在配置数が上限数に達した後に、現在配置数が減るまでは、第3大工程における第3装置50による加工の実行を待機する対象物の数に影響しない他の工程を実行することで、制御システム1の稼働効率を向上できる。
【0095】
[2.第2実施形態]
第2実施形態では、問題点2(工程の優先順位を付けられない)を解決する構成について説明する。第2実施形態では、第1実施形態と同様の構成については説明を省略する。
【0096】
第1実施形態で説明したように、第2装置40による加工工程と、第3装置50による加工工程と、は他の工程よりも非常に時間を要する。このため、なるべく第2装置40及び第3装置50をフル稼働させた方が、制御システム1全体としての稼働効率は向上する。更に、第3装置50による加工工程の方が、第2装置40による加工工程よりも時間を要するので、第3装置50をフル稼働させた方が、制御システム1全体としての稼働効率は、より向上する。
【0097】
図10は、問題点2(工程の優先順位を付けられない)の説明図である。
図10の例では、1個目の対象物に対する第3装置50による加工工程が完了したものとする。この場合、第3装置50をフル稼働させるために、なるべく早く、第3装置50から1個目の対象物が取り出され、第3装置50に2個目の対象物が取り付けられた方がよい。
【0098】
しかしながら、個々の工程に優先順位が付けられていないと、他の工程が実行されて、第3装置50の稼働効率を高めることができない。例えば、2個目の対象物に対する移動工程が実行されるのではなく、3個目の対象物に対する移動工程が実行されると、その間は、第3装置50がReadyのまま何もせずに待機するので、その分だけ第3装置50の稼働効率が低下する。
【0099】
そこで、第2実施形態の上位制御装置10は、第3装置50による加工工程に最も高い優先順位を付けることによって、第3装置50をフル稼働させて問題点2を解決し、制御システム1の稼働効率を高めるようにしている。この優先順位付けにより、ある対象物に対する第3装置50による加工及び第3装置50からの対象物の取り出しが実行された場合に、すぐに次の対象物に対する第3装置50への対象物の取り付けまでの全工程が優先して実行されるようになる。以降、第2実施形態の制御システム1の詳細を説明する。
【0100】
図11は、第2実施形態における機能ブロック図の一例を示す図である。
図11のように、第2実施形態では、第1実施形態で説明した機能に加えて、判定部104及び通知部105が実現される。判定部104及び通知部105は、制御部11を主として実現される。他の機能は、概ね第1実施形態と同様であるが、一部の機能は、第1実施形態と異なる。
【0101】
例えば、設定保存部101が保存する設定は、工程の実行時間に応じた優先順位である。
図6の例では、設定データD1に優先順位情報が含まれているので、設定保存部101は、設定データD1の優先順位情報を、設定として保存する。設定保存部101は、第2装置40による加工工程と、第3装置50による加工工程と、の各々の優先順位情報を保存する。他の工程に優先順位情報が設定されていれば、設定保存部101は、他の工程の優先順位情報を保存する。第2実施形態では、時間情報が示す時間が高いほど、優先順位が高くなる。優先順位は、他の要素によって定められてもよい。例えば、ある工程が複数回実行されるのであれば、実行回数が多いほど、優先順位が高くなってもよい。
【0102】
第2実施形態では、状況取得部102が取得する状況は、複数の工程のうち、優先順位が相対的に高い第3大工程の実行状況である。第3大工程は優先工程の一例である。このため、第3大工程について説明している箇所は、優先工程と読み替えることができる。優先工程は、他の工程よりも相対的に優先順位が高い工程である。優先工程は、1以上の他の工程よりも優先順位が高い。優先工程は、最も優先順位が高い工程に限られず、優先順位が2番目以降の工程であってもよい。例えば、第2大工程が優先工程に相当してもよい。
【0103】
第2実施形態では、装置制御部103は、1の対象物に対する第3大工程が完了した場合に、第3大工程を実行する第3装置50から当該1の対象物を移動させ、他の対象物を当該第3装置50に移動させるように、第3大工程に関連した移動工程を、次に実行すべき工程として決定する。例えば、装置制御部103は、第3大工程における第3装置50による加工工程が完了した対象物Aを第3装置50から移動させ、次の対象物Bに対し、第3大工程における第3装置50による加工工程までの全ての工程が連続的に実行されるように、次に実行すべき工程を決定する。なお、次の対象物とは、第1置場P1から取り出される順番が1つ後であることを意味する。上記の1の対象物がk個目の対象物だとすると、k+1個目の対象物が次の対象物に相当する。
【0104】
例えば、装置制御部103は、第3大工程が完了した場合、第3大工程に関連した移動工程を、優先順位が相対的に低い工程に関連した移動工程よりも優先して、次に実行すべき工程として決定する。即ち、制御システム1において実行可能な移動工程が複数存在した場合に、装置制御部103は、実行可能な複数の移動工程のうち、第3装置50から対象物を移動させる移動工程と、他の対象物を第3装置50に移動させる移動工程と、を他の移動工程よりも優先的に実行する。
【0105】
なお、装置制御部103は、第3装置50による加工工程が完了していないことを条件として、第3装置50から対象物を取り出す移動工程以外の工程を実行可能としてもよい。このような実行条件が設定データD1に定められているものとする。第3装置50による加工工程が実行されている間に、終了工程における第3装置50からの対象物の取り出し以外の工程が実行されることになる。実行可能になる工程は、任意の工程であってよい。実行可能になった工程は、実行されなければならないわけではなく、実行が許可されればよい。
【0106】
例えば、装置制御部103は、第3装置50による加工工程の準備が完了しておらず、かつ、第3装置50に対象物を移動させる移動工程が完了していないことを条件として、第3装置50に対象物を移動させる移動工程以外の他の工程を実行可能としてもよい。このような実行条件が設定データD1に定められているものとする。実行可能になる工程が任意の工程であってよい点は、先述した通りである。
【0107】
なお、優先順位が相対的に高い第3装置50による加工工程を優先的に実行する方法は、上記の例に限られない。例えば、装置制御部103は、工程の優先順位が高い順に実行条件が満たされたか否かを判定し、実行条件が満たされた工程を実行してもよい。装置制御部103は、実行条件が満たされた工程が複数存在する場合に、相対的に優先順位が高い工程を実行してもよい。
【0108】
判定部104は、第3大工程の実行時間が閾値以上であるか否かを判定する。閾値は、ユーザが指定してもよいし、予め定められた固定値であってもよい。判定部104は、第3大工程の実行が開始されてから計時処理を開始し、第3大工程の実行開始から現時点までの時間が閾値以上であるか否かを判定する。判定部104は、第3大工程に対応する第3装置50が稼働していない未稼働時間を計測し、未稼働時間が閾値以上であるか否かを判定してもよい。
【0109】
通知部105は、判定部104により実行時間が閾値以上であると判定された場合に、ユーザに通知する。通知は、任意の手段を利用可能であり、例えば、電子メール等のメッセージ、エンジニアリング装置70に対する情報の出力、LEDライト等を利用したアラートの出力、又は音声の出力によって、通知が行われてもよい。通知部105は、未稼働時間が閾値以上であると判定された場合に、ユーザに通知をしてもよい。
【0110】
第2実施形態の制御システム1は、1の対象物に対する第3装置50の加工工程が完了した場合に、第3装置50から当該1の対象物を移動させ、他の対象物を当該第3装置50に移動させるように、第3大工程に関連した移動工程を、次に実行すべき工程として決定する。これにより、優先順位が相対的に高い第3大工程における第3装置50による加工工程を優先的に実行できるので、制御システム1の稼働効率がより高まる。
【0111】
また、制御システム1は、第3大工程が完了した場合、第3大工程に関連した移動工程を、優先順位が相対的に低い工程に関連した移動工程よりも優先して、次に実行すべき工程として決定する。これにより、優先順位が相対的に高い加工工程を実行する第3装置50に対象物を迅速に移動させることができる。その結果、制御システム1の稼働効率がより高まる。
【0112】
また、制御システム1は、第3大工程の実行時間が閾値以上であると判定された場合に、ユーザに通知する。これにより、優先順位が相対的に高い第3大工程の実行に時間を要していることをユーザが気付きやすくなる。制御システム1における設定に変更の余地がある場合には、ユーザが設定変更を検討しやすくなる。
【0113】
[3.第3実施形態]
第1実施形態及び第2実施形態の処理は、実際に装置を動作させる処理ではなく、シミュレータ上の処理として実行されてもよい。即ち、第1実施形態及び第2実施形態の処理は、シミュレータ上の仮想的な上位制御装置10が、シミュレータ上の仮想的なロボットコントローラ20等の装置を仮想的に制御する場合の処理であってもよい。第3実施形態では、第1実施形態及び第2実施形態と同様の構成については説明を省略する。
【0114】
シミュレータは、各工程をシミュレーションするためのプログラムである。第3実施形態では、シミュレータがエンジニアリング装置70にインストールされている場合を説明するが、シミュレータは、上位制御装置10等の他の装置にインストールされてもよい。また、シミュレータがエンジニアリングツールの一部である場合を説明するが、シミュレータは、エンジニアリングツールとは別のプログラムであってもよい。例えば、ユーザが、
図8の設定画面G1のボタンB10を選択すると、シミュレーションを実行するためのシミュレーション画面が表示部75に実行される。
【0115】
図12は、シミュレーション画面の一例を示す図である。シミュレーション画面G2には、チャートC20、仮想空間V21、リストL22、及びボタンB23,B24が表示される。例えば、ユーザがボタンB23を選択すると、シミュレーションが開始される。シミュレーションの実行結果は、シミュレーション画面G2におけるアニメーションとして表示される。ユーザがボタンB24を選択すると、設定画面G1に戻る。ユーザは、シミュレーションの実行結果を参考にして、設定をやり直すことができる。
【0116】
チャートC20は、時系列的なシミュレーション結果を示す画像である。チャートC20は、タイムチャート又はガントチャートと呼ばれる画像であってもよい。
図12の例では、第2装置40、第3装置50、ロボット24、及び周辺装置がチャートC20に示される場合を説明するが、チャートC20には、任意の装置が示されてよい。チャートC20に示す装置をユーザが指定可能であってもよい。チャートC20の縦方向には、装置名が並べられる。チャートC20の横方向は、時間軸である。
【0117】
チャートC20は、
図12の例に限られず、他のレイアウトであってもよい。例えば、装置名が横方向に並べられて、縦方向が時間軸であってもよい。他にも例えば、工程名がチャートC20に表示されてもよいし、個々の対象物ごとに、当該対象物に対する工程の実行状況がチャートC20に表示されてもよい。仮想空間V21は、現実空間における各装置の配置が再現された空間である。仮想空間V21における各装置の配置は、ユーザが指定可能であってもよい。リストL22には、各工程の名前が表示される。
【0118】
第3実施形態では、上位制御装置10が実際に実行する制御プログラムの処理を他の処理に置き換えて、簡易的なシミュレーションを実行することによって、シミュレーションを高速化する場合を例に挙げる。以降、ラダー言語で作成された制御プログラムを例に挙げるが、ロボット言語等の他の言語で作成された制御プログラムについても同様に、制御プログラム内の処理を他の処理に置き換えることができる。シミュレーションは、簡易的なシミュレーションに限られず、制御プログラムの処理をより忠実に再現した詳細なシミュレーションであってもよい。シミュレータにおける処理手順を示すプログラムは、第3実施形態のように制御プログラムに基づいて生成されるのではなく、ユーザ自身が作成してもよい。
【0119】
図13は、簡易的なシミュレーションの実現方法の一例を示す図である。
図13では、制御プログラムのラダー図が示されている。
図13の「H図面」は、ラダー図の中で最上位の図面である。例えば、「H図面」は、SEE命令によって、下位の図面を呼び出すことができる。
図13の例であれば、「H図面」は、「SEE H01」といった命令によって、下位の図面である「H01図面」を呼び出すことができる。「H01図面」も同様に、更に下位の図面を呼び出すことができる。
【0120】
図13の例では、「H図面」の2段階下の図面に、ロボットコントローラ20等を制御するための具体的な処理が含まれているものとする。例えば、設定データD1が
図6の内容だったとすると、最初に実行されるのは、10秒かかると予想される段取り工程である。このため、段取り工程に相当する「H01.01図面」には、10秒相当の処理が含まれる。例えば、搬送用ロボット等の周辺装置が第1置場に対象物を搬入するのであれば、周辺装置を第1置場P1に移動させて対象物が入った箱を第1置場P1に配置させるといった一連の処理が「H01.01図面」に含まれる。
【0121】
第3実施形態では、「H01.01図面」に含まれる10秒相当の処理が、タイマ命令(
図13では「TON」)に置き換えられる。ユーザは、
図6の設定画面G1で設定段取り工程に10秒間を指定しているので、10秒間のタイマ命令に置き換えられてもよいが、第3実施形態では、シミュレーションを高速化するために、より短い時間に圧縮されたタイマ命令に置き換えられるものとする。例えば、エンジニアリング装置70は、計画時間の最小値と、スキャン期間の最小値と、に基づいて、タイマ命令を置き換える。
【0122】
計画時間は、各工程の実行に要する時間である。ユーザは、設定画面G1で計画時間を指定する。計画時間は、任意の値を指定可能であってもよいが、第3実施形態では、所定の最小値の整数倍となるように指定されるものとする。計画時間の最小値は、任意の値であってよく、ここでは、5秒とする。スキャン期間は、制御プログラムの処理周期である。制御プログラムは、スキャン期間ごとに処理が実行される。スキャン期間の最小値は、任意の値であってよく、ここでは、4ミリ秒とする。計画時間の最小値と、スキャン期間の最小値と、の各々は、ユーザが指定可能であってもよいし、固定値であってもよい。
【0123】
例えば、「H01.01図面」の10秒相当の処理は、計画時間の最小値である5秒の2倍の時間を要する処理である。このため、この処理は、スキャン期間の最小値である4ミリ秒を2倍した8ミリ秒のタイマ命令(
図13では「TON8ms」)に置き換えられる。同様に、第1大工程に相当する「H01.02図面」の70秒相当の処理は、計画時間の最小値である5秒の14倍の時間を要する処理なので、スキャン期間の最小値である4ミリ秒を14倍した56ミリ秒のタイマ命令(
図13では「TON56ms」)に置き換えられる。第2大工程に相当する「H01.03図面」の1800秒相当の処理は、計画時間の最小値である5秒の360倍の時間を要する処理なので、スキャン期間の最小値である4ミリ秒を360倍した1440ミリ秒のタイマ命令(
図13では「TON1440ms」)に置き換えられる。
【0124】
エンジニアリング装置70は、全ての工程に対し、上記のように圧縮した時間のタイマ命令に置き換える。ユーザが計画時間を指定しなかった工程は、予め定められた時間のタイマ命令に置き換えられるようにしてもよいし、処理内容に応じて計画時間が予測されたうえで、当該予測された計画時間が圧縮された時間のタイマ命令に置き換えられてもよい。
【0125】
エンジニアリング装置70は、計画時間を圧縮した時間のタイマ命令に置き換えると、簡易的なシミュレーションを実行する。シミュレーション自体は、公知の種々のシミュレーション方法を利用可能である。
図6の計画時間であれば、ある対象物に対する全工程の完了に5540秒要することになる。計画時間の圧縮により、(5540秒/5秒)*4ミリ秒=4432ミリ秒で、この対象物に対する全工程のシミュレーションが完了することになる。シミュレーション結果は、シミュレーション画面G2に表示される。
【0126】
図14は、シミュレーション画面G2においてチャートC20の表示が変化する様子の一例を示す図である。
図14では、チャートC20A-C20Fといったように、チャートC20が時系列的に変化する様子を、C20の末尾にアルファベットを付与した符号によって表現する。チャートC20A-20Fを特に区別しない時は、単にチャートC20と記載する。同様に、工程画像P200A-P200Eを区別しない時は、単に工程画像P200と記載する。
【0127】
シミュレーションが開始した時点では、どの装置も工程を実行していないので、チャートC20Aのように、チャートC20には工程画像P200は表示されない。シミュレーションが開始すると、周辺装置による段取り工程が最初に実行される。このため、チャートC20Bのように、周辺装置の行に、段取り工程が実行中であることを示す工程画像P200Aが表示される。工程画像P200Aの横幅の長さは、段取り工程の計画時間に相当する。
【0128】
例えば、段取り工程の計画時間を10秒間とすると、工程画像P200Aの横幅の長さは、10秒間に相当する長さになる。段取り工程は、第2大工程等の他の工程に比べると計画時間が非常に短いため、実際には
図14の例よりも横幅が短いが、図面における工程画像P200Aの視認性を上げるために、
図14では、実際よりも工程画像P200Aの横幅を長くしている。他の工程画像P200も同様であり、ある工程の工程画像P200の横幅は、この工程の計画時間に応じた長さになるが、
図14では、図面における視認性を上げるために、長さを調整している。
【0129】
段取り工程が終了すると、1個目の対象物に対する第1大工程が実行される。チャートC20には、第1装置30の動作は表示されないが、第1大工程は、第1装置30だけではなくロボット24も関係する。このため、チャートC20Cのように、ロボット24の行に、第1大工程が実行中であることを示す工程画像P200Bが表示される。第1大工程の計画時間は、70秒なので、工程画像P200Bは、70秒分の横幅を有する。この70秒は、ロボット24だけではなく、第1装置30の動作に要する時間も含まれているが、
図14では、ロボット24の動作として示すものとする。
【0130】
1個目の対象物に対する第1大工程が終了すると、1個目の対象物に対する第2大工程が実行される。このため、チャートC20Dのように、第2装置40の行に、第2大工程が実行中であることを示す工程画像P200Cが表示される。1個目の対象物に対する第2大工程が終了すると、1個目の対象物に対する内段取り工程と第3大工程が連続的に実行される。内段取り工程は、ロボット24により実行され、第3大工程は、第3装置50により実行される。このため、チャートC20Eのように、ロボット24の行に、内段取り工程が実行中であることを示す工程画像P200Dが表示され、第3装置50の行に、第3大工程が実行中であることを示す工程画像P200Eが表示される。
【0131】
以降同様に、1個目の対象物の終了工程が実行され、2個目以降の各工程が実行されると、チャートC20Fのように、各対象物に対する各工程が時系列的に実行される様子を示す工程画像P200が表示される。チャートC20Fでは、工程画像P200の数が多いので、P200の後のアルファベットを省略する。シミュレーションが完了するまでの間、チャートC20には、工程画像P200が次々と表示される。
【0132】
仮想空間V21は、チャートC20における工程画像P200の表示と対応するように、対象物が移動する。シミュレーション画面G2におけるロボット24も、対象物を移動するようにアニメーションが実行されるようにしてもよい。リストL22は、現在実行中の工程の色が変わるようにしてもよい。以上のように、第3実施形態では、シミュレーションを実行することによって、ユーザによる工程の計画を支援するようになっている。以降、第3実施形態の詳細を説明する。
【0133】
図15は、第3実施形態における機能ブロック図である。エンジニアリング装置70において、設定保存部703、状況取得部704、及び装置制御部705が実現される。これらは、制御部71を主として実現される。
【0134】
制御システム1は、複数の工程を仮想的に実行するシミュレータを含む。データ記憶部700は、シミュレータを記憶する。データ記憶部700は、設定データD1及び状況データD2も記憶する。ただし、状況データD2は、シミュレータ上における各装置の仮想的な状況を示す。データ記憶部700の設定データD1は、データ記憶部100の設定データD1と同様である。
【0135】
第3実施形態における設定は、複数の装置の配置を示すレイアウトを含む。例えば、レイアウトは、仮想空間V21における各装置の配置である。仮想空間V21は、3次元空間で表現されてもよいし、2次元的な平面で表現されてもよい。レイアウトは、各装置の名前と、当該装置の位置を示す座標と、を含む。ユーザは、各装置の名前と位置を指定可能である。シミュレータは、少なくともレイアウトに基づいて、移動工程に要する移動時間を計算する。
【0136】
例えば、シミュレータは、移動工程における対象物の始点と終点の距離を計算する。始点は、移動工程の開始時における対象物の位置である。始点は、移動工程における対象物の出発地点ということもできる。終点は、移動工程の終了時における対象物の位置である。終点は、移動工程における対象物の目標地点ということもできる。移動工程における始点と終点は、制御プログラム又は制御プログラムを流用して作成されたシミュレーション用のプログラムに示されているものとする。シミュレータは、始点の座標と、終点の座標と、の距離を所定の移動速度で割ることによって、移動時間を計算する。なお、移動工程における移動時間は、レイアウトに基づいて計算されるのではなく、予め定められた固定値であってもよい。
【0137】
例えば、設定は、少なくとも1の工程の実行時間を含む。この実行時間は、先述した計画時間である。
図6のデータ格納例であれば、時間情報に実行時間が示されている。シミュレータは、少なくとも1の工程についての仮想的な実行として、実行時間に応じたタイマ処理を実行する。先述したように、シミュレータは、制御プログラムに示された処理を、実行時間に応じたタイマ処理に置き換えて、シミュレーションを実行する。実行時間に応じたタイマ処理とは、タイマ処理が示す時間が実行時間に比例するタイマ処理である。
【0138】
例えば、少なくとも1の工程の実行時間は、所定の最小時間の整数倍の時間である。シミュレータは、少なくとも1の工程の実行時間を最小時間で割った値に、複数の装置を制御するための制御プログラムの処理周期を示すスキャンタイムの最小値を乗じた値に基づいて、タイマ処理を実行する。最小時間及びスキャンタイムは、データ記憶部700に記憶されているものとする。先述したように、シミュレータは、制御プログラムの処理を、上記計算に応じた値を含むタイマ処理に置き換えて、シミュレーションを実行する。
【0139】
データ記憶部700は、シミュレータの実行結果を記憶する。このため、データ記憶部700は、結果記憶部として機能する。データ記憶部700は、ユーザが指定した設定ごとに、シミュレータの実行結果を記憶する。例えば、データ記憶部700は、シミュレータの実行結果として、全工程の完了までに要すると予測される時間を記憶する。データ記憶部700は、シミュレータの実行結果として、各装置が工程を開始する開始時点及び終了時点を記憶してもよい。データ記憶部700は、シミュレータによるその他の計算結果を、シミュレータの実行結果をして記憶してもよい。
【0140】
状況取得部704は、シミュレータ上の状況を取得する。状況取得部704は、シミュレータがシミュレーションを実行している最中に、シミュレータによる計算結果を取得する。装置制御部705は、設定保存部703により保存された設定と、シミュレータ上の状況と、に基づいて、シミュレータにおいて次に実行すべき工程を動的に決定し、シミュレータを制御する。装置制御部705による処理は、シミュレーションにおける処理という点で上位制御装置10の装置制御部103の処理とは異なるが、他の点については、装置制御部103の処理と同様である。
【0141】
表示制御部701は、シミュレータの実行結果を示すシミュレーション画面G2を表示させる。例えば、表示制御部701は、ユーザにより設定が変更された場合に、データ記憶部700に記録された実行結果に基づいて、変更前の設定に応じたシミュレータの結果と、変更後の設定に応じたシミュレータの結果と、をシミュレーション画面G2において比較可能に表示させてもよい。比較可能とは、1つのシミュレーション画面G2において、変更前後のシミュレータの結果を両方表示させる態様に限られず、複数のシミュレーション画面G2を利用して、変更前後のシミュレータの結果を両方表示させる態様も含まれる。例えば、表示制御部701は、全行程の終了までに要する時間を、設定の変更前と変更後とで計算し、これらの両方の時間を表示させることによって、変更前後のシミュレーション結果を比較可能に表示させてもよい。
【0142】
例えば、表示制御部701は、シミュレーション画面G2における時間軸を有するチャートC20上に、シミュレーションにおける各工程の開始時間及び終了時間を示す工程画像P200を表示させてもよい。チャートC20における工程画像P200の左端の位置は、工程の開始時間を示す。工程画像P200の右端の位置は、工程の終了時間を示す。工程画像P200の時間軸方向の長さは、開始時間から終了時間までの長さである。工程の開始時間及び終了時間は、任意の方法で表現可能であり、例えば、開始時間及び終了時間の各々の数値がシミュレーション画面G2に表示されてもよい。
【0143】
例えば、表示制御部701は、シミュレータの実行結果をアニメーションとして表示させてもよい。表示制御部701は、複数の工程のうちの少なくとも1の工程については、アニメーションの再生速度を遅くしてもよい。アニメーションを遅くする工程は、任意の工程であってよく、ユーザが指定してもよいし、設定に基づいて自動的に選択されてもよい。第3実施形態では、時間情報が示す時間が相対的に長い工程のアニメーションが遅くなるものとする。ここでは、第3装置50による加工工程を示す工程画像P200のアニメーションが遅くなるものとする。工程画像P200の開始時点及び終了時点の少なくとも一方付近のアニメーションだけが遅くなってもよい。他にも例えば、仮想空間V21におけるアニメーションが遅くなってもよい。アニメーションを遅くする方法自体は、公知の種々の方法を利用可能であり、例えば、動画再生ソフトにおける再生速度を下げる方法を利用してもよい。
【0144】
第3実施形態の制御システム1は、ユーザが指定した設定と、シミュレータ上の状況と、に基づいて、シミュレータにおいて次に実行すべき工程を動的に決定し、シミュレータを制御する。制御システム1は、シミュレータの実行結果を示すシミュレーション画面G2を表示させる。これにより、工程の設計をしやすくなる。ユーザは、シミュレーション画面G2におけるシミュレーション結果を見て、効率が悪い箇所がある場合には、制御システム1における設定を見直すことができる。
【0145】
また、シミュレータは、複数の装置の配置を示す少なくともレイアウトに基づいて、移動工程に要する移動時間を計算する。これにより、より正確な移動時間をシミュレーションすることができるので、シミュレーションの精度が高まる。制御システム1のように、動的に工程が決定され、その工程間の移動工程をロボット24が行う場合には、移動工程の組み合わせは自由度が高いため、その実行時間を予測するのは難しい。この点、シミュレータで移動時間を計算するので、移動工程の実行時間の予測性が高まる。より最適な設定の調整が可能になる。
【0146】
また、制御システム1は、ユーザにより設定が変更された場合に、変更前の設定に応じたシミュレータの結果と、変更後の設定に応じたシミュレータの結果と、をシミュレーション画面において比較可能に表示させる。これにより、設定変更前後のシミュレーション結果を比較しやすくなり、設定変更が有効だったかを理解しやすくなる。
【0147】
また、制御システム1は、シミュレーション画面G2における時間軸を有するチャートC20上に、シミュレーションにおける各工程の開始時間及び終了時間を示す工程画像P200を表示させる。これにより、シミュレーションにおける各工程の開始時間及び終了時間をチャートC20上で視覚的に把握しやすくなり、工程の設計をしやすくなる。
【0148】
また、シミュレータは、少なくとも1の工程についての仮想的な実行として、実行時間に応じたタイマ処理を実行する。これにより、ユーザがシミュレーション用のアプリケーションを作成しなくて済む。
【0149】
また、シミュレータは、少なくとも1の工程の実行時間を最小時間で割った値に、複数の装置を制御するための制御プログラムの処理周期を示すスキャンタイムの最小値を乗じた値に基づいて、タイマ処理を実行する。これにより、シミュレーションを迅速に完了させることができる。ユーザの利便性が高まる。
【0150】
また、制御システム1は、複数の工程のうちの少なくとも1の工程については、アニメーションの再生速度を遅くする。これにより、特定の箇所についてはアニメーションの再生速度が遅くなるので、ユーザが注目したい箇所のシミュレーション結果をじっくりと確認できる。
【0151】
[4.第4実施形態]
第4実施形態では、問題点3(終了時間を考慮していない)を解決する構成について説明する。第4実施形態では、第1実施形態-第3実施形態と同様の構成については説明を省略する。
【0152】
図16は、問題点3(終了時間を考慮していない)の説明図である。第4実施形態でも、第3装置50の稼働効率を高める場合を例に挙げて説明する。
図16の例では、3個目の対象物に対する第3装置50の加工工程が実行中であるものとする。また、2個目の対象物に対する第4装置60の洗浄工程と、9個目の対象物に対する第2装置40の加工工程と、が完了しているものとする。
【0153】
この場合、第3装置50をフル稼働させるために、3個目の対象物に対する第3装置50の加工工程が完了した後、すぐに第3装置50から当該対象物を取り出す移動工程が実行された方がよい。しかしながら、第3装置50の加工工程の終了時間を考慮していないと、第3装置50の加工工程の完了直前に他の工程を実行してしまい、3個目の対象物をすぐに取り出せない可能性がある。他にも例えば、洗浄工程が完了した2個目の対象物が第4装置60に配置されたままになっていると、3個目の対象物をすぐに取り出せない。この場合、第3装置50がCompleteの状態がしばらく継続するので、その分だけ第3装置50の稼働効率が低下する。
【0154】
そこで、第4実施形態の上位制御装置10は、第3装置50の終了時間を考慮して、ある対象物に対する第3装置50の加工工程の完了時に、すぐにその対象物を第3装置50から取り出す移動工程を実行する。これにより、第3装置50をフル稼働させて問題点3を解決し、制御システム1の稼働効率が高まる。以降、第4実施形態の制御システム1の詳細を説明する。
【0155】
図17は、第4実施形態における機能ブロック図である。上位制御装置10において、実測値取得部106が実現される。実測値取得部106は、制御部11を主として実現される。第4実施形態では、設定保存部101が保存する設定は、複数の工程のうちの少なくとも1の工程である第3大工程の実行に要する実行時間である。この実行時間は、第3大工程のうちの第3装置50による加工に要する時間である。例えば、設定データD1に時間情報が含まれているので、設定保存部101は、設定データD1に含まれる時間情報を、設定として保存する。
【0156】
第4実施形態では、状況取得部102が取得する状況は、制御システム1において、少なくとも1の工程である第3大工程の実行が開始された開始時点である。例えば、状況データD2に個々の工程の開始時点が含まれる場合、状況取得部102は、状況データD2に含まれる第3大工程における第3装置50による加工工程の開始時点を取得する。なお、開始時点は、状況データD2に含めなくてもよく、ある対象物に対する第3大工程における第3装置50による加工工程が開始された場合の時間を、データ記憶部100に記録しておけばよい。
【0157】
装置制御部103は、設定保存部101が取得した実行時間と、状況取得部102が取得した開始時点と、に基づいて、次に実行すべき工程を決定する。例えば、装置制御部103は、制御システム1における現在の時間と開始時点との差が、設定保存部101が取得した実行時間以上であることを条件として、第3大工程における第3装置50による加工工程が完了した対象物を所定の場所から取り出す終了工程における第3装置50からの対象物の取り出しを実行可能とする。このような実行条件が設定データD1に定められているものとする。なお、上記の差は、第3大工程における第3装置50による加工工程を開始してからの経過時間である。上記の差ではなく、第3大工程における第3装置50による加工工程が完了すると予想される時間がカウントダウンされてもよい。
【0158】
なお、設定保存部101が取得した実行時間と、状況取得部102が取得した開始時点と、に基づいて、次に実行すべき工程を決定する方法は、上記の例に限られない。例えば、装置制御部103は、制御システム1における現在の時間と開始時点との差が、設定保存部101が取得した実行時間に近づいた場合に、第3装置50から対象物を取り出す移動工程を実行可能としてもよい。装置制御部103は、上記の差が閾値未満である場合に、第3装置50から対象物を取り出す移動工程以外の工程を実行可能としてもよい。この工程は、任意の工程であってよい。
【0159】
実測値取得部106は、少なくとも1の工程である第3大工程に要した時間の実測値を取得する。第3装置50は、この工程を開始してから終了するまでに要した時間を計測し、上位制御装置10に送信する。なお、時間の計測は、上位制御装置10側で実行されてもよい。例えば、上位制御装置10は、第3装置50に対して工程の実行を指示してから、第3装置50から工程の実行完了を受信するまでの時間を計測してもよい。
【0160】
装置制御部103は、実測値が取得された場合には、ユーザにより指定された実行時間に変えて、実測値に基づいて、次に実行すべき工程を決定する。装置制御部103は、実測値が取得された場合には、ユーザにより指定された実行時間ではなく、実測値に基づいて、次に実行すべき工程を決定する。即ち、装置制御部103は、予測値である時間に代えて、実測値に基づいて、次に実行すべき工程を決定する。工程の決定方法は、第3実施形態で説明した通りであり、予測値である時間情報の説明を実測値に読み替えればよい。
【0161】
第4実施形態では、少なくとも1の工程は、所定の場所に取り付けられた対象物に対して実行される工程なので、装置制御部103は、制御システム1における現在の時点と開始時点との差が実行時間以上であることを条件として、少なくとも1の工程が完了した対象物を所定の場所から取り出す移動工程を実行可能とする。先述したように、この移動工程は、第3装置50から対象物を移動させる工程であるが、他の移動工程であってもよい。例えば、第2装置40の加工工程を優先的に実行する場合には、装置制御部103は、第2装置40から対象物を移動させる工程を、上記条件のもとで実行可能としてもよい。
【0162】
第4実施形態の制御システム1は、複数の工程のうちの少なくとも1の工程の実行に要する実行時間と、少なくとも1の工程の実行が開始された開始時点と、に基づいて、次に実行すべき工程を決定する。これにより、第3装置50による加工工程が終了する時間を考慮し、制御システム1の稼働効率がより高まる。第3装置50による加工工程が完了した対象物をすぐに取り出して、次の対象物について第3装置50による加工工程を開始することができる。
【0163】
また、制御システム1は、少なくとも1の工程に要した時間の実測値が取得された場合には、ユーザにより指定された実行時間に変えて、実測値に基づいて、次に実行すべき工程を決定する。これにより、第2大工程における第3装置50による加工に要した時間の実測値が取得された場合には、ユーザにより指定された実行時間ではなく、実測値に基づいて、次に実行すべき工程を決定することによって、制御システム1の実際の状況に沿った制御とし、制御システム1の稼働状況がより高まる。
【0164】
また、制御システム1は、現在の時点と開始時点との差が実行時間以上であることを条件として、少なくとも1の工程が完了した対象物を所定の場所から取り出す移動工程を実行可能とする。これにより、少なくとも1の工程が完了した対象物をすぐに取り出すことができる。このため、制御システム1の稼働状況がより高まる。
【0165】
[5.第5実施形態]
例えば、制御システム1によっては、種々の内段取り工程を実行する必要がある。内段取り工程の一例として、ハンドを付け替える工程を説明する。第2装置40の加工前、第2装置40の加工後、及び第3装置50の加工後の各々で、ロボット24が使用するハンドが異なることがある。以降では、ハンドを付け替える工程を段取り工程と記載する。段取り工程は、内段取り工程の一種である。このため、第5実施形態では、ロボット24がハンドを交換するタイミングを最適化し、制御システム1の稼働効率を高めるようにしている。第5実施形態では、第1実施形態-第4実施形態と同様の構成については説明を省略する。
【0166】
図18は、ハンドの交換を考慮する場合に実行される工程の一例を示す図である。第5実施形態では、第2装置40による加工前の対象物を把持するための第1ハンドH1、第2装置40による加工後の対象物を把持するための第2ハンドH2、及び第3装置50による加工後の対象物を把持するための第3ハンドH3の3種類のハンドが存在する場合を説明する。
図18の例では、第1実施形態-第4実施形態とは個々の工程の詳細が異なる場合を説明するが、大まかな流れは、第1実施形態-第4実施形態と同様である。
【0167】
第5実施形態では、複数の工程は、移動工程に関連する段取り工程を含む。例えば、ロボット24がハンドを装着する工程は、
図18の第1段取り工程、第2段取り工程、及び第3段取り工程となる。例えば、第1段取り工程は、ロボット24が第2置場P2に移動する工程、ロボット24が装着中のハンドを外す工程、ロボット24が第1ハンドH1を装着する工程、及びロボット24が待機位置に移動する工程を含む。第2段取り工程は、ロボット24が第2置場P2に移動する工程、ロボット24が装着中のハンドを外す工程、ロボット24が第2ハンドH2を装着する工程、及びロボット24が待機位置に移動する工程を含む。
【0168】
第3段取り工程は、ロボット24が第2置場P2に移動する工程、ロボット24が装着中のハンドを外す工程、ロボット24が第3ハンドH3を装着する工程、及びロボット24が待機位置に移動する工程を含む。
図18のように工程が実行されることによって、ロボット24は、次の工程で必要なハンドを効率よく装着することができる。このようなハンドの装着は、下記に説明する処理によって、更に効率化できる。
【0169】
第5実施形態では、1以上の装置には、複数種類のハンドの各々を装着可能なロボット24が含まれている。ハンドは、エンドエフェクタの一例である。このため、ハンドと記載した箇所は、エンドエフェクタと読み替えることができる。エンドエフェクタは、ロボット24の手先に取り付ける部材である。エンドエフェクタは、爪と呼ばれる部材であってもよい。エンドエフェクタは、対象物を把持、吸着、接着、又は引っ掛けることによって、対象物を移動させるための部材である。
【0170】
第5実施形態では、装置制御部103は、設定と状況とに基づいて、対象物に対する工程の実行状況に応じて、当該対象物の移動工程の前に、段取り工程を、次に実行すべき工程に決定する。
【0171】
例えば、装置制御部103は、複数種類のエンドエフェクタのうち、次に実行すべき工程で必要なハンドを特定し、当該特定されたハンドをロボット24に装着させる。どの工程でどのハンドが必要かを示す情報は、設定データD1に含まれているものとする。また、ハンドが配置された場所を示す情報も、設定データD1に含まれているものとする。装置制御部103は、次に実行すべき工程を決定した場合に、設定データD1を参照し、必要なハンドを特定する。ハンドをロボット24に装着させる制御自体は、公知の制御を利用可能である。
【0172】
例えば、装置制御部103は、ロボット24に装着済みのハンドを特定し、次に実行すべき工程で必要なハンドがロボット24に装着済みの場合には、当該ハンドをロボットに装着させる工程をスキップしてもよい。ロボット24が装着しているハンドを識別する情報は、状況データD2に含まれているものとする。装置制御部103は、次に実行すべき工程を決定した場合に、設定データD1と状況データD2とを参照し、次の工程で必要なハンドを装着しているか否かを判定すればよい。工程をスキップするとは、その工程を実行せずに次の工程を実行することである。
【0173】
例えば、装置制御部103は、複数種類のハンドの各々に関する工程に要する時間に基づいて、次に実行すべき工程で必要なハンドをロボットに装着させてもよい。例えば、第3装置50による加工に要する時間が第2装置40による加工に要する時間よりも長く、第3装置50を優先させたい場合には、装置制御部103は、第2大工程における第2装置40による加工工程が実行中であり、かつ、第3大工程における第3装置50による加工工程が実行中であることを条件として、第3ハンドH3H3をロボット24に装着させる。
【0174】
例えば、第2大工程における第2装置40による加工工程が実行中であり、かつ、第3大工程における第3装置50による加工工程が実行中ではないことを条件として、第2ハンドH2H2をロボット24に装着させる。例えば、第2大工程における第2装置40による加工工程が実行中ではなく、かつ、第3大工程における第3装置50による加工工程が実行中であることを条件として、第3ハンドH3H3をロボット24に装着させる。なお、これらの条件に時間情報を考慮すれば、ハンドの装着を更に効率化できる。
【0175】
第5実施形態の制御システム1によれば、対象物に対する工程の実行状況に応じて、当該対象物の移動工程の前に、段取り工程を、次に実行すべき工程に決定する。これにより、次の工程を確実に実行し、制御システム1の稼働効率がより高まる。また、制御システム1は、次に実行すべき工程で必要なハンドがロボット24に装着済みの場合には、当該ハンドをロボット24に装着させる工程をスキップすることによって、無駄な工程の実行をすることがなくなり、制御システム1の稼働効率がより高まる。また、制御システム1は、複数種類のハンドの各々に関する工程に要する時間に基づいて、次に実行すべき工程で必要なハンドをロボットに装着させることによって、制御システム1の稼働効率がより高まる。ハンドの装着以外の段取り工程が実行される場合も同様に、制御システム1の稼働効率が高まる。
【0176】
[6.変形例]
本開示は、以上に説明した実施形態に限定されるものではない。本開示の趣旨を逸脱しない範囲で、適宜変更可能である。
【0177】
例えば、ユーザにより指定された複数の工程の組み合わせが連続的に実行されるように、次に実行すべき工程を決定することによって、問題点4(複数の工程を同時実行できない)を解決してもよい。例えば、3個目の対象物に対する内段取り工程における第2装置40からの対象物取出と、4個目の対象物に対する第2大工程における第2装置40への対象物の取り付けと、を連続的に実行できるので、問題点4(複数の工程を同時実行できない)を解決できる。
【0178】
この場合、制御システム1は、第2大工程における第2装置40への対象物の取り付けの前工程が完了し、かつ、第2大工程における第2装置40による加工工程が完了していないことを条件として、第2大工程における第2装置40への対象物の取り付けを実行可能とする。制御システム1は、第2大工程における第2装置40への対象物の取り付けの前工程が完了し、かつ、第2大工程における第2装置40による加工工程が完了したことを条件として、第2大工程における第2装置40への対象物の取り付けと内段取り工程における第2装置40からの対象物取出)を連続的に実行可能としてもよい。
【0179】
例えば、第1実施形態-第5実施形態では、ある対象物に対して、第2装置40が前半の加工を行い、第3装置50が後半の加工を行う場合を説明した。制御システム1は、他の任意の場合に適用可能である。例えば、同じ複数の工程の各々を実行する複数の被制
御装置を含む制御システム1の稼働効率を向上させてもよい。例えば、互いに異なる種類の対象物に対し、互いに異なる工程を実行する複数の装置を含む制御システム1の稼働効率を向上させてもよい。
【0180】
例えば、上記説明した各機能は、制御システム1における任意の装置で実現されるようにすればよい。例えば、ロボットコントローラが制御装置に相当し、上位制御装置10に含まれるものとして説明した機能がロボットコントローラにより実現されてもよい。例えば、上位制御装置10に含まれるものとして説明した機能が複数の装置によって分担されてもよい。
【符号の説明】
【0181】
1 制御システム、10 上位制御装置、11,21,31,41,51,61,71 CPU、12,22,32,42,52,62,72 記憶部、13,23,33,43,53,63,73 通信部、20 ロボットコントローラ、24 ロボット、30 第1装置、40 第2装置、50 第3装置、60 第4装置、70 エンジニアリング装置、74 操作部、75 表示部、D1 設定データ、D2 状況データ、P1 第1置場、P2 第2置場、P3 第3置場、P4 第4置場、100,200,300,400,500,600,700 データ記憶部、101 設定保存部、102 状況取得部、103 装置制御部、104 判定部、105 通知部、106 実測値取得部、201,301,401,501,601 工程実行部、701 表示制御部、702 受付部、703 設定保存部、704 状況取得部、705 装置制御部。