ID : 163
Arrive
機能
現在動作中の動作命令が、指定した動作完了割合に達するまで、タスクを待機します。
解説
自タスクの動作命令実行中にArrive命令が実行されると、現在位置(エンコーダ値)が設定した動作割合に到達するまで、プログラムを待機させます。
用例のように、Nextオプション付きの動作命令の後に、Arriveコマンドを記述することにより、次コマンドの実行タイミングを指定できます。
ロボット軸の制御権の取得が必要です。
関連項目
注意事項
- Arrive命令で待機中に、割り込みスキップ機能(Interrupt)でスキップした場合は、動作命令は完了したものとしてタスクの待機を解除します。
- Arriveは最後に発行した動作命令の状態を監視します。2行同じ動作命令を記述すると、1行だけの場合と異なる動作になります。
Case 1では、Arriveは、(1)の動作命令の状態を監視します。(1)の動作が90%完了したタイミングでArriveの次の行が処理されます。' Case 1 Move P, @0 J(0, 45, 90, 0, 45, 0) Move P, @P J(0, 45, 90, 0, 45, 90), Next ' (1) Arrive 90
Case 2では、Arriveは、(3)の動作命令の状態を監視します。本来なら、(3)の動作が90%完了したタイミングでArriveの次の行が処理されます。しかし、(3)の動作は実行時にすでに完了している(動かない)ため、Arriveは実行時にすでに条件を満たしており、すぐにArriveの次の行が処理されます。' Case 2 Move P, @0 J(0, 45, 90, 0, 45, 0) Move P, @P J(0, 45, 90, 0, 45, 90), Next ' (2) Move P, @P J(0, 45, 90, 0, 45, 90), Next ' (3) Arrive 90
一方、(2)の動作命令はパス動作のため、(2)から(3)へのパス動作が開始したタイミングで、(3)の動作が開始します。
つまり、Arriveの次の行が処理されるのは、(2)の動作が90%完了したタイミング(Case 1と同じ位置)ではなく、(2)から(3)へのパス動作が開始したタイミングとなります。 - 「Arrive 動作割合」と「WaitMotion 0, 動作割合」は同じ処理を行います。
用例
'!TITLE "プログラムの待機"
' 指定した動作割合になるまでプログラムを待機
Sub Sample_Arrive
TakeArm Keep = 1
Dim aaa As Position
' 現在位置を取得
aaa = CurPos
' 内部速度を10に設定
Speed 10
' 現在位置からP( 400, 300, 300, 180, 0, 180, -1 )へ移動開始後、次の処理へ移動
Move P, P( 400, 300, 300, 180, 0, 180, -1 ), Next
Arrive 50
' 動作割合が50%になったらI/Oポート番号240をON
Set IO[240]
' メッセージ出力ウィンドウにONを示す"1"を表示
PrintDbg IO[240]
Arrive 80
' 動作割合が80%になったらI/Oポート番号240をOFF
Reset IO[240]
' メッセージ出力ウィンドウにOFFを示す"0"を表示
PrintDbg IO[240]
End Sub
ID : 163