Cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted

Does anyone know how to:Make 5 axis output at start of operation always be B0, C0 with IJK 001?

Valued Contributor
Valued Contributor

One of the things UG post does is take the shortest rotary distance.  Example.

Initial operation moves at IJK 0,0,1 Post outputs B0C0 Good.

Now the program has operations that move to another orientation that outputs B90.C-90.

Then succeeding operations again move to IJK 0,0,1 again, but now the post Outputs B0C-90. Bad even though XY is output correct for this rotation.  The problem is the Static fixture comp used is designed for B0C0.  As far as the programmer sees, the orientation is the same.  Programmer assigns G54 to IJK 0,0,1 orientations.   G54  configured for B0C0 will scrap parts or worse when used at B0C-90. orientation.  This is a problem for most every 5 axis rotary configuration with tables.

 

In the post we can read the IJK only after MOM has processed the position and orientation.   Too late to change the rotary output at that point with the equivalent of using the ROTATE UDE code.

 

What we need is a way to always force B0C0 in the above example only when IJK 001 at the start of the operation.   Operation start moves only.  

 

We know the workaround of using the ROTATE UDE to force C back to 0, that works if the workaround is remembered by the programmer, before parts are scrapped on the floor.  We have built in warnings in the post when a static fixture comp is used at 2 different rotations, but warnings are not always good enough. 

 

Also we don't want to always use the Rotate UDE equivalent of C0 at the start of every operation.  That could cause flip-flop from B-90.C270. to B90.C-90. or similar, from one operation to the next. 

 

PR turned in to Development came back with "no solution".    Now an ER.

 

 

16 REPLIES

Re: Does anyone know how to:Make 5 axis output at start of operation always be B0, C0 with IJK 001?

Siemens Valued Contributor Siemens Valued Contributor
Siemens Valued Contributor

From my memory...

 

At initial_move and first_move check if mom_tool_axis(2) is equal to 1.000

IF it is, then set mom_pos(3) and mom_pos(4) to zero, set mom_out_angle(0) and mom_out_angle(1) to zero, then reload the variables using

MOM_reload_variable -a mom_pos

MOM_reload_variable -a mom_out_angle

 

I think that this is all you need.

 

Re: Does anyone know how to:Make 5 axis output at start of operation always be B0, C0 with IJK 001?

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

What I would do...

At the end of EVERY operation reset mom_prev_out_angle_pos(0...1) to zero & reload it

global mom_prev_out_angle_pos
set mom_prev_out_angle_pos(0) 0.0
set mom_prev_out_angle_pos(1) 0.0
MOM_reload_varliable -a mom_prev_out_angle_pos

 

 

Then it should be consistantly starting at the point closest to (rotary axes) (0,0)

This may change your existing posted code, but should be consistant from now on.

 

Note for completeness, you may have to reset everything (the "sledgehammer" approach)

# Appropriate "global"s here

set mom_pos(3) 0.0
set mom_pos(4) 0.0
set mom_prev_pos(3) 0.0
set mom_prev_pos(4) 0.0
set mom_out_angle_pos(0) 0.0
set mom_out_angle_pos(1) 0.0
set mom_prev_out_angle_pos(0) 0.0
set mom_prev_out_angle_pos(1) 0.0
set mom_prev_rot_ang_4th 0.0
set mom_prev_rot_ang_5th 0.0

# Appropriate MOM_reload_variable calls here
Ken Akerboom Sr CAx Systems Engr, Moog, Inc.
Production: NX10.0.3.5 MP16/TC11.2
I'd rather be e-steamed than e-diseaseled


Re: Does anyone know how to:Make 5 axis output at start of operation always be B0, C0 with IJK 001?

Siemens Valued Contributor Siemens Valued Contributor
Siemens Valued Contributor

Sorry

 

You also need to work with _prev variables, so at the end you must reload 4 variables

 

set mom_pos(3) 0.0

set mom_pos(4) 0.0
set mom_prev_pos(3) 0.0

set mom_prev_pos(4) 0.0
set mom_out_angle_pos(0) 0.0

set mom_out_angle_pos(1) 0.0
set mom_prev_out_angle_pos(0) 0.0

set mom_prev_out_angle_pos(1) 0.0

MOM_reload_variable -a mom_pos
MOM_reload_variable -a mom_prev_pos
MOM_reload_variable -a mom_out_angle_pos
MOM_reload_variable -a mom_prev_out_angle_pos

 

 

Re: Does anyone know how to:Make 5 axis output at start of operation always be B0, C0 with IJK 001?

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

@Javi_Garcia wrote:

From my memory...

 

At initial_move and first_move check if mom_tool_axis(2) is equal to 1.000

IF it is, then set mom_pos(3) and mom_pos(4) to zero, set mom_out_angle(0) and mom_out_angle(1) to zero, then reload the variables using

MOM_reload_variable -a mom_pos

MOM_reload_variable -a mom_out_angle

 

I think that this is all you need.

 


The problem with this approach is that "mom_pos" has already been calculated.

So the X/Y/Z positions will also need to be changed to reflect the change in angle.  (and if you are going directly into a drill cycle, all the mom_cycle_*_pos arrays as well)

 

You really need to reset the angles BEFORE the initial / first move events, so when thise events occur, NX calculates everything correctly.

 

Note that "read ahead" won't help - the mom_nxt_* variables aren't correct until the initial/first move events, so you can't do this in "start of path".

 

Note I have an IR (9187532) which (I hope) will soon be an ER, to make the mom_nxt_* variables correct at "start of path"

