Firmware 3.4b7 - firmware retraction bug
-
@diamondback the G91 and G90 commands in that macro will have no effect. You should replace G91 in that macro by M83 and remove the G90 line. That will probably fix the issue for you.
-
@dc42 I'll test with the attached firmware and let you know how it is
-
@dc42 Unfortunately, the issue is still persist with the 3.4b7+3 firmware.
-
@dc42 I was be able to make the problem go away by changing acceleration/jerk/max. speed of the extruder. The same print file running with old config.g and new config.g show no sign of unwanted rapid extrusion.
The test ran using 3.4b7+7. This might help narrow down the issue.
The jerk was reduced from 1000 to 300mm/min (5mm/s)
Max speed was reduced from 9000 to 3600mm/min (60mm/s)
Acceleration was reduced from 10000 to 5000 mm/s2
Since the above parameter was reduced, I've reduced the extruder motor current from 800mA to 600mA as well. -
@dc42 said in Firmware 3.4b7 - firmware retraction bug:
@diamondback the G91 and G90 commands in that macro will have no effect. You should replace G91 in that macro by M83 and remove the G90 line. That will probably fix the issue for you.
Hah, my bad, yea those G90/91 are leftovers, the printer is running in relative extrusion mode all the time anyway.
I triggered the issue with some manual extrusion yesterday, simply by using the console...G1 E100 F300
Immediately sending that very same command again worked fine and as expected.
-
@diamondback Hi, do you mind sharing your jerk/acceleration/max speed for extruder here as well?
The problem seems to go away when I reduced the value of jerk/acceleration of extruder. I would like to know how your machine is setup for these values.
The problem is definitely there, I'm just setup the config to avoid this specific firmware issue.
-
@natthapol-vanasrivilai
;=================== Extruder ====================== M92 E408:408:408:408 ; set steps per mm M350 E16:16:16:16 I1 ; configure microstepping M566 E500:500:500:500 ; set maximum instantaneous speed changes (mm/min) M203 E15000:15000:15000:15000 ; set maximum speeds (mm/min) M201 E3000:3000:3000:3000 ; set accelerations (mm/s^2) ;====================================================
These are 4 identical Bondtech LGX extruders. Are you sure the issue is actually gone or just hidden because you reduced the max speed a lot?
-
@diamondback The issue is still there, but I have to find the way to make the machine work reliable again around this issue. With the rapid retracts/extrusions, sometime I get extruder jam on softer filaments (HIPS/ABS/Some PLA variants).
-
@natthapol-vanasrivilai please let me know if you find a good way to reproduce the difference in behaviour between 3.3 and the latest 3.4beta version (with input shaping disabled in both cases), because I can't detect any difference.
-
@dc42 Hi, It's hard for me to make the issue reproducible as well.
What you could try is to set the M203 extruder max speed to some really high value (50,000mm/min) or some value that the extruder will definitely stalled upon rapid movement. Also up the jerk/acceleration values to allow the extruder to stall on unwanted rapid movement as well.
Make the retraction length really long (10-20mm) but only set M207 retract at normal speed (35-60mm/s).
Slice and run the retraction tower or anything similar that will perform G10/G11 a number of times. The problem is that the issue is inconsistent, with the same Gcode file, extruders will sometime randomly do rapid extrusions/retractions. The behavior sometime happen with just a manual G1 E** input in the console as well.
** I ended up rolled back to v3.3 to get the normal behavior back.
-
This seems to have gotten worse for me with 3.4 RC1. Previously I only noticed it during filament unload, now it also happens during loading. Which is unfortunate since I run a fairly lengthy purge script at that point...
ALL of the extrusion moves during the load macro are massively sped up (making the loading fail in turn since it doesn't actually manage to extrude any meaningful amount of filament) -
@diamondback do you have a reliable way to reproduce this issue?
-
@dc42 Unfortunately still no I just hope that at some point the puzzle pieces fit together and you have an idea what might cause it...
-
-
@dc42 I just had it happen two times (with two different tools) for the first time during a longer move when changing filaments (it was a long retract in the unload macro). Interestingly enough, it spawned these errors:
Driver 4 warning: phase A may be disconnected, phase B may be disconnected
and then with a different tool a minute or so later:
Driver 5 warning: phase A may be disconnected, phase B may be disconnected
Both times the stepper did actually turn, just way too fast. The extruders weren't gripping the filament at this point (LGX) so they had basically zero resistance and therefore didn't stall like the other times.
Maybe that rings any bells?
PS: Using 3.4.2-rc1 in standalone on Duet 2 + Duex 5
-
The errors are likely just from back emf caused by the motors spinning too fast.
Still no way to trigger it at will though?
-
@phaedrux said in Firmware 3.4b7 - firmware retraction bug:
The errors are likely just from back emf caused by the motors spinning too fast.
Still no way to trigger it at will though?
Is that something i need to worry about? Can it damage the drivers or the board if it does that?
And no, unfortunately it still seems absoluetly random, in the last days I'm printing a lot of filament samples/swatches with 3 tools, so lots of filament loading/unloading in DWC (which is still the only place where this ever happens to me) and there appears to be zero pattern to it...
I'm having it happen roughly in like 1 out of 5 cases or so, if I can help with some custom firmware with different logging or something, it would probably be fairly easy for me to get it to happen.
-
@Diamondback No it shouldn't damage anything. I think what happens is that the back emf equals the input voltage and the driver basically detects that as a possible disconnect.
Have you shared your full config.g yet?
-
@phaedrux said in Firmware 3.4b7 - firmware retraction bug:
@Diamondback No it shouldn't damage anything. I think what happens is that the back emf equals the input voltage and the driver basically detects that as a possible disconnect.
Have you shared your full config.g yet?
Here you go:
; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v2.1.8 on Sun May 10 2020 15:03:19 GMT+0200 (Mitteleuropäische Sommerzeit) ; General preferences ;M929 S3 ;enable debug logging M575 P1 S1 B57600 ;Enable PanelDue Port G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"V-Core Pro" ; set printer name M669 K1 ; select CoreXY mode ; Network M552 S1 ; enable network ; Drives M569 P0 S0 ; stepper X/Y M569 P1 S0 ; stepper X/Y M569 P2 S1 ; stepper Coupler M569 P3 S0 ; stepper E1 M569 P4 S0 ; stepper E2 M569 P5 S0 ; stepper E3 M569 P6 S0 ; stepper E4 M569 P7 S0 ; stepper Z1 M569 P8 S0 ; stepper Z2 M569 P9 S0 ; stepper Z3 M584 X0 Y1 C2 Z7:8:9 ; set drive mapping (motion system) M584 E3:4:5:6 ; set drive mapping (extruders) ; Axis Limits if !exists(global.hasRunInit) global minY = -266 global maxY = 115 M208 X-148:160 Y{global.minY,global.maxY} ; set axis minima & maxima RRF 3.4 M208 C0:250 Z-2:270 ; set axis minima & maxima M671 X-203:-12:216 Y-179:222:-179 S30 ; set Z leadscrew positions M92 X80.00 Y80.00 C200.00 Z400.00 ; set steps per mm M350 X16 Y16 I1 ; configure microstepping with interpolation M350 C16 Z16 I1 ; configure microstepping with interpolation M566 X600 Y600 C2 Z70 ; set maximum instantaneous speed changes (mm/min) M203 X30000 Y30000 C10000 Z3000 ; set maximum speeds (mm/min) M201 X5000 Y5000 C500 Z500 ; set accelerations (mm/s^2) was: 2k M204 P600 T5000 M906 X2100 Y2100 I50 ; set motor currents (mA) and motor idle factor in per cent M906 C500 I30 ; set motor currents (mA) and motor idle factor in per cent M906 Z1800 I50 ; set motor currents (mA) and motor idle factor in per cent M906 E500:500:500:500 I30 ; set motor currents (mA) and motor idle factor in per cent (2x Flex3Drive 2x LGX) M84 S30 ; Set idle timeout ;=================== Extruder ====================== M92 E408:408:408:408 ; set steps per mm M350 E16:16:16:16 I1 ; configure microstepping M566 E500:500:500:500 ; set maximum instantaneous speed changes (mm/min) ; used to be at 1200 M203 E15000:15000:15000:15000 ; set maximum speeds (mm/min) M201 E3000:3000:3000:3000 ; set accelerations (mm/s^2) ;==================================================== ; Endstops M574 X2 S1 P"xstop" ; configure active-high endstop for high end on X via pin xstop M574 Y1 S1 P"ystop" ; configure active-high endstop for high end on Y via pin ystop M574 Z0 ; No Z-Endstop (use as probe instead) ; Z-Probe if !exists(global.hasRunInit) global zProbeSpeedFeed = 250 global zProbeSpeedFeedLevel = 2100 global zProbeSpeedTravel = 20000 global zProbeDiveHeightLevel = 30 global zProbeDiveHeightMesh = 3 global zProbePin = "zstop" global zProbeType = 8 global zProbeTriggerValue = 200 global minXMesh = -146 global maxXMesh = 150 global minYMesh = -150 global maxYMesh = 150 global meshPointSpacing = 30 M558 K0 P{global.zProbeType} C{global.zProbePin} H{global.zProbeDiveHeightMesh} F{global.zProbeSpeedFeed} T{global.zProbeSpeedTravel} ; default Z probe with slow speed ;M558 K0 P8 C"zstop" H3 F250 T20000 ; default Z probe with slow speed ;M558 K1 P8 C"zstop" H30 F2100 T20000 ; high speed Z probe for initial leveling and homing runs M558 K2 P8 C"duex.e5stop" H10 F100 T20000 ; set Z probe type to unfiltered switch and the dive height + speeds G31 K0 X0 Y0 Z0 P200 ;G31 K1 X0 Y0 Z0 P200 G31 K2 X0 Y0 Z0 P200 ;G31 K0 X0 Y0 Z0 P{global.zProbeTriggerValue} ; set Z probe trigger value, offset and trigger height, offsets here are hardcoded in leveling macro as well M557 X{global.minXMesh, global.maxXMesh} Y{global.minYMesh, global.maxYMesh} S{global.meshPointSpacing} ; define mesh grid M376 H30 ; Set bed correction taper ; Heaters M308 S0 P"bedtemp" Y"thermistor" T100000 B3950 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bedheat" T0 Q10 ; create bed heater output on bedheat and map it to sensor 0 M143 H0 S121 ; set temperature limit for heater 0 to 121C M307 H0 B0 R0.676 C345.1 D2.68 S1.00 V24.3 ; Bed PID Tuning M140 H0 ; map heated bed to heater 0 M308 S1 P"e0temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin e0temp M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M143 H1 S301 ; set temperature limit for heater 1 to 301C M308 S2 P"e1temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 2 as thermistor on pin e1temp M950 H2 C"e1heat" T2 ; create nozzle heater output on e1heat and map it to sensor 2 M143 H2 S301 ; set temperature limit for heater 2 to 301C M308 S3 P"duex.e2temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 3 as thermistor on pin e2temp M950 H3 C"duex.e2heat" T3 ; create nozzle heater output on e2heat and map it to sensor 3 M143 H3 S301 ; set temperature limit for heater 3 to 301C M308 S4 P"duex.e3temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 2 as thermistor on pin e3temp M950 H4 C"duex.e3heat" T4 ; create nozzle heater output on e3heat and map it to sensor 2 M143 H4 S301 ; set temperature limit for heater 2 to 301C M302 S190 R190 ;Cold extrusion settings M307 H1 R4.637 K0.673:0.218 D2.31 E1.35 S1.00 B0 V24.2 ; PID Tuning T0 M307 H2 R4.174 K0.555:0.276 D1.96 E1.35 S1.00 B0 V24.2 ; PID Tuning T1 M307 H3 R4.301 K0.536:0.105 D1.89 E1.35 S1.00 B0 V24.2 ; PID Tuning T2 M307 H4 R3.780 K0.576:0.060 D1.57 E1.35 S1.00 B0 V24.2 ; PID Tuning T3 ; Fans M950 F0 C"fan0" ; Hotend Fan Tool 0 M106 P0 S255 L255 H1 T50 C"T0 Hotend" ; Hotend Fan Tool 0 M950 F1 C"duex.fan3" Q50 ; Layer Fan Tool 0 M106 P1 S0 H-1 C"T0" ; Layer Fan Tool 0 M950 F2 C"fan2" ; Hotend Fan Tool 1 M106 P2 S255 L255 H2 T50 C"T1 Hotend" ; Hotend Fan Tool 1 M950 F3 C"duex.fan4" Q50 ; Layer Fan Tool 1 M106 P3 S0 H-1 C"T1" ; Layer Fan Tool 1 M950 F4 C"duex.fan5" ; Hotend Fan Tool 2 M106 P4 S255 L255 H3 T50 C"T2 Hotend" ; Hotend Fan Tool 2 M950 F5 C"duex.fan6" Q50 ; Layer Fan Tool 2 M106 P5 S0 H-1 C"T2" ; Layer Fan Tool 2 M950 F6 C"duex.fan7" ; Hotend Fan Tool 3 M106 P6 S255 L255 H4 T50 C"T3 Hotend" ; Hotend Fan Tool 3 M950 F7 C"duex.fan8" Q50 ; Layer Fan Tool 3 M106 P7 S0 H-1 C"T3" ; Layer Fan Tool 3 ;Static layer fan M950 F8 C"duex.e4heat" Q65535 ; static layer fan M106 P8 S0 H-1 I1 L0.2 C"RSCS" ; Tools M563 P0 D0 H1 F1 ; define tool 0 G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C M563 P1 D1 H2 F3 ; define tool 1 G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C M563 P2 D2 H3 F5 ; define tool 2 G10 P2 R0 S0 ; set initial tool 2 active and standby temperatures to 0C M563 P3 D3 H4 F7 ; define tool 3 G10 P3 R0 S0 ; set initial tool 3 active and standby temperatures to 0C M563 P4 S"Pen" ; define tool 4 (Pen) ;Dock present switches M950 J0 C"e0stop" ; Tool 0 Dock switch M950 J1 C"e1stop" ; Tool 1 Dock switch M950 J2 C"duex.e2stop" ; Tool 2 Dock switch M950 J3 C"duex.e3stop" ; Tool 3 Dock switch ;additional tool related switches ;M950 J4 C"duex.e4stop" ;potential toolhead tool present switch ;M950 J5 C"duex.e5stop" ;Z Offset Calibration switch M950 S0 C"duex.pwm4" ;PebbleWiper Servo M950 P1 C"duex.pwm5" ;Light switch PWM ;Accelerometer M955 P0 C"spi.cs3+spi.cs4" ;M593 P"zvd" F60 ; Inputshaping ; Miscellaneous M98 P"/macros/Misc/Lights/On" M98 P"/sys/config-tools.g" if !exists(global.hasRunInit) global pebbleFeedSpeedDefault = 400 global pebbleFeedSpeed = global.pebbleFeedSpeedDefault global deactivateToolAfterFilamentChange = false global hasRunInit = true
macros/Misc/Lights/On
M42 P1 S230
config-tools.g
if !exists(global.hasRunInit) global tool0NozzleSize = "0.0" global tool1NozzleSize = "0.0" global tool2NozzleSize = "0.0" global tool3NozzleSize = "0.0" global tool0NozzleMaterial = "" global tool1NozzleMaterial = "" global tool2NozzleMaterial = "" global tool3NozzleMaterial = "" M98 P"/sys/config-tools-size.g" M98 P"/sys/config-tools-material.g" ;Z-Offset: If nozzle is too close to bed _reduce_ offset (negative number becomes more negative) ; If nozzle is too far away, _increase_ offset (negative number becomes less negative) ;Tool offsets G10 P0 X-8.400 Y39.180 Z-4.100 G10 P1 X-8.340 Y39.260 Z-4.080 G10 P2 X-7.880 Y38.880 Z-4.310 G10 P3 X-7.810 Y39.040 Z-4.576 G10 P4 X0 Y46.5 Z-20.000 ; set tool 4 axis offsets
config-tools-size.g
(This file is auto generated from my nozzle size selection UI in BtnCmd)set global.tool0NozzleSize = "0.4" set global.tool1NozzleSize = "0.4" set global.tool2NozzleSize = "0.4" set global.tool3NozzleSize = "0.4"
config-tools-materials.g
(This file is auto generated from my nozzle material selection UI in BtnCmd)set global.tool0NozzleMaterial = "brass" set global.tool1NozzleMaterial = "brass" set global.tool2NozzleMaterial = "brass" set global.tool3NozzleMaterial = "nozzlex"
-
@phaedrux said in Firmware 3.4b7 - firmware retraction bug:
@Diamondback No it shouldn't damage anything. I think what happens is that the back emf equals the input voltage and the driver basically detects that as a possible disconnect.
That's correct.
-
@diamondback are you using mesh bed compensation with taper when this issue occurs?