What's new
What's new

Brother circular pocket cycle? Alternatives?

gustafson

Diamond
Joined
Sep 4, 2002
Location
People's Republic
So, the Brother does not accept a Z argument for G12/13 [as some controls apparently do] and I am really stumped at how to pull off what I need to to, all day every day

Here is how I have been running things for decades:

Create a list of hole locations
Drill at those hole locations
countersink at those hole locations
tap at those hole locations

Pretty simple, and I can make the Speedio do that, however, it is so foooking fast, it needs to back burr, both for quality and the simple fact I cannot back burr in the time it takes to make the part. I own most of those stupid back burring tools and they will not will not will not work for my application.

Dovetail tool circular interpolate from the top.

Period.

Tools are 50 bucks a pop. I am simply unwilling to risk a clerical error burying one in the middle of the part


So I need to have it circular/helical interpolate using the same set of hole locations

Possible, or do I have a 100k paperweight?
 
You’re looking to deburr the back side of a drilled and tapped thru-hole with a dovetail cutter? Why not rapid or feed straight down the center of the hole and then G12/13 and come back up? Because you don’t want to risk breaking it? But how would going down in a helix help that? I’m probably misunderstanding you. Either way, I’m sure you can helix down if you need to. I would offer to look into it tomorrow but no doubt Andy or Frank will chime in and solve your programming Q. Good luck!
 
Couldn't you write a G03 arc move to do this and switch it to incremental mode once you are at your hole location or just make it a subprogram? If it's a subprogram you would only have to edit it once to get your desired chamfer, or run it on cutter comp. I am not familiar with how Brother does circular interp. sounds like the Z would have to come from the line before though. Haas you can put the Z either in a line above or in the G13 line. I typically put it above unless I am doing an incremental step down.

Edit::: If you want a helical arc use G02/3 with a Z move.
 
You’re looking to deburr the back side of a drilled and tapped thru-hole with a dovetail cutter? Why not rapid or feed straight down the center of the hole and then G12/13 and come back up? Because you don’t want to risk breaking it? But how would going down in a helix help that? I’m probably misunderstanding you. Either way, I’m sure you can helix down if you need to. I would offer to look into it tomorrow but no doubt Andy or Frank will chime in and solve your programming Q. Good luck!

YOu misunderstand the problem

OF course I can do that

I have 10000 holes to do.

This week

So, I can, define a drill cycle [G-watever]
Call a subprogram that consists of:
X1 Y1
X2 Y2
X3 Y42
etc

Than redefine the drill cycle and call the Csink and call the same subprogram

Then redefine the cycle and call the tap, call the same subprogram
[this works and I can make parts to this point]


What I need to do is have a circular or helical[it matters not at this point which] cycle that can use the same set of points. This G13 will not work on this machine[I am fairly certain]

I am actually pretty shocked there is not a canned thread milling cycle. That is what I used successfully on my other machine to do the job[although I ran into other issues]
 
From a google search of this site,

It is literally Greek to me, but is this something like what I will need to do?



yardbird yardbird is online now
Titanium
Join Date
Jul 2013
Location
Indiana
Posts
3,441
Post Thanks / Like
Likes (Given)
5066
Likes (Received)
1764
Default
I copied this from training materials given to me a few years ago. I altered it to suit the purpose of this thread with the G13 call is the only modification done. I'm not smart enough to do this nor do I have access to actually test it on a machine at this point and time. Could/Would one of you macro guys look this over? Possibly run it though a simulator and see if it works?

Brent

Fanuc 0i series control.

(Circular Pocket)

6053 = 13 G-Code to call Macro program 9013

G13 X0. Y0. Z-750 R1. A.05 I.02 J.02 K.25 W.8 C5.0 D3 F20.

X = X axis center
Y = Y axis center
Z = Depth of pocket
R = Radius of pocket
D = Direction of cut. D2 CW / D3 CCW
C = Feedrate for plunging
I = Finish cut
J = Finnish allowance on bottom of pocket
A = Reference point above the part
F = Feedrate
K = Depth of cut for roughing
W = Width of cut. % of endmill diameter


