Firmware Retraction causing odd pauses



  • I am trying to move away from S3D (no development) and Cura (slow, unstable) into Prusa Slicer.

    While tuning my newest printer with Duet Wifi, I have noticed that there is a definite pause when the printer is performing a firmware retract. I have no such pauses with retracts baked into the gcode using slicer parameters. I can't seem to find any information on this on the forum, but perhaps I am using the incorrect search terms.

    Please find M122 output, config.g, and gcode below as well as a video showing the issue. The first pause happens at ~41 seconds.

    https://youtu.be/SvlKPNYZXGg

    M122:

    8/18/2020, 6:27:40 PM 	M122
    === Diagnostics ===
    RepRapFirmware for Duet 2 WiFi/Ethernet version 3.1.1 running on Duet WiFi 1.02 or later
    Board ID: 0JD0M-9K662-MG5TD-6J9D6-3SJ6S-1ALLX
    Used output buffers: 3 of 24 (16 max)
    === RTOS ===
    Static ram: 27980
    Dynamic ram: 94300 of which 44 recycled
    Exception stack ram used: 536
    Never used ram: 8212
    Tasks: NETWORK(ready,708) HEAT(blocked,1224) MAIN(running,1552) IDLE(ready,80)
    Owned mutexes: WiFi(NETWORK)
    === Platform ===
    Last reset 00:33:28 ago, cause: software
    Last software reset time unknown, reason: User, spinning module GCodes, available RAM 8420 bytes (slot 2)
    Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x04417000 BFAR 0xe000ed38 SP 0xffffffff Task MAIN
    Error status: 8
    MCU temperature: min 40.5, current 42.2, max 42.5
    Supply voltage: min 23.6, current 23.8, max 24.2, under voltage events: 0, over voltage events: 0, power good: yes
    Driver 0: ok, SG min/max 0/1023
    Driver 1: ok, SG min/max 0/225
    Driver 2: standstill, SG min/max not available
    Driver 3: ok, SG min/max 0/299
    Driver 4: standstill, SG min/max not available
    Date/time: 2020-08-18 18:27:39
    Cache data hit count 3373496550
    Slowest loop: 29.67ms; fastest: 0.13ms
    I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0
    === Storage ===
    Free file entries: 9
    SD card 0 detected, interface speed: 20.0MBytes/sec
    SD card longest read time 11.1ms, write time 4.5ms, max retries 0
    === Move ===
    Hiccups: 0(0), FreeDm: 156, MinFreeDm: 128, MaxWait: 0ms
    Bed compensation in use: mesh, comp offset 0.000
    === MainDDARing ===
    Scheduled moves: 6147, completed moves: 6131, StepErrors: 0, LaErrors: 0, Underruns: 0, 0  CDDA state: 3
    === AuxDDARing ===
    Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0  CDDA state: -1
    === Heat ===
    Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1 -1 -1
    Heater 0 is on, I-accum = 0.2
    Heater 1 is on, I-accum = 0.5
    === GCodes ===
    Segments left: 1
    Movement lock held by null
    HTTP is idle in state(s) 0
    Telnet is idle in state(s) 0
    File is doing "G1 X142.985 Y144.775 E0.01617" in state(s) 0
    USB is idle in state(s) 0
    Aux is idle in state(s) 0
    Trigger is idle in state(s) 0
    Queue is idle in state(s) 0
    Daemon is idle in state(s) 0
    Autopause is idle in state(s) 0
    Code queue is empty.
    === Network ===
    Slowest loop: 199.66ms; fastest: 0.09ms
    Responder states: HTTP(2) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions
    HTTP sessions: 1 of 8
    - WiFi -
    Network state is active
    WiFi module is connected to access point 
    Failed messages: pending 0, notready 0, noresp 1
    WiFi firmware version 1.23
    WiFi MAC address 48:3f:da:4e:c4:bc
    WiFi Vcc 3.37, reset reason Unknown
    WiFi flash size 4194304, free heap 21912
    WiFi IP address 10.10.30.28
    WiFi signal strength -48dBm, reconnections 0, sleep mode modem
    Socket states: 4 0 0 0 0 0 0 0
    

    Config.g:

    ; Drives
    M569 P0 S0                                     ; physical drive 0 (X) goes backwards 
    M569 P1 S0                                     ; physical drive 1 (Y) goes backwards 
    M569 P2 S0                                     ; physical drive 2 (Z) goes backwards 
    M569 P3 S0                                     ; physical drive 3 (E0) goes backwards 
    M569 P4 S0                                     ; physical drive 4 (E1) goes backwards 
    M584 X0 Y1 Z2:4 E3                             ; set drive mapping for dual Z
    M350 X16 Y16 Z16:16 E16 I1                     ; configure microstepping with interpolation
    M906 X1275 Y1275 Z1150:1150 E1000 I30          ; set motor currents (mA) and motor idle factor in per cent
    M92 X80 Y80 Z400:400 E413                      ; set steps per mm
    M84 S30                                        ; Set idle timeout
    
    ; Speeds
    M566 X900 Y900 Z600:600 E120                   ; set maximum instantaneous speed changes (mm/min)
    M203 X18000 Y18000 Z600:600 E7200              ; set maximum speeds (mm/min)
    M201 X3500 Y3500 Z120:120 E10000               ; set accelerations (mm/s^2)
    M204 P2500 T3500                               ; Set printing and travel accelerations (mm/s^2)
    
    ; Axis Limits
    M208 X0 Y0 Z-5 S1                               ; set axis minima
    M208 X300 Y300 Z325 S0                         ; set axis maxima
    
    ; Endstops
    M574 X1 S1 P"!xstop"                           ; configure active-low endstop for low end on X via pin xstop
    M574 Y2 S1 P"!ystop"                           ; configure active-low endstop for low end on Y via pin ystop
    M574 Z1 S2                                     ; configure Z-probe endstop for low end on Z
    
    ; Z-Probe
    M950 S0 C"exp.heater3"                              ; create servo pin 0 for BLTouch
    M558 P9 C"^zprobe.in" H5 F100 T4000 A10 R0.5 S0.020 ; set Z probe type to bltouch and the dive height + speeds
    G31 P500 X0 Y-42.8 Z.6                              ; set Z probe trigger value, offset and trigger height
    M671 X-20:320 Y150:150 S5.0                         ; Define Z leadscrews on either side
    M557 X0:300 Y0:257.2 S50                            ; define mesh grid
    
    ; Sensors
    M308 S3 P"mcu-temp" Y"mcu-temp" A"MCU"         ; Create sensor for MCU temp
    M308 S4 P"drivers" Y"drivers" A"TMC"           ; Create senhsor for drivers
    
    ; Heaters
    M308 S0 P"bedtemp" Y"thermistor" T100000 B4092 ; configure sensor 0 as thermistor on pin bedtemp
    M950 H0 C"bedheat" T0                          ; create bed heater output on bedheat and map it to sensor 0
    M307 H0 B0 S1.00                               ; disable bang-bang mode for the bed heater and set PWM limit
    M140 H0                                        ; map heated bed to heater 0
    M143 H0 S120                                   ; set temperature limit for heater 0 to 120C
    M308 S1 P"e0temp" Y"thermistor" T100000 B4092  ; 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
    M307 H1 B0 S1.00                               ; disable bang-bang mode for heater  and set PWM limit
    
    ; Fans
    M950 F0 C"fan0" Q500                           ; create fan 0 on pin fan0 and set its frequency
    M106 P0 S0 H-1                                 ; set fan 0 value. Thermostatic control is turned off
    M950 F1 C"fan1" Q500                           ; create fan 1 on pin fan1 and set its frequency
    M106 P1 S1 H1 T45                              ; set fan 1 value. Thermostatic control is turned on
    
    ; Virtual Fans used as Variables
    M950 F2 C"duex.fan8"                           ; virtual fan on duex fan 8 pin
    M106 P2 S0 C"vFan Homeall"                     ; set name for macro use
    
    ; Tools
    M563 P0 S"Dragon" D0 H1 F0                     ; define tool 0
    G10 P0 X0 Y0 Z0                                ; set tool 0 axis offsets
    G10 P0 R0 S0                                   ; set initial tool 0 active and standby temperatures to 0C
    
    ; Firmware Retraction
    M207 T0 S5.55 R0 F2400 T2400 Z0                ; firmware retract G10/G11 5.55mm at 40mm/s no z-hop
    
    ; Custom settings are not defined
    
    ; Miscellaneous
    T0                                             ; select first tool
    M575 P1 S1 B57600
    
    M501                                           ; Load Config Overrides
    

    gcode file is available here. I can't seem for the life of me to figure out why this is pausing. The slowness makes the retraction distance meaningless since the hotend has time to dribble filament anyway.

    Any assistance is greatly appreciated.



  • The T word of M207 refers to the unretract speed, not the tool. You have set your unretract speed to 0 mm/min, then again to T2400. I do not know how problematic that is, but it's not correct. You should put P0 to refer to tool 0.

    https://duet3d.dozuki.com/Wiki/Gcode#Section_M207_Set_retract_length



  • You're a wizard. That solved everything. It is now flying as I would expect it to!

    Thank you so much for the second set of eyes.


Log in to reply