多傳送帶

Epson RC+支援多邏輯傳送帶與機器人。您可在一條傳送帶上使用多台機器人。

本節對一台機器人搭配兩條或多條傳送帶的傳送帶系統進行說明。

多傳送帶的傳送帶追蹤

本節說明傳送帶系統,其中一台機器人從傳送帶1拾取「工件1」,並將拾取的工件放置在傳送帶2的「工件2」之上,如下圖所示。在此傳送帶系統中,每條傳送帶都需要一個編碼器與攝影機(感測器)。

如何使用多傳送帶

使用方式如下。

  1. 請參閱以下內容,並創建傳送帶1和傳送帶2。(將上游端的機器人設為傳送帶1。)

    在專案中創建傳送帶

  2. 在[編碼器]和[視覺序列]中,針對傳送帶1和2設置不同的編碼器編號及序列。

  3. 校準傳送帶1。

  4. 請參閱以下任一內容,並檢查傳送帶操作。

  5. 校準傳送帶2。

  6. 檢查傳送帶2的操作。

以下為範例程式。

機器跟蹤位於跟蹤區域外的工件時,會自動恢復範例程式。

Function main
  Motor On
  Power High

  Speed 30
  Accel 30, 30

  Xqt ScanConveyorStrobed '註冊佇列的任務
  Xqt PickParts '跟蹤工件(佇列)的任務
Fend
Function ScanConveyorStrobed
  Integer i, j, numFound, state, trigger1, trigger2
  Real x, y, u
  Boolean found

  trigger1 = 10 			'將控制器I/O的pin10分配給傳送帶1
  trigger2 = 11 '將控制器I/O的pin11分配給傳送帶2
  Off trigger1; Off trigger2
  '關閉攝影機觸發器和編碼器閂鎖I/O
  Do
    VRun FindParts1	'傳送帶上的工件成像
    On trigger1 '開啟攝影機觸發器和編碼器閂鎖I/O
    Do
      VGet FindParts1.AcquireState, state
    Loop Until state = 3
    VGet FindParts1.Parts.NumberFound, numFound
    '將已拍攝的工件註冊為佇列
    For i = 1 To numFound
      VGet FindParts1.Parts.CameraXYU(i), found, x, y, u
      Cnv_QueAdd 1, Cnv_Point(1, x, y)
    Next i
    Off trigger1 '關閉攝影機觸發器和編碼器閂鎖I/O
    Wait 0.1

    '註冊傳送帶2的工件(佇列)
    '搜尋傳送帶上的工件
    VRun FindParts2
    On trigger2 '開啟攝影機觸發器和編碼器閂鎖I/O
    Do
      VGet FindParts2.AcquireState, state
    Loop Until state = 3
    VGet FindParts2.Parts.NumberFound, numFound
    '將已拍攝的工件註冊為佇列
    For j = 1 To numFound
      VGet FindParts2.Parts.CameraXYU(j), found, x, y, u
      Cnv_QueAdd 2, Cnv_Point(2, x, y)
    Next j
    Off trigger2 '關閉攝影機觸發器和編碼器閂鎖I/O
    Wait 0.1
  Loop
Fend
Function PickParts
  OnErr GoTo ErrHandler
  Integer ErrNum

  MemOff 1; MemOff 2 '關閉記憶體I/O

  Jump P1

  Do
    '傳送帶1跟蹤
    WaitPickup1:
    '於傳送帶1跟蹤階段開始時開啟記憶體I/O
    MemOn 1 '開啟記憶體I/O 1
    '清除下游範圍下游端的工件(佇列)
    Do While Cnv_QueLen(1, CNV_QUELEN_DOWNSTREAM) > 0
      Cnv_QueRemove 1, 0
    Loop
    '拾取區域沒有工件(佇列)時移至待命位置
    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 0.1 '僅Wait時間,機器人以與傳送帶相同的速度移動。
    '清除拾取的工件(佇列)
    Cnv_QueRemove 1, All
    MemOff 1 '關閉記憶體I/O 1

    '傳送帶2跟蹤
    WaitPickup2:
    MemOn 2 '開啟記憶體I/O 2
    '拾取區域沒有工件(佇列)時移至待命位置
    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 0.1 '僅Wait時間,機器人以與傳送帶相同的速度移動。
    Wait 0.1 '僅Wait時間,機器人以與傳送帶相同的速度移動。
    '清除拾取的工件(佇列)
    Cnv_QueRemove 2, All
    MemOff 2 '關閉記憶體I/O 2

    Jump P1
  Loop
  '清除拾取區域下游端的工件(佇列)
  '自動從以下錯誤恢復'「指定佇列資料位於設定區域外」
  ErrHandler:
  ErrNum = Err
  If ErrNum = 4406 Then
    If MemSw(1) = On Then
      Cnv_QueRemove 1
      EResume WaitPickup1
    EndIf
    If MemSw(2) = On Then
      Cnv_QueRemove 2
      EResume WaitPickup2
    EndIf
    '顯示「指定佇列資料位於設定區域外」錯誤之外的錯誤
    '錯誤
  Else
    Print "Error!"
    Print "No.", Err, ":", ErrMsg$(Err, 1)
    Print "Line :", Erl(0)
    '發生使用者錯誤
    Error 8000
  EndIf
Fend