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

4th axis post for Haas without G93/Inverse time feed

20 REPLIES 20
SOLVED
Reply
Message 1 of 21
tony
5645 Views, 20 Replies

4th axis post for Haas without G93/Inverse time feed

I am wondering if anyone has a post for a Haas 4th axis that doesn't use a G93 inverse time feed mode . The two A axis post in fusion seem to output only feed commands on every line and in large number using the G93. I get an error 248 number too large error on the controller. Since my control doesn't support this type of code and wanted to know if there is a way to do interpolated moves without it.

 

I found this post in the forum and it seems close to the type of code I'm looking for.

 

https://forums.autodesk.com/t5/fusion-360-computer-aided/needing-a-fadal-4th-axis-post-processor/td-...

 

any help would be great , Thanks

20 REPLIES 20
Message 2 of 21
bob.schultz
in reply to: tony

I am going to guess that you are using the 'haas with a-axis.cps' post processor.  If this is the case, then it is quite easy to disable inverse time feedrates (G93) and output DPM/IPM feedrates (G94) instead.  Just modify the following line in the post.

 

 

/** Calculate the multi-axis feedrate number. */
function getMultiaxisFeed(_x, _y, _z, _a, _b, _c, feed) {
  var f = {frn:0, fmode:0};
  if (feed <= 0) {
    error(localize("Feedrate is less than or equal to 0."));
    return f;
  }
  
  var length = getMoveLength(_x, _y, _z, _a, _b, _c);

  if (false) { // inverse time  (Change 'true' to 'false')
    f.frn = inverseTimeOutput.format(getInverseTime(length[0], feed));
    f.fmode = 93;
    feedOutput.reset();
  } else { // degrees per minute
    f.frn = feedOutput.format(getFeedDPM(length, feed));
    f.fmode = 94;
  }
  return f;
}

This will output feedrates using G94 mode.  You can read the following Forum post to learn a bit more about feedrate calculations for multi-axis moves.

 

 

https://forums.autodesk.com/t5/hsm-post-processor-forum/multi-axis-feedrates/m-p/7346609/highlight/t...



Bob Schultz
Sr. Post Processor Developer

Message 3 of 21
tony
in reply to: bob.schultz

 

Hi Bob

 

I changed the post from True to False like you suggested, however the code looks a bit off, strange feed items. Looks promising though. Any ideas.



(2D Contour1) M9 M1 T3 M6 S3500 M3 G54 M11 G0 A34.653 M8 G0 X0.685 Y0. G43 Z4.35 H3 G1 A34.653 Fn?n.000 Z3.95 F200. Z3.7894 F30. Z3.0591 X0.455 F92. X0.4393 A34.644 Fn?n.000 X0.4237 A34.618 X0.4082 A34.575 X0.3929 A34.514 X0.378 A34.436 Fn?nd.000 X0.3634 A34.342 X0.3492 A34.232 X0.3355 A34.106 Fnn.000 X0.3224 A33.965 Fnnd.000 X0.3098 A33.81 Fn?n?d?.000 X0.298 A33.642 X0.2869 A33.46 X0.2766 A33.267 X0.2671 A33.062 X0.2585 A32.848 X0.2508 A32.624 Fn?n.000 X0.244 A32.392 Fn?nd.000 X0.2383 A32.154 Fnn.000 X0.2335 A31.909 Fn?n?.000 X0.2298 A31.66 X0.2271 A31.407 X0.2255 A31.152

 

Message 4 of 21
Anonymous
in reply to: tony

Can you attach your modified post processor?

Message 5 of 21
tony
in reply to: Anonymous

Here is the post I modified , which I copied from my local posts.

Message 6 of 21
Anonymous
in reply to: tony

I just posted few different programs from couple different parts, and all seem to post proper feed rates...

Message 7 of 21
Anonymous
in reply to: Anonymous

Never mind, posted another program with A wrapping and got similar gibberish feed rate value.

Message 8 of 21
bob.schultz
in reply to: tony

There is a problem with the rotary axes delta calculations.  You will need to make the following changes to the getMoveLength function to get the correct feedrate numbers.

 

