機器人1台 - 多種零件
程式範例 2.1
範例類型:
機器人1台與多種零件 - 機器人動作的視覺與振動平行處理
配置
- 機器人數量:1
- 送料器數量:1
- 送料器上的零件種類數:2
- 放置位置數量:1
- 攝影機的朝向:朝下固定的攝影機
描述
有2種零件(實體不同)。機器人連續取放2個零件#1,然後取放1個零件#2。通過交替執行「PF_ActivePart」來實現這樣的動作。在此應用中,拾取順序很重要(例如:零件組裝的情況)。當最後一個零件放置後,「PF_ActivePart」會被更改,以供應所需的零件,並向系統發送振動信號,必要時取得影像。這在機器人動作(在移動到「放置」位置的路徑達到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