Jump to content

Pause at height issues in Cura 5.6.0


bumzala

Recommended Posts

Posted (edited) · Pause at height issues in Cura 5.6.0

Cura 5.6.0 on Mac
Printer: Ender 3 V2 Neo (stock firmware)

Hi, I am having a problem that has been around for years now, but no solution that I have found online has helped. The printer resumes printing a millimeter higher after the pause, which of course ruins the print. I have tried all possible settings but nothing really worked since I updated from Cura  4.8 (I think 8 ) to the newest Cura 5.6.0. Before the update it had worked perfectly, with the exact same settings. I am no expert by any means, but I can’t see anything weird in this code. It looks like it is coming back to the height, but it does not. I am not using Z hop, so that can’t be the cause.

 

G0 F300 X109.824 Y112.337 Z2.8
G0 F9000 X110.068 Y112.778
;TIME_ELAPSED:80.210789
;TYPE:CUSTOM
;added code by post processing
;script: PauseAtHeight.py
;current layer: 13
M83 ; switch to relative E values for any needed retraction
G1 F300 Z3.8 ; move up a millimeter to get out of the way
G1 F9000 X190 Y190
G1 F300 Z15 ; too close to bed--move to at least 15mm
M104 S0 ; standby temperature
M300 S440 P1000 ; Beep
M0 ; Do the actual pause
G4 S60
M109 S200 ; WAIT for resume temperature
G1 F300 Z2.8
G1 F9000 X110.068 Y112.778
G1 F300 Z2.8 ; move back down to resume height
G1 F550.5 ; restore extrusion feedrate
M82 ; switch back to absolute E values
G92 E29.25288
;LAYER:13
 

Screen Shot 2024-01-07 at 00.05.26.png

