<< 前へ        次へ >>

ID : 163

Arrive

機能

現在動作中の動作命令が、指定した動作完了割合に達するまで、タスクを待機します。

構文

Arrive 動作割合

指定項目

動作割合
動作割合を単精度実数型データで指定します。動作距離に対する割合を 0<動作割合<=100 の範囲で指定します。単位は"%"です。

解説

自タスクの動作命令実行中にArrive命令が実行されると、現在位置(エンコーダ値)が設定した動作割合に到達するまで、プログラムを待機させます。
用例のように、Nextオプション付きの動作命令の後に、Arriveコマンドを記述することにより、次コマンドの実行タイミングを指定できます。
ロボット軸の制御権の取得が必要です。

注意事項

  • Arrive命令で待機中に、割り込みスキップ機能(Interrupt)でスキップした場合は、動作命令は完了したものとしてタスクの待機を解除します。
  • Arriveは最後に発行した動作命令の状態を監視します。2行同じ動作命令を記述すると、1行だけの場合と異なる動作になります。
    ' 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 1では、Arriveは、(1)の動作命令の状態を監視します。(1)の動作が90%完了したタイミングで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
    Case 2では、Arriveは、(3)の動作命令の状態を監視します。本来なら、(3)の動作が90%完了したタイミングでArriveの次の行が処理されます。しかし、(3)の動作は実行時にすでに完了している(動かない)ため、Arriveは実行時にすでに条件を満たしており、すぐにArriveの次の行が処理されます。
    一方、(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

<< 前へ        次へ >>