ロボットを使用した組み立てセルにおけるロボットが行う独立した作業を単位とした作業ブロックを実行順に接続して工程フローを作成し、工程フローからロボットプログラムを生成するロボットプログラミング装置であって、停止ブロック検出手段で検出された停止ブロックと、表示手段に表示した前記停止ブロックを考慮した外部入力に従って実行ブロック指定手段から得られる停止状態から実行する実行ブロックとの位置情報とハンド状態とセンサ状態をそれぞれ比較して、前記停止ブロックの停止状態を起点として前記実行ブロックを実行するための一時実行プログラムおよび一時実行作業指示を生成し、前記表示手段に前記一時実行作業指示を表示すると共に、入出力手段から前記一時実行プログラムを出力する工程再構築手段を備えたことを特徴とするロボットプログラミング装置。ロボットを使用した組み立てセルにおけるロボットが行う独立した作業を単位とした作業ブロックを実行順に接続して工程フローを作成し、工程フローからロボットプログラムを生成する編集手段を備えたロボットプログラミング装置であって、工程再構築手段、実行ブロック指定手段、停止ブロック検出手段、表示手段及び入出力手段をさらに備え、前記編集手段は、それぞれロボットプログラム、動作開始前と終了後のそれぞれの初期位置とハンド状態とセンサ状態を含む作業ブロックを定義して前記工程フローを作成し、前記停止ブロック検出手段は、ロボット制御またはシミュレーション時の動作停止時に、前記入出力手段を介して外部からのロボット停止状態、ハンド状態、センサ状態を検出して前記工程再構築手段に送り、前記工程再構築手段は、前記ロボット停止状態を前記編集手段に送りに停止ブロックを求めさせ、前記停止ブロック、ロボット停止状態、ハンド状態、センサ状態を前記表示手段に表示させ、前記停止ブロックと、前記表示手段の表示を考慮した外部入力に従って前記実行ブロック指定手段から得られる停止状態から実行する実行ブロックとの位置情報とハンド状態とセンサ状態をそれぞれ比較して、前記停止ブロックの停止状態を起点として前記実行ブロックを実行するための一時実行プログラムおよび一時実行作業指示を生成し、前記表示手段に前記一時実行作業指示を表示すると共に、前記入出力手段から前記一時実行プログラムを出力する、ことを特徴とするロボットプログラミング装置。複数のロボットから構成される組み立てセルにおいて、ロボット間で同期が設定されている場合に、ロボットの同期動作時の待避位置を指定する待避位置指定手段をさらに備え、前記編集手段は、前記作業ブロックと、ロボット間で同期を設定する前記待避位置を含む同期ブロックと、を定義して前記工程フローを作成し、前記停止ブロック検出手段は、ロボット制御またはシミュレーション時の動作停止時に、ロボット毎に前記入出力手段を介して外部からのロボット停止状態、ハンド状態、センサ状態を検出して前記工程再構築手段に送り、前記工程再構築手段は、各ロボットに関して、前記ロボット停止状態を前記編集手段に送りに停止ブロックを求めさせ、前記停止ブロック、ロボット停止状態、ハンド状態、センサ状態を前記表示手段に表示させ、前記停止ブロックと、前記表示手段の表示を考慮した外部入力に従って前記実行ブロック指定手段から得られる停止状態から実行する実行ブロックとの位置情報とハンド状態とセンサ状態をそれぞれ比較して、前記停止ブロックの停止状態を起点として前記実行ブロックを実行するための一時実行プログラムおよび一時実行作業指示をロボット毎に同期区間単位で生成し、前記表示手段に前記一時実行作業指示を表示すると共に、前記入出力手段から前記一時実行プログラムを出力する、ことを特徴とする請求項2に記載のロボットプログラミング装置。前記工程再構築手段がさらに、実行ブロックを指定しないロボットのための待避プログラムおよび待避作業指示をロボット毎に同期区間単位で生成し、前記表示手段に前記一時実行作業指示と共に前記待避作業指示を表示し、前記入出力手段から前記一時実行プログラムと共に前記待避プログラムを出力することを特徴とする請求項3に記載のロボットプログラミング装置。エラーの発生またはイベントの発生によりロボットプログラムが停止した際に復帰させる場合に、前記実行ブロック指定手段から復帰時に再実行する実行ブロックが得られ、前記工程再構築手段が復帰のための前記各プログラムおよび作業指示を生成することを特徴とする請求項2から4までのいずれか1項に記載のロボットプログラミング装置。組み立てセルの立ち上げにおいて、動作を確認するために特定の工程の動作を複数回繰り返す場合に、前記実行ブロック指定手段から前記特定の工程の動作の実行ブロックが得られ、前記工程再構築手段が前記特定の工程の動作のための前記各プログラムおよび作業指示を生成することを特徴とする請求項2から4までのいずれか1項に記載のロボットプログラミング装置。ロボットを使用した組み立てセルにおけるロボットが行う独立した作業を単位とした作業ブロックを実行順に接続して工程フローを作成し、工程フローからロボットプログラムを生成するロボットプログラミング方法において、検出された停止ブロックと、表示手段に表示した前記停止ブロックを考慮した外部入力に従って得られる停止状態から実行する実行ブロックとの位置情報とハンド状態とセンサ状態をそれぞれ比較して、前記停止ブロックの停止状態を起点として前記実行ブロックを実行するための一時実行プログラムおよび一時実行作業指示を生成し、前記表示手段に前記一時実行作業指示を表示すると共に、入出力手段から前記一時実行プログラムを出力することを特徴とするロボットプログラミング方法。ロボットを使用した組み立てセルにおけるロボットが行う独立した作業を単位とした作業ブロックを実行順に接続して工程フローを作成し、工程フローからロボットプログラムを生成するロボットプログラミング方法であって、それぞれロボットプログラム、動作開始前と終了後のそれぞれの初期位置とハンド状態とセンサ状態を含む作業ブロックを定義して前記工程フローを作成する工程と、ロボット制御またはシミュレーション時の動作停止時に、入出力手段を介して外部からのロボット停止状態、ハンド状態、センサ状態を検出する工程と、前記ロボット停止状態から停止ブロックを求める工程と、前記停止ブロック、ロボット停止状態、ハンド状態、センサ状態を表示手段に表示させる工程と、前記停止ブロックと、前記表示手段の表示を考慮した外部入力に従って得られる停止状態から実行する実行ブロックとの位置情報とハンド状態とセンサ状態をそれぞれ比較して、前記停止ブロックの停止状態を起点として前記実行ブロックを実行するための一時実行プログラムおよび一時実行作業指示を生成する工程と、前記表示手段に前記一時実行作業指示を表示する工程と、前記入出力手段から前記一時実行プログラムを出力する工程と、を備えたことを特徴とするロボットプログラミング方法。複数のロボットから構成される組み立てセルにおいて、ロボット間で同期が設定されている場合に、ロボットの同期動作時の待避位置を指定する工程をさらに備え、前記工程フローを作成する工程で、前記作業ブロックと、ロボット間で同期を設定する前記待避位置を含む同期ブロックと、を定義して工程フローを作成し、前記ロボット停止状態、ハンド状態、センサ状態を検出する工程で、ロボット制御またはシミュレーション時の動作停止時に、ロボット毎に前記入出力手段を介して外部からのロボット停止状態、ハンド状態、センサ状態を検出し、前記停止ブロックを求める工程と前記停止ブロック、前記ロボット停止状態、ハンド状態、センサ状態を表示させる工程を各ロボットに関して行い、前記一時実行プログラムおよび一時実行作業指示を生成する工程で、一時実行プログラムおよび一時実行作業指示をロボット毎に同期区間単位で生成し、前記一時実行作業指示を表示する工程および一時実行プログラムを出力する工程で、各ロボットに関してそれぞれ前記一時実行作業指示の表示、前記一時実行プログラムの出力を行う、ことを特徴とする請求項8に記載のロボットプログラミング方法。前記一時実行プログラムおよび一時実行作業指示を生成する工程で、実行ブロックを指定しないロボットのための待避プログラムおよび待避作業指示をロボット毎に同期区間単位でさらに生成し、前記一時実行作業指示を表示する工程で、前記表示手段に前記待避作業指示を前記一時実行作業指示と共に表示し、前記一時実行プログラムを出力する工程で、前記入出力手段から前記待避プログラムを前記一時実行作業指示と共に出力する、ことを特徴とする請求項9に記載のロボットプログラミング方法。エラーの発生またはイベントの発生によりロボットプログラムが停止した際に復帰させる場合に、復帰時に再実行する実行ブロックを得て、復帰のための前記各プログラムおよび作業指示を生成することを特徴とする請求項8から10までのいずれか1項に記載のロボットプログラミング方法。組み立てセルの立ち上げにおいて、動作を確認するために特定の工程の動作を複数回繰り返す場合に、前記特定の工程の動作の実行ブロックを得て、前記特定の工程の動作のための前記各プログラムおよび作業指示を生成することを特徴とする請求項8から10までのいずれか1項に記載のロボットプログラミング方法。上記特許文献1では、非常停止などによりロボットが停止した場合に、順に前のステップに戻る。この方法はねじ締めのような単純作業では有効であるが、組み立て作業では既に組み付けられた部品を取り外すことは困難であり、単純にステップを逆順に戻り再開する方法では対応できない。このため、途中まで組み立てたワークを排除することなく作業を再開するために、固定的に工程を実行するのではなく、再実行する工程を選択できるようにする必要がある。また特許文献2では、停止した状況に応じて再開位置を決定するが、再開位置からは通常の処理を再度実行する。このため、前記と同様に途中まで組み立てたワークを排除することなく作業を再開するために、固定的に工程を実行するのではなく、再実行する工程を選択できるようにする必要がある。また特許文献3では、ロボットを所定の安全位置に待避するだけであり、複数台のロボットを用いたセルで指定したロボットの工程を再実行するにあたり、他のロボットを所定の待避位置に動かしたりする必要があった。この発明は、上記の課題を解決するためになされたものであり、広義には、ロボットの任意の停止状態から所望の動作を実行させる際に、工程を選択できるようにプログラミングを行うことでプログラムサイズを小さくすることを可能にしたロボットプログラミング装置および方法を提供することを目的とする。この発明は、ロボットを使用した組み立てセルにおけるロボットが行う独立した作業を単位とした作業ブロックを実行順に接続して工程フローを作成し、工程フローからロボットプログラムを生成するロボットプログラミング装置であって、停止ブロック検出手段で検出された停止ブロックと、表示手段に表示した前記停止ブロックを考慮した外部入力に従って実行ブロック指定手段から得られる停止状態から実行する実行ブロックとの位置情報とハンド状態とセンサ状態をそれぞれ比較して、前記停止ブロックの停止状態を起点として前記実行ブロックを実行するための一時実行プログラムおよび一時実行作業指示を生成し、前記表示手段に前記一時実行作業指示を表示すると共に、入出力手段から前記一時実行プログラムを出力する工程再構築手段を備えたことを特徴とするロボットプログラミング装置およびその方法にある。この発明では、ロボットの任意の停止状態から所望の動作を実行させる際に、工程を選択できるようにプログラミングを行うことで、プログラムサイズを小さくすることを可能となる。この発明では、作業ブロックに初期位置、ハンド状態、センサ状態の情報を持たせ、これらの作業ブロックを接続して工程フローを作成する。ロボット動作時またはシミュレーション動作時に、エラーの発生もしくはイベントの発生によりロボットプログラムが停止した場合に、停止した作業ブロックおよび停止状態を検出して、作業者が再実行する工程を指定することで、停止したブロックと再実行するブロックの情報を比較して復帰用のロボットプログラムを自動生成する。また、復帰処理に伴う作業者への作業指示を生成する。また、複数台のロボットから構成させる組み立てセルで、ロボット間の同期を定義し、同期区間内でそれぞれのロボットが干渉しない場合、同期区間毎に前記復帰処理のロボットプログラムと復帰作業指示を自動生成する。これらの自動生成したロボットプログラムおよび作業指示を順に実行することで、複数台のロボットから構成される組み立てセルにおいて、干渉が起きない復帰用のロボットプログラムを生成できる。また、前記の手段を繰り返し実行に使用することで、組み立てセルの立ち上げ時に特定の工程の動作を繰り返し実行して動きを確認する場合に使用できる。従来はエラー等によって停止した後、必要な工程を再実行するために復帰用のプログラムを作成して制御プログラム中に埋め込んでいたので、制御プログラムサイズが大きくなっていた。この発明では作業ブロックの情報を比較して復帰プログラムおよび復帰作業指示を自動的に生成できるため、制御プログラムのサイズが小さくなる。また、従来はセルの特定の工程の動作を繰り返し確認する場合、毎回、最初から全ての工程を実行して確認していた。この発明では作業ブロックを指定するだけで特定の工程のみ繰り返し実行ができるため、セル立ち上げの時間を短縮できる。また、従来は組み立てセルを構成する複数台のロボットの復帰プログラムをロボット間の同期を考慮して作成していたため、プログラムサイズが大きくなっていた。この発明では作業ブロックの情報を比較して複数台分の復帰プログラムおよび復帰作業指示を自動的に生成できるため、制御プログラムのサイズが小さくなる。また、従来はセルの特定のロボットの特定の工程の動作を繰り返し確認する場合、確認に関係ない他のロボットを手動で待避位置に移動しておく必要があった。この発明では動作を確認する作業ブロックを指定するだけで特定のロボットの特定の工程のみ繰り返し実行を行う間、動作確認に関係ないロボットを自動的に待避位置に移動できるため、セル立ち上げの時間を短縮できる。以下、この発明によるロボットプログラミング装置および方法を各実施の形態に従って図面を用いて説明する。なお、各実施の形態において、同一もしくは相当部分は同一符号で示し、重複する説明は省略する。実施の形態1.最初にこの発明のロボットプログラミング装置のシステム構成と、ロボットの基本的な動作を説明する。図1はこの発明によるロボットプログラミング装置を含むロボットシステムの構成を示す図である。ロボット1は、ロボット制御装置2で実行されるロボットプログラムに従って動作する。ロボット制御装置2は、ロボットを制御し動作させるロボット制御部21、ロボットプログラムを実行するプログラム実行部22、ロボットを動作させるプログラムや位置データ等を記憶するプログラムデータ記憶部23、ロボットプログラミング装置3と通信するための通信部24、から構成される。ロボットプログラミング装置3は、ロボットプログラムの作成および位置データ等の教示を行うプログラム作成教示部31、プログラムやデータを表示する表示部32、ロボット制御装置2と通信する通信部33、作業者等が入力を行う入力部34から構成される。作業者は、ロボットプログラミング装置3を用いてロボットプログラムを作成、記憶させる。図2はこの発明による組み立てセル対応のロボット、ハンド、部品、ワーク、部品供給台の構成を示す図である。ロボット1は、ハンド11を交換可能である。ハンド11は、ロボットが部品を把持するためのものであり、複数種類存在する。部品12は、組み立てる製品の構成要素であり、複数種類存在する。部品12はハンド11によって把持される。ハンド11は、ハンドの種類ごとに把持可能な部品の種類が決まっている。ワーク13は、組み立ての作業対象物である。最終的に、全ての部品12をワーク13に組み付けることで製品の組み立てが行われる。作業台14は、部品を組み付けるワーク13を保持する台である。部品供給台15は、部品12を供給する台である。部品供給台15は、部品12を自動的に供給する装置のようなものであってもよい。なお、ロボット1の各箇所にはセンサが設けられ、ロボット1の位置、姿勢、他の装置との干渉を検出する。最初に図2を使用して基本的な組み立て動作を以下に説明する。まず、ロボット1は、所定の種類のハンド11を装着する。次に、部品供給台15から部品12を把持し、ワーク13へ順番に組み付ける。ここで、ワーク13は、組み付けのために、ロボット1によって位置の移動や回転などを行ってもよい。また、部品供給台15からワーク13へ部品12を組み付けるロボット1が複数台あり、別々に動作させることも可能である。次に、この発明で扱うロボットプログラムについて説明する。ロボットプログラムはテキストによって記述される。以下は、ロボットプログラムの例である。1P002P013MOVEP01部品台上部へ移動4HOPEN5DELEY056MOVEP007HCLOSE部品を把持する8DELEY059MOVEP0110WAITIN111P1012P1113MOVEP11作業台上部へ移動14MOVEP1015HOPEN部品を離す16DELEY0517MOVEP1118END1行目のP00は座標を格納できる変数であり、ここでは、変数P00に座標値を格納している。また、3行目のMOVE命令は、ロボット1のハンド11先端を指定した座標に動かす命令である。また、4行目のHOPEN命令は、ハンド11を開く命令である。また、5行目のDELAY命令は指定した秒数を待つ命令である。また、7行目のHCLOSE命令は、ハンド11を閉じる命令である。また、10行目のWAIT命令は、外部ポートの値が所定の値となるまで停止する命令である。ここでは、入力ポートの10番が1になるまで待つことを示している。また、18行目のEND命令はプログラムの終了を示す命令である。このプログラムの動作を説明する。まず、3行目から5行目で部品供給台15の上に移動し、ハンド11を開く。次に、6行目から8行目で部品の把持位置に移動し、ハンド11を閉じて部品を把持する。次に、9行目で部品供給台15の上に移動する。次に、10行目で入力ポートの10番が1になるまで待つ。次に、13行目から17行目で作業台14の上に移動し、部品12を垂直に降ろしてワーク13へ挿入し、ハンド11を開いて作業台14の上に待避する。次に、この発明によるロボットプログラミング装置の構成を説明する。図3はこの発明によるロボットプログラミング装置の構成を示す図であり、プログラム作成教示部31は記憶手段を設けたコンピュータで構成され、311~315はプログラムに従って処理を行う機能ブロック、316~318はメモリ等の記憶手段を示す。プログラム作成教示部31において、編集手段311は、作業ブロックを定義し、定義した作業ブロックデータを組み立て工程の流れ順に並べて工程フローを作成する。ここで、流れ順に並べる際に、例えばGUIを用いて作業ブロックの間を矢印で接続する。作成した工程フローは、工程フローデータ316として保存する。また、編集手段311は、作成した工程フローデータから、ロボット1で動作する制御プログラムを生成する。通常は、編集手段311が作成したロボットプログラムを通信部33でロボット制御装置2にダウンロードして実行する。ロボットがエラーや非常停止などの外部イベントによりプログラム実行中に停止した場合、停止ブロック検出手段315は、通信部33を用いてロボット制御装置2と通信し、ロボットプログラムの停止箇所と、ロボットが停止した座標、または組み立てセルの停止状態情報を取得する。また、停止ブロック検出手段315は、通信部33を用いてロボット制御装置2と通信し、ロボットが停止したときのハンドの把持状態と種類と、ロボットに接続された各種センサの状態を取得する。ここで、センサはOnOffのみでなく、DADAデバイスなどの出力に見られるように数値であってもよい。次に、停止ブロック検出手段315は、工程再構築手段312に停止箇所と停止座標を通知する。また、停止ブロック検出手段315は、工程再構築手段312にハンドの把持状態、種類とセンサの状態を通知する。工程再構築手段312は、編集手段311にロボットプログラムの停止箇所を通知する。編集手段311は生成したロボットプログラムと工程フローデータ316から停止したブロックを判別する。次に、工程再構築手段312は、表示部32に停止ブロックと停止座標、停止状態を表示し、作業者に再実行するブロックの入力を促す。実行ブロック指定手段313は、作業者が工程フロー中で再実行したいブロックを指定してその一覧を工程再構築手段312に通知する。ここでは例えば入力部34から作業者が表示部32に表示された情報を考慮して所望のブロックまたはブロック列を入力する。工程再構築手段312は、停止ブロック検出手段315が検出したロボット1の停止座標と停止状態、すなわち停止ブロックの停止状態を起点とし、実行ブロック指定手段313によって設定された再実行したいブロックを順に実行する一時実行プログラム317を生成して例えば一次保存する。また、この一時実行プログラム317を動かすために作業者が行うべき作業の一覧として一時実行作業指示318を生成して例えば一次保存する。工程再構築手段312は、一時実行プログラム317を生成する際、ブロック間を繋いだり、初期位置に一度待避させたりするためにブロックを再実行したいブロック間に挿入したりする。またその際に必要な作業者が行う作業指示を一時実行作業指示318として生成する。これらについては図6で説明する。工程再構築手段312は、通信部33を用いて、生成した一時実行プログラム317をロボット制御装置2にダウンロードする。工程再構築手段312は、表示部32を用いて、一時実行作業指示318を表示し、作業者の準備作業を促す。最後に、工程再構築手段312は、通信部33を通して、ロボット制御装置2に起動命令を送信する。これによって、ロボット1が所定の復帰処理を実行する。また図4はこの発明における工程フローの記述例を示す。この工程フローは後述する実施の形態2で説明する2つのロボットの同期動作も含む。ロボット毎に工程のフローが記述される。この例ではロボットROBOT1およびROBOT2の工程フロー例を記述する。ROBOT1は、まずB11でハンド11Aを装着する。次にB12でROBOT2と同期した後、B13でワーク13Aを部品供給台15より取り出す。次にB14で作業台14の近辺に移動する。次にB15でワーク13Aを組み付ける。次にB16でROBOT2と同期する。最後にB17でハンド11Aを取り外して一連の動作を終了する。ROBOT2は、まずB21でハンド11Bを装着する。次にB22でROBOT1と同期した後、B23でワーク13Bを部品供給台15より取り出す。次にB24でROBOT1がワーク13Aを組み付けるのを待ち、組み付け完了後に同期する。次にB25で作業台14の近辺に移動する。次にB26でワーク13Bを組み付ける。最後にB27でハンド11Bを取り外して一連の動作を終了する。ここで、ROBOT1のSTARTからB12の同期とROBOT2のSTARTからB22の同期までを1番目の同期区間と呼ぶ。同様に、B12からB16までとB22からB24までを2番目の同期区間と呼ぶ。同様に、B16からENDまでとB24からENDまでを3番目の同期区間と呼ぶ。このように、複数のロボットROBOT1、ROBOT2は同期区間毎に工程を分割することができる。また、これらの同期区間内ではそれぞれのロボットの動作範囲が干渉しない。この干渉チェックは事前に机上計算もしくはシミュレーションの動作確認により確認する。この確認は実機で行ってもよい。図5はこの発明における作業ブロックと同期ブロックの一例を示す図である。図5のは、この発明の実施の形態1による作業ブロックが持つデータ構造である。作業ブロック500は、ブロックID501およびロボットプログラム502を持つ。工程フローにおいて特定の作業ブロックを指定するには、このブロックIDを使用する。また、ロボット制御装置2にダウンロードするプログラムを生成する際には作業ブロックのロボットプログラム502を工程フロー順につなげて生成する。この発明では作業ブロック500は、上記のブロックID501とロボットプログラム502に加え、協調ブロック503、ブロックの初期位置504、ハンド種類505、ハンド把持状態506、センサ状態507を持つ。協調ブロック503は、セルを構成するロボットが複数台あったときに、2台以上のロボット間で協調動作する際に設定する。ブロックの初期位置504は、ロボットの姿勢として表現される。初期位置504は、ブロック開始時点でのデフォルトの姿勢となる。また、終了時の待避位置としても使用可能である。ここで、ある任意の作業ブロックの初期位置から他の作業ブロックの初期位置へ移動しても、ロボットがワークや装置と衝突しない姿勢を設定しておく必要がある。ハンド種類505は、この作業ブロックを実行する際のハンドの種類を指定するものである。作業ブロック内部でハンドを交換するなど、初期状態のハンド種類の指定がない場合は、種類なしとなる。ハンド把持状態506は、作業ブロック開始時に部品を把持している前提か否かを指定するものである。把持状態はOnまたはOffまたはNoneの状態をとる。把持状態がOnまたはOffの場合、ハンド種類は設定されている必要がある。センサ状態507は、この作業ブロックを実行するにあたり、前提としてあるべきセンサ状態を指定するものである。これらの情報は、プログラム作成時に入力するが、シミュレーションまたは実際にロボットを動作させて実行状態をロボット制御装置から取得して格納してもよい。図5のについては実施の形態2で説明する。なお、ブロックの初期位置504、ハンド種類505、ハンド把持状態506、センサ状態507については該作業ブロックの動作開始前と終了後のそれぞれについて設定されていてもよい。図6はこの発明の実施の形態1によるプログラム作成教示部31、特に工程再構築手段312の動作を示すフローチャートである。ロボットがエラー、非常停止などの外部イベントにより停止すると、最初に、ステップS101で停止ブロック検出手段315が、通信部33を通してロボット制御装置2と通信し、ロボットプログラムの停止位置、ロボット本体の停止座標、組み立てセルの停止状態を取得する。ここで、ハンドの種類、ハンドの把持有無、センサ状態も同時に取得する。次に、停止ブロック検出手段315は、ロボットプログラムの停止位置を工程再構築手段312を通して編集手段311に送り、編集手段311で停止した作業ブロックを特定する。次に、ステップS102で実行ブロック指定手段313が、入力部34からの作業者の入力によって復帰のために再度実行するブロックを取得する。次に、ステップS103で工程再構築手段312は、停止ブロック検出手段315で検出された情報に基づいてロボットが部品を把持しているか否かを判定する。もし、部品を把持している場合、ステップS104で工程再構築手段312は、ハンドから部品を取り除く作業指示を生成し、一時実行作業指示318に追加する。次に、ステップS105で工程再構築手段312は、停止ブロック検出手段315で検出された情報に基づいてロボットのセンサ状態と、実行ブロック指定手段313で作業者が指定した実行ブロックのうち最初の作業ブロックのセンサ状態との差を判別する。もし、センサ状態に差異があった場合、ステップS106で工程再構築手段312は、センサ状態ごとに作業ブロックに指定されたセンサ状態になるように作業指示を生成し、一時実行作業指示318に追加する。次に、ステップS111の繰り返し処理で工程再構築手段312は、現在停止している作業ブロックを起点として実行ブロックを工程フロー順に接続する。ここでは、ステップS112からステップS116の処理を繰り返す。まず、ステップS112で工程再構築手段312は、一つ前の作業ブロックと現在の対象作業ブロックのハンド種類を比較する。もし、ハンドが異なる場合、ステップS113で予め定義されているハンド交換のブロックを挿入する。このとき、既にハンドが装着済みの場合、まず既存のハンドを取り外し、次に指定されたハンドを装着する、2つの作業ブロックを挿入する。工程再構築手段312は、一時実行プログラム317へ挿入した作業ブロックのロボットプログラムを追加する。次に、ステップS114で工程再構築手段312は、指定されたブロックが工程フロー上で接続されている否かを判別する。もし、工程フローが接続されていない場合、ステップS115で初期位置にいったん待避して移動するようにロボットのプログラムを生成する。これは、作業ブロック間でのロボットの移動により、ワークや装置との衝突を避けるためである。例えば、一つ前の作業ブロックの初期位置がで、現在の対象の作業ブロックの初期位置がである場合、生成されるプログラムは次のようになる。MOVEMOVEこの作業ブロックの初期位置から次の初期位置へ移動するプログラムは工程フロー順に実行ブロックに辿り着くまで複数行追加する。ステップS115では、工程再構築手段312は、一時実行プログラム317へこのロボットプログラムを追加する。次に、ステップS116で工程再構築手段312は、一時実行プログラム317へ現在の対象の作業ブロックのロボットプログラムを追加する。ステップS117で全てのブロックについての処理が完了したら、次に、ステップS107で工程再構築手段312は、表示部32に一時実行作業指示318を表示し、作業者に操作を促す。次に、ステップS108で工程再構築手段312は、通信部33を通してロボット制御装置2に一時実行プログラム317をダウンロードし、通信部33を通してロボット制御装置2にロボット1を起動させる。ロボット制御装置2は例えば、一時実行プログラムが完了した後、停止前の工程フローの実行に戻る。以上のように、ロボットを用いた組み立てセルを工程フローに基づいて制御する場合、停止時からの復帰時に指定した工程のみ実行することができ、復帰のための専用プログラムを準備する必要がない。復帰のパターンが複数あった場合、複数種類のエラーに対して複数種類の復帰があると、処理の組み合わせが発生し、大きなプログラムを事前に作成しておく必要があるが、この発明では復帰プログラムを作成する必要が無く、プログラムサイズが小さい。また、復帰のパターンと処理について事前に考察する必要がなく、開発期間を短縮できる。実施の形態2.この発明の実施の形態2によるロボットプログラミング装置では、複数台のロボットから構成される組み立てセルの場合について説明する。ロボットプログラミング装置の構成は図3において待避位置指定手段314をさらに設けたものである。複数台のロボットから構成される組み立てセルでは、ロボットに同期を設定する。待避位置指定手段314は、工程フローを作成した後、工程再構築手段312を通して、各ロボットのSTARTブロック、および同期ブロックに待避位置を指定する。これらの待避位置は、同じ同期区間の工程処理を各ロボットが行ったときに、互いに干渉しない位置に設定する。この設定は事前のシミュレーションなどを用いて自動に行ってもよい。図5のは、この発明の実施の形態2による作業ブロックが持つデータ構造である。同期ブロック510は、待避位置511を含む。この待避位置は前記のように、同じ同期区間の工程処理を各ロボットが行ったときに、互いに干渉しない位置に設定する。また、この待避位置と各作業ブロックの初期位置の間で移動があった場合も、互いに干渉しないように設定する。図7はこの発明の実施の形態2による複数台のロボットを定義したときのプログラム作成教示部31、特に工程再構築手段312の動作を示すフローチャートである。ロボットがエラー、非常停止などの外部イベントにより停止すると、最初に、ステップS201で停止ブロック検出手段315が、通信部33を通してロボット制御装置2と通信し、ロボットプログラムの停止位置、ロボット本体の停止座標、組み立てセルの停止状態を取得する。ここで、ハンドの種類、ハンドの把持有無、センサ状態も同時に取得する。次に、停止ブロック検出手段315は、ロボットプログラムの停止位置を工程再構築手段312を通して編集手段311に送り、編集手段311で停止した作業ブロックを特定する。次に、ステップS202で実行ブロック指定手段313が、入力部34からの作業者の入力によって復帰のために再度実行するブロックを取得する。次に、ステップS203で工程再構築手段312は、組み立てセルを構成するすべてのロボットに対して、それぞれ作業指示を生成する。ここでは、ステップS204からステップS207の処理を繰り返す。まず、ステップS204で工程再構築手段312は、停止ブロック検出手段315で検出された情報に基づいてロボットが部品を把持しているかを判定する。もし、部品を把持している場合、ステップS205で工程再構築手段312は、ハンドから部品を取り除く作業指示を生成し、一時実行作業指示318に追加する。次に、ステップS206で工程再構築手段312は、停止ブロック検出手段315で検出された情報に基づいてロボットのセンサ状態と、実行ブロック指定手段313で作業者が指定した実行ブロックのうち最初の作業ブロックのセンサ状態との差を判別する。もし、センサ状態に差異があった場合、ステップS207で工程再構築手段312は、センサ状態ごとに作業ブロックに指定されたセンサ状態になるように作業指示を生成し、一時実行作業指示318に追加する。以上の処理を全てのロボットに対して繰り返す。ステップS207aで全てのロボットについての処理が完了したら、ステップS211で工程再構築手段312は、組み立てセルを構成するすべてのロボットに対して、それぞれロボットプログラムを生成する。ここでは、ステップS212からステップS220の処理を繰り返す。まず、ステップS212で現在対象となっているロボットの実行ブロックに協調動作を行う他のロボットの作業ブロックである協調ブロックが設定されているかを確認する。もし、協調ブロックが設定されている場合、ステップS213でその協調ブロックである他のロボットの作業ブロックを実行ブロックとして追加する。これは、特定のロボットの実行ブロックに協調ブロックが指定されている場合、例えば、一方のロボットがワークを裏側から抑え、もう一方のロボットが部品を表側から装着する、または、一方のロボットが部品を支え、もう一方のロボットが上から押し込むといったような協調処理を行うためである。この協調ブロックが指定されていると、他のロボットの協調ブロックも実行ブロックと見なし、ロボットプログラムを生成する。次に、ステップS214の繰り返し処理で工程再構築手段312は、現在停止している作業ブロックを起点として実行ブロックを工程フロー順に接続する。ここでは、ステップS215からステップS220の処理を繰り返す。次に、ステップS215の繰り返し処理で工程再構築手段312は、同期区間ごとにロボットプログラムを生成する。ここでは、ステップS216からステップS220の処理を繰り返す。まず、ステップS216で工程再構築手段312は、一つ前の作業ブロックと現在の対象作業ブロックのハンド種類を比較する。もし、ハンドが異なる場合、ステップS217で予め定義されているハンド交換のブロックを挿入する。このとき、既にハンドが装着済みの場合、まず既存のハンドを取り外し、次に指定されたハンドを装着する、2つの作業ブロックを挿入する。工程再構築手段312は、一時実行プログラム317へ挿入した作業ブロックのロボットプログラムを追加する。次に、ステップS218で工程再構築手段312は、指定されたブロックが工程フロー上で接続されているかを判別する。もし、工程フローが接続されていない場合、ステップS219で初期位置にいったん待避して移動するようにロボットのプログラムを生成する。これは、作業ブロック間でのロボットの移動により、ワークや装置との衝突を避けるためである。例えば、一つ前の作業ブロックの初期位置がで、現在の対象の作業ブロックの初期位置がである場合、生成されるプログラムは次のようになる。MOVEMOVEこの作業ブロックの初期位置から次の初期位置へ移動するプログラムは工程フロー順に実行ブロックに辿り着くまで複数行追加する。ステップS219では、工程再構築手段312は、一時実行プログラム317へこのロボットプログラムを追加する。次に、ステップS220で工程再構築手段312は、一時実行プログラム317へ現在の対象の作業ブロックのロボットプログラムを追加する。ここで、同期区間中に実行ブロックが一つも存在しないロボットは、同期ブロックに指定された待避位置に移動するため、待避位置に待避する次の命令を一時実行プログラム317に追加する。すなわち待避位置が指定された同期ブロック510を該ロボットに割り当てる。待避位置は待避位置指定手段314により指定される。MOVEもし、実行ブロックが存在しない同期区間が連続した場合、同期ごとに同期ブロックに指定された待避位置へ移動させる。ステップS221で全ての同期区間についての処理が完了し、ステップS222で全ての実行ブロックについての処理が完了し、ステップS223で全てのロボットについての処理が完了したら、次に、ステップS208で工程再構築手段312は、表示部32に一時実行作業指示318を表示し、作業者の操作を促す。また、実行ブロックを指定しないロボットがあれば待避作業指示も一時実行作業指示と共にロボット毎に同期区間単位で生成して併せて表示する。次に、ステップS209で工程再構築手段312は、通信部33を通してロボット制御装置2に一時実行プログラム317をダウンロードし、通信部33を通してロボット制御装置2にロボット1を起動させる。ロボット制御装置は例えば、一時実行プログラムが完了した後、停止前の工程フローの実行に戻る。また、実行ブロックを指定しないロボットがあれば待避プログラムも一時実行プログラムと共に生成して併せてダウンロードする。なお、ステップS222で全ての実行ブロックについて処理が完了する度に上記ステップS208、S209を実行するようにして、各ロボット毎に処理を行ってもよい。以上のように、複数台のロボットから構成される組み立てセルにおいて、ロボット間の同期を持つ工程フローを定義した場合に、指定した実行ブロックのみを動かすプログラムを一時的に生成し、それらを実行することで、複数台のロボットから構成されるセルにおいて、停止した状態からの復帰プログラムを作成する必要が無く、プログラムサイズの削減ができる。また、開発期間の短縮も可能となる。また、一時実行プログラムの機能を用いることで、組み立てセルの立ち上げ作業において、特定動作を繰り返して動作確認を行う場合、特定の工程のみを選択して実行できるため、デバッグ用のプログラムを作成する必要がなくなり、立ち上げ時間を大幅に短縮できる。なおこの発明では上述のように、エラーの発生またはイベントの発生によりロボットプログラムが停止した際に復帰させる際に適用した場合、復帰時に再実行する実行ブロックが外部入力に従って得られ、復帰のためのプログラムおよび作業指示を生成し、また組み立てセルの立ち上げにおいて、動作を確認するために特定の工程の動作を複数回繰り返す際に適用した場合、特定の工程の動作の実行ブロックが外部入力に従って得られ、特定の工程の動作のためのプログラムおよび作業指示を生成するが、この発明はこれに限定されず、広義には、ロボットの任意の停止状態から所望の動作を実行させる際に、工程を選択できるようにプログラミングを行い、そのためのプログラムおよび作業指示を生成するものである。