Starting g-code - "E1 Heating...."
 
Notifications
Clear all

Starting g-code - "E1 Heating...."  

  RSS
Jason H
(@jason-h)
Active Member
Starting g-code - "E1 Heating...."

G28 ;Home M420 S; Enable ABL using saved Mesh and Fade Height G92 E0 ;Reset Extruder G1 Z2.0 F3000 ;Move Z Axis up G1 X10.1 Y20 Z0.28 F5000.0 ;Move to start position G1 X10.1 Y300.0 Z0.28 F3000 E23 ;Draw the first line G1 X10.8 Y300.0 Z0.28 F5000.0 ;Move to side a little G1 X10.8 Y20.0 Z0.28 F3000 E46 ;Draw the second line G92 E0 ;Reset Extruder G1 Z15.0 Y40 F3000 ;Move Z Axis up M117 Printing...

This is my start code for my Ender 5 plus. It's the same in Prusaslicer and Cura. However, with Cura, once it draws the purge line it starts to print right away. With Prusaslicer, it pauses at the end of the purge line and says "E1 Heating..." even though the nozzle us up to temp. Filament then oozes out, clings to the nozzle then the print starts and fails due to the goober hanging on the skirt, brim, or first walls. Same settings in the Cura profile and the print doesn't fail. 

I cannot find a way to tell Prusaslicer to just print right after the purge line.

Posted : 19/02/2023 6:28 pm
Jason H
(@jason-h)
Active Member
Topic starter answered:
RE: Starting g-code - "E1 Heating...."

Let me put this in simpler terms. Cura puts M109 before the start g-code and Prusclicer puts it after. Is this hard coded?

Posted : 19/02/2023 7:10 pm
Neophyl
(@neophyl)
Illustrious Member
RE: Starting g-code - "E1 Heating...."

Hiya Jason.  Welcome.  First of all can you please help us so we can help you.  Save a project file from your install of Prusa Slicer.  Just add something like a default cube or similar to the plater and use File>Save As.  This will save a .3mf file.  Then ZIP up the 3mf and attach it here.  it MUST be zipped or the forum will just  silently not attach it.  The forum is very limited on the allowed file types unfortunately.

A PS 3mf file contains ALL of your settings, including your start gcode etc.  This way we can directly look at what you have configured.  

For example with a 3mf I wouldn't have to ask if you are using one of the built in printer profiles that the wizard can install.  The ones that are already configured.  Or if you are using a modified version etc.

To answer your question though it sounds like you aren't properly setup.  If no bed or extruder heating gcodes are configured in your custom start gcode PS will 'helpfully' try and automatically add them for you when it slices.  It will add them AFTER the custom start block though.  Your custom code is processed first.  However if you add them into the block your self in the position and format/order you want then it doesnt add them when slicing.

For example the following block is common on many printer startup gcode 

M140 S[first_layer_bed_temperature] ; set bed final temp
M104 S[first_layer_temperature] ; set extruder final temp
M109 S[first_layer_temperature] ; wait for extruder final temp
M190 S[first_layer_bed_temperature] ; wait for bed final temp

The fields inside the brackets are PS specific placeholders.  They will pick up their values from your currently configured filament profile.  

Running the PS wizard and installing the stock Ender 5 Plus profile as supplied has the following start up gcode block

G90 ; use absolute coordinates
M83 ; extruder relative mode
M104 S150 ; set temporary nozzle temp to prevent oozing during homing and auto bed leveling
M140 S{first_layer_bed_temperature[0]} ; set final bed temp
M190 S{first_layer_bed_temperature[0]} ; wait for bed temp to stabilize
G28 ; home all axisG29 ; auto bed levelling
G1 Z50 F240
G1 X2.0 Y10 F3000M104 S{first_layer_temperature[0]} ; set final nozzle temp
M109 S{first_layer_temperature[0]} ; wait for nozzle temp to stabilize
G1 Z0.28 F240
G92 E0G1 X2.0 Y140 E10 F1500 ; prime the nozzle
G1 X2.3 Y140 F5000
G92 E0G1 X2.3 Y10 E10 F1200 ; prime the nozzle
G92 E0

For example.  This is a much more comprehensive startup.  It warms the bed and extruder to a no ooze temp and lets things thermally expands and stabilise before hand and with the no ooze temp so you dont get little dots of filament left on your bed as it mesh levels.  Then it finishes warming to the configured filament temps and then starts printing.

