#12=#5; //Backup pause time to #12 for gorbal using. IF(@81 == 1 ) GOTO 3000; //G73 IF(@81 == 3 ) GOTO 2000; //G85 IF(@81 == 4 ) GOTO 4000; //G89 IF(@81 == 5 ) GOTO 5000; //Tapping ..note it's code is copy from Turret!! ;// //G83 CANNED CYCLE #1=$3; /* Stores G90/G91 modal group */ #4=#21; /* Retraction amount D */ IF (#11 == #0) GOTO 1; /* If K is specified or not */ IF (#11 != 0) GOTO 5; N1 #11=1; /* IF K=0 or K is not specified */ N5 #11=ABS(#11); /* K is always a positive value */ IF ($2 == 18) GOTO 20; IF ($2 == 19) GOTO 30; /* Calculates the drilling amount */ /* #22:Drilling axis data */ N10 #22=#26; /* If drilling axis(Z) is specified or not */ IF (#1 == 91) GOTO 11; #10=#26-#18; #7=#18-$32; GOTO 12; N11 #10=#26; #7=#18; N12 IF ($10 == 98) GOTO 100; #7=#0; GOTO 100; N20 #22=#25; /* If drilling axis(Y) is specified or not */ IF (#1 == 91) GOTO 21; #10=#25-#18; #7=#18-$31; GOTO 22; N21 #10=#25; #7=#18; N22 IF ($10 == 98) GOTO 100; #7=#0; GOTO 100; N30 #22=#24; /* If drilling axis(X) is specified or not */ IF (#1 == 91) GOTO 31; #10=#24-#18; #7=#18-$30; GOTO 32; N31 #10=#24; #7=#18; N32 IF ($10 == 98) GOTO 100; #7=#0; N100 #3=0; #8=0; IF (#18 != #0) GOTO 105; /* If R is specified or not */ #7=#0; N105 IF (#17 == 0) GOTO 130; IF (#17 == #0) GOTO 130; /* If Q is specified or not */ IF (#22 == #0) GOTO 130; /* If drilling axis is specified or not */ IF (#10 < 0) GOTO 110; #17=ABS(#17); /* Q is always a positive value */ #4=-ABS(#4); GOTO 120; N110 #17=-ABS(#17); #4=ABS(#4); N120 #2=FIX(ABS(#10/#17)); #9=#10-#17*#2; GOTO 140; N130 #2=0; #10=#0; #9=0; N140 #2=#2-1; IF (#2 >= 0) GOTO 150; #4=#0; #3=-1; N150 #5=#17-#4; #13=#9-#4; IF ($2 == 18) GOTO 300; IF ($2 == 19) GOTO 400; /* G17 Plane */; N200 G0X#24Y#25; Z#18; G91F#6; GOTO 220; N210 G#1G0X#24Y#25; G91Z#7; #3=0; N220 IF (#2 < 0) GOTO 240; G1Z#17; N230 IF (#3 >= #2) GOTO 240; #20=#17*(#3+1)+#4; G0Z#4; Z-#20; Z#20; G1Z#5; #3=#3+1; GOTO 230; N240 IF (#9 == 0) GOTO 250; #20=#17*(#3+1)+#4; G0Z#4; Z-#20; Z#20; G1Z#13; N250 IF (#12 <= 0) GOTO 253;// #12 must >=1 then do G04 G04P#12;// wait a minuts N253 G0Z-#10; Z-#7; #8=#8+1; IF (#8 < #11) GOTO 210; G#1M99; /* G18 Plane */; N300 G0X#24Z#26; Y#18; G91F#6; GOTO 320; N310 G#1G0X#24Z#26; G91Y#7; #3=0; N320 IF (#2 < 0) GOTO 340; G1Y#17; N330 IF (#3 >= #2) GOTO 340; #20=#17*(#3+1)+#4; G0Y#4; Y-#20; Y#20; G1Y#5; #3=#3+1; GOTO 330; N340 IF (#9 == 0) GOTO 350; #20=#17*(#3+1)+#4; G0Y#4; Y-#20; Y#20; G1Y#13; N350 IF (#12 <= 0) GOTO 353;// #12 must >=1 then do G04 G04P#12;// wait a minuts N353 G0Y-#10; Y-#7; #8=#8+1; IF (#8 < #11) GOTO 310; G#1M99; /* G19 Plane */; N400 G0Y#25Z#26; X#18; G91F#6; GOTO 420; N410 G#1G0Y#25Z#26; G91X#7; #3=0; N420 IF (#2 < 0) GOTO 440; G1X#17; N430 IF (#3 >= #2) GOTO 440; #20=#17*(#3+1)+#4; G0X#4; X-#20; X#20; G1X#5; #3=#3+1; GOTO 430; N440 IF (#9 == 0) GOTO 450; #20=#17*(#3+1)+#4; G0X#4; X-#20; X#20; G1X#13; N450 IF (#12 <= 0) GOTO 453;// #12 must >=1 then do G04 G04P#12;// wait a minuts N453 G0X-#10; X-#7; #8=#8+1; IF (#8 < #11) GOTO 410; G#1M99; /* This MACOR is designed for MILL-G83(Drilling cycle,spot boring cycle) */; ;//-------------------------------------------------------------------------- ;//G85 CANNED CYCLE N2000 #1=$3; /* Stores G90/G91 modal group */ #4=#21; /* Retraction amount D */ IF (#11 == #0) GOTO 2001; /* If K is specified or not */ IF (#11 != 0) GOTO 2005; N2001 #11=1; /* IF K=0 or K is not specified */ N2005 #11=ABS(#11); /* K is always a positive value */ IF ($2 == 18) GOTO 2020; IF ($2 == 19) GOTO 2030; ;/* Calculates the drilling amount */ ;/* #22:Drilling axis data */ N2010 #22=#26; /* If drilling axis(Z) is specified or not */ IF (#1 == 91) GOTO 2011; #10=#26-#18; #7=#18-$32; GOTO 2012; N2011 #10=#26; #7=#18; N2012 IF ($10 == 98) GOTO 2100; #7=#0; GOTO 2100; N2020 #22=#25; /* If drilling axis(Y) is specified or not */ IF (#1 == 91) GOTO 2021; #10=#25-#18; #7=#18-$31; GOTO 2022; N2021 #10=#25; #7=#18; N2022 IF ($10 == 98) GOTO 2100; #7=#0; GOTO 2100; N2030 #22=#24; /* If drilling axis(X) is specified or not */ IF (#1 == 91) GOTO 2031; #10=#24-#18; #7=#18-$30; GOTO 2032; N2031 #10=#24; #7=#18; N2032 IF ($10 == 98) GOTO 2100; #7=#0; N2100 #8=0; IF (#18 != #0) GOTO 2105; /* If R is specified or not */ #7=#0; N2105 IF (#22 != #0) GOTO 2110; /* If drilling axis is specified or not */ #10=#0; N2110 IF ($2 == 18) GOTO 2300; IF ($2 == 19) GOTO 2400; /* G17 Plane */; N2200 G0X#24Y#25; Z#18; G91F#6; GOTO 2220; N2210 G#1G0X#24Y#25; G91Z#7; N2220 G1Z#10; IF (#12 <= 0) GOTO 2223;// #12 must >=1 then do G04 G04P#12;// wait a minuts N2223; Z-#10; G0Z-#7; #8=#8+1; IF (#8 < #11) GOTO 2210; G#1M99; /* G18 Plane */; N2300 G0X#24Z#26; Y#18; G91F#6; GOTO 2320; N2310 G#1G0X#24Z#26; G91Y#7; N2320 G1Y#10; IF (#12 <= 0) GOTO 2323;// #12 must >=1 then do G04 G04P#12;// wait a minuts N2323; Y-#10; G0Y-#7; #8=#8+1; IF (#8 < #11) GOTO 2310; G#1M99; /* G19 Plane */; N2400 G0Y#25Z#26; X#18; G91F#6; GOTO 2420; N2410 G#1G0Y#25Z#26; G91X#7; N2420 G1X#10; IF (#12 <= 0) GOTO 2423;// #12 must >=1 then do G04 G04P#12;// wait a minuts N2423; X-#10; G0X-#7; #8=#8+1; IF (#8 < #11) GOTO 2410; G#1M99; /* This MACOR is designed for MILL-G85(Boring cycle) */; //-------------------------------------------------------------------- //G73 CANNED CYCLE N3000 #1=$3; /* Stores G90/G91 modal group */ #4=#21; /* Retraction amount D */ IF (#11 == #0) GOTO 3001; /* If K is specified or not */ IF (#11 != 0) GOTO 3005; N3001 #11=1; /* IF K=0 or K is not specified */ N3005 #11=ABS(#11); /* K is always a positive value */ IF ($2 == 18) GOTO 3020; IF ($2 == 19) GOTO 3030; ;/* Calculates the drilling amount */ ;/* #22:Drilling axis data */ N3010 #22=#26; /* If drilling axis(Z) is specified or not */ IF (#1 == 91) GOTO 3011; #10=#26-#18; #7=#18-$32; GOTO 3012; N3011 #10=#26; #7=#18; N3012 IF ($10 == 98) GOTO 3100; #7=#0; GOTO 3100; N3020 #22=#25; /* If drilling axis(Y) is specified or not */ IF (#1 == 91) GOTO 3021; #10=#25-#18; #7=#18-$31; GOTO 3022; N3021 #10=#25; #7=#18; N3022 IF ($10 == 98) GOTO 3100; #7=#0; GOTO 3100; N3030 #22=#24; /* If drilling axis(X) is specified or not */ IF (#1 == 91) GOTO 3031; #10=#24-#18; #7=#18-$30; GOTO 3032; N3031 #10=#24; #7=#18; N3032 IF ($10 == 98) GOTO 3100; #7=#0; N3100 #3=0; #8=0; IF (#18 != #0) GOTO 3105; /* If R is specified or not */ #7=#0; N3105 IF (#17 == 0) GOTO 3130; IF (#17 == #0) GOTO 3130; /* If Q is specified or not */ IF (#22 == #0) GOTO 3130; /* If drilling axis is specified or not */ IF (#10 < 0) GOTO 3110; #17=ABS(#17); /* Q is always a positive value */ #4=-ABS(#4); GOTO 3120; N3110 #17=-ABS(#17); #4=ABS(#4); N3120 #2=FIX(ABS(#10/#17)); #9=#10-#17*#2; GOTO 3140; N3130 #2=0; #10=#0; #9=0; N3140 #2=#2-1; IF (#2 >= 0) GOTO 3150; #4=#0; N3150 #5=#17-#4; #13=#9-#4; IF ($2 == 18) GOTO 3300; IF ($2 == 19) GOTO 3400; /* G17 Plane */; N3200 G0X#24Y#25; Z#18; G91F#6; GOTO 3220; N3210 G#1G0X#24Y#25; G91Z#7; #3=0; N3220 IF (#2 < 0) GOTO 3240; G1Z#17; N3230 IF (#3 >= #2) GOTO 3240; G0Z#4; G1Z#5; #3=#3+1; GOTO 3230; N3240 IF (#9 == 0) GOTO 3250; G0Z#4; G1Z#13; N3250 IF (#12 <= 0) GOTO 3253;// #12 must >=1 then do G04 G04P#12;// wait a minuts N3253 G0Z-#10; Z-#7; #8=#8+1; IF (#8 < #11) GOTO 3210; G#1M99; /* G18 Plane */; N3300 G0X#24Z#26; Y#18; G91F#6; GOTO 3320; N3310 G#1G0X#24Z#26; G91Y#7; #3=0; N3320 IF (#2 < 0) GOTO 3340; G1Y#17; N3330 IF (#3 >= #2) GOTO 3340; G0Y#4; G1Y#5; #3=#3+1; GOTO 3330; N3340 IF (#9 == 0) GOTO 3350; G0Y#4; G1Y#13; N3350 IF (#12 <= 0) GOTO 3353;// #12 must >=1 then do G04 G04P#12;// wait a minuts N3353 G0Y-#10; Y-#7; #8=#8+1; IF (#8 < #11) GOTO 3310; G#1M99; /* G19 Plane */; N3400 G0Y#25Z#26; X#18; G91F#6; GOTO 3420; N3410 G#1G0Y#25Z#26; G91X#7; #3=0; N3420 IF (#2 < 0) GOTO 3440; G1X#17; N3430 IF (#3 >= #2) GOTO 3440; G0X#4; G1X#5; #3=#3+1; GOTO 3430; N3440 IF (#9 == 0) GOTO 3450; G0X#4; G1X#13; N3450 IF (#12 <= 0) GOTO 3453;// #12 must >=1 then do G04 G04P#12;// wait a minuts N3453 G0X-#10; X-#7; #8=#8+1; IF (#8 < #11) GOTO 3410; G#1M99; /* This MACOR is designed for MILL-G73(High-speed peck drilling cycle) */; //--------------------------------------------------------------------------- //G89 CANNED CYCLE N4000 #1=$3; /* Stores G90/G91 modal group */ #4=#21; /* Retraction amount D */ #5=#5+1; /* Dwell Time */ IF (#11 == #0) GOTO 4001; /* If K is specified or not */ IF (#11 != 0) GOTO 4005; N4001 #11=1; /* IF K=0 or K is not specified */ N4005 #11=ABS(#11); /* K is always a positive value */ IF ($2 == 18) GOTO 4020; IF ($2 == 19) GOTO 4030; ;/* Calculates the drilling amount */ ;/* #22:Drilling axis data */ N4010 #22=#26; /* If drilling axis(Z) is specified or not */ IF (#1 == 91) GOTO 4011; #10=#26-#18; #7=#18-$32; GOTO 4012; N4011 #10=#26; #7=#18; N4012 IF ($10 == 98) GOTO 4100; #7=#0; GOTO 4100; N4020 #22=#25; /* If drilling axis(Y) is specified or not */ IF (#1 == 91) GOTO 4021; #10=#25-#18; #7=#18-$31; GOTO 4022; N4021 #10=#25; #7=#18; N4022 IF ($10 == 98) GOTO 4100; #7=#0; GOTO 4100; N4030 #22=#24; /* If drilling axis(X) is specified or not */ IF (#1 == 91) GOTO 4031; #10=#24-#18; #7=#18-$30; GOTO 4032; N4031 #10=#24; #7=#18; N4032 IF ($10 == 98) GOTO 4100; #7=#0; N4100 #8=0; IF (#18 != #0) GOTO 4105; /* If R is specified or not */ #7=#0; N4105 IF (#22 != #0) GOTO 4110; /* If drilling axis is specified or not */ #10=#0; N4110 IF ($2 == 18) GOTO 4300; IF ($2 == 19) GOTO 4400; /* G17 Plane */; N4200 G0X#24Y#25; Z#18; G91F#6; GOTO 4220; N4210 G#1G0X#24Y#25; G91Z#7; N4220 G1Z#10; G04P#5; Z-#10; G0Z-#7; #8=#8+1; IF (#8 < #11) GOTO 4210; G#1M99; /* G18 Plane */; N4300 G0X#24Z#26; Y#18; G91F#6; GOTO 4320; N4310 G#1G0X#24Z#26; G91Y#7; N4320 G1Y#10; G04P#5; Y-#10; G0Y-#7; #8=#8+1; IF (#8 < #11) GOTO 4310; G#1M99; /* G19 Plane */; N4400 G0Y#25Z#26; X#18; G91F#6; GOTO 4420; N4410 G#1G0Y#25Z#26; G91X#7; N4420 G1X#10; G04P#5; X-#10; G0X-#7; #8=#8+1; IF (#8 < #11) GOTO 4410; G#1M99; ;/* This MACOR is designed for MILL-G89(Boring cycle) */ N5000; // ---TAPPING IS BEGIN HERE!! MODIFIER:YI-WAN LIN --- ;; @88=#17; // @88 <- Q <- Q (0=METRIC 1..INCH spec. IF($150 == 1) GOTO 6000; #13=#21; // M <- U <- V (PITCH/NO.SCREWS) #23=#11; // W <- K <- K (0 ..right hand 1..left) #8=#5; // H <-T ..dwell time !! #27=$1; //backup modal command G0 G1 #28=$3; //G90 G91 #33=@90; //backup '@90' ...prevent from be change !! IF( @90>#18 ) GOTO 5010; @90=#18; // Escape.Z must higher then 'R' N5010 IF( #18>#26 ) GOTO 5015; #26=#18; // 'Bottom.Z can't higher then 'R' N5015 #8=FIX(#8); // Limitation of dwell time #8=ABS(#8); IF(#8!=0) GOTO 5020; #8=1; // prevent from GRAMMER ERROR -->'G04P0' N5020 IF ( (#17==1) || (#17==3) ) GOTO 5030; #6=#19*#13; // F=S*PITCH 'metrice screw' GOTO 5040; N5030 #6=(#19*25.4)/#13; // F=S*25.4/NO.SCREW ... 'UNF screw' N5040 IF( $6 == 21 ) GOTO 5042; // METRICE_UNITS of F:mm/min bug-fix 9.11'98 #6=#6/25.4; // INCHS_UNITS of F:inch/min N5042 IF (#23>0.5) GOTO 5050; #3=3; //right hand screw #4=4; GOTO 5060; N5050 #3=4; //left hand screw #4=3; N5060 M05; F#6S#19; IF( (#17==0) || (#17==1) ) GOTO 5062; N5062 G90G0Z#18; M#3; G90G01Z#26; // To bottom M05; G04P#8; // at bottom, stop spindle and waiting ... M#4 ; G90G01Z#18; // To Top & reverse rotation IF( (#17==0) || (#17==1) ) GOTO 5064; N5064 M05; // Stop spindle G90G00Z@90; @90=#33; // Restore '@90' G#27G#28M99; // Restore Modal command G0 G1 / G90 G91 ;/* This MACOR is designed for Rigid Tapping */ N6000 #13=#21; // M <- U <- V (PITCH/NO.SCREWS) #23=#11; // W <- K <- K (0 ..right hand 1..left) #8=#5; // H <-T ..dwell time !! #27=$1; //backup modal command G0 G1 #28=$3; //G90 G91 #33=@90; //backup '@90' ...prevent from be change !! IF(@90>#18) GOTO 6010; @90=#18; // Escape.Z must higher then 'R' N6010 IF( #18>#26 ) GOTO 6015; #26=#18; // 'Bottom.Z can't higher then 'R' N6015 #8=FIX(#8); // Limitation of dwell time #8=ABS(#8); IF(#8!=0) GOTO 6020; #8=1; // prevent from GRAMMER ERROR -->'G04P0' N6020 IF((#17==1) || (#17==3)) GOTO 6030; #6=#19*#13; // F=S*PITCH 'metrice screw' GOTO 6040; N6030 #6=(#19*25.4)/#13; // F=S*25.4/NO.SCREW ... 'UNF screw' N6040 IF($6 == 21) GOTO 6042; // METRICE_UNITS of F:mm/min bug-fix 9.11'98 #6=#6/25.4; // INCHS_UNITS of F:inch/min N6042 IF(#23 == 0) GOTO 6050; M29 S#19; G74Z#26R#18P#8F#6; GOTO 6060; N6050 M29 S#19; G84Z#26R#18P#8F#6; N6060 M99; ;/**********************************************************************/ ;/* */ ;/* This macro is used by CONVERSATIONAL machining. */ ;/* It performs the TAPPING function (similar to G84). */ ;/* And Single Block Mode, Feedrate Override and Spindle Override */ ;/* are disabled during TAPPING cycle. */ ;/* Resume SBK mode only at the end of 6th movement of a CANNED */ ;/* CYCLE. Refere to FANUC's Manual. */ ;/* */ ;/* Original:Bing Shi Lee on 1997-01-21 */ ;/* Modifier:Yi-Wan LIN 08/18/1998 10:13:44 */ ;/**********************************************************************/