Move exceeds maximum extrusion (again)

Basic Information:

Printer Model: Artilerry Sidewinder X1
MCU / Printerboard: MKS Gen L
klippy.log (1.7 MB)

Actually I thought we had this fixed in Move exceeds maximum extrusion (occasionally) :neutral_face:

But this insane issue keeps coming back. It happens only occasionally and therefore kind of annoying as it is not 100% reproducible.

So in the last thread @gaolst helped me to figure out that my purge line:

G1 X10 Y260.0 Z0.3 F1500.0 E25 ; first line
M104 S{EXTRUDER_TEMP}
# issue happens around here
G1 X15 Y260.0 Z0.3 F1500.0 E26 ; small move to the right
G1 X15 Y25 Z0.3 F1500.0 E51 ; and back
G92 E0 ; reset Extruder
G1 Z1.0 F3000

on G1 X15 Y260.0 Z0.3 F1500.0 E26 is trying to extrude to much filament (although I never had issues on marlin), and therefore Klipper stops it due to max_extrude_cross_section = 2.0.

However Klipper does so only occasionally for some reason. So our fix was to lower the extrusion amount. I lowered it to:
G1 X15 Y260.0 Z0.3 F1500.0 E25.54

Now with this considerably lower extrusion amount it seemed to work.

But today, I am getting the error message again:
Move exceeds maximum extrusion (12.281mm^2 vs 2.000mm^2)

I have therefore lowered the value even more:
G1 X15 Y260.0 Z0.3 F1500.0 E25.31

Now, when Klipper prints the purge line, the line (on a small move to the right) is noticably thinner than the rest of the purge line (!). That means to me, that there should be no issues with the extrusion.

But still on the next print, Klipper will abort and refuse to print the above command with:
Move exceeds maximum extrusion (12.176mm^2 vs 2.000mm^2)
It never complains about the other commands.

So according to Klipper output, that move is considerably over the allowed extrusion. However the line is already thinner than the rest of the purge line. Therefore I do not understand why Klipper still aborts it.

Am I missing something essential? I don’t know.

Hi again

Previously we did found your too big extrusion amount which was approx 12mm^2/s
but now I don’t see it in current setup.

The weird part that previously klipper did report following for 1mm extrusion:

Move exceeds maximum extrusion (12.507mm^2 vs 2.000mm^2)

now it reports following for 0.31mm extrusion:

Move exceeds maximum extrusion (12.176mm^2 vs 2.000mm^2)

The change is very small because we did reduce amount 3 times !
so i did try to re-calculate error values back to filament movement
for 12.507mm^2/s - 12.507*(1s/0.2s)=62.535
62.535/2.404 = 26.01 mm

for 12.176mm^2/s - 12.176*(1s/0.2s)=60.88
60.88/2.404 = 25.32

As you can see they are very close to E value which you did have in that line.

But you have this statement:

This statement goes against of every possible explanation which i can derive from your data :slight_smile:

Finnaly i think i understand your issue:

  1. That statement about thinner line should be accounted only for a case when you didn’t have an error, because if you did have error - that thinner line don’t exist, klipper didn’t print it at all.
  2. Your statement

point that you have this issue only in next print, not first one - this information is very important and was not present in previous case.

My conclusion on error is following:
On successful print your extruder was left in Relative mode, on next print your commands are Relative for extruder, this line G1 X15 Y260.0 Z0.3 F1500.0 E25.31 is trying to push 25.31mm of filament in 5mm X movement and you are getting error Move exceeds maximum extrusion (12.176mm^2 vs 2.000mm^2)

To fix your issue just add M82 (absolute extruder movement) command in your [gcode_macro START_PRINT] after G28