Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    Pressure advance over retraction

    Scheduled Pinned Locked Moved
    General Discussion
    5
    12
    598
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • petriheinoundefined
      petriheino
      last edited by petriheino

      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

      one loop retract test.gcode

      Is this expected behavior or a bug?

      gloomyandyundefined dc42undefined 2 Replies Last reply Reply Quote 0
      • gloomyandyundefined
        gloomyandy @petriheino
        last edited by

        @petriheino Could you provide more details of your printer setup? What control board(s) are you using?Could you post your config.g file.

        petriheinoundefined 1 Reply Last reply Reply Quote 0
        • petriheinoundefined
          petriheino @gloomyandy
          last edited by

          @gloomyandy

          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
          
          gloomyandyundefined 1 Reply Last reply Reply Quote 0
          • gloomyandyundefined
            gloomyandy @petriheino
            last edited by

            @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?

            petriheinoundefined 1 Reply Last reply Reply Quote 0
            • Phaedruxundefined Phaedrux moved this topic from Firmware developers
            • petriheinoundefined
              petriheino @gloomyandy
              last edited by

              @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.

              oliofundefined gnydickundefined 2 Replies Last reply Reply Quote 0
              • oliofundefined
                oliof @petriheino
                last edited by

                @petriheino

                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.

                <>RatRig V-Minion Fly Super5Pro RRF<> V-Core 3.1 IDEX k*****r <> RatRig V-Minion SKR 2 Marlin<>

                petriheinoundefined 1 Reply Last reply Reply Quote 0
                • petriheinoundefined
                  petriheino @oliof
                  last edited by

                  @oliof Thanks for noticing, seems like comment was left out by accident. Will measure tomorrow again.

                  1 Reply Last reply Reply Quote 1
                  • dc42undefined
                    dc42 administrators @petriheino
                    last edited by

                    @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

                    one loop retract test.gcode

                    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.

                    Duet WiFi hardware designer and firmware engineer
                    Please do not ask me for Duet support via PM or email, use the forum
                    http://www.escher3d.com, https://miscsolutions.wordpress.com

                    petriheinoundefined 1 Reply Last reply Reply Quote 0
                    • petriheinoundefined
                      petriheino @dc42
                      last edited by

                      @dc42 Thanks, will look into it more. Could you please explain what would be considered a high value of pressure advance?

                      1 Reply Last reply Reply Quote 0
                      • petriheinoundefined petriheino referenced this topic
                      • gnydickundefined
                        gnydick @petriheino
                        last edited by

                        @petriheino how are you measuring the steps?

                        gloomyandyundefined 1 Reply Last reply Reply Quote 0
                        • gloomyandyundefined
                          gloomyandy @gnydick
                          last edited by

                          @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."

                          gnydickundefined 1 Reply Last reply Reply Quote 0
                          • gnydickundefined
                            gnydick @gloomyandy
                            last edited by

                            @gloomyandy very cool

                            1 Reply Last reply Reply Quote 0
                            • First post
                              Last post
                            Unless otherwise noted, all forum content is licensed under CC-BY-SA