多条传送带
Epson RC+支持多条逻辑传送带和多个机器人。您可以将多个机器人与一条传送带同用。
本节描述了使用一个机器人和两条或多条传送带的传送带系统。
多条传送带的传送带跟踪
本节介绍的传送带系统中,一个机器人从传送带1上拾起“工件1”,并将拾取的工件放在传送带2上的“工件2”上方,如下图所示。在这种传送带系统中,每条传送带需要一个编码器和相机(传感器)。
如何使用多条传送带
使用方法如下所述。
请参阅以下内容,然后创建传送带1和传送带2。(将机器人设在传送带1的上游侧。)
[编码器]和[视觉序列]应为传送带1和2设置不同的编号和序列。
校准传送带1。
参考以下某项,进行动作确认。
校准传送带2。
检查传送带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