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 0
    MOVE P, P0
    TAKEARM 0
    'グループ0取得後でも、グループ0は再取得可能。
    TAKEARM 1
    'グループ0取得後に、グループ1を取得しているので
    'エラー

  • TAKEARMのKEEPオプションを1にしてグループを取得した場合は、速度は初期化されず、以前のアームグループの速度で動作します。
    例:次のようなアームグループが設定されており、下記の3つのプログラムがある場合。
    PROGRAM PRO1
    PROGRAM PRO2
    PROGRAM PRO3
    TAKEARM 1
    TAKEARM 2
    TAKEARM 1 keep=1
    SPEED 10
    SPEED 20
    DRIVE(7,10)
    DRIVE(7,10)
    DRIVE(7,10)
    END
    END
    END

    まず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