Extruders Not Obeying G1 Feed Rate
-
Hi! I'm running RRF 3.4.1 on a Duet 2 WiFi v1.05 with a DueX5 v0.11.
I've seen this problem a couple of times, but let me describe the most recent time, because it's the most fresh in my memory.
I ran out of filament, and I tried to use a replace filament macro. But when it ran, it tried to move the extruders really fast, way faster than the feed rate that was supplied to G1. I tried to extrude via the PanelDue and the first time, same thing, way too fast. Then I changed the rate from 10 to 20 then back to 10 and extruded again and it worked fine. I'll show it below, but the exact command was G1 E-100 F300. This should have taken 20 seconds, but extruder zipped for 1 or 2 seconds, then was done.
My thought is that somehow something is happening that causes the Duet to ignore the feed rate specified in G1.
Because my printer manufacturer (Modix) only has config files for RRF 3.3, I created the following file, my filament-error.g file:
M25 ; first, pause the print as pre-RRF 3.3 did if {param.D == 0} ; now call the right pre-RRF 3.4 subroutines. M98 P"filament-error0.g" elif {param.D == 1} M98 P"filament-error1.g"
Here is filament-error0.g:
M300 S1111 P222 ; beep M83 ; relative extruder moves M300 S1111 P222 ; beep G1 E-5 F800 ; retract 5mm of filament G91 ; relative positioning if {(move.axes[2].machinePosition) < (move.axes[2].max - 10)} ; check if there's sufficient space to raise head M291 P{"Raising head to... " ^ move.axes[2].machinePosition+5} R"Raising head" S0 T3 ; message G1 Z+5 F3000 ; move Z up a bit else M291 P{"Cannot raise head- insufficient space " ^ move.axes[2].machinePosition ^ " : " ^ (move.axes[2].max - 10) ^ "."} R"Raising head" S0 T3 G4 S3 ; wait for popup to display G90 ; absolute moves G1 X1 Y1 F6000 ; move quickly to the front left M300 S1111 P333 ; beep M106 S0 ; set fans to 0 T-1 P0 ; deselect tools M291 R"Attention!" P"Filament Sensor Raised An Error On E0" S1 ; message
My machine paused as expected. I then ran the 02_Filament Change macro:
; Macro file for Duet WiFi ; Generated by Modix - Version 3.3 Macro B M300 S1111 P333 ; beep M25 ; pause the print M291 R"Filament Change" P"Please wait for the temperature to reach the target" T R1 ; select previous tool M116 S3 ; wait for hotend temperatures to stabilise M291 S2 R"Unload filament" P"Hotend will now retract 100mm. Pull out the rest of the filament by hand. Press OK to start the retraction" M83 ; relative extruder moves G1 E-100 F300 ; retract 100mm of filament G4 P0 ; wait for the moves to finish M300 S1111 P222 ; beep M291 S2 R"Load filament" P"Load filament into the filament sensor and feed it all the way into the extruder. Press OK once completed" M300 S1222 P222 ; beep M291 S0 P"Extruding - Please wait" G1 E120 F300 ; extrude 120mm of filament G1 E20 F120 ; extrude 20mm of filament G1 E-3 F360 ; retract 3mm of filament G4 P0 ; wait for the moves to finish M300 S1111 P333 ; beep M291 R"Attention !" P"It is recommended to turn off the heaters if the pause is expected to last a long time" T46
The hot end heated up, and it told me it was going to retract. Then I hit OK to retract the filament, and it tried to retract, but REALLY FAST, and not enough.
A video to the event is here: Fast Retraction. Turn the sound on to hear the steppers. Again, this should have taken 20 seconds (100 mm / 300 mm/min = 1/3 min) but it takes just a second or two, so it's not like the steppers are slipping. If they were, they should have made noise for 20 seconds.
Any idea why this is happening? I'm guessing it's something stupid, but looking at the macro, I see no idea why G1 E-100 F300 doesn't work as expected. Could it have something to do with calling M25 when the print is already paused?
Thank you!
02_Filament Change.g (Added .g to the filename to make the dumb forum happy.)
filament-error.g
filament-error0.g
config.g -
A quick check on my printer running 3.4.1 doing the follow works as expected:
M118 S"START" M83 G1 E50 F300 M400 M118 S"DONE"
The console reports 10 seconds between the two messages.
So something that simple works.
Frederick
-
This post is deleted! -
@fcwilt Thank you. I expected that would work fine. My print has been running as expected for about 36 hours, now, and the only weirdness is with this macro.
-
@tfjield said in Extruders Not Obeying G1 Feed Rate:
@fcwilt Thank you. I expected that would work fine. My print has been running as expected for about 36 hours, now, and the only weirdness is with this macro.
Well, then I will have to take a close look at your code and see if I can spot anything.
Frederick
-
Do you happen to have increased flow rate percentage set? Just a thought.
-
@phaedrux Nope, just set to 100%. My long print is almost done, and I'm going to try to duplicate the problem and gather more info.
-
@phaedrux @fcwilt
Here's an update. After my print finished today I ran a test print and I triggered several filament errors. It turns out that even when manually operating the extruder it does the same thing: it tries to retract and extrude at an extremely high rate. This happens the first couple of times I try to retract / extrude, but then it starts working correctly. It starts working correctly after trying to retract / extrude a couple(?) of times. And here's the kicker: after it starts working correctly, it keeps working correctly on subsequent trigger faults!I realize that when I upgraded from 3.3 to 3.4, I didn't fully understand the ramifications of the change, and I didn't really understand the macros. I dug in a bit more and I've updated them. Please ignore the previous files. And please let me know if you see anything wrong in these.
Now, here's my filament-error.g:
; filament-error.g ; called on any filament error M25 ; first, pause the print M118 P0 S"Print paused due to filament error." L2 ; message G4 P1 ; dwell for 1 ms M291 R"Attention!" P"Filament Sensor raised an error for E" ^ param.D ^ "." S1 ; message
And since M25 will call pause.g, here it is:
; pause.g ; called when a print from SD card is paused M300 S1111 P222 ; beep M117 "Print is being paused." ; message G4 P1 ; dwell 1ms M83 ; relative extruder moves G1 E-5 F800 ; retract 5mm of filament G91 ; relative moves if {(move.axes[2].machinePosition) < (move.axes[2].max - 10)} ; check if there's sufficient space to raise head M291 P{"Raising head to... " ^ move.axes[2].machinePosition+5} R"Raising head" S0 T3 ; message G1 Z+5 F3000 ; move Z up a bit else M291 P{"Cannot raise head- insufficient space " ^ move.axes[2].machinePosition ^ " : " ^ (move.axes[2].max - 10) ^ "."} R"Raising head" S0 T3 G4 S3 ; wait for popup to display G90 ; absolute moves G1 X1 Y1 F6000 ; move quickly to the front left M300 S1111 P333 ; beep M106 S0 ; set fans to 0 T-1 P0 ; deselect tools
So now at this point, either running the 02_Filament Change macro or just trying to extrude / retract manually results in the extruder running extremely fast.
Any ideas? Anything I should try? I'm thinking perhaps clear pause.g and see what happens then...
It looks like I can enable g-code debugging via USB with M111 P3 S1. Think looking at that during the filament error would be helpful?
-
I haven't spotted the problem so far.
Just FYI there is no real need in your pause file to check the position just do the G91 G1 Z5 and it either will move the 5mm or less. No point in telling the end user about something that cannot be helped.
Will keep looking.
Frederick
-
@fcwilt Thanks for that!
-
@fcwilt @Phaedrux
Just an update, I've found that the issue isn't just when there's a filament error. If I just home the machine, turn on the hot end, and then try to retract to change the filament, I often have the same issue: the extruder races to try to extract. Hitting retract again and it usually runs at the normal rate.When this print is done, I'll see if this happens from a cold start so it can be duplicated.
-
Sounds like the same issue as here: https://forum.duet3d.com/topic/26496/firmware-3-4b7-firmware-retraction-bug/41?_=1655723442382
I'm still battling this at random times during macro use. Once it happens inside a macro, even manual extrusion doesn't work correctly anymore.
Sometimes a toolchange fixes it (not always though), but it have never seen this during an actual print. -
@diamondback Looks like it! Thanks for making the connection. Yeah, I've never seen it during a real print, either. But yesterday I had booted the machine and I was changing the filament without using any macros and it did it then, too. When I get back home tonight I'll see if I can reproduce it without macros.