TAKEARM
(ステートメント)

アームグループを取得します。アームグループNOを省略した場合、アームグループ0(ロボットのみ)の制御権を取得します。
取得時、内部速度・加速度・減速度を100に設定します。
取得するアームグループがロボット軸を含む場合は、ツール座標、ワーク座標を原点に戻します。

TAKEARM[<アームグループNO>][<KEEP=初期化設定値>]

制御権をすでに持っているタスク、あるいはそのタスクから呼ばれたサブルーチンの中でTAKEARMコマンドを実行した場合には、そのまま処理を続行します。
<アームグループNO> [V1.5以降]
アームグループを取得します。アームグループNOを省略した場合、アーム
グループ0(ロボットのみ)の制御権を取得します。
<KEEP = 初期化設定値> [V1.4以降]
初期化設定値 0:ツール座標、ワーク座標を原点に戻し、内部速度、加速度、
減速度を100に設定します。
初期化設定値
1:ツール座標、ワーク座標、内部速度、加速度、減速度を
現在設定されている値のままにします。
<KEEP = 初期化設定値>省略時はKEEP = 0(ツール座標、ワーク座標を原点に戻し、
内部速度、加速度、減速度を100)に設定します。
(1)アームグループ0(ロボットのみ)の場合の説明
ロボット制御権を取得していないタスクが、下表のロボット動作命令を実行しようとした場合は、エラーとなります。これらの動作命令を実行するプログラムでは、必ずTAKEARMコマンドで、制御権を取得してください。
制御権を必要とするロボット動作命令
種 類
|
コマンド
|
---|---|
宣言文
|
HOME, TOOL, WORK
|
ロボット制御文
|
APPROACH, DEPART, DRAW, DRIVE, DRIVEA, GOHOME, MOVE, ROTATEH, ROTATE, SPEED, JSPEED, ACCEL, JACCEL, DECEL, JDECEL, CHANGETOOL, CHANGEWORK, LETENV,
最適可搬質量設定ライブラリ、アーム動作ライブラリ
|

-
次の場合には、自動的にロボット制御権を解放します。
-
ENDコマンドを実行した場合(呼び出したプログラムの最後にあるENDコマンドは除く)
-
KILLコマンドを実行した場合
-
HALTコマンドを実行した場合
-
STOPコマンドを実行した場合
-
ティーチングペンダントまたはI/Oによって、ロボットコントローラが初期化された場合
-
TAKEARMコマンドを実行すると、次の処理が自動的に実行されます。
-
TOOL定義をTOOL0に初期化、ワーク座標をロボットのベース座標に設定
-
内部速度、内部加速度、内部減速度を100に設定
-
プログラム一時停止中は解放しません。
(2)付加軸関連の説明
アームグループを取得していないタスクが、下表の動作命令を実行しようとした場合、エラーとなります。これらの動作命令を実行する場合は、必ずTAKEARMコマンドで制御権を取得してください。
アームグループを必要とするコマンド
コマンド
|
必要なアームグループ
|
---|---|
HOME、TOOL、WORK、APPROACH、DEPART、DRAW、GOHOME、MOVE、ROTATEH、ROTATE、CHANGETOOL、CHANGEWORK、DRIVE、DRIVEA、SPEED、JSPEED、ACCEL、JACCEL、DECEL、JDECEL、INTERRUPT、LETENV、最適可搬質量設定ライブラリ、アーム動作ライブラリ
|
ロボット軸を含むアームグループが必要
|
DRIVE、DRIVEA、SPEED、JSPEED、ACCEL、JACCEL、DECEL、JDECEL、INTERRUPT、LETENV、POSCLR
|
アームグループが必要(ロボット軸を含まなくてもよい)
|

-
DRIVE、DRIVEAは、動作させる軸を含むアームグループが必要です。例 DRIVE(7、10)7軸を動かすには、7軸を含むアームグループの取得が必要。
-
MOVE命令のEX(EXA)オプションを使う場合は、ロボット軸とEX(EXA)で動かす付加軸を含むアームグループの取得が必要です。例 MOVE P,P0 EX((7,10))この場合、ロボット軸と7軸を含むアームグループの取得が必要です。
-
速度設定のコマンドは、現在取得しているアームグループの軸のみ変更します。
-
LETENV命令は、変更するパラメータが影響する軸を含むアームグループの取得が必要です。

