機器人2台 - 多種零件
程式範例 4.1
範例類型:
機器人2台,送料器1個,多種零件 - 在PF_Robot callback中的動作 - 特定順序拾取
配置
- 機器人數量:2
- 送料器數量:1
- 送料器上的零件種類數:2
- 放置位置數量:2
- 攝影機的朝向:朝下固定的攝影機
描述
有2台機器人和1個送料器。每台機器人拾取具特有特徵(實體不同)的零件。機器人按順序從送料器拾取。在此應用中,拾取順序很重要。
交替的拾取順序通過「PF_ActivePart」執行。機器人動作在PF_Robot回呼內執行。此範例中沒有送料器和機器人動作的平行處理。程式碼簡單但效率不高。
機器人1取放零件#1。機器人2取放零件#2。每台機器人都有標有「park」標籤的點位和標有「place」標籤的點位。
範例程式碼
Main.prg
Function Main
Robot 1
Motor On
Power High
Speed 50
Accel 50, 50
Jump Park
Robot 2
Motor On
Power High
Speed 50
Accel 50, 50
Jump Park
PF_Start 1, 2
Fend
PartFeeding.prg
Function PF_Robot(PartID As Integer) As Integer
If PF_QueLen(PartID) > 0 Then
Select PartID
Case 1
Robot 1
P0 = PF_QueGet(1)
PF_QueRemove (1)
Jump P0 /R
On rbt1Gripper
Wait 0.25
Jump Place
Off rbt1Gripper
Wait 0.25
PF_ActivePart 2
Case 2
Robot 2
P0 = PF_QueGet(2)
PF_QueRemove (2)
Jump P0 /L
On rbt2Gripper
Wait 0.25
Jump Place
Off rbt2Gripper
Wait 0.25
PF_ActivePart 1
Send
EndIf
PF_Robot = PF_CALLBACK_SUCCESS
Fend
程式範例 4.2
範例類型:
機器人2台,送料器1個,多種零件 - 在別的任務中的動作 - 特定順序拾取
配置
- 機器人數量:2
- 送料器數量:1
- 送料器上的零件種類數:2
- 放置位置數量:2
- 攝影機的朝向:朝下固定的攝影機
描述
有2台機器人和1個送料器。每台機器人拾取具特有特徵(實體不同)的零件。機器人按順序從送料器拾取。通過交替執行「PF_ActivePart」來實現這樣的動作。
當1台機器人沒有零件可取時,另一台機器人可以繼續從送料器拾取,直到零件用完。機器人1取放零件#1。機器人2取放零件#2。
每台機器人都有標有「park」標籤的點位和標有「place」標籤的點位。「PF_AccessFeeder」和「PF_ReleaseFeeder」用於防止兩台機器人同時存取送料器。當任一機器人移動到放置位置距離的30%時,另一台機器人可以存取送料器。
範例程式碼
Main.prg
Function Main
Robot 1
Motor On
Power High
Speed 50
Accel 50, 50
Jump Park
Robot 2
Motor On
Power Low
Speed 50
Accel 50, 50
Jump Park
MemOff PartsToPick1
MemOff PartsToPick2
PF_Start 1, 2
Xqt Robot1PickPlace
Xqt Robot2PickPlace
Fend
Function Robot1PickPlace
Robot 1
Do
Wait MemSw(PartsToPick1) = On
PF_AccessFeeder 1
P0 = PF_QueGet(1)
PF_QueRemove (1)
Jump P0 /R
On 5
Wait 0.5
Jump Place ! D30; MemOff PartsToPick1; PF_ReleaseFeeder 1 !
Off 5
Wait 0.25
Loop
Fend
Function Robot2PickPlace
Robot 2
Do
Wait MemSw(PartsToPick2) = On
PF_AccessFeeder 1
P0 = PF_QueGet(2)
PF_QueRemove (2)
Jump P0 /L
On 2
Wait 0.5
Jump Place ! D30; MemOff PartsToPick2; PF_ReleaseFeeder 1 !
Off 2
Wait 0.25
Loop
Fend
PartFeeding.prg
Function PF_Robot(PartID As Integer) As Integer
Select PartID
Case 1
If PF_QueLen(1) > 0 Then
MemOn PartsToPick1
Wait MemSw(PartsToPick1) = Off
PF_ActivePart 2
Else
PF_ActivePart 1
EndIf
Case 2
If PF_QueLen(2) > 0 Then
MemOn PartsToPick2
Wait MemSw(PartsToPick2) = Off
PF_ActivePart 1
Else
PF_ActivePart 2
EndIf
Send
PF_Robot = PF_CALLBACK_SUCCESS
Fend
程式範例 4.3
範例類型:
機器人2台,送料器1個,多種零件 - 在別的任務中的動作 - 特定順序拾取
配置
- 機器人數量:2
- 送料器數量:1
- 送料器上的零件種類數:3
- 放置位置數量:2
- 攝影機的朝向:朝下固定的攝影機
描述
有2台機器人和1個送料器。每台機器人取出不同的零件。
機器人1取放零件1中的一個。
機器人2取放零件4和零件5中的一個。在此應用中,拾取順序很重要。交替的拾取順序通過「PF_ActivePart」執行。機器人動作與送料器振動同時進行。
範例程式碼
Main.prg
Function Main
Robot 1
Motor On
Power High
Speed 50
Accel 50, 50
Jump Park
Robot 2
Motor On
Power High
Speed 50
Accel 50, 50
Jump Park
MemOff PartsToPick1
MemOff PartsToPick4
MemOff PartsToPick5
PF_Start 1, 4, 5
Xqt Robot1PickPlace
Xqt Robot2PickPlace
Fend
Function Robot1PickPlace
Robot 1
Do
Wait MemSw(PartsToPick1) = On
PF_AccessFeeder (1)
P0 = PF_QueGet(1)
PF_QueRemove (1)
Jump P0 /R
On rbt1Gripper; Wait .25
Jump Place ! D30; MemOff PartsToPick1; PF_ReleaseFeeder 1 !
Off rbt1Gripper
Wait 0.25
Loop
Fend
Function Robot2PickPlace
Robot 2
Do
Wait MemSw(PartsToPick4) = On
PF_AccessFeeder (1)
P0 = PF_QueGet(4)
PF_QueRemove (4)
Jump P0 /L
On rbt2Gripper; Wait .25
Jump Place ! D30; MemOff PartsToPick4 !
Off rbt2Gripper; Wait 0.25
Wait MemSw(PartsToPick5) = On
P0 = PF_QueGet(5)
PF_QueRemove (5)
Jump P0 /L
On rbt2Gripper; Wait 0.25
Jump Place ! D30; MemOff PartsToPick5; PF_ReleaseFeeder 1 !
Off rbt2Gripper; Wait 0.25
Loop
Fend
PartFeeding.prg
Function PF_Robot(PartID As Integer) As Integer
Select PartID
Case 1
MemOn PartsToPick1
Wait MemSw(PartsToPick1) = Off
PF_ActivePart 4
Case 4
MemOn PartsToPick4
Wait MemSw(PartsToPick4) = Off
PF_ActivePart 5
Case 5
MemOn PartsToPick5
Wait MemSw(PartsToPick5) = Off
PF_ActivePart 1
Send
PF_Robot = PF_CALLBACK_SUCCESS
Fend