(57)【特許請求の範囲】
【請求項１】
置き場に準備された加工前ワークを加工機械へ搬入して該機械で加工し、加工終了後に加工機械から取り出して別の置き場へ搬出する一連の工程を、搬入及び／又は搬出用ロボットと、加工機械と、置き場と、生産管理装置との４者で構成される搬入／搬出ロボットと協調動作する加工ラインシステムであって、
前記４者は各々通信機能を備え、前２者が送信する、実行結果及び状態信号の２種の情報、及び前記置き場に備えられたワーク有無検出用センサからの状態信号の各々を、生産管理装置が受信するものとされ、
前記搬入及び／又は搬出ロボットは、自らの処理動作を実行するためのプログラムを搭載し、生産管理装置に対して自らの実行結果及び当該ロボットに取り付けられたハンドに設けられているワークの把持の有無を検知するセンサからの現実の状態信号を逐次送信するものであり、
前記加工機械は、自らの加工処理動作を実行するためのプログラムを搭載し、生産管理装置に対して自らの実行結果及び当該加工機械に取り付けられた治具に設けられているセンサからの現実の状態信号を逐次送信するものであり、
前記生産管理装置は、４者間の協調動作をモデル化した生産システムモデルと、プログラム実行エラー及びワーク移送エラーを判定するエラー検出部と、前記加工機械及びロボット側のプログラム選択動作を管理するプログラム管理部とを備え、
該エラー検出部のワーク移送エラー判定は、当該モデルが示す状態を予め設定済の条件と照合しシステムの状況が正常か異常かを判定することで行われ、
該エラー検出部のプログラム実行エラー判定は、前記ロボット及び加工機械の実行プロセスが終了状態とならない場合にエラーと判定するものであり、
前記生産管理装置は、前記ロボットと、前記加工機械と、前記置き場のセンサからの実行結果及び状態信号を受信するたび当該モデルの状態を更新する処理を行うと共に、エラーが検出された場合、システムオペレータにエラー発生を表示手段にて表示させ、生産システムモデルはエラー発生時のモデル状態を、現実の状態信号が一致するまで保持し続けるものである、搬入／搬出ロボットと協調動作する加工ラインシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、搬入／搬出ロボットと協調動作する加工ラインシステムに関する。
【背景技術】
【０００２】
産業用ロボット（以下、ロボットと略称する。）と加工機械とから構成される生産システムでは、その振る舞いはロボットと加工機械の連携動作によって定義される。この連携とは、例えば、ロボットが未加工のワークを加工機にセットした後で加工機械が加工すること、加工機械による加工が終わったらロボットが加工済みのワークを取り出すこと、などである。このような単純な連携に加えて、連携動作は、加工機械が加工している時間を利用して、ロボットが次に加工するべきワークを搬送する、といった並列の動作も含む。
【０００３】
これらの連携を実現するために、ロボットと加工機械とは何らかの形態で通信できるようになっている。ロボットと加工機械とを直接通信させるという形態もありうるし、ロボットと加工機械とをそれぞれＰＬＣに接続して、ＰＬＣを介して接続してもよい。
【０００４】
いずれの形態においても、前述したロボットと加工機械との連携を実現するためには、この連携を把握する生産管理装置が必要である。もっとも単純な形態においては、ロボットが生産管理装置の役割を果たす。この場合には、ロボットがワークを加工機械にセットした後で、ロボットが加工機械に対して加工を指示し、加工機械での加工プログラムが終了するのを待ち、その後、ワークを取り出すということができる。また、加工機械が生産管理装置の役割を果たす場合には、加工機械がロボットに対して、加工済みワークの取り出しと、未加工ワークのセットを指示して、ロボットの作業が終わったら、加工を開始する。
【０００５】
しかし、ロボットが生産管理装置の役割を果たす場合には、ロボットの作業プログラムがロボット自体に対する作業と加工機械に対する指令とを含むので、ロボットの作業プログラムは複雑になり、その変更が難しくなる。加工機械が生産管理装置となる場合も同様に、ロボットの作業プログラムは簡単になるものの、加工機械の加工プログラムはその分だけ複雑になる。
【０００６】
そこで、複雑な振る舞いを実現するためには、独立した生産管理装置を準備し、生産管理装置がロボットと加工機とに対して指示を出す形態を取るのが好ましい。これにより、ロボットの作業プログラムと、加工機械の加工プログラムとの両方は簡単になる。
【０００７】
１台のロボットと１台の加工機械とから構成される生産システムですら、ロボットと加工機械とが同時に動作可能であるために、ロボットおよび加工機械の振る舞いを一つのプログラムとして表現することは難しい。
【０００８】
複数のロボットと複数の加工機械とから構成される一般的な生産システムにおいては、それらの振る舞いを記述することはより困難になる。これは、複数のロボットおよび複数の加工機械が同時に動作可能な生産システムにおいては、生産システム全体としての状態の数が、個々のロボットの状態の数および個々の加工機械の状態の数の組み合わせで表されるので、生産システム全体としての状態の数が膨大になるからである。
【０００９】
この問題を解決するために、特許文献１ではロボットの作業プログラムを或る単位で分割し、生産システムの状況に応じて適切な作業プログラムが起動されるようにしている。この方法では、ある単一の作業プログラムに対してこの作業プログラムが起動されるための条件を関連づけるために、生産システム全体としての状態の総数を把握する必要がない。従って、既存の生産システムに対して、作業プログラムを新規に追加することや、作業プログラムを変更することが容易になる。
【特許文献１】特開２００６−３４３８２８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、プログラムと、そのプログラムが実行可能な条件を関連づけるという特許文献１の方式では、生産システムを構成するロボットおよび加工機械の状態を把握できるようにするだけでは不十分である。この場合には、ロボットおよび加工機械の状態だけでなく、ワークを把持する治具およびロボットハンドの状態を把握する必要がある。さらに特に重要なことにワークが生産システムの中をどのように流れているかということを把握する必要がある。
【００１１】
生産システムでエラーが起きた場合において、ワークの流れを把握する重要性について説明する。
例えば、二つのロボットからなる生産システムで、ロボット１ａがワークをテーブルＡからテーブルＢに運び、ロボット２ａがワークをテーブルＢからテーブルＣに運ぶという動作があったとしてみる。ロボット１ａが正しくワークをテーブルＡからテーブルＢに搬送したならば、ワークはテーブルＢに存在しているはずである。
【００１２】
しかし、ロボット１ａの搬送の後、なんらかの原因でワークがテーブルＢから落下してしまうということが起こりうる。そのような場合には、ロボット２ａは当然だがこのワークを運ぶことはできないから、この状態はエラーになる。
【００１３】
しかし、ワークの流れを把握していない生産システムでは、ワークがテーブルＢに存在しているはずという情報を最初からもっていないために、ワークがテーブルＢから落下したとしてもこれを認識せず、ロボット２ａが、存在しないワークをテーブルＢに取得するよう移動する。
【００１４】
仮にテーブルＢに何らかのセンサがついており、ワークがテーブルＢに存在していればロボット２ａがワークを取りに行くというプログラムの関連づけをしてあったとすると、ロボット２ａが存在しないワークを取得するよう動作することはない。ただし、この場合には、ワークがテーブルＢに存在しないために生産システムはそこで動作を停止してしまう。このとき、生産システムはエラー状態にあるにもかかわらず、２台のロボットはいずれも正常に動作している。つまり、ロボットの状態を把握しているだけでは、生産システムでエラーが起きているのかどうかを把握することはできない。
【００１５】
さらに、このようなワークが期待する場所に存在しないことに基づくエラーが発生した場合、ワークの流れを把握できない生産システムではそのエラーを解消するための手段は明確ではない。前述した例においては、ワークがテーブルＢから落下していることがエラーの原因であることは明らかである。そして、ワークをテーブルＢに置きなおせばよいのか、ワークを取り除いてしまうのがよいか、あるいはワークをテーブルＡに戻すのが良いか、といった選択肢が、この原因に対して存在する。
【００１６】
ワークをテーブルＢに置きなおすという選択肢が最良であると考えられるが、テーブルＢへのワークの置き方によってはロボット２ａがワークを把持できない可能性がある。また、ワークを取り除くか、またはワークをテーブルＡに戻すという選択肢の場合には、ワークの流れを把握していない生産システムでは、ワークがロボット以外の何者かによって移動するということを把握しておらず、従って、その後に生産システムが正常に稼動するのかどうかは不明である。
【００１７】
本発明の目的は、生産システムの状態をワークの流れまでも含めて把握し、その状態に応じて搬入／搬出ロボットの作業プログラムおよび／または加工機械の加工プログラムを選択することにより、プログラムの変更や、エラーからの復旧が容易となる、搬入／搬出ロボットと協調動作する加工ラインシステムを提供することにある。
【課題を解決するための手段】
【００１８】
前述した目的を達成するために１番目の発明によれば、置き場に準備された加工前ワークを加工機械へ搬入して該機械で加工し、加工終了後に加工機械から取り出して別の置き場へ搬出する一連の工程を、搬入及び／又は搬出用ロボットと、加工機械と、置き場と、生産管理装置との４者で構成される搬入／搬出ロボットと協調動作する加工ラインシステムであって、前記４者は各々通信機能を備え、前２者が送信する、実行結果及び状態信号の２種の情報、及び前記置き場に備えられたワーク有無検出用センサからの状態信号の各々を、生産管理装置が受信するものとされ、前記搬入及び／又は搬出ロボットは、自らの処理動作を実行するためのプログラムを搭載し、生産管理装置に対して自らの実行結果及び当該ロボットに取り付けられたハンドに設けられているワークの把持の有無を検知するセンサからの現実の状態信号を逐次送信するものであり、前記加工機械は、自らの加工処理動作を実行するためのプログラムを搭載し、生産管理装置に対して自らの実行結果及び当該加工機械に取り付けられた治具に設けられているセンサからの現実の状態信号を逐次送信するものであり、前記生産管理装置は、４者間の協調動作をモデル化した生産システムモデルと、プログラム実行エラー及びワーク移送エラーを判定するエラー検出部と、前記加工機械及びロボット側のプログラム選択動作を管理するプログラム管理部とを備え、該エラー検出部のワーク移送エラー判定は、当該モデルが示す状態を予め設定済の条件と照合しシステムの状況が正常か異常かを判定することで行われ、該エラー検出部のプログラム実行エラー判定は、前記ロボット及び加工機械の実行プロセスが終了状態とならない場合にエラーと判定するものであり、前記生産管理装置は、前記ロボットと、前記加工機械と、前記置き場のセンサからの実行結果及び状態信号を受信するたび当該モデルの状態を更新する処理を行うと共に、エラーが検出された場合、システムオペレータにエラー発生を表示手段にて表示させ、生産システムモデルはエラー発生時のモデル状態を、現実の状態信号が一致するまで保持し続けるものである、搬入／搬出ロボットと協調動作する加工ラインシステムが提供される。
【発明を実施するための最良の形態】
【００２３】
以下、添付図面を参照して本発明の実施形態を説明する。以下の図面において同様の部材には同様の参照符号が付けられている。理解を容易にするために、これら図面は縮尺を適宜変更している。
生産システムモデルについて
本発明の実施形態を説明する前に、生産システムの振る舞いを表現するための記法である生産システムモデルについて説明しておく。振る舞いとは、生産システムがどのように動くかということを示すものである。生産システムは、それらを構成するロボットに内蔵される複数の作業プログラム、加工機械に内蔵される複数の加工プログラム、生産管理装置に内蔵されるプログラムによって動作する。従って、生産システムの振る舞いを決定しているのはそれらプログラムであり、生産システムの振る舞いを表現するとは、プログラムの動作を表現することである。
【００２４】
具体的には、生産システムモデルは、加工機械によって加工されるべきワークについてのワーク情報と、少なくとも一つのロボットの複数の作業プログラムおよび少なくとも一つの加工機械の複数の加工プログラムについてのプログラム情報とにより構成される。ここで、ワーク情報は、ワークの種類、個数、および加工状態を含んでいる。また、プログラム情報は、複数の作業プログラムおよび複数の加工プログラムの実行の順番を含んでいる。
【００２５】
図１に、生産システムを構成する生産管理装置、ロボット、加工機械の一例を示す。この生産システム１は、ワークＷを搬送するための三つのロボット１１〜１３、ワークＷを加工するための二つの加工機械２１、２２、これらの連携を管理するための生産管理装置１０を含んでいる。
【００２６】
それぞれのロボット１１〜１３には、ロボットの動作を記述する複数のプログラムＡ１〜Ａｎ、Ｂ１〜Ｂｎ、Ｃ１〜Ｃｎがそれぞれ保存されている。これらプログラムを、本発明では作業プログラムと呼ぶ。同様に、加工機械２１、２２はワークＷを加工するための複数の加工プログラムＤ１〜Ｄｎ、Ｅ１〜Ｅｎがそれぞれ保存されている。作業プログラムおよび加工プログラムはいずれも生産システム１の作成者が作成するものである。
【００２７】
それぞれのロボット１１〜１３、それぞれの加工機械２１、２２と生産管理装置１０とは通信手段６０により相互に通信可能である。この通信手段６０によって、生産管理装置１０はロボット１１〜１３および加工機械２１、２２に対して作業プログラムまたは加工プログラムの実行を指示することができる。逆に、ロボット１１〜１３および加工機械２１、２２から生産管理装置１０に対しては、その時点でのロボットや加工機械の実行状態の信号を通知することと、作業プログラムまたは加工プログラムの実行結果の信号を通知することとを行うことができる。なお、簡潔にする目的で、図２および図３においては、通信手段６０の参照符号を省略している。
【００２８】
生産システム１は、種々の周辺機器と、生産システム１によって処理されるワークＷとをさらに含む。図２は、図１に例示した生産システムの周辺機器を示すものである。ロボット１１〜１３には周辺機器として二つのハンド１４〜１９がそれぞれ接続されている。そして、加工機械２１、２２にはそれぞれ治具２３、２４が取り付けられている。
【００２９】
図示されるようにハンド１４〜１９および治具２３、２４にはセンサ１４１〜１９１、２３１、２４１がそれぞれ取り付けられている。これらセンサによって、ハンド１４〜１９がワークＷを把持しているのかいないのか、治具２３、２４がワークＷを把持しているのかいないのかということが検出できる。これらのセンサは、通常はロボット１１〜１３や加工機械２１、２２に接続されている。この生産システム１では、これらのセンサの信号は、ロボット１１〜１３または加工機械２１、２２を経由して、生産管理装置１０が受信できるようになっている。
【００３０】
図２には、さらに、２つの仮置き台３１、３２と４つのパレット置き場４１、４２、５１、５２とが示されている。仮置き台３１、３２は、複数のロボットの間でワークＷを受け渡しするときに、ワークＷを一時的におく場所である。これら仮置き台３１、３２にはセンサ３１１、３１２がそれぞれ取り付けられている。これらセンサ３１１、３１２によって、生産管理装置１０は、仮置き台３１、３２にワークＷが置かれているかいないのかを信号（ワーク信号）として受信する。センサ３１１、３１２は生産管理装置１０に接続されており、生産管理装置１０は仮置き台３１、３２のそれぞれにおけるワークＷの有無を把握できる。
【００３１】
生産システムにおいて供給されると共に排出されるワークＷは、パレットやコンテナといったなんらかの入れ物に納められていることが普通である。図２には、例として、ワークＷを供給するためのパレットを配置する二つの供給パレット置き場４１、４２、およびワークを排出するためのパレットを配置する二つの排出パレット置き場５１、５２が示されている。これらパレット置き場４１、４２にもセンサ４１１、４２１がそれぞれ取り付けられている（図３参照）。生産管理装置１０は、パレット置き場４１、４２、５１、５２にパレットが置かれているのかどうかを検出することができる。
【００３２】
ワークＷに相当する要素も、生産システム１を構成する。これまでに示した生産システム１にワークＷを追加した図を、図３に示した。図３においては、ワークＷ１とワークＷ２とが収容される供給パレット４０は供給パレット置き場４１に置かれており、排出パレット置き場５１には空の排出パレット５０が置かれている。
【００３３】
ここで、供給パレット４０および排出パレット５０は本発明においてはワークＷに相当するものとして扱う。これらパレット４０、５０は単にワークＷの入れ物であり加工の対象にはならない。しかしながら、生産システム１を、入力された要素に何かの処理をして出力するものとして捉えると、パレット４０、５０も入出力されるので、パレット４０、５０をワークＷに相当する要素として扱うことが可能である。一方、パレット置き場４１、４２、５１、５２および治具２３、２４は入出力されないので生産システム１の一部であるとみなす。
【００３４】
ここまでは、或る生産システム１の構成要素を解説してきた。次に、この生産システムの動的な側面、つまり生産システムの振る舞いを解説する。図１から図３より分かるように、生産システム１の振る舞いは、供給パレット４０によって供給されたワークＷ１、Ｗ２をロボット１１〜１３により加工機械２１、２２にセットし、加工機械２１、２２がワークＷ１、Ｗ２を加工し、加工されたワークＷ１、Ｗ２をロボットが取り出し、これを排出パレット置き場５１、５２に置くというものである。また、供給パレット４０が空になった場合には、ロボットが供給パレット４０を排出パレット５０として供給パレット置き場５１まで移動させる。排出パレット５０がワークで満載された場合には、排出パレット５０を排出パレット置き場５２へ排出するという振る舞いもある。図４は、このような振る舞いをより正確に表している。
【００３５】
図４は、ワークに相当する要素が、生産システムの中でどのように動いていくかということを示している。図４における円は、ワークに相当する要素の置き場所を示しており、矢印がワークに相当する要素の動きを示している。
【００３６】
例えば、供給パレット置き場４１には、供給パレット４０があり、供給パレット４０には、ワークＷ１、ワークＷ２が収容されている。図４を参照すると、ワークＷ１およびワークＷ２は、ロボット１１のハンド１４まで移動し、次に仮置き台３１に移動し、ロボット１２のハンド１６から治具２３または治具２４へ移動し、さらにロボット１２のハンド１７から仮置き台３２へ移動し、最終的にロボット１３のハンド１８から排出パレット５０まで移動する。
【００３７】
また、図４においては、供給パレット４０がロボット１１のハンド１５を通じて供給パレット置き場４１から供給パレット置き場４２へ移動し、また排出パレット５０は、排出パレット置き場５１からロボット１３のハンド１９へ移動し、次にハンドハンド１９から排出パレット置き場５２へと移動することも示されている。
【００３８】
実際にはワークＷ１、Ｗ２はロボットにより移動されるが、理解を容易にする目的で、図４にはロボットは示されていない。また、同じ目的で、図４には、ワークＷ１やワークＷ２は加工機械２１、２２によって加工されるということが示されていない。
【００３９】
このことを図示したものが図５である。本発明では、図５の内容を生産システムモデルと称する。図５において、ワークに相当する要素が置かれる場所は円で示されている。ワークに相当する要素が置かれる場所としては、仮置き台３１、３２に加えて、ロボットのハンド１４〜１９および治具２３、２４が該当する。
【００４０】
図５においてワーク自体に相当する要素は、黒丸またはパレットの形態で示されている。黒丸はワークＷを示しており、パレット４０、５０は、その内部に個別要素としてのワークＷ配置できる。図５における矩形は、ロボット１１〜１３で実行される作業プログラム、または加工機械２１、２２で実施される加工プログラムを示している。図５における矢印は、作業プログラムや加工プログラムを実行するための実行条件と、作業プログラムや加工プログラムが終了したときに実現される実行結果を表している。
【００４１】
ワーク
図５において黒丸はワークＷを表している。ワークＷは、本発明では次の属性を持つことができる。
（１）．．  ＣｌａｓｓＩＤ：  種類を表す数字
（２）．．  ＩｎｓｔａｎｃｅＩＤ：  ワークを一意に特定する数字
（３）．．  Ｓｔａｔｕｓ：  状態を表す数字（加工されたか、されていないか、など）
【００４２】
ＣｌａｓｓＩＤは、ワークの種類を表す番号である。図５では１種類のワークしか表現していないが、生産システムが複数の種類のワークを入力として扱うことができるならば、それらのワークはＣｌａｓｓＩＤで区別される。
【００４３】
ＩｎｓｔａｎｃｅＩＤは、ある特定の種類のワーク群（同じＣｌａｓｓＩＤをもつワーク群）の中で、一意にワークを特定する番号である。これは必須の属性ではない。
【００４４】
Ｓｔａｔｕｓは、生産システムのなかでの、ワークの状態遷移を表すための番号である。本発明で例示している生産システムは、ワークを加工するという生産システムであるため、入力の時点ではワークは未加工であり、出力されるワークは加工済みになるはずである。このことを、未加工のワークはＳｔａｔｕｓ＝１、加工済みのワークはＳｔａｔｕｓ＝２という形で記述することができる。仮に、１つのワークを２回加工する必要があるならば、Ｓｔａｔｕｓ＝２を第１工程加工済み、Ｓｔａｔｕｓ＝３を第２工程加工済みとして扱えばよい。このようなワークの状態管理が不要ならば、Ｓｔａｔｕｓという属性は使わなくても構わない。
【００４５】
ワークの置き場所
図５において円またはパレットの形で示す要素は、その内部にワークＷを置くことができる。ワークの置き場所には、そのワークの置き場所に置かれるワークＷの数およびワークの種類などの条件が付随する。例えば、ハンド１４は、ワークＷ１またはワークＷ２を把持する。ハンド１４により把持可能なワークＷの最大数は１である。さらに、把持可能なワークの種類も限定されており、ハンド１４は、ワークＷ１やワークＷ２と同じ種類のワークしか把持できない。このような条件を、ワークの置き場所に付随する属性として記述しておく。記述方法はどのような形式でも構わないが、本発明では、つぎのような形式で記述する。
Ｃｏｕｎｔ  ｉｎ  ０．．１
ＣｌａｓｓＩＤ＝２
【００４６】
上の表現では、ワークは０個、または１個置くことができること、かつ、ＣｌａｓｓＩＤ＝２でなくてはならないということが記述されている。この条件のことを本発明ではワーク条件と称する。
【００４７】
ワークの置き場所にセンサがついている場合には、このセンサからの信号と、生産システムモデルにおけるワークの置き場所に含まれるワークの個数や種類とを関連づけることができる。例えば、ハンド１４に取り付けられたセンサがＲＣ１．ＲＩ［１］という名前で参照できるとき、そのセンサが単純にワークの有無をＯｎ／Ｏｆｆという信号で伝えてくる場合は、次のように、センサの信号とワークの置き場所に含まれるワークの数を関連づけられる。
ＲＣ１．ＲＩ［１］＝ＯＮ  −＞  Ｃｏｕｎｔ  ＞０
ＲＣ１．ＲＩ［１］＝ＯＦＦ  −＞  Ｃｏｕｎｔ  ＝０
【００４８】
上の式は、ＲＣ１．ＲＩ［１］＝ＯＮであるならば、ワークの置き場所に含まれるワークの数は０より大きくなければならないということを記述している。下の式は、ＲＣ１．ＲＩ［１］＝ＯＦＦならば、ワークの数は０でなくてはならないということを意味している。このような式のことを、本発明では、ワーク条件補完式と称する。
【００４９】
ここで注意しておきたいのは、この関連づけは信号の値に基づいてワークの個数や種類を求めるためのものではなく、信号の値とワークの個数や種類とが満たすべき条件を示しているということである。ＲＣ１．ＲＩ［１］＝ＯＦＦになった瞬間に、生産システムモデルにおいてワークの置き場所に含まれるワークの数が０になるわけではなく、ＲＣ１．ＲＩ［１］＝ＯＦＦであるならば、ワークの数が０でなくてはならないという条件を示しているだけであり、ＲＣ１．ＲＩ［１］＝ＯＦＦであっても、生産システムモデル上のハンド１４に含まれるワークの数が１であるという状況が起きることはありうる。
【００５０】
また、センサが表すことのできる情報は限られていることが多い。例えば、上の例であればハンド１４がワークを把持しているか、いないかは検出できるが、把持しているワークの種類はわからない。従って、センサの信号は、生産システムモデルのワークの置き場所が持っているワークの種類や個数の情報を、補完するものとして用いる。
【００５１】
プロセス
図５においては、ロボット１１〜１３の作業プログラムおよび加工機械２１、２２の加工プログラムが矩形で表されている。これらを本発明ではプロセスと称する。プロセスは、以下の属性を持つ。
（１）．．  プロセスが実行されるロボット１１〜１３または加工機械２１、２２を特定する文字列
（２）．．  プロセスの名称
（３）．．  実行状態
（４）．．  終了状態および戻り値
【００５２】
例えば、作業プログラムＡ１が、ロボット１１で実行されるＰＮＳ００１１というプログラムに相当するものであり、現在実行中ではないならば、次のように表現できる。
Ｃｏｎｔｒｏｌｌｅｒ  ＝  Ｒｏｂｏｔ１１
ＰｒｏｇｒａｍＩＤ  ＝  ＰＮＳ００１１
Ｓｔａｔｕｓ  ＝  ｉｄｌｅ
【００５３】
実行状態は、ｉｄｌｅ，ｒｕｎｎｉｎｇ，ｐａｕｓｅ，ｆｉｎｉｓｈｅｄの４つの状態を持つ。これらはそれぞれ、プログラムを起動していない状態、起動中、プログラムの一時停止中、プログラムが完了した状態、を示している。
【００５４】
また、作業プログラムおよび加工プログラムは、プログラム終了時に次の２つの値を返すものとする。
（１）．．  正常終了か異常終了かを示す値  （終了状態）
（２）．．  戻り値
【００５５】
終了状態は、作業プログラムまたは加工プログラムが正常に終了したかまたは異常終了したかを表している。ここで正常終了とは、プログラムが最後まで実行されて終了した場合、もしくは、あらかじめプログラム内に記述されたプログラムを終了させる命令によって終了した場合のいずれかを示す。異常終了とは、プログラムが本来終了するべきではない行で終了させられた場合を示す。
【００５６】
本発明では、作業プログラムおよび加工プログラムの終了時に、何らかの数値を返すことができるものとする。これを戻り値と呼ぶ。戻り値は生産システムモデルにとって必須ではない。使い方は後述する。
【００５７】
実行条件、実行結果
図５には２種類の矢印が含まれている。その一つは、ワークの置き場所からプロセスに向かう矢印であり、他の一つは、プロセスからワークの置き場所に向かう矢印である。ワークの置き場所からプロセスに向かう矢印は、プロセスを実行するためには何が必要であるか（実行条件）を示す。プロセスからワークの置き場所に向かう矢印は、プロセスの実行後に起きる変化（実行結果）を表す。
【００５８】
図６は実行条件と実行結果の例を示す図である。図６は、図５からロボット１２の持つ作業プログラムＢ１に関係のある箇所を抽出したものである。以下、図６を例として、作業プログラムと、その実行条件と実行結果について解説する。
【００５９】
図６に示される、仮置き台３１から作業プログラムＢ１に向かう矢印は、作業プログラムＢ１を実行するために必要な条件（実行条件）を示すものである。この実行条件には以下のことを記述可能である。
（１）．．プログラムを実行することによって、仮置き台３１にあるワークＷの数、種類、状態におきる変化（例えばワークの移動）
（２）．．プログラムを実行するために必要なロボット、加工機械、周辺機器の状態（事前条件）
【００６０】
作業プログラムＢ１は、仮置き台３１からＣｌａｓｓＩＤ＝１をもつワークを取るというものだとすると、実行条件に含まれるワークの移動は次のように記述される。
Ｃｏｕｎｔ  ＝  １
ＣｌａｓｓＩＤ  ＝  １
【００６１】
これら式は、仮置き台３１にワークが１つあることを示しているのではなく、作業プログラムＢ１が、ＣｌａｓｓＩＤ＝１であるワークを一つ必要としていることを意味している。つまり、仮置き台３１にＣｌａｓｓＩＤ＝１であるワークが一つ以上ある場合には、作業プログラムＢ１の実行条件を満たす。そして、作業プログラムＢ１が実行されると、ＣｌａｓｓＩＤ＝１であるワークは、Ｃｏｕｎｔで指定された数だけ仮置き台３１から消費される。つまり、前述した例においては、仮置き台３１からワークが一つ減ることになる。
【００６２】
実行条件には、ワークＷの移動だけでなく、事前条件も記述可能である。例えば、このプログラムを実行するためには、ロボット１２がそのホームポジションにいる必要がある。ロボット１２がホームポジションにいることが、仮にＲＣ２．ＵＯ［７］という信号に出力されているならば、事前条件は次のように記述される。
ＲＣ２．ＵＯ［７］＝ＯＮ
【００６３】
次に、この作業プログラムＢ１の実行結果を説明する。作業プログラムＢ１は、仮置き台３１からワークＷをロボット１２のハンド１６により取出すというものである。従って、その実行結果は、ハンド１６にＣｌａｓｓＩＤ＝１をもつワークが一つ存在するというものである。これを記述すると次のようになる。
Ｃｏｕｎｔ  ＝  １
ＣｌａｓｓＩＤ  ＝  １
【００６４】
これら式の示すことは、作業プログラムＢ１が終了すると、矢印の先端に位置するハンド１６に対して、ＣｌａｓｓＩＤ＝１であるワークを一つ追加するということである。この矢印も、ハンド１６の状態を示すものではなく、ワークの移動を示すものであることに注意されたい。すなわち、この矢印は、ハンド１６にＣｌａｓｓＩＤ＝１であるワークが一つあるという状態になることを意味する物ではない。
【００６５】
実行結果に対しても、ワークの移動だけでなく、ロボット、加工機械、周辺機器の状態を記述することができる。これを事後条件と称する。例えば、作業プログラムＢ１が終了したときに、ロボット１２がホームポジションに戻っている必要があるならば、次のように記述する。
ＲＣ２．ＵＯ［７］＝ＯＮ
【００６６】
なお、作業プログラムＢ１の終了時には、当然ハンド１６に取り付けられたセンサがＯＮになっているはずである。このことを事後条件に記述しても良いが、ワーク置き場としてのハンド１６のワーク条件補完式に記述することがより望ましい。
【００６７】
作業プログラムおよび加工プログラムは、プログラムが正常終了したか、異常終了したかを示す値と、戻り値とを有している。戻り値は、実行結果におけるワーク移動式に使用することができる。例えば、ロボットに取り付けられた視覚センサによりワークの個数を測定する作業プログラムでは、その戻り値としてワークＷの個数を返し、これをワーク条件式に次のように代入する。
Ｃｏｕｎｔ＝  ＲｅｔｕｒｎＶａｌｕｅ
【００６８】
これまでに述べた実行結果に関する説明は、すべて作業プログラムおよび加工プログラムの終了状態が正常である場合にのみ適用される。作業プログラムおよび加工プログラムの終了状態が異常であった場合、実行結果におけるワーク条件式に記述されたワークの移動は実行されない。
【００６９】
プロセスの実行
ここで、図６が表す情報をまとめてみる。まず、仮置き台３１は、その場所にどのようなワークをいくつ置けるのかという情報を保持している。実行条件（矢印）は、作業プログラムＢ１が実行するのに必要なワークＷの種類と数を表している。作業プログラムＢ１は、その実行の主体となるロボットと実際に実行されるプログラム名を保持している。
【００７０】
実行結果（矢印）は、作業プログラムＢ１が実行された後に出力されるワークＷの種類と数を示している。そして、ハンド１６は、ハンド１６に置くことのできるワークＷの種類と数の条件を保存している。
【００７１】
これらを総合すると、作業プログラムＢ１が実際に実行されるためには以下のことが満たされる必要がある。
（１）．．  作業プログラムＢ１を仮に実行したとして、その後に仮置き台３１に置かれているワークの種類と数が、ワークの種類と数に関する仮置き台３１の条件を満たしていること。
（２）．．  作業プログラムＢ１を仮に実行したとして、その後のハンド１６に置かれているワークＷの種類と数が、ワークの種類と数に関するハンド１６の条件を満たしていること。
【００７２】
例えば、ハンド１６に、Ｃｏｕｎｔ  ｉｎ  ０．．１という条件が付随していた場合には、ハンド１６にワークＷが存在しているときに、作業プログラムＢ１を実行できない。その理由は、作業プログラムＢ１を実行すると、ハンド１６にはワークＷが一つ追加されてＣｏｕｎｔ＝２になり、このことがハンド１６の条件を満たさないからである。
【００７３】
同様に、仮置き台３１にワークＷが存在していないときに、作業プログラムＢ１を仮に実行した場合には、仮置き台３１に含まれるワークは「−１個」になり、これは仮置き台３１の条件を満たさない。プロセスの実行には、そのプロセスに対応する作業プログラムおよび加工プログラムをそれぞれ保持するロボットおよび加工機械が、そのプログラムを実行可能であることが必要である。
【００７４】
例えば、作業プログラムＢ１は、ロボット１２によって実行されるプログラムであるものの、ロボット１２で他の作業プログラムを実行しているときには作業プログラムＢ１を実行することはできない。このことは自明な条件であるので、生産システムモデルに記述する必要はない。
【００７５】
実行条件および実行結果には、プロセスによって移動するワークに関する条件と、そのプロセスに対応するプログラムを実行するロボットや加工機械がそれを実行可能であるかという条件に加えて、ロボット、加工機械および周辺機器の状態を追加することができる。例えば、作業プログラムＢ１を実行するためには、事前にロボットが或る特定の位置（ここではホームポジションと称する）に在る必要がある。ロボットがホームポジションにいるということを示す信号が利用可能であるならば、このことを実行条件に追加することができる。また、生産システムに存在する他のロボットが動作中であるかないかが信号によって検出可能であるならば、これを実行条件に追加することもできる。
【００７６】
まとめ
以上をまとめると、図５で表される生産システムモデルは、生産システムにおける作業プログラムおよび加工プログラムと、それらのプログラムによってワークがどのように移動されるのか、ならびにそれらのプログラムはワークがどこにあるときに実行されるのか、ということを示すものであるといえる。このような生産システムモデルにより、生産システムの振る舞いを表現できる。また、ロボット、加工機械および周辺機器に取り付けられたセンサなどからの信号を、作業プログラムおよび加工プログラムの実行条件に追加することや、ワークの置き場所におけるワークの配置（数、種類）などを検証するための条件として追加することができる。
【００７７】
生産システムモデルで定義されている条件は、次の３つである。
（１）．．  ワークの置き場所は、ワーク条件とワーク条件補完式を持つ。
（２）．．  実行条件は、ワーク移動式と事前条件を持つ。
（３）．．  実行結果は、ワーク移動式と事後条件を持つ。
【００７８】
生産システムモデルの実装
次に、これまでに述べた生産システムモデルを使って生産システムを管理する生産管理装置１０の実現方法を述べる。図５に示される生産システムモデルで表現された生産システムを管理するのが、生産管理装置１０である。図７に示すように、生産管理装置１０は、生産システムモデル４とそれを記憶する記憶手段３、エラー検出部２、情報収集部５、プログラム管理部６、およびユーザインタフェース部７を含んでいる。ユーザインタフェース部７は表示編集部８およびエラー表示部９を備えている。
【００７９】
まず、図７に示す生産システムモデル４は、前述したように生産システム１の状態を表現するものであり、図５の内容を生産管理装置が扱える形式で表現した生産システムモデル４が記憶手段３に保存されている。生産システムモデル４の形式はどのような形式でも構わないが、本発明では、ＸＭＬ形式で保存している。
【００８０】
情報収集部５は、ロボット１１〜１３、加工機械２１、２２および周辺機器に付けられたセンサと通信して受信されたロボットおよび加工機械の実行状態を表す実行状態信号およびセンサ、例えばセンサ３１１、３２１からのワークの有無を表すワーク信号とに基づいて、生産システムモデル４を更新する。プログラム管理部６は、生産システムモデル４を参照して実行可能な作業プログラムおよび加工プログラムがあればそれらプログラムを起動し、起動されたプログラムの実行状態を監視する。エラー検出部２は、生産システムモデル４に含まれるワークの置き場所や実行条件、実行結果に関連付けられた条件を監視し、条件が成り立っているかどうかを通知する役割を持つ。
【００８１】
プログラム管理部の動作
プログラム管理部６の詳細を述べる。図８は、プログラム管理部６の動作を示す。プログラム管理部６は、生産システムモデル４を参照し、実行可能なプログラムがあるかどうかを監視し続ける。実行可能なプログラムが存在した場合、プログラム管理部６はプログラム管理タスク６ａを生成する。生成されたプログラム管理タスク６ａは、ロボットおよび加工機械と通信してその実行可能なプログラムの起動を指示し、起動された作業プログラムや加工プログラムが終了するまで待機し、終了処理の後、自分自身を消滅させる。なお、生産システム１が複数のロボット１１〜１３および／または複数の加工機械２１、２２を備えている場合には、プログラム管理部６は実行可能なプログラムを備えたロボットおよび／または加工機械を複数のロボット１１〜１３および／または複数の加工機械２１、２２から選択することも行う。
【００８２】
実行可能なプログラムがあるかどうかの判断は、前述したように、そのプログラムを仮に実行したとして、その結果が入力となるワーク置き場、および出力となるワーク置き場に関連づけられた条件を満たすか、ということと、ロボット自身がそのプログラムを実行可能な状態になるかということと、ロボットや加工機械、周辺機器に取り付けられたセンサからの信号が実行条件に関連づけられた条件を満たしているかということとの３つで判定される。
【００８３】
プログラム管理タスク６ａにおける起動処理では、次のことが行われる。
（１）．．  プログラムの実行条件に従い、生産システムモデル４において、入力となるワーク置き場からワークを削除する。
（２）．．  プログラムを実行するロボットもしくは加工機械に対して、プログラムの起動を指示する。
【００８４】
プログラム管理タスク６ａが生成される時点では、選択されたプログラムが実行条件を満たすことがプログラム管理部６により既に確認されているので、プログラム管理タスク６ａはプログラムの実行条件を調べる必要はない。
【００８５】
プログラム管理タスク６ａにおける終了処理では、次のことが行われる。
（１）．．  プログラムを実行するロボットもしくは加工機械から、プログラムの終了を示す信号を受け取る。
（２）．．  プログラムの実行結果に従い、生産システムモデル４において出力となっているワーク置き場に対して、ワークを追加する。
【００８６】
この動きを、図６を用いて説明する。まず、仮置き台３１には、ＣｌａｓｓＩＤ＝１であるワークＷが一つ存在している。ハンド１６にはワークが存在しておらず、かつ、ロボット１２は何れの作業プログラムを実行していない状態だったとする。このとき、作業プログラムＢ１を実行できるので、プログラム管理部６は作業プログラムＢ１を実行するために、プログラム管理タスク６ａを生成する。
【００８７】
プログラム管理タスク６ａは、起動処理を行い、まず生産システムモデル４における仮置き台３１から、ワークＷを一つ取り除く。これにより、生産システムモデル４において、仮置き台３１に置かれているワークＷはゼロになる。次にプログラム管理タスク６ａは、ロボット１２と通信して、作業プログラムの実行を指示する。なお、この瞬間、現実の生産システムでは、仮置き台３１に置かれたワークＷは移動していないのは言うまでもない。
ロボット１２におけるプログラムの実行状態がｒｕｎｎｉｎｇからｆｉｎｉｓｈｅｄになったときに、プログラム管理タスク６ａはプログラムの終了状態を取得する。図９に示されるように、終了状態が正常であれば、プログラム管理タスク６ａはさらに戻り値を取得する。そして、プログラム管理タスク６ａは、生産システムモデル４のハンド１６に対して、ワークを１個追加して（図９における「ワークの移動」に相当する）、プログラムの状態をｆｉｎｉｓｈｅｄからｉｄｌｅに変更する。これにより、生産システムモデル４のハンド２１には、ワークが１個置かれることになる。
【００８８】
事後条件が定義されていた場合は、図９に示されるように、プログラム管理タスク６ａは、この直後に現在の生産システムの状態と事後条件との整合性を評価する。そして、整合がとれている場合には、プログラム管理タスク６ａは消滅する。
【００８９】
一方、終了状態が異常であった場合には、図９に示されるようにプログラム管理タスク６ａは戻り値を取得せず、またプログラムの状態をｆｉｎｉｓｈｅｄにしたままとする。さらに、事後条件を評価せず、またプログラム管理タスク６ａ自体も消滅しない。この場合には操作者が表示編集部８を用いて手動でエラーを解消した場合にのみ、事後条件の評価が行われる（図９を参照されたい）。
【００９０】
プログラム管理タスク６ａは、同時に複数個生成可能である。つまり、複数のプロセスが実行可能であれば、その数だけプログラム管理タスク６ａを生成して作業プログラムおよび／または加工プログラムを実行することができる。図１に示すように、ここで例示している生産システム１には三つのロボット１１〜１３および二つの加工機械２１、２２が存在しているので、条件が満たすならば最大で５つのプロセスが並列して実行されることになる。
【００９１】
情報収集部の動作
情報収集部５は単純な構成である。図１０に示されるように、情報収集部５は、生産管理装置１０の起動時に生産システムモデル４を読み込み、そのなかの条件に記述された信号の一覧表を作成する。前述したように、生産システムモデル４の中で信号を条件として記述できるのは、ワーク置き場の条件と、プロセスの実行条件、プロセスの実行結果の３種類である。生産システムモデル４に記述された全てのワーク置き場と全てのプロセスから、生産システムモデル４が監視する必要のある信号を抽出する。この信号の一覧表は、たとえば、次のようなものになる。
（１）．．  仮置き台３１のワークＷの有無を示すセンサ３１１の信号
（２）．．  仮置き台３２のワークＷの有無を示すセンサ３２１の信号
（３）．．  ハンド１４のワークＷの有無を示すセンサ１４１の信号
（４）．．  その他の信号
【００９２】
これらセンサが取り付けられたそれぞれの装置において、各センサは独自の文字列によって参照可能である。例えば、ロボット１１のハンド１４に取り付けられたセンサは、ロボット１１においてＲＩ［１］という文字列で参照可能であるとすれば、生産管理装置１０ではこの信号を、Ｒｏｂｏｔ１．ＲＩ［１］という文字列によって参照することになる。なお、生産管理装置１０とロボット１１〜１３、生産管理装置１０と加工機械２１、２２との間の信号のやりとりは種々の方法で容易に実現可能であるので、その具体的な方法の説明を省略する。
【００９３】
エラー検出部の動作
エラー検出部２は、生産システムモデル４に定義された条件を周期的に評価し、次の２つの場合にエラーを通知する（図１１）。
（１）．．ワーク条件が、ワーク条件補完式を満たさない。
（２）．．正常に終了していないプロセスがある（終了状態が異常である場合と、実行結果に含まれる事後条件が満たされていない場合）
【００９４】
前者は、生産システムモデル４で定義されたワークの移動と、生産システムに取り付けられたセンサからの信号が一致しないことを示し、後者はワークの移動とは関係なく生産システムの状態が所望の結果と異なることを示している。
【００９５】
ワーク条件がワーク条件補完式を満たさない場合の例は、例えば以下の通りである。図６において作業プログラムＢ１が実行されて、生産システムモデル４上ではワークがハンド１６にあるはずであるが、現実にはロボット１２がワークを途中で落としていて、ハンド１６に取り付けられたセンサ１６１の信号がＯＦＦになっている場合である。
【００９６】
また、プロセスの終了状態が異常であるときも、エラーとなる。このことの例は、例えば図６における作業プログラムＢ１の実行の途中で、何らかの原因で作業プログラムＢ１を終了させた場合である。この原因としては、ロボット１２が予期せぬ障害物と衝突した状況、または、生産システムの操作者がロボット１２を途中で手動で停止させたなどの状況が考えられる。
【００９７】
実行結果の一部である事後条件が満たされていない場合の例は、例えば図６において、作業プログラムＢ１が終了したときに、ロボット１２がホームポジションにいない場合である。
【００９８】
なお、事前条件が満たされないために作業プログラムまたは加工プログラムが実行されないという場合もありうる。これは異常ではないが、生産システムが期待通りに動作していない状況である。この状況を、生産システムの操作者に示すために、生産管理装置１０は任意の作業プログラムや加工プログラムに対して、事前条件の不一致をエラー表示部９に表示することができる。エラー表示部９の例を示す図１３においては、信号”ＰＬＣ．ＤＯ［３］”がＯＮであるべきなのに、実際にはＯＦＦになっていることを示している。生産システムの操作者は、この画面を見て、障害解決の糸口とすることができる。なお、図１３における文字Ａ〜Ｇのそれぞれは、図５に示される作業プログラムまたは加工プログラムを示している。
【００９９】
ユーザインタフェース部の動作
ユーザインタフェース部７は、生産システムモデル４を表示、編集するための表示編集部８と、エラーが発生したときにその原因を示すエラー表示部９とから構成される。
【０１００】
表示編集部８では、生産システムモデル４のワークの置き場所に含まれるワークの個数、種類、状態を手動で変更することができる。また、表示編集部８においては、プロセス（プログラム）の実行結果が異常であったときに、操作者は異常を手動で正常に戻すことができる。エラー表示部９は、図１３を参照して既に示したように、プロセスの事前条件、事後条件やワーク条件とワーク条件補完式との整合性を表示する。
【０１０１】
生産システムの運転
これまでに述べてきた生産システムモデル４を備えた生産管理装置１０を使った生産システム１の典型的な運転方法を述べる。
【０１０２】
ワークの投入
この生産システムが動作するためには、まずワークが必要であり、ワークが生産システムモデル４のなかのワークの置き場所に存在することがスタートとなる。生産システムモデル４にワークを投入するには、次の２つの方法がある。
（１）．．  生産管理装置の手動編集部の有する機能を使って、生産システムモデル４上のワークの置き場所に、ワークを追加する。
（２）．．  何らかの周辺装置によって、ワークの置き場所に存在するワークの数や種類を検出可能な場合には、ワークを投入する機能を持ったプログラムを実行させる。
【０１０３】
前者がもっとも簡単な方法であり、この方法においては、生産システムの操作者が手動で生産システムモデル４上の任意のワークの置き場所にワークを投入するという操作をするだけである。しかし、この方法は手動の操作になるので、無人運転の生産システムには使えない。
【０１０４】
生産システムを無人で運転するためには、周辺装置やＰＬＣなどからワークの数や種類といった情報を取得できるようにしておかなければならない。このような生産システムであれば、これらの情報を取得するという作業プログラムを実行することで、ワークを生産システムモデル４上に投入できる。例えば、倉庫と連動した生産システムを考える。この例では、倉庫と生産システムはつぎのように信号をやり取りするものとする。
（１）．．  倉庫は、生産システムに対して、ワークを供給するときに、ワークの個数を示す信号を送出する。
（２）．．  倉庫は、生産システムに対して、ワークを供給するときに、ワーク供給を示す信号をＯＮにする。
（３）．．  生産システムから、倉庫に対して、ワークの数を取得したことを示す信号がＯＮになると、倉庫からワーク供給を示す信号はＯＦＦになる。
【０１０５】
このような倉庫に対して、生産システム側ではワークの個数を取得する作業プログラムを用意し、倉庫が生産システムに対してワークを供給する供給場所を、生産システムモデル４においてワークの置き場所として示しておく（図１２を参照されたい）。このとき、生産システムモデル４では、倉庫からの信号がＯＮのときに、倉庫からワークの個数を取得するというプログラムを実行するように定義しておく。倉庫からの信号がＰＬＣ．ＤＩ［１］という文字列で表現できるとき、この条件は、作業プログラムの実行条件として次のように記述できる。
ワーク移動式  無し
事前条件  ＰＬＣ．ＤＩ［１］＝  ＯＮ
【０１０６】
この作業プログラムは、その内部でワークの個数を倉庫から取得して、倉庫に対してワークの個数を取得したという信号を送る。ワークの個数は戻り値として返す。このとき、実行結果は次の式で表される。
ワーク移動式  Ｃｏｕｎｔ  ＝  ＲｅｔｕｒｎＶａｌｕｅ
事後条件  ＰＬＣ．ＤＩ［１］  ＝  ＯＦＦ
これにより、倉庫から信号がきたときに、ワークの個数を取得するという振る舞いが実現される。
【０１０７】
通常運転
生産システムモデル４においてワークが投入されると、プログラム管理部６により実行可能な作業プログラムおよび加工プログラムが起動され、作業プログラムおよび加工プログラムを実行した結果として、ワークが生産システムモデル４内を移動していく。この動作は、実行可能な作業プログラムおよび加工プログラムが存在しなくなるまで続く。通常、実行可能なプログラムが存在しない状態はワークに対する作業がすべて終了して、ワークがすべて排出場所まで移動した状態である。
【０１０８】
ワークの排出
ワークの排出は、ワークの供給とほぼ同様に、手動で生産システムモデル４から取り除くか、あるいは同じ働きをするプログラムを実行することで実現される。
【０１０９】
エラーの発生と検出
本発明で述べる生産システムでは、次のエラーが検出できる。
（１）．．  作業プログラムおよび加工プログラムが正常に終了していない場合
（Ａ）  作業プログラムおよび加工プログラムが異常終了した場合
（Ｂ）  作業プログラムおよび加工プログラムは正常終了したが、生産システムモデル４において、作業プログラムおよび加工プログラムの実行結果の事後条件が整合しない場合
（２）．．  生産システムモデル４において、ワークの置き場所に関連づけられたワーク条件と、ワーク条件補完式とが整合しない場合
【０１１０】
作業プログラムおよび加工プログラムが正常に終了していないというエラーは、作業プログラムおよび加工プログラムの実行の結果が、期待する状況にならなかったということを示す。このエラーにおいては、エラーが発生するタイミングはプログラムの終了時である。
【０１１１】
生産システムモデル４においてワークの置き場所に関連づけられたワーク条件とワーク条件補完式とが整合しないというエラーは、生産システムのモデルである生産システムモデル４と実際の生産システムの状況が一致していないことを示す。このエラーは、常時発生する可能性がある。
【０１１２】
本発明の特徴は、生産システム管理装置が生産システムモデル４というモデルを持ち、このモデルと実際の生産システムの状態とを比較することでエラーを検出するというものである。このモデルと実際の生産システムとを比較するという方式により、ワークの流れまでも把握してエラーを検出することができるようになっており、また後述するように、エラー状態からの復旧を容易にすることができる。
【０１１３】
なお、上記の２つのエラー（１）、（２）以外にも、作業プログラムおよび加工プログラムの動作中にアラームが発生する場合があるが、この時点では本発明ではエラーとして扱わない。例えば、或るロボットにおいて、作業プログラムの実行中に何らかの障害物に衝突してアラームが発生し、作業プログラムが一時停止状態になったとする。この状態は、単に生産システムモデル４において、該当する作業プログラムの実行状態がｒｕｎｎｉｎｇからｐａｕｓｅｄに代わるだけである。この状態は、障害物を取り除き作業プログラムを再開すれば、生産システムが動作を続けることができるので、本発明ではエラーとは扱わない。しかし、この状態で作業プログラムを終了した場合には、異常終了ということになり、本発明におけるエラーの定義の内のひとつに該当する。
【０１１４】
エラー状態からの復旧
本発明に従う生産システムでエラーが発生した場合、次の手順で復旧する。作業プログラムまたは加工プログラムが正常に終了していない場合のエラーを最初に対処する必要がある。作業プログラムまたは加工プログラムの異常終了は、例えば操作者が途中終了を指示した場合に生じる。あるいは、作業プログラムまたは加工プログラムの異常終了は、プログラムの実行中にロボットまたは加工機械の電源が落ちることによりプログラムが途中で停止してその後実行を継続できない場合に生じる。
【０１１５】
いずれの場合においても操作者によるエラー復旧作業は、異常終了したプログラムの実行結果の事後条件を満たすようにロボットまたは加工機械を手動で操作することである。例えば、ロボットが何からの障害物に衝突して作業プログラムが異常終了した場合には、ロボットのアームの位置は当然正常終了した場合の位置とは異なるので、事後条件を満たさない。そこで、操作者はロボットを手動で操作して、プログラムが正常に終了した場合の位置まで移動させる。この復旧作業によって、ロボットの作業プログラムまたは加工機械の加工プログラムが正常終了した場合と同じ状態になる。
【０１１６】
次いで、ワークの配置が、モデルと実際のシステムとで異なっている場合には、このエラーを復旧しなくてはならない。このエラーからは二つの復旧方法が存在する。一つの復旧方法は、生産システムモデル４におけるワーク情報、つまりワークの種類、個数、および加工状態を、実際の生産システムにおけるワークの状態と一致させることである。他の復旧方法は、実際の生産システムの状態を変更し、それにより、実際の生産システムの状態と生産システムモデル４とを一致させることである。どちらの手段であっても、モデルと実際の状態とを単に一致させればよい。
【０１１７】
エラー状態では、生産システムの操作者は、モデルと実際の生産システムとが一致していないのはどれであるかをエラー表示部９に表示することができる。この画面には次の情報が含まれる。
（１）．．  異常終了となったプロセスがあれば、そのプロセスの名前
（２）．．  生産システムモデル４において、作業プログラムおよび加工プログラムの実行結果の事後条件が整合しない部分
（３）．．  ワークの置き場所に関連づけられたワーク条件と、ワーク条件補完式の整合しない部分
具体的には、エラー標示部９は、プロセスが異常終了しているのであればそのプロセスの名前を示し、また、プロセスが正常終了しているにもかかわらず生産システムモデルが定義するプロセスの事後条件と、通信手段６０を通じて受信された最新の実行状態信号とが整合しない場合にはこれら実行状態信号を表示する。さらに、エラー標示部９は、プロセスの結果によって更新された生産システムモデル４のワーク情報が、通信手段６０を通じて受信された最新のワーク信号によるワーク条件補完式を満たさない場合にはこれらワーク信号を表示する。
【０１１８】
例えば、図６は仮置き台３１からロボット１２がハンド１６でワークを取得するというプログラムである。このプログラムを実行した結果、プログラムは正常終了したが、その後ワークがハンド１６から落下した場合を仮定する。このとき、生産システムモデル４上ではワークがハンド１６に把持されていることになっているものの、このことは実際とは異なっており、生産システムモデルにおけるワーク情報が、最新のワーク信号によるワーク条件補完式を満たさないということによってエラーとして検出される。生産管理装置１０は、そこでハンド１６において生産システムモデルと実際の生産システムとが一致していないことを生産システムの操作者に通知する。
【０１１９】
ここで、実際のシステムを生産システムモデル４に合わせるとすれば、生産システムの操作者がワークを拾ってハンド１６に把持させれば良い。これにより、生産システムモデルと実際の生産システムとが一致する。
【０１２０】
生産システムモデル４を現実の生産システムに合わせる場合には、生産システムモデル４のハンド１６におけるワークを削除してもよい。あるいは実際のシステムでワークを仮置き台３１上に置き直して、生産システムモデル４上でもワークをハンド１６から仮置き台３１に移動させるということもできる。どの方法でももっとも簡単な方法を選ぶことが可能である。
【０１２１】
復旧後の再開
エラーが発生すると、プログラム管理部６はプログラム選択動作を停止する。しかし、この状態でも、情報収集部５は動作を続けるため、生産管理装置は、生産システムがエラー状態になったままか、それともエラー状態が解消されたのかを監視しつづけている。前述の例では、ハンド２１におけるモデルと実際の生産システムとの間の不一致が解消されるまでは生産管理装置１０は、生産システムの操作者からの再開の指示を受けつけない。
【０１２２】
すなわち、生産管理装置１０は、生産システムモデル４におけるプロセスが正常に終了した状態になっていることが、通信手段６０を通じて受信された最新の実行状態信号によって確認されると共に、前記生産システムモデル４におけるワーク情報が、通信手段６０により受信された最新のワーク信号によって確認された場合にのみ、生産システム１を再び作動させるようにしている。
【０１２３】
生産システムの操作者がモデルと実際を一致させるように作業して、エラー状態が解消されると、生産管理装置１０は再開の指示を受け付け、プログラム管理部６がプログラムの選択動作を再開する。前述の例において、落としたワークをハンド１６に把持させた場合には、その状態から実行可能なプログラムが起動されることになる。あるいは、ワークを仮置き台３１に置いた場合には、再度、仮置き台３１からワークを取得するという作業プログラムＢ１が実行されることになる。あるいは、生産管理装置１０の表示編集部８を用いて、操作者が異常（エラー状態）を手動で正常に戻すようにしてもよい。
【０１２４】
一般の生産システムにおいては、生産システムに対して何らかの手動介入があった後の運転再開には注意が必要である。その理由は、手動介入の結果、生産システムが期待する状態になっているかどうかを判定する手段がないからである。これに対して、本発明の生産システムでは、作業プログラム（または加工プログラム）が実行できるかどうかは実行条件によって判定されている。従って、本発明の生産システムにおいては、手動介入の有無に関わらず、生産システムが期待する状態になっていなければプログラムは呼び出されない。従って、エラーからの復旧といった手動介入の後でも、生産システムを安全に運転再開することができる。
【図面の簡単な説明】
【０１２５】
【図１】生産システムを構成する生産管理装置、ロボット、加工機械を示す略図である。
【図２】生産システムを構成する周辺機器を示す図である。
【図３】生産システムが扱うワークを含んだ生産システムを示す図である。
【図４】ワークの流れを示す図である。
【図５】生産システムモデルを示す図である。
【図６】実行条件と実行結果の例を示す図である。
【図７】生産管理装置の機能モジュールを示す図である。
【図８】プログラム管理部の動作を示す図である。
【図９】終了処理の詳細を示す図である。
【図１０】情報取得部の動作を示す図である。
【図１１】アラーム通知部の動作を示す図である。
【図１２】ワークの供給を示す図である。
【図１３】条件の不一致の表示内容を示す図である。
【符号の説明】
【０１２６】
１    生産システム
２    エラー検出部
３    記憶手段
４    生産システムモデル
５    情報収集部（更新手段）
６    プログラム管理部（指示手段）
６ａ    プログラム管理タスク
７    ユーザインタフェース部
８    表示編集部（変更手段）
９    エラー表示部
１０    生産管理装置
１１〜１３    ロボット
１４〜１９    ハンド
２１、２２    加工機械
２３、２４    治具
３１、３２    仮置き台
４０    供給パレット
４１、４２    供給パレット置き場
５０    排出パレット
５１、５２    排出パレット置き場
６０    通信手段
１４１〜１９１、２３１、２４１、４１１、４２１、５１１、５２１    センサ
Ａ１〜Ａｎ、Ｂ１〜Ｂｎ、Ｃ１〜Ｃｎ    作業プログラム
Ｄ１〜Ｄｎ、Ｅ１〜Ｅｎ    加工プログラム
Ｗ、Ｗ１、Ｗ２    ワーク
【図１】
0004465012.tif 000002
【図２】
0004465012.tif 000003
【図３】
0004465012.tif 000004
【図４】
0004465012.tif 000005
【図５】
0004465012.tif 000006
【図６】
0004465012.tif 000007
【図７】
0004465012.tif 000008
【図８】
0004465012.tif 000009
【図９】
0004465012.tif 000010
【図１０】
0004465012.tif 000011
【図１１】
0004465012.tif 000012
【図１２】
0004465012.tif 000013
【図１３】
0004465012.tif 000014