Plusieurs pièces pour un robot
Exemple de programme 2.1
Type d’exemple :
1 robot et plusieurs pièces - Traitement parallèle de vision et des vibrations avec des mouvements du robot
Configuration
- Nombre de robots : 1
- Nombre de distributeurs : 1
- Nombre de types de pièces sur le distributeur : 2
- Nombre de positionnements : 1
- Orientation de la caméra : caméra fixe et orientée vers le bas
Description
Il y a deux pièces uniques (physiquement différentes). Le robot prélèvera et positionnera en continu deux pièces n° 1, puis prélèvera et positionnera une pièce n° 2. Cela s’effectue en alternant « PF_ActivePart ». Dans cette application, l’ordre de prélèvement compte (par exemple, dans le cas d’un ensemble de pièces). Une fois la dernière pièce positionnée, la fonction « PF_ActivePart » est modifiée afin d’alimenter la pièce souhaitée et d’indiquer au système de déclencher les vibrations et d’acquérir des images si nécessaire. Cette opération s’effectue en parallèle avec le mouvement du robot (à 30 % du trajet jusqu’à la position « finale »).
Exemple de code
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