Community
HSM Post Processor Forum
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

FANUC turning - IJK as absolute NOT incremental

4 REPLIES 4
SOLVED
Reply
Message 1 of 5
peterHRDWD
1479 Views, 4 Replies

FANUC turning - IJK as absolute NOT incremental

Good Morning,

 

We recently set up an 84" GL VTL (vertical turning lathe) that operates on G/L Numeripath 8000 control. 

 

We are currently using a modified "fanuc-turning" post that reads the X values in radial mode (post is attached).


Our problem is that Fusion generates the "IJK" coordinates in an incremental mode rather than an absolute mode. 


Here is what I mean by incremental-absolute: 

 

"Absolute means that the circle center is described in coordinates relative to the work origin (0,0), where incremental means the circle center is described in terms coordinates relative to the arc start point." 

 

-That seemed to me like a very satisfying definition, I found it on some other forum. 

 

Can anyone offer some guidance on this matter? Does anyone have a post for Numeripath 8000? 

 

Please see attached the F3D file of the part, the post we generated & the CPS file that we used to generate the post. 

 

I would appreciate your feedback!

 

K.

4 REPLIES 4
Message 2 of 5
AchimN
in reply to: peterHRDWD

The easiest way is to use radius mode.
There is a property setting called "use Radius", once you set that to true, you will see R-words for circular moves instead of IJK.
So incremental/absolute doesnt matter anymore.

 



Achim.N
Principal Technology Consultant
Message 3 of 5
GeorgeRoberts
in reply to: peterHRDWD

Good Morning,

 

Thanks for posting! You are correct, the post processor you are using defines the center point of an arc using incremental co-ordinates. If you would like to use absolute co-ordinates for this, you will need to make a modification inside of the post processor.

 

To get the incremental co-ordinates, the center points absolute position is taken from the arc start position. To change these calculations, change this:

 

   switch (getCircularPlane()) {
    case PLANE_XY:
      writeBlock(conditional(properties.type != "A", gAbsIncModal.format(90)), gPlaneModal.format(17), gMotionModal.format(clockwise ? 2 : 3), iOutput.format(cx - start.x, 0), jOutput.format(cy - start.y, 0), getFeed(feed));
      break;
    case PLANE_ZX:
      writeBlock(conditional(properties.type != "A", gAbsIncModal.format(90)), gPlaneModal.format(18), gMotionModal.format(clockwise ? 2 : 3), iOutput.format(cx - start.x, 0), kOutput.format(cz - start.z, 0), getFeed(feed));
      break;
    case PLANE_YZ:
      writeBlock(conditional(properties.type != "A", gAbsIncModal.format(90)), gPlaneModal.format(19), gMotionModal.format(clockwise ? 2 : 3), jOutput.format(cy - start.y, 0), kOutput.format(cz - start.z, 0), getFeed(feed));
      break;
    default:
      linearize(tolerance);
    }
  } else if (!properties.useRadius) {
    switch (getCircularPlane()) {
    case PLANE_XY:
      writeBlock(conditional(properties.type != "A", gAbsIncModal.format(90)), gPlaneModal.format(17), gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), iOutput.format(cx - start.x, 0), jOutput.format(cy - start.y, 0), getFeed(feed));
      break;
    case PLANE_ZX:
      writeBlock(conditional(properties.type != "A", gAbsIncModal.format(90)), gPlaneModal.format(18), gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), iOutput.format(cx - start.x, 0), kOutput.format(cz - start.z, 0), getFeed(feed));
      break;
    case PLANE_YZ:
      writeBlock(conditional(properties.type != "A", gAbsIncModal.format(90)), gPlaneModal.format(19), gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), jOutput.format(cy - start.y, 0), kOutput.format(cz - start.z, 0), getFeed(feed));
      break;
    default:
      linearize(tolerance);
    }
  } else { // use radius mode

To this:

    switch (getCircularPlane()) {
    case PLANE_XY:
      writeBlock(conditional(properties.type != "A", gAbsIncModal.format(90)), gPlaneModal.format(17), gMotionModal.format(clockwise ? 2 : 3), iOutput.format(cx), jOutput.format(cy), getFeed(feed));
      break;
    case PLANE_ZX:
      writeBlock(conditional(properties.type != "A", gAbsIncModal.format(90)), gPlaneModal.format(18), gMotionModal.format(clockwise ? 2 : 3), iOutput.format(cx), kOutput.format(cz), getFeed(feed));
      break;
    case PLANE_YZ:
      writeBlock(conditional(properties.type != "A", gAbsIncModal.format(90)), gPlaneModal.format(19), gMotionModal.format(clockwise ? 2 : 3), jOutput.format(cy), kOutput.format(cz), getFeed(feed));
      break;
    default:
      linearize(tolerance);
    }
  } else if (!properties.useRadius) {
    switch (getCircularPlane()) {
    case PLANE_XY:
      writeBlock(conditional(properties.type != "A", gAbsIncModal.format(90)), gPlaneModal.format(17), gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), iOutput.format(cx), jOutput.format(cy), getFeed(feed));
      break;
    case PLANE_ZX:
      writeBlock(conditional(properties.type != "A", gAbsIncModal.format(90)), gPlaneModal.format(18), gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), iOutput.format(cx), kOutput.format(cz), getFeed(feed));
      break;
    case PLANE_YZ:
      writeBlock(conditional(properties.type != "A", gAbsIncModal.format(90)), gPlaneModal.format(19), gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), jOutput.format(cy), kOutput.format(cz), getFeed(feed));
      break;
    default:
      linearize(tolerance);
    }
  } else { // use radius mode

Then finally, change this:

// circular output
var kOutput = createReferenceVariable({prefix:"K"}, spatialFormat);
var iOutput = createReferenceVariable({prefix:"I"}, spatialFormat); // no scaling

 

To this:

// circular output
var kOutput = createVariable({prefix:"K"}, spatialFormat);
var iOutput = createVariable({prefix:"I"}, spatialFormat); // no scaling

 

 

Hope this helps!

 

 

-

George Roberts

Manufacturing Product manager
If you'd like to provide feedback and discuss how you would like things to be in the future, Email Me and we can arrange a virtual meeting!
Message 4 of 5
peterHRDWD
in reply to: GeorgeRoberts

This helps! Thanks for your feedback!

Message 5 of 5

Hi everyone!

I have same problem but for cnc mill. My mill G02 and G03 IJK understand just in absolute mode. IJK dimensions need from X0 Y0 Z0.

Can someone help this out?


Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report