Hello Everyone,
working on a R200iA, with a Rj3iB teach pendant.
My issue is after the robot runs for 3-4 hours i am getting a stack overflow.
i have already increased the size to 4000, but that has not corrected my issue.
I am putting my programs here for some help diagnosing the issues.
I may not be the best programmer or have things worded properly, but it works(mostly).
I have seen the error in the conv_igt, and also in the Prog14001 programs.
please help.
thanks
Chris
Code
/PROG PB1 Macro
/ATTR
OWNER = MNEDITOR;
COMMENT = "CYCLE START";
PROG_SIZE = 124;
CREATE = DATE 18-12-11 TIME 14:01:11;
MODIFIED = DATE 19-01-10 TIME 10:27:21;
FILE_NAME = ;
VERSION = 0;
LINE_COUNT = 1;
MEMORY_SIZE = 468;
PROTECT = READ_WRITE;
TCD: STACK_SIZE = 2000,
TASK_PRIORITY = 50,
TIME_SLICE = 0,
BUSY_LAMP_OFF = 0,
ABORT_REQUEST = 0,
PAUSE_REQUEST = 0;
DEFAULT_GROUP = *,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/MN
1: CALL EJCT_F_R ;
/POS
/END
Display More
Code
/PROG EJCT_F_R
/ATTR
OWNER = MNEDITOR;
COMMENT = "FRONT OR REAR";
PROG_SIZE = 512;
CREATE = DATE 18-12-11 TIME 14:11:13;
MODIFIED = DATE 18-12-14 TIME 15:57:09;
FILE_NAME = SETUP;
VERSION = 0;
LINE_COUNT = 14;
MEMORY_SIZE = 992;
PROTECT = READ_WRITE;
TCD: STACK_SIZE = 3000,
TASK_PRIORITY = 50,
TIME_SLICE = 0,
BUSY_LAMP_OFF = 0,
ABORT_REQUEST = 0,
PAUSE_REQUEST = 0;
DEFAULT_GROUP = 1,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/APPL
/MN
1: COL DETECT ON ;
2: IF R[199:IN MOLD AREA]=0 AND R[198:CONVEY AREA]=0 AND
: R[197:SETUP AREA]=0,JMP LBL[1] ;
3: IF R[199:IN MOLD AREA]=1 AND R[17:FRONT EJECT 1]=1,CALL FRT_HOME ;
4: IF R[199:IN MOLD AREA]=1 AND R[18:REAR EJECT 1]=1,CALL RER_HOME ;
5: IF R[198:CONVEY AREA]=1,CALL CON_HOME ;
6: IF R[197:SETUP AREA]=1,CALL SET_HOME ;
7: LBL[1] ;
8: IF SO[5:User LED#1]=ON,JMP LBL[2] ;
9: CALL HOME ;
10: LBL[2] ;
11: SELECT R[19:MOLD NUMBER]=0,CALL ABORTIT ;
12: IF R[17:FRONT EJECT 1]>=1 AND R[18:REAR EJECT 1]=1,CALL ABORTIT ;
13: IF R[17:FRONT EJECT 1]=1,CALL EJ_FRONT ;
14: IF R[18:REAR EJECT 1]=1,CALL EJ_REAR ;
/POS
/END
Display More
Code
/PROG EJ_REAR
/ATTR
OWNER = MNEDITOR;
COMMENT = "REAR_EJECT_MAIN";
PROG_SIZE = 798;
CREATE = DATE 18-12-11 TIME 13:56:21;
MODIFIED = DATE 19-01-11 TIME 08:33:29;
FILE_NAME = REAR_EJ;
VERSION = 0;
LINE_COUNT = 29;
MEMORY_SIZE = 1266;
PROTECT = READ_WRITE;
TCD: STACK_SIZE = 3000,
TASK_PRIORITY = 50,
TIME_SLICE = 0,
BUSY_LAMP_OFF = 0,
ABORT_REQUEST = 0,
PAUSE_REQUEST = 0;
DEFAULT_GROUP = 1,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/APPL
/MN
1: PAYLOAD[3] ;
2: IF SO[5:User LED#1]=OFF,CALL CG_ADJST ;
3: IF SO[5:User LED#1]=OFF,CALL HOME ;
4: SO[5:User LED#1]=(ON) ;
5: ;
6: !GO HOME ABOVE CONVEYOR ;
7: IF R[199:IN MOLD AREA]=1,CALL RER_HOME ;
8: IF R[198:CONVEY AREA]=1,CALL CON_HOME ;
9: IF R[197:SETUP AREA]=1,CALL SET_HOME ;
10: ;
11: !WAITING ON INPUTS ;
12: ;
13: JMP LBL[10] ;
14: ;
15: CALL ENTER_IO ;
16: ;
17: LBL[10] ;
18: ;
19: !ENTER TOOL NUMBER HERE ;
20: SELECT R[19:MOLD NUMBER]=0,CALL ABORTIT ;
21: SELECT R[19:MOLD NUMBER]=14001,CALL PRG14001 ;
22: SELECT R[19:MOLD NUMBER]=14016,CALL PRG14016 ;
23: SELECT R[19:MOLD NUMBER]=6022,CALL PRG06022 ;
24: SELECT R[19:MOLD NUMBER]=16042,CALL PRG16042 ;
25: SELECT R[19:MOLD NUMBER]=13002,CALL PRG13002 ;
26: IF R[19:MOLD NUMBER]=14001 OR R[19:MOLD NUMBER]=14016,CALL CONV_IGT ;
27: IF R[19:MOLD NUMBER]=14001 OR R[19:MOLD NUMBER]=14016,JMP LBL[2] ;
28: CALL CONVEY ;
29: LBL[2] ;
/POS
/END
Display More
Code
/PROG PRG14001
/ATTR
OWNER = MNEDITOR;
COMMENT = "14001 MOLD REAR";
PROG_SIZE = 3335;
CREATE = DATE 19-01-14 TIME 09:25:19;
MODIFIED = DATE 19-01-14 TIME 09:25:19;
FILE_NAME = PRG14016;
VERSION = 0;
LINE_COUNT = 129;
MEMORY_SIZE = 3827;
PROTECT = READ_WRITE;
TCD: STACK_SIZE = 2000,
TASK_PRIORITY = 50,
TIME_SLICE = 0,
BUSY_LAMP_OFF = 0,
ABORT_REQUEST = 0,
PAUSE_REQUEST = 0;
DEFAULT_GROUP = 1,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/APPL
/MN
1: SO[5:User LED#1]=(ON) ;
2: DO[11:VACUUM PUMP]=ON ;
3: DO[2:ROBOT NO CONTROL]=ON ;
4: DO[1:PERMIT CLMP CLOSE]=ON ;
5: IF R[195:FAKE AUTO]=1,JMP LBL[21] ;
6: WAIT DI[8:FULLY AUTO]=ON ;
7: WAIT DI[10:MOLD CLOSED]=ON ;
8: LBL[21] ;
9: DO[2:ROBOT NO CONTROL]=OFF ;
10: DO[1:PERMIT CLMP CLOSE]=OFF ;
11: ;
12: !SETTING POSITIONS ;
13: R[199:IN MOLD AREA]=0 ;
14: R[198:CONVEY AREA]=1 ;
15: R[197:SETUP AREA]=0 ;
16: ;
17: !APPROACH MACHINE ;
18:J P[1] 10% CNT100 ;
19:J P[2] 10% CNT100 ;
20: ;
21: !APPROACH MACHINE CLOSER ;
22:J P[3] 10% CNT100 ;
23:J P[4] 10% CNT100 ;
24: ;
25: !WAITING ON MACHINE ;
26: WAIT DI[1:MOLD IS OPEN]=ON ;
27: IF R[195:FAKE AUTO]=1,JMP LBL[14] ;
28: WAIT DI[8:FULLY AUTO]=ON ;
29: LBL[14] ;
30: ;
31: !SETTING OUTPUTS ;
32: DO[2:ROBOT NO CONTROL]=OFF ;
33: DO[1:PERMIT CLMP CLOSE]=OFF ;
34: DO[4:PERMIT EJCT FWD]=OFF ;
35: DO[3:PERMIT EJCT RET]=OFF ;
36: DO[10:GRIPPER]=OFF ;
37: DO[7:VACUUM]=OFF ;
38: ;
39: !SETTING POSITION REGISTERS ;
40: R[199:IN MOLD AREA]=1 ;
41: R[198:CONVEY AREA]=0 ;
42: R[197:SETUP AREA]=0 ;
43: ;
44: !ENTERING MOLD ;
45: IF R[195:FAKE AUTO]=1,JMP LBL[16] ;
46: WAIT DI[8:FULLY AUTO]=ON ;
47: LBL[16] ;
48:L P[5] 1100mm/sec CNT100 ;
49: IF R[195:FAKE AUTO]=1,JMP LBL[11] ;
50: IF DI[8:FULLY AUTO]=OFF,CALL RER_HOME ;
51: LBL[11] ;
52:L P[6] 1000mm/sec CNT100 ;
53: IF R[195:FAKE AUTO]=1,JMP LBL[12] ;
54: IF DI[8:FULLY AUTO]=OFF,CALL RER_HOME ;
55: LBL[12] ;
56:L P[7] 800mm/sec CNT100 ;
57: IF R[195:FAKE AUTO]=1,JMP LBL[13] ;
58: IF DI[8:FULLY AUTO]=OFF,CALL RER_HOME ;
59: LBL[13] ;
60:L P[8] 600mm/sec CNT100 ;
61: ;
62: !APPROACH PICK PART ;
63: IF DI[8:FULLY AUTO]=OFF,CALL RER_HOME ;
64:L P[9] 300mm/sec CNT100 ;
65: ;
66: !PICK PART POSITION ;
67: IF DI[8:FULLY AUTO]=OFF,CALL RER_HOME ;
68:L P[10] 200mm/sec FINE ;
69: ;
70: !VACUUM AND EJECT ON ;
71: DO[7:VACUUM]=ON ;
72: DO[4:PERMIT EJCT FWD]=ON ;
73: WAIT R[21] ;
74: DO[4:PERMIT EJCT FWD]=OFF ;
75: ;
76: !CHECKING VACUUM SENSOR ;
77: WAIT R[6] ;
78: JMP LBL[100] ;
79: IF R[15:VACUUM SENSOR 1]=0,JMP LBL[2] ;
80: WAIT DI[2:VACUUM MADE]=ON ;
81: LBL[2] ;
82: DO[4:PERMIT EJCT FWD]=ON ;
83: DO[3:PERMIT EJCT RET]=OFF ;
84: LBL[100] ;
85: ;
86: !RUN GRIP PROGRAM ;
87: CALL GRIPPER ;
88: ;
89: !RETRACT WITH PART ;
90: OVERRIDE=R[8:PICK SPD OVERIDE] ;
91: IF DI[8:FULLY AUTO]=OFF,CALL RER_HOME ;
92:L P[11] 35mm/sec FINE ;
93: OVERRIDE=100% ;
94: ;
95: !CHECKING GRIPPER SENSOR ;
96: IF R[16:GRIP SENSOR 1]=0,JMP LBL[3] ;
97: IF RI[1:OP SIDE GRIPPER]=OFF OR RI[2:TOP GRIPPER]=OFF OR
: RI[3:NON OP_GRIPPER]=OFF OR RI[4:BOTTOM GRIPPER]=OFF,CALL RER_HOME ;
98: LBL[3] ;
99: ;
100: IF R[15:VACUUM SENSOR 1]=0,JMP LBL[9] ;
101: WAIT DI[2:VACUUM MADE]=ON ;
102: LBL[9] ;
103: ;
104: !ALLOW EJECT RETURN ;
105: DO[3:PERMIT EJCT RET]=ON ;
106: ;
107: !NOT ALLOW EJECT FORWARD ;
108: DO[4:PERMIT EJCT FWD]=OFF ;
109: ;
110: !START TO LEAVE MOLD ;
111:L P[12] 400mm/sec CNT100 ;
112: ;
113: !SPRAYING MOLD SEQUENCE ;
114: R[27:CURRENT SPRY CNT]=R[27:CURRENT SPRY CNT]+1 ;
115: IF R[27:CURRENT SPRY CNT]<R[26:OFTEN TO SPRAY],JMP LBL[6] ;
116: R[27:CURRENT SPRY CNT]=0 ;
117: CALL SPR14001 ;
118: JMP LBL[8] ;
119: LBL[6] ;
120: ;
121: !LEAVING MOLD AREA ;
122:L P[13] 400mm/sec CNT100 ;
123:L P[14] 350mm/sec CNT100 ;
124:L P[15] 350mm/sec CNT100 ;
125:L P[16] 350mm/sec CNT100 ;
126: LBL[8] ;
127:L P[17] 500mm/sec CNT100 ;
128: LBL[20] ;
129: LBL[15] ;
/POS
Display More
Code
PROG SPR14001
/ATTR
OWNER = MNEDITOR;
COMMENT = "SPRAY 14001";
PROG_SIZE = 1356;
CREATE = DATE 19-01-11 TIME 13:58:14;
MODIFIED = DATE 19-01-11 TIME 13:58:14;
FILE_NAME = SPR14016;
VERSION = 0;
LINE_COUNT = 22;
MEMORY_SIZE = 1616;
PROTECT = READ_WRITE;
TCD: STACK_SIZE = 0,
TASK_PRIORITY = 50,
TIME_SLICE = 0,
BUSY_LAMP_OFF = 0,
ABORT_REQUEST = 0,
PAUSE_REQUEST = 0;
DEFAULT_GROUP = 1,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/APPL
/MN
1:L P[1] 1000mm/sec CNT100 ;
2:J P[2] 10% FINE ;
3: CALL SPRAY ;
4:L P[3] 800mm/sec CNT100 ;
5:L P[4] 550mm/sec CNT100 ;
6:J P[5] 10% FINE ;
7: CALL SPRAY ;
8:J P[6] 15% FINE ;
9: CALL SPRAY ;
10:L P[14] 400mm/sec CNT100 ;
11:J P[7] 10% FINE ;
12: CALL SPRAY ;
13:J P[8] 30% CNT100 ;
14:J P[9] 20% CNT100 ;
15:J P[10] 10% FINE ;
16: CALL SPRAY ;
17:J P[11] 20% CNT100 ;
18:L P[12] 100mm/sec FINE ;
19: !SPRAYING 2 TIMES ;
20: CALL SPRAY ;
21: CALL SPRAY ;
22:J P[13] 35% CNT100 ;
/POS
Display More
Code
/PROG CONV_IGT
/ATTR
OWNER = MNEDITOR;
COMMENT = "IGT_CONVEY MOVES";
PROG_SIZE = 1727;
CREATE = DATE 19-01-14 TIME 09:56:02;
MODIFIED = DATE 19-01-14 TIME 09:56:02;
FILE_NAME = CONVEY;
VERSION = 0;
LINE_COUNT = 53;
MEMORY_SIZE = 2147;
PROTECT = READ_WRITE;
TCD: STACK_SIZE = 4000,
TASK_PRIORITY = 50,
TIME_SLICE = 0,
BUSY_LAMP_OFF = 0,
ABORT_REQUEST = 0,
PAUSE_REQUEST = 0;
DEFAULT_GROUP = 1,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/APPL
/MN
1: !LEAVING MACHINE AREA ;
2: R[199:IN MOLD AREA]=0 ;
3: R[198:CONVEY AREA]=1 ;
4: R[197:SETUP AREA]=0 ;
5:J P[1:LEAVE MACHINE] 20% CNT100 ;
6: !CHECKING VAC SENSOR ;
7: IF R[15:VACUUM SENSOR 1]=0,JMP LBL[2] ;
8: IF DI[2:VACUUM MADE]=OFF,CALL ABORTIT ;
9: LBL[2] ;
10: ;
11: !CHECKING GRIPPER SENSOR ;
12: IF R[16:GRIP SENSOR 1]=0,JMP LBL[3] ;
13: IF RI[1:OP SIDE GRIPPER]=OFF OR RI[2:TOP GRIPPER]=OFF OR
: RI[3:NON OP_GRIPPER]=OFF OR RI[4:BOTTOM GRIPPER]=OFF,CALL ABORTIT ;
14: LBL[3] ;
15: ;
16: !ALLOW CLAMP TO CLOSE ;
17: DO[1:PERMIT CLMP CLOSE]=ON ;
18: ;
19: !ON WAY OVER TO CONVEYOR ;
20:J P[3] 15% CNT100 ;
21:J P[5] 15% CNT100 ;
22:J P[9] 15% CNT100 ;
23: ;
24: !PART DROP AT CONVEYOR ;
25:L P[6] 500mm/sec FINE ;
26: WAIT R[5] ;
27: DO[7:VACUUM]=OFF ;
28: WAIT DI[2:VACUUM MADE]=OFF ;
29: DO[10:GRIPPER]=OFF ;
30: WAIT R[1] ;
31: RUN CONV_RUN ;
32: ;
33: !RAISING ABOVE CONVEYOR ;
34:L P[7] 200mm/sec CNT100 ;
35: ;
36: !STOP CLAMP FROM CLOSING ;
37: WAIT DI[10:MOLD CLOSED]=ON ;
38: DO[1:PERMIT CLMP CLOSE]=OFF ;
39: DO[4:PERMIT EJCT FWD]=OFF ;
40: DO[3:PERMIT EJCT RET]=OFF ;
41: ;
42: !WAY ABOVE CONVEYOR ;
43:J P[8] 10% CNT100 ;
44: ;
45: !SETTING REGISTERS ;
46: R[199:IN MOLD AREA]=0 ;
47: R[198:CONVEY AREA]=0 ;
48: R[197:SETUP AREA]=0 ;
49: ;
50: !CALLING FRONT OR REAR EJECT ;
51: IF R[17:FRONT EJECT 1]>=1 AND R[18:REAR EJECT 1]=1,CALL ABORTIT ;
52: IF R[17:FRONT EJECT 1]=1,CALL EJ_FRONT ;
53: IF R[18:REAR EJECT 1]=1,CALL EJ_REAR ;
/POS
Display More