Convoyeur avec robots multiples

Epson RC+ prend en charge plusieurs convoyeurs et robots logiques. Vous pouvez utiliser plusieurs robots avec un seul convoyeur ou plusieurs robots avec plusieurs convoyeurs.

Cette section décrit un système de convoyeur qui utilise deux robots ou plus avec un convoyeur et un système de convoyeur qui utilise un robot avec deux convoyeurs ou plus.

Pour plus de détails sur les robots multiples, reportez-vous au manuel suivant.

"Manuel du contrôleur de robot"

Convoyeur avec robots multiples

Le système multi-robot utilise deux robots ou plus avec un seul convoyeur comme indiqué ci-dessous. Dans ce système, le second robot (en aval) saisit les pièces que le premier robot (en amont) n'a pas collectées.

Bien que le système utilise plusieurs robots, il utilise une seule caméra (capteur), un seul codeur et un seul convoyeur.

Comment utiliser un convoyeur multi-robot

Pour utiliser les convoyeurs multi-robot, réglez les convoyeurs en amont et en aval. Les instructions pour l'utilisation des convoyeurs multi-robot sont décrites ci-dessous.

  1. Voir et créer les convoyeurs 1 et 2. (Réglez le robot côté amont sur Convoyeur 1.)

    Créer des convoyeurs dans un projet

  2. Pour [Codeur] et [Séquence vision], définissez les mêmes numéros et séquences pour les convoyeurs 1 et 2.

  3. Calibrez le convoyeur 1.

  4. Vérifiez le fonctionnement en vous référant à l’un des éléments suivants :

  5. Réglez [Convoyeur en aval] sur "2".

  6. Calibrez le convoyeur 2.

  7. Vérifiez le fonctionnement du convoyeur 2.

    1. Effacez toutes les données de la file d'attente enregistrées sur chaque convoyeur.

      >Cnv_QueRemove 1,all
      >Cnv_QueRemove 2,all
      
    2. Placez la pièce dans la zone de recherche de vision.

    3. Exécutez le programme "ScanConveyorStrobed" pour enregistrer une file d'attente.

    4. Suspendez (HALT) le programme "ScanConveyorStrobed" et déplacez le convoyeur jusqu'à ce que la pièce entre dans la zone de saisie du convoyeur 1.

    5. Arrêtez le programme "ScanConveyorStrobed" et déplacez le convoyeur jusqu'à ce que la pièce entre dans la zone de saisie du convoyeur 2.

    6. Exécutez la commande ci-dessous pour déplacer la file d'attente du convoyeur 1 au convoyeur 2.

      >Cnv_QueMove 1,0
      
    7. Saisissez la pièce.

      >Jump Cnv_Queget(2)
      
    8. Vérifiez si l'effecteur du robot 2 se trouve au-dessus du centre d'une pièce. Si l'effecteur du robot 2 n'est pas au-dessus du centre de la pièce, effectuez à nouveau la calibration.

    9. Déplacez le convoyeur et vérifiez si le robot suit la pièce. À ce stade, l'effecteur final peut avoir dévié du centre de la pièce. Cela est dû à l'impossibilité de suivre avec précision les changements soudains de vitesse du convoyeur. Cependant, comme le suivi se corrige au fil du temps, cela ne pose pas de problème.

    10. Arrêtez le mouvement de suivi.

      >Cnv_AbortTrack
      
  8. Un exemple de programme est affiché ci-dessous.

Function main
  Xqt ScanConveyorStrobed  'Tâche qui enregistre les files d'attente
  Xqt PickParts1 'Tâche du robot en amont pour suivre les pièces (file d'attente)
  Xqt PickParts2 'Tâche du robot en aval pour suive les pièces (file d'attente)
Fend

