感測器傳送帶的編程

一般而言,會使用兩個任務來操作感測器傳送帶。一個任務會等待工件以跳脫感測器,並添加至傳送帶佇列。另一個任務會在傳送帶佇列的拾取區域中檢查工件。當工件位於跟蹤開始區域內時,系統會命令機器人拾取工件。之後再將拾取的工件放置到指定位置。

範本程式則是採用在機器人跟蹤到位於跟蹤開始區域外的工件時仍會自動恢復的規格。

Function main
  Motor On
  Power High

  Speed 30
  Accel 30, 30

  Xqt ScanConveyor               '註冊佇列的任務
  Xqt PickParts                  '跟蹤工件(佇列)的任務
Fend

Function ScanConveyor
  Double lpulse1                 '上一個閂鎖脈衝
    lpulse1 = Cnv_LPulse(1)      '將閂鎖脈衝註冊為lpulse1
    Do
      '工件通過感測器時才會註冊為佇列
      If lpulse1 <> Cnv_LPulse(1) Then
        Cnv_QueAdd 1, Cnv_Point(1, 0, 0)
        lpulse1 = Cnv_LPulse(1)  '更新lpulse1
      EndIf
    Loop
Fend

Function PickParts
  OnErr GoTo ErrHandler
  Integer ErrNum
  Cnv_Mode 1,1                   '選擇跟蹤模式
  WaitParts:
  Do
    '等待直到工件(佇列)進入拾取區域
    Wait Cnv_QueLen(1, CNV_QUELEN_PICKUPAREA) > 0
    '開始跟蹤工件
    '使用 SCARA 機器人時
    Jump Cnv_QueGet(1)
    Wait 0.1                     '僅Wait時間,機器人以與傳送帶相同的速度移動
    Jump P1                      '移至指定位置
    Cnv_QueRemove 1, 0           '清除拾取的工件(佇列)
  Loop
  '清除拾取區域下游端的工件(佇列)
  '自動從以下錯誤恢復'「指定佇列資料位於設定區域外」
  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