(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022077910
(43)【公開日】2022-05-24
(54)【発明の名称】セルコントローラ
(51)【国際特許分類】
G05B 19/418 20060101AFI20220517BHJP
【FI】
G05B19/418 Z
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2020188984
(22)【出願日】2020-11-12
(71)【出願人】
【識別番号】000149066
【氏名又は名称】オークマ株式会社
(74)【代理人】
【識別番号】110001210
【氏名又は名称】特許業務法人YKI国際特許事務所
(72)【発明者】
【氏名】領木 正人
(72)【発明者】
【氏名】江場 浩二
(72)【発明者】
【氏名】片岡 章人
(72)【発明者】
【氏名】浅井 孝俊
【テーマコード(参考)】
3C100
【Fターム(参考)】
3C100AA22
3C100BB13
3C100CC02
(57)【要約】 (修正有)
【課題】生産プログラムを、加工セルの詳細な制御仕様やPLC言語を熟知していないオペレータであっても、容易に、作成および編集でき、これにより、物品の生産効率をより向上できるセルコントローラを提供する。
【解決手段】作業リソースとして、2以上の加工機130_2,130_3と1以上のロボット130_1とを含む加工セルの動作を制御するセルコントローラ10は、前記加工セルで生産する1以上の品目それぞれに対応して用意される生産プログラムであって、対応する品目の物品を前記加工セルで一つだけ生産する際に実行すべき1以上の工程を記録した生産プログラムに基づいて、前記加工セルの動作を制御する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
作業リソースとして、2以上の加工機と1以上のロボットとを含む加工セルの動作を制御するセルコントローラであって、
前記加工セルで生産する1以上の品目それぞれに対応して用意される生産プログラムであって、対応する品目の物品を前記加工セルで一つだけ生産する際に実行すべき1以上の工程を記録した生産プログラムに基づいて、前記加工セルの動作を制御する、
ことを特徴とするセルコントローラ。
【請求項2】
請求項1に記載のセルコントローラであって、
前記加工セルで生産する1以上の品目それぞれに対応して設けられ、対応する品目の物品の生産のために、前記加工セルへの新規のワークの投入を指令する1以上の生産管理部と、
前記投入の指令を受けた場合に、前記生産プログラムに記録された前記1以上の工程を、順次、実行する複数のシーケンス実行部と、
複数の前記作業リソースそれぞれに対応して設けられた複数のリソース調停部と、
を備え、前記シーケンス実行部は、前記リソース調停部を当該リソース調停部に対応付けられた作業リソースとみなして、前記作業リソースに対する命令を前記リソース調停部に送信し、
前記リソース調停部は、前記複数のシーケンス実行部それぞれが、当該リソース調停部に対応付けられた作業リソースを使用するタイミングを調停する、
ことを特徴とするセルコントローラ。
【請求項3】
請求項2に記載のセルコントローラであって、
前記シーケンス実行部は、現行の工程の実行が完了する前に、次の工程で新たに必要となる作業リソースに対する使用リクエストを、当該作業リソースに対応付けられた前記リソース調停部に出力する、ことを特徴とするセルコントローラ。
【請求項4】
請求項2または3に記載のセルコントローラであって、
前記ロボットは、ハンドが装着される装着部を1以上有しており、
前記シーケンス実行部は、次工程で新たにロボットが必要な場合には、現在の工程に対応する先行ワーク通過判定工程を特定し、先行ワークの生産工程を実行している他のシーケンス実行部が、前記先行ワーク通過判定工程を実行開始、または、前記先行ワーク通過判定工程に関するロボットの使用リクエストを発行してから、前記次工程に関するロボットの使用リクエストを発行し、
前記先行ワーク通過判定工程は、前記次工程で使用する前記装着部と次に前記ロボットを使用再開する次回リソース呼び出し工程で使用する装着部が同じ場合には前記次回リソース呼び出し工程であり、異なる場合あるいは前記次回リソース呼び出し工程が存在しない場合は、前記次工程である、
ことを特徴とするセルコントローラ。
【請求項5】
請求項2から4のいずれか1項に記載のセルコントローラであって、
さらに、前記生産プログラムを構成する複数の工程のうち、並行して実行可能な2以上の工程と、前記作業リソースに前記2以上の工程を並行して実行させる複合指令と、を記録した複合テーブルを格納する複合テーブル格納部を備え、
前記リソース調停部は、互いに異なる2以上の前記シーケンス実行部それぞれから、前記並行して実行可能な2以上の工程の実行指令を受けた場合に、前記2以上の工程の実行指令を前記複合テーブルに基づいて前記複合指令に変換して前記作業リソースに出力する、
ことを特徴とするセルコントローラ。
【請求項6】
請求項2から5のいずれか1項に記載のセルコントローラであって、
互いに独立して稼働する2以上の前記生産管理部を備えており、
前記セルコントローラは、前記加工セルに、2以上の前記品目の物品を並行して生産させる、
ことを特徴とするセルコントローラ。
【請求項7】
請求項2から6のいずれか1項に記載のセルコントローラであって、さらに、
前記工程の実行に関する異常の有無を監視し、前記異常が検出された場合には、前記異常が検出された工程の先頭、または、前記工程の先頭より前に設定されたリトライポイントに戻って、前記工程を含む1以上の工程を再実行させるリトライ指令を、前記シーケンス実行部に発行するリトライ判定部を備える、ことを特徴とするセルコントローラ。
【請求項8】
請求項7に記載のセルコントローラであって、
前記シーケンス実行部は、前記リトライ指令により再実行が指定された工程について、代替の工程が規定されている場合には、前記代替の工程を実行する、ことを特徴とするセルコントローラ。
【請求項9】
請求項7または8に記載のセルコントローラであって、
前記リトライ判定部は、前記工程を実行開始してからの経過時間が予め規定された許容実行時間を超過した場合、および、前記工程を実行中の前記作業リソースからエラーが出力された場合、の少なくとも一方の場合に、前記異常が発生したと判定する、ことを特徴とするセルコントローラ。
【請求項10】
請求項7または8に記載のセルコントローラであって、
さらに、前記リトライ判定部から一つの前記シーケンス実行部に対する、一つの前記工程についての前記リトライ指令の連続発行回数が、予め規定された許容回数を超過した場合に、現在のワークを廃棄するワークスキップ工程を実行する、ワークスキップ実行部を備える、
ことを特徴とするセルコントローラ。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、2以上の加工機と1以上のロボット等の搬送装置とを含む加工セルの動作を制御するセルコントローラを開示する。
【背景技術】
【0002】
従来から、作業リソースとして、2以上の加工機と、1以上のロボットと、を有する加工セルが知られている。かかる加工セルを用いれば、複数のワークを並行して生産することが可能となる。こうした加工セルは、セルコントローラにより制御される。セルコントローラは、加工セルを構成する複数の作業リソースに対して、生産したい物品の品目に応じた指令を出力する。
【0003】
ここで、従来のセルコントローラは、市販の汎用PLCを有することが多かった。この場合、所望の生産工程を実現するために、PLCのプログラミング言語を使って、工場ラインの加工セルの要求仕様に合わせたPLCプログラムが開発されていた。例えば、従来のセルコントローラは、加工の進捗に応じて、各作業リソースに対して、当該作業リソース用のプログラム(例えば加工機であればNCプログラム)の実行を指示する。従来のセルコントローラでは、こうしたセルコントローラの挙動を記述したラダープログラム等のPLCプログラムを作成する必要があった。なお、どのタイミングでどの作業リソースにどのプログラムを出力するかは、加工する品目の種類、使用する作業リソースの種類、加工途中におけるワークの位置等の情報に基づいて決定される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平6-277990号公報
【特許文献2】特開2004-185228号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、こうしたPLCプログラムは、セルコントローラ(ひいてはPLC)が行うべき機能を、全ての入力信号の組み合わせから、動作シーケンスとして記述していた。そのため、加工セルの設備管理者またはオペレータが、自らPLCプログラムの作成や修正を行うことは難しく、通常、PLCプログラムは、その専門知識があるシステムインテグレータにより作成および修正されることが多かった。
【0006】
したがって、PLCを利用したセルコントローラの場合、システムインテグレータに外部委託する必要があるため、運用コストが高いという問題があった。また、生産工程の変更のたびに、システムインテグレータへの外部委託が必要になるため、生産工程の変更に時間がかかるという問題もあった。特に、近年では、多品種少量生産の要望が高く、生産工程は、頻繁に変更される。このように頻繁に発生する生産工程の変更のたびに、外部委託が必要となり、時間がかかることは、大きな問題となっていた。
【0007】
なお、特許文献1には、加工セルを用いて物品を生産する際の製造スケジュールを自動的に生成するセルコントローラが開示されている。しかし、特許文献1には、この製造スケジュールの生成の具体的な手順は明記されていない。特に、特許文献1において、複数のワークを並行して生産する際に、ワーク間での作業リソースの競合を、どのように解消するのかが不明である。
【0008】
また、特許文献2には、各作業リソースに、予め、1以上の作業単位をそれぞれ実行する動作プログラムを記憶させておき、必要に応じて、セルコントローラが、実行順序が付された作業単位の集合で構成される生産指令を各作業リソースに出力するシステムが開示されている。この場合、セルコントローラから生産指令が出力されると、作業リソースは、生産指令で指示された順序で動作プログラムを実行して作業を行う。しかし、こうした特許文献2の技術では、作業リソース側に、特別なプログラムを記憶させておく必要があり、手間であった。また、特許文献2においても、複数のワークを並行して生産する際に、ワーク間での作業リソースの競合を、どのように解消するのかが不明であった。
【0009】
そこで本明細書では、複数のワーク間での作業リソースの競合を避ける生産プログラムを、加工セルの詳細な制御仕様やPLC言語を熟知していないオペレータであっても、容易に、作成および編集でき、これにより、物品の生産効率をより向上できるセルコントローラを開示する。
【課題を解決するための手段】
【0010】
本明細書で開示するセルコントローラは、作業リソースとして、2以上の加工機と1以上のロボットとを含む加工セルの動作を制御するセルコントローラであって、前記加工セルで生産する1以上の品目それぞれに対応して用意される生産プログラムであって、対応する品目の物品を前記加工セルで一つだけ生産する際に実行すべき1以上の工程を記録した生産プログラムに基づいて、前記加工セルの動作を制御する、ことを特徴とする。
【0011】
この場合、前記加工セルで生産する1以上の品目それぞれに対応して設けられ、対応する品目の物品の生産のために、前記加工セルへの新規のワークの投入を指令する1以上の生産管理部と、前記投入の指令を受けた場合に、前記生産プログラムに記録された前記1以上の工程を、順次、実行する複数のシーケンス実行部と、複数の前記作業リソースそれぞれに対応して設けられた複数のリソース調停部と、を備え、前記シーケンス実行部は、前記リソース調停部を当該リソース調停部に対応付けられた作業リソースとみなして、前記作業リソースに対する命令を前記リソース調停部に送信し、前記リソース調停部は、前記複数のシーケンス実行部それぞれが、当該リソース調停部に対応付けられた作業リソースを使用するタイミングを調停してもよい。
【0012】
また、前記シーケンス実行部は、現行の工程の実行が完了する前に、次の工程で新たに必要となる作業リソースに対する使用リクエストを、当該作業リソースに対応付けられた前記リソース調停部に出力してもよい。
【0013】
また、前記ロボットは、ハンドが装着される装着部を1以上有しており、前記シーケンス実行部は、次工程で新たにロボットが必要な場合には、現在の工程に対応する先行ワーク通過判定工程を特定し、先行ワークの生産工程を実行している他のシーケンス実行部が、前記先行ワーク通過判定工程を実行開始、または、前記先行ワーク通過判定工程に関するロボットの使用リクエストを発行してから、前記次工程に関するロボットの使用リクエストを発行し、前記先行ワーク通過判定工程は、前記次工程で使用する前記装着部と次に前記ロボットを使用再開する次回リソース呼び出し工程で使用する装着部が同じ場合には前記次回リソース呼び出し工程であり、異なる場合あるいは前記次回リソース呼び出し工程が存在しない場合は、前記次工程であってもよい。
【0014】
また、さらに、前記生産プログラムを構成する複数の工程のうち、並行して実行可能な2以上の工程と、前記作業リソースに前記2以上の工程を並行して実行させる複合指令と、を記録した複合テーブルを格納する複合テーブル格納部を備え、前記リソース調停部は、互いに異なる2以上の前記シーケンス実行部それぞれから、前記並行して実行可能な2以上の工程の実行指令を受けた場合に、前記2以上の工程の実行指令を前記複合テーブルに基づいて前記複合指令に変換して前記作業リソースに出力してもよい。
【0015】
また、互いに独立して稼働する2以上の前記生産管理部を備えており、前記セルコントローラは、前記加工セルに、2以上の前記品目の物品を並行して生産させてもよい。
【0016】
また、さらに、前記工程の実行に関する異常の有無を監視し、前記異常が検出された場合には、前記異常が検出された工程の先頭、または、前記工程の先頭より前に設定されたリトライポイントに戻って、前記工程を含む1以上の工程を再実行させるリトライ指令を、前記シーケンス実行部に発行するリトライ判定部を備えてもよい。
【0017】
この場合、前記シーケンス実行部は、前記リトライ指令により再実行が指定された工程について、代替の工程が規定されている場合には、前記代替の工程を実行してもよい。
【0018】
また、前記リトライ判定部は、前記工程を実行開始してからの経過時間が予め規定された許容実行時間を超過した場合、および、前記工程を実行中の前記作業リソースからエラーが出力された場合、の少なくとも一方の場合に、前記異常が発生したと判定してもよい。
【0019】
また、さらに、前記リトライ判定部から一つの前記シーケンス実行部に対する、一つの前記工程についての前記リトライ指令の連続発行回数が、予め規定された許容回数を超過した場合に、現在のワークを廃棄するワークスキップ工程を実行する、ワークスキップ実行部を備えてもよい。
【発明の効果】
【0020】
本明細書で開示するセルコントローラによれば、オペレータは、対応する品目の物品を加工セルで一つだけ生産する際に実行すべき1以上の工程を記録した生産プログラムを作成すればよい。かかる生産プログラムは、オペレータの知識だけで作成できる。その結果、外部の専門家にプログラムの作成を依頼する必要がない。結果として、生産プログラムの作成および編集にかかる時間を削減できるため、物品の生産効率をより向上できる。また、セルコントローラが、リソース調停部を有する場合、オペレータが複雑な生産プログラムを作成しなくても、ワーク間の作業リソースの競合を避けることができる。
【図面の簡単な説明】
【0021】
【
図1】セルコントローラと、当該セルコントローラの制御対象である加工セルと、を示す図である。
【
図4】第一品目の物品を生産するための生産プログラムの一例を示す図である。
【
図5】第二品目の物品を生産するための生産プログラムの一例を示す図である。
【
図6】第一生産管理部の処理の流れを示すフローチャートである。
【
図7】シーケンス実行部の処理の流れの前半を示すフローチャートである。
【
図8】シーケンス実行部の処理の流れの後半を示すフローチャートである。
【
図9】
図7、
図8のロボット用処理の流れを示すフローチャートである。
【
図10】先行ワーク通過判定工程カウントを説明する図である。
【
図11】リソース調停部の処理の流れを示すフローチャートである。
【
図12】
図11の選択処理の流れを示すフローチャートである。
【
図13】他の具体例におけるシーケンス実行部の処理の前半の流れを示すフローチャートである。
【
図14】他の具体例におけるシーケンス実行部の処理の後半の流れを示すフローチャートである。
【
図16】他の具体例のセルコントローラの機能ブロック図である。
【
図18】複合動作判定部を有するリソース調停部の処理の前半の流れを示すフローチャートである。
【
図19】複合動作判定部を有するリソース調停部の処理の後半の流れを示すフローチャートである。
【
図20】セルコントローラのシミュレーション結果を示す図である。
【
図21】セルコントローラの他のシミュレーション結果を示す図である。
【
図22】セルコントローラの他のシミュレーション結果を示す図である。
【
図23】他の具体例のセルコントローラの一部構成を示す図である。
【
図24】リトライポイントを付記した生産プログラムの一例を示す図である。
【
図25】代替の工程を追記した生産プログラムの一例を示す図である。
【
図26】他の具体例のセルコントローラの一部構成を示す図である。
【発明を実施するための形態】
【0022】
以下、図面を参照してセルコントローラ10の構成について説明する。
図1は、セルコントローラ10と、当該セルコントローラ10の制御対象である加工セル100と、を示す図である。また、
図2は、セルコントローラ10の機能ブロック図であり、
図3は、
図2の要部を抽出した図である。
【0023】
はじめに、制御対象である加工セル100について説明する。加工セル100は、2以上の加工機102,104を有しており、ワークに対して様々な加工を施す。本例の加工セル100は、金属素材を加工する金属加工機を2つ有している。第一加工機102は、金属製のワークに対して切削加工を施す切削加工機、具体的には、旋盤である。第一加工機102は、メインスピンドル106とサブスピンドル108を有しており、メインスピンドル106からサブスピンドル108へのワークの受け渡しを自動で行うことができる。そのため、例えば、一つのワークに対して、メインスピンドル106を用いたワーク正面への加工と、サブスピンドル108を用いたワーク背面への加工と、を連続して自動的に施すことができる。第二加工機104も、第一加工機102と同様の構成であり、メインスピンドル106とサブスピンドル108とを有している。なお、加工機102,104のチャックには、ワークを保持するための爪が取り付けられるが、この爪は、ワークの形状に応じて変更する必要がある。そのため、加工セル100には、複数種類の爪を保管した爪ストッカ114が設けられている。
【0024】
ここで、第一加工機102と第二加工機104は、パラレルで利用されてもよいし、シリアルで利用されてもよい。したがって、第一加工機102で加工されたワークは、第二加工機104に投入されず、かつ、第二加工機104で加工されたワークは、第一加工機102に投入されない構成としてもよい。例えば、第一加工機102で第一品目のワークを加工し、第二加工機104で第二品目のワークを加工してもよい。また、別の形態として、第一加工機102で加工されたワークを、第二加工機104に投入し、追加の加工を施すようにしてもよい。例えば、第一品目のワークの荒加工を第一加工機102で行い、このワークの仕上げ加工を第二加工機104で行ってもよい。
【0025】
加工セル100には、さらに、ロボット110も設けられている。ロボット110は、ワークや加工機の爪等を搬送するために設けられている。図示例のロボット110は、複数のリンクが関節を介して連結された多関節型のシリアルマニピュレータである。ロボット110の先端には、ワーク等を保持するためのハンド111a,111bが交換可能に取り付けられている。
図1の例では、ロボット110は、2つのハンド111a,111bが同時に装着可能なダブルハンドタイプとなっている。なお、以下では、二つのハンド111a,111bを区別しない場合は、添え字アルファベットを省略して「ハンド111」と呼ぶ。また、本例では、ダブルハンドタイプのロボット110を用いているが、ロボット110は、1つのハンド111のみが装着可能なシングルハンドタイプでもよい。
【0026】
ハンド111の種類は、保持する物品の形状に応じて選択される。例えば、加工前のワークを保持する場合と、加工後のワークを保持する場合と、では異なる種類のハンドを使用することがある。この場合、シングルハンドタイプのロボット110では、加工前のワークを搬送した後、加工後のワークを搬送する際には、装着するハンド111を交換する。また、
図1に示すようなダブルハンドタイプのロボット110では、一つのロボット110に、加工前のワーク用のハンド111aと、加工後のワーク用のハンド111bと、が装着される。この場合、ロボット110は、加工前のワークと加工後のワークを同時に保持することができるが、加工前の2つのワークあるいは加工後の2つのワークは、同時に保持できない。こうしたロボット110に装着されるハンド111は、ハンドストッカ112に保管されている。
【0027】
加工セル100には、さらに、ワーククリーナ116およびワーク計測装置118が設けられている。ワーククリーナ116は、加工後のワークを洗浄する装置であり、例えば、エアや洗浄液等の洗浄媒体を噴出する装置である。このワーククリーナ116には、同時に二つのワークを投入できる。ワーク計測装置118は、加工前または加工後のワークの形状を計測するもので、例えば、レーザ測定器等を有する。レーザ測定器には、ワークを載置や保持する機構はなく、ワークは、ロボット110に保持された状態で、ワーク計測装置118により測定される。
【0028】
加工セル100には、さらに、ワークの待機場所として、搬入パレット122、搬出パレット124、および、中間置台120が用意されている。搬入パレット122は、未加工のワークの待機場所であり、搬出パレット124は、生産完了して搬出予定のワークの待機場所である。中間置台120は、生産工程の途中において、一時的に、ワークを待機させる場所である。この中間置台120には、2つのワークを同時に投入できる。
【0029】
セルコントローラ10は、こうした加工セル100の動作を制御する。より具体的には、セルコントローラ10は、必要な品目の物品を必要数だけ生産するために、加工セル100を構成する装置(例えば加工機やロボット110、ワーク計測装置118等)に指令を与える。なお、以下では、加工セル100の構成要素のうち、セルコントローラ10から指令を受け取る要素を「作業リソース130」と呼ぶ。
図1の例では、複数ある構成要素のうち、第一加工機102、第二加工機104、および、ロボット110が、作業リソース130として機能するものとする。
【0030】
セルコントローラ10は、物理的には、プロセッサ12と、メモリ14と、通信インターフェース(以下「通信I/F16」という)と、入力装置18と、出力装置20と、を有したコンピュータである。この「コンピュータ」には、コンピュータシステムを一つの集積回路に組み込んだマイクロコントローラも含まれる。また、プロセッサ12とは、広義的なプロセッサを指し、汎用的なプロセッサ(例えばCPU:Central Processing Unit、等)や、専用のプロセッサ(例えばGPU:Graphics Processing Unit、ASIC:Application Specific Integrated Circuit、FPGA:Field Programmable Gate Array、プログラマブル論理デバイス、等)を含むものである。また、以下に述べるプロセッサ12の動作は、1つのプロセッサ12によって成されるのみでなく、物理的に離れた位置に存在する複数のプロセッサ12の協働により成されるものであってもよい。同様に、メモリ14も、物理的に一つの要素である必要はなく、物理的に離れた位置に存在する複数のメモリ14で構成されてもよい。また、メモリ14は、半導体メモリ(例えばRAM、ROM、ソリッドステートドライブ等)および磁気ディスク(例えば、ハードディスクドライブ等)の少なくとも一つを含んでもよい。
【0031】
通信I/F16は、セルコントローラ10の外部の機器(例えば、ロボット110や加工機のコントローラ(図示せず)や他のコンピュータ等)との間で、データを授受する。この通信I/F16は、外部の機器と、無線で通信してもよいし、有線で通信してもよい。入力装置18は、オペレータからの操作指示を受け付けるもので、例えば、キーボードやマウス、タッチパネル、マイク等を含む。出力装置20は、情報をオペレータに提示するもので、例えば、モニタや、スピーカ、プリンタ等を含む。
【0032】
こうしたセルコントローラ10は、機能的には、
図2に示すような構成を有する。このセルコントローラ10の機能的構成の説明に先立って、セルコントローラ10について簡単に説明する。
【0033】
従来のセルコントローラ10は、市販の汎用PLCを有することが多かった。この場合、所望の生産工程を実現するために、PLCのプログラミング言語を使って、工場ラインの加工セル100の要求仕様に合わせたPLCプログラムが開発されていた。例えば、従来のセルコントローラ10は、加工の進捗に応じて、各作業リソース130に対して、当該作業リソース130用のプログラム(例えば加工機であればNCプログラム)の実行を指示する。従来のセルコントローラ10では、こうしたセルコントローラ10の挙動を記述したラダープログラム等のPLCプログラムを作成する必要があった。なお、どのタイミングでどの作業リソース130にどのプログラムを出力するかは、加工する品目の種類、使用する作業リソース130の種類、加工途中におけるワークの位置等の情報に基づいて決定される。しかし、こうしたPLCプログラムは、セルコントローラ10(ひいてはPLC)が行うべき機能を、全ての入力信号の組み合わせから、動作シーケンスとして記述していた。そのため、加工セル100の設備管理者またはオペレータが、自らPLCプログラムの作成や修正を行うことは難しく、通常、PLCプログラムは、その専門知識があるシステムインテグレータにより作成および修正されることが多かった。
【0034】
したがって、PLCを利用したセルコントローラ10の場合、システムインテグレータに外部委託する必要があるため、運用コストが高いという問題があった。また、生産工程の変更のたびに、システムインテグレータへの外部委託が必要になるため、生産工程の変更に時間がかかるという問題もあった。特に、近年では、多品種少量生産の要望が高く、生産工程は、頻繁に変更される。このように頻繁に発生する生産工程の変更のたびに、外部委託が必要となり、時間がかかることは、大きな問題となっていた。
【0035】
本例のセルコントローラ10は、こうしたPLCプログラムを不要として、オペレータが容易に作成可能な生産プログラムに基づいて、加工セル100の動作を制御する。生産プログラムは、物品を加工セル100で一つだけ生産する際に実行すべき1以上の工程を記録したプログラムである。こうした生産プログラムは、加工セル100で生産する品目の数だけ用意される。
【0036】
図4は、第一品目の物品を生産するための生産プログラムの一例を示す図であり、
図5は、第二品目の物品を生産するための生産プログラムの一例を示す図である。
図4に示す第一品目用の生産プログラムには、第一品目を生産するために実行される複数(図示例では15個)の工程ごとに、工程番号、工程名、使用する作業リソース130の種類、および、作業リソース130を動作させるためのリソースプログラムの識別情報が、互いに、対応付けて記録されている。こうした生産プログラムは、そのパラメータをオペレータが容易に編集できる形式、例えば、表形式やテキスト形式等のような形式でファイルに格納されている。
図4において、作業リソース130のうち、第一加工機102は「NC1」、第二加工機104は「NC2」、ロボット110は「R1」と表記されている。また、リソースプログラムの欄には、各作業リソース130が読み込んで実行するプログラムの識別情報として、当該プログラムの名称が記録されている。
図4の例に従えば、第一品目のワークは、第一加工機102により切削加工され、ロボット110により搬送される。
【0037】
第二品目用の生産プログラムも同様の構成であり、第二品目の物品を生産するために実行される複数(図示例では15個)の工程ごとに、工程番号、工程名、使用する作業リソース130の種類、および、作業リソース130を動作させるためのリソースプログラムの識別情報が、互いに、対応付けて記憶されている。
図5の例では、第二品目のワークは、第二加工機104により切削加工され、ロボット110により搬送される。そして、この
図4、
図5から明らかなとおり、本例の生産プログラムは、単一のワークの生産の工程を順番に記録したものであり、PLC等のプログラム言語に不慣れなオペレータであっても容易に作成でき、修正できる。そして、セルコントローラ10による加工セル100の制御を、かかる生産プログラムに基づいて実行することで、生産工程の変更に対して、オペレータが迅速に対応でき、より効率的な物品の生産が可能となる。
【0038】
次に、セルコントローラ10の機能的構成について
図2、
図3を参照して説明する。セルコントローラ10は、機能的には、
図2に示すように、1以上の生産管理部22_1~22_2と、複数のシーケンス実行部24_1~24_nと、複数のリソース調停部26_1~26_mと、一つの品目別生産プログラム格納部28と、を有している。なお、以下では、第一生産管理部22_1と第二生産管理部22_2を区別しない場合は、「第一」または「第二」の表記を省略するとともに、符号から「_1」または「_2」を削除し、単に、「生産管理部22」と呼ぶ。シーケンス実行部およびリソース調停部についても同様とする。
【0039】
品目別生産プログラム格納部28は、上述した生産プログラムを記憶する。生産プログラムは、加工セル100で生産する1以上の品目それぞれに対応して用意され、記憶される。オペレータは、必要に応じて、この品目別生産プログラム格納部28に、新規の生産プログラムを格納できる。また、オペレータは、必要に応じて、品目別生産プログラム格納部28に格納された生産プログラムに対して編集を加えることができる。
【0040】
生産管理部22は、加工セル100で生産する品目それぞれに対応して設けられており、対応する品目の生産のために、加工セル100への新規のワークの投入を指令する。本例では、加工セル100は、第一品目と第二品目を生産するため、セルコントローラ10は、二つの生産管理部22、すなわち、第一生産管理部22_1と第二生産管理部22_2とを有している。こうした生産管理部22は、実際には、コンピュータ上で起動するアプリケーションである。したがって、メモリ14に記憶された生産管理部22用のアプリケーションプログラムをプロセッサ12が実行することで、コンピュータが、生産管理部22として機能する。本例では、二つの生産管理部22、すなわち、第一生産管理部22_1と第二生産管理部22_2と、を設けているため、二つの生産管理部22用のアプリケーションが互いに独立して起動することになる。
【0041】
生産管理部22は、外部のコンピュータまたはオペレータから、生産指令を受け取る。生産指令には、生産すべき品目の識別情報と、生産すべきロット数と、が含まれている。こうした生産指令を受信すると、生産管理部22は、後述するシーケンス実行部24に、対応する品目の生産プログラムの実行を指令する。かかる指令を行うことで、新規のワークが加工セル100に投入される。したがって、生産管理部22によるシーケンス実行部24への生産プログラムの実行指令は、新規ワークの加工セル100への投入指示として機能する。こうしたシーケンス実行部24への生産プログラムの実行指令は、加工済みワークの数が指定されたロット数に達するまで繰り返される。また、生産管理部22は、加工セル100に現時点で投入されているワークの数や、加工済みのワークの数も管理する。
【0042】
シーケンス実行部24は、生産管理部22からの指令に基づいて、生産管理部22から指定された生産プログラムに記録された1以上の工程を、順次、実行する。このシーケンス実行部24も、生産管理部22と同様に、コンピュータ上で起動するアプリケーションである。したがって、メモリ14に記憶されたシーケンス実行部24用のアプリケーションプログラムをプロセッサ12が実行することで、コンピュータが、シーケンス実行部24として機能する。本例では、複数のシーケンス実行部24を設けているため、複数のシーケンス実行部24用のアプリケーションが互いに独立して起動することになる。
【0043】
複数のシーケンス実行部24は、互いに独立して動作する。また、各シーケンス実行部24は、後述するリソース調停部26を当該リソース調停部26に対応付けられた作業リソース130とみなして、作業リソース130に対する指令を前記リソース調停部26に送信する。具体的には、シーケンス実行部24は、
図3に示すように、作業リソース130の使用リクエストREQnmや、作業リソース130へのコマンドCMDnmをリソース調停部26に送信し、リソース調停部26は、リクエストの許可通知ACKnmや、コマンドの実行完了を示すDONEnmをシーケンス実行部24に送信する。なお、「REQnm」のうち、「n」は、要求元のシーケンス実行部24_nの番号を、「m」は、要求先のリソース調停部26_mの番号を、それぞれ示している。「CMDnm」、「ACKnm」、「DONEnm」における「n」、「m」の意味も同じである。
【0044】
第一生産管理部22_1は、予め規定の数(例えば4つ)のシーケンス実行部24を、リングバッファ的に順次使用して、第一品目の生産を実行してゆく。例えば、第一生産管理部22_1は、第一シーケンス実行部24_1に1番目のワークの、第二シーケンス実行部24_2に2番目のワークの、第三シーケンス実行部24_3に3番目のワークの、第四シーケンス実行部24_4に4番目のワークの投入を指示する。そして、1番目のワークの生産が完了すれば、第一生産管理部22_1は、第一シーケンス実行部24_1に対して5番目のワークの投入を指示する。同様に、第二生産管理部22_2も、予め規定の数(例えば4つ)のシーケンス実行部24を、リングバッファ的に順次使用して、ワーク加工指令を投入してゆくことで、第二品目の生産を実行してゆく。
【0045】
ここで、こうしたシーケンス実行部24は、2以上であれば、その個数は、特に限定されない。ただし、作業リソース130が、作業を行わずに無駄に待機する時間を削減し、効率的な生産を実現するためには、シーケンス実行部24は、加工セル100に同時に投入可能なワークの最大数(以下「最大投入可能数Wmax」と呼ぶ)だけ設ける。第一品目と第二品目を並列生産する場合、最大投入可能数Wmaxは、加工セル100に同時に投入可能な第一品目のワークの最大数(以下「第一投入可能数W1max」という)と、加工セル100に同時に投入可能な第二品目のワークの最大数(以下「第二投入可能数W2max」という)と、の合計値となる。すなわち、Wmax=W1max+W2maxである。
【0046】
図4、
図5の生産プログラムに従って、第一品目および第二品目の物品を並行して生産する場合、第一品目のワークは、ロボット110、第一加工機102、中間置台120、ワーククリーナ116の4か所に同時に位置することができる。そのため、この場合、第一投入可能数W1maxは、「4」となる。なお、ロボット110は、一時的に二つのワークを保持することができるが、本例では、2つのワークを1つの作業リソース130に割り当てた状態が、工程を跨いで維持することはない。そのため、ロボット110に位置するワークの数は、「1」とカウントできる。同様に、第一加工機102に位置するワークの数も「1」とカウントできる。
【0047】
また、この場合、第二品目のワークは、ロボット110、第二加工機104、中間置台120、ワーククリーナ116の4か所に同時に位置することができる。そのため、第二投入可能数W2maxも、「4」となる。そして、最大投入可能数Wmaxは、Wmax=4+4=8となる。シーケンス実行部24は、この最大投入可能数Wmax=8だけ設ければ、最大投入可能数Wmaxのワークを並列で生産することができ、作業リソース130の無駄な待機時間を削減でき、効率的な生産が可能となる。なお、シーケンス実行部24を、最大投入可能数Wmax=8より多く設けてもよいが、生産効率の更なる向上が望めない一方で、コンピュータリソースの使用量が増加する点に留意する必要がある。
【0048】
リソース調停部26は、複数の作業リソース130それぞれに対応して設けられ、複数のシーケンス実行部24それぞれが、対応する作業リソース130を使用するタイミングを調停する。
図1の例の場合、作業リソース130は、第一加工機102、第二加工機104、および、ロボット110の三つであるため、リソース調停部26は、三つ設けられる。そして、例えば、第一リソース調停部26_1は、ロボット110(第一作業リソース130_1)に、第二リソース調停部26_2は、第一加工機102(第二作業リソース130_2)に、第三リソース調停部26_3は、第二加工機104(第三作業リソース130_3)に、それぞれ、対応付けられる。
【0049】
このリソース調停部26も、生産管理部22、シーケンス実行部24と同様に、コンピュータ上で起動するアプリケーションである。したがって、メモリ14に記憶されたリソース調停部26用のアプリケーションプログラムをプロセッサ12が実行することで、コンピュータが、リソース調停部26として機能する。本例では、複数のリソース調停部26を設けているため、複数のリソース調停部26用のアプリケーションが互いに独立して起動することになる。
【0050】
リソース調停部26は、上述した通り、複数のシーケンス実行部24それぞれが、対応する作業リソース130を使用するタイミングを調停する。この調停のために、リソース調停部26は、複数のシーケンス実行部24からの使用リクエストREQnmを随時、受け付ける。そして、対応する作業リソース130が開放されれば、受信している使用リクエストの中から一つの使用リクエストREQnmを、予めプログラムで規定された優先順位に基づいて選択する。ここで、優先順を決定するアルゴリズムは、機器の構成に応じて、適宜変更可能である。本例では、次の(1)から(3)に従い、一つの使用リクエストREQnmを選択する。
(1)同一の品目の使用リクエストREQnmのうち、工程番号が大きいリクエストを優先する。
(2)異なる品目の使用リクエストREQnmを比較する場合は、使用リクエストREQnmを発行してからの待ち時間が長いリクエストを優先する。
(3)異なる品目の使用リクエストREQnmの待ち時間が同じ場合、第一品目の使用リクエストREQnmを優先する。
【0051】
一つの使用リクエストREQnmが選択できれば、リソース調停部26は、当該使用リクエストREQnmを発行したシーケンス実行部24に、許可通知ACKnmを出力する。この許可通知ACKnmを受ければ、シーケンス実行部24は、生産プログラムに登録されたリソースプログラムの識別情報を含むコマンドCMDnmを、リソース調停部26に出力する。リソース調停部26は、このコマンドCMDnmを、対応する作業リソース130に出力する。作業リソース130が、送信されたコマンドCMDnmに従い、動作することで、ワークの加工工程が実行される。作業リソース130は、コマンドCMDnmの実行が完了すれば、完了通知DONEnmをリソース調停部26に出力する。リソース調停部26は、受信した完了通知DONEnmをシーケンス実行部24に送信する。シーケンス実行部24は、完了通知DONEnmを受信すれば、作業リソース130の開放、あるいは、次の工程のコマンドCMDnmをリソース調停部26に通知する。以降、同様の処理を全てのリソース調停部26で繰り返すことで、ワークが生産される。
【0052】
次に、こうした生産管理部22、シーケンス実行部24、リソース調停部26それぞれの処理の流れについて説明する。
図6は、第一生産管理部22_1の処理の流れを示すフローチャートである。第一生産管理部22_1は、オペレータまたは外部のコンピュータから生産指令を受信するまで待機する(S100)。生産指令には、生産すべき品目の識別情報と、そのロット数L1と、が含まれている。生産指令を受信すれば、第一生産管理部22_1は、第一投入数W1nowおよび第一完了数W1doneを「0」にリセットする(S102)。第一投入数W1nowは、現時点で、加工セル100内にある第一品目のワークの数である。また、第一完了数W1doneは、現時点で、生産完了した第一品目のワークの数である。
【0053】
次に、第一生産管理部22_1は、第一完了数W1doneとロット数L1とを比較する(S104)。W1done<L1であれば、第一生産管理部22_1は、続いて、第一品目用の新たなワークが投入可能か否かを確認する。具体的には、第一生産管理部22_1は、第一投入数W1nowと第一投入可能数W1maxとの比較(S106)と、工程カウントCNT=0の先行ワークの有無の確認(S108)と、を行う。なお、工程カウントCNTとは、各シーケンス実行部24が、現在実行している工程の番号の値であり、この工程カウントCNTの値は、シーケンス実行部24において管理されている。
【0054】
W1now≧W1maxの場合、加工セル100には、第一品目用のワークを新たに投入できる余裕がないといえる。また、W1now<W1maxであったとしても、CNT=0の先行ワーク、すなわち、何らかの理由により、生産工程が初期から進んでいない先行ワークが存在する場合には、新規なワークを投入しても、当該新規なワークに対する生産工程は進行できない。したがって、W1now≧W1maxの場合(S106でNo)、または、CNT=0の先行ワークがある場合(S108でYes)、第一生産管理部22_1は、シーケンス実行部24に対して生産プログラムの実行を指示することなく、ステップS114に進む。
【0055】
一方、W1now<W1max(S106でYes)、かつ、CNT=0の先行ワークがない場合(S108でNo)、第一生産管理部22_1は、ビジーでないシーケンス実行部24に対して、生産プログラムの実行を指示(S110)したうえで、第一投入数W1nowをインクリメントする(S112)。この実行指示は、第一生産管理部22_1が、シーケンス実行部24に対して、実行すべき生産プログラムの識別情報(例えば名称やアドレス等)を引数として渡すことで行える。
【0056】
ステップS114において、第一生産管理部22_1は、シーケンス実行部24から加工完了の通知の有無を監視する。シーケンス実行部24から加工完了の通知があった場合には、第一投入数W1nowをデクリメントし、第一完了数をインクリメントする(S116)。一方、加工完了の通知がない場合には、これらのパラメータを変更することなく、ステップS104に戻る。そして、W1done≧L1(S104でNo)になるまで、ステップS104からS116を繰り返す。なお、ここでは、第一生産管理部22_1を例に挙げて説明したが、第二生産管理部22_2の処理の流れも同じである。
【0057】
次に、シーケンス実行部24の処理の流れについて
図7、
図8を参照して説明する。シーケンス実行部24は、生産管理部22により生産プログラムの実行が指示されるまで待機する(S200)。生産プログラムの実行が指示されれば、シーケンス実行部24は、工程カウントCNTを「0」にリセットする(S201)。続いて、生産管理部22から指定された生産プログラムを読み込み、最初の工程の実行に使用する作業リソース130を特定する(S202)。これは、生産プログラム(
図4、
図5参照)のリソース欄を参照することで特定できる。作業リソース130として、ロボット110を使用する場合(S204でYes)、シーケンス実行部24は、所定のロボット用処理(S206)を実行するが、これについては、後述する。
【0058】
シーケンス実行部24は、使用する作業リソース130が特定できれば、続いて、特定された作業リソース130の使用リクエストREQnmを発行する(S208)。この使用リクエストREQnmは、作業リソース130に対応するリソース調停部26に出力される。したがって、ロボット110を使用する場合、第nシーケンス実行部24_nは、ロボット110に対応する第一リソース調停部26_1に対する使用リクエストREQn1を出力する。また、ロボット110と第一加工機102の双方を使用する場合、第nシーケンス実行部24_nは、ロボット110に対応する第一リソース調停部26_1に対する使用リクエストREQn1と、第一加工機102に対応する第二リソース調停部26_2に対する使用リクエストREQn2と、の双方を出力する。各使用リクエストREQnmには、品目の識別情報と、シーケンス実行部24で管理している工程カウントCNTの値と、が含まれている。
【0059】
その後、シーケンス実行部24は、使用を要求している全ての作業リソース130について、使用が許可されるまで、すなわち、許可通知ACKnmを受信するまで待機する(S210)。全ての作業リソース130の使用が許可された場合、シーケンス実行部24は、工程カウントCNTをインクリメント(S212)したうえで、使用する作業リソース130へのコマンドCMDnmを、それぞれ、対応するリソース調停部26に出力する(S214)。これにより、コマンドCMDnmがリソース調停部26を介して作業リソース130に入力され、当該コマンドCMDnmに応じた処理が進められる。シーケンス実行部24は、コマンドCMDnmの実行が完了、すなわち、完了通知DONEnmを受信するまで待機する(S216)。
【0060】
コマンドCMDnmの実行が完了すれば(S216でYes)、シーケンス実行部24は、工程カウントCNTを、最大工程数CNTmaxと比較する(S218)。CNT≧CNTmaxの場合(S218でNo)、生産プログラムの実行が完了したということになる。この場合、シーケンス実行部24は、全ての作業リソースを開放、すなわち、使用リクエストREQnmをOFFしたうえで(S220)、加工完了したことを生産管理部22に通知する(S222)。生産管理部22は、この通知を受ければ、投入数Wnowをデクリメントし、完了数Wdoneをインクリメントする。
【0061】
一方、ステップS218で、CNT<CNTmaxの場合(S218でYes)、未実行の工程があるということである。したがって、この場合、シーケンス実行部24は、次の工程を実行する。具体的には、シーケンス実行部24は、次の工程で不要の作業リソース130を開放、すなわち、使用リクエストREQnmをOFFしたうえで(S224)、次の工程で新規に使用する作業リソース130を特定する(S226)。そして、新規に使用する作業リソース130がロボット110を含む場合(S230でYes)には、所定のロボット用処理(S206)を行ったうえで、また、ロボット110を含まない場合は(S230でNo)、即座に、使用する作業リソース130への使用リクエストREQnmを発行する(S232)。そして、使用を要求する全ての作業リソース130について許可が得られれば(S234でYes)、ステップS212に進む。そして、以降、同様の処理を、CNT≧CNTmaxになるまで繰り返す。
【0062】
ここで、ロボット用処理について
図9、
図10を参照して説明する。
図9は、ロボット用処理の流れを示すフローチャートである。
図10は、後述する先行ワーク通過判定工程カウントCNTsを説明する図である。加工セル100に設けられた作業リソース130のうち、ロボット110は、ワークを搬送する機能を持つ。換言すれば、ロボット110は、加工機等にワークを投入するローディング装置として機能するとともに、加工機等からワークを取り出すアンローディング装置としても機能する。かかるロボット110に対する使用リクエストREQnmは、他のワークの進捗を考慮して発行しなければ、先行ワークと後続ワークが互いに、相手の工程進行を阻害し合うデッドロックが発生する。
【0063】
例えば、ロボット110がシングルハンドタイプの場合において、先行ワークを第一加工機102から取り外す前に、後続ワークに対してロボット110の使用許可が出されたとする。この場合、先行ワークが第一加工機102に残存しているため、後続ワークを第一加工機102に取り付けることができず、また、ロボット110が後続ワークに占有されているため、先行ワークを第一加工機102から取り外すことができない。結果として、後続ワークを第一加工機102に取り付ける工程と、先行ワークを第一加工機102から取り外す工程と、がいずれも、それ以上、進行できないデッドロックとなる。
【0064】
ロボット110がダブルハンドタイプの場合には、二つのワークを同時に保持可能であるため、こうした問題は、多少は、軽減される。しかし、上述した通り、ダブルハンドタイプの場合、ロボット110は、未加工ワークを保持するためのハンドと、切削加工後のワークを保持するためのハンドと、を有している。そのため、ロボット110は、切削加工後のワークは、一つしか保持できない。その結果、先行ワークが、切削加工後用のハンドを用いてワーククリーナ116から取り出される場合に、後続ワークを切削加工後用のハンドを用いてワーククリーナ116に取り付けるための使用リクエストREQnmが発行され、後続ワークにロボット110が割り当てられると、デッドロックが生じる。
【0065】
そこで、本例では、ロボット110の使用を新たに要求する場合には、先行ワークとの調整を行うロボット用処理を実行する。ロボット用処理では、まず、現在の工程カウントCNTに対応する先行ワーク通過判定工程カウントCNTsを特定する。先行ワーク通過判定工程カウントCNTsは、後続ワークが、ロボット110の使用リクエストREQnmを発行する際に、先行ワークが完了しておくべき工程カウントである。
【0066】
この先行ワーク通過判定工程カウントCNTsについて、具体的に説明する。先行ワーク通過判定工程カウントCNTsを決定する際には、次回リソース呼び出し工程と、装着部と、が重要となる。次回リソース呼び出し工程とは、現在の工程以降、最初に、ロボット110の使用を停止した後、再び、ロボット110の使用を再開する工程である。また、ロボット110には、ハンドを装着する装着部が設けられている。この装着部の個数は、シングルハンドタイプの場合は1つであり、ダブルハンドタイプの場合は2つである。次工程で使用する装着部と、次回リソース呼び出し工程で使用する装着部が同じ場合には、この次回リソース呼び出し工程の値が先行ワーク通過判定工程カウントCNTsとして設定され、次工程で使用する装着部と、次回リソース呼び出し工程で使用する装着部が異なる場合、あるいは、次回リソース呼び出し工程が存在しない場合には、次工程の値が先行ワーク通過判定工程カウントCNTsとして設定される。
【0067】
図10は、工程カウントCNTと、先行ワーク通過判定工程カウントCNTsと、の関係の一例を示す図である。
図10の例において、後続ワーク(シーケンス実行部24)は、工程カウントCNT=0,7,11,13が完了したタイミングで、ロボット110の使用リクエストREQn1を発行する。この工程カウントCNT=0,7,11,13について、先行ワーク通過判定工程カウントCNTsが設定されている。
【0068】
シングルハンドタイプの場合、工程カウントCNT=0の次の工程カウントCNT=1で使用する装着部は「h1」である。また、工程カウントCNT=0からみて、次回リソース呼び出し工程は、工程カウントCNT=8であり、この工程カウントCNT=8で使用する装着部は、「h1」である。したがって、シングルハンドタイプの場合、工程カウントCNT=0に対応する先行ワーク通過判定工程カウントCNTsは、「8」となる。同様に、工程カウントCNT=7に対応する先行ワーク通過判定工程カウントCNTsは、「12」となる。また、工程カウントCNT=13に関しては、次回リソース呼び出し工程が存在しないため、先行ワーク通過判定工程カウントCNTsは、次工程のカウント値、すなわち、「14」となる。
【0069】
一方、ダブルハンドタイプの場合、工程カウントCNT=0の次の工程カウントCNT=1で使用する装着部は、「h1」である。また、工程カウントCNT=0からみて、次回リソース呼び出し工程は、工程カウントCNT=8であり、この工程カウントCNT=8で使用する装着部は、「h2」である。つまり、次工程で使用する装着部「h1」と次回リソース呼び出し工程で使用する装着部「h2」は、異なる。そのため、この場合、工程カウント=0に対応する先行ワーク通過判定工程カウントCNTsは、「1」となる。また、工程カウントCNT=7の場合、次の工程カウントCNT=8で使用する装着部「h2」と、次回リソース呼び出し工程カウントCNT=12で使用する装着部「h2」と、が同じである。そのため、工程カウントCNT=7に対応する先行ワーク通過判定工程カウントCNTsは、「12」となる。こうした工程カウントCNTと先行ワーク通過判定工程カウントCNTsとの関係は、シーケンス実行部24が、生産プログラムを解釈することで自動的に判別してもよいし、予め、
図10に示すような対応表をオペレータ側で用意しておいてもよい。
【0070】
ロボット用処理では、まず、現在の工程カウントCNTに対応する先行ワーク通過判定工程カウントCNTsを特定する(S240)。次に、シーケンス実行部24は、先行ワークの現在の工程カウント(以下「先行工程カウントCNTp」という)と、特定された先行ワーク通過判定工程カウントCNTsと、を比較する(S242)。比較の結果、CNTp<CNTsの場合(S242でNo)は、ロボット110への使用リクエストREQnmは、発行せず、そのまま待機する。一方、CNTp≧CNTsの場合(S242でYes)、シーケンス実行部24は、ステップS208またはS232に進み、ロボット110への使用リクエストREQnmを発行する。
【0071】
このように、デッドロックの原因となる作業リソース130については、先行ワークの進捗を考慮して使用リクエストREQnmを発行することで、デッドロックを確実に防止できる。なお、本例では、ロボット110についてのみ、先行ワークの進捗を考慮したが、デッドロックが発生し得る作業リソース130であれば、他の作業リソース130についても、先行ワークの進捗を考慮してもよい。また、本例では、シーケンス実行部24において、先行ワークの進捗を把握し、使用リクエストREQnmの発行タイミングを調整している。しかし、シーケンス実行部24ではなく、リソース調停部26において、先行ワークの進捗を把握し、許可通知ACKnmの発行タイミングを調整するようにしてもよい。また、
図10の例では、ロボット110に一度装着したハンドは、生産プログラムの終了まで、交換しないこととなっている。しかし、必要に応じて、一つの装着部に装着されるハンドの種類は、交換されてもよい。
【0072】
次に、リソース調停部26の処理について説明する。
図11は、リソース調停部26の処理の流れを示すフローチャートである。リソース調停部26は、
図11の処理と並行して、随時、複数のシーケンス実行部24から、対応する作業リソース130の使用リクエストREQnmを受け付けている。その状態で、対応する作業リソース130が開放されれば(S300でYes)、リソース調停部26は、その時点で受信している複数の使用リクエストの中から一つの使用リクエストREQnmを選択する(S302)。
図12は、この選択処理の流れを示すフローチャートである。
【0073】
図12に示す通り、リクエストを選択する際には、まず、第一品目に関する使用リクエストのうち、工程カウントCNTが最大の第一使用リクエストREQ1と、その待ち時間Tw1を、特定する(S320)。続いて、第二品目に関する使用リクエストのうち、工程カウントCNTが最大の第二使用リクエストREQ2と、その待ち時間Tw2を、特定する(S322)。次に、リソース調停部26は、第一使用リクエストREQ1の待ち時間Tw1と、第二使用リクエストREQ2の待ち時間Tw2と、を比較する(S324)。
【0074】
比較の結果、待ち時間Tw1が、待ち時間Tw2と同じ、または、待ち時間Tw2より大きい場合(S324でYes)、リソース調停部26は、第一使用リクエストREQ1を選択する(S326)。一方、待ち時間Tw1が、待ち時間Tw2より小さい場合(S324でNo)、リソース調停部26は、第二使用リクエストREQ2を選択する(S328)。なお、このステップS326,S328で選択された使用リクエストを以降の説明では、「使用リクエストREQnm」と表記する。
【0075】
図12のフローに従って一つの使用リクエストREQnmが選択できれば、続いて、リソース調停部26は、選択された使用リクエストREQnmを発行した第nシーケンス実行部24_nに、許可通知ACKnmを送信する(S304)。これにより、第mリソース調停部26_mに対応する第m作業リソース130_mが、第nシーケンス実行部24_nにより確保されることになる。
【0076】
許可通知ACKnmを発行した後、リソース調停部26は、シーケンス実行部24からコマンドCMDnmを受信するまで待機する(S306)。コマンドCMDnmを受信すれば、リソース調停部26は、当該コマンドCMDnmを、対応する作業リソース130に送信する(S308)。これにより、作業リソース130は、コマンドCMDnmで示されたリソースプログラムに従い、動作する。作業リソース130は、リソースプログラムで指示された動作を完了すれば、リソース調停部26に、完了通知DONEnmを送信する。リソース調停部26は、この完了通知DONEnmを受信すれば(S310でYes)、当該完了通知DONEnmをシーケンス実行部24に送信する(S312)。その後、リソース調停部26は、シーケンス実行部24から開放指示を受けた場合には(S314でYes)、対応する作業リソース130を開放し(S316)、ステップS300に戻る。一方、開放指示がない場合(S314でNo)、リソース調停部26は、ステップS306に戻り、次のコマンドCMDnmを受信するまで待機する。
【0077】
以上の説明から明らかなとおり、本例によれば、複数のシーケンス実行部24からの使用リクエストREQnmの競合を、リソース調停部26において調停している。そのため、オペレータは、ワーク間の競合を意識することなく、単一のワーク生産のためのプログラム、すなわち、生産プログラムのみを作成すればよい。そして、これにより、物品生産において、専門性の高いシステムインテグレータが不要となるため、コストを低減できる。また、加工セル100の制御のためのプログラムの作成および修正のための時間を短縮できるため、生産効率をより向上できる。
【0078】
次に、他の具体例について説明する。この具体例では、シーケンス実行部24は、現在実行中の工程が完了する前に(すなわち、完了通知DONEnmを受信する前に)、次の工程の実行に必要な作業リソース130に対する使用リクエストREQnmを発行する。これにより、作業リソース130の無駄な待機時間を短縮でき、生産効率をより向上できる。
【0079】
すなわち、上述の説明では、シーケンス実行部24は、現在実行中の工程が完了するまで、次の工程に必要な使用リクエストREQnmを発行していなかった。一方、作業リソース130は、コマンドCMDnmを受け付けると、まず、最初に、所定の準備作業を行い、当該準備作業が完了してから、ワークに対する作業を開始する。例えば、ロボット110の場合、コマンドCMDnmを受け付けると、まず、最初に、ハンドの交換等の準備作業を行った後、ワークの搬送を開始する。したがって、現在実行中の工程が完了してから次の使用リクエストREQnmを発行した場合、現在の工程が完了後、次の工程が開始されるまで、ワークが無駄に待機するおそれがあった。例えば、第一加工機102により切削加工の後、ワークを、ワーククリーナ116に搬送する場合を考える。この場合、切削加工が完了してから、ロボット110に対する使用リクエストREQnmを発行すると、ロボット110は、切削加工の完了後に、ハンド交換等の準備作業を開始するため、その間、ワークは、第一加工機102内において、無駄に待機することとなり、生産時間の長期化を招く。
【0080】
そこで、本例では、シーケンス実行部24が、現在実行中の工程が完了する前に、次の工程の実行に必要な作業リソース130に対する使用リクエストREQnmを発行するようにしている。ここで、次の工程の使用リクエストREQnmを発行するタイミング(以下「事前発行タイミング」という)は、現在の工程が完了する前であれば、特に限定されない。ただし、事前発行タイミングが遅すぎると、ワークの無駄な待機時間が増える。一方、事前発行タイミングが早すぎると、一つのシーケンス実行部24が、作業リソース130を占有する時間が無駄に長くなり、他のシーケンス実行部24の待ち時間の増加を招く。そこで、事前発行タイミングは、次工程の準備時間に基づいて決定されてもよい。例えば、現在の工程の実行時間から、次工程の準備時間を減算した値を待機時間として求めておき、現在の工程についてコマンドCMDnmを発行してからの経過時間が、この待機時間に達したタイミングを事前発行タイミングとして取り扱ってもよい。なお、各工程の実行時間および準備時間は、予め、過去の実績またはシミュレーションにより求めることができる。また、各工程の実行時間および準備時間は、行程プログラム内に記録されてもよいし、生産プログラムとは独立した別のファイルに記録されてもよい。いずれにしても、シーケンス実行部24は、メモリ14に記憶された各工程の実行時間および準備時間に基づいて、各工程の事前発行タイミングを特定する。
【0081】
図13、
図14は、本具体例におけるシーケンス実行部24の処理の流れを示すフローチャートである。
図13のうち、ステップS200~S214までの処理は、
図7におけるステップS200~S214とほぼ同じである。すなわち、シーケンス実行部24は、必要な作業リソース130を特定し、当該作業リソース130に対して使用リクエストREQnmを発行し、全ての作業リソース130から許可通知ACKnmを受信すれば、当該作業リソース130に対してコマンドCMDnmを発行する。なお、本具体例におけるロボット用処理(S206*)の内容が、
図7のロボット用処理(S206)と若干異なるが、これについては、後述する。
【0082】
コマンドCMDnmを発行すれば、シーケンス実行部24は、規定の事前発行タイミングに達するまで待機する(S246)。事前発行タイミングに達すれば、シーケンス実行部24は、次の工程で新たに必要な作業リソース130を特定する(S226)。そして、シーケンス実行部24は、特定された作業リソース130に対する使用リクエストREQnmを発行する(S232*)。この使用リクエストREQnmには、品目の識別情報および現在の工程カウントCNTの値に加え、次工程の開始のため必要な作業リソース130の準備動作の内容も含まれる。なお、次工程で新たに必要な作業リソース130がない場合には、シーケンス実行部24は、ステップS230、S206*、S232*を、スキップする。
【0083】
使用リクエストREQnmの発行が不要、または、使用リクエストREQnmが発行できれば、シーケンス実行部24は、現在の工程が完了、すなわち、完了通知DONEnmを受信するまで待機する(S216)。完了通知DONEnmを受信すれば、シーケンス実行部24は、工程カウントCNTと最大工程数CNTmaxとを比較する(S218)。CNT≧CNTmaxの場合、シーケンス実行部24は、全ての作業リソース130を開放したうえで、生産管理部22に加工完了を通知する(S220,222)。
【0084】
一方、CNT<CNTmaxの場合、シーケンス実行部24は、次工程で不要となる作業リソース130を開放する(S224)。そして、次工程で必要な作業リソース130に対する使用リクエストREQnmは、既に発行しているため、その後は、全ての作業リソース130について許可通知ACKnmが得られるまで待機する(S234)。全ての作業リソース130について許可通知ACKnmが得られれば、ステップS212に戻り、以降、同様の処理を繰り返す。
【0085】
次に、本具体例におけるロボット用処理(S206*)について
図15を参照して説明する。この
図15の処理は、
図9の処理と比べてステップS244がある点で相違する。すなわち、
図9のロボット用処理では、後続ワークの現在の工程カウントCNTに対応する先行ワーク通過判定工程カウントCNTsを特定し(S240)、先行ワークの工程カウント(すなわち先行工程カウントCNTp)が、この先行ワーク通過判定工程カウントCNTsに達している場合(S242でYes)には、後続ワークの使用リクエストREQnmの発行を許可していた。
【0086】
本例では、上述した通り、各シーケンス実行部24は、現在の工程が完了する前に、次工程のリクエストを発行している。そのため、先行ワークが、先行ワーク通過判定工程カウントCNTsに達していなくても、先行ワーク通過判定工程カウントCNTsのための使用リクエストREQnmを発行している可能性がある。そこで、本例では、
図15に示すように、CNTp<CNTs(ステップS242でNo)の場合には、先行ワークの工程カウントが、(CNTs-1)まで到達し、かつ、CNTsのための使用リクエストを発行しているか否かを確認し(S244)、発行している場合には、ステップS208またはステップS232*に進み、使用リクエストREQnmの発行を許可する。これにより、使用リクエストREQnmをより早期に発行することができ、ワークの無駄な待機時間を削減できる。結果として、物品の生産効率をより向上できる。
【0087】
次に、さらに他の具体例について説明する。
図16は、他の具体例のセルコントローラ10の機能ブロック図である。本具体例のセルコントローラ10は、生産プログラムを構成する複数の工程のうち、並行して実行可能な2つの工程を特定し、タイミングが合えば、当該2つの工程を、並行して実行する点で、上述したセルコントローラ10と相違する。
【0088】
具体的に説明すると、ダブルハンドタイプのロボット110は、同時に2つのワークを保持可能である。そのため、一方のハンドで切削加工前の後続ワークを保持、他方のハンドで切削加工後の先行ワークを保持することができる。そして、かかるダブルハンドタイプのロボット110を用いれば、先行ワークを加工機から取り外す工程と、後続ワークを加工機に取り付ける工程と、を並行して実行することができる。加工セル100には、こうしたダブルハンドタイプのロボット110のように、2以上のワークを同時に割り当て可能な要素があり、かかる要素を用いれば、先行ワークに対する所定の工程と並行して、後続ワークに対する別の工程を実行することができる。このように並行実行できる工程が存在する場合には、これらの工程を並行して実行したほうが、時間の短縮となる。
【0089】
そこで、本例では、並行して実行可能な二つの工程を特定し、先行ワークまたは後続ワークが二つ工程の一方の実行を要求するタイミングで、後続ワークまたは先行ワークが二つの工程の他方の工程の実行を要求する場合には、この二つの工程を並行して実行する。こうした動作を実現するために、本具体例のセルコントローラ10は、
図16に示すように、複合テーブル格納部32を備えており、各リソース調停部26は、複合動作判定部31を有している。
【0090】
複合テーブル格納部32は、複合テーブルを記憶している。複合テーブルは、並行して実行可能な互いに異なる2つの工程のペアと、当該二つ工程を並行実行する場合のリソースプログラム(以下「複合プログラム」と呼ぶ)と、を記録したテーブルである。この複合プログラムが、作業リソース130に、2以上の工程を並行して実行させる複合指令として機能する。
図17は、この複合テーブルの一例を示す図である。
図17の例では、後続ワークの工程の識別情報と、当該後続ワークの工程と並行して実行可能な先行ワークの工程の識別情報と、この二つの工程に対応する複合プログラムの識別情報と、が対応づけられて記憶されている。例えば、複合テーブルの1列目には、後続ワークの工程番号「3」と先行ワークの工程番号「8」とが記録されている。また、1列目には、さらに、工程番号「3」と工程番号「8」を並行して実行するために必要なリソースプログラムの名称「RPR003C-W01234」も記録されている。
【0091】
こうした複合テーブルは、予め、オペレータが作成したものをセルコントローラ10に登録してもよい。また、別の形態として、セルコントローラ10が、複合テーブルを自動的に生成してもよい。この場合、オペレータは、加工セル100の詳細構成(例えばロボット110に取り付けられているハンドの個数および種類等)や、ロボット110を用いる工程においてワークを保持するハンドの識別情報、ワークの搬送工程におけるワークを搬送先または搬送元の識別情報等を、予め、作成し、加工セル100に予備情報として登録しておく。こうした予備情報は、生産プログラムと独立したファイルに記録されてもよいし、生産プログラムに組み込まれてもよい。セルコントローラ10は、こうした予備情報と生産プログラムに基づいて、複合テーブルを自動的に生成してもよい。さらに、別の形態として、セルコントローラ10とオペレータとの対話により、上述した予備情報を収集し、セルコントローラ10が複合テーブルを生成するようにしてもよい。
【0092】
図16に示す通り、各リソース調停部26は、複合動作判定部31を有している。この複合動作判定部31は、複合テーブルを参照して、工程の統合の可否を判断し、統合可能な場合には、二つの工程を統合した複合プログラムの実行を、対応する作業リソース130に指示する。
図18、
図19は、この複合動作判定部31を有するリソース調停部26の処理の流れを示すフローチャートである。
【0093】
リソース調停部26は、
図11、
図12の処理フローと同様に、まず、対応する作業リソース130がフリーになるまで待機し(S300)、フリーになれば、受信している複数の使用リクエストの中から一つの使用リクエストREQnmを選択する(S302)。そして、この使用リクエストREQnmを発行した第nシーケンス実行部24_nに許可通知ACKnmを送信する(S304)。この許可通知ACKnmを受けたシーケンス実行部24からコマンドCMDnmが送信されれば(S306でYes)、リソース調停部26は、当該コマンドCMDnmが示す工程と並行可能な工程番号を特定し、受信している複数の使用リクエストの中から当該工程番号に対応する使用リクエストREQkmを検索する(S330)。検索の結果、並行可能な工程に関する使用リクエストREQkmを受信している場合(S332でYes)、リソース調停部26は、ステップS334に進む。一方、使用リクエストREQkmを受信していない場合、リソース調停部26は、ステップS308~S314を実行する。このステップS308~S316の内容は、
図11、
図12におけるステップS308~S316と同様であるため、ここでの説明は省略する。
【0094】
ステップS334において、リソース調停部26は、第kシーケンス実行部24_kに対して許可通知ACKkmを送信する。したがって、この時点で、第nシーケンス実行部24_nと第kシーケンス実行部24_kの双方に対して、対応する作業リソース130の使用許可が出ていることになる。その一方、この時点で、第nシーケンス実行部24_nのコマンドCMDnmは受信しているものの、第kシーケンス実行部24_kのコマンドCMDkmは未受信のため、リソース調停部26は、第kシーケンス実行部24_kからコマンドCMDkmが来るまで待機する(S336)。
【0095】
コマンドCMDnmおよびコマンドCMDkmの双方が得られれば(S336でYes)、リソース調停部26は、複合テーブルを参照して、二つのコマンドCMDnm,CMDkmを、複合コマンドCMD1に変換する(S338)。この複合コマンドCMD1には、複合プログラムの識別情報が含まれている。リソース調停部26は、この複合コマンドCMD1を、対応する作業リソース130に送信する(S340)。これを受けて、作業リソース130は、第nシーケンス実行部24_nから要求された工程と、第kシーケンス実行部24_kから要求された工程と、の双方を並行して実行する。
【0096】
リソース調停部26は、作業リソース130から完了通知DONE1が送られるまで待機する(S342)。完了通知DONE1を受信すれば、リソース調停部26は、第nシーケンス実行部24_nに完了通知DONEnmを、第kシーケンス実行部24_kに完了通知DONEkmを、それぞれ送信する。
【0097】
一つの工程の実行が完了すれば、次に、リソース調停部26は、作業リソース130の開放指示の有無を確認する(S346~S350)。そして、第nシーケンス実行部24_nおよび第kシーケンス実行部24_kのいずれからも、作業リソース130の開放指示がない場合(S346でNo、S348でNo)、リソース調停部26は、ステップS336に戻り、以降の処理を繰り返す。一方、第nシーケンス実行部24_nから開放指示がないものの、第kシーケンス実行部24_kから開放指示があった場合(S346でNo、S348でYes)、リソース調停部26は、ステップS306に戻り、以降の処理を繰り返す。また、第nシーケンス実行部24_nおよび第kシーケンス実行部24_kの双方から開放指示があった場合(S346でYes、S350でYes)、リソース調停部26は、ステップS316に進み、作業リソース130を開放する。さらに、第nシーケンス実行部24_nから開放指示があるものの、第kシーケンス実行部24_kから開放指示がない場合(S346でYes、S350でNo)、リソース調停部26は、ステップS306に進む。なお、ステップS306では、「コマンドCMDnm」と表記しているが、この場合、「m」は、「n」と読み替えて処理を進める。
【0098】
以上の説明で明らかなとおり、本例によれば、タイミングさえ合えば、2つの工程を並行して実行する。その結果、物品の生産に要する時間をより短縮でき、生産効率をより向上できる。なお、この場合、シーケンス実行部24は、
図7~
図9に示す処理を行うものでもよいし、
図13~
図15に示す処理を行うものでもよい。シーケンス実行部24が
図13~
図15に示す処理を行った場合、リソース調停部26が、先行ワークに許可通知ACKnmを発行(S304)してからコマンドCMDnmを受信する(S306)までの時間が長くなる。そのため、その間に、後続ワークの使用リクエストREQkmを受信する可能性が増える。結果として、シーケンス実行部24が
図13~
図15に示す処理を行った場合、二つの工程を並行実行できる可能性が増えるため、生産効率をより確実に向上できる。
【0099】
図20~
図22は、本明細書で開示したセルコントローラ10のアルゴリズムを、シミュレーションした結果を示す図である。このシミュレーションでは、シーケンス実行部24として
図13~
図15のアルゴリズムを採用し、リソース調停部26として
図18,
図19のアルゴリズムを採用している。
図20~
図22では、工程が下側に進み、時間が右側に進むものとして、各ワークの時間の経過に伴う工程の遷移を示している。なお、「標準実行時間」は、エクセルの1列を1単位時間とみなした場合における各工程の標準的な実行時間を示している。したがって、一つの工程の行内にワークが位置する時間(セル数)が、この標準実行時間を超過した場合、当該ワークは、次工程で使用する作業リソースが空くのを待っている状態といえる。なお、以下の説明では、第i品目のj番目のワークのことを「ワークWij」と表記する。したがって、第一品目の2番目のワークは、「ワークW12」と、第二品目の3番目のワークは、「ワークW23」と表記する。
【0100】
図20では、第一加工機102で第一品目を4個、第二加工機104で第二品目を4個、それぞれ、加工する場合の様子を示している。この例では、ロボット110に対する使用リクエストが、ワークW11、ワークW21、ワークW12、ワークW22の順で、発行される。その結果、
図20に示すように、ワークW11が、最初に生産開始され、ロボット110により、第一加工機102に取り付けられる。そして、ロボット110がフリーになったタイミング7において、ロボット110が、ワークW21に割り当てられ、ワークW21の生産が開始される。同様に、ロボット110は、タイミング12においてワークW12に、タイミング27においてW22に、それぞれ割り当てられ、各ワークの生産が開始される。そして、それぞれのワークが互いに競合しないように、その実行順序が、リソース調停部26により調停される。
【0101】
例えば、ワークW12は、タイミング14において工程「3」が終了しているが、次工程「4」で使用する第一加工機102が、先行ワークW11により占有されているため、タイミング23まで待機し続ける。また、タイミング24では、ワークW12の工程「4」と、ワークW11の工程「9」が、複合テーブルに従って統合され、並行して実行されている。
【0102】
図21は、
図20に比べて、工程「13:ワーク洗浄」の標準実行時間を長くした場合のシミュレーション結果である。この場合、ワーククリーナ116の前でワークの渋滞が発生しやすくなる。その結果、加工セル100に同時に投入される最大投入数Wnowは、
図20の例では「4」であったのに対し、
図21の例では「5」に増加する。
【0103】
図22は、第一加工機102を用いた工程と第二加工機104を用いた工程とを直列に繋げた場合のシミュレーション結果である。すなわち、
図22は、一つのワークに対して、第一加工機102による切削加工と、第二加工機104による切削加工と、の双方を施す場合のシミュレーション結果である。この場合においても、ワーク間の競合がリソース調停部26により調停されることで、複数のワークが効率的に生産されることが分かる。
【0104】
次に、さらに別の具体例について説明する。
図23は、他の具体例のセルコントローラ10の一部構成を示す図である。このセルコントローラ10は、リトライ判定部34を有する点で、
図2のセルコントローラ10と相違する。リトライ判定部34は、各シーケンス実行部24が実行する工程の状況を監視し、工程に異常が生じていると判定した場合には、シーケンス実行部24に工程の再実行を指示するリトライ指令RTRnを出力する。異常の有無判定は、各工程を開始してからの経過時間で判定してもよいし、作業リソース130からのエラー信号ERRmに基づいて判定してもよい。
【0105】
経過時間に基づいて異常の有無判定を行う場合、セルコントローラ10は、さらに、実行時間収集部36を有する。実行時間収集部36は、複数のシーケンス実行部24から工程の実施状況を収集し、収集したデータに基づいて各工程の標準的な実行時間を記録した標準実行時間テーブルを生成する。具体的には、複数のシーケンス実行部24それぞれには、現在の工程の番号をカウントする工程カウンタ30が設けられている。この工程カウンタ30は、カウントアップする際に、実行時間収集部36にカウントデータCOUNTnを出力する。カウントデータCOUNTnには、当該カウントデータCOUNTnを出力したシーケンス実行部24の識別情報と、現在の工程カウントCNTと、が含まれている。実行時間収集部36は、工程ごとに、カウントアップインターバル時間を計測し、これを工程の実行時間として記憶する。ここで、本例では、複数のシーケンス実行部24が、同一の生産プログラムを、時間をずらして実行する。そのため、一つの工程について、複数の実行時間を取得できる。実行時間収集部36は、一つの工程に関して得られた複数の実行時間に、統計的処理を施して得られる代表値、例えば、平均値や中間値を、その工程の標準実行時間として算出する。そして、実行時間収集部36は、工程と、それに対応する標準実行時間と、を対応付けて記録した標準実行時間テーブルを生成し、リトライ判定部34に出力する。
【0106】
リトライ判定部34は、複数の工程それぞれにおいて、工程を開始してからの経過時間を監視し、その経過時間が、標準実行時間に基づいて決定された許容実行時間を超えた場合、異常が発生したと判定する。工程を開始してからの経過時間を測定するために、リトライ判定部34にも、カウントデータCOUNTnが入力される。リトライ判定部34は、カウントアップしてからの経過時間を内部のタイマで計測する。また、許容実行時間は、標準実行時間より長ければ特に限定されず、例えば、許容実行時間は、標準実行時間の2倍以上である。一つの工程の経過時間が、当該工程の許容実行時間を超えた場合、リトライ判定は、当該工程の実行に際して何等かの異常が発生していると判断する。
【0107】
なお、上記の例では、工程カウンタ30のカウントアップインターバル時間を、工程実行時間として取得している。しかし、こうしたカウントアップインターバル時間には、作業リソース130が実際に工程を実行する作業時間(すなわちCMDnmを発行してからDONEnmを受信するまでの時間)に加え、次工程の実行のために使用リクエストREQnmを発行してから許可通知ACKnmを得るまでのリクエスト待ち時間も含まれる。こうしたリクエスト待ち時間を、行程実行時間に含めた場合、工程の異常の有無を正確に判定できない場合もある。そこで、カウントアップインターバル時間ではなく、CMDnmを発行してからDONEnmを受信するまでの作業時間を、工程実行時間として取り扱ってもよい。この場合、シーケンス実行部24は、工程カウンタ30のカウントアップのタイミングでカウントデータCOUNTnを、完了通知DONEnmを受信したタイミングで当該完了通知DONEnmを、実行時間収集部36およびリトライ判定部34に送信する。実行時間収集部36およびリトライ判定部34は、カウントデータCOUNTnを受信してから完了通知DONEnmを受信するまでの時間を、行程の実行時間として処理する。
【0108】
また、リトライ判定部34は、工程を開始してからの経過時間が許容実行時間を超過した場合に加えて、または、替えて、作業リソース130からエラー信号ERRmが出力された場合も、工程の実行に異常が発生したと判定してもよい。そして、リトライ判定部34は、工程の実行に異常が発生していると判定した場合、当該工程を実行しているシーケンス実行部24に対して、リトライ指令RTRnを出力する。
【0109】
リトライ指令RTRnを受けたシーケンス実行部24は、現在出力している作業リソース130に対するコマンドCMDnmをキャンセルしたうえで、一部の工程を再実行する。ここで、再実行する工程は、異常が発生した工程だけでもよいし、異常が発生した工程より前の工程から再実行してもよい。例えば、工程「2」の実行途中において、異常が発生し、リトライ指令RTRnを受信した場合、シーケンス実行部24は、当該工程「2」に関するコマンドCMDnmをキャンセルしたうえで、再度、この工程「2」を最初から実行するためのコマンドCMDnmをリソース調停部26に出力してもよい。
【0110】
また、別の形態として、工程ごとに、異常が発生した場合に戻るリトライポイントを設定しておき、異常が発生した場合には、当該リトライポイントで示す工程から再実行してもよい。
図24は、リトライポイントを付記した生産プログラムの一例を示す図である。
図24において、「リトライポイント」欄における「1」は、リトライポイントとして機能する工程を示している。シーケンス実行部24は、リトライ指令RTRnを受信した場合、直前のリトライポイントまで遡って、工程を再実行する。
【0111】
例えば、シーケンス実行部24は、工程「5」の実行中に、リトライ指令RTRnを受信した場合、まず、工程「5」についてのコマンドCMDnmをキャンセルする。続いてシーケンス実行部24は、生産プログラムを参照し、工程「5」の「リトライポイント」欄を確認する。
図24の例では、工程「5」の「リトライポイント」欄には、「1」が記録されていない。そのため、この場合、シーケンス実行部24は、一つ前の工程「4」に遡り、その「リトライポイント」欄を確認する。工程「4」の「リトライポイント」欄には、「1」が記録されているため、シーケンス実行部24は、当該工程「4」がリトライポイントであると判断し、当該「4」から工程を再実行する。すなわち、シーケンス実行部24は、工程「4」の再実行に必要なコマンドCMDnmや使用リクエストREQnmを発行する。また、このように工程を遡った際、シーケンス実行部24は、遡った工程の数だけ、工程カウントCNTの値をデクリメントする。
【0112】
このように、本例では、工程の実行について異常の有無を監視し、異常が発生した場合に、当該異常が発生した工程を含む1以上の工程を再実行させる構成としている。かかる構成とすることで、セルコントローラ10の制御プログラムを変更することなく、異常に容易に対処できる。
【0113】
ただし、工程の内容によっては、作業リソース130が特別な復帰動作を行わなければ、当該工程を再実行できない場合もある。そこで、予め、異常が生じていない場合に実行する通常の工程に替えて、当該工程の再実行時に実行される代替の工程を用意しておき、リトライ指令RTRnを受信した場合には、当該代替の工程を実行してもよい。
図25は、代替の工程を追記した生産プログラムの一例を示す図である。
図25の例では、生産プログラムに、「代替工程番号」の列が追加されている。この「代替工程番号」の欄には、再実行時に行う代替の工程の番号が記載されている。また、生産プログラムには、この代替の工程の行が追加されている。代替の工程の行には、当該代替の工程で実行する代替のリソースプログラムが記録されている。
【0114】
シーケンス実行部24は、リトライ指令RTRnを受信した場合は、現在実行している工程に対応する「代替工程番号」を確認し、「代替工程番号」がない場合には、現在実行している工程をそのまま再実行する。一方で、「代替工程番号」が規定されている場合には、当該代替工程番号の行に記載されている代替リソースプログラムを実行する。
【0115】
例えば、
図25の例では、工程「7」には、代替工程番号が規定されていない。そのため、工程「7」の実行途中に、リトライ指令RTRnを受信した場合、シーケンス実行部24は、工程「7」をそのまま再実行する。一方、
図25の例では、工程「8」には、代替工程番号として「100800」が規定されている。そのため、工程「8」の実行途中に、リトライ指令RTRnを受信した場合、シーケンス実行部24は、工程「8」を再実行せず、代替工程「100800」を実行する。すなわち、シーケンス実行部24は、代替工程「100800」の行で規定された代替リソースプログラムを、コマンドCMDnmとして、リソース調停部26に出力する。このように、代替の工程を予め設定しておくことで、異常に対してより確実に対処できる。
【0116】
次に他の具体例について
図26を参照して説明する。
図26のセルコントローラ10は、さらに、ワークスキップ実行部38を有する点で、
図23のセルコントローラ10と相違する。ワークスキップ実行部38は、異常の解消が困難と判断した場合には、規定のワークスキップ工程を実行し、ワークを廃棄させる。
【0117】
すなわち、リトライ判定部34は、異常の発生を検知すれば、通常工程または代替工程を実行するリトライをシーケンス実行部24に指示する。しかし、ワークに何等かの問題がある場合、こうしたリトライを繰り返しても異常を解消できない場合がある。こうした事態を放置した場合、後続のワークが工程を進めることができず、渋滞してしまう。
【0118】
そこで、ワークスキップ実行部38は、同じシーケンス実行部24に、同じ工程についてのリトライ指令RTRnが連続して出力される回数を連続リトライ数としてカウントする。そして、この連続リトライ数が、予め規定された許容回数に達した場合には、規定のワークスキップ工程を実行する。
【0119】
ワークスキップ工程において、ワークスキップ実行部38は、異常が発生しているワークを、NG品として、廃棄場所へ搬送するために必要な作業リソース130に対応するリソース調停部26に対して、強制的なコマンドCMDsmを発行する。ここで、廃棄場所に搬送に複数の作業リソース130が必要な場合、ワークスキップ実行部38は、複数のリソース調停部26にコマンドCMDsmを発行する。リソース調停部26は、このコマンドCMDsmを受ければ、これを対応する作業リソース130に送信する。そして、作業リソース130が、このコマンドCMDsmに従って動作することで、異常が発生しているワークが、廃棄場所に搬送される。廃棄動作が完了、すなわち、リソース調停部26からワークスキップ実行部38に完了通知DONEsmが返信されれば、ワークスキップ実行部38は、廃棄されたワークの生産を管理していたシーケンス実行部24に対して、リセット指令RSTnを発行する。このリセット指令RSTnを受けた場合、シーケンス実行部24は、工程カウンタ30の値をリセットするとともに、生産管理部22に対して、廃棄したワークが発生したことを通知する。その後、シーケンス実行部24は、新たなワーク投入指令を受信するまで、待機する。一方、生産管理部22は、このワーク廃棄の通知を受ければ、自身が管理しているワークの投入数Wnowの値をデクリメントする。
【0120】
このように、本具体例では、連続リトライ数が許容回数に達した場合に、異常が発生しているワークを強制的に廃棄している一方で、異常が発生していない他のワークは、通常通り、生産プログラムの実行を継続する。換言すれば、本具体例では、異常が発生していない他のワークに対してリカバリー用の工程を設計しておく必要がなく、ワークスキップに対する設計工数を大幅に削減するとともに、工程の設計ミスを防ぐことができる。
【0121】
なお、これまで説明した構成は、一例であり、セルコントローラ10が、対象となる品目を、加工セル100で一つだけ生産するために必要な1以上の工程が記録された生産プログラムに基づいて加工セル100の動作を制御するのであれば、その他の構成は、適宜、変更されてもよい。
【符号の説明】
【0122】
10 セルコントローラ、12 プロセッサ、14 メモリ、16 通信I/F、18 入力装置、20 出力装置、22 生産管理部、24 シーケンス実行部、26 リソース調停部、28 品目別生産プログラム格納部、30 工程カウンタ、31 複合動作判定部、32 複合テーブル格納部、34 リトライ判定部、36 実行時間収集部、38 ワークスキップ実行部、100 加工セル、102 第一加工機、104 第二加工機、106 メインスピンドル、108 サブスピンドル、110 ロボット、111 ハンド、112 ハンドストッカ、114 爪ストッカ、116 ワーククリーナ、118 ワーク計測装置、120 中間置台、122 搬入パレット、124 搬出パレット、130 作業リソース。