Pressure advance over retraction
-
When pressure advance is enabled, firmware retracts too much and doesn't compensate for this when unretracting.
Test repeated with RRF 3.3 and 3.4.1.
Firmware retraction set to 0.3mm. Steps/mm: 2240. Pressure advance 0.06.
- Retraction: 708 steps (0.316mm) over 34ms
- Un-retraction: 671 steps (0.3mm) over 17ms
- If PA disabled, then retraction and unretraction is the same
Is this expected behavior or a bug?
-
@petriheino Could you provide more details of your printer setup? What control board(s) are you using?Could you post your config.g file.
-
Sure, here goes:
To repeat, only need config.g on sd card and solder wires to estep0 and dir, connect to logic analyser and record the steps while running gcode.
M122
SENDING:M122 === Diagnostics === RepRapFirmware for Duet 2 WiFi/Ethernet version 3.4.1 (2022-06-01 21:05:28) running on Duet WiFi 1.02 or later Board ID: 08DGM-917NK-F23T0-6J1FJ-3SN6N-TD88G Used output buffers: 1 of 26 (3 max) === RTOS === Static ram: 23860 Dynamic ram: 74944 of which 12 recycled Never used RAM 13264, free system stack 184 words Tasks: NETWORK(ready,6.1%,332) HEAT(notifyWait,0.0%,339) Move(notifyWait,0.0%,363) MAIN(running,93.0%,466) IDLE(ready,0.9%,30), total 100.0% Owned mutexes: USB(MAIN) === Platform === Last reset 00:01:43 ago, cause: power up Last software reset at 2021-09-28 11:06, reason: User, GCodes spinning, available RAM 12928, slot 0 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0041f000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 [ERROR] Error status: 0x00 Aux0 errors 0,0,0 Step timer max interval 0 MCU temperature: min 30.8, current 33.2, max 33.6 Supply voltage: min 0.9, current 12.2, max 12.2, under voltage events: 0, over voltage events: 0, power good: yes Heap OK, handles allocated/used 0/0, heap memory allocated/used/recyclable 0/0/0, gc cycles 0 Events: 0 queued, 0 completed Driver 0: standstill, SG min n/a Driver 1: standstill, SG min n/a Driver 2: standstill, SG min n/a Driver 3: standstill, SG min n/a Driver 4: standstill, SG min n/a Driver 5: Driver 6: Driver 7: Driver 8: Driver 9: Driver 10: Driver 11: Date/time: 1970-01-01 00:00:00 Cache data hit count 4177985741 Slowest loop: 4.86ms; fastest: 0.13ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Storage === Free file entries: 10 SD card 0 detected, interface speed: 20.0MBytes/sec SD card longest read time 3.2ms, write time 0.0ms, max retries 0 === Move === DMs created 83, segments created 0, maxWait 0ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters -1 -1 -1 -1, chamber heaters -1 -1 -1 -1, ordering errs 0 === GCodes === Segments left: 0 Movement lock held by null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 0 USB is ready with "M122" 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 LCD 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: 1.41ms; fastest: 0.00ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions HTTP sessions: 0 of 8 - WiFi - Network state is active WiFi module is idle Failed messages: pending 0, notready 0, noresp 0 WiFi firmware version 1.23 WiFi MAC address 84:0d:8e:b2:f4:67 WiFi Vcc 3.39, reset reason Turned on by main processor WiFi flash size 4194304, free heap 27600 Clock register ffffffff Socket states: 0 0 0 0 0 0 0 0
Config.g
; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Mon Oct 19 2020 17:24:09 GMT+0300 (Eastern European Summer Time) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Duet 2 Wifi" ; set printer name, Serial ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Drives M569 P0 S0 ; physical drive 0 goes forwards M569 P1 S0 ; physical drive 1 goes forwards M569 P2 S1 ; physical drive 2 goes forwards M569 P3 S0 ; physical drive 3 goes forwards M584 X0 Y1 Z2 E3 ; set drive mapping M350 X16 Y16 Z16 I1 ; Microstepping X Y Z M350 E256 I0 ; Microstepping E M92 X80.00 Y80.00 Z400.0 E2240.000 ; set steps per mm M906 X2000 Y2000 Z1400 E1600 I30 ; Currents and idle factor M84 S30 ; Idle timeout ;Kinematics M566 X300 Y300 Z600 E3000 ;instantaneous speed change / Jerk (mm/min) M566 P1 ;Jerk policy M203 X6000 Y6000 Z3000 E6000 ;max speeds (mm/min) M201 X2000 Y2000 Z180 E9000 ;accelerations (mm/s^2) M204 P600 T600 ;Print/Travel Accel ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X250 Y165 Z210 S0 ; set axis maxima ; Endstops ;M574 X1 Y1 Z2 S1 ; set active high endstops M574 X1 S1 P"xstop" ; configure active-high endstop for low end on X via pin null M574 Y1 S1 P"ystop" ; configure active-high endstop for low end on Y via pin null M574 Z2 S1 P"zstop" ; configure Z-probe endstop for high end on Z ;M574 Z1 S2 ; Z-Probe; M950 S0 C"exp.heater3" ; create servo pin 0 for BLTouch M558 P9 C"^exp.e2stop" H5 F120 T1800 ;Bltouch setup G31 P25 X0 Y40 Z1.95 ;Higher Value M557 X10:240 Y40:140 P6:6 ; define mesh grid ; Heaters M308 S1 P"e0temp" Y"thermistor" T100000 B4900 C1.09016e-7 ; 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 ;M143 H1 S300 ; set temperature limit for heater 1 to 300C ; Fans M950 F0 C"exp.heater4" Q250 ;12V Fan Extension - Print cooling fan M106 P0 S0 H-1 ; Set fan 0 value. M950 F1 C"exp.heater5" Q250 ;12V Fan Extension - Heatsink fan M106 P1 S255 H-1 ; Set fan 1 value. M950 F2 C"fan2" Q250 ; 12V Fan Extension - LED 24V M106 P2 S255 H-1 ; Set fan 2 value. ; Tools M563 P0 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 ; Custom settings are not defined ; Miscellaneous M575 P1 S1 B57600 ; enable support for PanelDue M501
-
@petriheino Thanks, since you have things setup to measure what is happening, I wonder if the same problem occurs if you use slicer based retraction?
-
-
@gloomyandy thanks for the request, please find below measurement results by slicer based retractions (G1 E0.3) commands.
Test file: one loop retract test e moves.gcode
After power on, 1st run:
- Retraction: 5188 steps over 153ms
- Un-retraction: 671 steps over 17ms
2nd run:
- Retraction: 708 steps over 34ms
- Un-retraction: 671 steps over 17ms
3rd run:
- Retraction: 708 steps over 34ms
- Un-retraction: 671 steps over 17ms
Test repeated 2 times from power on.
-
so your file has
;M118 P1 S"Retract start" G10 G1 E-0.3000 F1200 ;M118 P1 S"Retract done" G1 X163.429 Y77.452 F3000 ;M118 P1 S"Un-Retract start" ;G11 G1 E0.3000 F1200 ;M118 P1 S"Un-Retract done"
Which means it does firmware retract and a direct G1 E-0.3 retract command, but no G11 (firmware unretract) and a manual G1 E0.3 retract.
Which of the three runs is that? Seems wrong to me.
-
@oliof Thanks for noticing, seems like comment was left out by accident. Will measure tomorrow again.
-
@petriheino said in Pressure advance over retraction:
When pressure advance is enabled, firmware retracts too much and doesn't compensate for this when unretracting.
Test repeated with RRF 3.3 and 3.4.1.
Firmware retraction set to 0.3mm. Steps/mm: 2240. Pressure advance 0.06.
- Retraction: 708 steps (0.316mm) over 34ms
- Un-retraction: 671 steps (0.3mm) over 17ms
- If PA disabled, then retraction and unretraction is the same
Is this expected behavior or a bug?
That's expected behaviour when high values of pressure advance are used. The extra retraction happens during the final phase of a printing move that ends with zero or very low extrusion speed. It counters the additional extrusion that occurs at the start of a printing move that begins with zero or very low extrusion speed.
-
@dc42 Thanks, will look into it more. Could you please explain what would be considered a high value of pressure advance?
-
-
@petriheino how are you measuring the steps?
-
@gnydick See post 3: "To repeat, only need config.g on sd card and solder wires to estep0 and dir, connect to logic analyser and record the steps while running gcode."
-
@gloomyandy very cool