Programme d’exemple 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 démarre le projet Mech-Viz, obtient la trajectoire planifiée, puis détermine si la trajectoire planifiée a été obtenue avec succès en fonction du code d’état. Si la trajectoire planifiée est obtenue avec succès, le robot effectuera des opérations de préhension et de dépose; sinon, le robot se mettra en pause.

Chemin du fichier

Vous pouvez vous rendre dans le répertoire d’installation de Mech-Vision et Mech-Viz et trouver le fichier en utilisant le chemin Communication Component/Robot_Interface/YASKAWA/sample/MM_S6_Viz_ErrorHandle.

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

Cette partie 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). En conséquence, seule la fonctionnalité de gestion des erreurs en fonction des différents codes d’erreur est décrite dans la section suivante. Pour des informations sur les parties de MM_S6_Viz_ErrorHandle qui sont identiques à celles de MM_S2_Viz_Basic, voir Programme d’exemple 2: MM_S2_Viz_Basic.
NOP
'--------------------------------
'FUNCTION: trigger Mech-Viz
'project and get planned path,
'handle errors according to
'status codes (if no point cloud
'in ROI, retry several times
'before exit loop)
'Mech-Mind, 2023-12-25
'--------------------------------
'clear I50 to I69
CLEAR I050 20
'initialize p variables
SUB P071 P071
SUB P072 P072
SUB P073 P073
'initialize i variables
SET I005 0
'move to robot home position
MOVJ C00000 VJ=50.00
'initialize communication
'parameters (initialization is
'required only once)
CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
'move to image-capturing position
MOVJ C00001 VJ=50.00 PL=0
'open socket connection
CALL JOB:MM_OPEN_SOCKET
*RECAP
'trigger Mech-Viz project
CALL JOB:MM_START_VIZ ARGF"2;30"
'get planned path, 1st argument
'(1) means getting pose in JPs
CALL JOB:MM_GET_VIZDATA ARGF"1;51;52;53"
'check whether planned path has
'been got from Mech-Viz
'successfully
IFTHENEXP I053<>2100
	 IFTHENEXP I053=2038
		'no point cloud in ROI, add
		'error handling logic here
		'self-adding then check retry
		'counter
		 INC I005
		 IFTHENEXP I005<3
			'jump back to vision retry label
			'if the number of retry times is
			'less than 3
			 JUMP *RECAP
		 ELSE
			'reset counter and exit loop if
			'the number of retry times has
			'reached 3
			 SET I005 0
			 JUMP *ENDLOOP
		 ENDIF
	 ELSE
		'add other error handling logic
		'here
		 PAUSE
		 JUMP *ENDLOOP
	 ENDIF
ENDIF
'close socket connection
CALL JOB:MM_CLOSE_SOCKET
'save waypoints of the planned
'path to local variables one
'by one
CALL JOB:MM_GET_JPS ARGF"1;71;61;62"
CALL JOB:MM_GET_JPS ARGF"2;72;63;64"
CALL JOB:MM_GET_JPS ARGF"3;73;65;66"
'follow the planned path to pick
'move to approach waypoint of
'picking
MOVJ P071 VJ=50.00 PL=0
'move to picking waypoint
MOVJ P072 VJ=10.00 PL=0
'add object grasping logic here,
'such as DOUT OT#(1) ON
PAUSE
'move to departure waypoint of
'picking
MOVJ P073 VJ=50.00 PL=0
'move to intermediate waypoint of
'placing
MOVJ C00002 VJ=50.00
'move to approach waypoint of
'placing
MOVL C00003 V=166.6 PL=0
'move to placing waypoint
MOVL C00004 V=50.0 PL=0
'add object releasing logic here,
'such as DOUT OT#(1) OFF
PAUSE
'move to departure waypoint of
'placing
MOVL C00005 V=166.6 PL=0
'move back to robot home position
MOVJ C00006 VJ=50.00
*ENDLOOP
PAUSE
END

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

sample6

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

Fonctionnalité Code et description

Traiter différents codes d’état

...
SET I005 0
...
*RECAP
'trigger Mech-Viz project
CALL JOB:MM_START_VIZ ARGF"2;30"
CALL JOB:MM_GET_VIZDATA ARGF"1;51;52;53"
IFTHENEXP I053<>2100
	 IFTHENEXP I053=2038
		'no point cloud in ROI, add
		'error handling logic here
		'self-adding then check retry
		'counter
		 INC I005
		 IFTHENEXP I005<3
			'jump back to vision retry label
			'if the number of retry times is
			'less than 3
			 JUMP *RECAP
		 ELSE
			'reset counter and exit loop if
			'the number of retry times has
			'reached 3
			 SET I005 0
			 JUMP *ENDLOOP
		 ENDIF
	 ELSE
		'add other error handling logic
		'here
		 PAUSE
		 JUMP *ENDLOOP
	 ENDIF
ENDIF
...
*ENDLOOP
PAUSE
END
  • INC: Incrémente la valeur de la variable spécifiée de 1.

  • JUMP: Saute à l’ID de position ou au programme spécifié.

Après l’exécution de MM_GET_VIZDATA, le robot stocke le code d’état reçu dans la variable I053. Vous pouvez effectuer l’opération correspondante en fonction du code d’erreur spécifique reçu.

  • Lorsque la variable I053 est définie sur 2100, le robot a obtenu la trajectoire planifiée avec succès. Le robot effectuera alors la préhension en suivant la trajectoire planifiée.

  • Lorsque la variable I053 n’est pas définie sur 2100, une exception s’est produite dans le système de vision. Vous devez effectuer l’opération correspondante en fonction du code d’erreur spécifique.

    • Lorsque la variable I053 est définie sur 2038, il n’existe aucun nuage de points dans la ROI, c.-à-d. que le robot ne peut pas obtenir la trajectoire planifiée. Dans ce cas, le robot peut essayer de déclencher à nouveau l’exécution du projet Mech-Viz pour obtenir la trajectoire planifiée. Le nombre de tentatives pour réobtenir la trajectoire planifiée est contrôlé par la variable I005 dans le programme d’exemple. Si aucun nuage de points n’existe après deux tentatives de réessai (c.-à-d. I005 est supérieur à 2), le programme se met en pause.

    • Lorsque la variable I053 est définie sur un autre code d’erreur, le programme se met en pause.

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.