Programme d’exemple 7 : MM_S7_Viz_SwitchTCP
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 |
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.
Le tableau ci-dessous décrit le code en gras.
| Fonctionnalité | Code et description | ||
|---|---|---|---|
Obtenir la trajectoire planifiée |
L’ensemble de l’instruction indique que le robot obtient la trajectoire planifiée à partir du projet Mech-Viz.
|
||
Stocker la trajectoire planifiée |
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.
|
||
Changer l’outil en fonction de l’ID d’outil |
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 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].
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.
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. |