Programme d’exemple 8 : MM_S8_Viz_Subtask

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.

Présentation du programme

Description

Ce programme d’exemple se compose de deux programmes : un programme principal et un sous-programme. Le sous-programme (programme d’arrière-plan) déclenche l’exécution du projet Mech-Viz pour obtenir le chemin planifié. Le programme principal (le programme au premier plan) déplace le robot sur la base du chemin planifié. Ensuite, le programme principal déclenche l’exécution du sous-programme lorsque le robot effectue la pose afin d’obtenir le prochain chemin planifié, ce qui réduit le temps de cycle.

Cet exemple est très similaire au programme d’exemple le MM_S10_Viz_Subtask, à la différence que le moment où le programme principal déclenche le sous-programme est différent. Il est recommandé de comparer les deux exemples pour mieux comprendre leurs nuances.

Chemin du fichier

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

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

Projet

projets Mech-Vision et Mech-Viz

Prérequis

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

Description du programme

La partie suivante décrit le sous-programme.

À l’instar du programme d’exemple MM_S2_Viz_Basic, le sous-programme déclenche l’exécution du projet Mech-Viz et obtient le chemin planifié. Par conséquent, les fonctionnalités du sous-programme qui sont cohérentes avec celles de MM_S2_Viz_Basic ne sont pas décrites dans cette partie. Pour plus d’informations sur ces fonctionnalités, voir Programme d’exemple 2 : MM_S2_Viz_Basic.
   1:  !-------------------------------- ;
   2:  !FUNCTION: run Mech-Viz project ;
   3:  !and get planned path in subtask ;
   4:  !(run together with ;
   5:  !MM_S8_Viz_Subtask) ;
   6:  !Mech-Mind, 2023-12-25 ;
   7:  !-------------------------------- ;
   8:   ;
   9:  F[10]=(ON) ;
  10:  !trigger Mech-Viz project ;
  11:  CALL MM_START_VIZ(2,10) ;
  12:  !get planned path, 1st argument ;
  13:  !(1) means getting pose in JPs ;
  14:  CALL MM_GET_VIZ(1,51,52,53) ;
  15:  !check whether planned path has ;
  16:  !been got from Mech-Viz ;
  17:  !successfully ;
  18:  IF (R[53]=2100) THEN ;
  19:  !save waypoints of the planned ;
  20:  !path to local variables one ;
  21:  !by one ;
  22:  CALL MM_GET_JPS(1,60,70,80) ;
  23:  CALL MM_GET_JPS(2,61,71,81) ;
  24:  CALL MM_GET_JPS(3,62,72,82) ;
  25:  ENDIF ;
  26:  F[10]=(OFF) ;

Le code ci-dessus indique que si le sous-programme est en cours d’exécution, les opérations suivantes sont effectuées.

  1. Définir F[10] sur ON.

  2. Exécuter le projet Mech-Viz.

  3. Obtenir le chemin planifié.

  4. Stocker le chemin planifié.

  5. Définir F[10] sur OFF.

Ainsi, vous pouvez déterminer si le sous-programme a terminé son exécution en fonction de la valeur F[10].

La partie suivante décrit le programme principal.

À l’instar du programme d’exemple MM_S2_Viz_Basic, le programme principal effectue les opérations de prise et de pose sur la base du chemin planifié. Par conséquent, les fonctionnalités du programme principal qui sont cohérentes avec celles de MM_S2_Viz_Basic ne sont pas décrites dans cette partie. Pour plus d’informations sur ces fonctionnalités, voir Programme d’exemple 2 : MM_S2_Viz_Basic.
   1:  !-------------------------------- ;
   2:  !FUNCTION: run Mech-Viz project ;
   3:  !and get planned path in subtask ;
   4:  !(run together with ;
   5:  !MM_S8_Sub) ;
   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:  !initialize communication ;
  14:  !parameters(initialization is ;
  15:  !required only once) ;
  16:  CALL MM_INIT_SKT('8','127.0.0.1',50000,5) ;
  17:  !move to robot home position ;
  18:J P[1] 100% FINE    ;
  19:  RUN MM_S8_SUB ;
  20:  LBL[1:LOOP] ;
  21:  !move to wait position for ;
  22:  !picking ;
  23:L P[2] 1000mm/sec FINE    ;
  24:  !wait until subtask program ;
  25:  !finished ;
  26:  WAIT (F[10]=OFF)    ;
  27:  !check whether planned path has ;
  28:  !been got from Mech-Viz ;
  29:  !successfully ;
  30:  IF R[53]<>2100,JMP LBL[99] ;
  31:  !follow the planned path to pick ;
  32:  !move to approach waypoint ;
  33:  !of picking ;
  34:J PR[60] 50% FINE    ;
  35:  !move to picking waypoint ;
  36:J PR[61] 10% FINE    ;
  37:  !add object grasping logic here, ;
  38:  !such as "DO[1]=ON" ;
  39:  PAUSE ;
  40:  !move to departure waypoint ;
  41:  !of picking ;
  42:J PR[62] 50% FINE    ;
  43:  !move to intermediate waypoint ;
  44:  !of placing ;
  45:J P[3] 50% CNT100    ;
  46:  !move to approach waypoint ;
  47:  !of placing ;
  48:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  49:  !trigger Mech-Viz project and get ;
  50:  !planned path in advance ;
  51:  RUN MM_S8_SUB ;
  52:  !move to placing waypoint ;
  53:L P[4] 300mm/sec FINE    ;
  54:  !add object releasing logic here, ;
  55:  !such as "DO[1]=OFF" ;
  56:  PAUSE ;
  57:  !move to departure waypoint ;
  58:  !of placing ;
  59:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  60:  !move back to robot home position ;
  61:J P[1] 100% FINE    ;
  62:  JMP LBL[1] ;
  63:  END ;
  64:   ;
  65:  LBL[99:vision error] ;
  66:  !add error handling logic here ;
  67:  !according to different ;
  68:  !error codes ;
  69:  !e.g.: status=2038 means no ;
  70:  !point cloud in ROI ;
  71:  PAUSE ;

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