-
一つのプログラムで2つのグループを取得することはできません。ただし同じアームグループの場合は再取得することができます。例:TAKEARM 0MOVE P, P0TAKEARM 0'グループ0取得後でも、グループ0は再取得可能。TAKEARM 1'グループ0取得後に、グループ1を取得しているので'エラー
-
TAKEARMのKEEPオプションを1にしてグループを取得した場合は、速度は初期化されず、以前のアームグループの速度で動作します。例:次のようなアームグループが設定されており、下記の3つのプログラムがある場合。PROGRAM PRO1PROGRAM PRO2PROGRAM PRO3TAKEARM 1TAKEARM 2TAKEARM 1 keep=1SPEED 10SPEED 20DRIVE(7,10)DRIVE(7,10)DRIVE(7,10)ENDENDEND
まずPRO1を動作させます。7軸は速度10で動きます。次にPRO2を動作させます。7軸は速度20で動きます。最後にPRO3を動作させた場合、KEEP初期化設定値が1であるので、7軸は以前のアームグループ1の速度10で動きます。

例1:
PROGRAM PRO1
|
'
|
TAKEARM
|
'ロボット動作を行うプログラムの先頭でTAKEARMを
'実行します。
|
MOVE P, P1
|
|
MOVE P, P2
|
|
GIVEARM 1
|
'終了時にGIVEARMでロボット制御権を解放します。直
'後のENDで自動的に解放するので、必ずしも実行する
'必要はありません。
|
END
|
'
|
例2:
PROGRAM PRO2
|
'
|
MOVE P, P3
|
'×:TAKEARMを実行せずにMOVE命令を実行すると
'エラーになります。
|
END
|
'
|
例3:
PROGRAM PRO3
|
'
|
TAKEARM
|
'
|
MOVE P, P4
|
'
|
CALL SUB1
|
'
|
END
|
'
|
PROGRAM SUB1
|
'
|
MOVE P, P5
|
'PRO3でTAKEARM実行済みなので、エラーになりません。
|
END
|
'
|
例4:
PROGRAM PRO4
|
'
|
TAKEARM
|
'
|
SPEED 50
|
'
|
CHANGEWORK 3
|
'
|
CHANGETOOL 1
|
'
|
MOVE P, P5
|
'
|
CALL PRO5
|
'
|
END
|
'
|
PROGRAM PRO5
|
'
|
TAKEARM
|
'PRO4のサブルーチンとして呼ばれているので、PRO4
'と重複してTAKEARMしてもエラーになりません。
|
MOVE P, P6
|
'ただし、ツール座標、ワーク座標は0、内部速度は100
'になります。
|
END
|
'
|
例5:
PROGRAM PRO6
|
'
|
TAKEARM
|
'
|
RUN PRO7
|
'
|
MOVE P, P7
|
'
|
END
|
'
|
PROGRAM PRO7
|
'
|
TAKEARM
|
'×:すでにロボット制御権を持つPRO6とは別のタス
'クとして起動されたPRO7で、ロボット実行権を取得
'しようとすると、エラーになります。
|
MOVE P, P7
|
'
|
END
|
'
|
例6:付加軸有りの例
次のようなアームグループが設定されている場合のプログラム例。(4軸ロボットの例)

PROGRAM PRO1
|
|
TAKEARM 1
|
'アームグループ1を取得。(7軸を含むアームグループ)
|
DRIVEA(7,100)
|
'7軸を100度の位置へ動かします。
|
END
|
|
|
|
PROGRAM PRO2
|
|
TAKEARM 2
|
'アームグループ2を取得。(ロボット軸、7軸を含むアーム
'グループ)
|
MOVE P,P0 EX((7,10))
|
'ロボット軸と付加軸を同時に動作させます。
|
DRIVEA(7,100)
|
'7軸を100度の位置へ動かします。
|
END
|
|