ロボット1台 - マルチパーツ
プログラム例 2.1
例タイプ:
ロボット1台と マルチパーツ-ロボット動作によるビジョンと振動の並列処理
構成
- ロボットの数:1
- フィーダーの数:1
- フィーダー上のパーツの種類数:2
- 配置場所の数:1
- カメラの向き:固定下向きカメラ
解説
2種類のパーツ(物理的に異なる)があります。ロボットは、パーツ #1の2つを連続してピック&プレースし、次にパーツ #2の1つをピック&プレースします。これは、“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