Programme d’exemple 7 : MM_S7_Viz_SwitchTCP

Vous consultez actuellement la documentation pour la dernière version (2.1.2). Pour accéder à une autre version, cliquez sur le bouton "Changer de version" situé dans le coin supérieur droit de la page.

■ Si vous n’êtes pas sûr de la version du produit que vous utilisez, veuillez contacter le support technique Mech-Mind pour obtenir de l’aide.

Introduction du programme

Description

Le robot démarre le projet Mech-Viz, obtient le résultat de planification de trajectoire, puis change l’outil selon l’identifiant d’outil du point de prise pour effectuer la prise et la dépose.

Chemin du fichier

Vous pouvez accéder au répertoire d’installation de Mech-Vision et Mech-Viz et trouver le fichier en utilisant le chemin Communication Component/Robot_Interface/FANUC/sample/MM_S7_Viz_SwitchTCP.

Projet

Projets Mech-Vision et Mech-Viz

Prérequis

Ce programme d’exemple est fourni uniquement à titre de référence. Avant d’utiliser le programme, veuillez le modifier en fonction du scénario réel.

Description du programme

Cette section décrit le programme d’exemple MM_S7_Viz_SwitchTCP.

La seule différence entre le programme d’exemple MM_S7_Viz_SwitchTCP et le programme d’exemple MM_S2_Viz_Basic est que MM_S7_Viz_SwitchTCP peut changer l’outil selon l’ID d’outil (le code de cette fonctionnalité est en gras). Par conséquent, seule la fonctionnalité de gestion des erreurs en fonction des différents codes d’erreur est décrite ci-dessous. Pour les parties de MM_S6_Viz_ErrorHandle identiques à celles de MM_S2_Viz_Basic, voir Programme d’exemple 2 : MM_S2_Viz_Basic.
   1:  !-------------------------------- ;
   2:  !FUNCTION: trigger Mech-Viz ;
   3:  !project and get planned path, ;
   4:  !switch TCP according to ;
   5:  !the tool NO.;
   6:  !Mech-Mind, 2023-12-25 ;
   7:  !-------------------------------- ;
   8:   ;
   9:  !set current uframe NO. to 0 ;
  10:  UFRAME_NUM=0 ;
  11:  !set current tool NO. to 1 ;
  12:  UTOOL_NUM=1 ;
  13:  !move to robot home position ;
  14:J P[1] 100% FINE    ;
  15:  !initialize communication ;
  16:  !parameters(initialization is ;
  17:  !required only once) ;
  18:  CALL MM_INIT_SKT('8','127.0.0.1',50000,5) ;
  19:  !move to image-capturing position ;
  20:L P[2] 1000mm/sec FINE    ;
  21:  !trigger Mech-Viz project ;
  22:  CALL MM_START_VIZ(2,10) ;
  23:  !get planned path, 1st argument ;
  24:  !(2) means getting pose in TCP ;
  25:  CALL MM_GET_VIZ(2,51,52,53) ;
  26:  !check whether planned path has ;
  27:  !been got from Mech-Viz ;
  28:  !successfully ;
  29:  IF R[53]<>2100,JMP LBL[99] ;
  30:  !save waypoints of the planned ;
  31:  !path to local variables one ;
  32:  !by one ;
  33:  CALL MM_GET_POS(1,60,70,80) ;
  34:  CALL MM_GET_POS(2,61,71,81) ;
  35:  CALL MM_GET_POS(3,62,72,82) ;
  36:  !switch TCP according to the ;
  37:  !received tool NO. ;
  38:  IF R[81]=1,JMP LBL[1] ;
  39:  IF R[81]=2,JMP LBL[2] ;
  40:  JMP LBL[999] ;
  41:   ;
  42:  LBL[1:use tool NO.1] ;
  43:  !set current tool NO. to 1 ;
  44:  UTOOL_NUM=1 ;
  45:  !reset tool signal ;
  46:  !DO[1]=OFF ;
  47:  !set a Flag ;
  48:  F[1]=(ON) ;
  49:  JMP LBL[3] ;
  50:   ;
  51:  LBL[2:use tool NO.2] ;
  52:  !set current tool NO. to 2 ;
  53:  UTOOL_NUM=2 ;
  54:  !reset tool signal ;
  55:  !DO[2]=OFF ;
  56:  !set a Flag ;
  57:  F[2]=(ON) ;
  58:  JMP LBL[3] ;
  59:   ;
  60:  LBL[3:pick path] ;
  61:  !follow the planned path to pick ;
  62:  !move to approach waypoint ;
  63:  !of picking ;
  64:L PR[60] 1000mm/sec FINE    ;
  65:  !move to picking waypoint ;
  66:L PR[61] 300mm/sec FINE    ;
  67:  !add object grasping logic here, ;
  68:  !IF (F[1]),DO[1]=(ON) ;
  69:  !IF (F[2]),DO[2]=(ON) ;
  70:  PAUSE ;
  71:  !move to departure waypoint ;
  72:  !of picking ;
  73:L PR[62] 1000mm/sec FINE    ;
  74:  !move to intermediate waypoint ;
  75:  !of placing ;
  76:J P[3] 50% CNT100    ;
  77:  !move to approach waypoint ;
  78:  !of placing ;
  79:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  80:  !move to placing waypoint ;
  81:L P[4] 300mm/sec FINE    ;
  82:  !add object releasing logic here, ;
  83:  !IF (F[1]),DO[1]=(OFF) ;
  84:  !IF (F[2]),DO[2]=(OFF) ;
  85:  PAUSE ;
  86:  !move to departure waypoint ;
  87:  !of placing ;
  88:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  89:  !move back to robot home position ;
  90:J P[1] 100% FINE    ;
  91:  !reset the Flags ;
  92:  F[1]=(OFF) ;
  93:  F[2]=(OFF) ;
  94:  END ;
  95:   ;
  96:  LBL[99:vision error] ;
  97:  !add error handling logic here ;
  98:  !according to different ;
  99:  !error codes ;
 100:  !e.g.: status=2038 means no ;
 101:  !point cloud in ROI ;
 102:  PAUSE ;
 103:   ;
 104:  LBL[999:label error] ;
 105:  !add handling logic here if the ;
 106:  !label is invalid ;
 107:  PAUSE ;

