Save/Recall Heater State
-
If there isn't already, could we get a code to save/recall heater state, similar to
M106 R#
(Perhaps added toM568
)?We ran into an issue with our filament change macro changing the set point while paused, and it not getting changed back. I can solve this problem with global variables or via a generated file with the old set points, but this is an IDEX setup, and that's a lot of set points to in the OM/file (12 set points for the tools plus one for the bed). I'll be implementing it this way for now, but a proper RRF code would be nice.
-
How and why was the filament change macro changing the set point? Was it changing both active and standby?
Thanks.
Frederick
-
@fcwilt It changes the active temp to a predefined value based on the filament selected. The standby is left alone. It's just a standard method of semi-automatic filament changing using the filaments feature in DWC.
The exact details of the situation aren't important. If any other macro, or the user, modifies the set points while the machine is paused and forgets to reset it, it would be nice if the machine could do that itself, if configured to do so. This is already available (and useful) for restoring the fan speed of a tool.
If you're going to ask "Why don't you have the filament change macro clean up after itself?", my answer would be "Because it shouldn't in every situation". If the previous set point was for ABS and the user is loading PLA, you probably don't want the set point to return to ~250C. A print job will set the correct set point before selecting that tool, selecting that tool without setting it to a reasonable value may cook the filament if not caught.
-
Thanks for the reply.
When I was working on making use of the "filament catalog" feature of the DWC I ended up having the filament specific config file set the relevant settings for the selected filament (active temp, standby temp, print speed adjustment, extrusion adjustment) in global variables.
It wasn't intentional but that approach avoided the issue you are facing - an issue I never considered.
If the command to save/restore the temps existed how would you use it?
Frederick
-
@fcwilt I considered your method, but I foresaw maintaining parity with PrusaSlicer being a massive headache. That and, assuming a good amount of filament presets from multiple brands, the filament selection UI would balloon in size, similar to scrolling through all of the filament Prusa has in PS for their printers. I opted to go a generic route for DWC, which is a compromise to maintain usability. I don't want our customers to scroll through multiple pages of filaments in the UI, only to fat finger the wrong one (or accidentally tap PA6-GF instead of PA6-CF). The primary method of interacting with our machine is a touch screen.
If it existed, I would use it primarily in the pause/resume macros, though it could also be useful for the nozzle change macro.
-
Thanks much.
I haven't worked with a lot of different brands/kinds of filaments, maybe 30 or so, but for a given kind, say PLA, I didn't find a lot of difference between a "generic" setting and the manufactures recommend settings.
So I have mostly "generic" settings by kind of filament with a few specific ones for a specific filament.
But I am not in the business of 3D printing and no one uses my printers but me.
You face a much tougher situation.
Frederick
-
@curieos is there any reason why you don't just switch the heater to standby during pause.g, so that you don't need to adjust the active temperature? That's the sort of thing that the standby is intended for, i.e. keeping a hot end warned and almost ready to print, but not so hot that it oozes and the filament hydrolyses.
-
@dc42 it is switched to standby while paused due to the active tool getting deselected. That's not the problem, the problem is the active set point being modified while paused and not getting reset when resumed.
-
@curieos in that case I suggest you save the active tool set temperature in a variable in pause.g, and restore it in resume.g.
I think modifying the active temperature while paused and then wanting it automatically restored is a sufficiently rare use case to make it worth saving the active temperature in the restore point, given that this can already be achieved by adding small amounts of GCode to the pause and resume macros.
-
@dc42 The reason I asked for this as a feature is because this is for an IDEX machine, so it has 4 tools and 12 set points. I can do it with macro scripting and global variables, but I think you're underestimating how much. To optimize it I would need to detect which tools are active in a job and only save/restore those. It's not difficult, just a lot of extra global variables, and more than "small amounts" of gcode.
Also, there's precedent for this type of feature, given
G1 R
,M106 R
, andT R
exist. -
@curieos said in Save/Recall Heater State:
so it has 4 tools and 12 set points. I can do it with macro scripting and global variables,
So there are 3 set points per tool? Aside for active and standby what is the third?
I would need to detect which tools are active in a job and only save/restore those.
If the concern is changes made while paused why not simply save them all and restore them all. Yes you still need the variables but you don't need any decision making code.
Frederick
-
@fcwilt two set points for T0 and T1, four set points for T2 and T3. T2+T3 are duplicator and mirror mode, respectively. Each has separate set points for each heater, meaning two active and two standby set points.
@fcwilt said in Save/Recall Heater State:
If the concern is changes made while paused why not simply save them all and restore them all. Yes you still need the variables but you don't need any decision making code.
I'm not sure, I had some concern about changing values that aren't necessary to be changed. It feels like bad practice, but I can't think of a real problem it would cause.
-
@curieos said in Save/Recall Heater State:
I'm not sure, I had some concern about changing values that aren't necessary to be changed. It feels like bad practice, but I can't think of a real problem it would cause.
It will not cause any problems if my experience, using firmware 3.4.6, is any indication and I use variables extensively, both local and global. Currently on my 4 tool printer I have 70 some global variables and many things get updated in a group regardless of how many values within that group may actually have changed. No problems to date.
Frederick