<< 向前        下一页 >>

ID : 5104

WaitMotion

功能

任务待机直至当前动作进行中的动作命令达到指定状态。

格式

WaitMotion 模式[,] )

指定项目

模式
通过整数型数据指定条件编码。
通过整数型数据指定模式中设定的条件值。模式的值为5或6时无需指定。
模式
编码 含义
0 通过当前位置(编码器值)判定动作比例[%]。 0~100%
1 通过当前位置(编码器值)判定动作开始起的距离指定[mm]。  
2 通过当前位置(编码器值)判定至动作结束的距离指定[mm]。  
3 通过指令值判定动作开始起的移动时间指定[ms]。  
4 通过指令值判定离动作结束的移动时间指定[ms]。  
5 通过、指令值判定加速结束。 不需要
6 通过、指令值判定减速结束。 不需要

返回值

通过整数型数据返回状态。

0 异常
-1 正常
-2
  1. 之前无动作命令时
  2. 动作命令中未附加Next选项时
  3. 在模式1、2下位置成分未移动时(手臂前端在同一位置仅变换姿势时等)
  4. 执行WaitMotion时已满足条件时
-3
  1. 在模式1下指定的距离大于总移动距离时
  2. 在模式3下指定的时间大于总移动时间时

解说

  • 如果在执行自动任务的动作命令过程中执行WaitMotion指令,则等待非动作命令开始执行直至动作命令到达指定状态。例如,可以采取在动作完成前输出IO的方法,以进行动作完成后的准备作业。
  • 解除各模式下任务待机的时机如下所示。在时机(A)解除任务待机,执行非动作命令。
    模式 无瞬时停止 有瞬时停止
    0

    如果从动作开始点开始的动作量达到指定比例,则解除任务待机。

    1 如果距动作开始点的动作距离达到指定距离(mm),则解除任务待机。

    2 如果距动作结束点的动作距离达到指定距离(mm),则解除任务待机。
    3 如果从动作开始点开始的动作时间达到指定时间(ms),则解除任务待机。 如果从动作开始点开始的动作时间(停止的时间除外)达到指定时间(ms),则解除任务待机。
    4 如果从动作结束点开始的动作时间达到指定时间(ms),则解除任务待机。
    5 在加速结束时解除任务待机。 增加瞬时停止指令,在减速开始时解除任务待机。
    动作指定结束时WaitMotion结束。并且,再次执行动作指令或执行非动作指令时,均不执行WaitMotion。
    6

    在减速开始时解除任务待机。

    增加瞬时停止指令,在减速开始时解除任务待机。
    动作指定结束时WaitMotion结束。并且,再次执行动作指令或执行非动作指令时,均不执行WaitMotion。

相关项目

Arrive

注意事项

  • 在模式1、2下仅可使用CP动作。
  • 最佳速度控制功能模式为2或3(SpeedMode 2 or 3)时,如果将WaitMotion模式指定为3、4(时间指定)或5、6(加速结束、减速开始),则可能错过解除任务待机的时机。
  • 任务待机时,如果其它任务根据MotionSkip或Interrupt执行跳跃,则优先跳跃。
  • WaitMotion监视最后发行的动作命令状态。如果记述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)
     WaitMotion 0, 90
    在Case 1中,WaitMotion监视(1)的动作命令状态。在(1)的动作完成90%时,处理WaitMotion的下一行。
    ' 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)
     WaitMotion 0, 90
    在Case 2中,WaitMotion监视(3)的动作命令状态。原本是在(3)的动作完成90%时处理WaitMotion的下一行。但是,由于(3)的动作在执行时已完成(不动),因此WaitMotion在执行时已经满足条件,立即处理WaitMotion的下一行。
    而由于(2)的动作命令为通过动作,因此在开始从(2)到(3)的通过动作时,(3)的动作就已经开始。
    即处理WaitMotion的下一行并不是在(2)的动作完成90%时(与Case 1相同位置),而是开始从(2)到(3)的通过动作时。
  • “Arrive 动作比例”和“WaitMotion 0, 动作比例”进行相同的处理。

应用示例

'!TITLE "程序待机"
 ' 在达到指定动作比例前程序待机
 Sub Sample_WaitMotion

     TakeArm Keep = 1

     Dim aaa As Position
     Dim bbb As Integer

     ' 获取当前位置
     aaa = CurPos

     ' 将内部速度设定为10
     Speed 10

     ' 从当前位置开始向P( 400, 300, 300, 180, 0, 180, -1 )移动后,移至下一处理
     Move L, P( 400, 300, 300, 180, 0, 180, -1 ), Next

      bbb = WaitMotion(0,50)
     if bbb == -1 then ' 如果动作比例为50%

         ' 将I/O端口编号240置于ON
         Set IO[240]
      ' 在讯息输出视窗中显示表示ON的"1"
         PrintDbg IO[240]
     else ' 如果不正常
         ' 在讯息输出视窗中显示S变量
         PrintDbg S[1]
     end if

 End Sub
 '!TITLE "程序待机"
 ' 加速结束前程序待机
 Sub Sample_WaitMotion

   TakeArm Keep = 1

   Dim aaa As Position

   ' 获取当前位置
   aaa = CurPos

   ' 将内部速度设定为10
   Speed 10

   ' 从当前位置开始向P( 400, 300, 300, 180, 0, 180, -1 )移动后,移至下一处理
   Move L, P( 400, 300, 300, 180, 0, 180, -1 ), Next

   WaitMotion 5

   ' 加速结束后,将I/O端口编号240置于ON
   Set IO[240]

   ' 在讯息输出视窗中显示表示ON的"1"
   PrintDbg IO[240]

 End Sub

ID : 5104

<< 向前        下一页 >>