Ken Akerboom Sr CAx Systems Engr, Moog, Inc.
Production: NX10.0.3.5 MP16/TC11.2
I'd rather be e-steamed than e-diseaseled


Re: Does anyone know how to:Make 5 axis output at start of operation always be B0, C0 with IJK 001?

Siemens Valued Contributor Siemens Valued Contributor
Siemens Valued Contributor

And what about end_of_path?

 

Resetting the variables at that point should do it.

Re: Does anyone know how to:Make 5 axis output at start of operation always be B0, C0 with IJK 001?

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

@Javi_Garcia wrote:

And what about end_of_path?

 

Resetting the variables at that point should do it.


If you are responding to my 2nd post, this is covered in my first response (probably written about the same time as your first response )

Ken Akerboom Sr CAx Systems Engr, Moog, Inc.
Production: NX10.0.3.5 MP16/TC11.2
I'd rather be e-steamed than e-diseaseled


Re: Does anyone know how to:Make 5 axis output at start of operation always be B0, C0 with IJK 001?

Valued Contributor
Valued Contributor

Thank You

 

This will work for the machines that are table table and the one axis is limited from 0 to +120, 99% of the time. Shop doesn't like cutting on the blind side.   Only one rotary solution with these other than at IJK 0,0,1..    No chance of flip-flop from one operation to the other.   That will cover a sizeable chunk of the problem.

 

Re: Does anyone know how to:Make 5 axis output at start of operation always be B0, C0 with IJK 001?

Valued Contributor
Valued Contributor

Forgot to include, I think this answer at operation end will do it for many of our configurations.


@Ken_A wrote:

What I would do...

At the end of EVERY operation reset mom_prev_out_angle_pos(0...1) to zero & reload it

global mom_prev_out_angle_pos
set mom_prev_out_angle_pos(0) 0.0
set mom_prev_out_angle_pos(1) 0.0
MOM_reload_varliable -a mom_prev_out_angle_pos

 

 

Then it should be consistantly starting at the point closest to (rotary axes) (0,0)

This may change your existing posted code, but should be consistant from now on.

 

Note for completeness, you may have to reset everything (the "sledgehammer" approach)

# Appropriate "global"s here

set mom_pos(3) 0.0
set mom_pos(4) 0.0
set mom_prev_pos(3) 0.0
set mom_prev_pos(4) 0.0
set mom_out_angle_pos(0) 0.0
set mom_out_angle_pos(1) 0.0
set mom_prev_out_angle_pos(0) 0.0
set mom_prev_out_angle_pos(1) 0.0
set mom_prev_rot_ang_4th 0.0
set mom_prev_rot_ang_5th 0.0

# Appropriate MOM_reload_variable calls here

 

Re: Does anyone know how to:Make 5 axis output at start of operation always be B0, C0 with IJK 001?

Legend
Legend

I use the command below. I just dealt with this last week. Only thing is that it broke the Auto_clamp, so I had to make my own custom "auto clamp" with a little help. 

 

Try it out

 

Edit: I place it in the "start of path"

 

 

global mom_pos
global mom_last_pos
global mom_prev_pos
global mom_prev_out_angle_pos
global mom_out_angle_pos

set mom_pos(2) 25.0
set mom_pos(3) 0.0
set mom_pos(4) 0.0
set mom_last_pos(2) 25.0
set mom_prev_pos(2) 25.0
set mom_prev_pos(3) 0.0
set mom_prev_pos(4) 0.0
set mom_prev_out_angle_pos(0) 0.0
set mom_prev_out_angle_pos(1) 0.0
set mom_out_angle_pos(0) 0.0
set mom_out_angle_pos(1) 0.0

MOM_reload_variable -a mom_pos
MOM_reload_variable -a mom_last_pos
MOM_reload_variable -a mom_prev_pos
MOM_reload_variable -a mom_prev_out_angle_pos
MOM_reload_variable -a mom_out_angle_pos

 

 

 

reset positions.PNG

Glenn Balon
Production: NX 12.0.2 MP2 Primarily CAM
Highlighted

Does anyone know how to:Make 5 axis output at start of operation always be B0, C0 with IJK 001?

Valued Contributor
Valued Contributor

One of the things UG post does is take the shortest rotary distance.  Example.

Initial operation moves at IJK 0,0,1 Post outputs B0C0 Good.

Now the program has operations that move to another orientation that outputs B90.C-90.

Then succeeding operations again move to IJK 0,0,1 again, but now the post Outputs B0C-90. Bad even though XY is output correct for this rotation.  The problem is the Static fixture comp used is designed for B0C0.  As far as the programmer sees, the orientation is the same.  Programmer assigns G54 to IJK 0,0,1 orientations.   G54  configured for B0C0 will scrap parts or worse when used at B0C-90. orientation.  This is a problem for most every 5 axis rotary configuration with tables.

 

In the post we can read the IJK only after MOM has processed the position and orientation.   Too late to change the rotary output at that point with the equivalent of using the ROTATE UDE code.

 

What we need is a way to always force B0C0 in the above example only when IJK 001 at the start of the operation.   Operation start moves only.  

 

We know the workaround of using the ROTATE UDE to force C back to 0, that works if the workaround is remembered by the programmer, before parts are scrapped on the floor.  We have built in warnings in the post when a static fixture comp is used at 2 different rotations, but warnings are not always good enough. 

 

Also we don't want to always use the Rotate UDE equivalent of C0 at the start of every operation.  That could cause flip-flop from B-90.C270. to B90.C-90. or similar, from one operation to the next. 

 

PR turned in to Development came back with "no solution".    Now an ER.

 

 

NX CAM Postprocessor Group
NX CAM Postprocessor Group

Members (123)