Convoyeurs multiples

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

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

Suivi de convoyeur pour plusieurs convoyeurs

Cette section décrit un système de convoyeur dans lequel un robot saisit la "Pièce 1" du convoyeur 1 et place les pièces saisies au-dessus des "Pièces 2" sur le convoyeur 2 comme indiqué dans la figure ci-dessous. Dans ce système de convoyeur, chaque convoyeur nécessite un codeur et une caméra (capteur).

Comment utiliser plusieurs convoyeurs

L'utilisation est décrite ci-dessous.

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

    Créer des convoyeurs dans un projet

  2. Pour [Codeur] et [Séquence vision], définissez les différents numéros et séquences pour chacun des 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. Calibrez le convoyeur 2.

  6. Vérifiez le fonctionnement du convoyeur 2.

Un exemple de programme est affiché ci-dessous.

Ce programme échantillon reprend automatiquement lorsque le robot suit la pièce hors de la zone de saisie.

Function main
  Motor On
  Power High

  Speed 30
  Accel 30, 30

  Xqt ScanConveyorStrobed  'Tâche qui enregistre les files d'attente
  Xqt PickParts            ''Tâche qui suit les pièces (file d'attente)
Fend
Fonction ScanConveyorStrobed
  Integer i, j, numFound, state, trigger1, trigger2
  Real x, y, u
  Boolean found

  trigger1 = 10 'Assigne la broche 10 de l'E/S du contrôleur au convoyeur 1
  trigger2 = 11 'Assigne la broche 11 de l'E/S du contrôleur au convoyeur 2
  Off trigger1 ; Off trigger2
  'Désactive le déclencheur de caméra et le déverrouillage du codeur
  Do
    VRun FindParts1	'Recherche des pièces sur le convoyeur
    On trigger1            'Active le déclencheur de caméra et l'E/S de déverrouillage du codeur
    Do
      VGet FindParts1.AcquireState, état
    Loop Until state = 3
    VGet FindParts1.Parts.NumberFound, numFound
    'Enregistre la pièce qui a été capturée comme une file d'attente
    For i = 1 To numFound
      VGet FindParts1.Parts.CameraXYU(i), found, x, y, u
      Cnv_QueAdd 1, Cnv_Point(1, x, y)
    Next i
    Off trigger1           'Désactive le déclencheur de caméra et l'E/S de déverrouillage du codeur
    Wait 0.1

    'Enregistre les pièces (file d'attente) du convoyeur 2
    'Recherche des pièces sur le convoyeur
    VRun FindParts2
    On trigger2            'Active le déclencheur de caméra et l'E/S de déverrouillage du codeur
    Do
      VGet FindParts2.AcquireState, état
    Loop Until state = 3
    VGet FindParts2.Parts.NumberFound, numFound
    'Enregistre la pièce qui a été capturée comme une file d'attente
    For j = 1 to numFound
      VGet FindParts2.Parts.CameraXYU(j), found, x, y, u
      Cnv_QueAdd 2, Cnv_Point(2, x, y)
    Next j
    Off trigger2           'Désactive le déclencheur de caméra et l'E/S de déverrouillage du codeur
    Wait 0.1
  Loop
Fend
Fonction PickParts
  OnErr GoTo ErrHandler
  Integer ErrNum

  MemOff 1;  MemOff 2     'Désactive l'E/S mémoire

  Jump P1

  Do
    'Suivi du convoyeur 1
    WaitPickup1:
    'Active l'E/S mémoire lorsque la phase de suivi du convoyeur 1 démarre
    MemOn 1                'Active l'E/S mémoire 1
    'Efface les pièces (file d'attente) du côté aval de la limite aval
    Do While Cnv_QueLen(1, CNV_QUELEN_DOWNSTREAM) > 0
      Cnv_QueRemove 1, 0
    Loop
    '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 0.1 'Le robot se déplace à la même vitesse que le convoyeur 'pour le Temps d'attente spécifié pour cette pièce
    'Efface la pièce saisie (file d'attente)
    Cnv_QueRemove 1, All
    MemOff 1               'Désactive l'E/S mémoire 1

    'Suivi du convoyeur 2
    WaitPickup2:
    MemOn 2                'Active l'E/S mémoire 2
    '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 0.1 'Le robot se déplace à la même vitesse que le convoyeur 'pour le Temps d'attente spécifié pour cette pièce
    Wait 0.1 'Le robot se déplace à la même vitesse que le convoyeur 'pour le Temps d'attente spécifié pour cette pièce
    'Efface la pièce saisie (file d'attente)
    Cnv_QueRemove 2, All
    MemOff 2               'Désactive l'E/S mémoire 2

    Jump P1
  Loop
  'Efface les pièces (file d'attente) du côté aval de la zone de saisie
  '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
    If MemSw(1) = On Then
      Cnv_QueRemove 1
      EResume WaitPickup1
    EndIf
    If MemSw(2) = On Then
      Cnv_QueRemove 2
      EResume WaitPickup2
    EndIf
    '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