Standby temperature definition in dual extruder
-
Hi and thank´s for help.
Here´s my printer settings in Cura:G28 ;Home
G1 Z15.0 F6000 ;Move the platform down 15mm
;Prime the extruderStart Gcode:
G10 P0 R140 S205
G10 P1 R140 S205
G92 E0
G1 F200 E3
G92 E0End gcode:
M104 S0
M140 S0
;Retract the filament
G10 P0 S0 R140
G10 P1 S0 R140
G92 E1
G1 E-1 F300
G28 X0 Y0
M84 -
@Pertti OK, that looks like it should work - it's more or less what I uses except that I have 6 extruders and 9 tools, not just 2.
Now what commands does Cura put in the gcode file when you change from one tool to another? What we want to happen is that there is simply a T0 or T1 and nothing else. We don't want to see any M104 or M109 commands. I'm not familiar with Cura so I can't advise on what you need to do to handle tool changes.
-
I've been checking, and I don't see Cura generating anything extra. No 104/109.Edit: I just checked again, and Cura definately DOES insert M104s and 109s throughout. In my prior looks, everything was set to the same temps, so it didn't have to change anything. If temps are different, it does insert the commands.
Here is a typical sequence. Comments are mine.
G1 X155.94 Y152.636 E0.00106 G1 X155.942 Y152.58 E0.0014 G0 F5400 X156.175 Y152.748 G1 F1200 E-16 G1 F600 Z1.45 T0 ; Mount T0 M109 S200 ; Set T0 to 200, and wait for that temp. M104 T1 S175 ; Set old tool to 175 G1 F1200 E9.5 G1 F600 Z0.45 ;MESH:twoColor1_2_7_10_53.stl G0 F5400 X152.093 Y128.068 M104 S210 ; Set current tool, T0, to 210. Do not wait. ;TYPE:WALL-INNER G1 F1500 E6.5 G1 F3300 X152.289 Y128.172 E0.00553 G1 X152.276 Y128.217 E0.00117 G1 X152.267 Y128.246 E0.00076
-
@Danal said in Standby temperature definition in dual extruder:
........... I'm curious why we don't want to see 104/109. I
Oh, because we are just trying to use G10 to set the active and standby temperatures for dual extruders, rather than the slicer. So to prevent any "interference", it'll be better if the slicer simply puts T"n" commands in the gcode file, and the firmware will take care of setting the tool temperatures and switching them between active and standby. The OP was struggling to get Cura to set the standby temperatures, hence the alternative G10 approach but that's not to say that it couldn't be done in Cura - not familiar with it so we don't know how.
-
Yeah, there is a "no right answer" to speeding up toolchange by pre-heating tools. Who should place the "raise yourself from standby" in advance of the actual mount. Slicer? Firmware via "look ahead"? Not sure. Today, the firmware does not do it. (to my knowledge).
I am aware that Cura does it, and of some scripts that can do it for any slicer. I don't have a real strong feeling as to which "should" do it, other than the look-ahead could be quite a large number of lines... and that could eventually get weird in the firmware.
-
@Danal Can that temperature sequence that Cura uses be changed? It looks like the "old" tool is held at print temperature while the new tool is heating up (M109) and only after the new tool has reached active temperature, is the old tool set to standby temperature. It would be better if the M104 "set (standby) temperature but don't wait" came before the M109 "set (active) temperature and wait" command.
-
@Danal said in Standby temperature definition in dual extruder:
Yeah, there is a "no right answer" to speeding up toolchange by pre-heating tools. Who should place the "raise yourself from standby" in advance of the actual mount. Slicer? Firmware via "look ahead"? Not sure. Today, the firmware does not do it. (to my knowledge). ............
AFAIK too, there is no look ahead feature in the firmware but I think it's on DC42s list of things to look into.
I do know that David thinks it's about time slicers caught up and started using G10 to set active and standby temperatures but (to the best of my knowledge), none of them do. Using G10 is much simpler because you simply set the desired active and standby temperatures for each of the tools at the start of a print, then all you have to do is switch between tools with Tn commands - no need to use M104 and 109s to set different temperatures for each tool every time you change between them.
-
Yeah, I thought that was odd as well. Let me look and see how much control we have. Ultimately... it is open source!
Also, if we don't want Cura to do this at all, just set standby = printing.
Also, just to be clear, Cura has no concept of 'standby' as Duet understands it, meaning two temperatures for the same tool. Cura simply sets 'the' temperature at the appropriate points in time, to either 'printing temperature' or 'standby temperature', these being specified in the GUI... but the difference between the two is when they get set, in terms of 'just mounted' vs. 'just parked' a tool. Don't know that this makes any real difference. Just a fact about how it works.
In fact, I just realized Cura is not 'pre' heating... it is doing it all at mount time. Therefore, I believe at this time, I know of only one script that 'pre' heats.
-
@deckingman said in Standby temperature definition in dual extruder:
Using G10 is much simpler because you simply set the desired active and standby temperatures for each of the tools at the start of a print, then all you have to do is switch between tools with Tn commands - no need to use M104 and 109s to set different temperatures for each tool every time you change between them.
Exactly.
Today, Cura doesn't seem to know about this. We could "override" by putting G10s in the start gcode, and setting Cura printing = Cura standby.
-
@deckingman Cura might be trying to pull off some timing tricks with the temperature of the extruder.
I'm experimenting with this type of feature in IceSL, it's quite neat. It will set the standby temp of the parked extruder to a value that will allow just the right amount of time for it to warm back up in time. Sometimes, that's not far from active temp. But if the tool is only parked for 20 seconds, that makes sense.
I haven't tested it in real prints yet, I'm just figuring it out and implementing it into the printer profile right now, but it's configurable via the slicer GUI with a rate of heating/cooling.
-
@bot said in Standby temperature definition in dual extruder:
@deckingman Cura might be trying to pull off some timing tricks with the temperature of the extruder.
I'm experimenting with this type of feature in IceSL, it's quite neat. It will set the standby temp of the parked extruder to a value that will allow just the right amount of time for it to warm back up in time. Sometimes, that's not far from active temp. But if the tool is only parked for 20 seconds, that makes sense.
Nice!!
-
@bot That looks like a significant step in the right direction. Ultimately we need a look ahead function but it's awkward because it would need to be done on a time basis. i.e. we need to start heating a tool from standby to active nnn minutes before we need to use it. How does one work out nn minutes back from a Tn command in gcode file? Is that how IceSL does it? - If so, that's a very clever trick!
-
Looks like SlicerPE also has the capability to do this. Very clear how you turn it off/on, it is called "ooze prevention".
Typical G-Code snip. In this case, the comments were already there.
G1 E-4.96836 F2400.00000 ; Filament-specific end gcode G1 X128.341 Y161.138 F7800.000 M104 S235 T1 ; set temperature ; perform tool change wipe retract G91 G1 X2.5 Y2.5 E-0.25 ; complete remainder of retraction at defined speed G1 F2400 E-4.75 ; return to absolute coordinates and perimeter printing speed G90 G1 F3600 M106 S255 T0 M900 K30 ; Filament gcode M109 S210 T0 ; set temperature and wait for it to be reached G1 X147.977 Y147.194 F7800.000 G1 E10.00000 F2400.00000 G1 F1800.000
-
@deckingman Yeah, IceSL keeps track of its estimated time, and presumably uses these estimates to inject the commands at "the right moment" based on the rate that you say it can heat/cool.
It's not precise, because you can only provide one value for both heating and cooling. But, if the estimates of the movement time are close enough to the reality of the machine, it gets us closer to wasting less time.
The only "issue" is that it's going nuts setting the standby temp to whatever it pleases. It seems to make very sensible decisions based on my initial observations, but it will be best to keep a close eye on it during first prints.
-
@bot Clever
-
Yeah, @bot that sounds pretty darn clever, and sounds like exactly what the Jubilee group (toolchanger) is seeking. Where can I take a look at detail?
-
@Danal here: https://icesl.loria.fr/
It doesn't seem super straightforward at first, but once you get acquainted with it, it's very streamlined and powerful.
I'm working on a printer profile for RRF, since most of the other profiles leave some things to be desired in terms of the gcode output. If you would like to play with it before I finish it and release it, let me know I can link you to an almost-complete profile that will give more familiar looking gcode.
-
Hi fellows.
"we do it not because it is easy but because it is hard" -JFK
I found one cure for cura: setting "final printing temperature" to 170C (195)
Now my printer seems to survive from dualprinting a wall with small windows.
Thanks for mental and real help. -
Maybe a comment better suited for the tool changing thread from the other day -
Cura (with the "Machine Settings" plugin) has the capability to fine tune the standby temperature as well as the "expected" heat up and cool down rates.
Much like IceSL's "Heating/cooling rate (C/sec)" setting, the plugin allows you to set both heat up and cool down speeds (C/sec), as well as minimum standby times.
When the M104 commands are injected into the GCODE is driven by the layer time / print speed, as well as the heat up and cool down values entered. Changing the heat up speed from, for example, 1°C/s to 4°C/s will result in the M104 Tx command being injected a number of lines later. It appears that, if the layer time where the heat up would occur is too short to allow for the nozzle to heat up from the standby temperature to active temperature, Cura will modify the standby temperature so that the nozzle will be ready in time.
Left columns are at 4°C/s, right is at 1°C/s. You can see that the print temperature for T0 is set many layers (233, 237, 104, etc) later in the file for hotends that can heat up faster. Looking at some of the highlighted cells you can see where Cura modulated the standby temperature to account for the limiting heat up speed.
Obviously a hotends heat up/cool down speed is not some magic, made up number - its based on the actual heater performance. I believe* that where the M104 commands are injected is based on print speed and the heat up/cool down values, and is not impacted by acceleration, jerk, etc. These heating values can get someone really close to reducing time spent waiting during tool changes, but really Cura (or any software) doesn't have a clue what the "machine model" (acceleration, jerk, dynamic acceleration, tool change files, etc) is.
*I tried adjusting acceleration values in Cura and saw no change in where the lines were inserted.
As far as firmware looking ahead - I think that this would be the best solution, as the firmware should know what the "machine model" is - the config.g is loaded on the machine anyways ! However, how far should the firmware look ahead? Is the real solution to determining when to heat up hotends, priming the a different tools extruder, etc, to simulate a print file, and allow the firmware to rewrite the print file to include the relevant lines needed - a similar approach that is taken to determine realistic print times by simulating the print first. I am far from an expert, but I feel that there would be limits to looking ahead, and a full simulation of a print file would be needed.
-
well seen !! I didn’t notice how fast it was going to the axis of the abscissas, the seconds that pass while print