多台機器人傳送帶

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