sample8

Le tableau ci-dessous illustre le code central du programme principal.

Fonctionnalité Code et description

Déclencher l’exécution du projet Mech-Viz et obtenir le chemin planifié

  19:  RUN MM_S8_SUB ;

Le code ci-dessus indique que le programme principal appelle le sous-programme MM_S8_SUB pour déclencher l’exécution du projet Mech-Viz et obtenir le chemin planifié.

La différence entre la commande RUN et la commande CALL est que la commande CALL attend que le programme appelé ait terminé son exécution avant de poursuivre le code suivant, tandis que la commande RUN exécute simultanément le programme appelé et le code suivant.

Planifier le chemin suivant à l’avance par bouclage (prise→déclenchement du prochain cycle de planification du chemin→pose)

  20:  LBL[1:LOOP] ;
  ...
  62:  JMP LBL[1] ;

Le code ci-dessus indique que le programme principal exécute de manière répétée le code au LBL[1].

  21:  !move to wait position for ;
  22:  !picking ;
  23:L P[2] 1000mm/sec FINE    ;
  24:  !wait until subtask program ;
  25:  !finished ;
  26:  WAIT (F[10]=OFF)    ;
  27:  !check whether planned path has ;
  28:  !been got from Mech-Viz ;
  29:  !successfully ;
  30:  IF R[53]<>2100,JMP LBL[99] ;

Dans le code ci-dessus, le robot se déplace vers un point de passage d’attente avant la prise et attend que le sous-programme ait terminé son exécution (c.-à-d., F[10] passe de ON à OFF), garantissant ainsi que le chemin planifié a été obtenu et stocké.

  31:  !follow the planned path to pick ;
  32:  !move to approach waypoint ;
  33:  !of picking ;
  34:J PR[60] 50% FINE    ;
  35:  !move to picking waypoint ;
  36:J PR[61] 10% FINE    ;
  37:  !add object grasping logic here, ;
  38:  !such as "DO[1]=ON" ;
  39:  PAUSE ;
  40:  !move to departure waypoint ;
  41:  !of picking ;
  42:J PR[62] 50% FINE    ;
  43:  !move to intermediate waypoint ;
  44:  !of placing ;
  45:J P[3] 50% CNT100    ;
  46:  !move to approach waypoint ;
  47:  !of placing ;
  48:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;

Dans le code ci-dessus, le robot se déplace le long du chemin planifié vers le point de passage d’approche de la prise (PR[60]), puis vers le point de passage de prise (PR[61]), effectue la prise (par exemple, DO[1]=ON), puis se déplace vers le point de passage de départ de la prise (PR[62]), le point de passage intermédiaire de la pose (P[3]) et enfin vers le point de passage d’approche de la pose (Tool_Offset,PR[2]).

  49:  !trigger Mech-Viz project and get ;
  50:  !planned path in advance ;
  51:  RUN MM_S8_SUB ;

Le code ci-dessus indique que le programme principal appelle de nouveau le sous-programme MM_S8_SUB pour déclencher l’exécution du projet Mech-Viz et obtenir le chemin planifié. Étant donné que le robot se trouve dans la zone de pose, il peut planifier à l’avance le prochain chemin de prise sans attendre la fin de la pose puis planifier le prochain chemin de prise.

  52:  !move to placing waypoint ;
  53:L P[4] 300mm/sec FINE    ;
  54:  !add object releasing logic here, ;
  55:  !such as "DO[1]=OFF" ;
  56:  PAUSE ;
  57:  !move to departure waypoint ;
  58:  !of placing ;
  59:L P[4] 1000mm/sec FINE Tool_Offset,PR[2]    ;
  60:  !move back to robot home position ;
  61:J P[1] 100% FINE    ;

Dans l’exemple ci-dessus, le robot se déplace vers le point de passage de pose (P[4]), effectue la pose (par exemple, DO[1]=OFF), puis se déplace vers le point de passage de départ de la pose (Tool_Offset,PR[2]) et ensuite vers la position d’origine du robot.

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.