(57)【要約】【課題】仮想的な周辺装置の定義やＰＬＣを必要とせず、プログラムを変更せずに適切なシミュレーションを実行できるシミュレーション装置の提供。【解決手段】ロボットプログラム３０とは別個の信号状態設定用ファイル３２は、プログラム３０と並列して実行可能であるとともに、プログラム３０の行に対応して記述された、プログラムに含まれる命令の実行により参照される信号の状態を設定又は変更する指令を含む。例えば第５行に対応して記述されたファイル３２の指令３４は、ドア１８の開放が完了した旨の信号の出力を指令する。これにより、シミュレーション実行の際は、ロボットプログラム３０の実行行と同期して、実行行に対応して記述された信号の状態の設定又は変更が行われる。【選択図】図２
2014144524.tif 000002
【特許請求の範囲】
【請求項１】
ロボットプログラムによりロボットのシミュレーションを実行するシミュレーション装置であって、
ロボットプログラムとは別個のファイルをさらに使用し、
前記別個のファイルは、該ロボットプログラムの行に対応して記述された、該ロボットプログラムの行の実行により参照される信号の状態を設定する指令又はデータレジスタの値を設定する指令を含み、
前記指令に基づいて、前記シミュレーションの実行の際、前記ロボットプログラムの実行行と同期して、前記実行行に対応して記述された信号の状態の設定又は前記データレジスタの値に変更するようにした、シミュレーション装置。
【請求項２】
前記信号の状態を設定する指令は、少なくとも信号名及び設定すべき信号状態を指定するものであり、前記データレジスタの値を設定する指令は、少なくともデータレジスタ名及び設定すべき値を指定するものである、請求項１に記載のシミュレーション装置。
【請求項３】
信号の状態やデータレジスタの値を参照するロジック命令を含むロボットプログラムから、前記ロジック命令に対応する行を自動的に特定し表示するようにした、請求項１又は２に記載のシミュレーション装置。
【請求項４】
前記指令は、遅れ時間の指定を含み、信号の状態又はデータレジスタの値は、対応する行の実行から指定された遅れ時間だけ経過した後に、設定すべき信号状態又は設定すべき値に設定される、請求項１〜３のいずれか１項に記載のシミュレーション装置。
【請求項５】
シミュレーション開始時において信号の状態、データレジスタの値、又はロボットの位置を指定し、シミュレーション開始時に前記指定した信号の状態、データレジスタの値、又はロボットの位置を変更するようにした、請求項１〜４のいずれか１項に記載のシミュレーション装置。
【請求項６】
特定の行において、信号の状態又はデータレジスタの値を、指定した信号又はデータレジスタの値に変更するようにした、請求項１〜５のいずれか１項に記載のシミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットプログラムによりロボットのシミュレーションを実行するシミュレーション装置に関する。
【背景技術】
【０００２】
従来、ロボットを含むシステムや工場においてその動作確認や性能評価を行うために、仮想のロボット等を用いたシミュレーションを行う技術が提唱されている。例えば特許文献１には、動作データに基づいてコントローラを模擬する仮想コントローラと、仮想コントローラからの駆動指令により機械運動を模擬する仮想機械を有する複数の仮想機器シミュレータと、を含む仮想工場シミュレーション装置が記載されている。
【０００３】
特許文献２には、仮想ロボットの動作制御を行う擬似コントローラと、擬似コントローラを制御可能なシーケンサと、擬似コントローラとシーケンサとを接続する主通信手段と、シーケンサに対して操作信号の送受信を行う擬似操作盤とを有し、シーケンサ及び擬似コントローラが、主通信手段を介して仮想ロボットの動作確認を行うようにしたシミュレーション装置が記載されている。
【０００４】
また特許文献３には、ロボットコントローラと制御装置を仮想制御手段としてモデル化し、この仮想制御手段の制御プログラムを仮想制御プログラム入力手段からシーケンス制御言語で入力し、入力されたシーケンス制御言語に基づいて制御動作シミュレーション手段が仮想制御手段の制御動作を模擬的に実行する旨が記載されている。
【０００５】
さらに特許文献４には、ロボット及び周辺機器の入出力状態に対する動作の制御手順を記述した状態遷移ダイヤグラムを格納する状態遷移記憶部を備え、この状態遷移ダイヤグラムに基づいてロボット及び周辺機器のモデルを用いたシミュレーションを実行するシミュレーション装置が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−０８１９０６号公報
【特許文献２】特開２００４−１４８４３４号公報
【特許文献３】特開平０７−０３６５１６号公報
【特許文献４】特開平０９−０３８８７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
実機で使用されるロボットプログラムには、周辺機器とのインタロックを行うための信号制御命令や信号条件による分岐命令・待機命令等が含まれることが多い。従ってこのようなプログラムをシミュレータでそのまま実行しても、周辺装置からのフィードバック信号がないため所望の動作ができないという不都合があった。
【０００８】
またロボットプログラムを確認する方法としては、仮想的な周辺装置をシミュレーション装置に配置して擬似的な信号を入出力する方法、擬似スイッチを用いて人手で信号を入力する方法、或いはＰＬＣ（プログラマブルロジックコントローラ）を使って信号の入出力を行う方法等が挙げられるが、対応する仮想装置や仮想操作盤を定義したり、その仮想装置や仮想操作盤を実ＰＬＣと接続したりする作業が必要となり、シミュレーションの準備に手間がかかるという問題があった。さらに擬似スイッチを使用する方法では、人手による操作が必要である。
【０００９】
一方、実機プログラムを変更して不必要な部分を削除或いはコメントアウトする方法も考えられるが、この場合はプログラム自体が変わってしまい、正確なシミュレーションができなくなる虞がある。
【００１０】
さらに、周辺機器の動作時間をシミュレートするためには、仮想周辺装置やＰＬＣを用意してそのタイマを使用したり、プログラムに待機時間を設定する命令を書き込んだりする方法があるが、これらも工数がかかるという問題がある。またシミュレーションを一度実行すると信号状態が変わってしまうので、同じシミュレーションを再度実行しても同じ結果が得られないという問題があった。
【００１１】
そこで本発明は、上述の課題を解決すべく、仮想的な周辺装置の定義やＰＬＣを必要とせず、プログラムを変更せずに適切なシミュレーションを実行できるシミュレーション装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本願第１の発明は、ロボットプログラムによりロボットのシミュレーションを実行するシミュレーション装置であって、ロボットプログラムとは別個のファイルをさらに使用し、前記別個のファイルは、該ロボットプログラムの行に対応して記述された、該ロボットプログラムの行の実行により参照される信号の状態を設定する指令又はデータレジスタの値を設定する指令を含み、前記指令に基づいて、前記シミュレーションの実行の際、前記ロボットプログラムの実行行と同期して、前記実行行に対応して記述された信号の状態の設定又は前記データレジスタの値に変更するようにした、シミュレーション装置を提供する。
【００１３】
第２の発明は、第１の発明において、前記信号の状態を設定する指令は、少なくとも信号名及び設定すべき信号状態を指定するものであり、前記データレジスタの値を設定する指令は、少なくともデータレジスタ名及び設定すべき値を指定するものである、シミュレーション装置を提供する。
【００１４】
第３の発明は、第１又は第２の発明において、信号の状態やデータレジスタの値を参照するロジック命令を含むロボットプログラムから、前記ロジック命令に対応する行を自動的に特定し表示するようにした、シミュレーション装置を提供する。
【００１５】
第４の発明は、第１〜第３のいずれか１つの発明において、前記指令は、遅れ時間の指定を含み、信号の状態又はデータレジスタの値は、対応する行の実行から指定された遅れ時間だけ経過した後に、設定すべき信号状態又は設定すべき値に設定される、シミュレーション装置を提供する。
【００１６】
第５の発明は、第１〜第４のいずれか１つの発明において、シミュレーション開始時において信号の状態、データレジスタの値、又はロボットの位置を指定し、シミュレーション開始時に前記指定した信号の状態、データレジスタの値、又はロボットの位置を変更するようにした、シミュレーション装置を提供する。
【００１７】
第６の発明は、特定の行において、信号の状態又はデータレジスタの値を、指定した信号又はデータレジスタの値に変更するようにした、第１〜第５のいずれか１つの発明において、シミュレーション装置を提供する。
【発明の効果】
【００１８】
本発明によれば、ロボットプログラムの行に対応して信号の状態又はデータレジスタの値が設定され、シミュレーション実行の際、ロボットプログラムの実行行と同期して信号の状態とデータレジスタの値が変更されるので、仮想的な周辺装置やＰＬＣを必要とせずプログラムの確認が容易にでき、またプログラムを変更する必要もない。
【００１９】
信号の状態やデータレジスタの値を参照するロジック命令に対応する行を自動的に特定し表示することにより、ロボットプログラムから信号命令又はデータレジスタ命令を自動的に検出して、行と信号又はデータレジスタとの対応付けが自動的に行えるようになる。
【００２０】
遅れ時間の設定により、ロボットの出力信号により周辺機器を動作させる場合、当該出力信号を出力してから、周辺機器から動作完了信号を受け取るまで時間を遅れ時間として設定し、実機により近いシミュレーションができるようになる。
【００２１】
信号等の初期状態の設定により、シミュレーション開始時の信号状態を所望の状態に設定することができる。
【００２２】
特定の行において、信号の状態又はデータレジスタの値を指定した信号又はデータレジスタの値に変更することにより、外部制御装置の信号（外部信号）によって処理を分岐するプログラム等に対応可能なシミュレーションを行うことができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施形態に係るシミュレーション装置によりシミュレート可能なロボットシステムの一構成例を示す図である。
【図２】シミュレーション装置が実行するロボットプログラムの一例を示す図である。
【図３】シミュレーション装置の処理の一例を示すフローチャートである。
【図４】シミュレーション装置の処理の他の例を示すフローチャートである。
【図５】プログラム開始時の信号状態の初期設定を示す図である。
【図６】外部からの信号によって処理を変更できるロボットプログラムの例を示す図である。
【発明を実施するための形態】
【００２４】
図１は、本発明の実施形態に係るシミュレーション装置によりシミュレート可能なシステムの一構成例を示す図である。システム１０は、可動のハンド１２が先端に取り付けられたロボットアーム１４を有するロボット１６と、開閉可能なドア１８、作業台２０及び開閉可能なクランパ２２を有する機械（例えば工作機械）２４とを含み、ハンド１２、ドア１８及びクランパ２２がロボット１６のＩ／Ｏ信号によって制御される。ハンド１２は、ワーク２６を把持し、かつワーク２６を工作機械２４の作業台２０上に載置できるように構成されている。また、クランパ２２は作業台上のワーク２６を保持できるように構成されており、機械２４は保持されたワーク２６に対して所定の加工を行うことができる。本実施形態に係るシミュレーション装置は、ロボット１６がハンド１２によりワーク２６を把持した状態で機械２４に接近し、ハンド１２が所定位置に到達したらドア１８が開き、ハンド１２が機械２４内に進入してワーク２６を作業台２０上に載置し、クランパ２２が閉じてワーク２６を保持する、という一連の動作をシミュレートするものとする。
【００２５】
図２は、上述の動作をシミュレートするためにシミュレーション装置が実行するロボットプログラム３０の一例を示す図である。先ず第１行及び第２行において、ユーザフレーム及びツールフレームをそれぞれ指定し、次の第３行では、ワーク２６を把持したハンド１２を所定の速度で移動させ、所定の位置（例えば機械２４のドア１８の手前）に位置決めする。
【００２６】
次の第４行では、機械２４のドア１８の開放を要求する信号（信号名：ドア開要求）を出力し、第５行では、ドア１８の開放が完了した旨の信号（信号名：ドア開完了）が入力されるまで待機する。ここで本願発明では、ロボットプログラム３０とは別個の信号状態設定用ファイル３２を使用する。ファイル３２はプログラム３０と並列して実行可能であるとともに、ロボットプログラム３０の行に対応して記述された、ロボットプログラムに含まれる命令の実行により参照される信号の状態を設定又は変更する指令を含む。図２の例では、第５行に対応して記述されたファイル３２の指令３４は、ドア１８の開放が完了した旨の信号（１：ドア開完了）の入力を指令する。これにより、シミュレーション実行の際は、ロボットプログラム３０の実行行（ここでは第５行）と同期して、実行行に対応して記述された信号の状態の設定（変更）が行われる。
【００２７】
次の第６行では、ワーク２６を把持したハンド１２を、開放されたドア１８を通るように所定の速度で移動（前進）させ、ワーク２６を所定の位置（例えば作業台２０の上）に位置決めする。
【００２８】
次の第７行では、ハンド１２の開放を要求する信号（信号名：ハンド開要求）を出力し、第８行では、ハンド１２の開放が完了した旨の信号（信号名：ハンド開完了）が入力されるまで待機する。ここで第５行と同様に、ロボットプログラム３０とは別個のファイル３２は、ロボットプログラム３２の第８行に対応して記述された指令３６を含み、指令３６は、ハンド１２の開放が完了した旨の信号（１：ハンド開完了）の入力を指令する。これにより、ロボットプログラム３０の第８行と同期して、実行行に対応して記述された信号の状態の設定（変更）が行われる。
【００２９】
次の第９行では、機械２４のクランパ２２の閉鎖を要求する信号（信号名：クランパ閉要求）を出力し、第１０行では、クランパ２２の閉鎖が完了した旨の信号（信号名：クランパ閉完了）が入力されるまで待機する。ここで第５行及び第８行と同様に、ロボットプログラム３０とは別個のファイル３２は、ロボットプログラム３２の第１０行に対応して記述された指令３８を含み、指令３８は、クランパ２２の閉鎖が完了した旨の信号（２：クランパ閉完了）の入力を指令する。これにより、ロボットプログラム３０の第１０行と同期して、実行行に対応して記述された信号の状態の設定（変更）が行われる。
【００３０】
そして第１１行では、ハンド１２を、開放されたドア１８を通るように所定の速度で移動（後退）させ、所定の位置（例えば機械２４のドア１８の手前）に位置決めする。
【００３１】
次の第１２行では、機械２４のドア１８の閉鎖を要求する信号（信号名：ドア閉要求）を出力し、第１３行では、ドア１８の閉鎖が完了した旨の信号（信号名：ドア閉完了）が入力されるまで待機する。ここで第５行、第８行及び第１０行と同様に、ロボットプログラム３０とは別個のファイル３２は、ロボットプログラム３２の第１３行に対応して記述された指令４０を含み、指令４０は、ドア１８の閉鎖が完了した旨の信号（２：ドア閉完了）の入力を指令する。これにより、ロボットプログラム３０の第１３行と同期して、実行行に対応して記述された信号の状態の設定（変更）が行われる。なお指令３４、３６、３８及び４０は、少なくとも信号名及び設定すべき信号状態を指定することができる。
【００３２】
図３は、シミュレーション装置がシミュレーションを行ったときの処理の流れを示すフローチャートである。シミュレーションを開始すると、ロボットプログラムの行を順次実行していくが、ここでステップＳ１に示すように、実行中の行が信号状態設定を伴うものであるか否かを判定する。信号状態設定を伴う場合（図２の例では第５、８、１０及び１３行が相当）は、ステップＳ２に進み、ロボットプログラムと別個のファイルに含まれる信号状態設定（変更）指令に基づき、対応する信号状態が設定（変更）される。このような処理をロボットプログラムの最終行まで繰り返す（ステップＳ３）ことにより、所定のシミュレーションが完了する。
【００３３】
なお任意ではあるが、図２において表４２で示すように、ファイル３２による信号状態設定を行う際に、プログラム３０の対応する実行行の開始後から所定の設定時間が経過するまでは信号状態設定を行わないように（すなわち信号遅れ時間を設定）してもよい。図示例では、プログラム３０の第５行に同期して行う信号状態設定（指令３４）の実行を、第５行の実行開始から１０００ミリ秒経過するまで遅らせている。プログラム３０の第８、１０及び１３行についても同様に、適当な信号遅れ時間を設定することができる。このような遅れ時間の設定により、実機のフィードバック信号の遅れ時間を設定でき、実機により近いシミュレーションが可能となる。なお遅れ時間の設定は、後述するデータレジスタの値の設定又は変更についても同様に適用可能である。
【００３４】
図４は、上述の信号遅れ時間を設定した場合に、シミュレーショ装置がシミュレーションを行ったときの処理の流れを示すフローチャートである。シミュレーションを開始すると、ロボットプログラムの行を順次実行していくが、ここでステップＳ１１に示すように、実行中の行が信号状態設定を伴うものであるか否かを判定する。信号状態設定を伴う場合（図２の例では第５、８、１０及び１３行が相当）は、まずステップＳ１２に示すように、所定の設定時間（遅れ時間）が経過するまで待機し、その後、ステップＳ１３に進み、ロボットプログラムと別個のファイルに含まれる信号状態設定（変更）指令に基づき、対応する信号状態が設定（変更）される。このような処理をロボットプログラムの最終行まで繰り返す（ステップＳ１４）ことにより、所定のシミュレーションが完了する。
【００３５】
図５に示す表４４は、シミュレーション開始時の各信号の状態及びロボット位置の初期設定の例を示す。この例では、シミュレーション開始時に、ドア１８の閉要求に関する信号の出力と、ドア１８の閉完了に関する信号の入力とがオンに設定され、他の信号はオフに設定される。このような初期設定も、ロボットプログラム３０とは別個のファイル等により行うことができる。通常、プログラム（シミュレーション）終了時は信号状態が初期状態から変化し、そのまま同じシミュレーションを再度実行しても同じ結果が得られないことがあるが、このような初期設定を行うことにより、シミュレーション開始時の信号状態等を常に一定とし、さらにロボットをシミュレーション開始時に指定した位置に移動させることができ、プログラムの再現性を高めることができる。なお図５には示していないが、後述するデータレジスタの値についても予め初期設定値を定めておき、シミュレーション開始時にデータレジスタの値をその初期設定値に設定することができる。
【００３６】
図６は、本願発明の他の実施形態として、ロボットプログラムの実行と同期してデータレジスタの値を設定・変更するシミュレーション装置を説明する図である。図６に例示するロボットプログラム４６は、レジスタの値に応じてサブプログラムＡ及びＢのいずれかを自動的に選択して実行するものであり、具体的には第２行においてレジスタの値が１であればプログラムＡを実行し、１でなければプログラムＡは実行せずにプログラムＢを実行する、という処理を繰り返すものである。
【００３７】
ここで本願発明では、ロボットプログラム４６とは別個のデータレジスタ設定用ファイル４８を使用する。ファイル４８はプログラム４６と並列して実行可能であるとともに、ロボットプログラム４６の行に対応して記述された、ロボットプログラムに含まれる命令の実行により参照されるデータレジスタの値を設定又は変更する指令を含む。図６の例では、プログラムＡを呼び出す第３行に対応して記述されたファイル４８の指令５０は、第３行と同期して、データレジスタ（レジスタ名：レジ［１］）に数値１を設定する。一方、プログラムＢを呼び出す第６行に対応して記述されたファイル４８の指令５２は、第６行と同期して、データレジスタ（レジスタ名：レジ［１］）に１以外の数値（ここでは２）を設定する。さらに、第１行に対応して記述されたファイル４８の指令５４は、「レジ［１］）の値に応じて異なる信号状態の設定を行う指令であり、レジスタの条件によって信号状態を変更するものである。従ってロボットプログラム４６に基づきシミュレーションを実行すると、プログラムＡ及びＢが交互に反復されることになる。なお指令５０及び５２は、少なくともデータレジスタ名及び設定すべき値を指定することができる。
【００３８】
図６の実施形態では、プログラム４６の特定の行（ここでは第３及び５行）において、レジスタの値を変更し、これに基づいて異なるプログラムが実行されるので、外部制御装置の信号等の外部信号によってロボットを動作させるシーケンス制御シミュレーションに適している。なお図示はしていないが、データレジスタ設定用ファイルは、複数の同種のワークを逐次的に加工する作業をシミュレートするような場合に、ワークの加工を何回行ったかを示すカウンタの数値を、データレジスタとして設定又は変更する指令も含むことができる。
【００３９】
また上述の実施形態のように、ロボットプログラムが信号の状態やデータレジスタの値を参照するロジック命令を含む場合は、当該ロボットプログラムから当該ロジック命令に対応する行を自動的に特定し表示するようにしてもよい。これにより、仮想的な周辺装置やＰＬＣを用いずにプログラムの確認が容易にできるようになる。またロジック命令と行とが自動的に対応付けされるので、信号の状態設定も容易に行うことができる。
【符号の説明】
【００４０】
１０    システム
１２    ハンド
１４    ロボットアーム
１６    ロボット
１８    ドア
２０    作業台
２２    クランパ
２４    工作機械
２６    ワーク
３０、４６    ロボットプログラム
３２    信号状態設定用ファイル
３４、３６、３８、４０    信号状態設定指令
４８    データレジスタ設定用ファイル
５０、５２、５４    データレジスタ設定指令
【図１】
2014144524.tif 000003
【図２】
2014144524.tif 000004
【図３】
2014144524.tif 000005
【図４】
2014144524.tif 000006
【図５】
2014144524.tif 000007
【図６】
2014144524.tif 000008