O9013(CIRCULAR POCKET)
IF[#3EQ#0]THEN#3000=8(NO PLUNGE FEEDRATE
GIVEN)
IF[#9EQ#0]THEN#3000=3(NO FEEDRATE GIVEN)
IF[#23EQ#0]THEN#3000=5(NO WIDTH OF CUT GIVEN)
IF[#1EQ#0]THEN#3000=21(NO REFERENCE POINT)
N1G0X#24Y#25Z#1
#100=0
#106=0
#140=#5003
#141=#5001
#142=#5002
#32=#4107+12000
#32=#[#32]
#33=#4107+13000
#33=#[#33]
#144=#32+#33(D+2000)
#10=#18-#144(POCKETRAD-EMRAD)
#143=#142-[#10-#4]
#145=[#10-#4]
#146=2*#145
#12=#23*[#144*2](WIDTH-OF-CUT)
#104=[#12*.01]
#27=#26+#5(ZDEPTH-FINISH)
IF[#7EQ2]THEN#104=[#104*[-1]]
IF[#6EQ#0]GOTO3000
#100=ABS[FIX[[#26-#1+#5]/#6]]
#101=#100
N2G90G0Z#1
N3G0G90X#141Y#142
N500IF[#106GE#100]GOTO3000
#14=0
G91G1Z-#6F#3
WHILE[[#12+#14]LT[#145]]DO2
N4G1G91Y-#12F#3
#14=#14+#12
N5G#7X0Y[2*#14]R#14F#9
N6G#7X0Y-[2*#14]R#14
N31G0Y0.0
N32END2
N2000#106=#106+1
N19G90G1Y[#143]
G#7G91X0.0Y#146R145F#9
G#7X0.0Y-#146R145
G0Y0
N8G90G0X#141Y#142
N201GOTO500
N3000IF[#5EQ#0]GOTO4000
N9G90G0X#141Y#142
#14=0
N10G1Z#27F#3
N40WHILE[[#12+#14]LT[#145]]DO3
N11G1G91Y-#12F#3
#14=#14+#12
N12G#7X0Y[2*#14]R#14F#9
N13G#7X0Y-[2*#14]R#14
N14G0Y0
END3
N19G90G1Y#143
G#7G91X0.0Y#146R#145F#9
G#7X0.0Y-#146R#145
G0Y0
N4000G0G90X#141Y#142
N14G1Z#26F#3
#14=0
WHILE[[#12+#14]LT[#145]]DO1
G1G91Y-#12F#3
#14=#12+#14
G#7X0Y[2*#14]R#14F#9
G#7X0Y-[2*#14]R#14
G0Y0
END1
N1000IF[#4EQ#0]GOTO23(IF NO FIN ALLOW)
N19G90G1Y#143
G#7G91X0.0Y#146R#145F#9
G#7X0.0Y-#146R#145
G0Y0
IF[#5003NE#26]GOTO4000
N23G90G1Y[#142-#10]
N24G#7G91X0Y[2*#10]R#10F#9
N25G#7X0Y-[2*#10]R#10
N26G#7X#104Y[ABS[#104]]R[ABS[#104]]
N67G0G90Z#140
G0X#141Y#142
M99
 
I’m curious why you need a Z value in the interpolation. Are you trying to helix with it or does the Z value simply tell it what depth to rapid to before executing the circular interpolation in other controls? Personally haven’t seen this as a canned cycle before. This would be very handy. I’ve always just used CAM to program this or if the qty is low enough, have done it manually. Sounds like a sub program is the way to go for this.

I’ve attached a screenshot of the page that outlines G12/G13 from the C00 programming manual.

72A1E3EE-FDFB-47EE-B336-B1B364980C59.jpg
 
Sooooo are you not using cam software?

Yup, cause pounding a bunch of code you cannot read is the best way to program a new machine, if you didn't pay for it.....


First I need to learn how to program the machine

Then I can let the computer do it for me

Unless you are saying that those guys who sit in an office an spit out code and have never run a machine do a better job.....perhaps...but I am thinking no.


I have been programming CNC of the better part of 30 years, just different machines
 
I’m curious why you need a Z value in the interpolation. Are you trying to helix with it or does the Z value simply tell it what depth to rapid to before executing the circular interpolation in other controls? Personally haven’t seen this as a canned cycle before. This would be very handy. I’ve always just used CAM to program this or if the qty is low enough, have done it manually. Sounds like a sub program is the way to go for this.

I’ve attached a screenshot of the page that outlines G12/G13 from the C00 programming manual.

View attachment 335932

I have the C00 programming manual in front of me.

Without a z value you must put a z value in the subprogram which is incompatible with the other parts of the program using that same subprogram.

haven't seen this as a subprogram?

1986 Heidenhain.

trying to figure out how to get a 2021 control to do what was simple 35 years ago. that is all.
If you read my previous posts you can see what i am trying to do, use the same set of points[subroutine] to do several different operations. This is simple on this control for drilling, tapping, countersinking, but I am stuck past this.

This is also relevant for other work I do as frequently I will interpolate a subset of holes in a larger program rather than have to load a special tool. Using literally the same lines of code prevents crashes

Since I work with a limited set of shapes in this segment of my work, constructing the code this way makes it so once I have a program proofed for a single part, I can then copy and modify it for dozens of other parts by adding or moving hole locations
 
I am thinking a sub program to hand code this. I believe the G13 will work. I is the radius of the circle or chamfer you are looking for, D is the offset # it will reference and F is feedrate of interpolation. D will typically be the same as your tool #. You will set the radius of your cutter in the cutter comp of that tool # in the Tool Data. You can make adjustments here and in your Z to adjust your chamfer. Position above the center of the drilled hole. The sub would look something like this:

G1 Z-.200 F100. (or G0 if you have big huevos, adjust Z for your parts);
G13 I.1 D2 F10. (assuming .200 dia chamfer, set cutter comp in offset 2 for Tool 2);
G0 Z.1;
M99;

G13 (CCW) starts and stops at the center of the bore.
If you are doing tool breakage detection with drill and tap big huevos not necessary.

To call the sub you have two choices. External program use M98 P1000 to call external program 1000. For a local sub, use M98 H1000 (or number of your choice up to 8999). Put local sub after M30 in main Program with a N1000 like this:

;
;
M30;
N1000;
G1 Z-.200 F100. ;
G13 I.1 D2 F10. ;
G0 Z.1 ;
M99;

Run this in the air with your numbers and make adjustments as necessary. You'll get it!
 
Make a copy your hole location sub.

Give it a new number

Insert a sub routine call after each location (creating a nested sub)

Create your nested deburr tool path. Do this in full Incremental mode, at least with X and Y, though while inside the nested sub there is freedom to use Absolute Z moves if it makes it easier.

When your deburr tool comes up, just swap out the existing subroutine number call to your nested sub number.

Unless I'm not understanding correctly, this will solve your problem, and is the very same course a person would take to create a bunch of thread milled holes using a single (and once copied) location file, only this time you're deburring.

This is far too simple and common for someone who has machined for 35 years. I must be missing something.

As an aside - I believe some control trickery exists where you could use a single location plus subroutine, with the nested sub calls headed by a block skip / slash, and program in the block skip on/off signal at the head of each tool. Skip on for spot/drill/tap only. Skip off for deburr included. How programming in a block skip is done and what controls can do it is beyond my knowledge.
 
What I am trying to do is have one set of numbers. This has ramifications beyond the program that we are running today. It allows me to take that program as a template and in a matter of seconds modify it virtually risk free to a new completely different program [drill csink tap burr] which might have the holes in the wrong location but will be the same wrong location. I do thousands of parts but only half a dozen shapes, so add a hole, delete a hole move three holes, whatever.

And yes Frank, on my DMG I was slamming a .115 dovetail cutter through a .12 hole at full rapid with no tool breakage detection. The program works but I could not get it to run reliably and needed to get parts out the door, so gave up.
I need to human scale running on the Brother, a 4 minute cycle that gets 2 parts out will be a 50 second cycle and I cannot back bur that fast manually.


Make a copy your hole location sub.

Give it a new number

Insert a sub routine call after each location (creating a nested sub)

Create your nested deburr tool path. Do this in full Incremental mode, at least with X and Y, though while inside the nested sub there is freedom to use Absolute Z moves if it makes it easier.

When your deburr tool comes up, just swap out the existing subroutine number call to your nested sub number.

Unless I'm not understanding correctly, this will solve your problem, and is the very same course a person would take to create a bunch of thread milled holes using a single (and once copied) location file, only this time you're deburring.

This is far too simple and common for someone who has machined for 35 years. I must be missing something.

As an aside - I believe some control trickery exists where you could use a single location plus subroutine, with the nested sub calls headed by a block skip / slash, and program in the block skip on/off signal at the head of each tool. Skip on for spot/drill/tap only. Skip off for deburr included. How programming in a block skip is done and what controls can do it is beyond my knowledge.

I am thinking a sub program to hand code this. I believe the G13 will work. I is the radius of the circle or chamfer you are looking for, D is the offset # it will reference and F is feedrate of interpolation. D will typically be the same as your tool #. You will set the radius of your cutter in the cutter comp of that tool # in the Tool Data. You can make adjustments here and in your Z to adjust your chamfer. Position above the center of the drilled hole. The sub would look something like this:

G1 Z-.200 F100. (or G0 if you have big huevos, adjust Z for your parts);
G13 I.1 D2 F10. (assuming .200 dia chamfer, set cutter comp in offset 2 for Tool 2);
G0 Z.1;
M99;

G13 (CCW) starts and stops at the center of the bore.
If you are doing tool breakage detection with drill and tap big huevos not necessary.

To call the sub you have two choices. External program use M98 P1000 to call external program 1000. For a local sub, use M98 H1000 (or number of your choice up to 8999). Put local sub after M30 in main Program with a N1000 like this:

;
;
M30;
N1000;
G1 Z-.200 F100. ;
G13 I.1 D2 F10. ;
G0 Z.1 ;
M99;

Run this in the air with your numbers and make adjustments as necessary. You'll get it!
 
What I am trying to do is have one set of numbers. This has ramifications beyond the program that we are running today. It allows me to take that program as a template and in a matter of seconds modify it virtually risk free to a new completely different program [drill csink tap burr] which might have the holes in the wrong location but will be the same wrong location. I do thousands of parts but only half a dozen shapes, so add a hole, delete a hole move three holes, whatever.

Sorry, not gonna happen unless you ( or someone ) write a macro to use the same sub for a built-in canned cycle and a custom one.
Yes, your Heidenhein may do it because they ( Krauts ) made the custom macro, but Fanuc did not, neither did Brother.

Could this be done? My guess is yes, perhaps not even that difficult.
One could modify any one of the G8x cycles from the as-supplied set, give it another name, say G85.9, and after that just use it the same way
as you're using the G81, G83 and G86 for spot, drill and tap, including the sub-calls.

IOW you are missing something that you're used to, but, unfortunately, you just have to get used to it.
I am fairly certain I'd hate Heidenhein for a while if I was all of a sudden exposed to it.
But then again, if it reads standard ISO G-code, then I'd might only be pissed long enough to say fuck the German's thinking and use a common set of
tools that works pretty much across the board with all other machines.
That is BTW the same exact reason there will never be a conversational control in my shop.
Ever!
 
Honestly, I'm a little confused why you apparently *need* to do this.

Anyhow, if you create a sub-program that does your deburring operation using incremental coordinates, and you do do some basic macro programming, you can create your own canned cycle on the Speedio. You can even assign the sub-program it's own G-code and call it as a modal, then pass along your coordinates the same way you would with any canned cycle.

Crack open your Programing Manual, section 6.5.
 
Wonder if one of the spring-loaded deburr tools would work in this app?

The tool where you rapid through the hole (with the cutting blade retracting against the spring), and when the tool exits the hole at the bottom, the blade extends, feed straight up in Z untill deburred, rapid out...

ToolCat
 
Wonder if one of the spring-loaded deburr tools would work in this app?

The tool where you rapid through the hole (with the cutting blade retracting against the spring), and when the tool exits the hole at the bottom, the blade extends, feed straight up in Z untill deburred, rapid out...

ToolCat

Nope

got a drawer with a few that are 20+ years old

holes routinely pass partially through details on the far side.
 
This type thread has always made me wonder if more folks prefer builder provided special cycles or ones they create themselves.

Personally, some builder cycles work like I want but in general I prefer the ability to make my own via macro programming.

The OP’s issue can be addressed via a macro that is written to behave exactly as desired rather than make do with a cycle the control builder thinks is good. Addditionally, as a macro the cycle can be called with a G66 and then it will execute at every subsequent XY position until cancelled just like a G8x cycle.
 
G66 appears to work, don't have a fully designed cycle yet, but it goes through the motions and acts as it should, so it should work once I get the numbers tweeked

IMO, canned cycles for pockets are fine when you are moving less than a tool radius, once you get larger than that, there are better ways to do it.
 








 
Back
Top