What's new
What's new

Fanuc 16MA helical interpolation issue

Corn

Aluminum
Joined
Nov 3, 2019
Hi,

First of all, sorry for this elementary guestion. I just headed to dead end when trying bore hole with G03 and using G42 tool radius compensation. This program works if I remove the G42 (but 15mm too big hole). When it runs the block for G42 fanuc will give error "041 interference in CRC". I can't seem to figure out what is going wrong. So this program should bore 4mm deep 28mm diameter hole with 15mm end mill. Work offset is at the center of hole. Here's the code:
Code:
O0001;
M06 T01;
G90 G21 G17 G94 G80 G54;
G00 X0.0 Y0.0 S1500 M3;
G43 Z50.0 H1;
Z5.0;
G42 X-14.0 Y0.0 H1;
G01 Z0.1 F200;
G03 X14.0 Y0.0 Z-2.0 R14.0;
G03 X-14.0 Y0.0 Z-4.0 R14.0;
G03 X14.0 Y0.0 R14.0;
G03 X-14.0 Y0.0 R14.0;
G01 X0.0 Z1.0;
G00 Z100.0;
G40;
M30;
 
Try again with G41. I think your comp may be in the wrong direction. For safety, try air cutting first. Also, I cancel the G41 with a G1 move back to the center.
 
Hi,

First of all, sorry for this elementary guestion. I just headed to dead end when trying bore hole with G03 and using G42 tool radius compensation. This program works if I remove the G42 (but 15mm too big hole). When it runs the block for G42 fanuc will give error "041 interference in CRC". I can't seem to figure out what is going wrong. So this program should bore 4mm deep 28mm diameter hole with 15mm end mill. Work offset is at the center of hole. Here's the code:
Code:
O0001;
M06 T01;
G90 G21 G17 G94 G80 G54;
G00 X0.0 Y0.0 S1500 M3;
G43 Z50.0 H1;
Z5.0;
G42 X-14.0 Y0.0 H1;
G01 Z0.1 F200;
G03 X14.0 Y0.0 Z-2.0 R14.0;
G03 X-14.0 Y0.0 Z-4.0 R14.0;
G03 X14.0 Y0.0 R14.0;
G03 X-14.0 Y0.0 R14.0;
G01 X0.0 Z1.0;
G00 Z100.0;
G40;
M30;
Hello Corn,
Its highly improbable that the Tool Length Offset will be the same value as the Tool Radius Offset being used. But that's what the code you have listed is saying; both the Tool Length and Tool Radius Offset is H1. Depending on the Offset System your control is equipped with and parameter settings, the Tool Radius Comp Offset value can be called with either a D. or a H address.

Also depending on the Offset System the control is equipped with, there can be a separate Offset Registry for Tool Radius Comp that uses a D address. In this case the Tool Length and Tool Radius Offset can use the same number for each Offset, but with a different address; H and D respectively. Therefore, the use of H address used for the Tool Radius Offset is a Typo, or the same number used for the Tool Length and Tool Radius is a Typo.

Depending on how you set your Tool Length Offsets, H1 used for the Tool Radius could quite easily be greater than 14mm. If the Tool Length Offsets are set as the length of the tool from tool tip to Spindle Nose (Gauge Line), then its almost certain to be greater than 14mm.

Also, G42 is the wrong direction for a bore when using G03 to helical interpolate; it should be G41. If the Offset in H1 is a Minus Value, typical of using the air gap between tool tip and reference device as the Tool Length Offset, then G42 and a Minus value equates to G41 and a Plus value. Accordingly, a Tool Length offset of -14.0 and less (more Minus) will give you an interference error with a 28 diameter circular interpolation path.

Instead of using R Format in the Helical Interpolation, using an I address would allow a full rotation in the tool path in one Block as follows:

G01 Z0.1 F200;
G41 X-14.0 Y0.0 D1;
G03 X-14.0 Y0.0 Z-4.0 I14.0;
G03 X-14.0 Y0.0 I14.0;
G40 G01 X0.0;
G00 Z1.0;

Regards,

Bill
 
Ok, now I think I understand. G41 didn't give any CRC error but it made huuuuge circle. Like Bill said it most likely used the same offset value what was used for Z. I tried the D1 but it gave the same big radius...
 