Fonction ScanConveyorStrobed
  Integer i, numFound, state, trigger
  Real x, y, u
  Boolean found

  trigger = 10 'Assigne la broche 10 de l'E/S du contrôleur
  Off trigger 'Désactive le déclencheur de caméra et l'E/S de déverrouillage du codeur
  Do

    'Recherche des pièces sur le convoyeur
    VRun FindParts
    On trigger  'Active le déclencheur de caméra et l'E/S de déverrouillage du codeur
    Do
      VGet FindParts.AcquireState, état
    Loop Until state = 3
    VGet FindParts.Parts.NumberFound, numFound
    'Enregistre la pièce trouvée dans la file d'attente du convoyeur 1
    For i = 1 To numFound
      VGet FindParts.Parts.CameraXYU(i), found, x, y, u
      Cnv_QueAdd 1, Cnv_Point(1, x, y)
    Next i
    Off trigger 'Désactive le déclencheur de caméra et l'E/S de déverrouillage du codeur
    Wait 0.1
  Loop
Fend

Fonction PickParts1
  OnErr GoTo ErrHandler
  Integer ErrNum

  Robot 1
  Motor On
  Power High
  Speed 30
  Accel 30, 30

  Jump P1

 WaitParts:
  Do
    'Attend jusqu'à ce qu'une pièce (file d'attente) entre dans la zone de saisie
    Wait Cnv_QueLen(1, CNV_QUELEN_PICKUPAREA) > 0

    'Démarre le suivi de la pièce
    'Lors de l'utilisation du robot 6 axes
     Jump3 Cnv_QueGet(1):Z(0):U(90):V(0):W(180)
    'Lors de l'utilisation du robot SCARA
    Jump Cnv_QueGet(1)
    Wait 1 'Le robot se déplace à la même vitesse que le convoyeur 'pour le Temps d'attente spécifié pour cette pièce
    Jump P1 'Déplace la pièce saisie vers un emplacement spécifié
    'Efface la pièce saisie (file d'attente)
    Cnv_QueMove 1, 0
  Loop
  'Déplace les pièces (file d'attente) du côté aval de la zone de saisie du convoyeur 1 'vers le convoyeur 2
  ErrHandler:
    ErrNum = Err
    If ErrNum = 4406 Then
      Cnv_QueRemove 1, 0
      EResume WaitParts
      'Lorsqu'une erreur autre que l'erreur de plage de mouvement du suivi de convoyeur se produit.
      'Erreur est affiché
    Else
      Print "Error!"
      Print "No.", Err, ":", ErrMsg$(Err, 1)
      Print "Line :", Erl(0)
      'User error occurred
      Error 8000
    EndIf
Fend

Function PickParts2
  OnErr GoTo ErrHandler
  Integer ErrNum

  Robot 2
  Motor On
  Power High
  LoadPoints "robot2.pts"
  Speed 30
  Accel 30, 30

  Go P1

  WaitParts:
  Do
    'Attend jusqu'à ce qu'une pièce (file d'attente) entre dans la zone de saisie
    Wait Cnv_QueLen(2, CNV_QUELEN_PICKUPAREA) > 0
    'Démarre le suivi de la pièce
    'Lors de l'utilisation du robot 6 axes
    Jump3 Cnv_QueGet(2):Z(0):U(90):V(0):W(180)
    'Lors de l'utilisation du robot SCARA
    Jump Cnv_QueGet(2)
    Wait 1 'Le robot se déplace à la même vitesse que le convoyeur 'pour le Temps d'attente spécifié pour cette pièce
    Jump P2 'Déplace la pièce saisie vers un emplacement spécifié
    'Efface la pièce saisie (file d'attente)
    Cnv_QueRemove 2, 0
  Loop

  'Efface la pièce saisie (file d'attente)

  'Effacer les pièces (file d'attente) du côté aval de la zone de saisie du convoyeur 2
  'Reprend automatiquement à partir de l'erreur '"Les données de file d'attente spécifiées sont en dehors de la zone définie"
  ErrHandler:
  ErrNum = Err
  If ErrNum = 4406 Then
    Cnv_QueRemove 2, 0
    EResume WaitParts
    'Erreur autre que '"Les données de file d'attente spécifiées sont en dehors de la zone définie"
    'est affiché
  Else
    Print "Error!"
    Print "No.", Err, ":", ErrMsg$(Err, 1)
    Print "Line :", Erl(0)
    'User error occurred
    Error 8000
  EndIf
Fend