Le flux de travail correspondant au code du programme d’exemple ci-dessus est illustré dans la figure ci-dessous.

sample7

Le tableau ci-dessous décrit le code en gras.

Fonctionnalité Code et description

Obtenir la trajectoire planifiée

  23:  !get planned path, 1st argument ;
  24:  !(2) means getting pose in TCP ;
  25:  CALL MM_GET_VIZ(2,51,52,53) ;
  • MM_GET_VIZ : La commande pour obtenir la trajectoire planifiée par Mech-Viz.

  • 2 : Le type de pose du point d’étape obtenu est défini sur TCP.

  • 51 : Le registre numérique R[51], qui stocke le nombre de points d’étape renvoyés par le système de vision.

  • 52 : Le registre numérique R[52], qui stocke le numéro de séquence du point d’étape Vision Move (point de prise) dans la trajectoire.

  • 53 : Le registre numérique R[53], qui stocke le code d’état d’exécution de la commande.

L’ensemble de l’instruction indique que le robot obtient la trajectoire planifiée à partir du projet Mech-Viz.

La trajectoire planifiée renvoyée est enregistrée dans la mémoire du robot et ne peut pas être obtenue directement. Pour y accéder, vous devez la stocker à l’étape suivante.

Stocker la trajectoire planifiée

  30:  !save waypoints of the planned ;
  31:  !path to local variables one ;
  32:  !by one ;
  33:  CALL MM_GET_POS(1,60,70,80) ;
  34:  CALL MM_GET_POS(2,61,71,81) ;
  35:  CALL MM_GET_POS(3,62,72,82) ;
  • MM_GET_POS : La commande pour stocker la trajectoire planifiée.

  • 1 : Stocker le premier point d’étape.

  • 60 : Le registre de position PR[60], qui stocke le TCP du premier point d’étape.

  • 70 : Le registre numérique R[70], qui stocke l’étiquette du premier point d’étape.

  • 80 : Le registre numérique R[80], qui stocke l’ID d’outil du premier point d’étape.

La commande entière « CALL MM_GET_JPS(1,60,70,80) » stocke le TCP, l’étiquette et l’ID d’outil du premier point d’étape dans les registres spécifiés.

  • Veuillez stocker la trajectoire planifiée en fonction du projet Mech-Viz réel. Dans cet exemple, la trajectoire planifiée par Mech-Viz se compose de trois points d’étape : le premier est le point d’approche pour la prise (PR[60]), le deuxième est le point de prise (PR[61]) et le troisième est le point de départ de la prise (PR[62]). R[81] spécifie l’ID de l’outil utilisé par le robot lorsqu’il se déplace vers le point de prise (PR[61]).

  • Ce programme d’exemple modifiera l’ID d’outil en fonction de la valeur R[81]. Par conséquent, le projet Mech-Viz utilisé doit inclure une étape Change Tool et les paramètres de cette étape doivent être correctement définis.

    • L’étape Change Tool doit être reliée au port de sortie A des résultats de l’étape Check Vision Result.

    • Le paramètre Mode de fonctionnement de l’étape Change Tool doit être défini sur Changement automatique vers l’outil approprié.

