Michael,
PID is an age old problem. People think it solves the problems of the world, but unfortunately you need to understand the process and and its dynamics.
They call me FeedForwardCol, because I've never seen a system that doesn't work with almost NO tuning if Feed Forward is the predominant component. Your case is a little different as you are heating and there is a time lag, but I use the same basic principle that every system has a set of parameters which are known and from these a close approximation to the required output can be derived.
The PID function that you have shown has the component "Bias", which can also be termed feed forward.
In your application, the variables affecting the amount of heat required are:
1. Component entry temperature [Tin] (say 20degC in spring)
2. Speed (m/hour) of the conveyor as it brings new components.
3. Heat energy range of the heating system 0~100% = 0~ [P] kW
4. Temp Setpoint [Tsp] (450degC) which gives temp rise required.
5. The specific heat energy [Es] kWhr/degC absorption of each component from entry to exit kWhr/degC.
6. Furnace length [L] (m).
From these determine the Bias (Ballpark power P kW) required as follows:
Bias = KP * [s * L * Es * (Tsp-Tin)], where KP = power scaling constant.
Now this looks a little difficult, but I make it easier!
I assume that , [L], [KP] and [Es] are constants.
We will incorporate these factors into the factor [F], which will be determined empirically (open loop operation).
So we arrive at Bias = F * (Tsp-Tin).
Determining F.
1. Get the furnace up to set temperature manually without any load (conveyor off).
2. Start the conveyor and manually control the heating until a near setpoint (+/-50degC) stable temperature (+/-5degC) is reached , stable for 5minutes. Note the entry temp of the component [Tin], the actual stable operating temperature [To] and the power setting for the heating as a % [P%].
3. Use these to calculate [F] as follows:
F = P% / (Tsp-Tin).
Use this to calculate the Bias value as above: Bias = F * (Tsp-Tin)
Now with this bias term, you will be able to have a fairly high gain, which will get you rapidly to the setpoint and a low value of integral to remove offset. This will be a VAST improvement over what you have on its own, but I top this off with a trim limitation on the output. You see, I know that I can closely calculate the required output as above, and I like to limit the output to avoid over/undershoot, so I limit the PID output as follows:
PID_Out_Max = Bias + TRIM
PID_Out_Min = Bias - TRIM
Where; TRIM = Bias * (Trim% / 100%), where Trim% = Trim limit (circa 5~50%).
Naturally the values of [PID_Out_Max] & [PID_Out_Min] must be limited to not go outside the operating range of the heater.
In the initial heating phase of the furnace, the value of F needs to be very different, as too the values of gain and integral will need to be different.
I call this my PID_TRIM function. I have other enhancements for it, but it has never let me down. Tuning a TRIM_PID is almost not required if the Bias value is calculated well. Note that at start-up of the PID_TRIM hold the output at the Bias (feed forward) value until the temperature nears the setpoint, at which point release the hold and allow it to control.
You will not believe how easy this is!
I have feed forward on virtually everything.
Centrifugal pump flow & pressure control are specialities of mine.
By the way, unless you're doing Servo Position control, the "D" in PID stands not for derivative, but for DESPERATION! When you have no idea, you derivative!!!
Anyway, happy cooking!
Remember,
Optimism is born of blissful ignorance. Pessimism is the product of bitter experience!