G92 not working for E axis



  • I had like an 8 hour print running over night, and it failed this morning right after I got up. The failure was clean, just a missed layer I think, so I broke off the top, found my layer height, and edited my gcode so I could start where I left off. The problem I’m having is that my G92 command doesn’t seem to be working for my extruder’s axis. I’m trying to set my E axis to the same value it was at at the layer The print failed on, otherwise it tries to extrude 2000 mm of filament on the first extrusion move which obviously won’t end well. I made sure to switch to absolute coordinates before sending the command (which I know works because if I then click ‘extrude’ and extrude 10mm the E drive position changes to 10.0). Any chance someone can help me understand what I’m missing?

    Thanks!

    PS I believe my DuetWifi is currently set to look like Marlin firmware


  • administrators

    Did you select the tool with a T command (e.g. T0) before sending the G92 E command?

    Please share the modified GCode file which includes the G92 E command.

    Btw using relative extrusion would have avoided this issue.



  • @dc42 I actually had not thought to make sure the tool was selected, however, upon trying that, the command still does not seem to work. I did not include the G92 command in the edited gcode file, instead I was typing it in the console to set my axes' positions before starting the gcode file. G92 works for setting positions on my other axes (X, Y, and Z), just not my E drive. In the future I will likely change to relative extrusion, but in this case I had to work with a preexisting gcode file which was using absolute positioning.


  • administrators

    It would still help to see the GCode file. There may be something in it that is resetting the extruder coordinate. Editing the G92 E command into the GCode file immediately before the first printing move should work.



  • I'm also familiar with a bug that G92 Ennn doesn't change the E-axis coordinate.

    As a workaround, I always use relative extrusion moves.
    (you should set "Relative extrusion" checkbox in the slicer).

    You could try to replace E-axis with W-axis, and this may also be a workaround.


  • administrators

    @guyaros said in G92 not working for E axis:

    I'm also familiar with a bug that G92 Ennn doesn't change the E-axis coordinate.

    I don't recall anyone ever having reported that. G92 E0 certainly works, and the code is written to handle general E-values.



  • Hi David,

    How would you explain this behavior?
    0_1524839086009_G92 Enn Bug.jpg


  • administrators

    The extruder values reported by M114 are actual extrusion amounts since the print started. They are not affected by G92 E commands. How they relate to the E values in successive G1 commands depends on the extrusion factor set by M221 and by any tool mixing that is in effect.



  • @dc42 said in G92 not working for E axis:

    It would still help to see the GCode file. There may be something in it that is resetting the extruder coordinate. Editing the G92 E command into the GCode file immediately before the first printing move should work.

    I will try that, and if that does not work I will come back here with a copy of my code.



  • @dc42 said in G92 not working for E axis:

    The extruder values reported by M114 are actual extrusion amounts since the print started. They are not affected by G92 E commands. How they relate to the E values in successive G1 commands depends on the extrusion factor set by M221 and by any tool mixing that is in effect.

    Thanks for clarifying that, I thought its a bug.

    Nevertheless, I don't understand how could I check that G92 Ennn.nn does make an effect.
    I thought E is just an Axis that has coordinate, so by typing G92 E1234.5 the E coordinate should be changed accordingly.
    So basically E is not treated as a regular axis like X,Y,Z,W?


  • administrators

    No, E is not a regular axis, it is a "virtual extruder position", used only when the GCode file uses absolute extruder coordinates. In the early days of 3D printing, absolute extruder coordinates made some sort of sense, because the absolute extruder coordinate multiplied by the E steps/mm was the number of steps the motor had moved since the start of extrusion. Now that we have M221 to adjust the extrusion amount, pressure advance, nonlinear extrusion, and mixing extruders, the firmware has to convert the requested extrusion to relative, adjust it for the M221 correction, adjust it for mixing, adjust it for nonlinear extrusion, adjust it for pressure advance, and convert it to a step profile for that move. So absolute extruder coordinates make no sense now. But they compicate the firmware, because whenever the print stream is interrupted (for a simple pause, power failure etc.), the virtual extruder position has to be saved and then restored at the appropriate moment. This means that the virtual extruder position has to be included in every move descriptor, which increases the memory requirement.

    It would be much simpler if everyone used relative extruder coordinates.

    We could include the virtual extruder position in the M114 report, but it isn't as useful as reporting the filament actually consumed since the start of the print.



  • @dc42

    Thanks for the very informative reply, now it makes sense to me.
    Personally, I don't need the extruder position in M114, but it may be useful for others.

    When I had the need to control the extrusion absolute position - for example for a "syringe extruder" which has maximum travel (syringe max stroke), I configure W-axis that act as an extruder.



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