Edited by bumzala
  • Link to post
    Share on other sites

    Posted · Pause at height issues in Cura 5.6.0

    Try turning on "keep motors engaged" or adding a disarm timeout (some printers won't respond to the former, but you can set the disarm timeout to like 1800 seconds you have half an hour). If the motors are disengaged then the printer doesn't necessarily trust its position when you resume printing. Also unless you have a good reason you should REALLY keep the standby temperature at your printing temperature or a reasonable standby temperature (different for different materials but I think for PLA it's roughly 175°) and disable the M109 option so it uses M104 to stay hot. Especially since you're waiting for a minute after the pause (that's what the G4 is).

  • Link to post
    Share on other sites

    Posted (edited) · Pause at height issues in Cura 5.6.0

    Hi, thanks for your reply. I usually put the standby temperature but in this screenshot I forgot, as it was probably my 100th attempt to print with different settings. I have learned online that M25 is better for my printer and firmware, so I have tried this one too. It allows me to manually resume the printing. I was using M0 with 60 or 120 seconds pause and automatic resuming because it did not work the other way. 

    1. So with M25 and with KEEP MOTORS ENGAGED on and without parking, it makes an absolute mess. It parks (I guess the firmware does that, not changing the Z level, I resume the printing, it goes and prints one layer, then it goes 5 mm up and continues printing in the air. The code looks like this: 

    G0 F300 X109.824 Y112.337 Z2.6
    G0 F9000 X109.949 Y112.779
    ;TIME_ELAPSED:76.507219
    ;TYPE:CUSTOM
    ;added code by post processing
    ;script: PauseAtHeight.py
    ;current layer: 12
    M83 ; switch to relative E values for any needed retraction
    M104 S200 ; standby temperature
    M84 S3600 ; Keep steppers engaged for 1h
    M300 S440 P1000 ; Beep
    M25 ; Do the actual pause
    M109 S200 ; WAIT for resume temperature
    G1 F550.5 ; restore extrusion feedrate
    M82 ; switch back to absolute E values
    G92 E28.08122
    ;LAYER:12

    2. With M25 and disarm timeout 1800 the same thing happens. 

    3. With M25, without disarming, and without keeping the motors engaged, with the park ON, it parks, it lets me manually continue the print, but it continues 1 mm higher again.

    ;MESH:NONMESH
    G0 F300 X109.824 Y112.337 Z2.6
    G0 F9000 X109.949 Y112.779
    ;TIME_ELAPSED:76.507047
    ;TYPE:CUSTOM
    ;added code by post processing
    ;script: PauseAtHeight.py
    ;current layer: 12
    M83 ; switch to relative E values for any needed retraction
    G1 F300 Z3.6 ; move up a millimeter to get out of the way
    G1 F9000 X190 Y190
    G1 F300 Z15 ; too close to bed--move to at least 15mm
    M104 S200 ; standby temperature
    M300 S440 P1000 ; Beep
    M25 ; Do the actual pause
    M104 S200 ; resume temperature
    G1 F300 Z2.6
    G1 F9000 X109.949 Y112.779
    G1 F300 Z2.6 ; move back down to resume height
    G1 F550.5 ; restore extrusion feedrate
    M82 ; switch back to absolute E values
    G92 E28.08116
    ;LAYER:12
     

    4. With M0, and disarm timeout 1800, the print pauses and it stays in place. Which is useles, so I tried with park print option, and G4 S60 as it does not let me resume manually. This btw is longer than 60 seconds, but what can I do.  It continues about 2 cm higher and prints in the air. 

    ;MESH:NONMESH
    G0 F300 X109.824 Y112.337 Z2.6
    G0 F9000 X109.949 Y112.779
    ;TIME_ELAPSED:76.507214
    ;TYPE:CUSTOM
    ;added code by post processing
    ;script: PauseAtHeight.py
    ;current layer: 12
    M83 ; switch to relative E values for any needed retraction
    G1 F300 Z3.6 ; move up a millimeter to get out of the way
    G1 F9000 X190 Y190
    G1 F300 Z15 ; too close to bed--move to at least 15mm
    M104 S200 ; standby temperature
    M84 S1800 ; Set the disarm timeout
    M300 S440 P1000 ; Beep
    M0 ; Do the actual pause
    G4 S60
    M104 S200 ; resume temperature
    G1 F300 Z2.6
    G1 F9000 X109.949 Y112.779
    G1 F300 Z2.6 ; move back down to resume height
    G1 F550.5 ; restore extrusion feedrate
    M82 ; switch back to absolute E values
    G92 E28.08122
    ;LAYER:12

    5. With M0 and KEEP motors engaged ON, and with park print ON , it parks, but continues printing 2 cm higher. Without parking it pauses but it stays in place. The relevant parts of both codes you can see bellow. 

    PARK ON
    G0 F300 X109.824 Y112.337 Z2.6
    G0 F9000 X109.949 Y112.779
    ;TIME_ELAPSED:76.507216
    ;TYPE:CUSTOM
    ;added code by post processing
    ;script: PauseAtHeight.py
    ;current layer: 12
    M83 ; switch to relative E values for any needed retraction
    G1 F300 Z3.6 ; move up a millimeter to get out of the way
    G1 F9000 X190 Y190
    G1 F300 Z15 ; too close to bed--move to at least 15mm
    M104 S200 ; standby temperature
    M84 S3600 ; Keep steppers engaged for 1h
    M300 S440 P1000 ; Beep
    M0 ; Do the actual pause
    G4 S60
    M104 S200 ; resume temperature
    G1 F300 Z2.6
    G1 F9000 X109.949 Y112.779
    G1 F300 Z2.6 ; move back down to resume height
    G1 F550.5 ; restore extrusion feedrate
    M82 ; switch back to absolute E values
    G92 E28.08122
    ;LAYER:12

    PARK OFF
    G0 F300 X109.824 Y112.337 Z2.6
    G0 F9000 X109.949 Y112.779
    ;TIME_ELAPSED:76.507558
    ;TYPE:CUSTOM
    ;added code by post processing
    ;script: PauseAtHeight.py
    ;current layer: 12
    M83 ; switch to relative E values for any needed retraction
    M104 S200 ; standby temperature
    M84 S3600 ; Keep steppers engaged for 1h
    M300 S440 P1000 ; Beep
    M0 ; Do the actual pause
    G4 S60
    M104 S200 ; resume temperature
    G1 F550.5 ; restore extrusion feedrate
    M82 ; switch back to absolute E values
    G92 E28.08133
    ;LAYER:12


    Am I helpless?
    Here is the gcode from case number 3.

    CE3E3V2_Pause test m25 park on.gcode

    Edited by bumzala
  • Link to post
    Share on other sites

    Posted · Pause at height issues in Cura 5.6.0

    Things I've noticed from your testing:

    • Test 1: You're right, the firmware must be doing the movement, since there's no movement commands in the pause script. I've been able to pause and resume SD prints without issue on a E3V2 Neo by using the printer's control panel, but never tried using gcode.
    • Test 3:
      • For whatever reason it has the commands to move back down twice, shouldn't make a difference since you're using absolute positioning.
      • When you say 1mm above, are we talking, like, precisely? Exactly 1mm every time? Because if it does then you could try putting this code in after the pause (adjusting for the height of where you pause it, of course):
        G92 Z3.6
        G0 F300 Z2.6

        That will basically tell it "hey, the Z value is actually at 3.6, move down to 2.6".

    • Test 4:
      • I was able to continue manually from an M0 on my E3V2 Neo by just pressing the knob on the control panel, but the Neo does have a different control panel to the regular version (I think). It's also how it works on my E3V3SE. With all the weird crap Creality does, not working similarly in the slightest is entirely possible.
      • M0 is basically a "drop everything and pause, NOW". A well behaved printer shouldn't continue processing until it receives user input (but see above about Creality being weird) or it receives an M108 command.
      • Why the hell does it need to use a G4 command to pause when M0 takes an expiry period? M0 S60 should pause for a minute. Maybe Creality firmware automatically puts a timer on it? Would explain why it pauses for more than a minute.
    • Test 5, no park: So wait, it actually moves the print head up after it resumes? Or does it do it when you pause it?

    General notes:

    • M25 is "Pause SD print" so it won't work if you're using a system like OctoPrint to control your printer.
    • The "Keep motors engaged" option just tells it to shut down the motors after an hour anyway. Someone should rename that.

    Conclusions:

    • Creality firmware sucks. It's a fact, whether or not that's your problem is beside the point.
    • Comparing the differences in the versions of the script that shipped with 4.8, 4.13 and 5.6, the only difference when it comes to Z movements is that the one in 4.8 doesn't have an option to disable parking the head.
    • By the looks of it, if you're going to use M25 (and in a perfect world, you shouldn't) you should disable head parking in the script because the printer handles it.
    • @GregValiant is bad boy for using G1 for travel moves.
    • Laugh 1
    Link to post
    Share on other sites

    Posted · Pause at height issues in Cura 5.6.0

    Slashee, thanks a lot for investing so much time in figuring out my problem. I actually have learned some things from you, which I appreciate a lot. But I have realized that the problem is not in Cura, because I found an old G-code with Pause at Height that was successful before, but failed printing this time. Which brought me to the conclusion that it is not Cura’s fault, but something in my hardware, despite all the weirdness in my tests. I am going to check the hardware in the following days which will either solve my problem, or the printer will be cannibalized and parts used for my other printers. But I am pretty sure that it is not Cura. 
    Thank you again!

    I think we can close this topic. 

  • Link to post
    Share on other sites

    Posted · Pause at height issues in Cura 5.6.0

    I'm old and can't remember stuff anymore.  G1, G0, my name, things like that.  I have noticed that stand alone "Z" moves are always "G1".

     

    Creality does fool around a lot and then doesn't tell anyone what they've done.  A case in point was a couple years ago when they ran out of mainboards for the Ender 3's and just stuck in whatever they had laying around.  Another instance was changing to TFT LCD screens and not re-working the firmware to talk to them.  All of a sudden any command that sent a message to the screen was ignored.  That meant M0 and M1 (and M117 and others) didn't work on those machines.

    I have a couple of ideas to maybe fix the problem

    • If M25 is pausing the print - the printer firmware may still "read ahead" and finish any moves that are in the buffer and that can have some odd side effects.  Something you can try would be to add a string of M105 lines into the "Gcode after Pause" box.  "M105,M105,M105,M105,M105" will pad the buffer with do-nothing commands instead of movement commands.
    • Another thing you could try would be:  Using M25 - when you are ready to resume the print, first select "Pause" on the LCD and then select "Resume".  That might fix the "return to Z" problem.  The stock Pause at Height doesn't allow for an entry to define the Z lift so maybe that problem just can't be fixed.  M600 would be the other filament change option.  Once again, the firmware has to support it.
    • If M0 works then it is the best option and it's as Slashee says and a button click on the LCD should cause the print to resume.
    • In every example that was posted, there is a "return to Z" line.  If the machine is going someplace different, then the firmware is causing it.
    • It would be a rare thing if firmware allowed a G4 dwell to be dismissed while it was active.
    • With the exception of Repetier firmware, you should keep the steppers enabled.  If they lose their position you are basically screwed.

    I'm at a disadvantage here for a couple of reasons.  One is that M0 works on my older E3Pro.  Another is that when I changed Pause at Height, not all the changes were implemented and so it remains confusing.  That leads to the other reason I'm at a disadvantage.  It was confusing enough that I use my own script "Pause at Layer".  Functionally, it works the similar to "Pause at Height.

    The Pause at Height sequence is:  Retract (if selected) - Park - Pause - Move back - Resume.

    My Pause at Layer sequence is:  Retract (if necessary) - Park - Unload - Pause - Reload - Purge - Retract - Move back - Unretract (if necessary).  There is a bit more there.

    I doubt that Pause at Layer would fix the problem but if you would like to try it, let me know and I'll post it.  (Don't let Slashee see it though.  She'll pick on me about my horrible coding style.)

     

  • Link to post
    Share on other sites

    Posted · Pause at height issues in Cura 5.6.0

    I'm using a brand new Ender 3 S1 Pro. To suggest that standard gcode will function "per specification" on creality stock firmware is to suggest that governments will use tax dollars wisely in the eyes of all citizens (impossible). The stock firmware seems to implement a very limited number, or intentionally overrides most, standard Gcode. 

     

    I have managed to workaround some of this with pause-at-height, octoprint (to manage the printer vs prining from SD) and some octoprint plugins (to work around the stupid firmware). The fact that Creality sells workarounds to thier limited firmware indicates they are intientially limiting the functionality of most of their toys. Luckily it's not impossible to workarouns those limits. 

     

    As to the exact problem you are having, I think it is the same one I was running into with testing standard M comands... the firmware is using hardcoded "offsets" that you need to "unoffset" in your recovery code. In my case the M600 code was running the head to 0,250,+15 from my where I was parking it with change at layer, but was NOT removing the +15 post change. When I added that as an "after" action then it was better but way off. 

     

    hope that makes sense to someone smarter than me. 

  • Link to post
    Share on other sites

    Create an account or sign in to comment

    You need to be a member in order to leave a comment

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now
    • Our picks

      • UltiMaker Cura 5.7 stable released
        Cura 5.7 is here and it brings a handy new workflow improvement when using Thingiverse and Cura together, as well as additional capabilities for Method series printers, and a powerful way of sharing print settings using new printer-agnostic project files! Read on to find out about all of these improvements and more. 
         
          • Like
        • 18 replies
      • S-Line Firmware 8.3.0 was released Nov. 20th on the "Latest" firmware branch.
        (Sorry, was out of office when this released)

        This update is for...
        All UltiMaker S series  
        New features
         
        Temperature status. During print preparation, the temperatures of the print cores and build plate will be shown on the display. This gives a better indication of the progress and remaining wait time. Save log files in paused state. It is now possible to save the printer's log files to USB if the currently active print job is paused. Previously, the Dump logs to USB option was only enabled if the printer was in idle state. Confirm print removal via Digital Factory. If the printer is connected to the Digital Factory, it is now possible to confirm the removal of a previous print job via the Digital Factory interface. This is useful in situations where the build plate is clear, but the operator forgot to select Confirm removal on the printer’s display. Visit this page for more information about this feature.
          • Like
        • 0 replies
    ×
    ×
    • Create New...