PF_Vision

Cette fonction est utilisée lorsque l’utilisateur souhaite programmer des processus de capture d’images (contrôle de l’éclairage, utilisation d’un système de vision, traitement du programme SPEL). Elle est également utilisée lorsqu’il est difficile de détecter les pièces et de déterminer leur orientation (face vers l’extérieur, etc.) à l’aide du seul système de vision. Pour utiliser cette fonction, sélectionnez « User processes vision for part via PF_Vision callback » (L’utilisateur gère la vision de la pièce via la fonction de rappel PF_Vision) dans le menu Epson RC+ 8.0 - [Tools] (Outils) - [Part Feeding] - [Vision].

Syntaxe
Function PF_Vision(part ID As Integer, ByRef NumBack As Integer) As Integer
’(Vision processing)
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.
  • numBack
    Indique le nombre de pièces qui ne peuvent pas être prélevées (orientées vers le bas, etc.). (Le paramètre ByRef est indiqué.)
    Cette valeur est utilisée par le processus Part Feeding pour déterminer si un retournement est nécessaire.
    Saisissez « 0 » si la pièce ne comporte pas de côtés définis.

Valeurs de retour
Pour poursuivre le processus, définissez la valeur de retour sur PF_CALLBACKSUCCESS.
Pour traiter les erreurs, définissez la valeur de retour sur un code d’erreur défini par l’utilisateur (entre 8000 et 8999).
Cette valeur est renvoyée en tant que paramètre de la fonction de rappel PF_Status.

Description
Cette fonction est utilisée lors de la combinaison de plusieurs séquences de vision et des commandes d’éclairage externes pour détecter les coordonnées des pièces. Les processus suivants doivent être décrits par l’utilisateur.

  • Commandes de l’éclairage utilisateur
  • Traitement de vision (exécution de l’instruction VGet)
  • Gestion de la file d’attente des coordonnées de la pièce (initialisation et enregistrement des données ponctuelles)

Exemple de programme
L’exemple suivant décrit un programme permettant de détecter des pièces à l’aide de deux séquences de vision, VSeq1 (comprenant un objet Geom) et VSeq2 (comprenant un objet Geom). VSeq1 s’utilise avec l’éclairage utilisateur 1. Cette séquence permet de détecter la position des pièces, mais ne permet pas de déterminer leur orientation. VSeq2 s’utilise avec l’éclairage utilisateur 2 et ne peut détecter que les pièces orientées vers le haut.
Les coordonnées des pièces détectées (numéro local 1 dans cet exemple) sont ajoutées à la file d’attente des coordonnées à l’aide de la commande PF_QueAdd. Ce faisant, la valeur obtenue ci-après est attribuée comme coordonnée Z.
Fenêtre d’apprentissage
Pour activer le retournement, consultez la section ci-dessous.
Générale
Indiquez VSeq2 dans [Part Vision Sequence] (Séquence de vision de la pièce) et activez l’éclairage utilisateur 2. Pour plus de détails, consultez la section suivante.
Vision
Lancez l’étalonnage du retournement. Pour plus de détails, consultez la section suivante.
Calibration

’ ** IO Label (Output) **
’ O_FrontLight1 	User lighting 1
’ O_FrontLight2 	User lighting 2
Function PF_Vision(partID As Integer, ByRef NumBack As Integer) As Integer

    Boolean found
    Integer i, numFound
    Real PX_X, PX_Y, PX_U
    Real RB_X, RB_Y, RB_U, RB_Z

    ’ Pick Z coordinate
    RB_Z = -80.0

    ’ Initialize coordinates queue
    PF_QueRemove partID, All

    ’ Turn on the user lighting 1
    On O_FrontLight1

    ’ Detect part (run UsrVisionSeq1)
    VRun VSeq1
    VGet VSeq1.Geom01.NumberFound, numFound

    ’ Turn off the user lighting 1
    Off O_FrontLight1
    ’ Turn on the user lighting 2
    On O_FrontLight2

    numBack = 0
    For i = 1 To numFound
        ’ Retrieve XY pixel coordinates for part detected with VSeq1.Geom01
        ’ Set the VSeq2.Geom01 search window to cover this part
        ’ Part size = 100× 100 × l
        VGet VSeq1.Geom01.PixelXYU(i), found, PXX, PXY, PXU
        VSet VSeq2.Geom01.SearchWinLeft, (- 50)
        VSet VSeq2.Geom01.SearchWinTop, (- 50)

        ’ Run VSeq2
        VRun VSeq2
        VGet VSeq2.Geom01.Found, found

        If found = True Then
            ’ If found, register to the coordinates queue as the part is facing up
            ’ Local number is 1
            VGet VSeq1.Geom01.RobotXYU(i), found, RB_X, RB_Y, RB_U
            PF_QueAdd partID, XY(RB_X, RB_Y, RB_Z, RB_U) /1

        Else
            ’ If not found, part is facing down
            numBack = numBack + 1

        EndIf

    Next

    ’ Turn off the external lighting 2
    Off O_FrontLight2

    PF_Vision = PF_CALLBACK_SUCCESS

Fend