Manual mid-print Filament-Change with single extruder

Hello,

I have a single extruder printer and I want to change the filament during a print.
It is a Duet-3D printer with Reprap-FW and Reptier Server on a Raspi.

I have sliced a few G-codes with Prusa-Slicer and added various commands to the "Filalent End G-Code"-section in the "filament settings".
The commands appear in the G-code in the right places, but RepRap-FW and Repetier-Server ignore them completely. It simply continues print withf the other filament and does not make any effort to take a break.
I have tried the following commands: M25, M226, M600 (both: alone and all at once)

RepRap-FW-Macros:

; pause.g
; called when a print from SD card is paused
;
; generated by RepRapFirmware Configuration Tool v3.3.16 on Mon May 29 2023 15:51:46 GMT+0200 (Mitteleuropäische Sommerzeit)
M83            ; relative extruder moves
G1 E-3 F3600  ; retract 3mm of filament
G91            ; relative positioning
G1 Z50 F360     ; lift Z by 50mm
G90            ; absolute positioning
; resume.g
; called before a print from SD card is resumed
;
; generated by RepRapFirmware Configuration Tool v3.3.16 on Mon May 29 2023 15:51:46 GMT+0200 (Mitteleuropäische Sommerzeit)
G1 R1 X0 Y0 Z5 F6000 ; go to 5mm above position of the last print move
G1 R1 X0 Y0 Z0       ; go back to the last print move
M83                  ; relative extruder moves
;G1 E3 F3600         ; extrude 3mm of filament
;filament-change.g
M25

Repetier-Server Macros:

; Sample pause code - modify to your needs!
M83 ; relative extrusion mode
G1 E-3 F1800 ; Retract a bit to reduce oozing
G91 ;Set to Relative Positioning
@if {{state.pos_z + 5 < config.move_z_max }}
G1 Z5 F600
@endif
G90 ;Set to Absolute Positioning
G1 X0 Y0 F9000
;resume code

Example of an gcode section with intended filament-change

[....]
G1 X1.685 Y4.112 E2.43328 G1 X1.727 Y4.154 E2.43586 G10 ; retract G92 E0 ; Filament-specific end gcode M25 M226 M600 ;END gcode for filament T0 G92 E0 G10 S240 ; set temperature ; Filament gcode M207 S4 R0.05 F2000 Z0.2 G1 X13.253 Y1.749 F12000 G11 ; unretract G92 E0 G92 E0 ;TYPE:Perimeter ;WIDTH:0.399999 G1 F2856.511 G1 X9.767 Y1.749 E.11385 G1 X9.767 Y-2.137 E.24077
[...]

I also don't understand who is actually responsible for the pause here: Repetier-Server or RepRap-FW.

The pause button on the Repetier-Server touchscreen works and moves up 5mm.

Comments

  • Add 
    @pause

    and server will be responsible and stop sending until you hit continue on server. This will not use rrf pause methods. You might want to define a pause script or modify the existing one in server gcode event configuration.
  • Hello, and thank you for the hint!

    Sadly, it solves the problem only half way.
    Now the printer pauses at the desired points in the print. And when I hit resume, the printhead makes plausible x,y,z-moves but the extruder-motor doesnt move then anymore.
    During a normal print without "@pause" in the g-code. I can use the manual-pause- and resume-buttons and all works as expected.
    only with the @pause in the g-code the extruder halts completely afterwards.  

  • That is strange - both use the same function. Did the temperature go down during pause? Firmware might ignore extrusion when nozzle is to cold.  And when it is automatically turned off by firmware this might go unnoticed. Server has also a cooldown for long pause but then it remembers temperature and reactivates it first. So if this is the case increase firmware timeout to value higher then set in server for cooldown long pauses. Or reduce server timeout to firmware value.
  • edited April 1
    I thought, i have set a minimum extrusion temperature, but i cant find the option anymore (any clue where to look for it? (RepRapFW / Repetier-Server?)
    The manual pause was in fact only 3 seconds. I will try a longer pause for manual-mode and also have a closer look at the temperature during the scripted G-code-pause.
    What i didnt mention before: I even tried the regular "@pause" and also the "@pauseNoCooldown". both with no extrusion afterwards. 
  • @pauseNoCooldown just means server will not go in cooldown mode. We have no direct control of firmware except you configure it to not have it.

    Have a look here
    https://docs.duet3d.com/User_manual/Reference/Gcodes
    M302 to see cold extrusion settings.
  • edited April 8
    I had a closer look at another Test print: It is a very strange behaviour.
    The extruder turns only for one of the both Filaments and stands still for the other one.
    And it also uses a wrong temperature for one of the filaments.
    The one standing still ist at 215°C (Should be 240°C). The Turning one ist at 255°C.

    M305 is set to 200°C / 200°C.

    I cant find an error in the G Code: it always uses the same Extruder "G1", and has a realistic number following the "E" for extruder distance.
    And nowhere in the whole G-code is a "S215" mentioned. Where do the 215°C come from?
    The new temperatures are set after i hit "resume" after moving direktly over the print bed. During the pause it holds the last temperature.

    Tets-gcode
Sign In or Register to comment.