What's new
What's new

G41 comp error

claya

Cast Iron
Joined
Aug 6, 2006
Location
california
I cannot get this G41 to work with any comp of more than 0.0025". The G41 line and subsequent lines are generated by a thread milling app (SCT.) Adding an extra move before the G41 fails. Climb milling.
This is for a 0-80 thread, so not a lot of room to work with the tool in the bottom of the hole. I think the problem is the G03 radius is too small for anything more than 0.0025" comp. How do I get around this?

If I switch to conventional milling will the G42 work with larger than 0.0025"?
I am not sure the tiny 0-80 thread-mill can handle conventional milling. Material is Inconel 718.

Or IF I change the G41 to G42 and use a - comp value will it work?



Suggestions?

(3 PASS)
/N10 G00 X0. Y0.39 M8
/N12 G43 Z0.1 H3
N14 G90 G00 Z-0.145 F5.0
N16 G91 G41 G01 X0.0014 Y0.0006 F0.42 D103
N18 G03 X-0.0021 Y0.0041 Z0.0031 I-0.0028 J0.0011
 
I could be wrong but doesn’t the move following the G41 have to be a G02 or G03?

Or maybe has to do with switching to incremental positioning?

Or double check your lead in and lead out?

Hope this helps. Please post what was wrong when you get this one figured out.


Good luck.


Sent from my iPhone using Tapatalk
 
I'm a lathe guy, so maybe I'm wrong here, but don't you need to have your G41 activation line have a movement in the X-Y plane that is larger than the compensation amount that you want?
 
I could be wrong but doesn’t the move following the G41 have to be a G02 or G03?

Or maybe has to do with switching to incremental positioning?

Or double check your lead in and lead out?

Hope this helps. Please post what was wrong when you get this one figured out.
Good luck.
Sent from my iPhone using Tapatalk
No, it doesn't have to be a G2 or G3.

The move turning on the comp has to be larger than the amount of compensation, in my experience. Your move turning on the comp is really tiny - I think that is the issue.
There's been times I've made a move above the part to turn on the comp, then moved down to depth and done the work. IIRC someone here once said there could not be a move in Z while cutter compensation was active. That has not been my experience.

There will be others along in a bit that are true experts, I'm just a guy that knows enough to get done what I have to do.

good luck!
 
For some reason the G91 is not playing well with the G41 if I attempt to comp above the hole. And yes, I believe the G41 comp move is too short for the offset I am using since the next G3 radius is less than the offset.

Switching to G42 "seems" to have fixed it, so far. We have cut this feature once before, so I know it is doable using comp. But it was on a single part over three years ago, and I can't find a record of the comp offset we used.

Sent from my SM-G975U using Tapatalk
 
I suspect you’re going to have a lot of issues trying to do this with G91. Your move in the G41 line needs to be long enough to actually use the comp, same with all your I and J values. Going larger in comp than your radius will essentially invert the move or self intersect it. The control can’t swing an arc smaller than zero.

Can you have SCT output as all G90?

If not this is a very simple program to write manually depending on how you want your lead in at the bottom of the thread.

If you need any help getting the toolpath out of CAM, or fingerCAM feel free to shoot me a DM or post more info in here. I’d be happy to help.
 
I cannot get this G41 to work with any comp of more than 0.0025". The G41 line and subsequent lines are generated by a thread milling app (SCT.) Adding an extra move before the G41 fails. Climb milling.
This is for a 0-80 thread, so not a lot of room to work with the tool in the bottom of the hole. I think the problem is the G03 radius is too small for anything more than 0.0025" comp. How do I get around this?

If I switch to conventional milling will the G42 work with larger than 0.0025"?
I am not sure the tiny 0-80 thread-mill can handle conventional milling. Material is Inconel 718.

Or IF I change the G41 to G42 and use a - comp value will it work?



Suggestions?

(3 PASS)
/N10 G00 X0. Y0.39 M8
/N12 G43 Z0.1 H3
N14 G90 G00 Z-0.145 F5.0
N16 G91 G41 G01 X0.0014 Y0.0006 F0.42 D103
N18 G03 X-0.0021 Y0.0041 Z0.0031 I-0.0028 J0.0011

have the G41 start before your G01 at lets say Z.1 then G01 Z- to the depth you wish to start at.
 
I cannot get this G41 to work with any comp of more than 0.0025". The G41 line and subsequent lines are generated by a thread milling app (SCT.) Adding an extra move before the G41 fails. Climb milling.
This is for a 0-80 thread, so not a lot of room to work with the tool in the bottom of the hole. I think the problem is the G03 radius is too small for anything more than 0.0025" comp. How do I get around this?

