VEHICLE OPERATION STRUCTURE AND STANDARDS
(VOSS)
FORD Robot Programming Guide - FANUC Implementation
Next Gen - Integrated Ethernet Safety for R-30iA and R-30iB
Controllers
Appendix Roller Hemmer
Table of Contents
1 SAMPLE TEACH PENDANT PROGRAMS – ROLLER_HEMMER 4
2 SAMPLE TEACH PENDANT PROGRAMS – ANALOG
ROLLER_HEMMER ..................................................................................... 5
2.1 ROLLER HEMMER WITHOUT OVERHEAD CONTROL......................................................................... 6
2.1.1 PG21 – Carried Roller ........................................................................................................... 6
2.1.2 DRY_HEM – Hemming Dry Cycle ........................................................................................15
2.1.3 PULL_ROLL – Pull Position MACRO ..................................................................................21
2.1.4 PUSH_ROLL – Push Position MACRO ................................................................................22
2.1.5 HOME_IO – Reset Input/Output MACRO .............................................................................23
2.2 ROLLER HEMMER WITH OVERHEAD CONTROL ..............................................................................25
2.2.1 PG21 – Carried Roller ..........................................................................................................25
2.2.2 DRY_PASS – Hemming Dry Cycle ........................................................................................34
2.2.3 PULL_ROLL – Pull Position MACRO ..................................................................................39
2.2.4 PUSH_ROLL – Push Position MACRO ................................................................................40
2.2.5 DIE_1DROP – Drop Die MACRO ........................................................................................41
2.2.6 DIE_1PICK – Pick Die MACRO ...........................................................................................43
2.2.7 DIE_VERIFY – Die Verify / Changes Die MACRO ..............................................................45
2.2.8 OLD_WHEEL_CK – Old Wheel Check .................................................................................50
2.2.9 DIECHNG_RAISE – Die Change Raise MACRO .................................................................51
2.2.10 LOWER_DIE1 – Die Change Lower MACRO ..................................................................52
2.2.11 LOWERED_POS – Lower Hemmer MACRO ...................................................................53
2.2.12 RAISED_POS – Raise Hemmer MACRO .........................................................................54
2.2.13 UPPER_POS_HOME – Hemmer Home Position MACRO ..............................................55
2.2.14 WORK_POS1 – Hemmer Lowering Cycle MACRO .........................................................56
2.2.15 HOME_IO – Reset Input/Output MACRO ........................................................................57
3 ROBOT GROUP I/O FOR ANALOG ROLLER HEMMERS ............ 59
4 ROBOT GROUP I/O FOR PRESSURE REQUEST AND SELECT
BITS .............................................................................................................. 62
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 2 of 64
Revision History
Revision Modification Date Description
1.0 2012-05-11 Initial Release
1.1 2012-11-15 Updated the names of what documents should be
referred to.
1.2 2013-03-18 Renamed document for R-30iA and R-30iB.
1.3 2013-07-03 Added chapter of TP programs defining Analog Roller
Hemming with corresponding chapter describing special
I/O.
1.4 2014-06-24 Corrected PG21 to set Clear to Transfer and Unclamp at
end of program
Updated HOME_IO to reset Robot at Minor
Maintenance;
Added DO[587:RBT AT MINMAINT]=OFF
1.5 2015-01-30 Added Second Program Verify to Main Style Programs
Updated PMC:: Added Couple and Decouple pass
through signals to Tool Changer Subprogram
1.6 2016-02-12 Updated PMC: 2015-10-30 : Added Logic to allow for
Robot Cycle Start from Multiple Home Positions;
Added Logic to require a TP Interface button press to
(Un)Lock the Tool Changer while in Teach; Added
Logic to not allow the signal for the Lock Command to
go low if the Tool Change Application Bit is inactive
Added Section to Show Configurations Settings for
GIO4 for the Pressure Select and Request Bits
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 3 of 64
1 Sample Teach Pendant Programs –
ROLLER_HEMMER
The non-analog roller hemmer application for this installation is controlled by the
PLC and will be using the MH PMC and Robot teach pendant programs.
These are found in the documents: Ford-FANUC NextGen ENET Safe Robot
Programming Guide Common and Ford-FANUC NextGen ENET Safe MH
Appendix.
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 4 of 64
2 Sample Teach Pendant Programs – ANALOG
ROLLER_HEMMER
The analog roller hemmer application for this installation is controlled by the PLC
and will be using the MH PMC and robot teach pendant programs.
With the exception of the teach pendant programs shown below, teach pendant
programs are found in the documents: Ford-FANUC NextGen ENET Safe Robot
Programming Guide Common and Ford-FANUC NextGen ENET Safe MH
Appendix.
The analog roller hemmer uses analog I/O to control the roller pressure. There is a
minimum of 20 PSI to activate the pressure switch.
Table 1. Analog Pressure Summary
Analog Output Value Compliance Pressure
AO[1]=0-200 0 PSI
AO[1]=380 15 PSI
AO[1]=450 20 PSI (MIN)
AO[1]=570 30 PSI
AO[1]=690 40 PSI
AO[1]=820 50 PSI
AO[1]=940 60 PSI (MAX)
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 5 of 64
2.1 Roller Hemmer Without Overhead Control
2.1.1 PG21 – Carried Roller
NOTE: This program uses an Analog Pressure switch to adjust roller hemmer
pressure during the cycle. Please see Table 1. above for a list of values that can
be used with this setup.
/PROG PG21
/ATTR
OWNER = MNEDITOR;
COMMENT = "";
PROG_SIZE = 19329;
CREATE = DATE 13-02-27 TIME 06:51:06;
MODIFIED = DATE 13-03-08 TIME 06:43:26;
FILE_NAME = PG21;
VERSION = 0;
LINE_COUNT = 408;
MEMORY_SIZE = 19745;
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
SPOT : TRUE ;
SPOT Welding Equipment Number : 1 ;
/MN
1: !******************************** ;
2: !Carried Roller Hemmer PG21 ;
3: ! ;
4: ! ;
5: ! ;
6: !******************************** ;
7: ;
8: !Verify Program ;
9: PROGRAM VERIFY(21) ;
10: ;
10: !Set Robot UTOOL Number ;
11: UTOOL_NUM=1 ;
12: ;
12: !Set Robot UFRAME Number ;
11: UFRAME_NUM=1 ;
13: ;
14: PAYLOAD[2] ;
15: ;
16: !Run Home IO ;
17: SETUP OUTPUTS ;
18: ;
19: !Move Home ;
20: GO TO HOME POS ;
21: ;
22: !******************************** ;
23: !Minimum 20PSI to Activate ;
24: !Pressure Switch ;
25: !------------------------------- ;
26: ! ANALOG SUMMARY CHART ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 6 of 64
27: !AO[1]=0 to 200 IS 0PSI ;
28: !AO[1]=380 IS 15PSI ;
29: !AO[1]=450 IS 20PSI MIN ;
30: !AO[1]=570 IS 30PSI ;
31: !AO[1]=690 IS 40PSI ;
32: !AO[1]=820 IS 50PSI ;
33: !AO[1]=940 IS 60PSI MAX ;
34: !------------------------------- ;
35: ;
36: !SET COMPLIANCE PRESSURE ;
37: DO[537:PRESREQBIT1]=ON ;
38: AO[1:COMPLIANCE PRESSURE]=690 ;
39: !******************************** ;
40: ;
41: !WAIT FOR AIR PRESSURE OK ;
42: WAIT DI[537:PRESSELBIT1]=ON ;
43: ;
44: !SET ROLLER POSITION ;
45: CALL PUSH_ROLL ;
46: ;
46: !OPTIONAL ;
46: !WAIT ROLLER IN PUSH POSITION ;
47: !WAIT DI[530:ROLLINPUSHPOS]=ON ;
48: ;
52: !******************************** ;
53: !CHECK FOR ROLLERS PRESENT ;
54: !******************************** ;
55:J P[233] 80% CNT50 ;
56:J P[234] 80% CNT50 ;
57:L P[1] 600mm/sec FINE ;
58: ;
59: DO[531:ROLL1CHKREQ]=ON ;
60: WAIT DI[531:ROLL1CHKREV]=ON ;
61: DO[531:ROLL1CHKREQ]=OFF ;
62: ;
63:L P[234] 1000mm/sec CNT10 ;
64:J P[233] 80% CNT50 ;
65: !------------------------------- ;
66: ;
67: LBL[999] ;
68: ;
28: ! Move to pounce position ;
29: GO TO POUNCE ;
30: ;
31: !Clr to Adv Xfer ;
32: DO[954:CLRTOADVXFR]=ON ;
33: ;
34: !Clr to Ret Xfer ;
35: DO[955:CLRTORETXFR]=ON ;
36: ;
37: !Clr to Unclamp ;
38: DO[956:CLRTOUNCLMP]=OFF ;
39: ;
40: !-------------------------------- ;
41: LBL[33:Loop Back ] ;
42: ;
43: ! Turn ON Robot in LOOP ;
44: DO[24:RBT IN LOOP]=ON ;
45: ;
46: !-------------------------------- ;
47: !Wait Continue from Pounce ;
48: !or Return to Home ;
49: WAIT DI[9:START CYCLE]=ON OR DI[13:RETURN TO HOME]=ON ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 7 of 64
50: ;
51: ! Turn OFF Robot in LOOP ;
52: DO[24:RBT IN LOOP]=OFF ;
53: ;
54: !If Return to Home ;
55: !jump to LB[13] ;
56: IF DI[13:RETURN TO HOME]=ON,JMP LBL[13] ;
57: ;
58: !If Continue from Pounce ;
59: !jump to LBL[9]-Continue- ;
60: IF DI[9:START CYCLE]=ON,JMP LBL[9] ;
61: ;
62: JMP LBL[33] ;
63: ;
64: !-------------------------------- ;
65: !Continue from Pounce ;
66: LBL[9] ;
5: ;
6: !Verify Program ;
7: PROGRAM VERIFY(21) ;
8: ;
68: !Clr to Return Xfer ;
69: DO[955:CLRTORETXFR]=OFF ;
70: ;
71: !Clr to Adv Xfer ;
72: DO[954:CLRTOADVXFR]=OFF ;
73: ;
74: !Clr to Unclamp ;
75: DO[956:CLRTOUNCLMP]=OFF ;
90: ;
91: IF DI[10:AUTO REPEAT MD]=ON,JMP LBL[90] ;
92: ;
93: !CALL ZONE 5 W/HEMMER ;
94: ENTER ZONE(5) ;
95: ;
96: !******************************** ;
97: ! Hem Pass 1 ;
98: !******************************** ;
99: ;
100: !Wait Hem Pass1 Start ;
101: WAIT GI[3:START PASS BIT]=1 ;
102: ;
103: !Hemming pass1 ;
104: GO[3:HEM PASS BIT]=1 ;
105: ;
106: !Enter Zone with R2 ;
107: ENTER ZONE(1) ;
108: ;
109:J P[3:via1] 80% CNT100 ;
110:J P[4:via2] 80% CNT50 ;
111:L P[5:via3] 1000mm/sec CNT50 ;
112:L P[6:via4] 500mm/sec FINE ;
113:L P[7:via5] 500mm/sec CNT50 ;
114:C P[8:via6]
: P[9:via7] 300mm/sec CNT10 ;
115:L P[10:via8] 300mm/sec CNT10 ;
116:C P[11:via9]
: P[12:via10] 500mm/sec CNT20 ;
117:L P[13:via11] 500mm/sec CNT20 ;
118:L P[14:via12] 500mm/sec CNT20 ;
119:L P[15:via13] 500mm/sec CNT20 ;
120:L P[16:via14] 500mm/sec CNT20 ;
121:L P[17:via15] 500mm/sec CNT20 ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 8 of 64
122:L P[18:via16] 500mm/sec CNT20 ;
123:L P[19:via17] 500mm/sec CNT20 ;
124:L P[20:via18] 300mm/sec CNT10 ;
125:L P[21:via19] 300mm/sec CNT10 ;
126:L P[22:via20] 300mm/sec CNT10 ;
127:C P[23:via21]
: P[24:via22] 500mm/sec CNT20 ;
128:L P[25:via23] 500mm/sec CNT20 ;
129:L P[26:via24] 350mm/sec FINE ;
130: ;
131: !Exit zone with R2 ;
132: EXIT ZONE(1) ;
133: ;
134:C P[27:via25]
: P[28:via26] 350mm/sec CNT10 ;
135:L P[29:via27] 500mm/sec CNT20 ;
136:L P[30:via28] 500mm/sec CNT20 ;
137:L P[31:via29] 500mm/sec FINE ;
138:L P[32:via30] 500mm/sec CNT20 ;
139:L P[33:via31] 500mm/sec CNT20 ;
140:L P[34:via32] 500mm/sec CNT20 ;
141:L P[35:via33] 350mm/sec CNT10 ;
142:L P[36:via34] 350mm/sec CNT10 ;
143:L P[37:via35] 350mm/sec CNT10 ;
144:C P[38:via36]
: P[39:via37] 500mm/sec CNT20 ;
145:L P[40:via38] 500mm/sec CNT20 ;
146:L P[41:via39] 500mm/sec CNT20 ;
147:L P[42:via40] 500mm/sec CNT20 ;
148:L P[43:via41] 500mm/sec CNT20 ;
149:L P[44:via42] 400mm/sec CNT10 ;
150:C P[45:via43]
: P[46:via44] 500mm/sec CNT20 ;
151:L P[47:via45] 500mm/sec CNT20 ;
152:L P[48:via46] 400mm/sec CNT10 ;
153: ;
154: !Enter zone with R4 ;
155: ENTER ZONE(2) ;
156: ;
157:C P[49:via47]
: P[50:via48] 500mm/sec CNT20 ;
158:C P[51:via49]
: P[52:via50] 500mm/sec CNT20 ;
159:L P[53:via51] 500mm/sec CNT20 ;
160:L P[54:via52] 500mm/sec CNT20 ;
161:L P[55:via53] 500mm/sec CNT20 ;
162: ;
163: !Hem pass1 complete ;
164: GO[3:HEM PASS BIT]=0 ;
165: ;
166:L P[56:via] 1000mm/sec CNT20 ;
167: ;
168: !******************************** ;
169: ! Hem Pass 2 ;
170: !******************************** ;
171: ;
172: !Wait Hem Pass2 Start ;
173: WAIT GI[3:START PASS BIT]=2 ;
174: ;
175: !Hemming pass2 ;
176: GO[3:HEM PASS BIT]=2 ;
177: ;
178:L P[57:via0] 1000mm/sec CNT50 ;
179:L P[58:via1] 500mm/sec FINE ;
180:L P[59:via2] 500mm/sec CNT50 ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 9 of 64
181:L P[60:via3] 500mm/sec CNT50 ;
182:L P[61:via4] 500mm/sec CNT50 ;
183:C P[62:via5]
: P[63:via6] 500mm/sec CNT50 ;
184:C P[64:via7]
: P[65:via8] 400mm/sec CNT30 ;
185:L P[66:via9] 500mm/sec CNT50 ;
186:L P[67:via10] 500mm/sec CNT50 ;
187:C P[68:via11]
: P[69:via12] 400mm/sec CNT30 ;
188:L P[70:via13] 500mm/sec CNT50 ;
189:L P[71:via14] 500mm/sec CNT50 ;
190:L P[72:via15] 500mm/sec FINE ;
191: ;
192: !Exit zone with R4 ;
193: EXIT ZONE(2) ;
194: ;
195:L P[73:via16] 500mm/sec CNT50 ;
196:L P[74:via17] 500mm/sec CNT30 ;
197:C P[75:via18]
: P[76:via19] 350mm/sec CNT30 ;
198:L P[77:via20] 350mm/sec CNT30 ;
199:L P[78:via21] 350mm/sec CNT30 ;
200:L P[79:via22] 500mm/sec CNT50 ;
201:L P[80:via23] 500mm/sec CNT50 ;
202:L P[81:via24] 500mm/sec CNT50 ;
203:L P[82:via25] 500mm/sec CNT50 ;
204:L P[83:via26] 500mm/sec CNT50 ;
205:L P[84:via27] 500mm/sec CNT50 ;
206: ;
207: !Enter zone with R2 ;
208: ENTER ZONE(1) ;
209: ;
210:L P[85:via28] 350mm/sec CNT30 ;
211:C P[86:via29]
: P[87:via30] 350mm/sec CNT30 ;
212:L P[88:via31] 500mm/sec CNT50 ;
213:L P[89:via32] 500mm/sec CNT50 ;
214:C P[90:via33]
: P[91:via34] 300mm/sec CNT30 ;
215:L P[92:via35] 300mm/sec CNT30 ;
216:C P[93:via36]
: P[94:via37] 500mm/sec CNT50 ;
217:L P[95:via38] 500mm/sec CNT50 ;
218:L P[96:via39] 500mm/sec CNT50 ;
219:L P[97:via40] 500mm/sec CNT50 ;
220:L P[98:via41] 500mm/sec CNT50 ;
221:L P[99:via42] 500mm/sec CNT50 ;
222:L P[100:via43] 500mm/sec CNT50 ;
223:C P[101:via44]
: P[102:via45] 300mm/sec CNT30 ;
224:L P[103:via46] 300mm/sec CNT30 ;
225:C P[104:via47]
: P[105:via48] 500mm/sec CNT50 ;
226:L P[106:via49] 500mm/sec CNT50 ;
227:L P[107:via50] 500mm/sec CNT50 ;
228:L P[108:via51] 1000mm/sec CNT50 ;
229: !Hem pass2 complete ;
230: GO[3:HEM PASS BIT]=0 ;
231: ;
232:J P[109:via52] 80% CNT50 ;
233:J P[110:via53] 80% CNT60 ;
234: ;
235: !******************************** ;
236: ! Hem Pass 3 ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 10 of 64
237: !******************************** ;
238: ;
239: UFRAME_NUM=1 ;
240: UTOOL_NUM=2 ;
241: ;
242: !Wait Hem Pass3 Start ;
243: WAIT GI[3:START PASS BIT]=3 ;
244: ;
245: !Hemming pass3 ;
246: GO[3:HEM PASS BIT]=3 ;
247: ;
248:J P[111:via0] 80% CNT60 ;
249:J P[112:via1] 80% CNT50 ;
250:L P[113:via2] 1000mm/sec CNT50 ;
251:L P[114:via3] 500mm/sec CNT50 ;
252:C P[115:via4]
: P[116:via5] 300mm/sec CNT30 ;
253:L P[117:via6] 300mm/sec CNT30 ;
254:C P[118:via7]
: P[119:via8] 500mm/sec CNT50 ;
255:L P[120:via9] 500mm/sec FINE ;
256:L P[121:via10] 500mm/sec CNT50 ;
257:C P[122:via11]
: P[123:via12] 300mm/sec CNT30 ;
258:L P[124:via13] 300mm/sec CNT30 ;
259:C P[125:via14]
: P[126:via15] 500mm/sec CNT50 ;
260:L P[127:via16] 500mm/sec CNT50 ;
261:L P[128:via17] 500mm/sec CNT50 ;
262:L P[129:via18] 500mm/sec CNT50 ;
263:L P[130:via19] 500mm/sec CNT50 ;
264:L P[131:via20] 500mm/sec CNT50 ;
265:L P[132:via21] 500mm/sec CNT50 ;
266:L P[133:via22] 500mm/sec CNT50 ;
267:C P[134:via23]
: P[135:via24] 300mm/sec CNT30 ;
268:L P[136:via25] 300mm/sec CNT30 ;
269:C P[137:via26]
: P[138:via27] 500mm/sec CNT50 ;
270:L P[139:via28] 500mm/sec CNT50 ;
271:L P[140:via29] 350mm/sec CNT30 ;
272:C P[141:via30]
: P[142:via31] 350mm/sec CNT30 ;
273:C P[143:via32]
: P[144:via33] 350mm/sec CNT30 ;
274:L P[145:via34] 500mm/sec FINE ;
275: ;
276: !Exit zone with R2 ;
277: EXIT ZONE(1) ;
278: ;
279:L P[146:via35] 500mm/sec CNT50 ;
280:L P[147:via36] 500mm/sec CNT50 ;
281:L P[148:via37] 500mm/sec CNT50 ;
282:L P[149:via38] 350mm/sec CNT30 ;
283:L P[150:via39] 350mm/sec CNT30 ;
284:L P[151:via40] 350mm/sec CNT30 ;
285: ;
286: !Enter zone with R4 ;
287: ENTER ZONE(2) ;
288: ;
289:C P[152:via41]
: P[153:via42] 500mm/sec CNT50 ;
290:L P[154:via43] 500mm/sec CNT50 ;
291:L P[155:via44] 500mm/sec CNT50 ;
292:L P[156:via45] 500mm/sec CNT50 ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 11 of 64
293:L P[157:via46] 500mm/sec CNT50 ;
294:L P[158:via47] 400mm/sec CNT30 ;
295:C P[159:via48]
: P[160:via49] 500mm/sec CNT50 ;
296:L P[161:via50] 500mm/sec CNT50 ;
297:L P[162:via51] 400mm/sec CNT30 ;
298:C P[163:via52]
: P[164:via53] 500mm/sec CNT50 ;
299:C P[165:via54]
: P[166:via55] 500mm/sec CNT50 ;
300:L P[167:via56] 500mm/sec CNT50 ;
301:L P[168:via57] 500mm/sec CNT50 ;
302: ;
303: !Hem pass3 complete ;
304: GO[3:HEM PASS BIT]=0 ;
305: ;
306:L P[170:via59] 1000mm/sec CNT50 ;
307: !******************************** ;
308: ! Hem Pass 4 ;
309: !******************************** ;
310: ;
311:L P[171:via0] 1000mm/sec CNT60 ;
312: ;
313: !Wait Hem Pass4 Start ;
314: WAIT GI[3:START PASS BIT]=4 ;
315: ;
316: !Hemming pass4 ;
317: GO[3:HEM PASS BIT]=4 ;
318: ;
319:L P[172:via1] 300mm/sec FINE ;
320:L P[173:via2] 300mm/sec CNT20 ;
321:L P[174:via3] 300mm/sec CNT20 ;
322:L P[175:via4] 300mm/sec CNT20 ;
323:C P[176:via5]
: P[177:via6] 300mm/sec CNT20 ;
324:C P[178:via7]
: P[179:via8] 300mm/sec CNT20 ;
325:L P[180:via9] 300mm/sec CNT20 ;
326:L P[181:via10] 300mm/sec CNT20 ;
327:C P[182:via11]
: P[183:via12] 300mm/sec CNT20 ;
328:L P[184:via13] 300mm/sec CNT20 ;
329:L P[185:via14] 300mm/sec CNT20 ;
330:L P[186:via15] 300mm/sec CNT20 ;
331:L P[187:via16] 300mm/sec CNT20 ;
332:L P[188:via17] 300mm/sec CNT20 ;
333:C P[189:via18]
: P[190:via19] 300mm/sec CNT20 ;
334:L P[191:via20] 300mm/sec CNT20 ;
335:L P[192:via21] 300mm/sec CNT20 ;
336:L P[193:via22] 300mm/sec CNT20 ;
337: ;
338: !Enter zone with R2 ;
339: ENTER ZONE(1) ;
340: ;
341:L P[194:via23] 300mm/sec CNT20 ;
342:L P[195:via24] 300mm/sec CNT20 ;
343:L P[196:via25] 300mm/sec CNT20 ;
344:L P[197:via26] 300mm/sec CNT20 ;
345:L P[198:via27] 300mm/sec CNT20 ;
346:L P[199:via28] 300mm/sec CNT20 ;
347:C P[200:via29]
: P[201:via30] 300mm/sec FINE ;
348: ;
349: !Exit zone with R4 ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 12 of 64
350: EXIT ZONE(2) ;
351: ;
352:L P[202:via31] 300mm/sec CNT20 ;
353:L P[203:via32] 300mm/sec CNT20 ;
354:C P[204:via33]
: P[205:via34] 300mm/sec CNT20 ;
355:L P[206:via35] 300mm/sec CNT20 ;
356:C P[207:via36]
: P[208:via37] 300mm/sec CNT20 ;
357:L P[209:via38] 300mm/sec CNT20 ;
358:L P[210:via39] 300mm/sec CNT20 ;
359:L P[211:via40] 300mm/sec CNT20 ;
360:L P[212:via41] 300mm/sec CNT20 ;
361:L P[213:via42] 300mm/sec CNT20 ;
362:L P[214:via43] 300mm/sec CNT20 ;
363:C P[215:via44]
: P[216:via45] 300mm/sec CNT20 ;
364:L P[217:via46] 300mm/sec CNT20 ;
365:C P[218:via47]
: P[219:via48] 300mm/sec CNT20 ;
366:L P[220:via49] 300mm/sec CNT20 ;
367:L P[221:via50] 300mm/sec CNT20 ;
368:L P[222:via51] 300mm/sec CNT20 ;
369:C P[223:via52]
: P[224:via53] 300mm/sec CNT20 ;
370:C P[225:via54]
: P[226:via55] 300mm/sec CNT20 ;
371:L P[227:via56] 500mm/sec CNT50 ;
372:L P[228:via57] 1000mm/sec CNT60 ;
373: ;
374: !Hem pass4 complete ;
375: GO[3:HEM PASS BIT]=0 ;
376: ;
377: !WAIT FOR AIR PRESSURE OK ;
378: WAIT DI[537:PRESSELBIT1]=ON ;
379: ;
380: !SET HEM SEQUENCE COMPLETE ;
381: DO[43:UDEF RBT OUT 3]=PULSE,3.0sec ;
382: ;
383: !RESET ANALOG SIGNAL ;
384: DO[537:PRESREQBIT1]=OFF ;
385: AO[1:COMPLIANCE PRESSURE]=0 ;
386: ;
387:J P[229:via58] 80% CNT50 ;
388:J P[230:via59] 80% CNT60 ;
389:J P[231:r1_pass4_via60] 80% FINE ;
390: !Exit zone with R2 ;
391: EXIT ZONE(1) ;
392: ;
393: JMP LBL[13] ;
394: ;
395: LBL[90] ;
396: !******************************** ;
397: ! DRY CYCLE HEM PATH ;
398: !******************************** ;
399: CALL DRY_HEM ;
400: ;
401: !-------------------------------- ;
402: !Clr to Return Xfer ;
403: DO[955:CLRTORETXFR]=ON ;
404: ;
405: !Clr to Adv Xfer ;
406: DO[954:CLRTOADVXFR]=ON ;
407: ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 13 of 64
408: !Clr to Unclamp ;
409: DO[956:CLRTOUNCLMP]=ON ;
410: ;
411: ! Turn ON Robot in LOOP ;
412: DO[24:RBT IN LOOP]=ON ;
413: ;
414: !Wait for Ret Home ;
415: WAIT DI[13:RETURN TO HOME]=ON ;
416: ;
417: ! Turn OFF Robot in LOOP ;
418: DO[24:RBT IN LOOP]=OFF ;
419: ;
420: !-------------------------------- ;
421: LBL[13] ;
422: ;
423: !-------------------------------- ;
424: !Move to Home ;
425: GO TO HOME POS ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 14 of 64
2.1.2 DRY_HEM – Hemming Dry Cycle
/PROG DRY_HEM
/ATTR
OWNER = MNEDITOR;
COMMENT = "Dry Cycle Hem";
PROG_SIZE = 17270;
CREATE = DATE 13-02-20 TIME 05:15:54;
MODIFIED = DATE 13-03-08 TIME 06:43:42;
FILE_NAME = ;
VERSION = 0;
LINE_COUNT = 304;
MEMORY_SIZE = 17578;
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
SPOT : TRUE ;
SPOT Welding Equipment Number : 1 ;
CYCLE_REFERENCE = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
CYCLE_TARGET = 0.00 ;
/MN
1: !******************************** ;
2: ! DRY CYCLE HEM PATH ;
3: !******************************** ;
4: ;
5: !CALL ZONE 5 W/HEMMER ;
6: ENTER ZONE(5) ;
7: ;
8: !******************************** ;
9: ! Hem Pass 1 ;
10: !******************************** ;
11: ;
12: !Wait Hem Pass1 Start ;
13: WAIT GI[3:START PASS BIT]=1 ;
14: ;
15: !Hemming pass1 ;
16: GO[3:HEM PASS BIT]=1 ;
17: ;
18: !Enter Zone with R2 ;
19: ENTER ZONE(1) ;
20: ;
21:J P[1:via1] 80% CNT100 ;
22:J P[2:via2] 80% CNT50 ;
23:L P[3:via3] 1000mm/sec CNT50 ;
24:L P[4:via4] 500mm/sec FINE ;
25:L P[5:via5] 500mm/sec CNT50 ;
26:C P[6:via6]
: P[7:via7] 300mm/sec CNT10 ;
27:L P[8:via8] 300mm/sec CNT10 ;
28:C P[9:via9]
: P[10:via10] 500mm/sec CNT20 ;
29:L P[11:via11] 500mm/sec CNT20 ;
30:L P[12:via12] 500mm/sec CNT20 ;
31:L P[13:via13] 500mm/sec CNT20 ;
32:L P[14:via14] 500mm/sec CNT20 ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 15 of 64
33:L P[15:via15] 500mm/sec CNT20 ;
34:L P[16:via16] 500mm/sec CNT20 ;
35:L P[17:via17] 500mm/sec CNT20 ;
36:L P[18:via18] 300mm/sec CNT10 ;
37:L P[19:via19] 300mm/sec CNT10 ;
38:L P[20:via20] 300mm/sec CNT10 ;
39:C P[21:via21]
: P[22:via22] 500mm/sec CNT20 ;
40:L P[23:via23] 500mm/sec CNT20 ;
41:L P[24:via24] 350mm/sec FINE ;
42: ;
43: !Exit zone with R2 ;
44: EXIT ZONE(1) ;
45: ;
46:C P[25:via25]
: P[26:via26] 350mm/sec CNT10 ;
47:L P[27:via27] 500mm/sec CNT20 ;
48:L P[28:via28] 500mm/sec CNT20 ;
49:L P[29:via29] 500mm/sec FINE ;
50:L P[30:via30] 500mm/sec CNT20 ;
51:L P[31:via31] 500mm/sec CNT20 ;
52:L P[32:via32] 500mm/sec CNT20 ;
53:L P[33:via33] 350mm/sec CNT10 ;
54:L P[34:via34] 350mm/sec CNT10 ;
55:L P[35:via35] 350mm/sec CNT10 ;
56:C P[36:via36]
: P[37:via37] 500mm/sec CNT20 ;
57:L P[38:via38] 500mm/sec CNT20 ;
58:L P[39:via39] 500mm/sec CNT20 ;
59:L P[40:via40] 500mm/sec CNT20 ;
60:L P[41:via41] 500mm/sec CNT20 ;
61:L P[42:via42] 400mm/sec CNT10 ;
62:C P[43:via43]
: P[44:via44] 500mm/sec CNT20 ;
63:L P[45:via45] 500mm/sec CNT20 ;
64:L P[46:via46] 400mm/sec CNT10 ;
65: ;
66: !Enter zone with R4 ;
67: ENTER ZONE(2) ;
68: ;
69:C P[47:via47]
: P[48:via48] 500mm/sec CNT20 ;
70:C P[49:via49]
: P[50:via50] 500mm/sec CNT20 ;
71:L P[51:via51] 500mm/sec CNT20 ;
72:L P[52:via52] 500mm/sec CNT20 ;
73:L P[53:via53] 500mm/sec CNT20 ;
74: ;
75: !Hem pass1 complete ;
76: GO[3:HEM PASS BIT]=0 ;
77: ;
78:L P[54:via] 1000mm/sec CNT20 ;
79: ;
80: !******************************** ;
81: ! Hem Pass 2 ;
82: !******************************** ;
83: ;
84: !Wait Hem Pass2 Start ;
85: WAIT GI[3:START PASS BIT]=2 ;
86: ;
87: !Hemming pass2 ;
88: GO[3:HEM PASS BIT]=2 ;
89: ;
90:L P[55:via0] 1000mm/sec CNT50 ;
91:L P[56:via1] 500mm/sec FINE ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 16 of 64
92:L P[57:via2] 500mm/sec CNT50 ;
93:L P[58:via3] 500mm/sec CNT50 ;
94:L P[59:via4] 500mm/sec CNT50 ;
95:C P[60:via5]
: P[61:via6] 500mm/sec CNT50 ;
96:C P[62:via7]
: P[63:via8] 400mm/sec CNT30 ;
97:L P[64:via9] 500mm/sec CNT50 ;
98:L P[65:via10] 500mm/sec CNT50 ;
99:C P[66:via11]
: P[67:via12] 400mm/sec CNT30 ;
100:L P[68:via13] 500mm/sec CNT50 ;
101:L P[69:via14] 500mm/sec CNT50 ;
102:L P[70:via15] 500mm/sec FINE ;
103: ;
104: !Exit zone with R4 ;
105: EXIT ZONE(2) ;
106: ;
107:L P[71:via16] 500mm/sec CNT50 ;
108:L P[72:via17] 500mm/sec CNT30 ;
109:C P[73:via18]
: P[74:via19] 350mm/sec CNT30 ;
110:L P[75:via20] 350mm/sec CNT30 ;
111:L P[76:via21] 350mm/sec CNT30 ;
112:L P[77:via22] 500mm/sec CNT50 ;
113:L P[78:via23] 500mm/sec CNT50 ;
114:L P[79:via24] 500mm/sec CNT50 ;
115:L P[80:via25] 500mm/sec CNT50 ;
116:L P[81:via26] 500mm/sec CNT50 ;
117:L P[82:via27] 500mm/sec CNT50 ;
118: ;
119: !Enter zone with R2 ;
120: ENTER ZONE(1) ;
121: ;
122:L P[83:via28] 350mm/sec CNT30 ;
123:C P[84:via29]
: P[85:via30] 350mm/sec CNT30 ;
124:L P[86:via31] 500mm/sec CNT50 ;
125:L P[87:via32] 500mm/sec CNT50 ;
126:C P[88:via33]
: P[89:via34] 300mm/sec CNT30 ;
127:L P[90:via35] 300mm/sec CNT30 ;
128:C P[91:via36]
: P[92:via37] 500mm/sec CNT50 ;
129:L P[93:via38] 500mm/sec CNT50 ;
130:L P[94:via39] 500mm/sec CNT50 ;
131:L P[95:via40] 500mm/sec CNT50 ;
132:L P[96:via41] 500mm/sec CNT50 ;
133:L P[97:via42] 500mm/sec CNT50 ;
134:L P[98:via43] 500mm/sec CNT50 ;
135:C P[99:via44]
: P[100:via45] 300mm/sec CNT30 ;
136:L P[101:via46] 300mm/sec CNT30 ;
137:C P[102:via47]
: P[103:via48] 500mm/sec CNT50 ;
138:L P[104:via49] 500mm/sec CNT50 ;
139:L P[105:via50] 500mm/sec CNT50 ;
140:L P[106:via51] 1000mm/sec CNT50 ;
141: !Hem pass2 complete ;
142: GO[3:HEM PASS BIT]=0 ;
143: ;
144:J P[107:via52] 80% CNT50 ;
145:J P[108:via53] 80% CNT60 ;
146: ;
147: !******************************** ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 17 of 64
148: ! Hem Pass 3 ;
149: !******************************** ;
150: ;
151: UFRAME_NUM=1 ;
152: UTOOL_NUM=2 ;
153: ;
154: !Wait Hem Pass3 Start ;
155: WAIT GI[3:START PASS BIT]=3 ;
156: ;
157: !Hemming pass3 ;
158: GO[3:HEM PASS BIT]=3 ;
159: ;
160:J P[109:via0] 80% CNT60 ;
161:J P[110:via1] 80% CNT50 ;
162:L P[111:via2] 1000mm/sec CNT50 ;
163:L P[112:via3] 500mm/sec CNT50 ;
164:C P[113:via4]
: P[114:via5] 300mm/sec CNT30 ;
165:L P[115:via6] 300mm/sec CNT30 ;
166:C P[116:via7]
: P[117:via8] 500mm/sec CNT50 ;
167:L P[118:via9] 500mm/sec FINE ;
168:L P[119:via10] 500mm/sec CNT50 ;
169:C P[120:via11]
: P[121:via12] 300mm/sec CNT30 ;
170:L P[122:via13] 300mm/sec CNT30 ;
171:C P[123:via14]
: P[124:via15] 500mm/sec CNT50 ;
172:L P[125:via16] 500mm/sec CNT50 ;
173:L P[126:via17] 500mm/sec CNT50 ;
174:L P[127:via18] 500mm/sec CNT50 ;
175:L P[128:via19] 500mm/sec CNT50 ;
176:L P[129:via20] 500mm/sec CNT50 ;
177:L P[130:via21] 500mm/sec CNT50 ;
178:L P[131:via22] 500mm/sec CNT50 ;
179:C P[132:via23]
: P[133:via24] 300mm/sec CNT30 ;
180:L P[134:via25] 300mm/sec CNT30 ;
181:C P[135:via26]
: P[136:via27] 500mm/sec CNT50 ;
182:L P[137:via28] 500mm/sec CNT50 ;
183:L P[138:via29] 350mm/sec CNT30 ;
184:C P[139:via30]
: P[140:via31] 350mm/sec CNT30 ;
185:C P[141:via32]
: P[142:via33] 350mm/sec CNT30 ;
186:L P[143:via34] 500mm/sec FINE ;
187: ;
188: !Exit zone with R2 ;
189: EXIT ZONE(1) ;
190: ;
191:L P[144:via35] 500mm/sec CNT50 ;
192:L P[145:via36] 500mm/sec CNT50 ;
193:L P[146:via37] 500mm/sec CNT50 ;
194:L P[147:via38] 350mm/sec CNT30 ;
195:L P[148:via39] 350mm/sec CNT30 ;
196:L P[149:via40] 350mm/sec CNT30 ;
197: ;
198: !Enter zone with R4 ;
199: ENTER ZONE(2) ;
200: ;
201:C P[150:via41]
: P[151:via42] 500mm/sec CNT50 ;
202:L P[152:via43] 500mm/sec CNT50 ;
203:L P[153:via44] 500mm/sec CNT50 ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 18 of 64
204:L P[154:via45] 500mm/sec CNT50 ;
205:L P[155:via46] 500mm/sec CNT50 ;
206:L P[156:via47] 400mm/sec CNT30 ;
207:C P[157:via48]
: P[158:via49] 500mm/sec CNT50 ;
208:L P[159:via50] 500mm/sec CNT50 ;
209:L P[160:via51] 400mm/sec CNT30 ;
210:C P[161:via52]
: P[162:via53] 500mm/sec CNT50 ;
211:C P[163:via54]
: P[164:via55] 500mm/sec CNT50 ;
212:L P[165:via56] 500mm/sec CNT50 ;
213:L P[166:via57] 500mm/sec CNT50 ;
214: ;
215: !Hem pass3 complete ;
216: GO[3:HEM PASS BIT]=0 ;
217: ;
218:L P[167:via59] 1000mm/sec CNT50 ;
219: !******************************** ;
220: ! Hem Pass 4 ;
221: !******************************** ;
222: ;
223:L P[168:via0] 1000mm/sec CNT60 ;
224: ;
225: !Wait Hem Pass4 Start ;
226: WAIT GI[3:START PASS BIT]=4 ;
227: ;
228: !Hemming pass4 ;
229: GO[3:HEM PASS BIT]=4 ;
230: ;
231:L P[169:via1] 300mm/sec FINE ;
232:L P[170:via2] 300mm/sec CNT20 ;
233:L P[171:via3] 300mm/sec CNT20 ;
234:L P[172:via4] 300mm/sec CNT20 ;
235:C P[173:via5]
: P[174:via6] 300mm/sec CNT20 ;
236:C P[175:via7]
: P[176:via8] 300mm/sec CNT20 ;
237:L P[177:via9] 300mm/sec CNT20 ;
238:L P[178:via10] 300mm/sec CNT20 ;
239:C P[179:via11]
: P[180:via12] 300mm/sec CNT20 ;
240:L P[181:via13] 300mm/sec CNT20 ;
241:L P[182:via14] 300mm/sec CNT20 ;
242:L P[183:via15] 300mm/sec CNT20 ;
243:L P[184:via16] 300mm/sec CNT20 ;
244:L P[185:via17] 300mm/sec CNT20 ;
245:C P[186:via18]
: P[187:via19] 300mm/sec CNT20 ;
246:L P[188:via20] 300mm/sec CNT20 ;
247:L P[189:via21] 300mm/sec CNT20 ;
248:L P[190:via22] 300mm/sec CNT20 ;
249: ;
250: !Enter zone with R2 ;
251: ENTER ZONE(1) ;
252: ;
253:L P[191:via23] 300mm/sec CNT20 ;
254:L P[192:via24] 300mm/sec CNT20 ;
255:L P[193:via25] 300mm/sec CNT20 ;
256:L P[194:via26] 300mm/sec CNT20 ;
257:L P[195:via27] 300mm/sec CNT20 ;
258:L P[196:via28] 300mm/sec CNT20 ;
259:C P[197:via29]
: P[198:via30] 300mm/sec FINE ;
260: ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 19 of 64
261: !Exit zone with R4 ;
262: EXIT ZONE(2) ;
263: ;
264:L P[199:via31] 300mm/sec CNT20 ;
265:L P[200:via32] 300mm/sec CNT20 ;
266:C P[201:via33]
: P[202:via34] 300mm/sec CNT20 ;
267:L P[203:via35] 300mm/sec CNT20 ;
268:C P[204:via36]
: P[205:via37] 300mm/sec CNT20 ;
269:L P[206:via38] 300mm/sec CNT20 ;
270:L P[207:via39] 300mm/sec CNT20 ;
271:L P[208:via40] 300mm/sec CNT20 ;
272:L P[209:via41] 300mm/sec CNT20 ;
273:L P[210:via42] 300mm/sec CNT20 ;
274:L P[211:via43] 300mm/sec CNT20 ;
275:C P[212:via44]
: P[213:via45] 300mm/sec CNT20 ;
276:L P[214:via46] 300mm/sec CNT20 ;
277:C P[215:via47]
: P[216:via48] 300mm/sec CNT20 ;
278:L P[217:via49] 300mm/sec CNT20 ;
279:L P[218:via50] 300mm/sec CNT20 ;
280:L P[219:via51] 300mm/sec CNT20 ;
281:C P[220:via52]
: P[221:via53] 300mm/sec CNT20 ;
282:C P[222:via54]
: P[223:via55] 300mm/sec CNT20 ;
283:L P[224:via56] 500mm/sec CNT50 ;
284:L P[225:via57] 1000mm/sec CNT60 ;
285: ;
286: !Hem pass4 complete ;
287: GO[3:HEM PASS BIT]=0 ;
288: ;
289: !WAIT FOR AIR PRESSURE OK ;
290: WAIT DI[537:PRESSELBIT1]=ON ;
291: ;
292: !SET HEM SEQUENCE COMPLETE ;
293: DO[43:UDEF RBT OUT 3]=PULSE,3.0sec ;
294: ;
295: !RESET ANALOG SIGNAL ;
296: DO[537:PRESREQBIT1]=OFF ;
297: AO[1:COMPLIANCE PRESSURE]=0 ;
298: ;
299:J P[226:via58] 80% CNT50 ;
300:J P[227:via59] 80% CNT60 ;
301:J P[228:r1_pass4_via60] 80% FINE ;
302: !Exit zone with R2 ;
303: EXIT ZONE(1) ;
304: ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 20 of 64
2.1.3 PULL_ROLL – Pull Position MACRO
/PROG PULL_ROLL Macro
/ATTR
OWNER = MNEDITOR;
COMMENT = "Sets Roller PULL";
PROG_SIZE = 660;
CREATE = DATE 09-10-01 TIME 15:20:34;
MODIFIED = DATE 13-02-15 TIME 02:48:52;
FILE_NAME = GRP1_OPE;
VERSION = 0;
LINE_COUNT = 14;
MEMORY_SIZE = 976;
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 = *,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/APPL
SPOT : TRUE ;
SPOT Welding Equipment Number : 1 ;
CYCLE_REFERENCE = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
CYCLE_TARGET = 0.00 ;
/MN
1: !******************************** ;
2: !Sets Roller to Pull Position ;
3: ! ;
4: ! NOTE: This program has NO ;
5: ! GP[1:robot] and ;
6: ! GP[2:servogun] motion ;
7: ! ;
8: !******************************** ;
9: ! ;
10: !ROLLER TO PUSH POS ;
11: DO[530:ROLL2PUSHPOS]=OFF ;
12: ;
13: !ROLLER TO PULL POS ;
14: DO[529:ROLL2PULLPOS]=ON ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 21 of 64
2.1.4 PUSH_ROLL – Push Position MACRO
/PROG PUSH_ROLL Macro
/ATTR
OWNER = MNEDITOR;
COMMENT = "Sets Roller Push";
PROG_SIZE = 660;
CREATE = DATE 09-10-01 TIME 15:20:34;
MODIFIED = DATE 13-02-15 TIME 02:48:50;
FILE_NAME = GRP1_OPE;
VERSION = 0;
LINE_COUNT = 14;
MEMORY_SIZE = 976;
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 = *,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/APPL
SPOT : TRUE ;
SPOT Welding Equipment Number : 1 ;
CYCLE_REFERENCE = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
CYCLE_TARGET = 0.00 ;
/MN
1: !******************************** ;
2: !Sets Roller to Push Position ;
3: ! ;
4: ! NOTE: This program has NO ;
5: ! GP[1:robot] and ;
6: ! GP[2:servogun] motion ;
7: ! ;
8: !******************************** ;
9: ! ;
10: !ROLLER TO PULL POS ;
11: DO[529:ROLL2PULLPOS]=OFF ;
12: ;
13: !ROLLER TO PUSH POS ;
14: DO[530:ROLL2PUSHPOS]=ON ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 22 of 64
2.1.5 HOME_IO – Reset Input/Output MACRO
/PROG HOME_IO Macro
/ATTR
OWNER = MNEDITOR;
COMMENT = "SET AT HOME I-O";
PROG_SIZE = 1766;
CREATE = DATE 10-05-05 TIME 14:56:52;
MODIFIED = DATE 13-03-08 TIME 03:25:28;
FILE_NAME = ;
VERSION = 0;
LINE_COUNT = 94;
MEMORY_SIZE = 2018;
PROTECT = READ_WRITE;
TCD: STACK_SIZE = 0,
TASK_PRIORITY = 60,
TIME_SLICE = 0,
BUSY_LAMP_OFF = 1,
ABORT_REQUEST = 7,
PAUSE_REQUEST = 3;
DEFAULT_GROUP = *,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/APPL
/MN
1: !******************************** ;
2: !MACRO SET AT HOME I-O ;
3: ! ;
4: !Also runs Automatically when ;
5: ! robot goes from non-home pos ;
6: ! to home pos ;
7: ! ;
8: ! NOTE: This program has NO ;
9: ! GP[1:robot] and ;
10: ! GP[2:servogun] motion ;
11: !***************************** ;
12: ;
13: !CLR TO ADV. TRANSFER ;
14: DO[954:CLRTOADVXFR]=ON ;
15: ;
16: !CLR TO RET. TRANSFER ;
17: DO[955:CLRTORETXFR]=ON ;
18: ;
19: !CLEAR TO UNCLAMP ;
20: DO[956:CLRTOUNCLMP]=ON ;
21: ;
22: ;
23: !ROBOT USER DEFINE OFF ;
24: DO[41:UDEF RBT OUT 1]=OFF ;
25: DO[42:UDEF RBT OUT 2]=OFF ;
26: DO[43:UDEF RBT OUT 3]=OFF ;
27: DO[44:UDEF RBT OUT 4]=OFF ;
28: ;
29: ;
30: !RESET HEM PROCESS SIGNALS ;
31: GO[3:HEM PASS BIT]=0 ;
32: DO[531:ROLL1CHKREQ]=OFF ;
33: DO[532:ROLL2CHKREQ]=OFF ;
34: DO[533:ROLL3CHKREQ]=OFF ;
35: DO[537:PRESREQBIT1]=OFF ;
36: DO[538:PRESREQBIT2]=OFF ;
37: DO[539:PRESREQBIT4]=OFF ;
38: DO[540:PRESREQBIT8]=OFF ;
39: ;
40: ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 23 of 64
41: !RESET FAULT RESET ;
42: DO[959:FAULTRESET]=OFF ;
43: ;
44: ;
45: !RESET ROBOT LOOP ;
46: DO[24:RBT IN LOOP]=OFF ;
47: DO[963:PRGRM FLT]=OFF ;
48: ;
49: ;
50: !AT REPAIR OFF ;
51: DO[6:RBT AT MAINT]=OFF ;
51: DO[587:RBT A MINMAINT]=OFF ;
52: ;
53: ;
54: !RESET PICKUP POS ;
55: DO[49:RBT @ PKUP POS 1]=OFF ;
56: DO[59:RBT AT DRP OFF 1]=OFF ;
57: DO[50:RBT @ PKUP POS 2]=OFF ;
58: DO[60:RBT AT DRP OFF 2]=OFF ;
59: DO[51:RBT @ PKUP POS 3]=OFF ;
60: DO[61:RBT AT DRP OFF 3]=OFF ;
61: DO[52:RBT @ PKUP POS 4]=OFF ;
62: DO[62:RBT AT DRP OFF 4]=OFF ;
63: ;
64: ;
65: !RESET WRK POS ;
66: DO[177:MDL WRK POS 1]=OFF ;
67: DO[178:MDL WRK POS 2]=OFF ;
68: DO[179:MDL WRK POS 3]=OFF ;
69: DO[180:MDL WRK POS 4]=OFF ;
70: DO[181:MDL WRK POS 5]=OFF ;
71: DO[182:MDL WRK POS 6]=OFF ;
72: DO[183:MDL WRK POS 7]=OFF ;
73: DO[184:MDL WRK POS 8]=OFF ;
74: ;
75: ;
76: !CLEAR EXIT ZONES ;
77: DO[900:CLROFZONE1]=ON ;
78: DO[901:CLROFZONE2]=ON ;
79: DO[902:CLROFZONE3]=ON ;
80: DO[903:CLROFZONE4]=ON ;
81: DO[904:CLROFZONE5]=ON ;
82: DO[905:CLROFZONE6]=ON ;
83: DO[906:CLROFZONE7]=ON ;
84: DO[907:CLROFZONE8]=ON ;
85: DO[908:CLROFZONE9]=ON ;
86: DO[909:CLROFZONE10]=ON ;
87: DO[910:CLROFZONE11]=ON ;
88: DO[911:CLROFZONE12]=ON ;
89: DO[912:CLROFZONE13]=ON ;
90: DO[933:CLROFZONE14]=ON ;
91: ;
92: !Reset the register that holds ;
93: !the program number to run ;
94: R[153:ProgSelNum]=0 ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 24 of 64
2.2 Roller Hemmer With Overhead Control
2.2.1 PG21 – Carried Roller
NOTE: This program uses an Analog Pressure switch to adjust roller hemmer
pressure during the cycle. Please see Table 1. above for a list of values that can
be used with this setup.
/PROG PG21
/ATTR
OWNER = MNEDITOR;
COMMENT = "";
PROG_SIZE = 18026;
CREATE = DATE 13-03-06 TIME 00:15:00;
MODIFIED = DATE 13-03-09 TIME 04:06:06;
FILE_NAME = PG21;
VERSION = 0;
LINE_COUNT = 475;
MEMORY_SIZE = 18438;
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
SPOT : TRUE ;
SPOT Welding Equipment Number : 1 ;
/MN
1: !******************************** ;
2: ! Carried Roller Hemmer PG21 ;
3: ! ;
4: ! ;
5: ! ;
6: !******************************** ;
8: !Verify Program ;
9: PROGRAM VERIFY(21) ;
10: ;
11: !***************************** ;
12: !Verify Die Program ;
13: ! if WRONG Die then ;
14: ! run die change ;
15: CALL DIE_VERIFY ;
16: ;
17: !***************************** ;
18: ;
10: !Set Robot UTOOL Number ;
11: UTOOL_NUM=1 ;
12: ;
12: !Set Robot UFRAME Number ;
11: UFRAME_NUM=1 ;
21: ;
22: PAYLOAD[2] ;
23: ;
24: !Run Home IO ;
25: SETUP OUTPUTS ;
26: ;
27: !Move Home ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 25 of 64
28: GO TO HOME POS ;
29: ;
30: !Move to Pounce ;
31: GO TO POUNCE ;
32: ;
33: !------------------------------- ;
34: !IF Hem Complete Goto ;
35: !Unload Upper Die ;
36: IF DI[42:UDEF RBT IN 2]=ON,JMP LBL[12] ;
37: ;
38: !******************************** ;
39: !Minimum 20PSI to Activate ;
40: !Pressure Switch ;
41: !------------------------------- ;
42: ! ANALOG SUMMARY CHART ;
43: !AO[1]=0 to 200 IS 0PSI ;
44: !AO[1]=380 IS 15PSI ;
45: !AO[1]=450 IS 20PSI MIN ;
46: !AO[1]=570 IS 30PSI ;
47: !AO[1]=690 IS 40PSI ;
48: !AO[1]=820 IS 50PSI ;
49: !AO[1]=940 IS 60PSI MAX ;
50: !------------------------------- ;
51: ;
52: !PRESSURE SELECT BIT1 ;
53: DO[537:PRESREQBIT1]=ON ;
54: ;
55: !SET COMPLIANCE PRESSURE ;
56: AO[1:COMPLIANCE PRESSURE]=690 ;
57: ;
58: F[3:Pressure Req ON]=(ON) ;
59: !******************************** ;
60: ;
61: !WAIT FOR AIR PRESSURE OK ;
62: WAIT DI[537:PRESSELBIT1]=ON ;
63: ;
64: !SET ROLLER POSITION ;
65: CALL PUSH_ROLL ;
65: ;
65: !OPTIONAL ;
66: !WAIT ROLLER IN PUSH POSITION ;
67: !WAIT DI[530:ROLLINPUSHPOS]=ON ;
68: ;
69: !------------------------------- ;
30: ;
31: !Clr to Adv Xfer ;
32: DO[954:CLRTOADVXFR]=ON ;
33: ;
34: !Clr to Ret Xfer ;
35: DO[955:CLRTORETXFR]=ON ;
36: ;
37: !Clr to Unclamp ;
38: DO[956:CLRTOUNCLMP]=OFF ;
39: ;
40: !-------------------------------- ;
41: LBL[33:Loop Back ] ;
42: ;
43: ! Turn ON Robot in LOOP ;
44: DO[24:RBT IN LOOP]=ON ;
45: ;
46: !-------------------------------- ;
47: !Wait Continue from Pounce ;
48: !or Return to Home ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 26 of 64
49: WAIT DI[9:START CYCLE]=ON OR DI[13:RETURN TO HOME]=ON ;
50: ;
51: ! Turn OFF Robot in LOOP ;
52: DO[24:RBT IN LOOP]=OFF ;
53: ;
58: !If Continue from Pounce ;
59: !jump to LBL[9]-Continue- ;
60: IF DI[9:START CYCLE]=ON,JMP LBL[9] ;
57: ;
57: !If Pickup ;
57: !Move to Hemmer Pickup Pos ;
81: IF DI[42:UDEF RBT IN 2]=ON,JMP LBL[12] ;
58: ;
54: !If Return to Home ;
55: !jump to LB[13] ;
56: IF DI[13:RETURN TO HOME]=ON,JMP LBL[13] ;
61: ;
62: JMP LBL[33] ;
63: ;
64: !-------------------------------- ;
65: !Continue from Pounce ;
66: LBL[9] ;
5: ;
6: !Verify Program ;
7: PROGRAM VERIFY(21) ;
8: ;
68: !Clr to Return Xfer ;
69: DO[955:CLRTORETXFR]=OFF ;
70: ;
71: !Clr to Adv Xfer ;
72: DO[954:CLRTOADVXFR]=OFF ;
73: ;
74: !Clr to Unclamp ;
75: DO[956:CLRTOUNCLMP]=OFF ;
89: ;
90: !CALL ZONE W/HEMMER ;
91: ENTER ZONE(5) ;
92: ;
93: !Move Overhead Home ;
94: CALL UPPER_POS_HOME ;
95: ;
96: !******************************** ;
97: !LOWER HEMMER TO WORK POSITION ;
98: !******************************** ;
99: ;
100: !RETURN SHOT PIN ;
101: CALL GRP1_OPN ;
102: !WAIT SHOT PIN RETURNED ;
103: WAIT DI[73:OVERHEAD PIN RET]=ON ;
104: ;
105: WAIT 2.00(sec) ;
106: ;
107: !OPEN PART RETAINER ;
108: CALL GRP2_OPN ;
109: !WAIT PART RETAINER OPENED ;
110: WAIT DI[75:RETAINR CLMP RET]=ON ;
111: ;
112: !CALL C489 WORK POSITION ;
113: CALL WORK_POS1 ;
114: ;
115: !CHECK HEMMER LOWERED ;
116: WAIT DO[46:UDEF RBT OUT 6]=ON ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 27 of 64
117: ;
118: !------------------------------- ;
119: IF DI[10:AUTO REPEAT MD]=ON,JMP LBL[90] ;
120: ;
121: !******************************** ;
122: ! Hem Pass 1 ;
123: !******************************** ;
124: ;
125: !Enter zone with R4 ;
126: ENTER ZONE(1) ;
127: ;
128: !Wait Hem Pass1 Start ;
129: WAIT GI[3:START PASS BIT]=1 ;
130: ;
131: !Hemming pass1 ;
132: GO[3:HEM PASS BIT]=1 ;
133: ;
134:J P[5:via1] 70% CNT50 ;
135:L P[172] 1000mm/sec CNT20 ;
136:L P[171] 500mm/sec CNT30 ;
137:L P[173] 500mm/sec CNT30 ;
138:L P[174] 500mm/sec CNT30 ;
139:L P[7:via3] 500mm/sec FINE ;
140: ;
141: !Exit zone with R4 ;
142: EXIT ZONE(1) ;
143: ;
144:L P[8:via4] 500mm/sec CNT20 ;
145:L P[9:via5] 500mm/sec CNT20 ;
146:L P[10:via6] 500mm/sec CNT20 ;
147:L P[11:via7] 500mm/sec CNT20 ;
148:L P[12:via8] 500mm/sec CNT20 ;
149:L P[13:via9] 500mm/sec FINE ;
150:L P[14:via10] 500mm/sec CNT20 ;
151:L P[15:via11] 500mm/sec CNT20 ;
152:L P[16:via12] 500mm/sec CNT20 ;
153:L P[17:via13] 500mm/sec CNT20 ;
154:L P[18:via14] 500mm/sec CNT20 ;
155:L P[19:via15] 500mm/sec CNT20 ;
156:L P[20:via16] 500mm/sec CNT20 ;
157:L P[21:via17] 500mm/sec CNT20 ;
158:L P[22:via18] 500mm/sec CNT20 ;
159:L P[23:via19] 500mm/sec CNT20 ;
160: ;
161: !Enter zone with R2 ;
162: ENTER ZONE(2) ;
163: ;
164:L P[24:via20] 500mm/sec CNT20 ;
165:L P[25:via21] 500mm/sec CNT20 ;
166:L P[26:via22] 500mm/sec CNT20 ;
167:C P[27:via23]
: P[28:via24] 500mm/sec CNT20 ;
168:C P[29:via25]
: P[30:via26] 400mm/sec CNT10 ;
169:L P[31:via27] 500mm/sec CNT20 ;
170:L P[32:via28] 500mm/sec CNT20 ;
171:C P[33:via29]
: P[34:via30] 400mm/sec CNT10 ;
172:L P[35:via31] 500mm/sec CNT20 ;
173:L P[36:via32] 500mm/sec CNT20 ;
174:L P[37:via33] 500mm/sec CNT20 ;
175:L P[38:via34] 500mm/sec CNT20 ;
176:L P[39:via35] 350mm/sec CNT10 ;
177:C P[40:via36]
: P[41:via37] 350mm/sec CNT10 ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 28 of 64
178:C P[42:via38]
: P[43:via40] 500mm/sec CNT20 ;
179:L P[44:via41] 500mm/sec CNT20 ;
180: ;
181: !Hem pass1 complete ;
182: GO[3:HEM PASS BIT]=0 ;
183: ;
184:L P[45:end] 1000mm/sec CNT60 ;
185: ;
186: !******************************** ;
187: ! Hem Pass 2 ;
188: !******************************** ;
189: ;
190: !Wait Hem Pass2 Start ;
191: WAIT GI[3:START PASS BIT]=2 ;
192: ;
193: !Hemming pass2 ;
194: GO[3:HEM PASS BIT]=2 ;
195: ;
196:L P[46:via0] 500mm/sec FINE ;
197:L P[47:via1] 500mm/sec CNT50 ;
198:C P[48:via2]
: P[49:via3] 350mm/sec CNT30 ;
199:L P[50:via4] 350mm/sec CNT30 ;
200:C P[51:via5]
: P[52:via6] 350mm/sec CNT30 ;
201:L P[53:via7] 500mm/sec CNT50 ;
202:L P[54:via8] 500mm/sec CNT50 ;
203:L P[55:via9] 500mm/sec CNT50 ;
204:L P[56:via10] 500mm/sec CNT50 ;
205:L P[57:via11] 400mm/sec CNT30 ;
206:C P[58:via12]
: P[59:via13] 500mm/sec CNT50 ;
207:L P[60:via14] 500mm/sec CNT50 ;
208:L P[61:via15] 400mm/sec CNT30 ;
209:C P[62:via16]
: P[63:via17] 500mm/sec CNT50 ;
210:C P[64:via18]
: P[65:via19] 500mm/sec CNT50 ;
211:L P[66:via20] 500mm/sec CNT50 ;
212:L P[67:via21] 500mm/sec CNT50 ;
213:L P[68:via22] 500mm/sec CNT50 ;
214:L P[69:via23] 500mm/sec FINE ;
215: ;
216: !Exit zone with R2 ;
217: EXIT ZONE(2) ;
218: ;
219:L P[70:via24] 500mm/sec CNT50 ;
220:L P[71:via25] 500mm/sec CNT50 ;
221:L P[72:via26] 500mm/sec CNT50 ;
222:L P[73:via27] 500mm/sec CNT50 ;
223:L P[74:via28] 500mm/sec CNT50 ;
224:L P[75:via29] 500mm/sec CNT50 ;
225:L P[76:via30] 500mm/sec CNT50 ;
226:L P[77:via31] 500mm/sec CNT50 ;
227:L P[78:via32] 500mm/sec CNT50 ;
228:L P[79:via33] 500mm/sec CNT50 ;
229:L P[80:via34] 500mm/sec CNT50 ;
230: ;
231: !Enter zone with R4 ;
232: ENTER ZONE(1) ;
233: ;
234:L P[81:via35] 500mm/sec CNT50 ;
235:L P[82:via36] 500mm/sec CNT50 ;
236:L P[83:via37] 500mm/sec CNT50 ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 29 of 64
237:L P[84:via38] 500mm/sec CNT50 ;
238:L P[6] 500mm/sec CNT50 ;
239:L P[175] 500mm/sec CNT50 ;
240:L P[176] 500mm/sec CNT50 ;
241: ;
242: !Hem pass2 complete ;
243: GO[3:HEM PASS BIT]=0 ;
244: ;
245:L P[85:via39] 500mm/sec CNT50 ;
246:J P[86:via40] 70% CNT50 ;
247: ;
248: !******************************** ;
249: ! Hem Pass 3 ;
250: !******************************** ;
251: ;
252: UFRAME_NUM=1 ;
253: UTOOL_NUM=2 ;
254: ;
255: !Wait Hem Pass3 Start ;
256: WAIT GI[3:START PASS BIT]=3 ;
257: ;
258: !Hemming pass3 ;
259: GO[3:HEM PASS BIT]=3 ;
260: ;
261:J P[87:via0] 70% CNT50 ;
262:J P[88:via1] 70% CNT50 ;
263:L P[89:via2] 500mm/sec FINE ;
264:L P[90:via3] 500mm/sec CNT30 ;
265:L P[91:via4] 500mm/sec CNT30 ;
266:L P[92:via5] 500mm/sec CNT30 ;
267:L P[93:via6] 500mm/sec CNT30 ;
268:L P[94:via7] 500mm/sec CNT30 ;
269:L P[95:via8] 500mm/sec CNT30 ;
270:L P[96:via9] 500mm/sec FINE ;
271: ;
272: !Exit zone with R4 ;
273: EXIT ZONE(1) ;
274: ;
275:L P[97:via10] 500mm/sec CNT30 ;
276:L P[98:via11] 500mm/sec CNT30 ;
277:L P[99:via12] 500mm/sec CNT30 ;
278:L P[100:via13] 500mm/sec CNT30 ;
279:L P[101:via14] 500mm/sec CNT30 ;
280:L P[102:via15] 500mm/sec CNT30 ;
281:L P[103:via16] 500mm/sec CNT30 ;
282:L P[104:via17] 500mm/sec CNT30 ;
283:L P[105:via18] 500mm/sec CNT30 ;
284:L P[106:via19] 500mm/sec CNT30 ;
285: ;
286: !Enter zone with R2 ;
287: ENTER ZONE(2) ;
288: ;
289:L P[107:via20] 500mm/sec CNT30 ;
290:C P[108:via21]
: P[109:via22] 500mm/sec CNT30 ;
291:C P[110:via23]
: P[111:via24] 400mm/sec CNT15 ;
292:L P[112:via25] 400mm/sec CNT15 ;
293:L P[113:via26] 500mm/sec CNT30 ;
294:L P[114:via27] 500mm/sec CNT30 ;
295:C P[115:via28]
: P[116:via29] 400mm/sec CNT15 ;
296:C P[117:via30]
: P[118:via31] 500mm/sec CNT30 ;
297:L P[119:via32] 500mm/sec CNT30 ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 30 of 64
298:L P[120:via33] 500mm/sec CNT30 ;
299:L P[121:via34] 350mm/sec CNT15 ;
300:C P[122:via35]
: P[123:via36] 350mm/sec CNT15 ;
301:L P[124:via37] 350mm/sec CNT15 ;
302:L P[125:via38] 350mm/sec CNT15 ;
303:L P[126:via39] 500mm/sec CNT30 ;
304:L P[127:via40] 500mm/sec CNT30 ;
305: ;
306: !Hem pass3 complete ;
307: GO[3:HEM PASS BIT]=0 ;
308: ;
309:L P[128:via41] 1000mm/sec CNT60 ;
310: !******************************** ;
311: ! Hem Pass 4 ;
312: !******************************** ;
313: ;
314: !Wait Hem Pass4 Start ;
315: WAIT GI[3:START PASS BIT]=4 ;
316: ;
317: !Hemming pass4 ;
318: GO[3:HEM PASS BIT]=4 ;
319: ;
320:L P[129:via0] 600mm/sec FINE ;
321:L P[130:via1] 300mm/sec CNT15 ;
322:L P[131:via2] 300mm/sec CNT15 ;
323:L P[132:via3] 300mm/sec CNT15 ;
324:L P[133:via4] 300mm/sec CNT15 ;
325:C P[134:via5]
: P[135:via6] 300mm/sec CNT15 ;
326:L P[136:via7] 300mm/sec CNT15 ;
327:L P[137:via8] 300mm/sec CNT15 ;
328:L P[138:via9] 300mm/sec CNT15 ;
329:L P[139:via10] 300mm/sec CNT15 ;
330:L P[140:via11] 300mm/sec CNT15 ;
331:C P[141:via12]
: P[142:via13] 300mm/sec CNT15 ;
332:L P[143:via14] 300mm/sec CNT15 ;
333:L P[144:via15] 300mm/sec CNT15 ;
334:C P[145:via16]
: P[146:via17] 300mm/sec CNT15 ;
335:C P[147:via18]
: P[148:via19] 300mm/sec CNT15 ;
336:L P[149:via20] 300mm/sec FINE ;
337: ;
338: !Exit zone with R2 ;
339: EXIT ZONE(2) ;
340: ;
341:L P[150:via21] 300mm/sec CNT15 ;
342:L P[151:via22] 300mm/sec CNT15 ;
343:L P[152:via23] 300mm/sec CNT15 ;
344:L P[153:via24] 300mm/sec CNT15 ;
345:L P[154:via25] 300mm/sec CNT15 ;
346:L P[155:via26] 300mm/sec CNT15 ;
347:L P[156:via27] 300mm/sec CNT15 ;
348:L P[157:via28] 300mm/sec CNT15 ;
349:L P[158:via29] 300mm/sec CNT15 ;
350:L P[159:via30] 300mm/sec CNT15 ;
351: ;
352: !Enter zone with R4 ;
353: ENTER ZONE(1) ;
354: ;
355:L P[160:via31] 300mm/sec CNT15 ;
356:L P[161:via32] 300mm/sec CNT15 ;
357:L P[162:via33] 300mm/sec CNT15 ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 31 of 64
358:L P[163:via34] 300mm/sec CNT15 ;
359:L P[164:via35] 300mm/sec CNT15 ;
360:L P[165:via36] 300mm/sec CNT15 ;
361:L P[166:via37] 300mm/sec CNT15 ;
362:L P[167:via38] 300mm/sec CNT15 ;
363:L P[168:via39] 1000mm/sec CNT60 ;
364: !Hem pass4 complete ;
365: GO[3:HEM PASS BIT]=0 ;
366: ;
367: !WAIT FOR AIR PRESSURE OK ;
368: WAIT DI[537:PRESSELBIT1]=ON ;
369: ;
370: !SET HEM SEQUENCE COMPLETE ;
371: DO[43:UDEF RBT OUT 3]=PULSE,3.0sec ;
372: ;
373:J P[169:via40] 80% CNT100 ;
374:J P[170:via41] 80% FINE ;
375: ;
376: !Exit zone1 W/310R4 ;
377: EXIT ZONE(1) ;
378: ;
379: LBL[91] ;
380: !******************************** ;
381: !CHECK FOR ROLLERS PRESENT ;
382: !******************************** ;
383: UFRAME_NUM=1 ;
384: UTOOL_NUM=1 ;
385: ;
386:J P[2] 80% CNT50 ;
387:J P[3] 80% CNT50 ;
388:L P[4:check] 600mm/sec FINE ;
389: ;
390: DO[531:ROLL1CHKREQ]=ON ;
391: WAIT DI[531:ROLL1CHKREV]=ON ;
392: DO[531:ROLL1CHKREQ]=OFF ;
393: ;
394:L P[3] 800mm/sec CNT50 ;
395:J P[2] 80% CNT50 ;
396:J P[1] 80% CNT50 ;
397: ;
398: !RESET PRESSURE SELECT BIT1 ;
399: DO[537:PRESREQBIT1]=OFF ;
400: ;
401: !RESET ANALOG SIGNAL ;
402: AO[1:COMPLIANCE PRESSURE]=0 ;
403: ;
404: F[3:Pressure Req ON]=(OFF) ;
405: !-------------------------------- ;
406: !CLEAR TO RAISE HEMMER ;
407: WAIT DI[44:UDEF RBT IN 4]=ON ;
408: ;
409: !CLOSE PART RETAINER ;
410: CALL GRP2_CLS ;
411: !WAIT PART RETAINER CLOSED ;
412: WAIT DI[76:RETAINR CLMP ADV]=ON ;
413: ;
414: !******************************** ;
415: !RAISE HEMMER TO UPPER POSITION ;
416: !******************************** ;
417: ;
418: !RETURN SHOT PIN ;
419: CALL GRP1_OPN ;
420: !WAIT SHOT PIN RETURNED ;
421: WAIT DI[73:OVERHEAD PIN RET]=ON ;
422: ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 32 of 64
423: !CALL RAISE HEMMER MACRO ;
424: CALL RAISED_POS ;
425: ;
426: !CHECK HEMMER RAISED ;
427: WAIT DO[45:UDEF RBT OUT 5]=ON ;
428: ;
429: !EXTEND SHOT PIN ;
430: CALL GRP1_CLS ;
431: !WAIT SHOT PIN EXTENDED ;
432: WAIT DI[74:OVERHEAD PIN ADV]=ON ;
433: ;
434: !CLEAR ZONE W/HEMMER ;
435: EXIT ZONE(5) ;
436: ;
437: LBL[12] ;
438: !******************************** ;
439: ! MOVES TO HEMMER PKUP POS ;
440: ! WAITS TO OPEN RETAINERS ;
441: !******************************** ;
442: ;
443: !WAIT @ PKUP POS ;
444: !OR RETURN HOME ;
445: DO[24:RBT IN LOOP]=ON ;
446: WAIT DI[43:UDEF RBT IN 3]=ON OR DI[13:RETURN TO HOME]=ON ;
447: ;
448: DO[24:RBT IN LOOP]=OFF ;
449: ;
450: IF DI[13:RETURN TO HOME]=ON,JMP LBL[13] ;
451: ;
452: !OPEN PART RETAINER ;
453: CALL GRP2_OPN ;
454: !WAIT PART RETAINER OPENED ;
455: WAIT DI[75:RETAINR CLMP RET]=ON ;
456: ;
457: JMP LBL[13:Return to Home] ;
458: ;
459: LBL[90] ;
460: !******************************** ;
461: ! DRY CYCLE HEM PATH ;
462: !******************************** ;
463: CALL DRY_PASS ;
464: ;
465: JMP LBL[91] ;
466: ;
357: !Clr to Return Xfer ;
358: DO[955:CLRTORETXFR]=ON ;
359: ;
360: !Clr to Adv Xfer ;
361: DO[954:CLRTOADVXFR]=ON ;
362: ;
363: !Clr to Adv Xfer ;
364: DO[956:CLRTOUNCLMP]=ON ;
365: ;
366: ;
367: LBL[13:Return to Home ] ;
368: !-------------------------------- ;
369: !Move to Home ;
370: GO TO HOME POS ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 33 of 64
2.2.2 DRY_PASS – Hemming Dry Cycle
/PROG DRY_PASS
/ATTR
OWNER = MNEDITOR;
COMMENT = "Dry Cycle Hem";
PROG_SIZE = 13656;
CREATE = DATE 13-02-20 TIME 04:53:02;
MODIFIED = DATE 13-03-08 TIME 22:08:48;
FILE_NAME = ;
VERSION = 0;
LINE_COUNT = 262;
MEMORY_SIZE = 14004;
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
SPOT : TRUE ;
SPOT Welding Equipment Number : 1 ;
CYCLE_REFERENCE = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
CYCLE_TARGET = 0.00 ;
/MN
1: !******************************** ;
2: ! DRY CYCLE HEM PATH ;
3: !******************************** ;
4: ;
5: !Enter zone with R4 ;
6: ENTER ZONE(1) ;
7: ;
8: !Wait Hem Pass1 Start ;
9: WAIT GI[3:START PASS BIT]=1 ;
10: ;
11: !Hemming pass1 ;
12: GO[3:HEM PASS BIT]=1 ;
13: ;
14: !******************************** ;
15: ! Hem Pass 1 ;
16: !******************************** ;
17: ;
18:J P[1:via1] 70% CNT50 ;
19:L P[2] 1000mm/sec CNT20 ;
20:L P[3] 500mm/sec CNT30 ;
21:L P[4] 500mm/sec CNT30 ;
22:L P[5] 500mm/sec CNT30 ;
23:L P[6:via3] 500mm/sec FINE ;
24: ;
25: !Exit zone with R4 ;
26: EXIT ZONE(1) ;
27: ;
28:L P[7:via4] 500mm/sec CNT20 ;
29:L P[8:via5] 500mm/sec CNT20 ;
30:L P[9:via6] 500mm/sec CNT20 ;
31:L P[10:via7] 500mm/sec CNT20 ;
32:L P[11:via8] 500mm/sec CNT20 ;
33:L P[12:via9] 500mm/sec FINE ;
34:L P[13:via10] 500mm/sec CNT20 ;
35:L P[14:via11] 500mm/sec CNT20 ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 34 of 64
36:L P[15:via12] 500mm/sec CNT20 ;
37:L P[16:via13] 500mm/sec CNT20 ;
38:L P[17:via14] 500mm/sec CNT20 ;
39:L P[18:via15] 500mm/sec CNT20 ;
40:L P[19:via16] 500mm/sec CNT20 ;
41:L P[20:via17] 500mm/sec CNT20 ;
42:L P[21:via18] 500mm/sec CNT20 ;
43:L P[22:via19] 500mm/sec CNT20 ;
44: ;
45: !Enter zone with R2 ;
46: ENTER ZONE(2) ;
47: ;
48:L P[23:via20] 500mm/sec CNT20 ;
49:L P[24:via21] 500mm/sec CNT20 ;
50:L P[25:via22] 500mm/sec CNT20 ;
51:C P[26:via23]
: P[27:via24] 500mm/sec CNT20 ;
52:C P[28:via25]
: P[29:via26] 400mm/sec CNT10 ;
53:L P[30:via27] 500mm/sec CNT20 ;
54:L P[31:via28] 500mm/sec CNT20 ;
55:C P[32:via29]
: P[33:via30] 400mm/sec CNT10 ;
56:L P[34:via31] 500mm/sec CNT20 ;
57:L P[35:via32] 500mm/sec CNT20 ;
58:L P[36:via33] 500mm/sec CNT20 ;
59:L P[37:via34] 500mm/sec CNT20 ;
60:L P[38:via35] 350mm/sec CNT10 ;
61:C P[39:via36]
: P[40:via37] 350mm/sec CNT10 ;
62:C P[41:via38]
: P[42:via40] 500mm/sec CNT20 ;
63:L P[43:via41] 500mm/sec CNT20 ;
64: ;
65: !Hem pass1 complete ;
66: GO[3:HEM PASS BIT]=0 ;
67: ;
68:L P[44:end] 1000mm/sec CNT60 ;
69: ;
70: !******************************** ;
71: ! Hem Pass 2 ;
72: !******************************** ;
73: ;
74: !Wait Hem Pass2 Start ;
75: WAIT GI[3:START PASS BIT]=2 ;
76: ;
77: !Hemming pass2 ;
78: GO[3:HEM PASS BIT]=2 ;
79: ;
80:L P[45:via0] 500mm/sec FINE ;
81:L P[46:via1] 500mm/sec CNT50 ;
82:C P[47:via2]
: P[48:via3] 350mm/sec CNT30 ;
83:L P[49:via4] 350mm/sec CNT30 ;
84:C P[50:via5]
: P[51:via6] 350mm/sec CNT30 ;
85:L P[52:via7] 500mm/sec CNT50 ;
86:L P[53:via8] 500mm/sec CNT50 ;
87:L P[54:via9] 500mm/sec CNT50 ;
88:L P[55:via10] 500mm/sec CNT50 ;
89:L P[56:via11] 400mm/sec CNT30 ;
90:C P[57:via12]
: P[58:via13] 500mm/sec CNT50 ;
91:L P[59:via14] 500mm/sec CNT50 ;
92:L P[60:via15] 400mm/sec CNT30 ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 35 of 64
93:C P[61:via16]
: P[62:via17] 500mm/sec CNT50 ;
94:C P[63:via18]
: P[64:via19] 500mm/sec CNT50 ;
95:L P[65:via20] 500mm/sec CNT50 ;
96:L P[66:via21] 500mm/sec CNT50 ;
97:L P[67:via22] 500mm/sec CNT50 ;
98:L P[68:via23] 500mm/sec FINE ;
99: ;
100: !Exit zone with R2 ;
101: EXIT ZONE(2) ;
102: ;
103:L P[69:via24] 500mm/sec CNT50 ;
104:L P[70:via25] 500mm/sec CNT50 ;
105:L P[71:via26] 500mm/sec CNT50 ;
106:L P[72:via27] 500mm/sec CNT50 ;
107:L P[73:via28] 500mm/sec CNT50 ;
108:L P[74:via29] 500mm/sec CNT50 ;
109:L P[75:via30] 500mm/sec CNT50 ;
110:L P[76:via31] 500mm/sec CNT50 ;
111:L P[77:via32] 500mm/sec CNT50 ;
112:L P[78:via33] 500mm/sec CNT50 ;
113:L P[79:via34] 500mm/sec CNT50 ;
114: ;
115: !Enter zone with R4 ;
116: ENTER ZONE(1) ;
117: ;
118:L P[80:via35] 500mm/sec CNT50 ;
119:L P[81:via36] 500mm/sec CNT50 ;
120:L P[82:via37] 500mm/sec CNT50 ;
121:L P[83:via38] 500mm/sec CNT50 ;
122:L P[84] 500mm/sec CNT50 ;
123:L P[85] 500mm/sec CNT50 ;
124:L P[86] 500mm/sec CNT50 ;
125: ;
126: !Hem pass2 complete ;
127: GO[3:HEM PASS BIT]=0 ;
128: ;
129:L P[87:via39] 500mm/sec CNT50 ;
130:J P[88:via40] 70% CNT50 ;
131: ;
132: !******************************** ;
133: ! Hem Pass 3 ;
134: !******************************** ;
135: ;
136: UFRAME_NUM=1 ;
137: UTOOL_NUM=2 ;
138: ;
139: !Wait Hem Pass3 Start ;
140: WAIT GI[3:START PASS BIT]=3 ;
141: ;
142: !Hemming pass3 ;
143: GO[3:HEM PASS BIT]=3 ;
144: ;
145:J P[89:via0] 70% CNT50 ;
146:J P[90:via1] 70% CNT50 ;
147:L P[91:via2] 500mm/sec FINE ;
148:L P[92:via3] 500mm/sec CNT30 ;
149:L P[93:via4] 500mm/sec CNT30 ;
150:L P[94:via5] 500mm/sec CNT30 ;
151:L P[95:via6] 500mm/sec CNT30 ;
152:L P[96:via7] 500mm/sec CNT30 ;
153:L P[97:via8] 500mm/sec CNT30 ;
154:L P[98:via9] 500mm/sec FINE ;
155: ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 36 of 64
156: !Exit zone with R4 ;
157: EXIT ZONE(1) ;
158: ;
159:L P[99:via10] 500mm/sec CNT30 ;
160:L P[100:via11] 500mm/sec CNT30 ;
161:L P[101:via12] 500mm/sec CNT30 ;
162:L P[102:via13] 500mm/sec CNT30 ;
163:L P[103:via14] 500mm/sec CNT30 ;
164:L P[104:via15] 500mm/sec CNT30 ;
165:L P[105:via16] 500mm/sec CNT30 ;
166:L P[106:via17] 500mm/sec CNT30 ;
167:L P[107:via18] 500mm/sec CNT30 ;
168:L P[108:via19] 500mm/sec CNT30 ;
169: ;
170: !Enter zone with R2 ;
171: ENTER ZONE(2) ;
172: ;
173:L P[109:via20] 500mm/sec CNT30 ;
174:C P[110:via21]
: P[111:via22] 500mm/sec CNT30 ;
175:C P[112:via23]
: P[113:via24] 400mm/sec CNT15 ;
176:L P[114:via25] 400mm/sec CNT15 ;
177:L P[115:via26] 500mm/sec CNT30 ;
178:L P[116:via27] 500mm/sec CNT30 ;
179:C P[117:via28]
: P[118:via29] 400mm/sec CNT15 ;
180:C P[119:via30]
: P[120:via31] 500mm/sec CNT30 ;
181:L P[121:via32] 500mm/sec CNT30 ;
182:L P[122:via33] 500mm/sec CNT30 ;
183:L P[123:via34] 350mm/sec CNT15 ;
184:C P[124:via35]
: P[125:via36] 350mm/sec CNT15 ;
185:L P[126:via37] 350mm/sec CNT15 ;
186:L P[127:via38] 350mm/sec CNT15 ;
187:L P[128:via39] 500mm/sec CNT30 ;
188:L P[129:via40] 500mm/sec CNT30 ;
189: ;
190: !Hem pass3 complete ;
191: GO[3:HEM PASS BIT]=0 ;
192: ;
193:L P[130:via41] 1000mm/sec CNT60 ;
194: !******************************** ;
195: ! Hem Pass 4 ;
196: !******************************** ;
197: ;
198: !Wait Hem Pass4 Start ;
199: WAIT GI[3:START PASS BIT]=4 ;
200: ;
201: !Hemming pass4 ;
202: GO[3:HEM PASS BIT]=4 ;
203: ;
204:L P[131:via0] 600mm/sec FINE ;
205:L P[132:via1] 300mm/sec CNT15 ;
206:L P[133:via2] 300mm/sec CNT15 ;
207:L P[134:via3] 300mm/sec CNT15 ;
208:L P[135:via4] 300mm/sec CNT15 ;
209:C P[136:via5]
: P[137:via6] 300mm/sec CNT15 ;
210:L P[138:via7] 300mm/sec CNT15 ;
211:L P[139:via8] 300mm/sec CNT15 ;
212:L P[140:via9] 300mm/sec CNT15 ;
213:L P[141:via10] 300mm/sec CNT15 ;
214:L P[142:via11] 300mm/sec CNT15 ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 37 of 64
215:C P[143:via12]
: P[144:via13] 300mm/sec CNT15 ;
216:L P[145:via14] 300mm/sec CNT15 ;
217:L P[146:via15] 300mm/sec CNT15 ;
218:C P[147:via16]
: P[148:via17] 300mm/sec CNT15 ;
219:C P[149:via18]
: P[150:via19] 300mm/sec CNT15 ;
220:L P[151:via20] 300mm/sec FINE ;
221: ;
222: !Exit zone with R2 ;
223: EXIT ZONE(2) ;
224: ;
225:L P[152:via21] 300mm/sec CNT15 ;
226:L P[153:via22] 300mm/sec CNT15 ;
227:L P[154:via23] 300mm/sec CNT15 ;
228:L P[155:via24] 300mm/sec CNT15 ;
229:L P[156:via25] 300mm/sec CNT15 ;
230:L P[157:via26] 300mm/sec CNT15 ;
231:L P[158:via27] 300mm/sec CNT15 ;
232:L P[159:via28] 300mm/sec CNT15 ;
233:L P[160:via29] 300mm/sec CNT15 ;
234:L P[161:via30] 300mm/sec CNT15 ;
235: ;
236: !Enter zone with R4 ;
237: ENTER ZONE(1) ;
238: ;
239:L P[162:via31] 300mm/sec CNT15 ;
240:L P[163:via32] 300mm/sec CNT15 ;
241:L P[164:via33] 300mm/sec CNT15 ;
242:L P[165:via34] 300mm/sec CNT15 ;
243:L P[166:via35] 300mm/sec CNT15 ;
244:L P[167:via36] 300mm/sec CNT15 ;
245:L P[168:via37] 300mm/sec CNT15 ;
246:L P[169:via38] 300mm/sec CNT15 ;
247:L P[170:via39] 1000mm/sec CNT60 ;
248: !Hem pass4 complete ;
249: GO[3:HEM PASS BIT]=0 ;
250: ;
251: !WAIT FOR AIR PRESSURE OK ;
252: WAIT DI[537:PRESSELBIT1]=ON ;
253: ;
254: !SET HEM SEQUENCE COMPLETE ;
255: DO[43:UDEF RBT OUT 3]=PULSE,3.0sec ;
256: ;
257:J P[171:via40] 80% CNT100 ;
258:J P[172:via41] 80% FINE ;
259: ;
260: !Exit zone1 W/310R4 ;
261: EXIT ZONE(1) ;
262: ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 38 of 64
2.2.3 PULL_ROLL – Pull Position MACRO
/PROG PULL_ROLL Macro
/ATTR
OWNER = MNEDITOR;
COMMENT = "Sets Roller PULL";
PROG_SIZE = 660;
CREATE = DATE 09-10-01 TIME 15:20:34;
MODIFIED = DATE 13-02-15 TIME 02:48:52;
FILE_NAME = GRP1_OPE;
VERSION = 0;
LINE_COUNT = 14;
MEMORY_SIZE = 976;
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 = *,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/APPL
SPOT : TRUE ;
SPOT Welding Equipment Number : 1 ;
CYCLE_REFERENCE = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
CYCLE_TARGET = 0.00 ;
/MN
1: !******************************** ;
2: !Sets Roller to Pull Position ;
3: ! ;
4: ! NOTE: This program has NO ;
5: ! GP[1:robot] and ;
6: ! GP[2:servogun] motion ;
7: ! ;
8: !******************************** ;
9: ! ;
10: !ROLLER TO PUSH POS ;
11: DO[530:ROLL2PUSHPOS]=OFF ;
12: ;
13: !ROLLER TO PULL POS ;
14: DO[529:ROLL2PULLPOS]=ON ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 39 of 64
2.2.4 PUSH_ROLL – Push Position MACRO
/PROG PUSH_ROLL Macro
/ATTR
OWNER = MNEDITOR;
COMMENT = "Sets Roller Push";
PROG_SIZE = 660;
CREATE = DATE 09-10-01 TIME 15:20:34;
MODIFIED = DATE 13-02-15 TIME 02:48:50;
FILE_NAME = GRP1_OPE;
VERSION = 0;
LINE_COUNT = 14;
MEMORY_SIZE = 976;
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 = *,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/APPL
SPOT : TRUE ;
SPOT Welding Equipment Number : 1 ;
CYCLE_REFERENCE = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
CYCLE_TARGET = 0.00 ;
/MN
1: !******************************** ;
2: !Sets Roller to Push Position ;
3: ! ;
4: ! NOTE: This program has NO ;
5: ! GP[1:robot] and ;
6: ! GP[2:servogun] motion ;
7: ! ;
8: !******************************** ;
9: ! ;
10: !ROLLER TO PULL POS ;
11: DO[529:ROLL2PULLPOS]=OFF ;
12: ;
13: !ROLLER TO PUSH POS ;
14: DO[530:ROLL2PUSHPOS]=ON ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 40 of 64
2.2.5 DIE_1DROP – Drop Die MACRO
/PROG DIE_1DROP Macro
/ATTR
OWNER = SHIFT;
COMMENT = "DROP DIE1";
PROG_SIZE = 2208;
CREATE = DATE 13-03-01 TIME 06:57:22;
MODIFIED = DATE 13-03-07 TIME 22:21:04;
FILE_NAME = TC_1DROP;
VERSION = 0;
LINE_COUNT = 94;
MEMORY_SIZE = 2592;
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 = *,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/APPL
SPOT Welding Equipment Number : 1 ;
CYCLE_REFERENCE = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
CYCLE_TARGET = 0.00 ;
/MN
1: !***************************** ;
2: !DIE #1 DROP MACRO ;
3: ! ;
4: !***************************** ;
5: ;
6: ! VERIFY Die#1 is Present ;
7: ! IF NOT = ON, ABORT Program ;
8: IF DI[45:UDEF RBT IN 5]=OFF,JMP LBL[999] ;
9: ;
10: !ENTER ZONE W/SHUTTLE ;
11: ENTER ZONE(6) ;
12: ;
13: !Move Overhead Home ;
14: CALL UPPER_POS_HOME ;
15: ;
16: !Verify no part in upper die ;
17: WAIT DI[67:PART PRESENT 1]=OFF ;
18: ;
19: !******************************** ;
20: !LOWER HEMMER TO DROP POSITION ;
21: !******************************** ;
22: ;
23: !Wait Frame present on Lower Die ;
24: WAIT DI[41:UDEF RBT IN 1]=ON ;
25: ;
26: !RETURN SHOT PIN ;
27: CALL GRP1_OPN ;
28: !WAIT SHOT PIN RETURNED ;
29: WAIT DI[73:OVERHEAD PIN RET]=ON ;
30: ;
31: WAIT 2.00(sec) ;
32: ;
33: !OPEN PART RETAINER ;
34: CALL GRP2_OPN ;
35: !WAIT PART RETAINER OPENED ;
36: WAIT DI[75:RETAINR CLMP RET]=ON ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 41 of 64
37: ;
38: !CALL LOWER DIE1 PROGRAM ;
39: CALL LOWER_DIE1 ;
40: ;
41: !CHECK HEMMER LOWERED ;
42: WAIT DO[46:UDEF RBT OUT 6]=ON ;
43: ;
44: !CLEAR TO UNCLAMP HEMMER ;
45: WAIT DI[46:UDEF RBT IN 6]=ON ;
46: ;
47: !RETURN HOOK LOCK ;
48: CALL GRP5_OPN ;
49: !WAIT HOOK LOCK RETURNED ;
50: WAIT DI[81:HOOK LOCK RET]=ON ;
51: ;
52: WAIT 2.00(sec) ;
53: ;
54: !RETURN GEO DOCK LOCK ;
55: CALL GRP4_OPN ;
56: !WAIT GEO DOCK LOCK RETURNED ;
57: WAIT DI[79:GEODOCK LOCK RET]=ON ;
58: WAIT 2.00(sec) ;
59: ;
60: !******************************** ;
61: !RAISE HEMMER TO UPPER POSITION ;
62: !******************************** ;
63: ;
64: !CLEAR TO RAISE HEMMER ;
65: WAIT DI[44:UDEF RBT IN 4]=ON ;
66: ;
67: !RETURN SHOT PIN ;
68: CALL GRP1_OPN ;
69: !WAIT SHOT PIN RETURNED ;
70: WAIT DI[73:OVERHEAD PIN RET]=ON ;
71: ;
72: !CALL DETACH RAISE MACRO ;
73: CALL DIECHNG_RAISE ;
74: ;
75: !CHECK HEMMER RAISED ;
76: WAIT DO[45:UDEF RBT OUT 5]=ON ;
77: ;
78: !EXTEND SHOT PIN ;
79: CALL GRP1_CLS ;
80: !WAIT SHOT PIN EXTENDED ;
81: WAIT DI[74:OVERHEAD PIN ADV]=ON ;
82: ;
83: !EXIT ZONE W/SHUTTLE ;
84: EXIT ZONE(6) ;
85: ;
86: !END PROGRAM ;
87: END ;
88: ;
89: !-------------------------------- ;
90: !DIE NOT PRESENT IN OVERHEAD ;
91: ! OR SOMETHING ELSE WENT WRONG ;
92: ! ABORT PROGRAM ;
93: LBL[999] ;
94: UALM[17] ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 42 of 64
2.2.6 DIE_1PICK – Pick Die MACRO
/PROG DIE_1PICK Macro
/ATTR
OWNER = SHIFT;
COMMENT = "PICK DIE1";
PROG_SIZE = 2286;
CREATE = DATE 13-03-05 TIME 06:26:18;
MODIFIED = DATE 13-03-07 TIME 22:21:16;
FILE_NAME = TC_1PICK;
VERSION = 0;
LINE_COUNT = 98;
MEMORY_SIZE = 2782;
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 = *,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/APPL
SPOT Welding Equipment Number : 1 ;
CYCLE_REFERENCE = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
CYCLE_TARGET = 0.00 ;
/MN
1: !***************************** ;
2: !DIE #1 PICK MACRO ;
3: ! ;
4: !***************************** ;
5: ;
6: ! VERIFY OVER HEAD is EMPTY ;
7: ! IF NOT = OFF, ABORT Program ;
8: IF DI[45:UDEF RBT IN 5]=ON,JMP LBL[999] ;
9: ;
10: !ENTER ZONE W/SHUTTLE ;
11: ENTER ZONE(6) ;
12: ;
13: !Move Overhead Home ;
14: CALL UPPER_POS_HOME ;
15: ;
16: !******************************** ;
17: !LOWER HEMMER TO PICK POSITION ;
18: !******************************** ;
19: ;
20: !RETURN SHOT PIN ;
21: CALL GRP1_OPN ;
22: !WAIT SHOT PIN RETURNED ;
23: WAIT DI[73:OVERHEAD PIN RET]=ON ;
24: !RETURN HOOK LOCK ;
25: CALL GRP5_OPN ;
26: !WAIT HOOK LOCK RETURNED ;
27: WAIT DI[81:HOOK LOCK RET]=ON ;
28: ;
29: !RETURN GEO DOCK LOCK ;
30: CALL GRP4_OPN ;
31: !WAIT GEO DOCK LOCK RETURNED ;
32: WAIT DI[79:GEODOCK LOCK RET]=ON ;
33: WAIT 2.00(sec) ;
34: ;
35: !CALL LOWER DIE1 PROGRAM ;
36: CALL LOWER_DIE1 ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 43 of 64
37: ;
38: !CHECK HEMMER LOWERED ;
39: WAIT DO[46:UDEF RBT OUT 6]=ON ;
40: ;
41: !Verify Die present in Overhead ;
42: WAIT DI[45:UDEF RBT IN 5]=ON ;
43: ;
44: !ADVANCE GEO DOCK LOCK ;
45: CALL GRP4_CLS ;
46: !WAIT GEO DOCK LOCK ADVANCED ;
47: WAIT DI[80:GEODOCK LOCK ADV]=ON ;
48: ;
49: WAIT 2.00(sec) ;
50: ;
51: !ADVANCE HOOK LOCK ;
52: CALL GRP5_CLS ;
53: !WAIT HOOK LOCK ADVANCED ;
54: WAIT DI[82:HOOK LOCK ADV]=ON ;
55: ;
56: WAIT 2.00(sec) ;
57: ;
58: !OPEN PART RETAINER ;
59: CALL GRP2_OPN ;
60: !WAIT PART RETAINER OPENED ;
61: WAIT DI[75:RETAINR CLMP RET]=ON ;
62: ;
63: !******************************** ;
64: !RAISE HEMMER TO UPPER POSITION ;
65: !******************************** ;
66: ;
67: !CLEAR TO RAISE HEMMER ;
68: WAIT DI[44:UDEF RBT IN 4]=ON ;
69: ;
70: !RETURN SHOT PIN ;
71: CALL GRP1_OPN ;
72: !WAIT SHOT PIN RETURNED ;
73: WAIT DI[73:OVERHEAD PIN RET]=ON ;
74: ;
75: !CALL RAISE HEMMER PROGRAM ;
76: CALL RAISED_POS ;
77: ;
78: !CHECK HEMMER RAISED ;
79: WAIT DO[45:UDEF RBT OUT 5]=ON ;
80: ;
81: !EXTEND SHOT PIN ;
82: CALL GRP1_CLS ;
83: !WAIT SHOT PIN EXTENDED ;
84: WAIT DI[74:OVERHEAD PIN ADV]=ON ;
85: ;
86: !EXIT ZONE W/SHUTTLE ;
87: EXIT ZONE(6) ;
88: ;
89: !END PROGRAM ;
90: END ;
91: ;
92: !-------------------------------- ;
93: !DIE PRESENT IN OVERHEAD ;
94: ! OR SOMETHING ELSE WENT WRONG ;
95: ! ABORT PROGRAM ;
96: LBL[999] ;
97: UALM[17] ;
98: ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 44 of 64
2.2.7 DIE_VERIFY – Die Verify / Changes Die MACRO
/PROG DIE_VERIFY Macro
/ATTR
OWNER = MNEDITOR;
COMMENT = "Die Verify ";
PROG_SIZE = 6094;
CREATE = DATE 11-11-25 TIME 08:39:58;
MODIFIED = DATE 13-02-26 TIME 22:06:16;
FILE_NAME = ;
VERSION = 0;
LINE_COUNT = 242;
MEMORY_SIZE = 6722;
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 = *,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/APPL
SPOT : TRUE ;
SPOT Welding Equipment Number : 1 ;
CYCLE_REFERENCE = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
CYCLE_TARGET = 0.00 ;
/MN
1: !***************************** ;
2: ! DIE VERIFY MACRO ;
3: ! ;
4: ! NOTE: This will automatically ;
5: ! change the Die if wrong ;
6: !***************************** ;
7: ;
8: LBL[1] ;
9: ;
10: !Goto Pick sequence if no ;
11: !die present in overhead ;
12: IF DI[45:UDEF RBT IN 5]=OFF,JMP LBL[899] ;
13: ;
14: !-------------------------------- ;
15: ! CHECK WHAT DIE TO VERIFY ;
16: ;
17: ! PROG SELECT BIT 1 from PLC ;
18: ! is for Die#1 ;
19: IF R[153:ProgSelNum]=1,JMP LBL[10] ;
20: ;
21: ! PROG SELECT BIT 23 from PLC ;
22: ! is for Die#2 ;
23: IF R[153:ProgSelNum]=23,JMP LBL[20] ;
24: ;
25: ! PROG SELECT BIT 43 from PLC ;
26: ! is for Die#3 ;
27: IF R[153:ProgSelNum]=43,JMP LBL[30] ;
28: ;
29: ! PROG SELECT BIT 63 from PLC ;
30: ! is for Die#4 ;
31: IF R[153:ProgSelNum]=63,JMP LBL[40] ;
32: ;
33: ! IF PROG SELECT BITS is NOT in ;
34: ! the range of 1-63 ;
35: ! THEN ABORT this JOB ;
36: JMP LBL[998] ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 45 of 64
37: ;
38: ;
39: !-------------------------------- ;
40: ! VERIFY Die#1 is present ;
41: LBL[10] ;
42: ! IF Die#1 present ;
43: !THEN END Program ;
44: IF DI[541:DIE 1 PRESENT]=ON AND DI[45:UDEF RBT IN 5]=ON,JMP
LBL[999] ;
45: ;
46: ! IF Wrong Die ;
47: ! must change to right Die ;
48: JMP LBL[800] ;
49: ;
50: !-------------------------------- ;
51: ! VERIFY Die#2 is present ;
52: LBL[20] ;
53: ! IF die#2 present ;
54: !THEN END Program ;
55: IF DI[542:DIE 2 PRESENT]=ON AND DI[45:UDEF RBT IN 5]=ON,JMP
LBL[999] ;
56: ;
57: ! IF Wrong Die ;
58: ! must change to right Die ;
59: JMP LBL[800] ;
60: ;
61: !-------------------------------- ;
62: ! VERIFY Die#3 is present ;
63: LBL[30] ;
64: ! IF Die#3 present ;
65: !THEN END Program ;
66: IF DI[543:DIE 3 PRESENT]=ON AND DI[45:UDEF RBT IN 5]=ON,JMP
LBL[999] ;
67: ;
68: ! IF Wrong Die ;
69: ! must change to right Die ;
70: JMP LBL[800] ;
71: ;
72: !-------------------------------- ;
73: ! VERIFY Die#4 is present ;
74: LBL[40] ;
75: ! IF Die#4 present ;
76: !THEN END Program ;
77: IF DI[544:DIE 4 PRESENT]=ON AND DI[45:UDEF RBT IN 5]=ON,JMP
LBL[999] ;
78: ;
79: ! IF Wrong Die ;
80: ! must change to right Die ;
81: ;
82: ;
83: !-------------------------------- ;
84: !WRONG DIE IS DETECTED ;
85: LBL[800] ;
86: ;
87: !Goto Pick sequence if no ;
88: !die present in overhead ;
89: IF DI[45:UDEF RBT IN 5]=OFF,JMP LBL[899] ;
90: ;
91: ;
92: !Verify which die present ;
93: !in Shuttle before ;
94: !going to DIE_XDROP ;
95: !-------------------------------- ;
96: ;
97: !Die #1 in position ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 46 of 64
98: IF DI[541:DIE 1 PRESENT]=ON,JMP LBL[600] ;
99: ;
100: !Die #2 in position ;
101: IF DI[542:DIE 2 PRESENT]=ON,JMP LBL[601] ;
102: ;
103: !Die #3 in position ;
104: IF DI[543:DIE 3 PRESENT]=ON,JMP LBL[602] ;
105: ;
106: !Die #4 in position ;
107: IF DI[544:DIE 4 PRESENT]=ON,JMP LBL[603] ;
108: ;
109: !IF no die present in shuttle ;
110: JMP LBL[610] ;
111: ;
112: !-------------------------------- ;
113: ! DIE#1 dropoff ;
114: LBL[600] ;
115: CALL DIE_1DROP ;
116: JMP LBL[899] ;
117: !-------------------------------- ;
118: ! DIE#2 die dropoff ;
119: LBL[601] ;
120: CALL DIE_2DROP ;
121: JMP LBL[899] ;
122: !-------------------------------- ;
123: ! DIE#3 die dropoff ;
124: LBL[602] ;
125: CALL DIE_3DROP ;
126: JMP LBL[899] ;
127: !-------------------------------- ;
128: ! DIE#4 die dropoff ;
129: LBL[603] ;
130: CALL DIE_4DROP ;
131: JMP LBL[899] ;
132: !-------------------------------- ;
133: ;
134: LBL[610:INVALID DIE CK] ;
135: !-------------------------------- ;
136: !DIE SHUTTLE OUT OF POSITION ;
137: ! OR SOMETHING ELSE WENT WRONG ;
138: ! ABORT PROGRAM ;
139: UALM[39] ;
140: ;
141: ;
142: !NO die present in Overhead, ;
143: !SKIP DROPOFF ;
144: LBL[899] ;
145: ;
146: !Verify die present in shuttle ;
147: ! before going to DIE_XPICK ;
148: !-------------------------------- ;
149: ;
150: ! PROG SELECT BIT 1 from PLC ;
151: ! is for Die #1 ;
152: IF R[153:ProgSelNum]=1,JMP LBL[700] ;
153: ;
154: ! PROG SELECT BIT 23 from PLC ;
155: ! is for Die #2 ;
156: IF R[153:ProgSelNum]=23,JMP LBL[701] ;
157: ;
158: ! PROG SELECT BIT 43 from PLC ;
159: ! is for Die #3 ;
160: IF R[153:ProgSelNum]=43,JMP LBL[702] ;
161: ;
162: ! PROG SELECT BIT 63 from PLC ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 47 of 64
163: ! is for Die #4 ;
164: IF R[153:ProgSelNum]=63,JMP LBL[703] ;
165: ;
166: ! IF PROG SELECT BITS is NOT in ;
167: ! the range of 1-63 ;
168: ! THEN ABORT this JOB ;
169: JMP LBL[710] ;
170: ;
171: !-------------------------------- ;
172: ! Request DIE#1 in position ;
173: LBL[700] ;
174: DO[541:DIE 1 REQUEST]=ON ;
175: WAIT DI[541:DIE 1 PRESENT]=ON ;
176: DO[541:DIE 1 REQUEST]=OFF ;
177: JMP LBL[711] ;
178: !-------------------------------- ;
179: ! Request DIE#2 in position ;
180: LBL[701] ;
181: DO[542:DIE 2 REQUEST]=ON ;
182: WAIT DI[542:DIE 2 PRESENT]=ON ;
183: DO[542:DIE 2 REQUEST]=OFF ;
184: JMP LBL[711] ;
185: !-------------------------------- ;
186: ! Request DIE#3 in position ;
187: LBL[702] ;
188: DO[543:DIE 3 REQUEST]=ON ;
189: WAIT DI[543:DIE 3 PRESENT]=ON ;
190: DO[543:DIE 3 REQUEST]=OFF ;
191: JMP LBL[711] ;
192: !-------------------------------- ;
193: ! Request DIE#4 in position ;
194: LBL[703] ;
195: DO[544:DIE 4 REQUEST]=ON ;
196: WAIT DI[544:DIE 4 PRESENT]=ON ;
197: DO[544:DIE 4 REQUEST]=OFF ;
198: JMP LBL[711] ;
199: !-------------------------------- ;
200: LBL[710:INVAL DIE CK] ;
201: !-------------------------------- ;
202: !PG NUMBER OUT OF RANGE ;
203: ! OR SOMETHING ELSE WENT WRONG ;
204: ! ABORT PROGRAM ;
205: UALM[39] ;
206: !-------------------------------- ;
207: ;
208: LBL[711:PICK OK] ;
209: !PICKUP DIE in Shuttle ;
210: ;
211: !Prog select 1 & no die present ;
212: !in overhead, Pick DIE#1 ;
213: IF R[153:ProgSelNum]=1 AND DI[45:UDEF RBT IN 5]=OFF,CALL
DIE_1PICK ;
214: !-------------------------------- ;
215: !Prog select 23 & no die present ;
216: !in overhead, Pick DIE#2 ;
217: IF R[153:ProgSelNum]=23 AND DI[45:UDEF RBT IN 5]=OFF,CALL
DIE_2PICK ;
218: !-------------------------------- ;
219: !Prog select 43 & no die present ;
220: !in overhead, Pick DIE#3 ;
221: IF R[153:ProgSelNum]=43 AND DI[45:UDEF RBT IN 5]=OFF,CALL
DIE_3PICK ;
222: !-------------------------------- ;
223: !Prog select 63 & no die present ;
224: !in overhead, Pick DIE#4 ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 48 of 64
225: IF R[153:ProgSelNum]=63 AND DI[45:UDEF RBT IN 5]=OFF,CALL
DIE_4PICK ;
226: ;
227: ;
228: !Re-verify we have right DIE ;
229: IF DI[45:UDEF RBT IN 5]=ON,JMP LBL[1] ;
230: ;
231: !-------------------------------- ;
232: ! STYLE SELECT BITS NOT IN RANGE ;
233: ! OR SOMETHING ELSE WENT WRONG ;
234: ! ABORT PROGRAM ;
235: LBL[998] ;
236: UALM[38] ;
237: ;
238: !******************************** ;
239: ! EVERYTHINGS GOOD, END PROGRAM ;
240: LBL[999] ;
241: END ;
242: !******************************** ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 49 of 64
2.2.8 OLD_WHEEL_CK – Old Wheel Check
/PROG OLD_WHEEL_CK
/ATTR
OWNER = MNEDITOR;
COMMENT = "";
PROG_SIZE = 1102;
CREATE = DATE 13-03-08 TIME 04:27:06;
MODIFIED = DATE 13-03-08 TIME 04:27:18;
FILE_NAME = ;
VERSION = 0;
LINE_COUNT = 18;
MEMORY_SIZE = 1402;
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
SPOT Welding Equipment Number : 1 ;
CYCLE_REFERENCE = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
CYCLE_TARGET = 0.00 ;
/MN
1: !***************************** ;
2: !OLD WHEEL CHECK ;
3: ! ;
4: !***************************** ;
5: ;
6: !Set Robot UTOOL Number ;
7: UTOOL_NUM=1 ;
8: ;
9: !Set Robot UFRAME Number ;
10: UFRAME_NUM=1 ;
12: ;
13:J P[1] 80% CNT50 ;
14:J P[2] 80% CNT50 ;
15:J P[3] 80% CNT50 ;
16:L P[4:check] 600mm/sec FINE ;
17: ;
18: DO[531:ROLL1CHKREQ]=ON ;
19: WAIT DI[531:ROLL1CHKREV]=ON ;
20: DO[531:ROLL1CHKREQ]=OFF ;
21: ;
22:L P[5] 1000mm/sec CNT30 ;
23:J P[6] 80% CNT50 ;
24:J P[7] 80% CNT50 ;
25:J P[8] 80% CNT50 ;
26: ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 50 of 64
2.2.9 DIECHNG_RAISE – Die Change Raise MACRO
NOTE: This Macro uses Group 2 and is only for robots that are on an overhead
rail.
/PROG DIECHNG_RAISE Macro
/ATTR
OWNER = MNEDITOR;
COMMENT = "DIE CHANGE RAISE";
PROG_SIZE = 1157;
CREATE = DATE 13-03-05 TIME 23:59:24;
MODIFIED = DATE 13-03-06 TIME 03:42:00;
FILE_NAME = UPPER_PO;
VERSION = 0;
LINE_COUNT = 19;
MEMORY_SIZE = 1453;
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
SPOT Welding Equipment Number : 1 ;
CYCLE_REFERENCE = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
CYCLE_TARGET = 0.00 ;
/MN
1: !******************************** ;
2: ! DIE CHANGE RAISE MACRO ;
3: ! ;
6: !******************************** ;
7: ;
8: !******************************** ;
9: !******************************** ;
10: !STOP: MAKE SURE OVERHEAD PIN ;
11: ! RETRACTED ;
12: !******************************** ;
13: !******************************** ;
14: ;
15: WAIT DI[73:OVERHEAD PIN RET]=ON ;
16: !Move hold down to upper pos ;
17:J P[1] 25% FINE ACC25 ;
18:J P[3] 50% CNT50 ACC50 ;
19:J P[2:UPPER POS] 10% FINE ACC25 ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 51 of 64
2.2.10 LOWER_DIE1 – Die Change Lower MACRO
NOTE: This Macro uses Group 2 and is only for robots that are on an overhead
rail.
/PROG LOWER_DIE1 Macro
/ATTR
OWNER = MNEDITOR;
COMMENT = "Die Change";
PROG_SIZE = 950;
CREATE = DATE 13-02-20 TIME 05:38:18;
MODIFIED = DATE 13-02-27 TIME 02:48:18;
FILE_NAME = LOWER_PO;
VERSION = 0;
LINE_COUNT = 14;
MEMORY_SIZE = 1266;
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
SPOT : TRUE ;
SPOT Welding Equipment Number : 1 ;
CYCLE_REFERENCE = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
CYCLE_TARGET = 0.00 ;
/MN
1: !******************************** ;
2: ! DIE CHANGE LOWER MACRO ;
3: ! ;
6: !******************************** ;
7: ;
8: !STOP: MAKE SURE PIN RETRACTED ;
9: WAIT DI[73:OVERHEAD PIN RET]=ON ;
10: ;
11: !Move holddown to die ;
12: !change position ;
13:J P[1] 40% CNT20 ACC50 ;
14:J P[2:DIE CHANGE] 10% FINE ACC25 ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 52 of 64
2.2.11 LOWERED_POS – Lower Hemmer MACRO
NOTE: This Macro uses Group 2 and is only for robots that are on an overhead
rail.
/PROG LOWERED_POS Macro
/ATTR
OWNER = MNEDITOR;
COMMENT = "Lower Hemmer";
PROG_SIZE = 1096;
CREATE = DATE 13-03-06 TIME 02:57:32;
MODIFIED = DATE 13-03-06 TIME 03:43:08;
FILE_NAME = LOWER_DI;
VERSION = 0;
LINE_COUNT = 17;
MEMORY_SIZE = 1400;
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
SPOT : TRUE ;
SPOT Welding Equipment Number : 1 ;
CYCLE_REFERENCE = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
CYCLE_TARGET = 0.00 ;
/MN
1: !******************************** ;
2: !LOWER HEMMER MACRO ;
3: ! ;
6: !******************************** ;
7: ;
8: !******************************** ;
9: !******************************** ;
10: !STOP: MAKE SURE OVERHEAD PIN ;
11: ! RETRACTED ;
12: !******************************** ;
13: !******************************** ;
14: ;
15: WAIT DI[73:OVERHEAD PIN RET]=ON ;
16:J P[1] 40% CNT20 ACC50 ;
17:J P[2:lowered] 10% FINE ACC25 ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 53 of 64
2.2.12 RAISED_POS – Raise Hemmer MACRO
NOTE: This Macro uses Group 2 and is only for robots that are on an overhead
rail.
/PROG RAISED_POS Macro
/ATTR
OWNER = MNEDITOR;
COMMENT = "Raise Hemmer";
PROG_SIZE = 1096;
CREATE = DATE 13-03-05 TIME 03:23:24;
MODIFIED = DATE 13-03-07 TIME 05:25:32;
FILE_NAME = ;
VERSION = 0;
LINE_COUNT = 19;
MEMORY_SIZE = 1392;
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
SPOT : TRUE ;
SPOT Welding Equipment Number : 1 ;
CYCLE_REFERENCE = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
CYCLE_TARGET = 0.00 ;
/MN
1: !******************************** ;
2: ! RAISE HEMMER MACRO ;
3: ! ;
6: !******************************** ;
7: ;
8: !******************************** ;
9: !******************************** ;
10: !STOP: MAKE SURE OVERHEAD PIN ;
11: ! RETRACTED ;
12: !******************************** ;
13: !******************************** ;
14: ;
15: WAIT DI[73:OVERHEAD PIN RET]=ON ;
16: ;
17: !Move hold down to upper pos ;
18:J P[3] 50% CNT50 ACC50 ;
19:J P[2:UPPER POS] 10% FINE ACC25 ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 54 of 64
2.2.13 UPPER_POS_HOME – Hemmer Home Position MACRO
NOTE: This Macro uses Group 2 and is only for robots that are on an overhead
rail.
/PROG UPPER_POS_HOME Macro
/ATTR
OWNER = MNEDITOR;
COMMENT = "Hemmer Home";
PROG_SIZE = 1069;
CREATE = DATE 10-06-23 TIME 08:30:36;
MODIFIED = DATE 13-03-07 TIME 05:25:24;
FILE_NAME = UPPER_PO;
VERSION = 0;
LINE_COUNT = 16;
MEMORY_SIZE = 1377;
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
SPOT : TRUE ;
SPOT Welding Equipment Number : 1 ;
CYCLE_REFERENCE = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
CYCLE_TARGET = 0.00 ;
/MN
1: !******************************** ;
2: ! HEMMER HOME POSITION MACRO ;
3: ! ;
6: !******************************** ;
7: ;
8: !******************************** ;
9: !******************************** ;
10: !STOP: MAKE SURE OVERHEAD PIN ;
11: ! RETRACTED ;
12: !******************************** ;
13: !******************************** ;
14: ;
15: !Move hold down to upper pos ;
16:J P[2:UPPER POS] 10% FINE ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 55 of 64
2.2.14 WORK_POS1 – Hemmer Lowering Cycle MACRO
NOTE: This Macro uses Group 2 and is only for robots that are on an overhead
rail.
/PROG WORK_POS1 Macro
/ATTR
OWNER = MNEDITOR;
COMMENT = "Hemr Lowerd";
PROG_SIZE = 1098;
CREATE = DATE 13-03-05 TIME 03:09:16;
MODIFIED = DATE 13-03-09 TIME 01:32:06;
FILE_NAME = ;
VERSION = 0;
LINE_COUNT = 19;
MEMORY_SIZE = 1394;
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
SPOT : TRUE ;
SPOT Welding Equipment Number : 1 ;
CYCLE_REFERENCE = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
CYCLE_TARGET = 0.00 ;
/MN
1: !******************************** ;
2: ! HEMMER LOWER CYCLE MACRO ;
3: ! ;
6: !******************************** ;
7: ;
8: !******************************** ;
9: !******************************** ;
10: !STOP: MAKE SURE OVERHEAD PIN ;
11: ! RETRACTED ;
12: !******************************** ;
13: !******************************** ;
14: ;
15: WAIT DI[73:OVERHEAD PIN RET]=ON ;
16: ;
17: !Move hold down to lower pos ;
18:J P[1] 50% CNT50 ACC50 ;
19:J P[2:LOWER POS] 10% FINE ACC25 ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 56 of 64
2.2.15 HOME_IO – Reset Input/Output MACRO
/PROG HOME_IO Macro
/ATTR
OWNER = MNEDITOR;
COMMENT = "SET AT HOME I-O";
PROG_SIZE = 1814;
CREATE = DATE 10-05-05 TIME 14:56:52;
MODIFIED = DATE 13-03-08 TIME 03:12:06;
FILE_NAME = ;
VERSION = 0;
LINE_COUNT = 97;
MEMORY_SIZE = 2182;
PROTECT = READ_WRITE;
TCD: STACK_SIZE = 0,
TASK_PRIORITY = 60,
TIME_SLICE = 0,
BUSY_LAMP_OFF = 1,
ABORT_REQUEST = 7,
PAUSE_REQUEST = 3;
DEFAULT_GROUP = *,*,*,*,*;
CONTROL_CODE = 00000000 00000000;
/APPL
/MN
1: !******************************** ;
2: !MACRO SET AT HOME I-O ;
3: ! ;
4: !Also runs Automatically when ;
5: ! robot goes from non-home pos ;
6: ! to home pos ;
7: ! ;
8: ! NOTE: This program has NO ;
9: ! GP[1:robot] and ;
10: ! GP[2:servogun] motion ;
11: !***************************** ;
12: ;
13: !CLR TO ADV. TRANSFER ;
14: DO[954:CLRTOADVXFR]=ON ;
15: ;
16: !CLR TO RET. TRANSFER ;
17: DO[955:CLRTORETXFR]=ON ;
18: ;
19: !CLEAR TO UNCLAMP ;
20: DO[956:CLRTOUNCLMP]=ON ;
21: ;
22: ;
23: !ROBOT USER DEFINE OFF ;
24: DO[41:UDEF RBT OUT 1]=OFF ;
25: DO[42:UDEF RBT OUT 2]=OFF ;
26: DO[43:UDEF RBT OUT 3]=OFF ;
27: DO[44:UDEF RBT OUT 4]=OFF ;
28: ;
29: ;
30: !RESET HEM PROCESS SIGNALS ;
31: GO[3:HEM PASS BIT]=0 ;
32: DO[531:ROLL1CHKREQ]=OFF ;
33: DO[532:ROLL2CHKREQ]=OFF ;
34: DO[533:ROLL3CHKREQ]=OFF ;
35: DO[537:PRESREQBIT1]=OFF ;
36: DO[538:PRESREQBIT2]=OFF ;
37: DO[539:PRESREQBIT4]=OFF ;
38: DO[540:PRESREQBIT8]=OFF ;
39: DO[541:DIE 1 REQUEST]=OFF ;
40: DO[542:DIE 2 REQUEST]=OFF ;
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 57 of 64
41: DO[543:DIE 3 REQUEST]=OFF ;
42: DO[544:DIE 4 REQUEST]=OFF ;
43: ;
44: !RESET FAULT RESET ;
45: DO[959:FAULTRESET]=OFF ;
46: ;
47: ;
48: !RESET ROBOT LOOP ;
49: DO[24:RBT IN LOOP]=OFF ;
50: DO[963:PRGRM FLT]=OFF ;
51: ;
52: ;
53: !AT REPAIR OFF ;
54: DO[6:RBT AT MAINT]=OFF ;
54: DO[587:RBT AT MINMAINT]=OFF;
55: ;
56: ;
57: !RESET PICKUP POS ;
58: DO[49:RBT @ PKUP POS 1]=OFF ;
59: DO[59:RBT AT DRP OFF 1]=OFF ;
60: DO[50:RBT @ PKUP POS 2]=OFF ;
61: DO[60:RBT AT DRP OFF 2]=OFF ;
62: DO[51:RBT @ PKUP POS 3]=OFF ;
63: DO[61:RBT AT DRP OFF 3]=OFF ;
64: DO[52:RBT @ PKUP POS 4]=OFF ;
65: DO[62:RBT AT DRP OFF 4]=OFF ;
66: ;
67: ;
68: !RESET WRK POS ;
69: DO[177:MDL WRK POS 1]=OFF ;
70: DO[178:MDL WRK POS 2]=OFF ;
71: DO[179:MDL WRK POS 3]=OFF ;
72: DO[180:MDL WRK POS 4]=OFF ;
73: DO[181:MDL WRK POS 5]=OFF ;
74: DO[182:MDL WRK POS 6]=OFF ;
75: DO[183:MDL WRK POS 7]=OFF ;
76: DO[184:MDL WRK POS 8]=OFF ;
77: ;
78: ;
79: !CLEAR EXIT ZONES ;
80: DO[900:CLROFZONE1]=ON ;
81: DO[901:CLROFZONE2]=ON ;
82: DO[902:CLROFZONE3]=ON ;
83: DO[903:CLROFZONE4]=ON ;
84: DO[904:CLROFZONE5]=ON ;
85: DO[905:CLROFZONE6]=ON ;
86: DO[906:CLROFZONE7]=ON ;
87: DO[907:CLROFZONE8]=ON ;
88: DO[908:CLROFZONE9]=ON ;
89: DO[909:CLROFZONE10]=ON ;
90: DO[910:CLROFZONE11]=ON ;
91: DO[911:CLROFZONE12]=ON ;
92: DO[912:CLROFZONE13]=ON ;
93: DO[933:CLROFZONE14]=ON ;
94: ;
95: !Reset the register that holds ;
96: !the program number to run ;
97: R[153:ProgSelNum]=0 ;
/POS
/END
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 58 of 64
3 Robot Group I/O for Analog Roller Hemmers
The Analog Roller Hemmer uses a special Group I/O. The following pictures show how to
configure this Group I/O. If this I/O is not configured correctly, the robot will not function
properly.
Group Input:
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 59 of 64
Group Output:
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 60 of 64
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 61 of 64
4 Robot Group I/O for Pressure Request and Select Bits
The Pressure Requests (from the PLC) and the Pressure Selects (to the PLC) can be mapped
to Group IO to allow for unsigned integer values rather than binary values.
Sample shows GIO of size 8-bit. Actual Hemmer System may use 4-bit or 8 bit.
Group Input:
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 62 of 64
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 63 of 64
Group Output:
Ford-FANUC R30iA_R30iB NextGen_ENET_Safe_RollerHemmer_Appendix - 2016_02_12.doc
Page 64 of 64