As its using M83 extruder relative mode that will be configured under Printer Settings>General>Advanced>Use Relative E Distances which will also requires the Before layer gocde filed to be filled in with the following
;BEFORE_LAYER_CHANGE
G92 E0

Now I don't know which of those is the correct auto levelling as yours is using M420 but I would suggest using the wizard profile as a base and then modifying it with specific changes from yours.  All the non prusa profiles are user supplied so its up to you what you use anyway.  

Posted : 19/02/2023 8:24 pm
Jason H
(@jason-h)
Active Member
Topic starter answered:
RE: Starting g-code - "E1 Heating...."

There is a github ticket on this that was closed years ago. I added to it today. There is no way to get PS to add the M109 code before the purge line code. The developers suggestions were to manually change the g-code for every print in the custom g-code dialogue box. That's ridiculous. My retort was that defeats the purpose of a menu item to change filament and bed temperatures in Filament Settings.

Cura does this properly. PS devs are quite stubbron when it comes to UX. Mostly because PS is written to work with Prusa printers and other printers are secondary. It should present the custom start g-code after setting the bed and hot end. It's multiplicity and causes oozing.

Cura's bigger market share is due to this closed loop thinking of PS developers. Also, SuperSlicer does it. 

I'm now looking at a script to fix this. 

Posted : 20/02/2023 12:33 am
Jason H
(@jason-h)
Active Member
Topic starter answered:
RE: Starting g-code - "E1 Heating...."

More importantly, there is a recurring suggestion to add this to your custom g-code to emulate Prusa printer profiles. This isn't a printer setting, it's a filament setting. 

See the discussion here.It's a fundamental misunderstanding of how other printers work and the false assumption that temperatures are printer based when they are filament based. 

Now could someone tell me I'm wrong please. This bothers me that there is such a cavalier attitude toward "just put it in your printer gcode" when it's a filament setting. I must not be understanding something here. 

Posted : 20/02/2023 12:46 am
Neophyl
(@neophyl)
Illustrious Member
RE: Starting g-code - "E1 Heating...."

Ok , you are wrong.  Happy now ?  I think you are missing things, or at least not understanding the logic behind how it works.  

As part of the CONFIGURABLE start up gcode block that YOU control you can place whatever gcode you like and in whatever order you want.

So set the temps in that block BEFORE your purge line gcode.  It works for every printer I have and only one of those is a prusa.  The other is a creality.  It also works for the majority of people without Prusa printers.  

All that PS does, and this is the bit that has people complaining is that if you DONT add in any lines to heat your bed or extruder in the start gcode then its will automatically add them for you as part of the slicing (and so they get added AFTER the start gcode).  Its this automatically adding them that gets people in a twist.  It seems some rely on automatic safety measures while others despise anything added automatically.

Its quite simple to stop it doing so, just add them at the start of your gcode block.

Add

M104 S0
M140 S0
M109 S0
M190 S0 
at the start of your custom start gcode and you will never see them added automatically again.

As for the temperatures being a filament property and not a printer property, yes they are.  But that's what the placeholders that substitute the values configured in the Filament profile are for.  The placeholders get added to the start up so that it can preheat to the correct temperature for the selected filament.  You can even use conditionals if you want to make it even more flexible.  For example
M109 S{first_layer_temperature[0]-50} ; set temporary nozzle temp to prevent oozing during homing 
So for a filament with a printing temp of 200 that would preheat to 150c, if I had ABS configured for 265 selected it would preheat to 215c.  

If you examine that start up block I posted above taken from the default Ender 5 configuration then you will see that the M109 to perform the final heat to printing temperature is performed BEFORE the purge line.  So stating that its 'impossible' is a little much.  Its quite possible and happens every day.

Also making the assumption that its just for prusa printers is incorrect.  The base organisation of the profiles is taken from the original Slic3er software and predates Prusa by quite a few years. 

Are the developers resistant to gui changes ?  I would tend to agree.  However changing it at this point would be a massive amount of work, for potentially little or no benefit (ymmv) and for those of us who are comfortable with the current setup from familiarity it would be counter productive.  I'd far rather they spend their time and resources on fixing some old outstanding fundamental issues like solid infill on sloping walls than go for a complete redesign of a gui. 
Its different from Cura, so what.  Its not Cura.  Not all software has to be the same, just learn what it is and how it works.  Or don't.  Choice is yours.

Posted : 20/02/2023 7:22 am
Share: