If any one could repost MPCNC_Fusion360_V6_SDcard.cps, links are resulting in and error message. Thanks!
Iām not sure what is going on with the cloudfront thing right now but just replace the link stuff with v1engineering.com in place of all the cloudfront stuff. I am working on it.
Has anyone had issues with the printer restarting after the first few moves of every milling process using MPCNC_Fusion360_V6_SDcard?
John,
A long shot but does the restart correlate with your spindle or router startup? I think that a long time ago I had the Arduino crash or glitch on the old harbor freight flextool startup. It depended on the proximity of the powercord. I have since chucked the noisy flextool for a Makita. The Makitaās power cord does have an EMU choke/filter.
Otherwise I have only been using V5 but I donāt think there is a significant difference between the two versions. Tomorrow I will try to get V6 and do a file compare to make sure Iām not forgetting something.
Steve
Someone know how to create ādisruptionsā in the toolpath in fusion360?
as the present simple function in ESTLCAM to maintain attached the cut pieces ??
You are looking for hold down tabs. It is really easy. Here is one video I found https://www.youtube.com/watch?v=zf0KCzjNj_o. There are many good tutorials out there. I linked to one series earler in this thread.
Steve
thank you very much SteveC and sorry but I must have missed the post where you had shared the linkā¦
This tabs function seems to be very quick and convenient.
Youāve used on your cnc?
when I get back from work I try: D
Thanks again: D
Today, the little Italian maker ManuCNC can safely cut with fusion LOL
So it looks like our time with Estlcam might be coming to an end, It does not play nice with the new Marlin. This caused me to dig through the gcode and I found a lot of issues. I wish I could have found this stuff earlier but I am only one guy, with a why fix what aināt broke mentality.
So I am getting ready to add fusion tutorial to all the getting started guides as well as elstlcam.
Okay, I just made a cut using this post processor. I have some questions.
#1 Safe to say we can ditch the sequence numbering. Doesnāt seem to be useful for us?
#2 Removing G0 is cool it lets us add the the rapid feed rate we want in post but, Can we separate the Z axis rapid from the X and Y? Can we ditch this all together and stick with the rapids we specified in the Cuts, but it does not seem to have a field for z axis rapids just plunge rates?
I figured I would ask before I spend a ton of time on this. If these questions arenāt easily answered I will do my best to find out. The z axis rapids are what is causing all kinds of issues.
What are the issues with estlcam/marlin RC8? Are these in another post somewhere?
About sequence numbers, sure, you can take out them. Smaller gcode files.
About your 2nd Q, this should not be hard to do. Actually Iām writing from scratch (to learn more the internals, not just modify the existing posts processors) a posts processor for laser engraving.
As for #1 I found that sequence number confused the hell out of either OctoPrint or Marlin and have been running without them for a long time.
For #2 Marlin doesnāt really support G0. It treats it the same as G1. This can cause some slow movements if you have a sequence like:
G1 X1 Y1 F300
G0 X0 Y0
The G0 movement will happen at the same feedrate as the G1. I modded a copy of Marlin to support G0 at the 60 times the DEFAULT_MAX_FEEDRATE specified in Configuration.h but I donāt have my MPCNC tuned very well so I can loose steps. I stick with having Fusion 360 use G1ās as G0ās for now.
As far as I know itās not possible to use a separate G0 feedrate for Z and X/Y unless you use separate G0 commands for both moves. However I donāt think it should be necessary because the actual rate of movement should be limited by the minimum feedrate of all the involved axes.
Iāve never used Fusion 360 so Iām not going to try it now but Iām looking at the post-processor and it looks like you could implement separate rapid feed rates for XY and Z movements by doing something like this(Use G0 option will need to be off as described in earlier posts):
In file MPCNC_Fusion360_V6_SDcard.cps (properties section):
Change line :
highFeedrate = (unit == IN) ? 500 : 2000;
To:
highXYFeedrate = (unit == IN) ? 500 : 2000; //specify XY axis rapid feed rate in inches:mm
highZFeedrate = (unit == IN) ? 100 : 400; //specify Z axis rapid feed rate in inches:mm
In file MPCNC_Fusion360_V6_SDcard.cps (function onRapid):
Change line :
writeBlock(gMotionModal.format(1), x, y, z, feedOutput.format(highFeedrate));
To:
writeBlock(gMotionModal.format(1), x, y, feedOutput.format(highXYFeedrate)); //write G1 command for XY
writeBlock(gMotionModal.format(1), z, feedOutput.format(highZFeedrate)); //write G1 command for Z
DISCLAIMER: I donāt use Fusion360 and have no idea if this will work. Whoās feeling saucy enough to try it?
Iām on it.
This is such a huge issue I canāt believe none of us found this before. All of these programs are over driving the hell out of the Z axis. The firmware was limiting it but not so much anymore with RC8. All of those āmy z axis is skippingā threads I wonder how many wouldnāt have happened if the software was requesting the right speed.
Just noticed there are a couple of other lines that reference the highFeedrate variable in the tool change fucntions:
In file MPCNC_Fusion360_V6_SDcard.cps (if (insertToolCall || retracted) section):
Change line :
gMotionModal.format(properties.useG0 ? 0 : 1), xOutput.format(initialPosition.x), yOutput.format(initialPosition.y), conditional(!properties.useG0, feedOutput.format(highFeedrate))
To:
gMotionModal.format(properties.useG0 ? 0 : 1), xOutput.format(initialPosition.x), yOutput.format(initialPosition.y), conditional(!properties.useG0, feedOutput.format(highXYFeedrate))
Change line :
writeBlock(gMotionModal.format(properties.useG0 ? 0 : 1), zOutput.format(initialPosition.z), conditional(!properties.useG0, feedOutput.format(highFeedrate)));
To:
writeBlock(gMotionModal.format(properties.useG0 ? 0 : 1), zOutput.format(initialPosition.z), conditional(!properties.useG0, feedOutput.format(highZFeedrate)));
Change line :
writeBlock(
gAbsIncModal.format(90),
gMotionModal.format(properties.useG0 ? 0 : 1),
xOutput.format(initialPosition.x),
yOutput.format(initialPosition.y),
conditional(!properties.useG0, feedOutput.format(highFeedrate))
);
To:
writeBlock(
gAbsIncModal.format(90),
gMotionModal.format(properties.useG0 ? 0 : 1),
xOutput.format(initialPosition.x),
yOutput.format(initialPosition.y),
conditional(!properties.useG0, feedOutput.format(highXYFeedrate))
);
Jeff - Estlcam wants G0 (and he isnāt planning on changing it), normally this is fine Marlin treat G0=G1. Estlcam only lets you specify one travel speed so to get it to work right you need to limit all travel moves to 8mm/s as to not trigger a panic in the RC8 because EstlCam will try to move the z axis in one of two ways. #1 no speed in the travel feedrate box will make marlin move at the most recent previously used travel speed (almost always too fast). #2 If you put a feedrate in the box it has to be 8 or less because all travel moves will get this number specified. On top of this the first few moves of every estlam file are rapids so you will get a marlin panic immediately.
You canāt blame christian. what should happen is a G0 moves the machine at the max feedrate specified in the firmwareā¦If marlin only had this optionā¦Did you figure out how to enable this Drew?
Drew - I have recently been looking into a deeper tuning of our machines. I discoveredā¦or actually payed attention to the specs. Our steppers have a pretty drastic linear torque decrease at anything over 60RPMās. So using the Zaxis as an example we can move it at 8.7mm/s as a processor max speed using 32nd stepping, if we decrease the step rate to 16ths we can drive it at 17.4mm/sā¦Butā¦we are maxed out on torque at around 5-6mm/s (I did the actual math in another thread) no matter what.
Leo - Didnāt work, thanks for the try though. I think I am understanding this stuff a little better. Iām digging into it right now. I am an idiot when it comes to these things, but I think that would only work if we used G0? But that might be a better way to go, āuse G0ā but switch every G0 to G1 with the specified feedrate. Maybe? Iām trying it now.
Martin - Buddy, pal, a fresh post processor?? If we could get you to squeeze in a G0 switcharoonie in there Iām sure we would all be greatful.
Just saw the new lines Leo let me try it out.
The way the code reads, the āhighfeedrateā properties are applied if āuseG0ā is set to false(default setting in the PP file). In the onRapid function for example, the post processor will write a G1 command followed by the highfeedrate setting if āuseG0ā is disabled, otherwise it will write a G0 command which Marlin wonāt do anything special with:
function onRapid(_x, _y, _z) {
var x = xOutput.format(_x);
var y = yOutput.format(_y);
var z = zOutput.format(_z);
if (x || y || z) {
if (pendingRadiusCompensation >= 0) {
error(localize(āRadius compensation mode cannot be changed at rapid traversal.ā));
return;
}
if (!properties.useG0) {
writeBlock(gMotionModal.format(1), x, y, feedOutput.format(highXYFeedrate));
writeBlock(gMotionModal.format(1), z, feedOutput.format(highZFeedrate));
} else {
writeBlock(gMotionModal.format(0), x, y, z);
}
feedOutput.reset();
}
}
Looks like the high feedrate also kicks in when the tool is retracted which makes sense.
LEO!!! I think it will work for now. It always inserts the F400/2000 even if there is not a need for it, but it inserts it on a separate line, So I assume marlin will just not do anything with it.
SOOOOOO awesome I think. I need to try some actual cuts but we have predefined rapids for XY and Z, then we have lead in speed, cut speed, lead out speed.
I need to try a cut tomorrow but this is looking great.
N3245 G1 X181.081 Y11.173 Z-6.62 F222
N3250 G1 X181.103 Y11.18 Z-6.553 F222
N3255 G1 X181.111 Y11.182 Z-6.483 F222
N3260 G1 F2000
N3265 G1 Z3 F400
N3270 G1 X169.283 Y50.331 F2000
N3275 G1 F400
N3280 G1 F2000
N3285 G1 Z2 F400
N3290 G1 Z0.317 F111
N3295 G1 Y50.323 Z0.247 F111
N3300 G1 Y50.3 Z0.18 F111
F111=lead in in software (test value so I could find it easily)
xy rapid=F2000 (I will change this)
Z rapid=F400 (I will change this)
F222=lead out in software (test value so I could find it easily)
It makes sense.
Always an XY value then a Z value. So line N3265 is a rapid z move but to get it it put in a fake rapid XYrate first (N3260). Then line 70 triggered a fake 75. Then *5 triggered a fake 80.
So, in conclusionā¦This is freaking bad ass. If we use the same rate (about 4mm/s for lead in, lead out, plunge, that will give us an accurate z axis cutting speed, and then I will use 7mm/s for the z rapid (420mm/min) and 35mm/s (2100mm/m) for rapid XY.
So cool, so stoked. I love all the amazing help in this forum!
Iām attaching the leo69 edit if anyone wants to try it. I have only used it on the machine in the office but it works with RC8!
MPCNC_Fusion360_V7.zip (4.82 KB)