Resume print after power failure (M916)



  • I had a problem trying to use M916 after a heater fault, not a power failure. The fault occurred about 9 hours into the print, and the firmware was kind enough to create a resurrect.g file. I thought resuming would be pretty easy, since the printer never actually lost power so none of the axes needed homing.

    I fixed the cause of the heater fault, cleared and enabled the heater, and brought the bed and printhead temps back to 60C & 210C. I read the instructions for M916 and created a resurrect-prologue.g. Since none of the axes needed homing (and homing again could even introduce a very small error), I just put M83 ; relative extrusion in the file to keep it from being empty. I then extruded until plastic started oozing out, and entered M916.

    This is when things took a turn for the worse. The printhead started banging against the X and Y home position - it was as if it thought it was in the middle of the printspace instead of at (0,0). I hit emergency stop and came here to see if I could find out what I did wrong and if it's possible to still salvage the print (looks like the answer to that is no - I didn't think to backup resurrect.g and it was overwritten when I emergency stopped.)

    Does anyone have any ideas how I could have salvaged this print?



  • In the same situation this AM - apparently I did not fix the root cause of the heater fault.

    I'm in a better position because this time I backed up the resurrect file this time. I went through everything step-by-step, and I think I discovered what the problem was with my first attempt.

    The 5th line in resurrect.g is G92 X111.876 Y150.826 Z29.612. So my printer was happily homed, sitting at (0,0), when this line made it think the printhead was at (112, 151). Now the resurrect function should still work if resurrect-prologue.g homes the printer (as the instructions say it should), but since mine didn't, there was a lot of painful banging.

    So the only question I have now is Why does resurrect.g put G92 X111.876 Y150.826 Z29.612 right before it calls a script to home the printer? It seems unnecessary at best, potentially harmful if you're trying to restart a print that failed without losing power/position.


  • administrators

    @yonkiman said in Resume print after power failure (M916):

    So the only question I have now is Why does resurrect.g put G92 X111.876 Y150.826 Z29.612 right before it calls a script to home the printer? It seems unnecessary at best, potentially harmful if you're trying to restart a print that failed without losing power/position.

    I added this in a recent firmware version because someone asked me to. The reason was that they couldn't home the Z axis with a print on the bed, but as it was a leadscrew axis with high steps/mm it wouldn't have moved much. So in resurrect.prologue.g you can now either home all axes, or home none of them, or home just some and hope that the rest didn't move when the printer was powered down and up again. If you do home axes in resurrect-prologue.g then the coordinates set by G92 will of course be overridden.



  • OK, so in my case I'd set X and Y back to 0 in resurrect-prologue.g. I think Z would then need a relative offset to compensate for how much it was increased when the print was interrupted.

    Looks doable - thanks!


 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.