感測器傳送帶的編程
一般而言,會使用兩個任務來操作感測器傳送帶。一個任務會等待工件以跳脫感測器,並添加至傳送帶佇列。另一個任務會在傳送帶佇列的拾取區域中檢查工件。當工件位於跟蹤開始區域內時,系統會命令機器人拾取工件。之後再將拾取的工件放置到指定位置。
範本程式則是採用在機器人跟蹤到位於跟蹤開始區域外的工件時仍會自動恢復的規格。
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