Ok, now I think I understand. G41 didn't give any CRC error but it made huuuuge circle. Like Bill said it most likely used the same offset value what was used for Z. I tried the D1 but it gave the same big radius...

Hello Corn,
That being the case, I suspect that you use the distance from the Tool Tip to your setting Reference (relatively large Minus value) as the method of setting Tool Length Offsets. Using G41 with a large Minus value is the same as the same value, only positive, with G42. In this case it would Offset to the outside (Offset Right) of the cutter path, resulting is a large circular path.

In most instances with a Fanuc Control, a separate address (D) can be used for Tool Radius Offset. Depending on the Offset System the control is equipped with, there may be a separate Offset registry for Tool Radius; in which case the Tool Length and Tool Radius Offsets can be the same number, but the value is drawn from the two different registries. For example, T1 may have H01 for Tool Length and D01 for Tool Radius Offsets, with the appropriate value stored in each respective Offset Registry.

When the Control isn't equipped with separate Tool Length and Tool Radius Offset registries, H and D addresses can be used, but each address must access different Offset numbers. For example, T01 may use H01 for Tool Length and D51 for Tool Radius. As its very common for the control to be equipped with more Offsets than the to number of tool capacity of the machine, its also common to reserve the first number of Offsets that equals the number of tool capacity of the machine, ie. T01 to T24 would use H01 to H24 for Tool Length Offsets. To maintain some form of correlation of Tool Number and Tool Radius Offset Number, many will use the Offset Numbers beyond the number of tool capacity of the machine, but that which contains a digit that relates to the Tool Number in some way. For example, T01 may use D51 for a Tool Radius Offset; 1, of the number 51, being the connection to T01.

Regards,

Bill
 
It seems to use the same table for radius compensation so choosing D17 and giving the tool radius there solved the issue. Bit confusing as the 16ma manual says there is separate table for radius offsets, but I can't find it. Maybe some parameter blocks that off..

edit: Bill was faster. Thank you.
 
Hi,

Sorry this is already bit offtopic but simple and small elementary question. Happened to me yesterday with this same program that G43 tool length compensation was for some reason 50mm off (and of course to the wrong direction). It seems that the compensation dimension somehow was at this time not from machine zero but from a relative dimension which was 50mm off from the machine zero. I ran the program first with dry run and Z axis locked and everything looked fine. When I ran it without the Z axis lock it basically G0 plunged directly to the part. Luckily it was plastic so no disaster happened. Same program after cursing and without the part next time worked fine. I can't remember if there was power off in between but didn't touch the offsets.

So my question is, what could have caused this?
 
Check the PMC diagnostic G006 bit 2 is 1. If it is 0 then you need to figure out how the machine builder implemented a switch to turn on Manual Absolute mode. Sometimes it is a physical switch on the operation panel. Some builders make it a soft-key on the display. Some builders make it a PMC parameter. There are probably others too. It is decided by the machine builder.
 
Jeez! There is manual on / off switch on the MDI panel which is off and somehow broken that cannot be turned on. I've wondered what does that do as manual is not mentioning that or the other, if I remember correctly momentary "Setting off / on" switch. Well I'm going to hard wire that darn Manual switch to "on" in the first place. Thank you Vancbiker once again, you saved me.

Any idea what's the purpose of that momentary setting switch?
 
The only application that I ever used the Manual Absolute mode for was machining castings for gear boxes. Would load a pointer into the spindle and position near a boss on the casting and stop with M0. Operator would then go to handle mode and move the pointer to the approximate center of the boss in X and Y and touch the cast surface in Z. Then back to auto mode and press cycle start. The remainder of the program then cut the casting as shifted to get the "best fit".
 
This machine isn't letting me off so easily. G006 bit 2 was 0. And when I forced the manual key "on" it was still 0. There are two of those switches which are connected with each other and I think both need to be on for activation.
manual_switch.jpg
But what ever combination with these switches that G6.2 didn't budge from 0. And I didn't notice any effect with these switches. However I wasn't able to get different values on Absolute (nor relative) and machine Z coordinates this time. Maybe some parameter is preventing this G6.2 from going to 1. Any thoughts?
 