If I switch to conventional milling will the G42 work with larger than 0.0025"?
I am not sure the tiny 0-80 thread-mill can handle conventional milling. Material is Inconel 718.

Or IF I change the G41 to G42 and use a - comp value will it work?



Suggestions?

(3 PASS)
/N10 G00 X0. Y0.39 M8
/N12 G43 Z0.1 H3
N14 G90 G00 Z-0.145 F5.0
N16 G91 G41 G01 X0.0014 Y0.0006 F0.42 D103
N18 G03 X-0.0021 Y0.0041 Z0.0031 I-0.0028 J0.0011

First of all, ass_u_ming a Haas or Fanuc control.


A few rules about cutter comp:

-G1, G2, or G3 must move at least the comp distance (i.e. if D value is 0.5, programmed move must be at least 0.25).

-The line must contain each of these words (F is modal): G41 G01 X2.0 D100 (obviously G41 could be G42, X could be Y, etc.)

-It must be cancelled using G40 (plus G1, G2, G3). Again, it must move at least the comp distance.

-Other axis moves are allowed during cutter comp (i.e. Z move while G17 is active).

In your application G41 should work fine. You can call comp above the hole, move to center, and rapid down. That's a trick often needed in threadmilling since the tool is almost the same size as the hole.
 
First of all, ass_u_ming a Haas or Fanuc control.


A few rules about cutter comp:

-G1, G2, or G3 must move at least the comp distance (i.e. if D value is 0.5, programmed move must be at least 0.25).

-The line must contain each of these words (F is modal): G41 G01 X2.0 D100 (obviously G41 could be G42, X could be Y, etc.)

-It must be cancelled using G40 (plus G1, G2, G3). Again, it must move at least the comp distance.

-Other axis moves are allowed during cutter comp (i.e. Z move while G17 is active).

In your application G41 should work fine. You can call comp above the hole, move to center, and rapid down. That's a trick often needed in threadmilling since the tool is almost the same size as the hole.

Actually Haas will not accept a G41/G42 with an arc move. It has to be a G1 (maybe G0, but never had a need to try that :crazy:), so Haas would look like G01 G41 X/Y (movement) Feed rate.

What Delw said should work too, just move to say X-.1 then activate comp above the hole then your comp values should work. Not sure if G91 plays well with comp. Also, it will help if OP tells machine and control or all bets are off. :D
 
Yasnac control. G41 above the hole does NOT work with the G91. Alarm 48.

G42 at the bottom of the hole with a +0.025" or larger offset works. Don't understand why.

Sent from my SM-G975U using Tapatalk
 
Yasnac control. G41 above the hole does NOT work with the G91. Alarm 48.

G42 at the bottom of the hole with a +0.025" or larger offset works. Don't understand why.

Sent from my SM-G975U using Tapatalk

Ahh Yasnac, sorry haven't run one in years so I can't really offer anything else.
 
Doesn't provide an answer as to why you have this problem, but Kennametal offers a free thread milling code generating software.
 
G41,42 preliminary move must be >= .5*cutter dia to be explicit. In G17 the move may be g1, g2, G3 but the tool radius must end up tangent to the line of travel for the next move. Indeed some controls will let you helix into the entry point. Starting point for a G1 entry must be off the line; even 0.0005 will do and probably anything that doesn't = the coordinate of the line (in computer think) will do. I just usually use 0.001 to keep it happy if I'm writing code, or let the CAM do it and know I'm safe.
 
The Yasnac does not like full radius comp. So I always use "reverse wear" comp values. Currently using a G42 with a +0.005". That seemed to solve the comp error. It is such a tiny motion (0-80 threadmill), is difficult to see the actual motion. All I can do is look at position.

Still having issues with the threadmill/material combo, however. Different post. (0-80 threadmill)

Sent from my SM-G975U using Tapatalk
 
All fixed. (Earlier post had Z errors in lead in lead out)

Put this in a sub. Position your spindle Z0.1 above any hole and call this sub.

Assumes a 0.044 diameter single point cutter. (Found on Harvey)

The lead in will put your cutter right up next to the wall left by the a 0.048" drill.

Ran this on an OM with a 0.022 comp set and no problem.

You should have comp play room up to 0.0239 if needed. Also meaning you could take one pass at 0.0239 and finish at 0.022.

