샘플 프로그램11: MM_S11_Viz_Timer
프로그램 소개
기능 설명 |
로봇은 타이머를 사용하여 통신을 구축부터 피킹 및 배치 작업을 완료될 때까지 소요된 시간을 계산합니다. |
파일 경로 |
Mech-Vision 및 Mech-Viz의 설치 디렉토리로 이동하여 |
필요한 프로젝트 |
Mech-Vision와 Mech-Viz 프로젝트 |
사용 전제 조건 |
|
이 샘플 프로그램은 참고용으로 제공됩니다. 사용자는 실제 상황에 맞춰 이 내용을 바탕으로 수정해야 하며, 해당 프로그램을 그대로 사용하지 않도록 하십시오. |
프로그램 설명
다음에는 MM_S11_Viz_Timer 샘플 프로그램의 코드와 관련 설명입니다.
MM_S2_Viz_Basic 샘플과 비하면, 이 샘플은 타이머의 기능만 추가되었습니다.(이 기능의 코드가 굵게 표시됨). 따라서, MM_S11_Viz_Timer의 MM_S2_Viz_Basic과 일치하는 부분은 다시 설명하지 않습니다. (일치하는 부분에 대한 정보는 MM_S2_Viz_Basic샘플 프로그램 설명을 참조하십시오). |
1: !-------------------------------- ;
2: !FUNCTION: trigger Mech-Viz ;
3: !project and get planned path, ;
4: !add a timer to record cycle time ;
5: !Mech-Mind, 2023-12-25 ;
6: !-------------------------------- ;
7: ;
8: !set current uframe NO. to 0 ;
9: UFRAME_NUM=0 ;
10: !set current tool NO. to 1 ;
11: UTOOL_NUM=1 ;
12: !move to robot home position ;
13:J P[1] 100% FINE ;
14: !initialize communication ;
15: !parameters(initialization is ;
16: !required only once) ;
17: CALL MM_INIT_SKT('8','127.0.0.1',50000,5) ;
18: LBL[1:LOOP] ;
19: !reset timer to 0 ;
20: TIMER[1]=RESET ;
21: !start timer ;
22: TIMER[1]=START ;
23: !move to image-capturing position ;
24:L P[2] 1000mm/sec FINE ;
25: !trigger Mech-Viz project ;
26: CALL MM_START_VIZ(2,10) ;
27: !get planned path, 1st argument ;
28: !(1) means getting pose in JPs ;
29: CALL MM_GET_VIZ(1,51,52,53) ;
30: !check whether planned path has ;
31: !been got from Mech-Viz ;
32: !successfully ;
33: IF R[53]<>2100,JMP LBL[99] ;
34: !save waypoints of the planned ;
35: !path to local variables one ;
36: !by one ;
37: CALL MM_GET_JPS(1,60,70,80) ;
38: CALL MM_GET_JPS(2,61,71,81) ;
39: CALL MM_GET_JPS(3,62,72,82) ;
40: !follow the planned path to pick ;
41: !move to approach waypoint ;
42: !of picking ;
43:J PR[60] 50% FINE ;
44: !move to picking waypoint ;
45:J PR[61] 10% FINE ;
46: !add object grasping logic here, ;
47: !such as "DO[1]=ON" ;
48: PAUSE ;
49: !move to departure waypoint ;
50: !of picking ;
51:J PR[62] 50% FINE ;
52: !move to intermediate waypoint ;
53: !of placing ;
54:J P[3] 50% CNT100 ;
55: !move to approach waypoint ;
56: !of placing ;
57:L P[4] 1000mm/sec FINE Tool_Offset,PR[2] ;
58: !move to placing waypoint ;
59:L P[4] 300mm/sec FINE ;
60: !add object releasing logic here, ;
61: !such as "DO[1]=OFF" ;
62: PAUSE ;
63: !move to departure waypoint ;
64: !of placing ;
65:L P[4] 1000mm/sec FINE Tool_Offset,PR[2] ;
66: !move back to robot home position ;
67:J P[1] 100% FINE ;
68: !stop timer ;
69: TIMER[1]=STOP ;
70: !save timer value to register ;
71: R[99]=TIMER[1] ;
72: JMP LBL[1] ;
73: END ;
74: ;
75: LBL[99:vision error] ;
76: !add error handling logic here ;
77: !according to different ;
78: !error codes ;
79: !e.g.: status=2038 means no ;
80: !point cloud in ROI ;
81: PAUSE ;
위 샘플 프로그램 코드에 해당하는 워크플로는 아래 그림에 표시되어 있습니다.

아래 표는 타이머의 기능에 대해 설명합니다.
워크플로 | 코드와 설명 |
---|---|
루프를 통헤 통신을 구축부터 피킹 및 배치 작업을 완료될 때까지 소요된 시간을 계산하기 |
위의 코드는 프로그램은 LBL[1] 위치의 코드를 순환하게 수행합니다.
위 코드는 타이머 TIMER[1]을 0으로 재설정하는 것을 나타냅니다.
위 코드는 타이머 TIMER[1]이 시간을 측정하기 시작함을 나타냅니다.
위 코드는 타이머 TIMER[1]이 시간을 측정하기 완료함을 나타냅니다.
위의 코드는 타이머 TIMER[1]의 값을 R[99] 레지스터에 할당하여 타이머가 계산한 시간을 읽는 것을 의미합니다.(즉, 통신 구축부터 피킹 및 배치를 완료할 까지 걸리는 시간) |