Ideal behaviour of PID auto tuned system?
-
Hi All,
I've auto tuned my bed and hot end and used M500 to save these results to the config-override. I generally see a overshoot on the hot end of ~5C before dropping back to target. Is this normal?
Is the overshoot in the control loop a result of needing to allow adequate control with the significant external influences on the thermal behaviour of the system - such as as part cooling and material throughput? I had read bits on the temperature control potentially being adapted to be aware and compensate for changes in material flow rate, part fan, etc.? Any links to read up on that?
Before commencing auto tuning, the heater to be tuned must be at or near room temperature and its temperature reading should be stable.
https://duet3d.dozuki.com/Wiki/Tuning_the_heater_temperature_controlThis is vague. 40 is near room temperature compared to a tuning temp of 230, but certainly not near if we are talking about my house thermostat where a 4C swing can change the house from nipply to sweat box.
If the initial temperature of the auto tune determines the level to which the heater should cool before ending the autotune can there be an option to override this behaviour and directly specify the stable temperature of the heater rather and allow a warmer start so long as it is not already too close to the final cool down temperature?
-
Overshoot isn't normal with a correctly tuned heater. Suggestions:
- Check that you have saved the results of heater tuning. You should either have copied the tuning results into a M307 command for that heater in config,g, or used M500 to save them in config-override.g and have a M501 command at/near the end of config.g. You can send M307 H1 to check what parameters the hot end is using.
- If you saved the results in config,g, check that you don't have M307 commands in config-override.g to override them.
- Check that you don't have any M301 commands in config.g or config-override.g. A M301 command will override any earlier M307 commands for the same heater.
-
I ran auto tune at 200C which was around the working temperature I expected for PLA. Saved the results using M500. Last command in my config file is M501. In order to investigate the overshoot more thoroughly I will repeat the above process once the current and queued build complete.
Still interested to hear if there is any chance of what 'near room temperature' is and if autotune can be improved to start warm, perhaps with the addition of passing a parameter to let the system know the stable cold/room temperature equilibrium value.
I'd like to do three repeats of the auto tune process to see how consistent the results are, but this will take a few days!
-
If you ran auto tuning with the print cooling fan on, that could cause overshoot when you heat up the hot end with the print cooling fan off.
-
I normally tune without, but will repeat anyway.
Which is the by-the-book method; with or without part cooling fan? If on what fan set point?
-
@doctrucker, I tune with the print cooling fan off. But I use silicone socks on my heater blocks, so the fan doesn't have so much effect anyway.
-
This is a screen shot of an autotune on an Stock Ormerod 2 followed by setting the temperature at 170. Overshoot was in the order of 7C.
Edit:
Duet: 0.6
Firmware: 1.22
DWC: 1.22.4 -
From other issues like the odd extruder ramming and confusion around T0 it appears I'm in a minority that warm things up manually before kicking a print off. Perhaps this overshoot is far more common but normally covered by the extruder purging material through as soon as the temp is within 1C of set point. Its likely to be a non issue where fixing it will leave the system unable to cope with the part fan coming on.
-
I'd appreciate some feedback on the other questions.
I had read bits on the temperature control potentially being adapted to be aware and compensate for changes in material flow rate, part fan, etc.? Any links to read up on that?
Before commencing auto tuning, the heater to be tuned must be at or near room temperature and its temperature reading should be stable.
https://duet3d.dozuki.com/Wiki/Tuning_the_heater_temperature_controlWhat is near? 5C, 10C? What is the critical values for a successful autotune? Exact ambient is obviously a variable.
If the initial temperature of the auto tune determines the level to which the heater should cool before ending the autotune can there be an option to override this behaviour and directly specify the stable temperature of the heater rather and allow a warmer start so long as it is not already too close to the final cool down temperature?
-
I use the same 0.6 Duet controller, but I do not have any overshoot whatsoever (okay, probably I do, but it is within 1 degree). I have the same habit of preheating everything manually. I see only one big difference to my setup: You get a warning in DWC that your heater could reach 495 C. In my case I believe I saw that warning with a number of around 1200 C if memory serves. So I assume I have a more powerful heatercartridge. I am not sure how that relates to the overshoot though. But I know the Duet version and Firmware combination is capable of heating the hotend without overshoot. The same goes for the bed, on which I have a rather big thermal mass.
-
@doctrucker said in Ideal behaviour of PID auto tuned system?:
From other issues like the odd extruder ramming and confusion around T0 it appears I'm in a minority that warm things up manually before kicking a print off. Perhaps this overshoot is far more common but normally covered by the extruder purging material through as soon as the temp is within 1C of set point. Its likely to be a non issue where fixing it will leave the system unable to cope with the part fan coming on.
As you are getting overshoot, it looks as though the tuning process has under-estimated the either gain of the heater (M307 A parameter) or it dead time (D parameter). If the temperature appears to be oscillating slightly in the steady state, try increasing D by about 30%. Otherwise, try increasing A by 10%.
-
Continuing problem with this machines tuning. I've recently got back to comissioning this machine after setting up a P3Steel Marlin based machine. Interestinglingly they use a number of heating loops (user definable) rather than one.
I think I have an issue with my part cooling fan shroud where by the part cooling air gets sucked into the hotend cooling vent and exhausted out the top when close to the part bed and over cooling the hotend even with a sock on. End result is the PID controller is too tame to bring it upto temp after the fan drops the temp by a couple of degrees.
I'll probably go ahead with tuning with the hotend close to the bed and fan on and see how different the PID values are. I'll let it cool to 40 and repeat to see how close twp consecutive runs are.
Edit: Will restart a new thread as I think I've found a bug...