Exemple de programme 6 : MM_S6_Viz_ErrorHandle

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 lance le projet Mech-Viz, obtient le chemin planifié, puis détermine si l’obtention du chemin planifié a réussi en fonction du code d’état. Si le chemin planifié a été obtenu avec succès, le robot effectuera la préhension et la dépose ; sinon, le robot s’arrêtera.

File path

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_S6_Viz_ErrorHandle.

Project

Projets Mech-Vision et Mech-Viz

Prerequisites

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_S6_Viz_ErrorHandle.

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

Le flux de travail correspondant au code de l’exemple ci-dessus est présenté dans la figure ci-dessous.

sample6

Le tableau ci-dessous décrit la fonctionnalité de traitement des différents codes d’état.

Feature Code and description

Traiter différents codes d’état

  ...
  16:  R[99]=0    ;
  ...
  25:  LBL[1:vision] ;
  26:  !trigger Mech-Viz project ;
  27:  CALL MM_START_VIZ(2,10) ;
  ...
  30:  CALL MM_GET_VIZ(1,51,52,53) ;
  31:  !check whether planned path has ;
  32:  !been got from Mech-Viz ;
  33:  !successfully ;
  34:  IF R[53]<>2100,JMP LBL[99] ;
  ...
  71:  LBL[99:vision error] ;
  72:  IF R[53]=2038,JMP LBL[2] ;
  73:  JMP LBL[999] ;
  74:   ;
  75:  LBL[2] ;
  76:  !no point cloud in ROI, add ;
  77:  !handling logic here ;
  78:  !self-adding then check retry ;
  79:  !counter ;
  80:  R[99]=R[99]+1    ;
  81:  !jump back to vision retry label ;
  82:  !if the number of retry times is ;
  83:  !less than 3 ;
  84:  IF R[99]<3,JMP LBL[1] ;
  85:  !reset counter and exit loop if ;
  86:  !the number of retry times has ;
  87:  !reached 3 ;
  88:  R[99]=0    ;
  89:  JMP LBL[999] ;
  90:   ;
  91:  LBL[999:other error] ;
  92:  !add other error handling logic ;
  93:  !here ;
  94:  PAUSE ;

Après l’exécution de MM_GET_VIZ, le robot stocke le code d’état reçu dans le registre R[53]. Vous pouvez effectuer l’opération correspondante en fonction du code d’erreur reçu.

  • Lorsque R[53] est réglé sur 2100, le robot a obtenu le chemin planifié avec succès. Le robot effectue alors la préhension en suivant le chemin planifié.

  • Si R[53] n’est pas réglé sur 2100, une exception s’est produite dans le système de vision et le programme saute à LBL[99] pour poursuivre l’exécution. Vous devez effectuer l’opération correspondante en fonction du code d’erreur spécifique.

    • Si R[53] est réglé sur 2038, cela signifie que l’ROI ne contient aucun nuage de points. Dans ce cas, le robot ne peut pas obtenir le chemin planifié et le programme saute à LBL[2] pour poursuivre l’exécution. Le robot peut essayer de déclencher à nouveau le projet Mech-Viz afin d’obtenir le chemin planifié. Le nombre de tentatives pour réobtenir le chemin planifié est contrôlé par R[99]. Après deux nouvelles tentatives (c’est-à-dire lorsque la valeur de R[99] est supérieure à 2), s’il n’existe aucun nuage de points, le programme saute à LBL[999], ce qui signifie que l’exécution est arrêtée.

    • Si R[53] est réglé sur un autre code d’erreur, le programme saute à LBL[999], ce qui signifie que l’exécution est arrêtée.

Vous pouvez écrire le code de gestion des erreurs en vous référant au manuel Codes d’état et dépannage.

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.