I have a nonlinear thermal process (nonlinear radiation becomes more and more present as temperature goes up) that I would like to tune a PID controller to. I'd like to control the temperature as accurately as I can.
I have planned to divide the temperature range in N pseudo-linear ranges (to be defined), and for each of these temperature ranges: fit a first order model using a small temperature step, and calculate the PID parameters to suit this model. The PID parameters would be automatically switched depending on the temperature of the process*.
My issue is the following: consider the 70°C checkpoint for example. P watt are already flowing to reach this temperature. I'll inject dP watt to increase the temperature by 1°C. I'll then make a note of the time constant, and the steady state gain will be 1/dP °C/W. [Please can you take a moment to think about whether this is right?] Finally, I'll tune the PID to that plant to get the parameters for that temperature range, and move on to the other ranges.
Now, assume the process reaches 70°C. The new parameters are loaded and the integral counter reset. The error may be 1°C, but the power required is much more than that to reach 21°C, it is certain the controller will demand less than P watt. This means the temperature will droop a lot before the integral term demands P watt, and only then will the dP additional watt eventually bring the process to 71°C (and it will certainly overshoot). The bigger P is compared to dP, the worse it gets.
It almost seems like the heaters should be driven with the sum of the controller output, and the power required to stay at the current "reference temperature" (e.g. 70°C). But off the shelf controllers do not offer that, so there must be another way.
What am I missing? What's the proper way?
*: It's effectively Gain Scheduling.