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

    Help understanding the "new" reusrrect.g

    Scheduled Pinned Locked Moved
    Tuning and tweaking
    2
    7
    165
    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.
    • modlundefined
      modl
      last edited by

      Hi everyone

      A one week print failed 80% in because of a "G2 out of bound" error. i'm not sure how it happened considering a whole support has been printing at the exact same spot for the whole duration of the print. Anyway, it didn't generate a resurrect.g but i have safeguards and can pinpoint accurately enough where the print failed (layer number global, and last reported position registered by daemon.g). So i will try to resurrect this print by editing the resurrect.g template which i did in the past when I was on 3.4.6. I'll add an M564 S0 and see where it goes. But things have changed a lot with 3.5.x and I'm seeing a whole lot of gcode command sequences that seem to be repeating and some that are more CNC oriented.
      -My machine is a rather simple corexy dual extruder 3D printer.
      -->What parts could I get rid of after resurrect-prologue have been called ?
      -->What are the X and Y arguments for in the first M26 call ? couldn't find them in the reprap gcode reference.
      --> M204 P50000 T50000 is extremely far from my settings in config.g (see at the end of the post for reference)

      Thank you very much in advance
      Best

      ; Resume printing file "0:/gcodes/PIECE 1/PIECE 1 SLICED bed1.gcode" after print paused at 2025-02-17 21:14
      M140 P0 S50.0
      G29 S1
      M568 P0  A2 S215 R215
      M568 P1  A1 S215 R215
      G21
      M98 P"resurrect-prologue.g" X201.622 Y71.138 Z130.470
      M290 R0 X0.000 Y0.000 Z-0.080
      ; Workplace coordinates
      G10 L2 P1 X0.00 Y0.00 Z0.00
      G10 L2 P2 X0.00 Y0.00 Z0.00
      G10 L2 P3 X0.00 Y0.00 Z0.00
      G10 L2 P4 X0.00 Y0.00 Z0.00
      G10 L2 P5 X0.00 Y0.00 Z0.00
      G10 L2 P6 X0.00 Y0.00 Z0.00
      G10 L2 P7 X0.00 Y0.00 Z0.00
      G10 L2 P8 X0.00 Y0.00 Z0.00
      G10 L2 P9 X0.00 Y0.00 Z0.00
      M596 P0
      M486 S-1
      T0
      G54
      M106 S0.00
      M116
      G92 E0.00000
      M83
      G94
      G17
      M23 "0:/gcodes/PIECE 1/PIECE 1 SLICED bed1.gcode"
      M26 S407214168 P0.688 X190.489 Y68.203
      G90
      G0 F6000 X191.622 Y71.138
      G1 F3600.0 P0
      M204 P50000.0 T50000.0
      G21
      M596 P1
      M486 S-1
      G54
      M106 S0.00
      M116
      G92 E0.00000
      M83
      G94
      G17
      M26 S407214168
      G1 F3600.0 P0
      M204 P50000.0 T50000.0
      G21
      M596 P0
      M106 P1 S0.00
      M106 P3 S0.10
      M106 P4 S0.00
      M106 P5 S0.10
      M106 P6 S0.00
      M302 P0
      M24
      
      ; Configuration file for Duet 3 MB 6HC (firmware version 3.3)
      ; executed by the firmware on start-up
      ;
      ; generated by RepRapFirmware Configuration Tool v3.3.15 on Mon Jan 09 2023 14:50:13 GMT+0100 (Central European Standard Time)
      
      ; General preferences
      G4 S1				; give time for expansion board communication
      G90                                                ; absolute coordinates...
      M83                                                ; ...but relative extruder moves
      M550 P"CBMP"                                       ; set printer name
      
      ; Network
      M552 P192.168.1.14 S1                                        ; enable http, disable Telnet
      M586 P1 S1														; enable ftp
      
      if !exists(global.oneYearPrint)
      	global oneYearPrint = 0
      else
      	set global.oneYearPrint = 0
      
      ; for Z, define global probing speed to make it uniform across Z homing macros and bed mesh probing, for better accuracy. I recommend something around 100
      if !exists(global.probingSpeed)
      	global probingSpeed = 90
      else
      	set global.probingSpeed = 90
      	
      ; for X and Y, defines fine homing speed global
      if !exists(global.homingSpeed)
      	global homingSpeed = 360
      else
      	set global.homingSpeed = 360
      
      ; Drives
      M569 P0.2 S0
      M569 P0.3 S1                                     ; physical drive 0.2 goes forwards
      M569 P0.4 S1                                       ; physical drive 0.3 goes forwards
      M569 P0.5 S0                                       ; physical drive 0.5 goes backwards
      M569 P0.0 S1                                       ; physical drive 0.0 goes forwards
      M569 P0.1 S0
      M569 P123.0 S1                                      ; physical drive 0.1 goes forwards
      M584 X123.0 Y0.3:0.4 Z0.2:0.5 E0.0:0.1                       ; set drive mapping
      M350 X16 Y16:16 Z16:16 E16:16 I1                         ; configure microstepping with interpolation
      M92 X64.32 Y64.00 Z1600.00 E415.00:415.00          ; set steps per mm    X modified from 64 to 64.32 after measurements with precision tool
      M566 X1200 Y1200 Z300 E1500:1500         		   ; set maximum instantaneous speed changes (mm/min)
      M203 X18000.00 Y18000.00 Z330.00 E3600.00:3600.00    ; set maximum speeds (mm/min)
      M201 X1500 Y1500 Z240 E6000:6000         		   ; set accelerations (mm/s^2)
      M906 X2400 Y2400 Z2300:2300 E600:600 I30                ; set motor currents (mA) and motor idle factor in per cent
      M84 S30                                            ; Set idle timeout
      
      ; Axis Limits
      M208 X0 Y0 Z0 S1                                   ; set axis minima
      M208 X357 Y990 Z354.67 S0                             ; set axis maxima
      
      ; Endstops
      M574 X1 S1 P"io0.in"                               ; configure switch-type (e.g. microswitch) endstop for low end on X via pin io0.in
      M574 Y1 S1 P"io1.in+io3.in"                               ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io1.in
      M574 Z2 S1 P"io2.in"
      
      ; Z-Probe
      M950 S0 C"io4.out"                                 ; create servo pin 0 for BLTouch
      M558 P9 C"io4.in" H5 F{global.probingSpeed} T12000 R0.3                   ; set Z probe type to bltouch and the dive height + speeds
      G31 P25 X0 Y22.7 Z4.55								; set Z probe trigger value, offset and trigger height
      M556 S50 X0 Y0 Z0                                  ; set orthogonal axis compensation parameters
      M557 X15:335 Y25:985 S40                           ; define mesh grid
      ;M557 X20:320 Y25:925 S300							; rough mesh grid
      M376 H100
      
      ; Heaters
      M308 S0 P"temp2" Y"thermistor" T100000 B4138       ; configure sensor 0 as thermistor on pin temp2
      M950 H0 C"out0" T0                                 ; create bed heater output on out0 and map it to sensor 0
      M307 H0 R0.591 K0.132:0.000 D6.17 E1.35 S1.00 B0   ; enable 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"temp0" Y"thermistor" T100000 B4138       ; configure sensor 1 as thermistor on pin temp0
      M950 H1 C"out1" T1                                 ; create nozzle heater output on out1 and map it to sensor 1
      M307 H1 R3.233 K0.345:0.000 D5.82 E1.35 S1.00 B0 V23.8                                   ; disable bang-bang mode for heater  and set PWM limit
      M143 H1 S280                                       ; set temperature limit for heater 1 to 280C
      M308 S2 P"temp1" Y"thermistor" T100000 B4138       ; configure sensor 2 as thermistor on pin temp1
      M950 H2 C"out2" T2                                 ; create nozzle heater output on out2 and map it to sensor 2
      M307 H2 R3.233 K0.345:0.000 D5.82 E1.35 S1.00 B0 V23.8
      M143 H2 S280                                       ; set temperature limit for heater 2 to 280C
      
      ; Fans
      M950 F0 C"out3" Q0                                 ; create fan 0 on pin out9 and set its frequency
      M106 P0 C"Pompe" S1 H1:2 T45                                 ; set fan 0 value. Thermostatic control is turned on
      M950 F1 C"out7" Q0 
      M106 P1 C"Tools Fan" S0 X0.7 H-1 
      M106 P1 F0
      ;M950 F2 C"out8" Q0 
      ;M106 P2 C"T2 fan" S0 H-1 
      ;M106 P2 F0
      
      ;LED strip
      M950 F3 C"0.out4" Q500
      M106 P3 C"White" S0.05
      M950 F4 C"0.out5" Q500
      M106 P4 C"Red" S0
      M950 F5 C"0.out6" Q500
      M106 P5 C"Green" S0.05
      M950 F6 C"0.out9" Q500
      M106 P6 C"Blue" S0
      
      ; Tools                                  ; set mixing ratios for tool 2
      M563 P0 S"Right Extruder" D0 H1 F1 ; define tool 0
      G10 P0 X-10 Y0 Z0 ; set tool 0 axis offsets
      G10 P0 R0 S0      ; set initial tool 0 active and standby temperatures to 0C
      M563 P1 S"Left Extruder" D1 H2 F1  ; define tool 1
      G10 P1 X10 Y0 Z0  ; set tool 1 axis offsets
      G10 P1 R0 S0      ; set initial tool 1 active and standby temperatures to 0C
      M572 D1 S0.05    ; configure pressure advance
      M572 D0 S0.05
      
      ;filament run-out sensor
      M591 D0 P4 C"io6.in" L25.8 S1 E5
      M591 D1 P4 C"io5.in" L25.59 S1 E5
      
      
      ; Z screws positions for Z motors adjustments
      M671 X180:180 Y-180:50
      
      ; Custom settings are not defined
      ;M955 P0 C"spi.cs3+spi.cs2" I50 S1344 R10
      
      ; Miscellaneous
      M911 S22 R23 P"M913 X0 Y0 Z0 M98" "; set voltage thresholds and actions to run on power loss
      
      M929 P"eventlog.txt" S1  ; start logging to file eventlog.txt
      
      M501
      
      
      dc42undefined 1 Reply Last reply Reply Quote 0
      • dc42undefined
        dc42 administrators @modl
        last edited by

        @modl said in Help understanding the "new" reusrrect.g:

        -->What parts could I get rid of after resurrect-prologue have been called ?

        That's hard to say, it depends on what needs to be restored, which depends on your configuration.

        -->What are the X and Y arguments for in the first M26 call ? couldn't find them in the reprap gcode reference.

        If a G2 or G3 move was interrupted then they are the coordinates of the centre of the arc that was being printed (e.g. X and Y if the XY plane was selected). In this case there will also be a P parameter, which is the fraction of the arc that was completed.

        --> M204 P50000 T50000 is extremely far from my settings in config.g (see at the end of the post for reference)

        Those are default values. They are deliberately set higher than typical values set in M203 so that the M203 limits will be used unless the slicer emits M204 commands in the GCode file.

        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

        modlundefined 1 Reply Last reply Reply Quote 0
        • modlundefined
          modl @dc42
          last edited by modl

          @dc42 Thank you for your reply !
          I guess i could either delete or ignore M204
          There is indeed a P parameter after the first M26 call, that makes sense. But the second call only gets an S parameter
          My question is , why is this sequence repeated twice with slightly different parameters?

          M83
          G94
          G17 
          M26 xxxxxx
          G1 P0
          M204
          G21 
          M596
          

          I guess there is no command i need to delete as they won't get in the way or are default from config.g (M596 M486 G54 G21 G94 G17) but the repetition of G1 instructions to the same point seems odd

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

            @modl good question that looks redundant to me it's once for each motion system.

            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

            modlundefined 1 Reply Last reply Reply Quote 0
            • modlundefined
              modl @dc42
              last edited by modl

              @dc42 OK I think i understand. It looks like it's not relevant for my setup as the motion system is the same for both extruders as they share the same tool head ? But I don't necessarily need to remove one sequence or the other as they are, at worst, harmless ?

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

                @modl you can remove the sequence that starts M596 P1 if you are not using the second motion system.

                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

                modlundefined 1 Reply Last reply Reply Quote 0
                • modlundefined
                  modl @dc42
                  last edited by

                  @dc42 I ended up removing M596 and M486 instructions indeed, they were causing issues in my case, where i was restarting the print with T1 instead of T0. Thank you for your replies

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