If you have a full form cutter (which I couldn't find) you can subtract a bunch of the repeats. This code is for a machine that can do full circles called in one block.

G91G1Z-0.245F50.
G41Y-0.024D103F0.42
X0.006Z0.001
G3X0.024Y0.024I0.J0.024Z0.0021
I-0.03J0.Z0.0125
I-0.03J0.Z0.0125
I-0.03J0.Z0.0125
I-0.03J0.Z0.0125
I-0.03J0.Z0.0125
I-0.03J0.Z0.0125
I-0.03J0.Z0.0125
I-0.03J0.Z0.0125
I-0.03J0.Z0.0125
I-0.03J0.Z0.0125
I-0.03J0.Z0.0125
I-0.03J0.Z0.0125
I-0.03J0.Z0.0125
X-0.024Y0.024I-0.024J0.Z0.0021
G1X0.Z0.001
G40Y-0.024
G90G0Z0.1
M99

you might be able to use this instead of all the repeats. Never tried it myself.

I-0.03J0.Z0.0125 K13

Here is the half circle code if needed

G3X-0.06I-0.03J0.
X0.06I0.03J0.
 
Last edited:
Maybe I'm missing something here, but I don't think G41 vs. G42 has anything directly to do with the problem. The reason G42 works is because it forces you to cut a thread from the top down, instead of bottom up. Consequently, your lead in is above the part, so it can be almost anything.

If you want to climb cut, (bottom up) try plunging the hole on center, then moving the tool laterally, opposite the G41 line, before the G41. If you take it to X-.0014, Y-.0006, you end up with twice as much comp distance:

(3 PASS)
/N10 G00 X0. Y0.39 M8
/N12 G43 Z0.1 H3
N14 G90 G00 Z-0.145 F5.0
N16 G91 G01 X-0.0014 Y-0.0006 F0.042
N17 G41 G01 X0.0028 Y0.0012 F0.42 D103
N18 G03 X-0.0021 Y0.0041 Z0.0031 I-0.0028 J0.0011

You can even go farther, if you're willing to gouge the thread opposite the entry point. But does that really matter? Even if it does, you can probably hide the gouge by starting at Z-0.1388, and adding a Z-.0062 on the G41 line. (assuming that point is 180 from the thread start) I'm not sure if that works on Yasnac in G91, though.


Random question-
Why do you have F5.0 on a G00 line, when there's a different feed rate on the next line? Is that a Yasnac thing?
 
I like to use incremental with a variable to easily comp. in program. I find G41 to be complicated when trouble shooting a program that runs in multiple types of machines. If your machine allows macro programming try this out.

For example: 0-80 is about .06 major dia, using a (theoretical tool) dia. of .045 = .015 difference or .0075 step over.
The hole center would serve as the part location in this example.

My code would look like this:

N1 G0 G17 G40 G80 G90
T1 M6 (THREAD MILL)

#100=.0075 (STEP OVER AMOUNT)

G0 G90 G55 X0. Y0 S5000 M3
G43 H1 Z.1 M8
G1 Z-.145 F1. (keeping off floor)
G1 G91 X#100 F.42 (begin cut/enter wall)
G3 I-#100 Z.0125 (mill thread)
G3 I-#100 Z.0125
G1 X-#100 (move to hole center)
G0 G90 Z.1 (exit hole)
(end tool or rapid to next hole)

The variable is both the X and the I value and allows for easy adjusting. You can mill a hole,counter bore, chamfer a hole, mill a boss or mill threads easily. Copy and paste the format to mill multiple hole sizes in a row or into multiple tools to make a rough and finish tool.
 
I like to use incremental with a variable to easily comp. in program. I find G41 to be complicated when trouble shooting a program that runs in multiple types of machines. If your machine allows macro programming try this out.

For example: 0-80 is about .06 major dia, using a (theoretical tool) dia. of .045 = .015 difference or .0075 step over.
The hole center would serve as the part location in this example.

My code would look like this:

N1 G0 G17 G40 G80 G90
T1 M6 (THREAD MILL)

#100=.0075 (STEP OVER AMOUNT)

G0 G90 G55 X0. Y0 S5000 M3
G43 H1 Z.1 M8
G1 Z-.145 F1. (keeping off floor)
G1 G91 X#100 F.42 (begin cut/enter wall)
G3 I-#100 Z.0125 (mill thread)
G3 I-#100 Z.0125
G1 X-#100 (move to hole center)
G0 G90 Z.1 (exit hole)
(end tool or rapid to next hole)

The variable is both the X and the I value and allows for easy adjusting. You can mill a hole,counter bore, chamfer a hole, mill a boss or mill threads easily. Copy and paste the format to mill multiple hole sizes in a row or into multiple tools to make a rough and finish tool.

A thread dug up form the not too distant past. So be it.

I suppose your idea is a nice one, but I don't see it working as written and don't particularly like plunging my thread mills straight into the wall of a hole with this size cutter or any size cutter for that matter. Plus it looks like another/more variable(s) would be needed if running 2 or more passes, like a person might do on course threads.

Arc moves need to be fully described, but in the code shared the J address is missing. Thinking this will alarm out. Maybe some controls can do without? Dunno...
 








 
Back
Top