This page describes what the settings on the Machine Limits page mean, and how you can use them to control your printer. Here is a screen grab showing what my settings currently are:

First, some definitions:

Feedrate:

Feed rates are actually speeds, which means they control the speed at which the stepper motors turn. For X, Y, and Z the feedrate is the speed at which the steppers will move the hotend in each respective direction.The term feed rate comes from NC milling machine programming; in that environment the speed at which the cutter moves as it removes material is dependent on the type of material being cut and the size, type, and speed of the cutter. Manufacturing people want the speed to be as fast as possible (so the total machining time is reduced), but going too fast breaks the cutter.

In the case of 3D printer extruders the feed rate is the speed at which filament is fed to or retracted from the hotend. One of the key functions of a slicer program is to calculate the speed at which the filament has to be fed to the hotend as it moves. The algorithm for calculating that makes some interesting assumptions, but that’s a different issue. What matters is that, for 3D printers, the extruder feedrate is directly related to the X, Y, and Z feedrates of the hotend. This is because the faster the hotend moves, the faster filament needs to be extruded. (Actually it’s only the X & Y feedrates, because 3D printers don’t print when they move in the Z direction. Truth is 3D printing should be called 2 1/2D printing.)

Acceleration:

These values control the rate at which the feedrates change. It’s just like acceleration in a car: the more you step on the gas, the faster the car moves. Large acceleration values means the printer’s hotend will change speed very quickly. This can result in jerking the entire printer since, as Isaac Newton tells us, for every action there is a reaction. So If the hotend accelerates in the +X direction very fast the whole printer will try to move in the -X direction to counteract the hotend’s motion.

In general the extruder’s acceleration should be less than X, Y, or Z because extruders tend to get noisy at high acceleration values. I think this is because of the gear drives extruders have, but that’s just a guess.

Jerk:

The Jerk value is the rate at which the acceleration value can change. A high jerk value means the acceleration can change much faster than it can if a lower jerk value is specified. I’d say this is a pretty arcane setting, but there it is.

How to use the Machine Limits page

See that drop-down box at the top right labelled “How to apply limits”? That has 3 options: Emit to GCode, Use for time estimate, and Ignore. Those 3 options have a vastly different effect on how your printer will print.

The first option means the slicer will send GCode to the printer that will force the printer’s max feedrates, acceleration, and jerk values to be what is set in the values you specify. These values will override what’s been set in the printer’s firmware. So with this option, what you see is what you get.

The second option is different. This one means the values you set are used only for the slicer’s calculation of total print time; they are not sent to the printer and do not change the values set in the printer firmware. I really don’t see the benefit of this setting, but there it is.

The third setting simply ignores everything. This means you accept the values in the printer firmware and don’t mess with any of them.

So what should you do about all this?

The answer depends on 2 things: the type of printer you have, and whether or not you want to mess with any of this.

Thing #1:

If you have a delta style printer you must make sure all the values for X, Y, and Z are the same. By default (meaning the way PrusaSlicer comes direct from Prusa or a download site) the X and Y values will be different from the Z values. This is because Prusa printers are Cartesion printers, and Cartesian printers move X and Y the same way, but Z motion is handled differently. Delta printers move X, Y , and Z the same way, so you have to set the Z values to be the same as the X and Y values. If you do not do this your printer will behave in very peculiar and confusing ways.

Thing #2:

I spent a fair amount of time tweaking all these values, and the ones shown in the screen grab above are what I am currently using with good success. But – this is for my printer (FLSun SuperRacer) and my type of filament (PLA). Your printer and/or filament will likely be different, which means your values will probably need to be different. So you can do like I did, and experiment with different values. Or you can just set the top drop-down to Ignore and let your printer’s firmware run as it was designed to run. My thinking now is that this is probably the best option for most people.

Update 28 Sep 2021

I did a test print of the same simple object (a small cylinder) with “How to apply limits” set first to “Emit to GCode” and then to “Ignore.” Both prints finished with the same apparent results, but the infill on the second print (“Ignore”) was much weaker and fuzzier than it was with “Emit to GCode.” There was no apparent difference with the inner or outer loops; only the infill was different.

It has seemed to me that PrusaSlicer does something different with infill, but I’m not sure what it is. At any rate, I’m sticking with “Emit to GCode” since for my printer that produces the best results.

Last Update: 28 Sep 2021