Fine Grained Heater Control
-
@T3P3Tony said in Fine Grained Heater Control:
@gtj0 said in Fine Grained Heater Control:
No, but maybe overloading G10 with a third meaning wasn't the best way to go
not sure about the exact chronology but i am fairly sure that Adrian added the temperature offset meaning to G10 before some of the other ones we published to the offical record of gcodes for RepRap 3d printing (ie. the RepRap.org codes page).
I didn't say who maybe didn't go the right way. Yeah you got me there, sorry. I just looked at reprappro/RepRapFirmware and active and standby temps are there. Doesn't seem that any other firmwares support it though. It also doesn't mean that we can't provide optional advanced and more consistent control.
-
OK, I'm re-re-resurrecting this
How about this...
Add a "Q" parameter to M140/141 to set state. 0 = Off, 1 = Standby, 2 = On.
If the parameter isn't provided, assume "On" just like it is today.Add "H" and "Q" parameters to "T" to be able to set a tool heater's state without changing the Tool's state. "H": the tool's heater number (not the global heater number), "Q": same as "M140/141". This would allow tool preheat and "keep hot" commands to be included in gcode before and after the tool is actually selected/deselected.
The "Q" and "H" designators are just suggestions. I'm open to better suggestions.
-
@gtj0 said in Fine Grained Heater Control:
OK, I'm re-re-resurrecting this
How about this...
Add a "Q" parameter to M140/141 to set state. 0 = Off, 1 = Standby, 2 = On.
If the parameter isn't provided, assume "On" just like it is today.I'd rather not use Q, it's too similar to O and 0. But I agree with the principle.
Add "H" and "Q" parameters to "T" to be able to set a tool heater's state without changing the Tool's state. "H": the tool's heater number (not the global heater number), "Q": same as "M140/141". This would allow tool preheat and "keep hot" commands to be included in gcode before and after the tool is actually selected/deselected.
I'm less keen on that. RRF already has the concept of a tool being in standby mode to keep its heaters hot when it is switched from active to standby. To handle preheat, how about adding a command to set a tool to Standby if it is currently Off? The same tool command could have an option to turn a tool off if it is in standby.
-
@dc42 said in Fine Grained Heater Control:
@gtj0 said in Fine Grained Heater Control:
OK, I'm re-re-resurrecting this
How about this...
Add a "Q" parameter to M140/141 to set state. 0 = Off, 1 = Standby, 2 = On.
If the parameter isn't provided, assume "On" just like it is today.I'd rather not use Q, it's too similar to O and 0. But I agree with the principle.
How about "T" for sTate?
Add "H" and "Q" parameters to "T" to be able to set a tool heater's state without changing the Tool's state. "H": the tool's heater number (not the global heater number), "Q": same as "M140/141". This would allow tool preheat and "keep hot" commands to be included in gcode before and after the tool is actually selected/deselected.
I'm less keen on that. RRF already has the concept of a tool being in standby mode to keep its heaters hot when it is switched from active to standby. To handle preheat, how about adding a command to set a tool to Standby if it is currently Off? The same tool command could have an option to turn a tool off if it is in standby.
Yeah but that way you can't bring the heaters up to "active" temp before making the tool active and I'm not sure it's a good idea to tie the 2 states together. Let's say I'm building a fancy new tool changer and I have a gcode pre-processor. Let's also say that the pre-processor has the ability to calculate the optimal times for changing heater state so that the heaters are in the perfect state before being activated. Let's also say that the pre-processor is smart enough to know that the tool is going to be used again shortly and keep the heaters at the "active" temperature when the tool goes to standby. I will say that a tool should not allow a heater state change while it's active and that check was always my plan.
I used the "T" command because that one already changes tool states. If you want a separate one how about M1040 or M3090 or something else. You choose.
-
@gtj0 said in Fine Grained Heater Control:
Yeah but that way you can't bring the heaters up to "active" temp before making the tool active and I'm not sure it's a good idea to tie the 2 states together. Let's say I'm building a fancy new tool changer and I have a gcode pre-processor. Let's also say that the pre-processor has the ability to calculate the optimal times for changing heater state so that the heaters are in the perfect state before being activated. Let's also say that the pre-processor is smart enough to know that the tool is going to be used again shortly and keep the heaters at the "active" temperature when the tool goes to standby. I will say that a tool should not allow a heater state change while it's active and that check was always my plan.
So I think what you are looking for is a command to temporarily change the standby temperature of a tool heater. That temperature setting would be lost when the tool switches to active or off.
It might be reasonable to temporarily change the active temperature of a tool heater too (which would be lost when the tool goes to off or standby). But if the tool is off, I don't think changing its heater temperatures should be permitted.
-
@dc42 I think temporarily changing the set temps would be a little more confusing and you'd have to save the original temps and you wouldn't be able to tell from the object model whether the temp was temporary or permanent. I wanted to be able to display the heater state separate from the tool state.
How about this... Can I go ahead with a pull request for the M140/141 change using the "T" parameter to set the state while we continue the tool heater discussion?
-
@gtj0 said in Fine Grained Heater Control:
@dc42 I think temporarily changing the set temps would be a little more confusing and you'd have to save the original temps and you wouldn't be able to tell from the object model whether the temp was temporary or permanent. I wanted to be able to display the heater state separate from the tool state.
How about this... Can I go ahead with a pull request for the M140/141 change using the "T" parameter to set the state while we continue the tool heater discussion?
I would rather we decided on how to handle temporary changes to the set temperature for tool heaters first, in case it affects how we control other heaters.
-
@dc42 said in Fine Grained Heater Control:
Is there any point in having standby temperatures for bed and chamber heaters?
Always found it to be confusing. compared to simple current target temperature and on/off. At least for in a single extruder printer like mine. Same for tool selection UI.
Would be nice to be able to eliminate the extra complexity when configuring for a simple single extruder printer.
-
@zapta said in Fine Grained Heater Control:
Would be nice to be able to eliminate the extra complexity when configuring for a simple single extruder printer.
That's already done, since several years ago. M109 automatically selects the first tool if no tool is selected. You can put T0 at the end of config.g to select tool 0 automatically.
The point is that RRF allows much more flexible tool and heater configuration than other firmwares do, and some types of 3D printer need this flexibility. Unfortunately, most slicers haven't caught up even after 5 years.
-
@gtj0 said in Fine Grained Heater Control:
Let's also say that the pre-processor has the ability to calculate the optimal times for changing heater state so that the heaters are in the perfect state before being activated. Let's also say that the pre-processor is smart enough to know that the tool is going to be used again shortly and keep the heaters at the "active" temperature when the tool goes to standby. I will say that a tool should not allow a heater state change while it's active and that check was always my plan.
That's exactly what the pre-processor of Diabase does. It (mis)uses standby temp for this purpose, i.e. when time has come for a tool to preheat it will edit standby temp to active temp and insert appropriate commands to restore actual standby temp when the tool is deselected.
-
@dc42 said in Fine Grained Heater Control:
You can put T0 at the end of config.g to select tool 0 automatically.
Yes, I have it at the end of my config.g but sometimes, when I do manual operations via PanelDue I need to select the tool to get it heating up. Not sure what got it to get deselected.
With a single tool, it would be nice to be able to hide the concept of tool selection for a more intuitive PanelDue/Web user experience with a single tool machine. In a sense, it's an unnecessary leak of complexity from more complex machines.
-
@wilriker said in Fine Grained Heater Control:
@gtj0 said in Fine Grained Heater Control:
Let's also say that the pre-processor has the ability to calculate the optimal times for changing heater state so that the heaters are in the perfect state before being activated. Let's also say that the pre-processor is smart enough to know that the tool is going to be used again shortly and keep the heaters at the "active" temperature when the tool goes to standby. I will say that a tool should not allow a heater state change while it's active and that check was always my plan.
That's exactly what the pre-processor of Diabase does. It (mis)uses standby temp for this purpose, i.e. when time has come for a tool to preheat it will edit standby temp to active temp and insert appropriate commands to restore actual standby temp when the tool is deselected.
Yeah and I'd prefer to not mis-use standby temp and have to keep track of the previous value. I simply want to change state without having to maintain "state" externally.
-
@dc42, here is an example of what I said earlier. This is a single extruder machine, the active temp is set to 240 but the hotend doesn't heat because it's not selected.
-
-
you can select the hot end from paneldue by clicking on its icon.
-
@gtj0 said in Fine Grained Heater Control:
@zapta Can you describe in more detail what behavior would you like to see for single-tool single-heater printers?
Basically similar UI model most single head printers have. Something along this lines
-
Nozzle: current temp, target temp.
-
Bed: current temp, target temp.
Target temp of 0 indicates off. Turning heaters on/off is done by controlling the target temp. No concept of 'tool selection' as there is only one tool. No concept of standby.
Everything above is about the UI aspects that are exposed to the operator, not the internal model or gcodes.
-
-
@zapta said in Fine Grained Heater Control:
@gtj0 said in Fine Grained Heater Control:
@zapta Can you describe in more detail what behavior would you like to see for single-tool single-heater printers?
Basically similar UI model most single head printers have. Something along this lines
-
Nozzle: current temp, target temp.
-
Bed: current temp, target temp.
Target temp of 0 indicates off. Turning heaters on/off is done by controlling the target temp. No concept of 'tool selection' as there is only one tool. No concept of standby.
Everything above is about the UI aspects that are exposed to the operator, not the internal model or gcodes.
OK, well that can be solved in the UIs however this discussion winds up.
-