/** Calculate tooltip, XYZ, and rotary move lengths. */
function getMoveLength(_x, _y, _z, _a, _b, _c) {
...
  moveLength[0] = linearLength + radialLength;
  moveLength[1] = Vector.diff(endXYZ, startXYZ).length;
  moveLength[2] = 0;
  var start = new Array(startABC.x, startABC.y, startABC.z); // add these lines
  var end = new Array(endABC.x, endABC.y, endABC.z);
  for (var i = 0; i < 3; ++i) {
    var delta = Math.abs(end[i] - start[i]); // modify this line
    if (delta > Math.PI) {
      delta = 2 * Math.PI - delta;
    }
    moveLength[2] += Math.pow(delta, 2.0);
  }

We will make these required changes in the stock Haas posts.



Bob Schultz
Sr. Post Processor Developer

Message 9 of 21
tony
in reply to: bob.schultz

Bob

 

I modified the post and it seems to output the code. I did forget to mention that my control doesn't use G94 either. The issue now is when I try to do a test run the program the motion on the A axis is very choppy at higher feed rates say 20IPM -30IPM. When I drop it down to say 5-10IPM it seems to keep up better. Is that a control buffering issue. I'm not sure what feed rates I would be cutting at as the 4th Axis is new to me.

 

I will keep testing. Also how do I remover the G94 from the Post?

 

Thanks

 

 

Message 10 of 21
bob.schultz
in reply to: tony

The Haas controls use a unique calculation for feed rates with rotary axis moves.  They use a fixed part diameter (Setting 34) and then require FPM rates based on this diameter.  The Haas post by default was using a combination FPM/DPM calculation that is common in the industry.

 

I am attaching an updated version of the modified 'haas with a-axis.cps' post that has this calculation implemented (it will be officially released shortly).  It should eliminate the choppy moves.  Please let me know if it is working on the machine as expected so we can place it into the Post Library.  You will have to enable the Rotary moves use IPM feeds property to output IPM feed rates with rotary axes moves   The G94 code should not be output when this property is set.  You will also have to make sure that the Feed rate calculation diameter property is the same as Setting 34 on your control.

 

dpm.png

 

 

 

 



Bob Schultz
Sr. Post Processor Developer

Message 11 of 21
tony
in reply to: bob.schultz

Does setting 34 have to be changed anytime a part diameter changes?  Or as long as both numbers are the same regardless of the actual part diameter?

Message 12 of 21
bob.schultz
in reply to: tony

The diameters just have to be the same.  The post will adjust the feed rates based on the actual diameter being cut and the value stored in Setting 34.



Bob Schultz
Sr. Post Processor Developer

Message 13 of 21
tony
in reply to: bob.schultz

Ok so for example if Setting 34 = 2" and  the parameter in the Post = 2" but the CAM file is programmed with a 6" part that's ok? Or does everything need to be the same based on the CAD/CAM part.

Message 14 of 21
bob.schultz
in reply to: tony

If Setting 34=2 and the diameter property is set to 2, then this is OK.  The post will adjust the feed rate so that it reflects a 2" diameter part in the output even if the actual part diameter is 6".  The post actually uses the tool position at the given cut to determine the "floating" diameter and is adjusted for every tool position.

 

You should notice that the feed rates remain the same when cutting at a fixed diameter, and then changing as the tool moves in and out from the center of the table.



Bob Schultz
Sr. Post Processor Developer

Message 15 of 21
tony
in reply to: bob.schultz

The code seems to run better, thanks for all the help. 

Message 16 of 21
bob.schultz
in reply to: tony

Thanks for taking the time to test the post and providing feedback.  It is much appreciated!



Bob Schultz
Sr. Post Processor Developer

Message 17 of 21
tony
in reply to: bob.schultz

I am just checking out a few more things with regards to Parameter 34 and wanted to confirm something.

 

If I have a part that is 7" in diameter and I leave parameter 34=1 on the control. And in fusions post which is now "feed rate calculation diameter" at the default 1" my feed rates are something like 2-3IPM for a programmed 15IPM in the fusion.

 

If I change "feed rate calculation diameter" to the 7" in fusion and the controller I get more accurate feed rates like I programmed in fusion. for example 15IPM.

 

When I run each of these two options on the controller, the one programmed with parameter 34=1 has feed rates of 2-3IPM on screen but the axis is moving much faster however when I program what the part actually is 7", the feeds rate on screen are closer to what is programmed. Not sure if this  makes sense just wanted to post what the results were.

Message 18 of 21
bob.schultz
in reply to: tony

The feedrate displayed on the screen shows the tool tip feedrate as if it was setting34/2 (the part radius) from the center of the table.  Since the tool is actually 3.5" away from the center of the table the actual cutting feedrate will be 3.5 times the feedrate displayed on the control.  So you should be seeing a feedrate of 2.14 (15 / (Setting_34 / Actual_Cutting_Diameter)), but the tool should be moving across the part at the programmed feedrate of 15.

 

Of course, when Setting 34 is closer to the actual diameter of the part being cut, then the feedrate number on the screen will more closely match the cutting feedrate.  In either case, the actual cutting feedrate across the part should be the same on the machine. 



Bob Schultz
Sr. Post Processor Developer

Message 19 of 21
Ariel
in reply to: bob.schultz

Hi Bob, sorry to dig up an old post, but I am grateful they are still around. This helped me solve the same issue. Was simply the difference between my Parameter 34 and Feed rate calculation diameter.

 

I seem to be missing something though.

 

I now have to enter my "cutting feed rate", for example, is 4000m/min and usually run a built-in high feed rate of 12,700 m/min, so now the feed rate is jumping between the two of them. Feed at 4000, X move (my step over on rotary toolpath) and then immediately feed at 12700 which is now my cutting feed rate. So does this mean that my "built in high feed rate" is actually a "cutting feed rate"?

 Untitled 001.png

Message 20 of 21
bob.schultz
in reply to: Ariel

If you have defined Setting 34 in the control to 1" and set 1" in the Feed rate calculation diameter property, then these high feed rates can be expected.  The X position in your sample code is approximately 2", which defines a cutting diameter of 4".  This means that the feed rate values will be 4x the programmed feed rate, or 16,000.  The post processor will not output a cutting feed rate higher than the High Feedrate value, so it is truncated to 12,700.

 

This means that the machine should be cutting a bit slower than your programmed feed rate.  If you change Setting 34 and the property to more closely match the diameter of the part you are cutting, then you should see feed rate numbers that are similar to your programmed feed rate.



Bob Schultz
Sr. Post Processor Developer

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

Post to forums  

Technology Administrators


Autodesk Design & Make Report