I suspect that those switches have some other purpose than to activate the Manual Absolute signal. When G6.2 is 0 then anytime you manually move an axis the origin is shifted by the manual move amount. That shift will remain in effect until the next time a Zero Return is performed.

As I mentioned previously, the machine builder determines how to implement that signal to the CNC. I have even seen where the signal is forced on in the PMC logic with no user ability to turn it off. On machines with newer controls (16 and later) the most common way to turn on the Manual Absolute mode was via a softkey on the CNC display. This was usually placed in the Offset/Setting function button. Press it repeatedly and see if a menu that says something like Software Operation Panel appears. If it does then check if a function labeled something like MABS or Man/Abs is there. If so then activate it. Usually that just means moving the cursor to it and pressing a softkey labeled ON. Another method could be to key in 1 then input. Again, the machine builder has choice over method used.
 
Hi,

May I continue this as it is related to the original G03 topic. I'm facing weird glitch when I try to mill groove with G03 with multiple depths. Code is like this:
G41 X-16.225 Y0. H26
G03 X-16.225 Y0. I16.225
G03 X-16.425 Y0. I16.425 <-small quick move on -x direction at the end of the circle move
G03 X-16.85 Y0. I16.85 <-small quick move on -x direction at the end of the circle move

What the mill does it suddenly makes small fast move on X direction after those two last lines. Any idea what is happening?

edit: added more information
 
Hi,

May I continue this as it is related to the original G03 topic. I'm facing weird glitch when I try to mill groove with G03 with multiple depths. Code is like this:
G41 X-16.225 Y0. H26
G03 X-16.225 Y0. I16.225
G03 X-16.425 Y0. I16.425 <-small quick move on -x direction at the end of the circle move
G03 X-16.85 Y0. I16.85 <-small quick move on -x direction at the end of the circle move

What the mill does it suddenly makes small fast move on X direction after those two last lines. Any idea what is happening?

edit: added more information
Hello Corn:
Not weird at all. Its because what you're asking the control to do is geometrically impossible. I'll explain the cause for one instance, but it will be the same for each circular move you have specified.

1. The first circular move, G03 X-16.225 Y0. I16.225, works because you're starting and ending at X-16.225, with the centre of the circle +16.225 from the X Start Coordinate of X-16.225. The centre of the circle would be at X0 Y0.

2. The centre of the second circle, G03 X-16.425 Y0. I16.425, specifies it at +16.425 from the current X position of X-16.225, at X0.2 Y0.0. Accordingly, the coordinates X-16.225 Y0.0 and X-16.425 Y0.0 don't/can't reside on the same circumference of a circle with a centre location of X0.2 Y0.0 and a radius of 16.425.

The centre coordinates of a circle ending at X-16.425 Y0.0, with a radius of 16.425, will be X0.0 Y0.0. The control can't generate a circular trajectory with a command such as G03 X-16.425 Y0. I16.425, where the Start and End Points require two different Circle Centres.

Based on the fact that the Circle Centre for the G03 X-16.425 Y0. I16.425 has been described to the control to be at X+0.2 Y0.0, the Start Radius will be 16.425, but the Radius at the specified End Point of X-16.425 Y0.0 would be 16.625 (16.625 from the X Centre of X0.2)

The control has a parameter that deals with the Radius Tolerance of Circles and Arcs. This parameter can be set so that an alarm is raised if the End and Start Point Radii exceed a specified tolerance, or ignored when set to Zero.

Motion Control Systems will always seek to finish at the specified End Coordinate. Accordingly, when the parameter is set to ignore Radius Tolerance Error, the control will run the trajectory of the arc based on the specified arc centre and finish at the point that satisfies one of the X/Y coordinate pair. From there it will move via a Linear Move directly to the specified End Coordinate. That is whats happening in your example.

Regards,

Bill
 
Oh my. What might be the correct way to gradually increase the depth. I tried:
G03 X-16.225 Y0. I16.225
G03 X-16.425 Y0. I16.225
G03 X-16.85 Y0. I16.425
G03 X-16.85 Y0. I16.825

but this produces the same quick move. Tried also G01 to move step further but that gave error:
G03 X-16.225 Y0. I16.225
G01 X-16.425
G03 X-16.425 Y0. I16.425

Thank you in advance
 
