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シリーズでは使用できません。
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