I have a machine that has a PLC temperature controller that tries to maintain a constant high temperature. The controller can only heat (not cool). Heat is being lost at a faster rate when the machine is running, compared to when stopped. So the first minute or so of startup will have a temperature undershoot, and there will be overshoot after the machine stops. The machine currently uses the same PID parameters all the time.
Note that the amount of undershoot/overshoot happens to be inconsequential for my application, but I was wondering if it can be improved.
I am thinking of either:
1. creating 3 different sets of PID parameters: an aggressive one for the first minute of startup, a mellow one for the first minute of stop, and the goldilocks one for everything else.
or
2. intentionally changing the target temperature on startup and stop. So +10 on startup, -10 on stop, with perhaps ramping back to the correct target temperature.
I forget the nitty gritty of PID loop theory. But my general thought is that the loop is reactionary to temperature errors, and is looking at the past to decide on the present, therefore is slow/weak against a dramatic change such as startup/stop.
Hence why I am considering option 2, which takes advantage of the knowledge that the machine is starting/stopping. The changing of target temperatures should have the effect of immediately tricking the loop into reacting faster. A lower target temperature (at the moment of stop) will basically trick the output heat to turn off. A higher target temperature (at the moment of startup) tricks the output heat to immediately turn on.
Does anyone have suggestions on which choice is better?
I particularly want opinions from the lens of the mathematical nitty gritty theory. For example, it could be that option 2 is mathematically a Rube Goldberg version of option 1? Or is there an easier way to do this?
Thanks, and happy new year!
Note that the amount of undershoot/overshoot happens to be inconsequential for my application, but I was wondering if it can be improved.
I am thinking of either:
1. creating 3 different sets of PID parameters: an aggressive one for the first minute of startup, a mellow one for the first minute of stop, and the goldilocks one for everything else.
or
2. intentionally changing the target temperature on startup and stop. So +10 on startup, -10 on stop, with perhaps ramping back to the correct target temperature.
I forget the nitty gritty of PID loop theory. But my general thought is that the loop is reactionary to temperature errors, and is looking at the past to decide on the present, therefore is slow/weak against a dramatic change such as startup/stop.
Hence why I am considering option 2, which takes advantage of the knowledge that the machine is starting/stopping. The changing of target temperatures should have the effect of immediately tricking the loop into reacting faster. A lower target temperature (at the moment of stop) will basically trick the output heat to turn off. A higher target temperature (at the moment of startup) tricks the output heat to immediately turn on.
Does anyone have suggestions on which choice is better?
I particularly want opinions from the lens of the mathematical nitty gritty theory. For example, it could be that option 2 is mathematically a Rube Goldberg version of option 1? Or is there an easier way to do this?
Thanks, and happy new year!