PF_AccessFeeder
L’instruction PF_AccessFeeder verrouille l’accès à un distributeur afin d’éviter tout risque de collision dans un système à plusieurs robots et à un seul distributeur. Cette instruction est nécessaire lorsque deux robots partagent le même distributeur en même temps. PF_AccessFeeder obtient un verrou pour le robot accédant au distributeur.
Lorsque le verrou a déjà été obtenu, PF_AccessFeeder met la tâche en attente jusqu’à ce que le verrou soit libéré ou jusqu’à ce que le délai d’expiration spécifié (facultatif) soit atteint.
Une fois qu’un robot a fini d’utiliser un distributeur, il libère le verrou à l’aide de l’instruction PF_ReleaseFeeder afin de permettre à d’autres robots d’utiliser ce distributeur.
Pour plus de détails, consultez la section suivante.
PF_ReleaseFeeder
Exemple :
La tâche 1 exécute PF_AccessFeeder 1. La tâche 1 continue.
La tâche 2 exécute PF_AccessFeeder 1, puis la tâche 2 est mise en pause.
La tâche 1 exécute PF_ReleaseFeeder 1, puis la tâche 2 reprend.
Cette commande permet d’assurer un contrôle exclusif dans une configuration à plusieurs robots.
Syntaxe
PF_AccessFeeder feeder number / feeder name [, timeout]
Paramètres
- Numéro de distributeur
Indiquez le numéro du distributeur sous forme d’expression ou de valeur numérique (un nombre entier compris entre 1 et 4). - Name
Indiquez le nom du distributeur sous forme de chaîne de caractères. - Délai
Indiquez le délai (en secondes) pour que le verrou soit libéré, à l’aide d’une expression ou d’un nombre (nombre réel). Cette indication peut être omise.
Valeurs de retour
Aucune
Description
Lorsqu’un délai est spécifié, le résultat peut être déterminé à partir de la valeur de retour de la fonction TW.
Pour plus d’informations, reportez-vous au manuel suivant.
Epson RC+ 8.0 SPEL+ Language - TW Function
- False : le verrou a été libéré ou le verrou a été établi avec succès.
- True : le délai est écoulé.
Le comportement du distributeur n’est pas affecté par l’acquisition ou la libération de verrous.
À la fin de la tâche, les verrous obtenus au cours de celle-ci sont automatiquement libérés.
Si la fonction PF_AccessFeeder est exécutée deux fois de suite pour le même distributeur dans la même tâche, une erreur se produit.
Cette fonction ne peut pas être exécutée depuis la fenêtre de commande.
Exemples
Voici un exemple de prélèvement d’une pièce sur un distributeur à l’aide de deux robots.
Le robot 1 prélève la pièce sur le distributeur et se déplace vers le point place1.
Lorsque le robot 1 atteint 50 % de sa trajectoire, le robot 2 se déplace pour récupérer la pièce.
Function Main
MemOff PartsToPick
Motor On
PF_Start 1
Xqt Robot1PickPlace
Xqt Robot2PickPlace
Fend
Function Robot1PickPlace
Robot 1
Do
If MemSw(PartsToPick) = On Then
If PF_QueLen(1) > 0 Then
PF_AccessFeeder 1
P0 = PF_QueGet(1)
PF_QueRemove 1
Jump P0 /R
On 5
Wait 0.5
Jump Place ! D30; PF_ReleaseFeeder 1 !
Off 5
Wait 0.25
Else
MemOff PartsToPick
EndIf
EndIf
Wait 0.1
Loop
Fend
Function Robot2PickPlace
Robot 2
Do
If MemSw(PartsToPick) = On Then
If PF_QueLen(2) > 0 Then
PF_AccessFeeder 1
P0 = PF_QueGet(2)
PF_QueRemove (2)
Jump P0 /R
On 5
Wait 0.5
Jump Place ! D30; PF_ReleaseFeeder 1 !
Off 5
Wait 0.25
Else
MemOff PartsToPick
EndIf
EndIf
Wait 0.1
Loop
Fend
Function PF_Robot(PartID As Integer) As Integer
Select PartID
Case 1
MemOn PartsToPick
Wait MemSw(PartsToPick) = Off
Case 2
MemOn PartsToPick
Wait MemSw(PartsToPick) = Off
Send
PF_Robot = PF_CALLBACK_SUCCESS
Fend