G03 X-16.225 Y0. I16.225
G01 X-16.425
G03 X-16.425 Y0. I16.425

I'm going to say that your problem with that path is
that you are running cutter comp with a non-zero value
in the D place.

If you ran it with no comp, or a zero in your D offset, it
would most likely work.

Generally you would turn comp On and OFF for each pass, you
are trying to just turn it on ONCE and that doesn't work
very well and can give you all kinds of issues.

G03 X-16.225 Y0. I16.225
G1 G40 X0.
G01 G41 X-16.425
G03 X-16.425 Y0. I16.425
G1 G40 X0.

RINSE AND REPEAT.
 
Oh my. What might be the correct way to gradually increase the depth. I tried:
G03 X-16.225 Y0. I16.225
G03 X-16.425 Y0. I16.225
G03 X-16.85 Y0. I16.425
G03 X-16.85 Y0. I16.825

but this produces the same quick move. Tried also G01 to move step further but that gave error:
G03 X-16.225 Y0. I16.225
G01 X-16.425
G03 X-16.425 Y0. I16.425

Thank you in advance

Hello Corn,
As Bob suggests.

In your Post #13 you state:
I'm facing weird glitch when I try to mill groove with G03 with multiple depths.

What do you mean by multiple depth? Are you referring to a move along the axis of the groove? Your code shows circular interpolation in the X/Y plane and an ever increasing radius circles all with the same X/Y centre. Accordingly, the code will result in a circular feature, not a groove.

Regards,

Bill
 
Hi Bob and Bill,

I tried the Bob's code and it worked. However there is this "want to get rid of" step to go to the center after each circle. Not a big deal but if you were to streamline the groove making as much as possible would like to continue from where the last circle ended.

From multiple depths I mean circlip groove in multiple radius cuts as it is deep in hole and cannot be done in one pass due to the long tool arm and rigidness.
 
Hi Bob and Bill,

I tried the Bob's code and it worked. However there is this "want to get rid of" step to go to the center after each circle. Not a big deal but if you were to streamline the groove making as much as possible would like to continue from where the last circle ended.

From multiple depths I mean circlip groove in multiple radius cuts as it is deep in hole and cannot be done in one pass due to the long tool arm and rigidness.

Hello Corn,
OK, now I understand. Following is a simple Macro that will allow you to use pseudo Tool Radius Comp without some of the restrictions that comes with the real deal.


#1= -16.225 (START X COORDINATE)
#2= -0.2 (DOC INCREMENT)
#3= -17.0 (FINISH X COORDINATE)
#4= 10.0 (CUTTER RADIUS)
#5=0.0 (INITIALIZE WORKING COPY VARIABLE FOR #1)

G00 G90 G55 X0.0 Y0.0
G43 Z10.0 H01
G01 Z1.0 F1000
G01 Z-5.0
WHILE [#1 GT #3] DO1
#1=#1+#2
IF[#1 LT #3] THEN #1=#3 (ENSURE NO OVER CUT)
#5=#1+#4 (APPLY TOOL RADIUS COMP)
G01 X#5 F_ _
G03 I [ABS[#5]]
END1
G01 X0.0 Y0.0
G00 Z10.0

The values in the Variables are for example only and of course, you would enter values that that are correct for your application. The Cutter Radius Variable can also be used when Centre Line of the cutter is used in the geometry of the program code. A minus Value will make the program cut the feature larger and visa versa for a plus value. Accordingly, the size of the finished feature can be regulated in the same way as when using conventional Tool Radius Comp at the control.

Instead of allocating a value to a variable in the program, you could also look up the value of the System Variable for an Offset and change the Tool Radius Comp in the Offset Registry in the same way as when conventional Tool Radius Comp is used.

Following is the Graphic representation of the Tool Path resulting from the above Macro.

Circlip Macro1.JPG


Regards,

Bill
 
Last edited:
......Tried also G01 to move step further but that gave error:
G03 X-16.225 Y0. I16.225
G01 X-16.425
G03 X-16.425 Y0. I16.425

I'm curious what the error code was and what value you have the tool radius offset. Posting a longer clip of the code including the block where cutter radius compensation is activated would help folks understand fully what you are trying and offer better suggestions on a solution.
 








 
Back
Top