(57)【特許請求の範囲】
【請求項１】
ワーク上の複数のポイントに対して作業を実行する作業ツールと、
前記作業ツールを前記ポイントに移動させる移動手段と、
プログラムに従って前記作業ツールと前記移動手段を制御するコントローラと、
を備え、
前記コントローラは、
当該コントローラによる制御内容を示す種別情報と前記ポイントの座標情報を含むステートメントを前記ポイントごとに並べて成る第１のプログラムを記憶する第１の記憶手段と、
前記種別情報で特定され、変数を含んだ命令列により成り、前記制御内容を定義した第２のプログラムを記憶する第２の記憶手段と、
１種類の前記変数に対する代入候補である複数のパラメータを記憶する第３の記憶手段と、
前記１種類の変数に代入する前記パラメータを前記ステートメントごとに判定する判定部と、
前記判定部の判定結果に応じて、前記パラメータが格納されているメモリ領域の１つと前記変数とを前記ステートメントごとに結びつけ直す変更部と、
を備え、
前記複数のポイントに対する作業内容はパラメータを除いて同一であり、
前記各ステートメントには、同一の前記種別情報を含み、
前記コントローラは、前記各ステートメントの実行に際し、同一の前記第２のプログラムを参照すること、
を特徴とするロボット。
【請求項２】
ユーザの操作に応じて前記第１のプログラムを作成及び編集するプログラミングツールを更に備え、
前記プログラミングツールは、前記ユーザの操作に応じて前記ステートメントに前記パラメータの特定情報を付帯可能とし、
前記判定部は、前記特定情報が付帯するか判定し、
前記変更部は、前記特定情報が付帯していると、前記特定情報示す前記パラメータのメモリ領域を前記変数に結びつけること、
を特徴とする請求項１記載のロボット。
【請求項３】
前記変更部は、前記特定情報がない場合に対応する前記パラメータのメモリ領域を前記変数に結びつけること、
を特徴とする請求項２記載のロボット。
【請求項４】
前記特定情報がない場合に対する複数の前記パラメータの１つは、適否を示すフラグが付帯し、
前記判定部は、前記特定情報がなく、且つ前記フラグが適用を示すか判定し、
前記変更部は、前記特定情報がなく、且つ前記フラグが適用を示す場合に対応する前記パラメータのメモリ領域を前記変数に結びつけること、
を特徴とする請求項３記載のロボット。
【請求項５】
前記判定部は、前記特定情報がなく、且つ前記フラグが適用否を示すか判定し、
前記変更部は、前記特定情報がなく、且つ前記フラグが適用否を示す場合に対応する前記パラメータのメモリ領域を前記変数に結びつけること、
を特徴とする請求項４記載のロボット。
【請求項６】
前記作業ツールは、各ポイントに異なるネジ長のネジを締め付ける電動ドライバであり、
前記変数は、ネジ長が代入されるために前記命令列に含まれること、
を特徴とする請求項１乃至５の何れかに記載のロボット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットを制御するプログラムに関する。
【背景技術】
【０００２】
各種産業用ロボットが普及している。ロボットは、ワークへのネジ締め、溶接及び塗装、ワークの搬送、ワークへの部品の取り付け、並びに半田付け等を用途とする。このロボットは例えば垂直多関節型の移動手段を有し、移動手段には作業ツールが装着される。移動手段と作業ツールはプログラムを実行するコンピュータにより制御される。コンピュータ制御下で作業ツールは所定ポイントに移動して駆動する。
【０００３】
プログラムはポイント主体のロボット言語で記述され得る。このプログラムは、ポイントごとのポイントステートメントを配列して成る。ポイントステートメントには、ポイント番号を筆頭とし、ポイント種別情報とポイント座標情報が含まれる。ポイント種別情報は、所謂関数名であり、ポイントに対する作業内容及び移動方法を定義した命令列を特定する。
【０００４】
ロボットは、ポイント種別情報が特定する命令列に従って移動手段と作業ツールを制御し、座標情報が示すポイントに作業ツールを向かわせ、当該ポイントに対して作業を実行する。ポイントへの移動及び作業には、各種距離、各種角度、その他各種量等の動作量を示すパラメータが必要である。例えば、ワークに複数のポイントが設定される。各ポイントはネジ締め位置である。電動ドライバである作業ツールは、第１に、各ポイントの上方に位置する。第２に、ネジを回転させつつポイントへ下降する。下降量はネジ長に相当する。この下降量はネジ長で特定されるパラメータで与えられる。
【０００５】
ポイントに螺合させるネジは全て同じとは限らない。ポイントごとに異なるネジ長のネジを螺合させる場合もある。ネジを分類すると、ポイントに固有のネジ、同じワークで多用されるネジ、ワーク不問で多用されるネジがある。これらネジによって作業ツールのポイントへの下降量は相違するため、ポイントステートメントの実行ごとに変数を宣言し、変数に適当なパラメータを代入すればよい。しかしながら、この手法において、各ポイントステートメントの実行の度、変数を初期化し直すのは煩雑である。
【０００６】
そこで、各種ネジ長を格納したメモリ領域と結びついた各システム変数を予め用意しておくと、ユーザの利便性が増す。例えば、ポイント固有のネジを締める場合、そのネジ長に対する「ＣｏｎｄＳｃｒｅｗＬ」というシステム変数を予め用意する。同じワークで多用のネジを締める場合、そのネジ長に対する「ＰｒｏｇＳｃｒｅｗＬ」のシステム変数を予め用意する。ワーク不問で多用のネジを締める場合、そのネジ長に対する「ＣｏｍｍｏｎｇＳｃｒｅｗＬ」のシステム変数を予め用意する。そして、移動方法や作業内容を定義した命令列内で「ＣｏｎｄＳｃｒｅｗＬ」、「ＰｒｏｇＳｃｒｅｗＬ」又は「ＣｏｍｍｏｎｇＳｃｒｅｗＬ」のシステム変数を用いる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１４−２２６７３０号公報
【特許文献２】特開２０１４−２１０３３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
「ＣｏｎｄＳｃｒｅｗＬ」のシステム変数を用いた命令列、「ＰｒｏｇＳｃｒｅｗＬ」のシステム変数を用いた命令列、及び「ＣｏｍｍｏｎｇＳｃｒｅｗＬ」のシステム変数を用いた命令列は、ネジを締める動作自体は同一である。従って、システム変数を除いてコードは同一といってよい。
【０００９】
しかしながら、システム変数が相違するので命令列は別物である。ポイント種別情報で特定される命令列を作成するプログラマーからすれば、システム変数のみが相違する複数の命令列を別々に作成することにより、煩雑な作業が発生する。煩雑な作業はロボットのコストにも繋がる。
【００１０】
本発明は、上記のような従来技術の問題点を解決するために提案されたもので、１種類の命令列で複数のパラメータ候補をポイントに応じて代入できるロボットを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記の目的を達成するために、本発明に係るロボットは、ワーク上の複数のポイントに対して作業を実行する作業ツールと、前記作業ツールを前記ポイントに移動させる移動手段と、プログラムに従って前記作業ツールと前記移動手段を制御するコントローラと、を備え、前記コントローラは、当該コントローラによる制御内容を示す種別情報と前記ポイントの座標情報を含むステートメントを前記ポイントごとに並べて成る第１のプログラムを記憶する第１の記憶手段と、前記種別情報で特定され、変数を含んだ命令列により成り、前記制御内容を定義した第２のプログラムを記憶する第２の記憶手段と、１種類の前記変数に対する代入候補である複数のパラメータを記憶する第３の記憶手段と、前記１種類の変数に代入する前記パラメータを前記ステートメントごとに判定する判定部と、前記判定部の判定結果に応じて、前記パラメータが格納されているメモリ領域の１つと前記変数とを前記ステートメントごとに結びつけ直す変更部と、を備え、前記複数のポイントに対する作業内容はパラメータを除いて同一であり、前記各ステートメントには、同一の前記種別情報を含み、前記コントローラは、前記各ステートメントの実行に際し、同一の前記第２のプログラムを参照すること、を特徴とする。
【００１３】
ユーザの操作に応じて前記第１のプログラムを作成及び編集するプログラミングツールを更に備え、前記プログラミングツールは、前記ユーザの操作に応じて前記ステートメントに前記パラメータの特定情報を付帯可能とし、前記判定部は、前記特定情報が付帯するか判定し、前記変更部は、前記特定情報が付帯していると、前記特定情報を示す前記パラメータのメモリ領域を、前記変数に結びつけるようにしてもよい。
【００１４】
前記変更部は、前記特定情報がない場合に対応する前記パラメータのメモリ領域を前記変数に結びつけるようにしてもよい。
【００１５】
前記特定情報がない場合に対する複数の前記パラメータの１つは、適否を示すフラグが付帯し、前記判定部は、前記特定情報がなく、且つ前記フラグが適用を示すか判定し、前記変更部は、前記特定情報がなく、且つ前記フラグが適用を示す場合に対応する前記パラメータのメモリ領域を前記変数に結びつけるようにしてもよい。
【００１６】
前記判定部は、前記特定情報がなく、且つ前記フラグが適用否を示すか判定し、前記変更部は、前記特定情報がなく、且つ前記フラグが適用否を示す場合に対応する前記パラメータのメモリ領域を前記変数に結びつけるようにしてもよい。
【００１７】
前記作業ツールは、各ポイントに異なるネジ長のネジを締め付ける電動ドライバであり、前記変数は、ネジ長が代入されるために前記命令列に含まれるようにしてもよい。
【発明の効果】
【００１８】
本発明によれば、複数候補から変数に代入するパラメータを判定するため、各種パラメータが存在しても各ポイントに対する作業を共通の命令列で実行でき、プログラマーにとって命令列の作成が簡便となる。
【図面の簡単な説明】
【００１９】
【図１】ロボットの全体構成を示す模式図である。
【図２】コントローラの構成を示すブロック図である。
【図３】ロボットの動作例を示す模式図である。
【図４】メインプログラムの全体構成を示す模式図である。
【図５】パラメータの全体構成を示す模式図である。
【図６】サブプログラムの全体構成を示す模式図である。
【図７】コントローラによるプログラム類の実行動作を示すフローチャートである。
【図８】コントローラの機能を示すブロック図である。
【図９】プログラミングツールによるパラメータ設定画面の遷移を示す模式図である。
【図１０】ポイントステートメントの第１の実行例を示す模式図である。
【図１１】ポイントステートメントの第２の実行例を示す模式図である。
【図１２】ポイントステートメントの第３の実行例を示す模式図である。
【図１３】ポイントステートメントの第４の実行例を示す模式図である。
【発明を実施するための形態】
【００２０】
(ロボット構成)
以下、本発明に係るロボットの実施形態について図面を参照しつつ詳細に説明する。図１に示すように、ロボット１は移動手段２とコントローラ３を備える。移動手段２には作業ツール４が装着される。ロボット１は、移動手段２によって所望位置に作業ツール４を位置させ、作業ツール４を駆動させる。本実施形態において、作業ツール４は電動ドライバであり、ワークにネジを締め付ける。
【００２１】
移動手段２は、作業ツール４をＸ軸方向、Ｙ軸方向及びＺ軸方向に移動させ、指定されたポイントに作業ツール４を位置させる。Ｘ軸方向は、ワークが設置される水平面と平行な軸方向である。Ｙ軸方向は、水平面と平行でＸ軸と直交する他軸方向である。Ｚ軸方向は高さ方向である。この移動手段２は、作業ツール４をＸ軸方向に移動させるＸリニアスライダ２１、作業ツール４をＹ軸方向に移動させるＹリニアスライダ２２、作業ツール４をＺ軸方向に移動させるＺリニアスライダ２３を備える。
【００２２】
Ｘリニアスライダ２１は、Ｘ軸方向に延設されたレール上にＹリニアスライダ２２を摺設し、Ｘ軸方向に走行する無端ベルトにＹリニアスライダ２２を直交させて固定してなり、無端ベルトをＸ軸モータで走行させ、Ｙリニアスライダ２２をＸ軸に沿って移動させる。
【００２３】
Ｙリニアスライダ２２は、Ｙ軸方向に延設されたレール上にＺリニアスライダ２３を摺設し、Ｙ軸方向に走行する無端ベルトにＺリニアスライダ２３を固定してなり、無端ベルトをＹ軸モータで走行させ、Ｚリニアスライダ２３をＹ軸に沿って移動させる。Ｘリニアスライダ２１及びＹリニアスライダ２２の伝動機構としては、無端ベルトの他、シリンダ、リードスクリュー等の各種アクチュエータを挙げることができる。
【００２４】
Ｚリニアスライダ２３は、Ｚ軸に沿った軸を有するアームを備え、このアームの先端に作業ツール４が装着される。このＺリニアスライダ２３は、例えばラックアンドピニオン機構を有し、ラックをＺ軸方向に延設し、当該ラックにアームを固定して構成される。Ｚ軸モータによりピニオンを回転させることで、アームをＺ軸方向に移動させる。このＺリニアスライダ２３により作業ツール４は、Ｚ軸方向を移動する。
【００２５】
図２に示すように、コントローラ３は、プロセッサ３１とストレージ３２とメモリ３３と周辺機器とで構成される所謂コンピュータである。周辺機器はモータドライバ３４及び操作手段３５である。ストレージ３２は、メインプログラム６、サブプログラム７及びパラメータ８からなるプログラム類を記憶する。メインプログラム６はメインルーチンであり、サブプログラム７はサブルーチンであり、パラメータ８はサブプログラム７内の変数７５の代入候補である。
【００２６】
プロセッサ３１は、メインプログラム６に従って演算処理及び周辺機器の制御処理を行う。プロセッサ３１は、メインプログラム６の実行に際し、サブプログラム７とパラメータ８を適宜参照する。メモリ３３には、プログラム類が適宜展開され、またプロセッサ３１の演算結果が一時記憶される。モータドライバ３４は、プロセッサ３１から制御処理の結果として入力される指令信号に従って各モータに電力パルスを供給する。
【００２７】
操作手段３５は、液晶ディスプレイ等の表示部、並びにマウス、キーボード及びティーチングペンダントにより成る。操作手段３５を用いたティーチング操作によって、プログラム類が作成及び編集される。ストレージ３２には複数のメインプログラム６が記憶可能である。操作手段３５を用いた操作によって、実行するメインプログラム６が選択される。
【００２８】
このプログラム類に従ったロボット１の動作を例示する。図３に示すように、メインプログラム６には、ポイントＰ１、Ｐ２及びＰ３がワーク上に設定され、各ポイントＰ１、Ｐ２及びＰ３への移動とネジ締め作業を定義するサブプログラム７が指示されている。但し、サブプログラム７の変数７５へ代入する値は、各ポイントＰ１、Ｐ２、Ｐ３及びＰ４で異なっている。ポイントＰ１には、このポイント固有のネジ長３ｍｍのネジが締められる。ポイントＰ２には、このポイント固有のネジ長５ｍｍのネジが締められる。ポイントＰ３は、このワークにおいて多用されるネジ長１０ｍｍのネジ、又はワークを問わず多用されるネジ長８ｍｍのネジで締められる。
【００２９】
コントローラ３は、各ポイントＰ１、Ｐ２及びＰ３の直上に順番に作業ツール４を位置させ、作業ツール４の駆動と下降移動を並行させる。但し、コントローラ３は、作業ツール４をポイントＰ１よりも高さ３ｍｍだけ離れて位置させ、高さ３ｍｍ分下降させる。コントローラ３は、作業ツール４をポイントＰ２よりも高さ５ｍｍだけ離れて位置させ、高さ５ｍｍ分下降させる。コントローラ３は、作業ツール４をポイントＰ３よりも高さ１０又は８ｍｍだけ離れて位置させ、高さ１０又は８ｍｍ分下降させる。
【００３０】
(プログラム類の構成)
図４は、メインプログラム６の全体構成を示す模式図である。メインプログラム６には、各ポイントＰ１〜Ｐ３のポイントステートメント６１が配列される。ポイントステートメント６１は、ポイントの位置と制御内容を示す。このポイントステートメント６１には、ポイント番号６２を筆頭に、ポイント種別情報６３と、ポイント座標情報６４を並べられる。一部のポイントステートメント６１には、パラメータ番号６５が更に並ぶ。
【００３１】
ポイント番号６２は、ポイントステートメント６１がポイント主体の構文であることの宣言及び区切りを明示し、各ポイントステートメント６１を区分けしている。ポイント座標情報６４は、ポイントの位置をロボット１の座標系で特定している。例えば、各ポイントＰ１〜Ｐ３の座標が特定される。
【００３２】
ポイント種別情報６３は、ポイントに対する制御内容を定義したサブプログラム７を示す所謂関数名である。例えば、移動方法とネジ締めの作業内容を定義するサブプログラム７のポイント種別情報６１が並ぶ。パラメータ番号６５は、ポイントステートメント６１に規定されている場合には、サブプログラム７内で宣言された変数７５への代入値を特定する。例えば、ネジ締め駆動時の作業ツール４の下降量を特定する。
【００３３】
図５は、パラメータ８の全体構成を示す模式図である。メモリ３３には、サブプログラム７の変数７５への代入候補として複数のパラメータ８が格納されている。すなわち、メモリ３３には、パラメータ番号６５で特定されるポイント固有パラメータ８１が複数種類格納され、一のメインプログラム６に共通のプログラム固有パラメータ８２が記憶され、更にメインプログラム６を問わずに適用される共通パラメータ８３が記憶されている。プログラム固有パラメータ８２にはフラグ８４が付帯している。このフラグ８４は、付帯先のプログラム固有パラメータ８２を適用するか不適用とするかを示す。フラグ８４の内容は、操作手段３５を用いた操作によって書き換えられる。
【００３４】
図６は、サブプログラム７の全体構成を示す模式図である。サブプログラム７は、所謂関数名であるポイント種別情報７１で特定される。このサブプログラム７には、移動方法命令列７２、移動前作業命令列７３、及び移動後作業命令列７４が記述される。移動方法命令列７２は、ポイントへの移動方法を制御するステートメントの塊である。例えば、移動方法命令列７２は、ポイントとポイントを結ぶように直線移動させるＰＴＰ移動等を示している。移動方法命令列７２は、予め定義されている外部関数の関数名であってもよい。
【００３５】
移動前作業命令列７３はポイントへの移動前に実行されるステートメントの塊である。例えば、移動前作業命令列７３には、ネジを保持する動作等が記述される。移動後作業命令列７４は、ポイントへの移動後に実行されるステートメントの塊である。例えば、移動後作業命令列７４には、作業ツール４を駆動させながら下降する動作等が記述される。このサブプログラム７には変数７５が含まれる。例えば、ポイントに向けて作業ツール４を下降させるために、移動後作業命令列７４には、下降命令と下降変数とがセットで記述される。
【００３６】
これらプログラム類の実行動作について説明する。図７は、コントローラ３によるメインプログラム６の処理を示すフローチャートである。コントローラ７は、ポイント番号６２がＮ番目のポイントステートメント６１にパラメータ番号６５が付帯するか判断する（ステップＳ０１）。Ｎの初期値は１である。パラメータ番号６５が付帯する場合（ステップＳ０１，Ｙｅｓ）、パラメータ番号６５で特定されるポイント固有パラメータ８１を変数７５に代入する（ステップＳ０２）。
【００３７】
パラメータ番号６５が付帯しない場合（ステップＳ０１，Ｎｏ）、コントローラ７は、フラグ８４を確認する（ステップＳ０３）。フラグ８４の値が１、すなわちプログラム固有パラメータ８２を適用する値であると（ステップＳ０３，Ｙｅｓ）、コントローラ３は、プログラム固有パラメータ８２を変数７５に代入する（ステップＳ０４）。
【００３８】
フラグ８４の値が０、すなわちプログラム固有パラメータ８２を不適用とする値であると（ステップＳ０３，Ｎｏ）、コントローラ２は、共通パラメータ８３を変数７５に代入する（ステップＳ０５）。
【００３９】
変数７５への値の代入が終了すると、コントローラ３は、Ｎ番目のポイントステートメント６１に並ぶポイント種別情報６３と同一のポイント識別情報７１で特定されるサブプログラム７を呼び出し（ステップＳ０６）、サブプログラム７を実行する（ステップＳ０７）。サブプログラム７の実行が終了すると、メインプログラム７に戻り、次のポイントステートメント６１についてＳ０１から実行を繰り返す。
【００４０】
このようにコントローラ３は、図８に示すように、ロボット１の制御部３ａとして機能し、変数７５のパラメータ８を決定する判定部３ｂと、決定されたパラメータ８に変数７５の内容を変更する変更部３ｃを備える。判定部３ｂは、各ポイントステートメント６１に対するパラメータ番号６５の有無と、プログラム固有パラメータ８２に付帯するフラグ８４の内容を判定する。変更部３ｃは、判定部３ｂの判定結果に応じて、変数７５に対してポイント固有パラメータ８１、プログラム固有パラメータ８２又は共通パラメータ８３が格納されるメモリ領域を結びつける。
【００４１】
図８に示すように、このコントローラ３は、プログラミングツール３ｄとして機能し、操作手段３５の入力に応答してプログラム類の新規作成及び編集を行う。プログラム類の作成及び編集では、プログラミングツール３ｄは、表示部にメインプログラム６の内容を表示し、操作手段３５の入力に応答してパラメータ番号６５をポイントステートメント６１に付帯させる。
【００４２】
また、図９に示すように、メインプログラム６に対するパラメータ設定画面を表示する。このパラメータ設定画面では、パラメータ番号６５のないポイントステートメント６１において変数７５にプログラム固有パラメータ８２を代入するか、又は共通パラメータ８２を代入するか選択される。操作手段３５を用いた選択に応じて、プログラミングツール３ｄは、フラグ８４の内容を書き換える。また、このパラメータ設定画面では、ポイント固有パラメータ８１、プログラム固有パラメータ８２及び共通パラメータ８３が設定される。プログラミングツール３ｄは、各パラメータ８に下限値と上限値を記憶し、入力されたパラメータ８が下限値未満又は上限値超であると、エラーを報知する。
【００４３】
（作用）
図１０に示すように、メインプログラム６に並ぶ最初のポイントステートメント６１を例示すると、「＃１  ネジ締め点  Ｘ＝Ｘ１，Ｙ＝Ｙ１，Ｚ＝Ｚ１  パラメータ番号１」である。また、「パラメータ番号１」で特定されるメモリ３３のアドレスには、３ｍｍの値が格納されているものとする。
【００４４】
コントローラ３は、まず「＃１」のポイント番号６２によって、ポイントステートメント６１の区切りを識別する。コントローラ３は、Ｘ座標変数ＸにＸ１を代入し、Ｙ座標変数ＹにＹ１を代入し、Ｚ座標変数ＺにＺ１を代入する初期化を行う。また、「パラメータ番号１」のパラメータ番号６５が付帯するため、コントローラ３は、「パラメータ番号１」で特定される３ｍｍの値をネジ長として宣言された「ＳｃｒｅｗＬ」という名の変数７５に代入する初期化を行う。
【００４５】
そして、「ネジ締め点」というポイント種別情報６３と同じポイント種別情報７１のサブプログラム７に従って移動手段２と作業ツール４を制御する。サブプログラム７には、作業ツール４を移動及び駆動させるための命令列のブロックが含まれている。
【００４６】
命令列のブロックのうちの一つが移動方法命令列７２であり、ＰＴＰ移動の関数名である「ＰＴＰｐｏｉｎｔ」が記述されている。「ＰＴＰｐｏｉｎｔ」の外部関数には、「Ｍｏｖｅ  Ｘ  Ｙ  Ｚ＋ＳｃｒｅｗＬ」という「ＳｃｒｅｗＬ」の変数７５が含まれている。また、命令列のブロックのうちの一つが移動後作業命令列７４であり、移動後作業命令列７４には、「ｄｏｗｎＺ」という関数名に「ＳｃｒｅｗＬ」の変数７５がセットになって記述されている。
【００４７】
コントローラ３は、まず、Ｍｏｖｅ命令に対応して、ＳｃｒｅｗＬの変数７５の３ｍｍという値が示す高さに合うように、（Ｘ，Ｙ，Ｚ）＝（Ｘ１，Ｙ１，Ｚ１＋３）の位置に作業ツール４をＰＴＰ移動させる。そして、作業ツール４を駆動させながら、ｄｏｗｎＺ命令に対応して、ＳｃｒｅｗＬの変数７５の３ｍｍという値が示す量だけ下降させる。
【００４８】
図１１に示すように、メインプログラム６に並ぶ２番目のポイントステートメント６１を例示すると、「＃２  ネジ締め点  Ｘ＝Ｘ２，Ｙ＝Ｙ２，Ｚ＝Ｚ２  パラメータ番号２」である。「パラメータ番号２」で特定されるメモリ３３のアドレスには、５ｍｍの値が格納されているものとする。
【００４９】
コントローラ３は、まず「＃２」のポイント番号６２によって、ポイントステートメント６１の区切りを識別する。コントローラ３は、Ｘ座標変数ＸにＸ２を代入し、Ｙ座標変数ＹにＹ２を代入し、Ｚ座標変数ＺにＺ２を代入する初期化を行う。また、「パラメータ番号１」のパラメータ番号６５が付帯するため、コントローラ３は、「パラメータ番号１」で特定される５ｍｍの値をネジ長として宣言された「ＳｃｒｅｗＬ」という名の変数７５に代入する初期化を行う。
【００５０】
そして、「ネジ締め点」という「＃１」のポイントステートメント６１と同じサブプログラム７に従って移動手段２と作業ツール４を制御する。すなわち、命令列のブロックのうちの一つが移動方法命令列７２であり、「ＰＴＰ移動」の関数名が記述されている。「ＰＴＰ移動」の外部関数には、「Ｍｏｖｅ  Ｘ  Ｙ  Ｚ＋ＳｃｒｅｗＬ」という「ＳｃｒｅｗＬ」の変数７５が含まれている。また、命令列のブロックのうちの一つが移動後作業命令列７４であり、移動後作業命令列７４には、「ｄｏｗｎＺ」という関数名に「ＳｃｒｅｗＬ」の変数７５がセットになって記述されている。
【００５１】
コントローラ３は、１番目のネジ締めが終了した後、Ｍｏｖｅ命令に対応して、ＳｃｒｅｗＬの変数７５の５ｍｍという値が示す高さに合うように、（Ｘ，Ｙ，Ｚ）＝（Ｘ２，Ｙ２，Ｚ２＋５）の位置に作業ツール４をＰＴＰ移動させる。そして、作業ツール４を駆動させながら、ｄｏｗｎＺ命令に対応して、ＳｃｒｅｗＬの変数７５の５ｍｍという値が示す量だけ下降させる。
【００５２】
図１２に示すように、メインプログラム６に並ぶ３番目のポイントステートメント６１を例示すると、「＃３  ネジ締め点  Ｘ＝Ｘ３，Ｙ＝Ｙ３，Ｚ＝Ｚ３」である。フラグ８４は適用を示す「１」であるものとする。また、プログラム固有パラメータ８２の領域として確保されたメモリ３３のアドレスには、１０ｍｍの値が格納されているものとする。
【００５３】
コントローラ３は、まず「＃３」のポイント番号６２によって、ポイントステートメント６１の区切りを識別する。コントローラ３は、Ｘ座標変数ＸにＸ３を代入し、Ｙ座標変数ＹにＹ３を代入し、Ｚ座標変数ＺにＺ３を代入する初期化を行う。また、パラメータ番号６５が付帯せず、且つフラグ８４が「１」のため、コントローラ３は、プログラム固有パラメータ８２で特定される１０ｍｍの値をネジ長として宣言された「ＳｃｒｅｗＬ」という名の変数７５に代入する初期化を行う。
【００５４】
そして、「ネジ締め点」という「＃１」及び「＃２」のポイントステートメント６１と同じサブプログラム７に従って移動手段２と作業ツール４を制御する。すなわち、コントローラ３は、２番目のネジ締めが終了した後、Ｍｏｖｅ命令に対応して、ＳｃｒｅｗＬの変数７５の１０ｍｍという値が示す高さに合うように、（Ｘ，Ｙ，Ｚ）＝（Ｘ３，Ｙ３，Ｚ３＋１０）の位置に作業ツール４をＰＴＰ移動させる。そして、作業ツール４を駆動させながら、ｄｏｗｎＺ命令に対応して、ＳｃｒｅｗＬの変数７５の１０ｍｍという値が示す量だけ下降させる。
【００５５】
図１３に示すように、他のメインプログラム８の３番目のポイントステートメント６１を例示すると、「＃３  ネジ締め点  Ｘ＝Ｘ３，Ｙ＝Ｙ３，Ｚ＝Ｚ３」である。フラグ８４は不適用を示す「０」であるものとする。また、共通パラメータ８３の領域として確保されたメモリ３３のアドレスには、８ｍｍの値が格納されているものとする。
【００５６】
コントローラ３は、パラメータ番号６５が付帯せず、且つフラグ８４が「０」のため、コントローラ３は、共通パラメータ８３で特定される８ｍｍの値をネジ長として宣言された「ＳｃｒｅｗＬ」という名の変数７５に代入する初期化を行う。
【００５７】
そして、「ネジ締め点」という「＃１」及び「＃２」のポイントステートメント６１と同じサブプログラム７に従って移動手段２と作業ツール４を制御する。すなわち、コントローラ３は、２番目のネジ締めが終了した後、Ｍｏｖｅ命令に対応して、ＳｃｒｅｗＬの変数７５の８ｍｍという値が示す高さに合うように、（Ｘ，Ｙ，Ｚ）＝（Ｘ３，Ｙ３，Ｚ３＋８）の位置に作業ツール４をＰＴＰ移動させる。そして、作業ツール４を駆動させながら、ｄｏｗｎＺ命令に対応して、ＳｃｒｅｗＬの変数７５の８ｍｍという値が示す量だけ下降させる。
【００５８】
このように、本実施形態のロボット１では、変数７５の宣言は、メモリ３３の領域の確保ではない。また、各パラメータ８を代入するための異なる変数名の変数７５が用意されるものでも、変数７５のパラメータ８を変化させるものでもない。複数種類のポイント固有パラメータ８１とプログラム固有パラメータ８３と共通パラメータ８３という候補が予めメモリ３３に格納され、変数７５に対するパラメータ８の格納先が選択的に可変するものである。
【００５９】
従って、使用するパラメータ８は異なるが同一処理内容が定義されるサブプログラム７は１種類用意しておけばよい。すなわち、従来のように、同一ワークに対して３ｍｍ、及び８ｍｍ又は１０ｍｍのネジ長のネジを締め付ける場合、３ｍｍという値が格納された領域を宣言する例えば「ｃｏｎｄＳｃｒｅｗＬ」という変数７５を含むが其れ以外は同一記述内容のサブプログラム７、８ｍｍという値が格納された領域を宣言する例えば「ＰｒｏｇＳｃｒｅｗＬ」という変数７５を含むが其れ以外は同一記述内容のサブプログラム７、及び１０ｍｍという値が格納された領域を宣言する例えば「ｃｏｍｍｏｎＳｃｒｅｗＬ」という変数７５を含むが其れ以外は同一記述内容のサブプログラム７を別々に用意しておく必要はない。
【００６０】
本実施形態のロボット１では、同一ワークに対して３ｍｍと８ｍｍ又は１０ｍｍのネジ長のネジを締め付ける場合であっても、例えば「ＳｃｒｅｗＬ」という変数７５を含むサブプログラム７を一つ用意しておけばよい。
【００６１】
（効果）
このように、このロボット１は、コントローラ３による移動手段２と作業ツール４の制御内容を示すポイント種別情報６３とポイント座標情報６４を含むポイントステートメント２１をポイントごとに並べて成るメインプログラム６を記憶する。また、ポイント種別情報７１で特定され、変数７５を含んだ命令列により成り、制御内容を定義したサブプログラム７を記憶する。更に、１種類の変数７５に対する代入候補である複数のパラメータ８を記憶する。
【００６２】
そして、１種類の変数７５に代入するパラメータ８をポイントステートメント６１ごとに判定し、判定結果に応じて、パラメータ８が格納されているメモリ領域の１つと変数７５とをポイントステートメント６１ごとに結びつけ直すようにした。
【００６３】
これにより、１種類の変数７５に対して判定結果に応じて異なるパラメータ８を代入することができ、パラメータ８が異なるために別々の変数７５を宣言した各プログラムを用意する必要はない。すなわち、パラメータ８が異なっていても同一作業内容のプログラムは、１つ用意しておけば十分である。そのため、プログラム作成の手間を省くことができ、ロボット１の製造コストを低減させることができる。
【００６４】
そうすると、複数のポイントに対する作業内容がパラメータを除いて同一の場合、各ポイントステートメント６１には、同一のポイント種別情報６３を選択すればよく、コントローラ３は、各ポイントステートメント６１の実行に際し、同一のサブプログラム７を参照する。従って、ロボット１のティーチング操作を行うユーザにとっても、使用するパラメータ８に応じて使用するサブプログラム７を選択する手間が省け、労力低減となる。
【００６５】
以上、本実施形態では、変数７５はネジ長であり、移動方法命令列７２と移動後作業命令列７４に含まれる例を説明した。本実施形態は、これに限らず、ネジピッチや電動ドライバの回転数等の各種の変数７５に適用可能である。また、本実施形態では、作業ツールをネジ締めの電動ドライバとして説明したが、作業ツール４としては、溶接機、塗装ガン、塗布ニードル、半田ごて、又はハンドラ等の各種が適用可能であり、その作業に応じてサブプログラム７に含まれる変数７５に本発明を適用することができる。
【００６６】
（他の実施形態）
以上のように本発明の実施形態を説明したが、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。そして、この実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【００６７】
例えば、ロボット１に対するプログラミングを直接ロボット１に対して行う例を示したが、これに限らず、ロボット１とは別のコンピュータ等のプログラミングツール３ｄで行うようにし、プログラム類をロボット１にロードするようにしてもよい。
【符号の説明】
【００６８】
１  ロボット
２  移動手段
２１  Ｘリニアスライダ
２２  Ｙリニアスライダ
２３  Ｚリニアスライダ
３  コントローラ
３１  プロセッサ
３２  ストレージ
３３  メモリ
３４  モータドライバ
３５  操作手段
３５１  ティーチングペンダント
３５２  表示部
３ａ  制御部
３ｂ  判定部
３ｃ  変更部
３ｄ  プログラミングツール
４  作業ツール
６  メインプログラム
６１  ポイントステートメント
６２  ポイント番号
６３  ポイント種別情報
６４  ポイント座標情報
６５  パラメータ番号
７  サブプログラム
７１  ポイント識別情報
７２  移動方法命令列
７３  移動前作業命令列
７４  移動後作業命令列
７５  変数
８  パラメータ
【図１】
0006585393.tif 000002
【図２】
0006585393.tif 000003
【図３】
0006585393.tif 000004
【図４】
0006585393.tif 000005
【図５】
0006585393.tif 000006
【図６】
0006585393.tif 000007
【図７】
0006585393.tif 000008
【図８】
0006585393.tif 000009
【図９】
0006585393.tif 000010
【図１０】
0006585393.tif 000011
【図１１】
0006585393.tif 000012
【図１２】
0006585393.tif 000013
【図１３】
0006585393.tif 000014