Hey Everyone,
I could use some help with getting my tool change subroutine to work on my 8025M router. The tool changer is a Non-Random 6 tool changer (basically just X/Y tool positions {ISO30 tool clips} mounted along the long side of a 4'x8' table). Here is a rough diagram:
....._T1_T2_T3_T4_T5_T6_
__/____________________\__
|......................................| ^
|......................................| |
|......................................| Y=4'
|......................................| |
|o_______________________| v
<----------- X=8' --------->
After a machine reference (Home):
The absolute coordinates of the table origin are at (X6.365,Y0.135,Z-5.75).
The absolute coordinates of T1 are @ (X39.643,Y59.990,Z-4.702).
The TC subr references the position of T2-T6 to the positon of T1.
The table soft limits (absolute referenced from machine ref zero) are:
XPos=111.0, XNeg= -1.0
YPos=61.5, YNeg=-0.5
ZPos=1.0, ZNeg=-5.75
There are two programs that I am trying to use (attached at the bottom of this post). The first program (%43210) is a short program that simply calls for a tool change. The second is the tool change subroutine (%99998). The TC subr has a lot of comments included here, but I have stripped them out on the version that I have loaded on the machine.
PROBLEM
When I try to just run the %99998 in single block mode, I get the following:
Error 016 : N _ _ Doesn't Exist
N0310 G26N3000.3030
The Error Code Book says: Error 016 - The called subroutine or block does not exist or the block searched by means of a special function F17 does not exist.
As I scroll thru the lines of code on the machine, the blocks N3000 thru N3030 are definitely in there, but?!?!?!
Any help or insight would be greatly appreciated.
R/Todd
Here are the two programs:
%43210
%43210
N0040 G90
N0050 G70 (Inch)
N0060 G59 X0 Y0 Z0
N0140 M05
N0200 T6.6
N0220 M6
N0280 G0 X0.0 Y0.0 Z0.0
N0290 M05
N0540 M30
%99998
%99998
N0010 (TOOL CHANGE PROGRAM WITH NEW X&Y AXES)
N0020 ()
N0030 G22N99 (DEFINES THIS AS A STANDARD SUBROUTINE NUMBER 99)
N0040 G90 (SET ALL MOVES TO ABSOLUTE PROGRAMMING)
N0050 G53 (ZERO ALL OFFSETS)
N0060 M5 (TURN SPINDLE OFF)
N0070 P40=K39.643 (X BASE POS - X POS OF TOOL #1)
N0080 P41=K59.990 (Y BASE POS - Y POS OF TOOL #1)
N0090 P42=K-4.702 (Z BASE POS - Z POS OF TOOL #1)
N0100 ()
N0110 (P45=LAST OR OLD TOOL NUMBER)
N0120 (P49=SELECTED OR NEW TOOL NUMBER)
N0130 (P50=CALC X POS FOR OLD OR NEW TOOL)
N0140 (P51=CALC Y POS FOR OLD OR NEW TOOL)
N0150 (P52=CALC Z POS FOR OLD OR NEW TOOL)
N0160 P53=K57.000 (SET P53 TO A TEMP Y POSITION 1)
N0170 P54=K50.000 (SET P54 TO A TEMP Y POSITION 2)
N0180 ()
N0190 (-------------------------------------------------------------)
N0200 (DETERMINE THE OLD TOOL NUMBER FOR X,Y&Z CALCS)
N0210 ()
N0220 P23=P45 (SETS PARAMETER P23 = LAST/OLD TOOL NUMBER)
N0230 (IS THIS OLD TOOL #1 ?)
N0240 P49=P23F2K1 (IF O.T.#1-1=0, THEN DO NEXT LINE, ELSE SKIP)
N0250 G26N1000.1030 (IF O.T. WAS #1 THEN GOTO LINES 1000 TO 1030)
N0260 (IS THIS OLD TOOL #2 ?)
N0270 P49=P23F2K2 (IF O.T.#2-2=0, THEN DO NEXT LINE, ELSE SKIP)
N0280 G26N2000.2030 (IF O.T. WAS #2 THEN GOTO LINES 2000 TO 2030)
N0290 (IS THIS OLD TOOL #3 ?)
N0300 P49=P23F2K3 (IF O.T.#3-3=0, THEN DO NEXT LINE, ELSE SKIP)
N0310 G26N3000.3030 (IF O.T. WAS #3 THEN GOTO LINES 3000 TO 3030)
N0320 (IS THIS OLD TOOL #4 ?)
N0330 P49=P23F2K4 (IF O.T.#4-4=0, THEN DO NEXT LINE, ELSE SKIP)
N0340 G26N4000.4030 (IF O.T. WAS #4 THEN GOTO LINES 4000 TO 4030)
N0350 (IS THIS OLD TOOL #5 ?)
N0360 P49=P23F2K5 (IF O.T.#5-5=0, THEN DO NEXT LINE, ELSE SKIP)
N0370 G26N5000.5030 (IF O.T. WAS #5 THEN GOTO LINES 5000 TO 5030)
N0380 (IS THIS OLD TOOL #6 ?)
N0390 P49=P23F2K6 (IF O.T.#6-6=0, THEN DO NEXT LINE, ELSE SKIP)
N0400 G26N6000.6030 (IF O.T. WAS #6 THEN GOTO LINES 6000 TO 6030)
N0410 ()
N0420 (------------------------------------------------------------------)
N0430 ( REMOVE THE OLD TOOL FROM SPINDLE )
N0440 ()
N0450 G0YP54 (MOVE Y TO TEMP Y POSTION Y2)
N0460 XP50 (MOVE X TO CALC X POS FOR IN/OUT OF CUR TOOL)
N0470 YP53 (MOVE Y TO TEMP Y POSITION Y1)
N0480 ZP52 (MOVE Z TO CALC Z POS FOR IN/OUT OF CUR TOOL)
N0490 M89 (DECODED M FUNCT FOR TSDEVICE RELEASE)
N0500 G1G7YP51F200 (MOVE RACK TO SPINDLE IN SQUARE MOTION)
N0510 (G7 = Y MOVE MUST BE DONE BEFORE Z1 MOVE)
N0520 M91 (DECODED M FUNCTION FOR RELEASE DRAWBAR)
N0530 G4K1 (DWELL FOR 1 SEC)
N0540 Z1 (MOVE Z TO ABSOLUTE Z=1.0 - APPROX 5.5" UP)
N0550 G0YP54 (RAPID Y TO TEMP Y POSITION 2)
N0560 ()
N0570 (---------------------------------------------------------------)
N0580 (DETERMINE NEW TOOL AND CALC NEW POSITIONS)
N0590 ()
N0600 P29=F29 (SET PARAM P29=VALUE OF NEW TOOL#)
N0610 (FOR NEW TOOL = 1)
N0620 P49=P29F2K1 (IF N.T.#1-1=0, THEN DO NEXT LINE, ELSE SKIP)
N0630 G26N1000.1030 (IF N.T. IS #1 THEN GOTO LINES 1000 TO 1030)
N0640 (FOR NEW TOOL = 2)
N0650 P49=P29F2K2 (IF N.T.#2-2=0, THEN DO NEXT LINE, ELSE SKIP)
N0660 G26N2000.2030 (IF N.T. IS #2 THEN GOTO LINES 2000 TO 2030)
N0670 (FOR NEW TOOL = 3)
N0680 P49=P29F2K3 (IF N.T.#3-3=0, THEN DO NEXT LINE, ELSE SKIP)
N0690 G26N3000.3030 (IF N.T. IS #3 THEN GOTO LINES 3000 TO 3030)
N0700 (FOR NEW TOOL = 4)
N0710 P49=P29F2K4 (IF N.T.#4-4=0, THEN DO NEXT LINE, ELSE SKIP)
N0720 G26N4000.4030 (IF N.T. IS #4 THEN GOTO LINES 4000 TO 4030)
N0730 (FOR NEW TOOL = 5)
N0740 P49=P29F2K5 (IF N.T.#5-5=0, THEN DO NEXT LINE, ELSE SKIP)
N0750 G26N5000.5030 (IF N.T. IS #5 THEN GOTO LINES 5000 TO 5030)
N0760 (FOR NEW TOOL = 6)
N0770 P49=P29F2K6 (IF N.T.#6-6=0, THEN DO NEXT LINE, ELSE SKIP)
N0780 G26N6000.6030 (IF N.T. IS #6 THEN GOTO LINES 6000 TO 6030)
N0790 ()
N0800 (-------------------------------------------------------------)
N0810 (NEW TOOL INTO SPINDLE)
N0820 ()
N0830 XP50 (MOVE X TO CALC X POSITION)
N0840 YP51 (MOVE Y TO CALC Y POSITION)
N0850 G1ZP52 (LINEAR MOVE Z TO CALC Z POSITION FROM Z1.0)
N0860 M92 (DECODED M FUNCTION FOR DRAW BAR HOLD)
N0870 G4K1 (DWELL FOR 1 SEC)
N0880 G0YP53 (RAPID Y TO TEMP Y POSITION 1 - TOOL OUT OF HOLDER)
N0890 Z1 (MOVE Z BACK UP TO ABS Z=1.0)
N0900 YP54 (MOVE Y TO TEMP Y POSITION 2)
N0910 M90 (DECODED M FUNTION FOR TSDEVICE HOLD)
N0920 P45=F29 (SET P45 = NEW TOOL# DETERMINED ABOVE SECT)
N0930 G24 (END OF SUBROUTINE)
N0940 ()
N0950 (------------------------------------------------------------)
N0960 ()
N1000 P50=P40 (CALC X FOR TOOL #1 = X BASE POS VALUE)
N1010 P51=P41 (CALC Y FOR TOOL #1 = Y BASE POS VALUE)
N1020 P52=P42 (CALC Z FOR TOOL #1 = Z BASE POS VALUE)
N1030 ()
N1040 ()
N2000 P50=P40F1K6.004 (CALC X FOR T#2 = X BASE + T2 X OFFSET)
N2010 P51=P41F1K-0.042 (CALC Y FOR T#2 = Y BASE VALUE)
N2020 P52=P42F1K0.044 (CALC Z FOR T#2 = Z BASE + T2 Z OFFSET)
N2030 ()
N2040 ()
N3000 P50=P40F1K12.020 (CALC X FOR T#3 = X BASE + T3 X OFFSET)
N3010 P51=P41F1K-0.137 (CALC Y FOR T#3 = Y BASE)
N3020 P52=P42F1K0.105 (CALC Z FOR T#3 = Z BASE + T3 Z OFFSET)
N3030 ()
N3040 ()
N4000 P50=P40F1K18.005 (CALC X FOR T#4 = X BASE + T4 X OFFSET)
N4010 P51=P41F1K-0.077 (CALC Y FOR T#4 = Y BASE)
N4020 P52=P42F1K0.142 (CALC Z FOR T#4 = Z BASE + T4 Z OFFSET)
N4030 ()
N4040 ()
N5000 P50=P40F1K24.051 (CALC X FOR T#5 = X BASE + T5 X OFFSET)
N5010 P51=P41F1K-0.150 (CALC Y FOR T#5 = Y BASE)
N5020 P52=P42F1K0.209 (CALC Z FOR T#5 = Z BASE + T5 Z OFFSET)
N5030 ()
N5040 ()
N6000 P50=P40F1K30.0 (CALC X FOR T#6 = X BASE + T6 X OFFSET)
N6010 P51=P41F1K-0.188 (CALC Y FOR T#6 = Y BASE)
N6020 P52=P42K0.57 (CALC Z FOR T#6 = Z BASE + T6 Z OFFSET)
N6030 ()
N6040 ()
I could use some help with getting my tool change subroutine to work on my 8025M router. The tool changer is a Non-Random 6 tool changer (basically just X/Y tool positions {ISO30 tool clips} mounted along the long side of a 4'x8' table). Here is a rough diagram:
....._T1_T2_T3_T4_T5_T6_
__/____________________\__
|......................................| ^
|......................................| |
|......................................| Y=4'
|......................................| |
|o_______________________| v
<----------- X=8' --------->
After a machine reference (Home):
The absolute coordinates of the table origin are at (X6.365,Y0.135,Z-5.75).
The absolute coordinates of T1 are @ (X39.643,Y59.990,Z-4.702).
The TC subr references the position of T2-T6 to the positon of T1.
The table soft limits (absolute referenced from machine ref zero) are:
XPos=111.0, XNeg= -1.0
YPos=61.5, YNeg=-0.5
ZPos=1.0, ZNeg=-5.75
There are two programs that I am trying to use (attached at the bottom of this post). The first program (%43210) is a short program that simply calls for a tool change. The second is the tool change subroutine (%99998). The TC subr has a lot of comments included here, but I have stripped them out on the version that I have loaded on the machine.
PROBLEM
When I try to just run the %99998 in single block mode, I get the following:
Error 016 : N _ _ Doesn't Exist
N0310 G26N3000.3030
The Error Code Book says: Error 016 - The called subroutine or block does not exist or the block searched by means of a special function F17 does not exist.
As I scroll thru the lines of code on the machine, the blocks N3000 thru N3030 are definitely in there, but?!?!?!
Any help or insight would be greatly appreciated.
R/Todd
Here are the two programs:
%43210
%43210
N0040 G90
N0050 G70 (Inch)
N0060 G59 X0 Y0 Z0
N0140 M05
N0200 T6.6
N0220 M6
N0280 G0 X0.0 Y0.0 Z0.0
N0290 M05
N0540 M30
%99998
%99998
N0010 (TOOL CHANGE PROGRAM WITH NEW X&Y AXES)
N0020 ()
N0030 G22N99 (DEFINES THIS AS A STANDARD SUBROUTINE NUMBER 99)
N0040 G90 (SET ALL MOVES TO ABSOLUTE PROGRAMMING)
N0050 G53 (ZERO ALL OFFSETS)
N0060 M5 (TURN SPINDLE OFF)
N0070 P40=K39.643 (X BASE POS - X POS OF TOOL #1)
N0080 P41=K59.990 (Y BASE POS - Y POS OF TOOL #1)
N0090 P42=K-4.702 (Z BASE POS - Z POS OF TOOL #1)
N0100 ()
N0110 (P45=LAST OR OLD TOOL NUMBER)
N0120 (P49=SELECTED OR NEW TOOL NUMBER)
N0130 (P50=CALC X POS FOR OLD OR NEW TOOL)
N0140 (P51=CALC Y POS FOR OLD OR NEW TOOL)
N0150 (P52=CALC Z POS FOR OLD OR NEW TOOL)
N0160 P53=K57.000 (SET P53 TO A TEMP Y POSITION 1)
N0170 P54=K50.000 (SET P54 TO A TEMP Y POSITION 2)
N0180 ()
N0190 (-------------------------------------------------------------)
N0200 (DETERMINE THE OLD TOOL NUMBER FOR X,Y&Z CALCS)
N0210 ()
N0220 P23=P45 (SETS PARAMETER P23 = LAST/OLD TOOL NUMBER)
N0230 (IS THIS OLD TOOL #1 ?)
N0240 P49=P23F2K1 (IF O.T.#1-1=0, THEN DO NEXT LINE, ELSE SKIP)
N0250 G26N1000.1030 (IF O.T. WAS #1 THEN GOTO LINES 1000 TO 1030)
N0260 (IS THIS OLD TOOL #2 ?)
N0270 P49=P23F2K2 (IF O.T.#2-2=0, THEN DO NEXT LINE, ELSE SKIP)
N0280 G26N2000.2030 (IF O.T. WAS #2 THEN GOTO LINES 2000 TO 2030)
N0290 (IS THIS OLD TOOL #3 ?)
N0300 P49=P23F2K3 (IF O.T.#3-3=0, THEN DO NEXT LINE, ELSE SKIP)
N0310 G26N3000.3030 (IF O.T. WAS #3 THEN GOTO LINES 3000 TO 3030)
N0320 (IS THIS OLD TOOL #4 ?)
N0330 P49=P23F2K4 (IF O.T.#4-4=0, THEN DO NEXT LINE, ELSE SKIP)
N0340 G26N4000.4030 (IF O.T. WAS #4 THEN GOTO LINES 4000 TO 4030)
N0350 (IS THIS OLD TOOL #5 ?)
N0360 P49=P23F2K5 (IF O.T.#5-5=0, THEN DO NEXT LINE, ELSE SKIP)
N0370 G26N5000.5030 (IF O.T. WAS #5 THEN GOTO LINES 5000 TO 5030)
N0380 (IS THIS OLD TOOL #6 ?)
N0390 P49=P23F2K6 (IF O.T.#6-6=0, THEN DO NEXT LINE, ELSE SKIP)
N0400 G26N6000.6030 (IF O.T. WAS #6 THEN GOTO LINES 6000 TO 6030)
N0410 ()
N0420 (------------------------------------------------------------------)
N0430 ( REMOVE THE OLD TOOL FROM SPINDLE )
N0440 ()
N0450 G0YP54 (MOVE Y TO TEMP Y POSTION Y2)
N0460 XP50 (MOVE X TO CALC X POS FOR IN/OUT OF CUR TOOL)
N0470 YP53 (MOVE Y TO TEMP Y POSITION Y1)
N0480 ZP52 (MOVE Z TO CALC Z POS FOR IN/OUT OF CUR TOOL)
N0490 M89 (DECODED M FUNCT FOR TSDEVICE RELEASE)
N0500 G1G7YP51F200 (MOVE RACK TO SPINDLE IN SQUARE MOTION)
N0510 (G7 = Y MOVE MUST BE DONE BEFORE Z1 MOVE)
N0520 M91 (DECODED M FUNCTION FOR RELEASE DRAWBAR)
N0530 G4K1 (DWELL FOR 1 SEC)
N0540 Z1 (MOVE Z TO ABSOLUTE Z=1.0 - APPROX 5.5" UP)
N0550 G0YP54 (RAPID Y TO TEMP Y POSITION 2)
N0560 ()
N0570 (---------------------------------------------------------------)
N0580 (DETERMINE NEW TOOL AND CALC NEW POSITIONS)
N0590 ()
N0600 P29=F29 (SET PARAM P29=VALUE OF NEW TOOL#)
N0610 (FOR NEW TOOL = 1)
N0620 P49=P29F2K1 (IF N.T.#1-1=0, THEN DO NEXT LINE, ELSE SKIP)
N0630 G26N1000.1030 (IF N.T. IS #1 THEN GOTO LINES 1000 TO 1030)
N0640 (FOR NEW TOOL = 2)
N0650 P49=P29F2K2 (IF N.T.#2-2=0, THEN DO NEXT LINE, ELSE SKIP)
N0660 G26N2000.2030 (IF N.T. IS #2 THEN GOTO LINES 2000 TO 2030)
N0670 (FOR NEW TOOL = 3)
N0680 P49=P29F2K3 (IF N.T.#3-3=0, THEN DO NEXT LINE, ELSE SKIP)
N0690 G26N3000.3030 (IF N.T. IS #3 THEN GOTO LINES 3000 TO 3030)
N0700 (FOR NEW TOOL = 4)
N0710 P49=P29F2K4 (IF N.T.#4-4=0, THEN DO NEXT LINE, ELSE SKIP)
N0720 G26N4000.4030 (IF N.T. IS #4 THEN GOTO LINES 4000 TO 4030)
N0730 (FOR NEW TOOL = 5)
N0740 P49=P29F2K5 (IF N.T.#5-5=0, THEN DO NEXT LINE, ELSE SKIP)
N0750 G26N5000.5030 (IF N.T. IS #5 THEN GOTO LINES 5000 TO 5030)
N0760 (FOR NEW TOOL = 6)
N0770 P49=P29F2K6 (IF N.T.#6-6=0, THEN DO NEXT LINE, ELSE SKIP)
N0780 G26N6000.6030 (IF N.T. IS #6 THEN GOTO LINES 6000 TO 6030)
N0790 ()
N0800 (-------------------------------------------------------------)
N0810 (NEW TOOL INTO SPINDLE)
N0820 ()
N0830 XP50 (MOVE X TO CALC X POSITION)
N0840 YP51 (MOVE Y TO CALC Y POSITION)
N0850 G1ZP52 (LINEAR MOVE Z TO CALC Z POSITION FROM Z1.0)
N0860 M92 (DECODED M FUNCTION FOR DRAW BAR HOLD)
N0870 G4K1 (DWELL FOR 1 SEC)
N0880 G0YP53 (RAPID Y TO TEMP Y POSITION 1 - TOOL OUT OF HOLDER)
N0890 Z1 (MOVE Z BACK UP TO ABS Z=1.0)
N0900 YP54 (MOVE Y TO TEMP Y POSITION 2)
N0910 M90 (DECODED M FUNTION FOR TSDEVICE HOLD)
N0920 P45=F29 (SET P45 = NEW TOOL# DETERMINED ABOVE SECT)
N0930 G24 (END OF SUBROUTINE)
N0940 ()
N0950 (------------------------------------------------------------)
N0960 ()
N1000 P50=P40 (CALC X FOR TOOL #1 = X BASE POS VALUE)
N1010 P51=P41 (CALC Y FOR TOOL #1 = Y BASE POS VALUE)
N1020 P52=P42 (CALC Z FOR TOOL #1 = Z BASE POS VALUE)
N1030 ()
N1040 ()
N2000 P50=P40F1K6.004 (CALC X FOR T#2 = X BASE + T2 X OFFSET)
N2010 P51=P41F1K-0.042 (CALC Y FOR T#2 = Y BASE VALUE)
N2020 P52=P42F1K0.044 (CALC Z FOR T#2 = Z BASE + T2 Z OFFSET)
N2030 ()
N2040 ()
N3000 P50=P40F1K12.020 (CALC X FOR T#3 = X BASE + T3 X OFFSET)
N3010 P51=P41F1K-0.137 (CALC Y FOR T#3 = Y BASE)
N3020 P52=P42F1K0.105 (CALC Z FOR T#3 = Z BASE + T3 Z OFFSET)
N3030 ()
N3040 ()
N4000 P50=P40F1K18.005 (CALC X FOR T#4 = X BASE + T4 X OFFSET)
N4010 P51=P41F1K-0.077 (CALC Y FOR T#4 = Y BASE)
N4020 P52=P42F1K0.142 (CALC Z FOR T#4 = Z BASE + T4 Z OFFSET)
N4030 ()
N4040 ()
N5000 P50=P40F1K24.051 (CALC X FOR T#5 = X BASE + T5 X OFFSET)
N5010 P51=P41F1K-0.150 (CALC Y FOR T#5 = Y BASE)
N5020 P52=P42F1K0.209 (CALC Z FOR T#5 = Z BASE + T5 Z OFFSET)
N5030 ()
N5040 ()
N6000 P50=P40F1K30.0 (CALC X FOR T#6 = X BASE + T6 X OFFSET)
N6010 P51=P41F1K-0.188 (CALC Y FOR T#6 = Y BASE)
N6020 P52=P42K0.57 (CALC Z FOR T#6 = Z BASE + T6 Z OFFSET)
N6030 ()
N6040 ()