Changer l’outil en fonction de l’ID d’outil

  36:  !switch TCP according to the ;
  37:  !received tool NO. ;
  38:  IF R[81]=1,JMP LBL[1] ;
  39:  IF R[81]=2,JMP LBL[2] ;
  40:  JMP LBL[999] ;
  41:   ;
  42:  LBL[1:use tool NO.1] ;
  43:  !set current tool NO. to 1 ;
  44:  UTOOL_NUM=1 ;
  45:  !reset tool signal ;
  46:  !DO[1]=OFF ;
  47:  !set a Flag ;
  48:  F[1]=(ON) ;
  49:  JMP LBL[3] ;
  50:   ;
  51:  LBL[2:use tool NO.2] ;
  52:  !set current tool NO. to 2 ;
  53:  UTOOL_NUM=2 ;
  54:  !reset tool signal ;
  55:  !DO[2]=OFF ;
  56:  !set a Flag ;
  57:  F[2]=(ON) ;
  58:  JMP LBL[3] ;
  ...
  60:  LBL[3:pick path] ;
  ...
  67:  !add object grasping logic here, ;
  68:  !IF (F[1]),DO[1]=(ON) ;
  69:  !IF (F[2]),DO[2]=(ON) ;
  ...
  82:  !add object releasing logic here, ;
  83:  !IF (F[1]),DO[1]=(OFF) ;
  84:  !IF (F[2]),DO[2]=(OFF) ;
  ...
  91:  !reset the Flags ;
  92:  F[1]=(OFF) ;
  93:  F[2]=(OFF) ;
  94:  END ;

Vous pouvez déterminer l’outil à utiliser lorsque le robot se déplace vers le point de prise en fonction de la valeur définie dans le registre R[81]. La description du code ci-dessus est présentée ci-dessous.

  • Si l’ID d’outil au point de prise est 1 (JMP LBL[1]), le robot utilise l’outil correspondant au repère d’outil n°1 (UTOOL_NUM=1) pour l’opération de prise.

  • Si l’ID d’outil au point de prise est 2 (JMP LBL[2]), le robot utilise l’outil correspondant au repère d’outil n°2 (UTOOL_NUM=2) pour l’opération de prise.

  • Si l’ID d’outil au point de prise est une autre valeur (JMP LBL[999]), le robot s’arrêtera. Vous pouvez ajouter d’autres codes selon la situation réelle.

Si le robot contrôle l’outil 1 avec le signal DO[1] et l’outil 2 avec le signal DO[2], le programme doit également établir leurs relations en utilisant respectivement les drapeaux F[1] et F[2].

  • Si F[1] est réglé sur ON, le robot contrôle le signal DO[1] pour effectuer la prise et la dépose.

  • Si F[2] est réglé sur ON, le robot contrôle le signal DO[2] pour effectuer la prise et la dépose.

Dans l’exemple suivant, l’ID de l’outil n°1 est utilisé pour décrire l’opération de prise et de dépose.

  1. Basculez le repère d’outil sur 1 (UTOOL_NUM=1).

  2. Réinitialisez le signal DO qui contrôle l’ID de l’outil n°1 (DO[1]=OFF).

  3. Réglez F[1] sur ON (F[1]=(ON)), ce qui indique que le robot contrôlera le signal DO[1] pour effectuer la prise et la dépose.

  4. Lorsque le robot se déplace vers le point de prise et que F[1] est réglé sur ON, mettez DO[1] sur ON pour terminer l’opération de prise.

  5. Lorsque le robot se déplace vers le point de dépose et que F[1] est réglé sur ON, mettez DO[1] sur OFF pour terminer l’opération de dépose.

  6. Lorsque le robot revient à la position d’origine, réinitialisez F[1] sur OFF pour indiquer l’ID du signal DO que le robot utilisera pour la prochaine opération de prise et de dépose.

Le processus d’utilisation de l’ID de l’outil n°2 est similaire à ce qui précède et ne sera pas répété ici.

Cette page est-elle utile ?

Veuillez nous indiquer comment améliorer :

Nous accordons de l’importance à votre vie privée

Nous utilisons des cookies pour vous offrir la meilleure expérience possible sur notre site web. En continuant à utiliser le site, vous reconnaissez accepter l’utilisation des cookies. Si vous refusez, un cookie unique sera utilisé pour garantir que vous ne soyez pas suivi ou reconnu lors de votre visite sur ce site.