(57)【要約】【課題】作業の効率が高いシミュレーション装置を提供すること、および、このシミュレーション装置の結果に基づきロボットを制御するロボット制御装置を提供すること。【解決手段】本発明のシミュレーション装置は、信号の入出力動作のシミュレーションを行うシミュレーション装置であって、複数の入力信号を仮想した複数の仮想入力信号および複数の出力信号を仮想した複数の仮想出力信号のうちの２つ以上の仮想信号をグループ化するグループ設定部と、前記グループ化された２つ以上の前記仮想信号を１つのまとまりとして、画像を表示することが可能な画面を有する画像表示装置に表示させる設定を行う表示設定部とを有することを特徴とする。【選択図】図３
2018008351.tif 000002
【特許請求の範囲】
【請求項１】
信号の入出力動作のシミュレーションを行うシミュレーション装置であって、
複数の入力信号を仮想した複数の仮想入力信号および複数の出力信号を仮想した複数の仮想出力信号のうちの２つ以上の仮想信号をグループ化するグループ設定部と、
前記グループ化された２つ以上の前記仮想信号を１つのまとまりとして、画像を表示することが可能な画面を有する画像表示装置に表示させる設定を行う表示設定部とを有することを特徴とするシミュレーション装置。
【請求項２】
ロボットのシミュレーションを行う第１プログラムと同期して実行可能で、かつ、前記第１プログラムとは異なる第２プログラムを実行することにより、前記信号の入出力動作のシミュレーションを行い、
前記仮想入力信号を前記仮想出力信号に基づいて生成する条件設定部を有する請求項１に記載のシミュレーション装置。
【請求項３】
前記条件設定部は、前記仮想出力信号の条件を満足してから前記仮想入力信号を生成するまでの待機時間を設定する請求項２に記載のシミュレーション装置。
【請求項４】
前記表示設定部は、前記画面に、前記仮想信号の表示の有効および無効を切り替えることができる切り替え部を表示させる設定を行う請求項１ないし３のいずれか１項に記載のシミュレーション装置。
【請求項５】
前記表示設定部は、前記画面に、前記仮想信号をタイムチャートで表示させる設定を行う請求項１ないし４のいずれか１項に記載のシミュレーション装置。
【請求項６】
前記表示設定部は、前記タイムチャートの時間軸に沿って往復移動可能なカーソルを表示させる設定を行う請求項５に記載のシミュレーション装置。
【請求項７】
前記グループ設定部による前記グループ化は、表計算ソフトウェアを用いて編集可能である請求項１ないし６のいずれか１項に記載のシミュレーション装置。
【請求項８】
請求項１ないし７のいずれか１項に記載のシミュレーション装置によるシミュレーション結果に基づいてロボットを制御することを特徴とするロボット制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション装置およびロボット制御装置に関するものである。
【背景技術】
【０００２】
従来から、実物のロボット（実機）を用いず、仮想ロボットにより、実機による作業等をシミュレーションする技術が知られている。
【０００３】
このようなシミュレーションする技術を用いた装置として、例えば、特許文献１には、ロボットプログラムによりロボットのシミュレーションを実行するシミュレーション装置が開示されている。
【０００４】
かかるシミュレーション装置では、ロボットプログラムに加え、当該ロボットプログラムとは別個のファイルをさらに使用している。別個のファイルは、周辺装置からのフィードバック信号の疑似的な指令を含んでおり、当該指令がロボットプログラムの実行行に同期して実行される。これにより、仮想的な周辺機器の定義やＰＬＣ（programmable logic controller）を必要とせず、また、ロボットプログラムを変更せずに適切なシミュレーションを行うことができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−１４４５２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に係るシミュレーション装置では、作業数が増えるに従って別個のファイルが有する指令の数が増えると、指令に誤りがあった場合に、どの指令に誤りがあったのかが把握し難い。それゆえ、特許文献１に係るシミュレーション装置では、指令の修正に多くの時間を要し、作業性が低下するという問題があった。
【課題を解決するための手段】
【０００７】
本発明は、上述の課題を解決するためになされたものであり、以下により実現することが可能である。
【０００８】
本発明のシミュレーション装置は、信号の入出力動作のシミュレーションを行うシミュレーション装置であって、
複数の入力信号を仮想した複数の仮想入力信号、および、複数の出力信号を仮想した複数の仮想出力信号のうちの２つ以上の仮想信号をグループ化するグループ設定部と、
前記グループ化された２つ以上の前記仮想信号を１つのまとまりとして、画像を表示することが可能な画面を有する画像表示装置に表示させる設定を行う表示設定部とを有することを特徴とする。
【０００９】
このような本発明のシミュレーション装置によれば、例えば画像表示装置が有するモニターが備える画面に、グループ化した仮想信号を１つのまとまりとして表示することができる。これにより、作業者は複数の仮想信号を一目で把握することができ、所望の仮想信号を把握し易い。そのため、例えば、どの仮想信号に誤りがあったかを把握し易くなり、よって、誤りのある仮想信号を修正し易い。それゆえ、本発明のシミュレーション装置によれば、シミュレーションの作業の効率を高めることができる。
【００１０】
本発明のシミュレーション装置では、ロボットのシミュレーションを行う第１プログラムと同期して実行可能で、かつ、前記第１プログラムとは異なる第２プログラムを実行することにより、前記信号の入出力動作のシミュレーションを行い、
前記仮想入力信号を前記仮想出力信号に基づいて生成する条件設定部を有することが好ましい。
【００１１】
これにより、第２プログラムにより定義づけられている仮想出力信号を、第１プログラムにより定義づけられている仮想出力信号と同期して実行でき、かつ、仮想出力信号を受けた後に（仮想出力信号に基づいて）仮想入力信号を生成（発生）することができる。このため、第１プログラムを変更せずとも、実物のロボット（実機）とその周辺機器との信号のやり取りである入出力動作のシミュレーションを行うことができる。ここで、第１プログラムは、ロボットのシミュレーションを行うプログラムであり、ロボット（実機）を制御するロボットプログラムと同様のプログラムで、かつ、画面上の仮想空間内で仮想ロボットを駆動させるプログラムである。
【００１２】
本発明のシミュレーション装置では、前記条件設定部は、前記仮想出力信号の条件を満足してから前記仮想入力信号を生成するまでの待機時間を設定することが好ましい。
【００１３】
これにより、第１プログラムに定義づけられている仮想出力信号を参照するという条件を満足してから待機時間を経た後に仮想ロボットに対する仮想入力信号を生成（発生）することができる。そのため、周辺機器からのロボットに対する入力信号を疑似することができ、実機の作業により近いシミュレーションを実行することができる。
【００１４】
本発明のシミュレーション装置では、前記表示設定部は、前記画面に、前記仮想信号の表示の有効および無効を切り替えることができる切り替え部を表示させる設定を行うことが好ましい。
【００１５】
これにより、作業者は仮想信号の表示の有効および無効を切り替えることができるため、例えば、所望の仮想信号を選択的に視認することができ、誤り等の把握がよりし易くなる。
【００１６】
本発明のシミュレーション装置では、前記表示設定部は、前記画面に、前記仮想信号をタイムチャートで表示させる設定を行うことが好ましい。
【００１７】
これにより、作業者は、所望の仮想信号の入出力動作を把握し易くなり、仮想信号の誤り等の把握がよりし易くなる。
【００１８】
本発明のシミュレーション装置では、前記表示設定部は、前記タイムチャートの時間軸に沿って往復移動可能なカーソルを表示させる設定を行うことが好ましい。
【００１９】
これにより、作業者は、カーソルを移動させることにより所望のタイミングでの仮想信号の入出力動作等を把握することができる。
【００２０】
本発明のシミュレーション装置では、前記グループ設定部による前記グループ化は、表計算ソフトウェアを用いて編集可能であることが好ましい。
これにより、作業者は、仮想信号の編集や変更等を容易に行うことができる。
【００２１】
本発明のロボット制御装置は、本発明のシミュレーション装置によるシミュレーション結果に基づいてロボットを制御することを特徴とする。
【００２２】
これにより、より適正なロボットの制御を行うことができるロボット制御装置を提供することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の好適な実施形態に係るロボット制御装置により制御されるロボットおよびその周辺装置を示す図である。
【図２】図１に示すロボットおよびロボット制御装置のシステム構成図である。
【図３】本発明の好適な実施形態に係るシミュレーション装置のシステム構成図である。
【図４】画像表示装置が有する画面に表示されるウィンドウの一例を示す図である。
【図５】仮想Ｉ／Ｏ信号のグループ設定の流れを示すフローチャートである。
【図６】仮想Ｉ／Ｏ信号のグループ設定のためのウィンドウを示す図である。
【図７】仮想Ｉ／Ｏ信号のラベルファイルを示す図である。
【図８】仮想Ｉ／Ｏ信号のグループ設定のためのウィンドウを示す図である。
【図９】仮想Ｉ／Ｏ信号のグループ設定のためのウィンドウを示す図である。
【図１０】仮想Ｉ／Ｏ信号のグループ設定のためのウィンドウを示す図である。
【図１１】条件設定の流れを示すフローチャートである。
【図１２】条件設定のためのウィンドウを示す図である。
【図１３】条件設定のためのウィンドウを示す図である。
【図１４】条件設定のためのウィンドウを示す図である。
【図１５】グループ設定された仮想Ｉ／Ｏ信号のウィンドウを示す図である。
【図１６】ロボットおよびＩ／Ｏ信号のシミュレーターのウィンドウおよびグループ設定された仮想Ｉ／Ｏ信号のウィンドウを示す図である。
【図１７】ロボットプログラムを説明するための図である。
【図１８】ティーチングポイントを説明するための図である。
【図１９】ロボットおよびＩ／Ｏ信号のシミュレーターのウィンドウを示す図である。
【図２０】ロボットおよびＩ／Ｏ信号のシミュレーターのウィンドウを示す図である。
【図２１】ロボットおよびＩ／Ｏ信号のシミュレーターのウィンドウを示す図である。
【図２２】ロボットおよびＩ／Ｏ信号のシミュレーターのウィンドウを示す図である。
【図２３】グループ設定のされた仮想Ｉ／Ｏ信号のウィンドウを示す変形例である。
【図２４】仮想Ｉ／Ｏ信号のタイムチャートのウィンドウを示す図である。
【発明を実施するための形態】
【００２４】
以下、本発明のシミュレーション装置およびロボット制御装置を添付図面に示す好適な実施形態に基づいて詳細に説明する。
【００２５】
１．ロボット制御装置を備えるロボットシステム
図１は、本発明の好適な実施形態に係るロボット制御装置により制御されるロボットおよびその周辺装置を示す図である。図２は、図１に示すロボットおよびロボット制御装置のシステム構成図である。なお、以下では、説明の都合上、図１中の下側（基台１１０側）を「基端」、その反対側を「先端」と言う。
【００２６】
図１に示すロボットシステム１００は、ロボット１と、本発明のロボット制御装置の一例であるロボット制御装置２とを有する。ロボット１の作動は、ロボット制御装置２により制御される。
【００２７】
［ロボット］
ロボット１は、６軸の垂直多関節ロボットであり、基台１１０と、基台１１０に接続されたロボットアーム１０（マニピュレーター）とを有する。また、ロボットアーム１０の先端部には、ハンド１５０（ツール）が取り付けられている。また、図２に示すように、ロボット１は、図１に示すロボットアーム１０を駆動させる動力を発生させる複数の駆動部１２０および複数のモータードライバー１３０を備えている。
【００２８】
図１に示す基台１１０は、ロボット１をその作業する作業領域Ｘ内の所定の箇所に取り付ける部分である。また、本実施形態では、基台１１０にロボット制御装置２が内蔵されている。ただし、ロボット制御装置２は、ロボット１にその一部または全部が内蔵されていてもよく、また、ロボット１とは、別体であってもよい。
【００２９】
ロボットアーム１０は、第１アーム１１（アーム）と、第２アーム１２（アーム）と、第３アーム１３（アーム）と、第４アーム１４（アーム）と、第５アーム１５（アーム）と、第６アーム１６（アーム）とを有する。第１アーム１１は、基台１１０に接続されている。第１アーム１１と第２アーム１２と第３アーム１３と第４アーム１４と第５アーム１５と第６アーム１６とは、基端側から先端側に向ってこの順に連結されている。第６アーム１６の先端部には、ハンド１５０が取り付けられている。
【００３０】
第１アーム１１は、基台１１０に連結された回動軸部材（図示せず）を有し、回動軸部材の中心軸を回動中心として基台１１０に対して回動可能となっている。また、第２アーム１２は、第１アーム１１に連結された回動軸部材（図示せず）を有し、回動軸部材の中心軸を回動中心として第１アーム１１に対して回動可能となっている。また、第３アーム１３は、第２アーム１２に連結された回動軸部材（図示せず）を有し、回動軸部材の中心軸を回動中心として第２アーム１２に対して回動可能となっている。また、第４アーム１４は、第３アーム１３に連結された回動軸部材（図示せず）を有し、回動軸部材の中心軸を回動中心として第３アーム１３に対して回動可能となっている。また、第５アーム１５は、第４アーム１４に連結された回動軸部材（図示せず）を有し、回動軸部材の中心軸を回動中心として第４アーム１４に対して回動可能となっている。また、第６アーム１６は、第５アーム１５に連結された回動軸部材（図示せず）を有し、回動軸部材の中心軸を回動中心として第５アーム１５に対して回動可能となっている。
【００３１】
各アーム１１〜１６には、それぞれ、サーボモーター等のモーター（図示せず）および減速機（図示せず）を有する複数の駆動部１２０が設けられている。すなわち、図２に示すように、ロボット１は、各アーム１１〜１６に対応した数（本実施形態では６つ）の駆動部１２０を有している。そして、各アーム１１〜１６は、それぞれ、対応する駆動部１２０に電気的に接続された複数（本実施形態では６つ）のモータードライバー１３０を介してロボット制御装置２により制御されている。
【００３２】
また、各駆動部１２０には、例えば、エンコーダー、ロータリーエンコーダー等の角度センサー（図示せず）が設けられている。これにより、各駆動部１２０が有するモーターまたは減速機の回転軸の回転角度を検出することができる。
【００３３】
［ロボット制御装置］
ロボット制御装置２は、例えば、ＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）およびＲＯＭ（Read Only Memory）等を備えるパーソナルコンピューター（ＰＣ）等で構成することができる。
【００３４】
図２に示すように、ロボット制御装置２は、駆動制御部２１と、処理部２２と、記憶部２３と、Ｉ／Ｆ２４（インターフェース）とを有する。駆動制御部２１および処理部２２は、ＣＰＵで構成されており、駆動制御部２１は、複数の駆動部１２０の駆動を制御する機能を有し、処理部２２は、信号（入力信号または出力信号）を基に各種演算等を行う機能を有する。記憶部２３は、ＲＡＭおよびＲＯＭで構成され、駆動部１２０の駆動（ロボット１の作動）を制御するロボットプログラムや、信号等の各種情報等を記憶または記録する機能を有する。Ｉ／Ｆ２４は、ハードウェアインターフェースおよびソフトウェアインターフェース等で構成されている。
【００３５】
また、図示はしないが、ロボット制御装置２は、上記機能を有すれば、上記構成以外の機器等を有していてもよい。例えば、ＨＤＤ（hard disk drive）等の外部記憶装置、ディスプレイ等のモニターを有する画像表示装置、および、作業者が前記ＰＣへの指示をするための入力装置（例えばマウスやキーボード等）等を有していてもよい。
【００３６】
このようなロボット制御装置２は、後述する本発明のシミュレーション装置の一例であるシミュレーション装置５によるシミュレーション結果に基づいてロボット１を制御する。例えば、Ｉ／Ｆ２４または外部記憶装置を介してシミュレーション装置５によるシミュレーション結果を入手し、その結果に基づいて、記憶部２３に記憶されたロボットプログラムを処理部２２により修正等してもよい。また、ロボット制御装置２は、シミュレーション結果に基づいて作成され、または、修正されたロボットプログラムを入手してもよい。このように、ロボット制御装置２は、シミュレーション装置５による結果を利用しているため、より適正なロボット１の制御を行うことができる。
【００３７】
なお、ロボット制御装置２とシミュレーション装置５とは接続（有線または無線を問わず）されていてもよいし、接続されていなくてもよい。
【００３８】
このような構成のロボットシステム１００は、例えば、電子部品および電子機器等の対象物８０の把持、搬送および組立て等の作業で用いられる。その際、ロボット１は、対象物８０の把持、搬送および組立て等の作業を行うことができる。
【００３９】
例えば、図１に示すように、ロボット１の作業領域Ｘ内に、複数の対象物８０を搬送するコンベアー３と対象物８０の重量を測る検査機４と検査機４を支持する支持台４０とが設けられている場合、ロボット１は、ロボット制御装置２の指令に基づき、コンベアー３によって搬送された対象物８０をハンド１５０で把持した後、ロボットアーム１０を駆動して検査機４上に対象物８０を載置する作業を行うことができる。
【００４０】
なお、コンベアー３および検査機４には、これらとロボット制御装置２またはロボット１との間で双方向に信号を送信および受信を行うことが可能な通信機器（図示せず）が設けられている。この通信機器によって、ロボット制御装置２からロボット１の先端部等の位置に関する出力信号を受け取る。また、通信機器によって、コンベアー３の停止や検査機４による対象物８０の計測終了等の入力信号をロボット制御装置２に返す。また、コンベアー３や検査機４には、各種センサー（図示せず）が設けられている。このセンサーにより、コンベアー３や検査機４の所望の箇所に対象物８０が位置したか否かを検出することができる。この検出結果は、通信機器によりロボット制御装置２に送られる。
【００４１】
このようにロボット１は、ロボット制御装置２による制御により、周辺機器であるコンベアー３および検査機４と協働して作業をすることができる。
【００４２】
以下、ロボット制御装置２またはロボット１から周辺機器への信号（出力信号）の出力および周辺機器からロボット制御装置２またはロボット１への信号（入力信号）の入力をシミュレーションするシミュレーション装置５について説明する。
【００４３】
２．シミュレーション装置
図３は、本発明の好適な実施形態に係るシミュレーション装置のシステム構成図である。図４は、画像表示装置が有する画面に表示されるウィンドウの一例を示す図である。
【００４４】
図３に示すシミュレーション装置５は、Ｉ／Ｏ（Input/Output：入出力）信号の入出力動作のシミュレーションを行う装置である。また、本実施形態では、シミュレーション装置５は、ロボット１の作動のシミュレーションを行うことができる。
【００４５】
シミュレーション装置５は、例えば、ＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）およびＨＤＤ（hard disk drive）等を備えるパーソナルコンピューター（ＰＣ）等で構成することができる。このシミュレーション装置５は、作業領域Ｘの外部に設定されているのが好ましい。
【００４６】
図３に示すように、シミュレーション装置５は、ＣＰＵで構成された中央処理装置５１と、中央処理装置５１を中心にバス５７により相互に接続されたメインメモリー５２、ファイル装置５３、表示制御装置５４、入力制御装置５５およびＩ／Ｆ５６（インターフェース）とを有する。また、シミュレーション装置５には、画面６１０（図４参照）を有する画像表示装置６１およびマウスやキーボード等の入力装置６２とがそれぞれ接続（無線通信を含む）されている。なお、本実施形態では、画像表示装置６１および入力装置６２はシミュレーション装置５に属していないものとして説明するが、これらはシミュレーション装置５が有していてもよい。
【００４７】
中央処理装置５１は、例えば、メインメモリー５２やファイル装置５３に記憶または記録されている各種データやプログラム（例えば、Ｉ／Ｏシミュレータープログラムおよびロボットシミュレータープログラム）等に従って各種処理を行う。この中央処理装置５１は、グループ設定部５０１、条件設定部５０２、表示設定部５０３および実行部５０４を有する。
【００４８】
グループ設定部５０１は、メインメモリー５２またはファイル装置５３から、複数のＩ／Ｏ信号を仮想した複数の仮想Ｉ／Ｏ信号を読み出し、複数の仮想Ｉ／Ｏ信号の中から所望の仮想Ｉ／Ｏ信号を２つ以上選択して、選択した仮想Ｉ／Ｏ信号をグループ化する機能を有する。また、条件設定部５０２は、仮想入力信号（仮想信号）を仮想出力信号（仮想信号）に基づいて生成（発生）するよう設定したり、仮想入力信号を生成するまでの待機時間（遅延時間）を設定したりする機能を有する。また、表示設定部５０３は、画面６１０に、グループ設定部５０１によりグループ化された２つ以上の仮想Ｉ／Ｏ信号を１つのまとまりとして表示させる設定を行う機能を有する。また、実行部５０４は、ロボットシミュレータープログラムと同期をしつつ、設定した仮想Ｉ／Ｏ信号に基づいて仮想的な入出力動作のシミュレーションを実行する機能を有する。
【００４９】
なお、本明細書では、仮想入力信号および仮想出力信号を、それぞれ、仮想信号ともいう。また、仮想Ｉ／Ｏ信号（仮想入出力信号）とは、仮想入力信号および仮想出力信号の総称である。
【００５０】
Ｉ／Ｆ５６は、ハードウェアインターフェースおよびソフトウェアインターフェース等で構成されている。
【００５１】
メインメモリー５２は、ＲＡＭで構成され、各種データやプログラム等を記憶する機能を有し、中央処理装置５１の作業領域となる。ファイル装置５３は、ＲＯＭおよびＨＤＤ等で構成され、各種データおよびプログラム等を一旦記録する機能を有する。ファイル装置５３には、Ｉ／Ｏ信号の入出力動作のシミュレーションを実行するＩ／Ｏシミュレータープログラムファイル５３１、および、ロボット１の作動を制御するロボット制御装置２のロボットプログラムと同様のロボットシミュレータープログラムファイル５３２等が記録されている。なお、これらメインメモリー５２およびファイル装置５３は、複数の仮想Ｉ／Ｏ信号を記録しておく信号記録部として機能する。
【００５２】
ここで、Ｉ／Ｏシミュレータープログラムファイル５３１やロボットシミュレータープログラムファイル５３２は、例えばＣＤ−ＲＯＭ等の記録媒体（図示せず）に格納されており、この記録媒体から提供される。なお、Ｉ／Ｏシミュレータープログラムファイル５３１やロボットシミュレータープログラムファイル５３２は、記録媒体に格納されておらず、ネットワーク等を介して提供されてもよい。
【００５３】
表示制御装置５４は、例えばグラフィックコントローラーで構成されており、画像表示装置６１に接続されている。表示制御装置５４は、画像表示装置６１が有するディスプレイ等のモニター（図示せず）が備える画面６１０（図４参照）に各種操作画面等のウィンドウを表示させる機能を有する。画面６１０には、実機であるロボット１、コンベアー３および検査機４に対応（仮想）した仮想ロボット１Ａ、仮想コンベアー３Ａおよび仮想検査機４Ａの画像が表示される。また、入力制御装置５５は、入力装置６２からの入力を受け付ける機能を有する。
【００５４】
このような構成のシミュレーション装置５により、画像表示装置６１の画面６１０上に示される仮想空間上でロボット１を仮想した仮想ロボット１Ａの作動の確認および検証を行う。本実施形態では、図４に示すように、画面６１０に表示されたウィンドウＷＤに仮想ロボット１Ａが描かれる。また、シミュレーション装置５により、仮想空間上で、Ｉ／Ｏ信号の入出力動作を仮想した仮想Ｉ／Ｏ信号（仮想信号）の入出力動作の確認および検証を行う。仮想Ｉ／Ｏ信号の入出力動作は、仮想ロボット１Ａと周辺機器であるコンベアー３および検査機４を仮想した仮想コンベアー３Ａおよび仮想検査機４Ａとのやり取りである。このシミュレーション装置５により、仮想ロボット１Ａおよび仮想Ｉ／Ｏ信号の入出力動作を検証することにより、ロボット１（実機）の作動およびＩ／Ｏ信号の入出力動作をシミュレーションすることができる。このため、実機であるロボット１を用いずとも、実際のロボット１の作業におけるロボット１と周辺機器との干渉や、サイクルタイム(装置の動作時)等を検討することができる。
【００５５】
なお、図４に示すように、仮想ロボット１Ａは、前述した実機であるロボット１に対応している。具体的には、仮想ロボット１Ａは、仮想基台１１０Ａと、仮想ロボットアーム１０Ａ（仮想マニピュレーター）と、仮想ハンド１５０Ａ（ツール）と、を有する。仮想ロボットアーム１０Ａは、回動可能に設けられた複数のアームである仮想第１アーム１１Ａ、仮想第２アーム１２Ａ、仮想第３アーム１３Ａ、仮想第４アーム１４Ａ、仮想第５アーム１５Ａおよび仮想第６アーム１６Ａを備えている。
【００５６】
仮想ロボット１Ａの各部の符号は、それぞれ、実際のロボット１の対応する各部の符号の後に「Ａ」を付けて表記する。また、仮想ロボット１Ａの各部の名称は、それぞれ、実際のロボット１の対応する各部の名称の前に「仮想」を付けて表記する。仮想コンベアー３Ａ、仮想検査機４Ａ、仮想支持台４０Ａおよび仮想対象物８０Ａについても同様である。
【００５７】
以下、シミュレーション装置５による処理（シミュレーションを含む）について説明する。
【００５８】
≪シミュレーション装置による処理≫
以下、シミュレーション装置５の処理として、（１）仮想Ｉ／Ｏ信号のグループ設定および条件設定と、（２）グループ設定した仮想Ｉ／Ｏ信号の表示の設定と、（３）シミュレーションの一例とについて説明する。これらの処理は、画面６１０に表示されたＧＵＩ（グラフィカルユーザーインターフェース）を用いて行われる。また、（１）仮想Ｉ／Ｏ信号のグループ設定および条件設定と（２）グループ設定した仮想Ｉ／Ｏ信号の表示の設定とは、中央処理装置５１がＩ／Ｏシミュレータープログラムを実行することにより実現される。また、（３）シミュレーションの一例は、中央処理装置５１がＩ／Ｏシミュレータープログラムとともにロボットシミュレータープログラムを実行することにより実現される。
【００５９】
（１）仮想Ｉ／Ｏ信号のグループ設定および条件設定
まず、仮想Ｉ／Ｏ信号のグループ設定について説明する。
【００６０】
図５は、仮想Ｉ／Ｏ信号のグループ設定の流れを示すフローチャートである。図６は、仮想Ｉ／Ｏ信号のグループ設定のためのウィンドウを示す図である。図７は、仮想Ｉ／Ｏ信号のラベルファイルを示す図である。図８〜図１０は、それぞれ、仮想Ｉ／Ｏ信号のグループ設定のためのウィンドウを示す図である。図１１は、条件設定の流れを示すフローチャートである。図１２〜図１４は、それぞれ、条件設定のためのウィンドウを示す図である。
【００６１】
仮想Ｉ／Ｏ信号のグループ設定では、図５に示すような流れで仮想Ｉ／Ｏ信号のグループ設定を行う処理と、図１１に示すような流れで仮想入力信号を発生させるための条件の設定を行う処理とをこの順で行う。
【００６２】
＜仮想Ｉ／Ｏ信号のグループ設定＞
図５を参照しつつ、仮想Ｉ／Ｏ信号のグループ設定を行う処理について説明する。仮想Ｉ／Ｏ信号のグループ設定は、主に中央処理装置５１が有するグループ設定部５０１により実行される。
【００６３】
まず、作業者の入力装置６２による画面６１０を介した指示を入力制御装置５５が受けて、中央処理装置５１は、ファイル装置５３に保存されているＩ／Ｏシミュレータープログラムを読み込み、表示制御装置５４を用いて画面６１０にウィンドウＷＤ１として表示する（図５：ステップＳ１１）。ウィンドウＷＤ１の一例を図６に示す。
【００６４】
ウィンドウＷＤ１は、仮想Ｉ／Ｏ信号のグループ設定を行うために用いられる。ウィンドウＷＤ１の表示内容は、「Open」と表示されたボタンＢ１１と、ウィンドウＷＤ１中のうちの上側に表示され、項目「Group name setting」と記されたユニットＵ１１と、ウィンドウＷＤ１中のうちの左側に表示され、項目「Input」と記されたユニットＵ１２と、ウィンドウＷＤ１中のうちの右側に表示され、項目「Output」と記されたユニットＵ１３と、を有する。また、ユニットＵ１２には、仮想入力信号のラベル等が表示される。ユニットＵ１３には、仮想出力信号のラベル等が表示される。ユニットＵ１１、Ｕ１２は、それぞれ、行ごとに「１」、「２」等の昇順に番号が付された複数のセルＣ１１を有するBit列と、ラベルを表示する複数のセルＣ１２を有するLabel列と、コメントを表示する複数のセルＣ１３を有するComment列と、グループ名を表示する複数のセルＣ１４を有するGroup列とを備える。
【００６５】
なお、作業者は、入力装置６２を用いてウィンドウＷＤ１のボタンＢ１１、ユニットＵ１１、Ｕ１２、Ｕ１３に対して入力操作等をすることにより、仮想Ｉ／Ｏ信号のグループ設定を行うことができる。ユニットＵ１２を操作することにより、仮想入力信号のグループ設定を行うことができる。一方、ユニットＵ１３を操作することにより、仮想出力信号のグループ設定を行うことができる。
【００６６】
次に、作業者がマウス等の入力装置６２を用いてしたボタンＢ１１のクリックにより、中央処理装置５１は、仮想Ｉ／Ｏ信号のラベルファイルを読み込み、表示制御装置５４を用いて、ユニットＵ１１、Ｕ１２に仮想Ｉ／Ｏ信号の定義を表示する（図５：ステップＳ１２）。仮想Ｉ／Ｏ信号のラベルファイルの一例を図７に示す。また、ユニットＵ１１、Ｕ１２に仮想Ｉ／Ｏ信号の定義を表示した状態のウィンドウＷＤ１を図８に示す。
【００６７】
図８に示すように、仮想Ｉ／Ｏ信号のラベルファイルを読み込むと、Label列が有する複数のセルＣ１２に仮想Ｉ／Ｏ信号のラベルが付される。
【００６８】
なお、図７に示す仮想Ｉ／Ｏ信号のラベルファイルには、仮想Ｉ／Ｏ信号の定義として番号、ラベルおよびコメント等が記録されている。出力信号（Output）の第１行には、仮想コンベアー３Ａを動かす仮想モーターの駆動停止または駆動開始を要求する仮想出力信号（Bit：11、Label：motor_conveyor）が記録されている。出力信号（Output）の第２行には、仮想ハンド１５０Ａの開閉を要求する仮想出力信号（Bit：12、Label：motor_hand）が記録されている。出力信号（Output）の第３行には、仮想検査機４Ａの検査停止または検査開始を要求する仮想出力信号（Bit：13、Label：trigger_inspection）が記録されている。入力信号（Input）の第１行には、仮想コンベアー３Ａの動作静止および動作開始を通知する仮想入力信号（Bit：11、Label：sensor_conveyor）が記録されている。入力信号（Input）の第２行には、仮想コンベアー３Ａ上の所定の位置における仮想対象物８０Ａの有無を通知する仮想入力信号（Bit：12、Label：exist_work_conveyor）が記録されている。入力信号（Input）の第３行には、仮想検査機４Ａ上における仮想対象物８０Ａの有無を通知する仮想入力信号（Bit：13、Label：exist_work_inspection）が記録されている。入力信号（Input）の第４行には、仮想検査機４Ａにて仮想対象物８０Ａを検査しているか否かを通知する仮想入力信号（Bit：14、Label：status_inspection）が記録されている。入力信号（Input）の第５行には、仮想ハンド１５０Ａで仮想対象物８０Ａを把持しているか否かを通知する仮想入力信号（Bit：20、Label：sensor_hand）が記録されている。
【００６９】
次に、作業者が入力装置６２を用いてしたユニットＵ１１へのグループ名の入力により、中央処理装置５１は、グループ名の設定を行う（図５：ステップＳ１３）。次いで、作業者が入力装置６２を用いてした操作入力を受けて、中央処理装置５１は、図９に示すように、セルＣ１４に対してグループ名を選択するためのドロップダウンリストＬ１４を表示させる（図５：ステップＳ１４）。
【００７０】
次に、作業者がしたドロップダウンリストＬ１４内におけるグループ名の選択により、中央処理装置５１は、グループの指定を行う（図５：ステップＳ１５）。これにより、仮想Ｉ／Ｏ信号と所定のグループ（本実施形態では「Group１」）とを紐付ることができる（相互に関連付ることができる）。また、グループの指定を行った際のウィンドウＷＤ１を図１０に示す。
【００７１】
以上のようにして、仮想Ｉ／Ｏ信号のグループ設定を行う処理が完了し、複数の仮想Ｉ／Ｏ信号が１つのまとまったグループとして設定される。
【００７２】
＜条件の設定＞
図１１を参照しつつ、仮想入力信号を発生させるための条件の設定を行う処理について説明する。条件の設定は、主に中央処理装置５１が有する条件設定部５０２により実行される。
【００７３】
まず、作業者の入力装置６２による画面６１０を介した指示を入力制御装置５５が受けて、中央処理装置５１は、表示制御装置５４を用いて画面６１０にウィンドウＷＤ２を表示する（図１１：ステップＳ２１）。
【００７４】
図１２に示すウィンドウＷＤ２は、条件設定のために用いられる。ウィンドウＷＤ２の表示内容は、「Load」と表示されたボタンＢ２１と、「Export」と表示されたボタンＢ２２と、ユニットＵ２１と、を有する。ユニットＵ２１には、グループ設定した仮想Ｉ／Ｏ信号が表示される。ユニットＵ２１は、Group列と、I/O control part列と、Output bit status列と、Wait time列と、Input bit setting列と、を備える。
【００７５】
Group列は、グループ名を表示する複数のセルＣ２０を有する。I/O control part列は、ユニット名（仮想周辺装置名）を表示する複数のセルＣ２７を有するUnit name列と、同じ行に表示されているユニットの作動を表示する複数のセルＣ２８を有するBehavior列と、コメントを表示する複数のセルＣ２９を有するmemo列とを有する。また、Output bit status列は、同じ行に表示されているユニットによる仮想出力信号のラベルを表示する複数のセルＣ２１を有するCase of ON列および複数のセルＣ２２を有するCase of Off列を有する。Input bit setting列は、同じ行に表示されているユニットによる仮想入力信号のラベルを表示する複数のセルＣ２４を有するTurn ON列および複数のセルＣ２５を有するTurn OFF列と、Display only列と有する。また、前記Display only列は、後述するウィンドウＷＤ３（図１５参照）における仮想Ｉ／Ｏ信号のラベルの表示の有効および無効を設定するために用いられる複数のセルＣ２６を有する。この設定は、表示のみの有効／無効の設定であり、ロボットシミュレータープログラムと同期しつつも、Ｉ／ＯシミュレータープログラムのウィンドウＷＤ３からの制御を伴わない。表示が有効な場合には、セルＣ２６内にグレーアウトで表示される。グレーアウトで表示するか否かは、作業者が入力装置６２を用いてしたセルＣ２６のクリックにより行われる。また、表示が有効な場合には、後述する図１５に示すウィンドウＷＤ３内にその仮想Ｉ／Ｏ信号のラベルが表示される。一方、表示が無効な場合には、図１５に示すウィンドウＷＤ３内にその仮想Ｉ／Ｏ信号のラベルが表示されない。
【００７６】
ここで、前記ユニット名としては、例えば、仮想コンベアー３Ａや仮想検査機４Ａ等の仮想周辺装置名が挙げられる。また、前記コメントは、作業者の任意のメモ欄として機能する。また、前記「Case of ON」は、前述した図７に示すファイルの「Bit status」の「１」に対応し、前記「Case of Off」は、図７に示すファイルの「Bit status」の「０」に対応している。また、前記「Turn ON」は、図７に示すファイルの「Bit status」の「１」に対応し、前記「Turn OFF」は、図７に示すファイルの「Bit status」の「０」に対応している。
【００７７】
なお、作業者は、ウィンドウＷＤ２のボタンＢ２１、Ｂ２２、ユニットＵ２１を入力制御装置５５を操作することにより、条件設定を行うことができる。
【００７８】
次に、作業者がマウス等の入力装置６２を用いてしたボタンＢ２１のクリックにより、中央処理装置５１は、グループ設定したデータファイルを読み込んで表示する（図１１：ステップＳ２２）。次いで、作業者が入力装置６２を用いてした操作入力を受けて、中央処理装置５１は、図１３に示すように、例えばセルＣ２２に対して仮想Ｉ／Ｏ信号を選択するためのドロップダウンリストＬ２２を表示させる（図１１：ステップＳ２３）。その後、作業者がしたドロップダウンリストＬ２２内における仮想Ｉ／Ｏ信号の選択をセルＣ２２内に表示する。なお、図示はしないが、上記ステップＳ２２の処理と同様にして、セルＣ２１、Ｃ２４、Ｃ２５に対してドロップダウンリストを表示させて、作業者による仮想Ｉ／Ｏ信号の選択を表示することができる。
【００７９】
次に、作業者が入力装置６２を用いてした操作入力を受けて、中央処理装置５１は、セルＣ２３の待機時間（遅延時間）を設定し、また、セルＣ２７にユニット名を設定する（図１１：ステップＳ２４）。この処理を行った際のウィンドウＷＤ２を図１４に示す。そして、作業者がマウス等の入力装置６２を用いてしたボタンＢ２２のクリックにより、中央処理装置５１は、設定した条件を記録する（図１１：ステップＳ２５）。
【００８０】
このようにして、同一の行にあるセルＣ２１〜Ｃ２９が一つの仮想入力信号を発生させるための条件として設定される。したがって、例えば、「conveyor」の第１行目は、仮想コンベアー３Ａを動かす仮想モーターの駆動開始を要求する仮想出力信号（セルＣ２１：motor_conveyor）を参照して（受けて）、１秒後に仮想コンベアー３Ａの動作開始を通知する仮想入力信号（セルＣ２４：sensor_conveyor）を生成（発生）することを示す。同様に、「conveyor」の第２行目は、仮想コンベアー３Ａを動かす仮想モーターの駆動停止を要求する仮想出力信号（セルＣ２２：motor_conveyor）を参照して、１秒後に仮想コンベアー３Ａの動作停止を通知する仮想入力信号（セルＣ２５：sensor_conveyor）を生成することを示す。「inspection」の第１行目は、仮想検査機４Ａの検査開始を要求する仮想出力信号（セルＣ２１：trigger_inspection）を参照して、０秒後に（直ぐに）仮想検査機４Ａにて仮想対象物８０Ａを検査している旨を通知する仮想入力信号（セルＣ２４：status_inspection）を生成することを示す。「inspection」の第２行目は、仮想検査機４Ａの検査停止を要求する仮想出力信号（セルＣ２２：trigger_inspection）を参照して、４秒後に仮想検査機４Ａにて仮想対象物８０Ａの検査をしていない旨を通知する仮想入力信号（セルＣ２５：status_inspection）を生成することを示す。「hand」の第１行目は、仮想ハンド１５０Ａを閉じることを要求する仮想出力信号（セルＣ２１：motor_hand）を参照して、１秒後に仮想ハンド１５０Ａで仮想対象物８０Ａを把持している旨を通知する仮想入力信号（セルＣ２４：sensor_hand）を生成することを示す。「hand」の第２行目は、仮想ハンド１５０Ａを開けることを要求する仮想出力信号（セルＣ２２：motor_hand）を参照して、１秒後に仮想ハンド１５０Ａで仮想対象物８０Ａを把持していない（解放している）旨を通知する仮想入力信号（セルＣ２５：sensor_hand）を生成することを示す。
【００８１】
なお、これらの条件は一例であり、他の条件も設定可能である。
以上のようにして、条件の設定を行う処理が完了する。これにより、行ごとに１つの仮想Ｉ／Ｏ信号による入出力動作が設定される。
【００８２】
（２）グループ化した仮想Ｉ／Ｏ信号の表示の設定
次に、グループ化した仮想Ｉ／Ｏ信号の表示の設定について説明する。表示の設定は、主に中央処理装置５１が有する表示設定部５０３により実行される。
【００８３】
図１５は、グループ設定された仮想Ｉ／Ｏ信号のウィンドウを示す図である。
この表示の設定では、作業者が入力装置６２を用いてした操作入力を受けて、中央処理装置５１が、図１５に示すウィンドウＷＤ３のようなグループ化した仮想Ｉ／Ｏ信号の表示の設定を行い、表示する。
【００８４】
図１５に示すウィンドウＷＤ３の表示内容は、タブＴ３１付きのタブページＰ３１と、「Start」と表示されたボタンＢ３１と、「Stop」と表示されたボタンＢ３２、「Load」と表示されたボタンＢ３３、ファイル選択用のボタンＢ３４等の各種ボタンと、タブＴ３１を備えるタブページＰ３１とを有する。
【００８５】
１つのタブページＰ３１において、複数の仮想Ｉ／Ｏ信号のラベルは所望のユニットごとに表示される。本実施形態では、複数の仮想Ｉ／Ｏ信号のラベルは、「conveyer」、「inspection」および「hand」のユニットごとに表示される。ウィンドウＷＤ３に示す「conveyer」は、図１４に示すセルＣ２７の「conveyer」に対応している。同様に、ウィンドウＷＤ３に示す「inspection」は、図１４に示すセルＣ２７の「inspection」に対応している。また、ウィンドウＷＤ３に示す「hand」は、図１４に示すセルＣ２７の「hand」に対応している。
【００８６】
また、作業者が各ユニットのチェックボックス３０１をチェックすることにより、中央処理装置５１は、チェックした仮想Ｉ／Ｏ信号の実行を有効にし、また、インジケーター３０２の点灯および消灯の自動的な表示を有効にする。例えば、「conveyer」のチェックボックス３０１をチェックすることにより、「motor conveyer」のインジケーター３０２、「sensor conveyer」のインジケーター３０２の点灯および消灯の自動的な表示が有効になる。また、チェックボックス３０１のチェックを外すことで、作業者は、インジケーター３０２の点灯および消灯の表示およびその信号の実行を手動で指示することができる。
【００８７】
ウィンドウＷＤ３に示す「motor conveyer」は、図１４に示すセルＣ２７の「conveyer」に属するセルＣ２１、Ｃ２２に示す「motor conveyer」に対応しており、ウィンドウＷＤ３に示す「sensor conveyer」は、図１４に示すセルＣ２７の「conveyer」に属するセルＣ２４、Ｃ２５に示す「sensor conveyer」に対応している。同様に、ウィンドウＷＤ３に示す「trigger_inspection」は、図１４に示すセルＣ２７の「inspection」に属するセルＣ２１、Ｃ２２に示す「trigger_inspection」に対応している。ウィンドウＷＤ３に示す「status_inspection」は、図１４に示すセルＣ２７の「inspection」に属するセルＣ２４、Ｃ２５に示す「status_inspection」に対応している。同様に、ウィンドウＷＤ３に示す「motor_hand」は、図１４に示すセルＣ２７の「hand」に属するセルＣ２１、Ｃ２２に示す「motor_hand」に対応している。ウィンドウＷＤ３に示す「sensor_hand」は、図１４に示すセルＣ２７の「hand」に属するセルＣ２４、Ｃ２５に示す「sensor_hand」に対応している。
【００８８】
なお、図示はしないが、前述した図１４に示すセルＣ２６内にグレーアウトで表示された仮想Ｉ／Ｏ信号のラベルとそれに対応したインジケーターとをウィンドウＷＤ３に表示することも可能である。この表示形態は、前記仮想Ｉ／Ｏ信号のラベルおよびそれに対応したチェックボックス３０１と同様である。このインジケーターのチェックを入れたり外したりすることで、作業者は、ロボットシミュレータープログラムと同期した実行を伴わない仮想Ｉ／Ｏ信号を所望のタイミングで入力または出力を行うことができる。
【００８９】
このような構成のウィンドウＷＤ３によれば、１つのタブページＰ３１に例えば関連性のある仮想Ｉ／Ｏ信号をまとめて表示することができる。このため仮想Ｉ／Ｏ信号による入出力動作を把握し易い。
【００９０】
（３）シミュレーションの一例
次に、仮想ロボット１Ａおよび仮想Ｉ／Ｏ信号を用いたロボット１の作動およびＩ／Ｏ信号による入出力動作のシミュレーションの一例について説明する。
【００９１】
図１６は、ロボットおよびＩ／Ｏ信号のシミュレーターのウィンドウおよびグループ設定された仮想Ｉ／Ｏ信号のウィンドウを示す図である。図１７は、ロボットプログラムを説明するための図である。図１８は、ティーチングポイントを説明するための図である。図１９〜図２２は、それぞれ、ロボットおよびＩ／Ｏ信号のシミュレーターのウィンドウを示す図である。
【００９２】
シミュレーションの実行は、中央処理装置５１が有する実行部５０４がＩ／Ｏシミュレータープログラムおよびロボットシミュレータープログラムの実行をすることにより実現される。Ｉ／Ｏシミュレータープログラムとロボットシミュレータープログラムとは同期して実行可能となっている。また、図１６に示すように、仮想ロボット１Ａの作動が描かれウィンドウＷＤおよび仮想Ｉ／Ｏ信号による入出力動作を示すウィンドウＷＤ３にて作業者はシミュレーションの状況を視認できる。なお、図１６に示すように、必要に応じて、中央処理装置５１は、グループ設定されていない状態の仮想Ｉ／Ｏ信号を表示した仮想Ｉ／Ｏ信号モニター用ウィンドウＷＤ４を画面６１０に表示させることもできる。
【００９３】
シミュレーションは、作業者がマウス等の入力装置６２を用いてした図１６に示す「Start」のボタンＢ３１のクリックにより開始される。本実施形態では、ウィンドウＷＤ、ＷＤ３、ＷＤ４を連携させている。ボタンＢ３１がクリックされると、中央処理装置５１はシミュレーションを開始し、ウィンドウＷＤ、ＷＤ３、ＷＤ４にシミュレーションの状況を表示する。
【００９４】
以下、ロボットシミュレータープログラムの一例を説明しつつ、シミュレーションの一例を説明する。
【００９５】
図１７に示すロボットシミュレータープログラムは、仮想ロボット１Ａを用いたロボット１の作業をシミュレーションするプログラムの一例である。また、仮想ロボット１Ａに教示している４つのティーチングポイント（Ｎｏ．Ｐ１１、Ｐ１２、Ｐ２１、Ｐ２２）を図１８に示す。図１８に示す４つのティーチングポイント（Ｎｏ．Ｐ１１、Ｐ１２、Ｐ２１、Ｐ２２）における仮想ロボット１Ａの状態をそれぞれ図１９〜図２２に示す。図１９は、仮想ロボット１Ａが仮想コンベアー３Ａ上空における待機位置（Ｎｏ．Ｐ１１）で待機している状態を示している。図２０は、仮想ロボット１Ａが仮想コンベアー３Ａにおける仮想対象物８０Ａの給除材位置（Ｎｏ．Ｐ１２）で仮想対象物８０Ａを給材または除材している状態を示している。図２１は、仮想ロボット１Ａが仮想検査機４Ａ上空における待機位置（Ｎｏ．Ｐ２１）で待機している状態を示している。図２２は、仮想ロボット１Ａが仮想検査機４Ａにおける仮想対象物８０Ａの給除材位置（Ｎｏ．Ｐ２２）で仮想対象物８０Ａを給材または除材している状態を示している。
【００９６】
図１７に示すロボットシミュレータープログラムについて説明する。
まず、第１行目では、仮想コンベアー３Ａに対してその駆動の開始を要求する信号（出力信号）を出力する（信号名：On motor_conveyor）。
【００９７】
次に、第２行目では、仮想ロボット１Ａを待機位置（Ｎｏ．Ｐ１１）に移動させる（信号名：Go P11）。第３行目では、仮想対象物８０Ａが仮想コンベアー３Ａの所定の位置に到達したという信号（入力信号）を受け取るまで待機させる（信号名：Wait Sw(12) = On）。第４行目では、仮想コンベアー３Ａの駆動の停止を要求する信号（出力信号）を出力する（信号名：Off motor_conveyor）。第５行目では、仮想ロボット１Ａを仮想コンベアー３Ａの給除材位置（Ｎｏ．Ｐ１２）に移動させる（信号名：Move P12）。
【００９８】
次に、第６行目では、仮想ロボット１Ａに仮想ハンド１５０Ａによる仮想対象物８０Ａの把持を要求する信号（出力信号）を出力する（信号名：On motor_hand）。第７行目では、仮想ハンド１５０Ａによる仮想対象物８０Ａの把持が完了したという信号（入力信号）を受け取るまで仮想ロボット１Ａを待機させる（信号名：Wait Sw(20) = On）。第８行目では、仮想ロボット１Ａを待機位置（Ｎｏ．Ｐ１１）に移動させる（信号名：Move P11）。第９行目では、仮想ロボット１Ａを待機位置（Ｎｏ．Ｐ２１）に移動させる（信号名：Go P21）。
【００９９】
次に、第１０行目では、仮想検査機４Ａにおいて仮想対象物８０Ａが無い状態になるまで仮想ロボット１Ａを待機させる（信号名：Wait Sw(13) = On）。第１１行目では、仮想ロボット１Ａを給除材位置（Ｎｏ．Ｐ２２）に移動させる（信号名：Move P22）。第１２行目では、仮想ロボット１Ａに仮想ハンド１５０Ａによる仮想対象物８０Ａの解放を要求する信号（出力信号）を出力する（信号名：Off motor_hand）。第１３行目では、仮想ハンド１５０Ａによる仮想対象物８０Ａの解放が完了したという信号（入力信号）を受け取るまで仮想ロボット１Ａを待機させる（信号名：Wait Sw(20) = Off）。第１４行目では、仮想ロボット１Ａを待機位置（Ｎｏ．Ｐ２１）に移動させる（信号名：Move P21）。第１５行目では、仮想検査機４Ａに対して検査の開始を要求する信号（出力信号）を出力する（信号名：On trigger_inspection）。
【０１００】
第１６行目では、仮想ロボット１Ａをその状態のまま時間調整のために待機させる（信号名：Wait 0.5）、第１７行目では、検査が完了したという信号（入力信号）を受け取るまで仮想ロボット１Ａを待機させる（信号名：Wait Sw(14) = Off）。第１８行目では、仮想検査機４Ａに対して検査の終了を要求する信号（出力信号）を出力する（信号名：Off trigger_inspection）。
【０１０１】
第１９行目では、仮想ロボット１Ａを待機位置（Ｎｏ．Ｐ２１）に移動させる（信号名：Move P21）。第２０行目では、仮想ロボット１Ａに仮想ハンド１５０Ａによって仮想対象物８０Ａの把持を要求する信号（出力信号）を出力する（信号名：On motor_hand）。
【０１０２】
第２１行目では、仮想ハンド１５０Ａによる仮想対象物８０Ａの把持が完了したという信号（入力信号）を受け取るまで仮想ロボット１Ａを待機させる（信号名：Wait Sw(20) = On）。第２２行目では、仮想ロボット１Ａを給除材位置（Ｎｏ．Ｐ２２）に移動させる（信号名：Move P22）。
【０１０３】
第２３行目では、仮想ロボット１Ａを待機位置（Ｎｏ．Ｐ１１）に移動させる（信号名：Go P11）。第２４行目では、仮想コンベアー３Ａにおいて仮想対象物８０Ａが無い状態になったという信号（入力信号）を受け取るまで仮想ロボット１Ａをその状態で待機させる（信号名：Wait Sw(13) = Off）。第２５行目では、仮想ロボット１Ａを給除材位置（Ｎｏ．Ｐ１２）に移動させる（信号名：Move P12）。第２６行目では、仮想ロボット１Ａに仮想ハンド１５０Ａによる仮想対象物８０Ａの解放を要求する信号（出力信号）を出力する（信号名：Off motor_hand）。第２７行目では、仮想ハンド１５０Ａによる仮想対象物８０Ａの解放が完了したという信号（入力信号）を受け取るまで仮想ロボット１Ａを待機させる（信号名：Wait Sw(20) = Off）。第２８行目では、仮想ロボット１Ａを待機位置（Ｎｏ．Ｐ１１）に移動させる（信号名：Move P11）。
【０１０４】
第２９行目では、仮想コンベアー３Ａに対してその駆動の開始を要求する信号（出力信号）を出力する（信号名：On motor_conveyor）。
【０１０５】
このようなロボットシミュレータープログラムとともに仮想Ｉ／Ｏシミュレータープログラムが同期して実行される。例えば、前述した図１７に示すロボットシミュレータープログラムの第６行目の出力信号を参照し（受け）、図１４に示すユニットＵ２１の「hand」の第１行目の処理がなされ、仮想ハンド１５０Ａによる仮想対象物８０Ａの把持が開始する。なお、「hand」の第１行目の処理は、前述したように、仮想ハンド１５０Ａを閉じることを要求する仮想出力信号（motor_hand）を参照して、１秒後に仮想ハンド１５０Ａで仮想対象物８０Ａを把持している旨を通知する仮想入力信号（sensor_hand）を生成する処理である。このように、仮想出力信号に基づいて、待機時間等の条件を満足した後に仮想入力信号を生成する。
【０１０６】
また、この際、作業者は、仮想Ｉ／Ｏ信号の入出力動作をウィンドウＷＤ３が備えるインジケーター３０２の点灯および消灯によって把握することができる。例えば、上記仮想出力信号を受けると「motor_hand」のインジケーター３０２が点灯し、仮想出力信号に基づいて仮想入力信号を発すると「sensor_hand」のインジケーター３０２が点灯する。なお、上記仮想出力信号の出力動作が完了したら、「motor_hand」のインジケーター３０２が消灯する。その他の仮想Ｉ／Ｏ信号の入出力動作は、ロボットシミュレータープログラムの仮想出力信号を参照して（受けて）なされる。
【０１０７】
以上のようにして、Ｉ／Ｏシミュレータープログラムおよびロボットシミュレータープログラムを同期して実行をすることにより、シミュレーションを実行することができる。
以上、シミュレーション装置５による処理の一例を説明した。
【０１０８】
以上説明したように、本発明のシミュレーション装置の一例であるシミュレーション装置５は、信号の入出力動作のシミュレーションを行うシミュレーション装置５である。また、シミュレーション装置５は、複数の入力信号を仮想した複数の仮想入力信号、および、複数の出力信号を仮想した複数の仮想出力信号のうちの２つ以上の仮想信号（複数の仮想信号）をグループ化するグループ設定部５０１を有する。さらに、グループ化された２つ以上の仮想信号を１つのまとまりとして、画像を表示することが可能な画面６１０を有する画像表示装置６１に表示させる設定を行う表示設定部５０３を有する。
【０１０９】
このようなシミュレーション装置５によれば、表示制御装置５４が有するモニターが備える画面６１０に、グループ化した信号を１つのまとまりとして表示することができる。本実施形態では、図１５に示すように、１つのウィンドウＷＤ３が備えるタブページＰ３１に表示することができる。これにより、作業者は複数の仮想信号を一目で把握することができ、所望の仮想信号を把握し易い。そのため、例えば、どの仮想信号に誤りがあったかを把握し易くなり、よって、誤りのある仮想信号を修正し易い。それゆえ、シミュレーション装置５によれば、シミュレーションの作業の効率を高めることができる。
【０１１０】
例えば、シミュレーションを実行した際、ウィンドウＷＤ３に示す「motor conveyer」と「motor_hand」とを同時に実行する予定が無いにも関わらず、これらの仮想出力信号が誤って同時に出力された場合、これらに対応する各インジケーター３０２が同時に点灯したことを視認することにより作業者は前記誤りを把握することができる。本実施形態によれば、１つのウィンドウＷＤ３が備えるタブページＰ３１にまとめて仮想信号を表示しているため、複数の仮想信号を一目で把握することができ、よって、誤りを把握しやすい。また、シミュレーションを実行した際、ウィンドウＷＤに示す仮想ロボット１Ａの作動と、ウィンドウＷＤ３に示すインジケーター３０２が点灯するタイミングとを視認することで、Ｉ／Ｏシミュレータープログラムおよびロボットシミュレータープログラムに誤りが無いかを検討することができる。
【０１１１】
また、図示はしないが、シミュレーションにかかるサイクルタイムを視認することができるウィンドウ等を画面６１０に表示させ、その表示されたサイクルタイムを作業者が視認することにより、予定しているサイクルタイムとの比較および検討をすることができる。
【０１１２】
そして、シミュレーションの結果を基に、実機であるロボット１の作動を制御するロボットプログラムの作成や修正を行うことができる。これにより、より適正なロボット１の制御を行うことができるロボット制御装置２を提供することができる。
【０１１３】
なお、本実施形態では、１つのウィンドウＷＤ３が１つのタブページＰ３１を備える構成であったが、１つのウィンドウＷＤ３が複数のタブページＰ３１を有していてもよい。図２３は、グループ設定された仮想Ｉ／Ｏ信号のウィンドウを示す変形例である。例えば、図２３に示すように、ウィンドウＷＤ３が複数のタブＴ３１を備え、作業者がマウス等の入力装置６２を用いてした所望のタブＴ３１のクリックにより、そのクリック（選択）されたタブＴ３１のタブページＰ３１を表示し、その他のタブページＰ３１を非表示（または背後に表示）とするよう構成されていてもよい。この場合、例えば、図１２に示すウィンドウＷＤ２のユニットＵ２１のGroup列のうち、「＃１」に属する行のグループを１つのタブページＰ３１に１つのまとまりとして表示し、「＃２」に属する行のグループを他の１つのタブページＰ３１に１つのまとまりとして表示するよう設定する。これにより、作業者は複数の仮想信号をグループごとに視認することができる。これは、仮想信号が増えるほど有効である。また、タブＴ３１のクリックにより、タブページＰ３１の表示と非表示とを切り替えるという比較的簡単な操作で、所望のグループに属する仮想信号のみを視認することができるため、作業者は、多数ある仮想信号のうちの所望の仮想信号を一目で把握することができる。これにより、複数の仮想信号がまとめて表示されるため、所望の仮想信号を視認し易い。
【０１１４】
また、前述したように、表示設定部５０３は、画面６１０に表示されたウィンドウＷＤ３が備えるタブページＰ３１が、仮想信号（仮想Ｉ／Ｏ信号）の表示の有効および無効を切り替えることができる切り替え部であるチェックボックス３０１を備える表示の設定を行っている。本実施形態では、作業者がチェックボックス３０１のチェックを入れることで、インジケーター３０２の点灯／消灯の表示を有効とし、チェックを外すことで、インジケーター３０２の点灯／消灯の表示を無効としている。これにより、所望の仮想信号を選択的に視認することができ、誤り等の把握がよりし易くなる。
【０１１５】
図２４は、仮想Ｉ／Ｏ信号のタイムチャートのウィンドウを示す図である。例えば、表示設定部５０３は、画像表示装置６１が有する画面６１０に、仮想信号（仮想Ｉ／Ｏ信号）がタイムチャートで表示されたウィンドウＷＤ５で表示する設定を行うことができる。図２４に示すウィンドウＷＤ５には、仮想信号として、仮想コンベアー３Ａに関する入力信号（Label：sensor_conveyor）と、仮想検査機４Ａに関する入力信号（Label：status_inspection）と、仮想ハンド１５０Ａに関する入力信号（Label：sensor_hand）と、をそれぞれ矩形波で表示している。なお、横軸は時間軸であり、波形の「０」、「１」は、それぞれ、図７に示すBit statusの「０」、「１」に対応している。
【０１１６】
このようなタイムチャート形式で表示することにより、作業者は、どの仮想信号が入力されている状態なのか出力されている状態なのか等を把握し易くなり、誤りがある場合に、その誤りの把握がよりし易くなる。
【０１１７】
また、表示設定部５０３は、画像表示装置６１が有する画面６１０に、ウィンドウＷＤ５においてタイムチャートの時間軸に沿って往復移動可能なカーソルＳ１を表示させる設定を行う。これにより、作業者は、カーソルＳ１を移動させることにより所望のタイミングにおける仮想信号の入出力の状態等を把握することができる。なお、ウィンドウＷ５は、画面６１０に単独で表示する場合の他、他のウィンドウＷＤ、ＷＤ１〜ＷＤ４のうちのいずれか１つ以上と共に表示することもできる。
【０１１８】
さらに、シミュレーション装置５では、前述したように、ロボット１のシミュレーションを行う第１プログラムであるロボットシミュレータープログラムとは異なる第２プログラムであるＩ／Ｏシミュレータープログラムを実行することにより、信号の入出力動作のシミュレーションを行う。また、Ｉ／Ｏシミュレータープログラムはロボットシミュレータープログラムと同期して実行可能であり、シミュレーション装置５では、仮想入力信号を仮想出力信号に基づいて生成する条件設定部５０２を有する。それゆえ、シミュレーション装置５では、Ｉ／Ｏシミュレータープログラムにより定義づけられている仮想出力信号は、ロボットシミュレータープログラムにより定義づけられている仮想出力信号と同期しており、その仮想出力信号を受けた後Ｉ／Ｏシミュレータープログラムにより定義づけられている仮想入力信号を生成（発生）することができる。これにより、ロボットシミュレータープログラムを変更せずとも、実物のロボット（実機）とその周辺機器との信号のやり取りである信号の入出力のシミュレーションを行うことができる。
【０１１９】
例えば、前述した図１７に示すロボットシミュレータープログラムの第６行目の出力信号を参照して、図１４に示すユニットＵ２１の「hand」の第１行目の処理がなされる。具体的には、前述したように、仮想ハンド１５０Ａを閉じることを要求する仮想出力信号（motor_hand）を参照して、１秒後に仮想ハンド１５０Ａで仮想対象物８０Ａを把持している旨を通知する仮想入力信号（sensor_hand）を生成する処理がなされる。前記仮想出力信号（motor_hand）を参照した時、図１５に示すウィンドウＷＤ３の「motor_hand」のインジケーター３０２が点灯し、参照し終えたら消灯する。また、前記仮想入力信号（sensor_hand）を生成した時、図１５に示すウィンドウＷＤ３の「sensor_hand」のインジケーター３０２が点灯し、生成し終えたら消灯する。これらインジケーター３０２の点灯／消灯は、ウィンドウＷＤ３の同一のタブページＰ３１内で、Ｉ／Ｏシミュレータープログラムの進行に沿って一度に視認することができる。
【０１２０】
なお、本実施形態では、Ｉ／Ｏシミュレータープログラムはロボットシミュレータープログラムと同期して実行可能な構成としているが、Ｉ／Ｏシミュレータープログラムはロボットシミュレータープログラムとは、同期しておらず（互いに参照して進行するよう設定されておらず）、同時に並行して進行するよう設定されていてもよい。
【０１２１】
また、条件設定部５０２は、仮想出力信号の条件を満足してから仮想入力信号を生成（発生）するまでの待機時間（遅延時間）を設定可能である。これにより、ロボットシミュレータープログラムに定義づけられている仮想出力信号を受けるという条件を満足して待機時間を経た後に仮想ロボット１Ａに対する仮想入力信号を生成（発生）することができる。そのため、周辺機器からのロボット１に対する入力信号を疑似することができ、より実機の作業に近いシミュレーションを実行することができる。
【０１２２】
また、シミュレーション装置５では、グループ化は、表計算ソフトウェアを用いて編集可能である。前述した（１）仮想Ｉ／Ｏ信号のグループ設定と、（２）グループ設定した仮想Ｉ／Ｏ信号の表示の設定では、表計算ソフトウェアを用いている（図６および図１２参照）。これにより、作業者は、信号の編集や変更等を容易に行うことができる。
【０１２３】
以上、本発明のシミュレーション装置およびロボット制御装置について、図示の実施形態に基づいて説明したが、本発明は、これらに限定されるものではなく、例えば、前述した実施形態の各部の構成は、同様の機能を発揮する任意の構成のものに置換することができ、また、任意の構成を付加することもできる。
【０１２４】
また、前記実施形態では、ロボットの一例として、６軸の垂直多関節ロボットを例に説明したが、ロボットはこれに限定されず、例えば水平多関節ロボット等の他の形式のロボットであってもよい。
【０１２５】
また、本発明のシミュレーション装置は、ロボット以外の装置のシミュレーションにも適用することができる。
【０１２６】
また、前記実施形態では、グループ設定部は、複数の仮想Ｉ／Ｏ信号を読み出し、複数の仮想Ｉ／Ｏ信号の中から所望の仮想Ｉ／Ｏ信号を２つ以上選択して、選択した仮想Ｉ／Ｏ信号をグループ化する機能を有するものとして説明したが、仮想入力信号および仮想出力信号のうちのいずれかの仮想信号を読み出して選択し、グループ化するものであってもよい。同様に、表示設定部は、グループ設定部によりグループ化された２つ以上の仮想信号（仮想入力信号および仮想出力信号のうちのいずれか２つ以上）を１つのまとまりとして表示させる設定を行うものであってもよい。また、同様に、実行部は、ロボットシミュレータープログラムと同期をしつつ、設定した仮想信号に基づいて仮想的な入力または出力のいずれかの動作のシミュレーションを実行するものであってもよい。また、同様に、メインメモリーおよびファイル装置等の記録部は、仮想入力信号および仮想出力信号のうちのいずれかの仮想信号を記録するものであってもよい。
【符号の説明】
【０１２７】
１…ロボット、１Ａ…仮想ロボット、２…ロボット制御装置、３…コンベアー、３Ａ…仮想コンベアー、４…検査機、４Ａ…仮想検査機、５…シミュレーション装置、１０…ロボットアーム、１０Ａ…仮想ロボットアーム、１１…第１アーム、１１Ａ…仮想第１アーム、１２…第２アーム、１２Ａ…仮想第２アーム、１３…第３アーム、１３Ａ…仮想第３アーム、１４…第４アーム、１４Ａ…仮想第４アーム、１５…第５アーム、１５Ａ…仮想第５アーム、１６…第６アーム、１６Ａ…仮想第６アーム、２１…駆動制御部、２２…処理部、２３…記憶部、２４…Ｉ／Ｆ、４０…支持台、４０Ａ…仮想支持台、５１…中央処理装置、５２…メインメモリー、５３…ファイル装置、５４…表示制御装置、５５…入力制御装置、５６…Ｉ／Ｆ、５７…バス、６１…画像表示装置、６２…入力装置、８０…対象物、８０Ａ…仮想対象物、１００…ロボットシステム、１１０…基台、１１０Ａ…仮想基台、１２０…駆動部、１３０…モータードライバー、１５０…ハンド、１５０Ａ…仮想ハンド、３０１…チェックボックス、３０２…インジケーター、５０１…グループ設定部、５０２…条件設定部、５０３…表示設定部、５０４…実行部、５３１…Ｉ／Ｏシミュレータープログラムファイル、５３２…ロボットシミュレータープログラムファイル、６１０…画面、Ｂ１１…ボタン、Ｂ２１…ボタン、Ｂ２２…ボタン、Ｂ３１…ボタン、Ｂ３２…ボタン、Ｂ３３…ボタン、Ｂ３４…ボタン、Ｃ１１…セル、Ｃ１２…セル、Ｃ１３…セル、Ｃ１４…セル、Ｃ２０…セル、Ｃ２１…セル、Ｃ２２…セル、Ｃ２３…セル、Ｃ２４…セル、Ｃ２５…セル、Ｃ２６…セル、Ｃ２７…セル、Ｃ２８…セル、Ｃ２９…セル、Ｆ１…ラベルファイル、Ｌ１４…ドロップダウンリスト、Ｌ２２…ドロップダウンリスト、Ｐ３１…タブページ、Ｓ１…カーソル、Ｓ１１…ステップ、Ｓ１２…ステップ、Ｓ１３…ステップ、Ｓ１４…ステップ、Ｓ１５…ステップ、Ｓ２１…ステップ、Ｓ２２…ステップ、Ｓ２３…ステップ、Ｓ２４…ステップ、Ｓ２５…ステップ、Ｔ３１…タブ、Ｕ１１…ユニット、Ｕ１２…ユニット、Ｕ１３…ユニット、Ｕ２１…ユニット、ＷＤ…ウィンドウ、ＷＤ１…ウィンドウ、ＷＤ２…ウィンドウ、ＷＤ３…ウィンドウ、ＷＤ４…仮想Ｉ／Ｏ信号モニター用ウィンドウ、ＷＤ５…ウィンドウ、Ｘ…作業領域
【図１】
2018008351.tif 000003
【図２】
2018008351.tif 000004
【図３】
2018008351.tif 000005
【図４】
2018008351.tif 000006
【図５】
2018008351.tif 000007
【図６】
2018008351.tif 000008
【図７】
2018008351.tif 000009
【図８】
2018008351.tif 000010
【図９】
2018008351.tif 000011
【図１０】
2018008351.tif 000012
【図１１】
2018008351.tif 000013
【図１２】
2018008351.tif 000014
【図１３】
2018008351.tif 000015
【図１４】
2018008351.tif 000016
【図１５】
2018008351.tif 000017
【図１６】
2018008351.tif 000018
【図１７】
2018008351.tif 000019
【図１８】
2018008351.tif 000020
【図１９】
2018008351.tif 000021
【図２０】
2018008351.tif 000022
【図２１】
2018008351.tif 000023
【図２２】
2018008351.tif 000024
【図２３】
2018008351.tif 000025
【図２４】
2018008351.tif 000026