AbortMotion

動作命令を中断し動作を実行していたタスクをエラーにします。

本命令は上級者向けの命令です。命令の仕様を十分理解したうえで使用してください。

書式
AbortMotion { ロボット番号 | All }​

パラメーター

ロボット番号
動作を中断するロボット番号を指定します。
All
すべてのロボットの動作を中断します。

解説
AbortMotionを実行したときのロボットの状態により、次のようになります。

いずれの場合も処理を継続するには、OnErrでエラーをフックして、エラー処理を記述する必要があります。

エラー2999は、定数ERROR_DOINGMOTIONを使用することができます。

エラー2998は、定数ERROR_NOMOTIONを使用することができます。

継続実行 (Cont)を実行する前に、2回以上AbortMotionを実行しないようにプログラムを作成してください。

  • ロボットが動作命令を実行中の場合

    ロボットはアーム動作を直ちに一時停止 (クイックポーズ)し、残りの動作を破棄します。

    ロボットに対して動作命令を実行していたタスクでエラー2999 (ERROR_DOINGMOTION)が発生します。

    次の動作命令は、一時停止した位置から直接次の目標位置へ動作します。

  • ロボットが一時停止 (クイックポーズ)中の場合

    AbortMotionを実行した時点では何も発生しませんが、内部的には残りの動作が破棄されます。

    継続実行 (Cont)を指示した時点で、ロボットに対して動作命令を実行していたタスクで、エラー2999 (ERROR_DOINGMOTION)が発生します。

    次の動作命令は、一時停止していた位置から直接次の目標位置へ動作します。

  • ロボットがWaitRecover状態 (安全扉開状態)の場合

    AbortMotionを実行した時点では何も発生しませんが、内部的には残りの動作が破棄されます。

    その先の動作はRecoverコマンドのフラグにより選択可能です。

    • "Recover ロボット番号, WithMove" を実行するとロボットの励磁が回復し、復帰動作を実行します。継続実行 (Cont)を指示した時点で、ロボットに対して動作命令を実行していたタスクでエラー2999 (ERROR_DOINGMOTION)が発生します。次の動作命令は、復帰動作が完了した位置から直接次の目標位置へ動作します。
    • "Recover ロボット番号, WithoutMove" を実行するとロボットの励磁が回復します。継続実行 (Cont)を指示した時点で、ロボットに対して動作命令を実行していたタスクでエラー2999 (ERROR_DOINGMOTION)が発生します。次の動作命令は、励磁が回復した位置から直接次の目標位置へ動作します。 (復帰動作がありません。)
  • ロボットが動作命令以外の命令を実行中の場合

    直前にロボットに対して動作命令を実行していたタスクでエラー2998 (ERROR_NOMOTION)が発生します。タスクがWait やInput コマンドによる待機中の場合、即座に中断しエラー2998になります。

    CP Onの設定で動作命令を実行し、動作命令からプログラムが抜けている場合は、ロボットが動作中でもエラー2998が発生します。

  • 指定したロボットが、プログラム (タスク)から動作していない場合

    エラーとなります。

注意


  • 使用可能なコントローラーについて

    T/VTシリーズでは使用できません。


参照
OnErr, Recover, Till

AbortMotion使用例
メモリーI/Oの0番がOnするとAbortMotionが実行され、Home位置へロボットが移動します。

Function main
  Motor On
  Xqt sub, NoEmgAbort
  OnErr GoTo errhandle

  Go P0
  Wait Sw(1)
  Go P1

  Quit sub
  Exit Function

errstart:
  Home
  Quit sub
  Exit Function

errhandle:
  Print Err
  If Err = ERROR_DOINGMOTION Then
    Print "ロボット動作中"    'Go P0や Go P1を実行中
    EResume errstart
  ElseIf Err = ERROR_NOMOTION Then
    Print "ロボット非動作中"    'Wait Sw(1) を実行中
    EResume errstart
  EndIf

  Print "Error Stop"    'その他のエラー発生
  Quit All
Fend

Function sub
  MemOff 0
  Wait MemSw(0)
  AbortMotion 1
  MemOff 0
Fend