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