多机器人传送带

Epson RC+支持多条逻辑传送带和多个机器人。您可以将多个机器人与一条传送带同用,或者将多个机器人与多条传送带同用。

本节将介绍采用两个或多个机器人与一条传送带的传送带系统以及采用一个机器人与两条或多条传送带的传送带系统。

有关多个机器人的支持机型,请参阅以下手册。

《机器人控制器手册》

多机器人传送带

这种多机器人系统采用两个或多个机器人与一条传送带,如下所示。在该系统中,第二个机器人(下游)会拾取第一个机器人(上游)未拾取的工件。

尽管系统采用多个机器人,但只采用一个相机(传感器)、编码器和传送带。

如何使用多机器人传送带

若要使用多机器人传送带,需设置上游和下游传送带。有关多机器人传送带的使用说明如下。

  1. 请参阅以下内容,然后创建传送带1和传送带2。(将上游侧机器人设为传送带1。)

    在项目中创建传送带

  2. [编码器]和[视觉序列],应为传送带1和2设置相同的编号和序列。

  3. 校准传送带1。

  4. 参考以下某项,进行动作确认。

  5. 将[下游传送带]设为“2”。

  6. 校准传送带2。

  7. 检查传送带2的操作。

    1. 清除所有注册到传送带上的队列数据。

      >Cnv_QueRemove 1,all
      >Cnv_QueRemove 2,all
      
    2. 将工件放在视觉搜索区域。

    3. 执行程序“ScanConveyorStrobed(ScanConveyor)”,注册一个队列。

    4. 暂停程序“ScanConveyorStrobed”,并移动传送带,直到工件进入拾取区域。

    5. 停止程序“ScanConveyorStrobed”,并移动传送带,直到工件进入传送带2的拾取区域。

    6. 执行以下命令,将队列从传送带1移至传送带2。

      >Cnv_QueMove 1,0
      
    7. 拾取工件。

      >Jump Cnv_Queget(2)
      
    8. 检查机器人夹具末端是否位于工件中心上方。如果机器人夹具末端未位于工件上方,则重新执行校准。

    9. 移动传送带并检查机器人是否跟踪此工件。此时,夹具末端将偏离工件中心,但这不会产生任何问题。

    10. 停止跟踪动作。

     ```
     >Cnv_AbortTrack
     ```
    
  8. 以下是一个程序示例。

Function main
  Xqt ScanConveyorStrobed '注册队列的任务
  Xqt PickParts1 '上游机器人跟踪工件(序列)的任务
  Xqt PickParts2 '下游机器人跟踪工件(序列)的任务
Fend

Function ScanConveyorStrobed
  Integer i, numFound, state, trigger
  Real x, y, u
  Boolean found

  trigger = 10 '分配控制器I/O的pin10
  Off trigger '关闭相机快门和编码器闩锁的I/O
  Do

    '拍摄传送带上的工件
    VRun FindParts
    On trigger ' 打开相机快门和编码器闩锁的I/O
    Do
      VGet FindParts.AcquireState, state
    Loop Until state = 3
    VGet FindParts.Parts.NumberFound, numFound
    '将拍摄到的工件注册到传送带1的队列中
    For i = 1 To numFound
      VGet FindParts.Parts.CameraXYU(i), found, x, y, u
      Cnv_QueAdd 1, Cnv_Point(1, x, y)
    Next i
    Off trigger '关闭相机快门和编码器闩锁的I/O
    Wait 0.1
  Loop
Fend

Function PickParts1
  OnErr GoTo ErrHandler
  Integer ErrNum

  Robot 1
  Motor On
  Power High
  Speed 30
  Accel 30, 30

  Jump P1

 WaitParts:
  Do
    '拾取区域内无工件(队列)时移动到备用位置
    Wait Cnv_QueLen(1, CNV_QUELEN_PICKUPAREA) > 0

    '开始跟踪
    '使用6轴机器人时
     Jump3 Cnv_QueGet(1):Z(0):U(90):V(0):W(180)
    '使用SCARA机器人时
    Jump Cnv_QueGet(1)
    Wait .1 '仅Wait时间,机器人以与传送带相同的速度移动
    Jump P1 '移动到指定的位置
    '清除跟踪的工件(队列)
    Cnv_QueMove 1, 0
  Loop
  ' 将传送带1的拾取区域下游侧的工件(队列)移至传送带2
  ErrHandler:
    ErrNum = Err
    If ErrNum = 4406 Then
      Cnv_QueRemove 1, 0
      EResume WaitParts
      '当发生传送带跟踪动作范围以外的错误时
      '显示该错误
    Else
      Print "Error!"
      Print "No.", Err, ":", ErrMsg$(Err, 1)
      Print "Line :", Erl(0)
      '发生用户错误
      Error 8000
    EndIf
Fend

Function PickParts2
  OnErr GoTo ErrHandler
  Integer ErrNum

  Robot 2
  Motor On
  Power High
  LoadPoints "robot2.pts"
  Speed 30
  Accel 30, 30

  Go P1

  WaitParts:
  Do
    '拾取区域内无工件(队列)时移动到备用位置
    Wait Cnv_QueLen(2, CNV_QUELEN_PICKUPAREA) > 0
    '开始跟踪
    '使用6轴机器人时
    Jump3 Cnv_QueGet(2):Z(0):U(90):V(0):W(180)
    '使用SCARA机器人时
    Jump Cnv_QueGet(2)
    Wait .1 '仅Wait时间,机器人以与传送带相同的速度移动
    Jump P2 '移动到指定的位置
    '清除跟踪的工件(队列)
    Cnv_QueRemove 2, 0
  Loop

  '清除跟踪的工件(队列)

  '清除传送带2的拾取区域下游侧的工件(队列)
  '自动从“指定队列数据超出设置范围”错误中恢复
  ErrHandler:
  ErrNum = Err
  If ErrNum = 4406 Then
    Cnv_QueRemove 2, 0
    EResume WaitParts
    '显示“指定队列数据超出设置范围”以外的错误
    
  Else
    Print "Error!"
    Print "No.", Err, ":", ErrMsg$(Err, 1)
    Print "Line :", Erl(0)
    '发生用户错误
    Error 8000
  EndIf
Fend