PF_Robot

Décrivez le comportement du robot lorsqu’il prélève des pièces dans le distributeur et les positionne à l’emplacement prévu.
Assurez-vous que cette fonction soit bien écrite.

Syntaxe
Function PF_Robot(part ID As Integer) As Integer
’ Robot movement
Fend

Paramètres

  • ID de pièce
    L’ID de pièce (nombre entier compris entre 1 et 32) doit être indiqué ici.
    Dans le cas d’une opération à plusieurs pièces, la pièce active est indiquée ici.

Valeurs de retour
Pour contrôler le processus Part Feeding après la fin de la fonction PF_Robot, définissez les valeurs suivantes. (Chaque constante est définie dans le fichier PartFeeding.inc.)

  • PF_CALLBACK_SUCCESS
    En principe, cette valeur doit être indiquée. Lorsqu’il n’y a pas de données dans la file d’attente des coordonnées de pièce (dans le cas d’une opération à plusieurs pièces, il n’y a pas de données concernant la pièce active), le processus Part Feeding se poursuit.
    Lorsqu’il reste des données dans la file d’attente (dans le cas d’une opération à plusieurs pièces, il s’agit de données de la partie active), la fonction de rappel PF_Robot est relancée sans que le contenu de la file d’attente des coordonnées de la pièce soit modifié.

  • PF_CALLBACK_RESTART
    Le processus Part Feeding se poursuit et régénère la file d’attente des coordonnées de la pièce, qu’il reste ou non des données dans cette file d’attente. Cette fonction peut être utilisée lorsque vous souhaitez obtenir les coordonnées de la pièce à chaque prélèvement, afin d’assurer une grande précision lors du prélèvement.

  • PF_CALLBACK_RESTART_ACTIVEPART
    Le processus Part Feeding se poursuit et régénère la file d’attente des coordonnées pour la pièce active uniquement, qu’il reste ou non des données dans cette file d’attente. La file d’attente des coordonnées de la pièce ne sera pas régénérée pour les autres pièces. Cela peut s’avérer utile pour accélérer le processus de vision en omettant les pièces non actives.

  • Numéros des codes d’erreur utilisateur (8000 - 8999)
    Ce paramètre est défini lorsque vous souhaitez appeler la fonction de rappel PF_Status pour gérer les erreurs. La valeur définie est transmise en tant qu’argument à la fonction de rappel PF_Status.

Description
Cette fonction doit comporter les opérations suivantes :

  1. Récupérer les coordonnées de la pièce à partir de la file d’attente des coordonnées (à l’aide de la fonction PF_QueGet).
  2. Déplacer le robot jusqu’aux coordonnées de la pièce sur le distributeur.
  3. Saisir une pièce à l’aide de la main, etc.
  4. Déplacez le robot jusqu’aux coordonnées de la position de la pièce.
  5. Libérer une pièce à l’aide de la main, etc.
  6. Supprimer une file d’attente de coordonnées (à l’aide de la commande PF_QueRemove).

En règle générale, les étapes 1 à 6 (énumérées ci-dessus) sont exécutées en boucle jusqu’à ce que toutes les données de la file d’attente des coordonnées aient été supprimées. La liste des coordonnées des pièces détectées lors du dernier processus de vision est ajoutée à la file d’attente des coordonnées. Les coordonnées sont définies dans le système de coordonnées local. Dans le cas d’une opération à plusieurs pièces, une file d’attente de coordonnées est générée pour chaque ID de pièce.
Le numéro de robot utilisé dans la fonction de rappel PF_Robot doit correspondre au numéro de robot sélectionné pour la pièce. Dans le cas d’une opération à plusieurs robots, vous pouvez utiliser les instructions Robot pour changer de numéro de robot.
Pour plus d’informations, reportez-vous au manuel suivant.
Epson RC+ 8.0 SPEL+ Language Reference - Robot

ATTENTION


  • Il est recommandé d’utiliser les paramètres pour obtenir l’ID de pièce.
  • Veillez à ne pas sélectionner un mauvais numéro de robot lorsque vous modifiez le numéro de robot dans la fonction de rappel d’un système à plusieurs robots.

Exemple de programme
Voici un exemple de programme simple conçu pour utiliser un effecteur terminal à vide afin de traiter toutes les pièces.
Un capteur de vide sert à contrôler la force d’aspiration lors du prélèvement des pièces.
Trois tentatives sont effectuées lorsque l’aspiration ne peut pas être mise en place. Le code d’erreur utilisateur 8001 est renvoyé comme valeur de retour si l’aspiration ne peut toujours pas être mise en place.

’ ** IO Label (Output) **
’ O_Adsorb Suction
’ ODesorb	Release
’
’ ** IO Label (Input) **
’ IAdsorbed	Suction sensor
’
’ ** Point **
’ PlacePos	Parts place position
’
’ ** User Error **
’ 8001 Suction timeout occurred
’
Function PF_Robot(partID As Integer) As Integer

    Byte retry

    ’ Process entire coordinates queue, or loop until a stop request is issued
    Do While PF_QueLen(partID) > 0 And PF_IsStopRequested(partID) = False

        ’ Move the robot to pick up position
        Jump PF_QueGet(partID)

        ’ Vacuum ON & suction check (retry three times)
        On O_Adsorb
        retry = 3
        Do While retry > 0
        Wait Sw(I_Adsorbed) = On, 0.5
        If TW = True Then
            ’ If timed out, stop and reapply suction
            Off O_Adsorb
            Wait 0.1
            On O_Adsorb
        EndIf
    Loop
    If TW = True Then
        ’ Terminate with error as suction still cannot be applied after reattempts
        ’ Perform error processing according to Status callback function
        PF_Robot = 8001
        Exit Function
    EndIf

    ’ Move the robot to place position
    Jump PlacePos

    ’ Vacuum OFF & vacuum break
    Off O_Adsorb
    On O_Desorb
    Wait 0.1
    Off O_Desorb

    ’ Delete one data entry in the coordinates queue
    PF_QueRemove partID

    Loop

    PF_Robot = PF_CALLBACK_SUCCESS

Fend