(57)【特許請求の範囲】
【請求項１】
モータによって駆動される駆動軸を有する複数台のロボットを含むロボットシステムの動作をシミュレーションするシミュレーション装置であって、
予め各々のロボットが互いに干渉しないように定められた各々のロボットについての動作プログラムであって、前記駆動軸の指令速度と指令加速度と動作待ち指令とを含む動作プログラムをシミュレーションにより実行するシミュレーション部と、
前記シミュレーション部により実行されたシミュレーション結果に基づき、前記モータに作用するモータ負荷を所定時間毎に算出するモータ負荷算出部と、
前記動作プログラムの行番号と該行番号における前記指令速度および前記指令加速度とを関連付けて時系列に記憶し、さらに前記モータ負荷算出部によって算出されたモータ負荷を、前記行番号に関連付けて時系列に記憶する記憶部と、
前記記憶部に記憶されたモータ負荷に基づき前記ロボットに作用するロボット負荷を算出するロボット負荷算出部と、
前記シミュレーション部により実行されたシミュレーション結果に基づき、前記記憶部に記憶された前記行番号毎に、前記動作プログラムの実行時間を算出する実行時間算出部と、
前記実行時間算出部により算出された実行時間に基づき、前記動作待ち指令に応じた動作待ち時間を算出する待ち時間算出部と、
前記モータ負荷の許容範囲を指定する負荷指定部と、
前記ロボットの動作待ち時間の許容範囲を指定する待ち時間指定部と、
前記記憶部に記憶されたモータ負荷が前記負荷指定部により指定されたモータ負荷の許容範囲内となり、かつ、前記待ち時間算出部により算出された動作待ち時間が前記待ち時間指定部により指定された動作待ち時間の許容範囲内となるように、前記指令速度および前記指令加速度を修正するプログラム修正部と、を備えることを特徴とするシミュレーション装置。
【請求項２】
請求項１に記載のシミュレーション装置において、
前記プログラム修正部は、前記ロボットシステムの動作サイクルタイムが最短となるように前記指令速度および前記指令加速度を修正することを特徴とするシミュレーション装置。
【請求項３】
請求項１または２に記載のシミュレーション装置において、
前記ロボットシステムの目標寿命を指定する目標寿命指定部と、
前記モータの回転を減速する減速機の寿命の評価基準を指定する減速機評価基準指定部と、をさらに備え、
前記ロボット負荷算出部は、減速機寿命を前記ロボット負荷として算出し、
前記プログラム修正部は、前記ロボット負荷算出部により算出された前記減速機寿命が前記目標寿命指定部により指定された目標寿命よりも短いロボットが存在しているときに、該ロボットについて前記待ち時間算出部により所定長さ以上の待ち時間が算出されていれば、該待ち時間が算出される前の動作から、前記減速機評価基準指定部により指定された評価基準を超える動作を抽出し、該抽出した動作における指令速度および指令加速度を減少させ、前記待ち時間算出部により所定長さ以上の待ち時間が算出されていなければ、前記ロボットシステムの動作から、前記減速機評価基準指定部により指定された評価基準を超える厳しい動作を抽出し、該抽出した動作における指令速度および指令加速度を減少させることを特徴とするシミュレーション装置。
【請求項４】
請求項１から３のいずれか１項に記載のシミュレーション装置において、
前記モータ負荷算出部によって算出されたモータ負荷と前記指令速度とに基づき前記ロボットの消費電力を算出する電力算出部と、
前記ロボットの消費電力の評価基準を指定する電力評価基準指定部とをさらに備え、
前記プログラム修正部は、前記待ち時間算出部により所定長さ以上の待ち時間が算出されていれば、該待ち時間が算出される前の動作から、前記電力評価基準指定部により指定された評価基準を超える動作を抽出し、該抽出した動作における指令速度および指令加速度を減少させることを特徴とするシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数台のロボットを含むロボットシステムの動作をシミュレーションして動作プログラムを最適化するシミュレーション装置に関する。
【背景技術】
【０００２】
ロボットの動作をシミュレーションする装置として、指令速度および指令加速度をシミュレーションにより修正しながら、モータ負荷の許容範囲内でサイクルタイムが最小になるようにした装置が知られている（例えば特許文献１参照）。また、ロボットの消費電力をシミュレーションにより推定するようにした装置も知られている（例えば特許文献２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−５４９４２号公報
【特許文献２】特開２０１１−５６２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、複数台のロボットを同時に駆動して作業を行う場合には、予め複数台のロボットを含むロボットシステムの動作をシミュレーションして、ロボット同士の干渉がなく、複数評価基準を考慮した最適なプログラムを構築することが好ましい。しかしながら、上記特許文献１、２記載の装置はいずれも、単独のロボットの動作をシミュレーションするものであり、複数台のロボットのシミュレーションを行うものではない。
【課題を解決するための手段】
【０００５】
本発明の一態様は、モータによって駆動される駆動軸を有する複数台のロボットを含むロボットシステムの動作をシミュレーションするシミュレーション装置であって、予め各々のロボットが互いに干渉しないように定められた各々のロボットについての動作プログラムであって、駆動軸の指令速度と指令加速度と動作待ち指令とを含む動作プログラムをシミュレーションにより実行するシミュレーション部と、シミュレーション部により実行されたシミュレーション結果に基づき、モータに作用するモータ負荷を所定時間毎に算出するモータ負荷算出部と、動作プログラムの行番号とこの行番号における指令速度および指令加速度とを関連付けて時系列に記憶し、さらにモータ負荷算出部によって算出されたモータ負荷を、行番号に関連付けて時系列に記憶する記憶部と、記憶部に記憶されたモータ負荷に基づきロボットに作用するロボット負荷を算出するロボット負荷算出部と、シミュレーション部により実行されたシミュレーション結果に基づき、記憶部に記憶された行番号毎に、動作プログラムの実行時間を算出する実行時間算出部と、実行時間算出部により算出された実行時間に基づき、動作待ち指令に応じた動作待ち時間を算出する待ち時間算出部と、モータ負荷の許容範囲を指定する負荷指定部と、ロボットの動作待ち時間の許容範囲を指定する待ち時間指定部と、記憶部に記憶されたモータ負荷が負荷指定部により指定されたモータ負荷の許容範囲内となり、かつ、待ち時間算出部により算出された動作待ち時間が待ち時間指定部により指定された動作待ち時間の許容範囲内となるように、指令速度および指令加速度を修正するプログラム修正部と、を備える。
【発明の効果】
【０００６】
本発明によれば、各々のロボットの動作プログラムのシミュレーション結果に基づいて動作待ち指令に応じた動作待ち時間を算出するようにしたので、複数台のロボットを有するロボットシステムにおいて、動作待ち時間を考慮した最適な動作プログラムを構築することができる。
【図面の簡単な説明】
【０００７】
【図１】本発明の第１の実施形態に係るシミュレーション装置の構成を示すブロック図。
【図２】図１のシミュレーション装置で用いられる動作プログラムの一例を示す図。
【図３】図１の演算部で実行される処理の一例を示すフローチャート。
【図４】本発明の第２の実施形態に係るシミュレーション装置の構成を示すブロック図。
【図５】図４の演算部で実行される処理の一例を示すフローチャート。
【図６】図４の変形例を示す図。
【図７】図６の演算部で実行される処理の一例を示すフローチャート。
【図８】図４のシミュレーション装置で用いられる動作プログラムの一部を簡略して示す図。
【図９】図４の別の変形例を示す図。
【図１０】図９の演算部で実行される処理の一例を示すフローチャート。
【発明を実施するための形態】
【０００８】
−第１の実施形態−
以下、図１〜図３を参照して本発明の第１の実施形態について説明する。図１は、本発明の第１の実施形態に係るシミュレーション装置１００の構成を示すブロック図である。このシミュレーション装置１００は、複数台のロボットを含むロボットシステムの動作プログラムに基づいて、ロボットシステムの動作をシミュレーションするものである。図１に示すように、シミュレーション装置１００は、入力部１と、出力部２と、演算部１０とを有する。
【０００９】
入力部１は、動作プログラムに含まれる各種指令値等を入力するものであり、キーボード等により構成される。出力部２は、シミュレーション結果を表示するものであり、ディスプレイ等により構成される。演算部１０は、ＣＰＵ，ＲＯＭ，ＲＡＭ，その他の周辺回路などを有する演算処理装置を含むコンピュータにより構成され、機能的構成として、シミュレーション部１１と、モータ負荷算出部１２と、記憶部１３と、実行時間算出部１４と、待ち時間算出部１５と、ロボット負荷算出部１６とを含む。
【００１０】
シミュレーション部１１は、各々のロボットに対応した複数の動作プログラム（例えば図２のプログラムＰＡ，ＰＢ，ＰＣ）をシミュレーションによって同時に実行する。シミュレーションの対象となる複数台のロボットは、それぞれ複数の駆動軸を有し、各駆動軸は互いに異なるモータによって駆動される。動作プログラムは、指令速度と指令加速度と動作待ち指令とを含む。動作待ち指令とは、ロボットの動作を停止させる指令である。すなわち、複数台のロボットを同時に動作させて所定の作業（例えば組立作業）を行う場合、ロボット同士の干渉を防ぐために、各々のロボットの動作を所定のタイミングで停止させる場合があり、このときの指令が動作待ち指令に相当する。
【００１１】
モータ負荷算出部１２は、シミュレーション部１１で実行されたシミュレーション結果に基づき、各々のロボットの各モータに作用する負荷（モータ負荷）を所定時間毎に算出する。モータ負荷は、例えばモータトルクやモータ速度である。モータトルクは、ニュートンオイラー法等、周知の演算式により算出できる。
【００１２】
記憶部１３は、モータ負荷算出部１２により算出されたモータ負荷と、動作プログラムによって与えられたモータの指令速度および指令加速度と、動作プログラムの各行番号とを互いに関連付けて時系列に記憶する。図２は、ロボットシステムの動作プログラムの一例を示す図である。図２では、３台のロボットＡ，Ｂ，Ｃの動作プログラムＰＡ，ＰＢ，ＰＣを対比して示している。図２の動作プログラムＰＡ，ＰＢ，ＰＣは、所定位置まで駆動軸を回動させる回転指令（「J_P・・」）と所定位置まで駆動軸を直動させる直動指令（「L_P・・」）とを含む。回転指令と直動指令とは、駆動軸に対応する指令速度と指令加速度とを含む移動指令であり、移動指令に応じてロボットが動作する。
【００１３】
ロボットＡの動作プログラムＰＡの「wait DI(2)=ON」および「wait DI(3)=ON」は動作待ち指令であり、動作待ち指令が出力されると、ロボットＡはある時間（図では１秒間）動作を停止する。動作待ち指令「wait DI(2)=ON」は、ロボットＢの動作プログラムＰＢから所定の指令「DO(2)=ON」が出力されると出力され、動作待ち指令「wait DI(3)=ON」は、ロボットＣの動作プログラムＰＣから所定の指令「DO(3)=ON」が出力されると出力される。同様に、ロボットＢの動作待ち指令「wait DI(2)=ON」は、ロボットＡの動作プログラムＰＡから所定の指令「DO(2)=ON」が出力されると出力され、ロボットＣの動作待ち指令「wait DI(3)=ON」は、ロボットＡの動作プログラムＰＡから所定の指令「DO(3)=ON」が出力されると出力される。これによりロボットＢがある時間（図では２秒間）だけ動作を停止し、ロボットＣがある時間（図では１．５秒間）だけ動作を停止する。各ロボットＡ〜Ｃの動作待ち時間は、指令速度および指令加速度を変更することで、調整可能である。
【００１４】
実行時間算出部１４は、シミュレーション部１１により実行されたシミュレーション結果に基づき、記憶部１３に記憶された行番号毎の動作プログラムＰＡ，ＰＢ，ＰＣの実行時間を算出する。すなわち、動作プログラムＰＡ，ＰＢ，ＰＣの各行番号の指令を実行するのに要する時間を動作プログラム全体にわたって算出する。具体的には、動作プログラムＰＡの１行目の指令を実行するのに要する時間、２行目の指令を実行するのに要する時間、・・・、動作プログラムＰＢの１行目の指令を実行するのに要する時間、２行目の指令を実行するのに要する時間、・・・、動作プログラムＰＣの１行目の指令を実行するのに要する時間、２行目の指令を実行するのに要する時間、・・・を算出する。
【００１５】
実行時間算出部１４は、さらに、ロボットシステムが一連の動作を実行するのに要する時間、すなわちシステムのサイクルタイムも算出する。例えば動作プログラムＰＡ，ＰＢ，ＰＣが、各々のロボットＡ，Ｂ，Ｃが協働して単一の部品を組み立てるために作成されたプログラムであり、同一の部品の組立作業を繰り返し行うために動作プログラムＰＡ，ＰＢ，ＰＣを繰り返し実行すると仮定すると、サイクルタイムは動作プログラムＰＡ，ＰＢ，ＰＣが一通り終了するのに要する時間に相当する。サイクルタイムは、動作プログラムＰＡ，ＰＢ，ＰＣの各行の実行時間を加算することにより算出できる。
【００１６】
待ち時間算出部１５は、実行時間算出部１４により算出された実行時間のうち、動作待ち指令が出力された行番号に対応する実行時間を、動作待ち時間として抽出する。例えば、図２の動作プログラムＰＡの１秒（「WAIT DI(2)=ON」と「WAIT DI(3)=ON」の実行時間）、動作プログラムＰＢの２秒（「WAIT DI(2)=ON」の実行時間）、動作プログラムＰＣの１．５秒（「WAIT DI(3)=ON」の実行時間）をそれぞれ動作待ち時間として抽出する。なお、予め入力部１の操作により動作待ち時間の許容範囲（例えば上限値）が設定されている場合には、実行時間算出部１４により算出された実行時間から許容範囲の上限値を減算した値を、動作待ち時間として算出する。
【００１７】
ロボット負荷算出部１６は、モータ負荷算出部１２により算出されたモータ負荷と、動作プログラムによって与えられたモータの指令速度および指令加速度とに基づき、ロボットシステムの一連の動作において各々のロボットに作用する負荷（ロボット負荷）を算出する。ロボット負荷は、例えばモータのオーバーヒートの程度、モータ毎の電流の制限値（ＯＶＣ）、モータと駆動軸の間に設けられ、モータの回転を減速して駆動軸に伝達する減速機の寿命、ロボットが消費する電力、ロボットに設けられるケーブルの寿命等である。ロボット負荷としていずれを採用するかは、予め入力部１の操作によりユーザが選択できる。なお、選択するロボット負荷は、１つでも複数でもよい。
【００１８】
図３は、図１の演算部１０で実行される処理の一例を示すフローチャートである。このフローチャートに示す処理は、例えば入力部１の操作によりシミュレーション開始指令が入力されると開始される。
【００１９】
ステップＳ１では、シミュレーション部１１での処理により、複数台のロボットＡ，Ｂ，Ｃを有するロボットシステムの各々のロボットＡ，Ｂ，Ｃの動作プログラムＰＡ，ＰＢ，ＰＣを実行する。
【００２０】
ステップＳ２では、モータ負荷算出部１２での処理により、シミュレーション結果に基づき、各々のロボットＡ，Ｂ，Ｃに設けられた各モータの負荷（例えばモータトルクとモータ速度）を所定時間毎に算出する。
【００２１】
ステップＳ３では、記憶部１３での処理により、モータ負荷算出部１２により算出されたモータ負荷と、動作プログラムＰＡ，ＰＢ，ＰＣによって与えられたモータの指令速度および指令加速度と、動作プログラムＰＡ，ＰＢ，ＰＣの各行番号とを、互いに関連付けて時系列にメモリに記憶する。
【００２２】
ステップＳ４では、実行時間算出部１４での処理により、シミュレーション部１１により実行されたシミュレーション結果に基づき、記憶部１３に記憶された行番号毎の動作プログラムＰＡ，ＰＢ，ＰＣの実行時間を算出するとともに、各行番号の実行時間を加算して、システムのサイクルタイムを算出する。
【００２３】
ステップＳ５では、待ち時間算出部１５での処理により、実行時間算出部１４により算出された実行時間のうち、動作待ち指令が出力された行番号に対応する実行時間を、動作待ち時間として抽出し、この動作待ち時間を出力部２に出力する。これにより、ユーザは動作待ち時間が適切であるか否かを判断することができる。動作待ち時間が適切でないと判断した場合、動作プログラムＰＡ，ＰＢ，ＰＣの指令速度および指令加速度を変更することにより、動作プログラムＰＡ，ＰＢ，ＰＣを最適化することができる。例えば、動作待ち時間が長すぎると判断した場合、ユーザが入力部１を操作して指令速度および指令加速度を低減することにより動作待ち時間が短縮され、動作待ち時間の少ない最適な動作プログラムを構築することができる。
【００２４】
ステップＳ６では、ロボット負荷算出部１６での処理により、モータ負荷算出部１２により算出されたモータ負荷と、モータの指令速度および指令加速度とに基づき、ロボットシステムの一連の動作におけるロボット負荷を算出し、このロボット負荷を出力部２に出力する。これにより、ユーザはロボット負荷が適切であるか否かを判断することができる。ロボット負荷が適切でないと判断した場合、動作プログラムＰＡ，ＰＢ，ＰＣの指令速度および指令加速度を変更することにより、ロボット負荷を最適化することができる。例えば、ロボット負荷として減速機寿命を選択し、減速機寿命が短いと判断した場合、ユーザが入力部１を操作して速度および指令加速度を低減することにより減速機に作用する負荷が軽減され、減速機寿命を延長することができる。
【００２５】
第１の実施形態によれば以下のような作用効果を奏することができる。
（１）シミュレーション装置１００は、予め各々のロボットＡ，Ｂ，Ｃが互いに干渉しないように定められた各々のロボットＡ，Ｂ，Ｃについての動作プログラムＰＡ，ＰＢ，ＰＣ、すなわち指令速度と指令加速度と動作待ち指令とを含む動作プログラムをシミュレーションにより実行するシミュレーション部１１と、動作プログラムＰＡ，ＰＢ，ＰＣの行番号と行番号における指令速度および指令加速度とを関連付けて時系列に記憶する記憶部１３と、シミュレーション結果に基づき、記憶部１３に記憶された前記行番号毎に動作プログラムＰＡ，ＰＢ，ＰＣの実行時間を算出する実行時間算出部１４と、この実行時間に基づき、動作待ち指令に応じた動作待ち時間を算出する待ち時間算出部１５とを備える。これにより複数台のロボットＡ，Ｂ，Ｃを有するロボットシステムにおいて、動作待ち時間を考慮した動作プログラムＰＡ，ＰＢ，ＰＣを作成することができ、動作プログラムの最適化が可能である。
【００２６】
（２）シミュレーション装置１００は、シミュレーション部１１により実行されたシミュレーション結果に基づき、モータに作用するモータ負荷を所定時間毎に算出するモータ負荷算出部１２と、ロボットＡ，Ｂ，Ｃに作用するロボット負荷を算出するロボット負荷算出部１６とをさらに備える。記憶部１３は、動作プログラムＰＡ，ＰＢ，ＰＣの行番号と、行番号における指令速度および指令加速度と、モータ負荷算出部１２によって算出されたモータ負荷とを関連付けて時系列に記憶し、ロボット負荷算出部１６は、記憶されたモータ負荷に基づきロボット負荷を算出する。これにより減速機寿命等を考慮した動作プログラムＰＡ，ＰＢ，ＰＣを作成することができ、動作プログラムの最適化が可能である。
【００２７】
−第２の実施形態−
図４，５を参照して本発明の第２の実施形態について説明する。第１の実施形態では、ユーザ自身の判断により動作待ち時間を最適化するようにしたが、第２の実施形態では、シミュレーション装置１００がこれを自動的に最適化する。図４は、本発明の第２の実施形態に係るシミュレーション装置１００の構成を示すブロック図である。なお、図４において、図１と同一の箇所には同一の符号を付し、以下では第１の実施形態との相違点を主に説明する。
【００２８】
図４に示すように、第２の実施形態に係るシミュレーション装置１００は、シミュレーション部１１と、モータ負荷算出部１２と、記憶部１３と、実行時間算出部１４と、待ち時間算出部１５と、ロボット負荷算出部１６とに加え、負荷指定部２１と、待ち時間指定部２２と、プログラム修正部２３とを備える。
【００２９】
負荷指定部２１は、モータ負荷の許容範囲を指定する。この場合、モータ負荷として、モータのオーバーヒートの程度、ＯＶＣ、モータに許容される最大電流値、最大速度、最大加速度、および最大加加速度（最大ジャーク）のいずれかを許容範囲として指定する。モータ負荷としていずれを指定するかは、予め入力部１の操作によりユーザが選択できる。なお、選択するモータ負荷は、１つでも複数でもよい。
【００３０】
待ち時間指定部２２は、ロボットＡ，Ｂ，Ｃの動作待ち時間の許容範囲を指定する。動作待ち時間の許容範囲は、予めユーザが入力部１を操作して入力され、例えば上限値と下限値として指定される。なお、上限値と下限値のいずれか一方のみを指定してもよい。
【００３１】
プログラム修正部２３は、記憶部１３に記憶されたモータ負荷が負荷指定部２１により指定されたモータ負荷の許容範囲内となり、かつ、待ち時間算出部１５により算出された動作待ち時間が待ち時間指定部２２により指定された動作待ち時間の許容範囲内となるように、動作プログラムＰＡ，ＰＢ，ＰＣの指令速度および指令加速度を修正する。さらに、プログラム修正部２３は、ロボットシステムのサイクルタイムが最短となるように指令速度および指令加速度を修正する。
【００３２】
図５は、図４の演算部１０で実行される処理の一例を示すフローチャートである。なお、図３と同一の処理を行う部分には同一の符号を付し、第１の実施形態との相違点を主に説明する。ステップＳ１１では、負荷指定部２１での処理により、モータ負荷の許容範囲を指定する。ステップＳ１２では、待ち時間指定部２２での処理により、動作待ち時間の許容範囲（上限値、下限値）を指定する。次いで、図３のステップＳ１〜ステップＳ５と同様の処理を行う。
【００３３】
ステップＳ１３では、ロボット負荷算出部１６での処理により、負荷指定部２１での指定に対応したモータ負荷を算出する。すなわち、ここで算出するモータ負荷は、ロボット負荷の一部としてのモータ負荷であり、ステップＳ２で算出するモータ負荷（モータトルク、速度）とは異なる。例えばステップＳ１１で、オーバーヒートの許容範囲を指定した場合、ステップＳ１３では、モータのオーバーヒートの程度を算出する。
【００３４】
ステップＳ１４では、ステップＳ１３で算出されたモータ負荷がステップＳ１１で指定された許容範囲内であるか否かを判定する。ステップＳ１４が肯定されるとステップＳ１５に進み、否定されるとステップＳ１７に進む。
【００３５】
ステップＳ１５では、ステップＳ５で算出された動作待ち時間がステップＳ１２で指定された動作待ち時間の下限値より大きいか否かを判定する。ステップＳ１５が肯定されるとステップＳ１６に進み、否定されるとステップＳ１７に進む。
【００３６】
ステップＳ１６では、実行時間算出部１４により算出されたロボットシステムのサイクルタイムが最短であるか否かを判定する。例えばステップＳ１４〜ステップＳ１６の処理を所定の複数回（例えば１０回）繰り返し、そのうちの最短のサイクルタイムを記憶しておく。この記憶されたサイクルタイムと、算出されたサイクルタイムとを比較し、算出されたサイクルタイムが記憶されたサイクルタイムよりも長い場合に、ステップＳ１６が否定され、ステップＳ１７に進む。一方、算出されたサイクルタイムが記憶されたサイクルタイム以下の場合にステップＳ１６が肯定され、処理を終了する。
【００３７】
ステップＳ１７では、ステップＳ１４〜ステップＳ１６の全てが肯定されるように、動作プログラムの指令速度および指令加速度を修正する。すなわち、ステップＳ１４が否定されると、モータ負荷が許容範囲内となるように、ステップＳ１５が否定されると、動作待ち時間が許容範囲内となるように、ステップＳ１６が否定されると、サイクルタイムが最短となるように、それぞれ指令速度および指令加速度を修正する。なお、ステップＳ１７で、指令速度および指令加速度の両方でなく、いずれか一方を修正するようにしてもよい。
【００３８】
ステップＳ１４〜ステップＳ１７の処理は、プログラム修正部２３での処理によって行われる。ステップＳ１７の処理が終了するとステップＳ１に戻り、以降、モータ負荷が許容範囲内となり、かつ、動作待ち時間が許容範囲内となり、かつ、サイクルタイムが最短となるまで、同様の処理を繰り返す。なお、ステップＳ１〜ステップＳ１７の繰り返しの処理を、以下では、モータ負荷を考慮したサイクルタイム短縮処理と呼ぶ。
【００３９】
第２の実施形態に係るシミュレーション装置１００は、第１の実施形態に係るシミュレーション装置１００と同様の作用効果に加え、次のような作用効果を奏することができる。すなわち、プログラム修正部２３は、ステップＳ４で算出されたロボットシステムの動作サイクルタイムが最短となるように指令速度および指令加速度を修正するので、ロボットシステムによる効率的な作業（例えば部品の組立作業）が可能である。
【００４０】
（変形例）
図６は、第２の実施形態に係るシミュレーション装置１００の変形例を示すブロック図である。図６のシミュレーション装置１００は、ロボット負荷算出部１６での処理において、ロボット負荷として減速機の寿命を選択した場合にとくに好適な構成であり、目標寿命指定部２５と減速機評価基準指定部２６とを追加的に備える。
【００４１】
目標寿命指定部２５は、減速機寿命を基準としたロボットシステムの目標寿命を指定する。この場合の目標寿命は、ロボットシステムの稼働時間またはサイクル数を用いて指定する。なお、目標寿命は、予め入力部１の操作によりユーザが指定できる。
【００４２】
減速機評価基準指定部２６は、減速機寿命を評価するための基準（評価基準）を指定する。評価基準は、モータの速度、加速度、トルク、平均トルク等、減速機寿命に影響を及ぼす物理量であり、これらのいずれかひとつ、または複数を選択し、その基準値を指定する。評価基準としていずれを選択するかは、予め入力部１の操作によりユーザが選択できる。
【００４３】
プログラム修正部２３は、目標寿命指定部２５で指定された目標寿命と、減速機評価基準指定部２６で指定された評価基準とに基づき、動作プログラムの指令速度および指令加速度を修正する。
【００４４】
図７は、図６の演算部１０で実行される処理の一例を示すフローチャートである。ステップＳ２１では、目標寿命指定部２５での処理により、減速機寿命を基準としたロボットシステムの目標寿命を指定する。ステップＳ２２では、減速機評価基準指定部２６での処理により、減速機寿命の評価基準を指定する。ステップＳ２３では、図５のステップＳ１２と同様、待ち時間指定部２２での処理により、動作待ち時間の許容範囲（上限値、下限値）を指定する。
【００４５】
ステップＳ２４では、図５のステップＳ１〜ステップＳ１７と同様の処理、すなわち、モータ負荷を考慮したサイクルタイム短縮処理を実行する。ステップＳ２５では、シミュレーション部１１での処理によりシミュレーションを行う。ステップＳ２６では、ロボット負荷算出部１６での処理により、各々のロボットの各駆動軸に設けられた減速機の寿命を算出する。
【００４６】
ステップＳ２７では、ステップＳ２６で算出した減速機寿命がステップＳ２１で指定した目標寿命より長いか否かを判定する。ステップＳ２７が肯定されると処理を終了する。
【００４７】
ステップＳ３０では、ステップＳ２５でのシミュレーションの結果、動作待ち時間が存在するか否かを判定する。ステップＳ３０が肯定されるとステップＳ３１に進み、否定されるとステップＳ３２に進む。ステップＳ３０の動作待ち時間とは、許容範囲の下限値との間に存在する時間である。例えば、ステップＳ２３で許容範囲が０．５〜１．０秒と指定され、シミュレーションの結果、０．５秒の動作待ち時間が得られた場合、許容範囲（０．５秒）との間に動作待ち時間は存在しない。したがって、この場合にはステップＳ３２に進む。一方、シミュレーションの結果、０．８秒の動作待ち時間が得られた場合、許容範囲（０．５秒）との間に０．３秒の動作待ち時間が存在する。したがって、この場合にはステップＳ３１に進む。
【００４８】
ステップＳ３１では、動作待ち指令（図２の「wait DI(2)=on」等）が出力される前の動作から、ステップＳ２２で指定した評価基準を超える評価基準よりも厳しい動作を抽出する。この場合、例えば簡略した動作プログラムの一例である図８に示すように、動作待ち指令１と動作待ち指令２との間に複数の動作命令（動作文１，２，・・・，Ｎ）があり、動作待ち指令２で動作待ち時間があると判定された場合、動作文１〜Ｎの中から、評価基準を超える動作を抽出する。動作文０は抽出しない。
【００４９】
次いで、ステップＳ３３で、抽出した動作の指令速度および指令加速度を低減し、ステップＳ２５に戻る。これにより、動作待ち時間を利用して、減速機寿命に悪影響を及ぼす評価基準よりも厳しい動作を緩和することができる。したがって、繰り返しの処理において、減速機寿命を目標寿命よりも長くすることができる。
【００５０】
ステップＳ３２では、動作待ち時間がないため、ロボットの全体の動作から、ステップＳ２２で指定した評価基準を超える評価基準よりも厳しい動作を抽出する。次いで、ステップＳ３３で、抽出した動作の指令速度および指令加速度を低減し、ステップＳ２５に戻る。これにより、動作待ち時間がない場合であっても、評価基準よりも厳しい動作を緩和することで、減速機寿命を目標寿命よりも長くすることができる。
【００５１】
なお、ロボット負荷算出部１６により算出された減速機寿命が目標寿命指定部２５により指定された目標寿命よりも短いロボットが存在しているときに、そのロボットについて待ち時間算出部１５により所定長さ以上の待ち時間が算出されていれば、その待ち時間が算出される前の動作から、減速機評価基準指定部２６により指定された評価基準を超える動作を抽出し、抽出した動作における指令速度および指令加速度を減少させる一方、待ち時間算出部１５により所定長さ以上の待ち時間が算出されていなければ、ロボットシステムの動作から、減速機評価基準指定部２６により指定された評価基準を超える厳しい動作を抽出し、抽出した動作における指令速度および指令加速度を減少させるのであれば、プログラム修正部２３の処理は上述したものに限らず、いかなるものでもよい。
【００５２】
図９は、第２の実施形態に係るシミュレーション装置１００の他の変形例を示すブロック図である。図９のシミュレーション装置１００は、ロボット負荷算出部１６での処理において、ロボット負荷として消費電力を選択した場合にとくに好適な構成であり、電力算出部２７と電力評価基準指定部２８とを追加的に備える。
【００５３】
電力算出部２７は、ロボットの消費電力を算出する。この場合、まず、モータ負荷算出部１２によって算出されたモータ負荷を電流値に変換する。次いで、モータ負荷と指令速度と指令加速度と変換した電流値とから消費電力を算出する。
【００５４】
電力評価基準指定部２８は、ロボットの消費電力の評価基準を指定する。評価基準は、例えば各々のロボットの各動作時の平均消費電力である。
【００５５】
図１０は、図９の演算部１０で実行される処理の一例を示すフローチャートである。なお、図１０では、減速機寿命が目標寿命を満たすような処理を併せて行っており、図７と同一の処理を行う部分には同一の符号を付している。
【００５６】
ステップＳ２１でロボットシステムの目標寿命（減速機寿命）を指定すると、ステップＳ４１で、電力評価基準指定部２８での処理により、消費電力の評価基準を指定する。次いで、ステップＳ２３で動作待ち時間の許容範囲を指定し、ステップＳ２４でモータ負荷を考慮したサイクルタイム短縮処理を実行した後、ステップＳ４２で、例えば図７のステップＳ２５〜ステップＳ３３と同様、減速機寿命が目標寿命を満たすような処理を行う。
【００５７】
ステップＳ４３では、動作プログラムを実行し、ステップＳ４４では、電力算出部２７での処理により、ステップＳ４３のシミュレーション結果により求めたモータ負荷から電流値に変換する。ステップＳ４５では、電力算出部２７での処理により、各々のロボットの消費電力を算出する。ステップＳ４６では、ステップＳ４３のシミュレーション結果により求めた動作待ち時間が、ステップＳ４３で指定した許容範囲内であるか否かを判定する。ステップＳ４６が否定されるとステップＳ４７に進み、肯定されると処理を終了する。
【００５８】
ステップＳ４７では、動作待ち指令が出力される前の動作から、評価基準を超える評価基準よりも厳しい動作を抽出する。なお、評価基準は、ステップＳ４１で指定した消費電力の評価基準であり、ステップＳ４７では、平均消費電力が評価基準を超える動作を抽出する。ステップＳ４８では、指令速度と指令加速度を下げ、ステップＳ４３に戻る。これにより、ロボットシステムの消費電力が低減され、サイクルタイムが短く、かつ、減速機寿命を延ばし、かつ、消費電力を小さくした最適な動作プログラムを作成することができる。
【００５９】
なお、待ち時間算出部１５により所定長さ以上の待ち時間が算出されていれば、その待ち時間が算出される前の動作から、電力評価基準指定部２８により指定された評価基準を超える動作を抽出し、抽出した動作における指令速度および指令加速度を減少させるのであれば、プログラム修正部２３の処理は上述したものに限らず、いかなるものでもよい。
【００６０】
上記実施形態（図１）では、シミュレーション装置１００（演算部１０）がシミュレーション部１１とモータ負荷算出部１２と記憶部１３と実行時間算出部１４と待ち時間算出部１５とロボット負荷算出部１６とを有するようにしたが、少なくともシミュレーション部１１と記憶部１３と実行時間算出部１４と待ち時間算出部１５とを有するのであれば、動作待ち時間を考慮した動作プログラムを作成することができる。したがって、シミュレーション装置１００からモータ負荷算出部１２とロボット負荷算出部１６とを省略してもよい。上記実施形態（図４）では、プログラム修正部２３が、記憶部１３に記憶されたモータ負荷が負荷指定部２１により指定されたモータ負荷の許容範囲内となり、かつ、待ち時間算出部１５により算出された動作待ち時間が待ち時間指定部２２により指定された動作待ち時間の許容範囲内となるように、指令速度および前記指令加速度を修正するとともに、ロボットシステムの動作サイクルタイムが最短となるように指令速度および指令加速度を修正するようにしたが、プログラム修正部２３による動作サイクルタイムを最短とする処理を省略してもよい。上記変形例（図６，９）では、減速機寿命および消費電力を考慮した動作プログラムを作成するようにしたが、他のロボット負荷を考慮した動作プログラムを作成するようにしてもよい。
【００６１】
以上の説明はあくまで一例であり、本発明の特徴を損なわない限り、上述した実施形態および変形例により本発明が限定されるものではない。上記実施形態および変形例の構成要素には、発明の同一性を維持しつつ置換可能かつ置換自明なものが含まれる。すなわち、本発明の技術的思想の範囲内で考えられる他の形態についても、本発明の範囲内に含まれる。また、上記実施形態と変形例の１つまたは複数を任意に組み合わせることも可能である。
【符号の説明】
【００６２】
１１    シミュレーション部
１２    モータ負荷算出部
１３    記憶部
１４    実行時間算出部
１５    待ち時間算出部
１６    ロボット負荷算出部
２１    負荷指定部
２２    待ち時間指定部
２３    プログラム修正部
２５    目標寿命指定部
２６    減速機評価基準指定部
２７    電力算出部
２８    電力評価基準指定部
１００    シミュレーション装置
【図１】
0005877867.tif 000002
【図２】
0005877867.tif 000003
【図３】
0005877867.tif 000004
【図４】
0005877867.tif 000005
【図５】
0005877867.tif 000006
【図６】
0005877867.tif 000007
【図７】
0005877867.tif 000008
【図８】
0005877867.tif 000009
【図９】
0005877867.tif 000010
【図１０】
0005877867.tif 000011