1台机器人 - 多部件
程序示例 2.1
示例类型:
通过1台机器人与多部件-机器人运作,进行视觉系统与振动的并行处理
构成
- 机器人数量:1
- 送料器数量:1
- 送料器上的部件类型数量:2
- 配置位置数量:1
- 相机的方向:固定向下相机
描述
包括2种部件(物理方面存在差异)。机器人连续拾取&放置2个部件#1,然后拾取&放置1个部件#2。这是通过交互执行“PF_ActivePart”来实现的。在该应用中,拾取顺序非常重要(例:装入部件时)。如果配置好最后的部件,“PF_ActivePart”则会被更改,供给预期的部件,并向系统发送振动信号,最后根据需要获取图像。这是通过并行进行机器人运作(达到“place”前的移动路径的30%位置时)来实现的。
样本代码
Main.prg
Function Main
Integer numToPick1, numToPick2, i
Robot 1
Motor On
Power High
Speed 50
Accel 50, 50
Jump Park
MemOff PartsToPick1
MemOff PartsToPick2
numToPick1 = 2
numToPick2 = 1
PF_Start 1, 2
Do
i = 0
Do
Wait MemSw(PartsToPick1) = On
P0 = PF_QueGet(1)
PF_QueRemove (1)
Jump P0 /R
On Gripper
Wait 0.25
i = i + 1
If i < numToPick1 And PF_QueLen(1) > 0 Then
Jump Place
Else
'Last part or no more parts available to pick
If i = numToPick1 Then
PF_ActivePart 2
EndIf
Jump Place ! D30; MemOff PartsToPick1 !
EndIf
Off Gripper
Wait 0.25
Loop Until i = numToPick1
i = 0
Do
Wait MemSw(PartsToPick2) = On
P0 = PF_QueGet(2)
PF_QueRemove (2)
Jump P0 /R
On Gripper
Wait 0.25
i = i + 1
If i < numToPick2 And PF_QueLen(2) > 0 Then
Jump Place
Else
'Last part or no more parts available to pick
If i = numToPick2 Then
PF_ActivePart 1
EndIf
Jump Place ! D30; MemOff PartsToPick2 !
EndIf
Off Gripper
Wait 0.25
Loop Until i = numToPick2
Loop
Fend
PartFeeding.prg
Function PF_Robot(PartID As Integer) As Integer
Select PartID
Case 1
MemOn PartsToPick1
Wait MemSw(PartsToPick1) = Off
Case 2
MemOn PartsToPick2
Wait MemSw(PartsToPick2) = Off
Send
PF_Robot = PF_CALLBACK_SUCCESS
Fend