PID tuning for Oven Temperature

I don't think he is trying to control the temperature of each individual component. He doesn't have enough available zones to do that and the elements don't move with the widgets in any case. So if you have two widgets that heat differently you can't directly control both anyway.

In effect he is attempting to bake a cake. When you put a cake in the oven you preheat the oven to 350 degrees F and then you put the cake in. Ultimately you don't care what the instantaneous temperature of the cake is. All you care is that the ENVIRONMENT stays at the temperature you want it to stay at because experience and your recipe say that, if that happens, you can remove the cake from the oven at the correct time and it will be done.

If the environment temperature stays at what it should be and you soak the widget for the appropriate time the correct results should occur.

Keith
 
I don't think he is trying to control the temperature of each individual component.
The OP has made it clear the widgets must be at a certain temperature range to be callsed good.

He doesn't have enough available zones to do that and the elements don't move with the widgets in any case. So if you have two widgets that heat differently you can't directly control both anyway.
Hopefully the widgets have the same thermal mass.

In effect he is attempting to bake a cake. When you put a cake in the oven you preheat the oven to 350 degrees F and then you put the cake in. Ultimately you don't care what the instantaneous temperature of the cake is. All you care is that the ENVIRONMENT stays at the temperature you want it to stay at because experience and your recipe say that, if that happens, you can remove the cake from the oven at the correct time and it will be done.
Baking cakes is open loop and from experience as you said. If you want to be sure each widget reaches a certain temperature range the current method will not work.

If the environment temperature stays at what it should be and you soak the widget for the appropriate time the correct results should occur.
There isn't much time in this case. It isn't like putting a cake in the oven for 30 minutes.
 
It is a very simple operation...worked around conveyor furnaces for years.
The parts enter the preheated furnace at the set speed of the conveyor. The amount of speed is how long the part is required to be in the furnace for the correct amount of soak time at temperature.

Some questions to ask here:
Is it a new piece of equipment?
How it has always been running this configuration of parts? They haven't added more parts than they have been running? (I ask this to make sure the furnace isn't being used beyond its capability/capacity)
Are all the heating elements good and they have been checked?
Is the re-circulation fan good and belts are tight? Clamp-On ammeter shows fan is under load?.....Sometimes the blade inside comes loose.
 
Nathan
Furnace is not new - several years old. Product design is little different than when furnace was new. All zones of furnace are without fans. Elements are in good working order. The PID values have never been really tuned properly. Just via "trial and error". Would like to do more scientifically.
 
Peter - I'm not sure how to convert your numbers below into values of Kp, Ki and Kd for the PLC 5 running independent equation, PD blocks and derivative of PV. Could you show how to convert and then would try values in PLC to see if any improvement. The temperature span that is used is 0 to 10,000c. Thanks

The SOPDT gains are Kc=0.130156 Ti=0.218043 Td=0.023443
 
michaeli, converting to PLC 5 gains has always been a fuzzy thing for me since I don't use PLC5s.

The way I see it the PLC5 PID requires 3 ratios. One is the conversion of temperature to counts. I believe the PLC5 AtoD converter is 14 bits or has a range of 16383. I don't see how you can map 0 to 10000 degrees C to 0 to 16384 counts makes sense.

The second ratio is the PID gain. Rockwell has chosen to have unitless controller gain of counts in to counts out. This is what must be calculated.

The third ratio is counts out to percent control output.

Kc has units of %control output/degree error so

Code:
Kc(%Control/degree) = (temperature range degrees/counts_in)*Proportional_gain(CountsOut/CountsIn)*(100%Output/CountsOutRange)

So to start with are you sure your temperature range is 0 to 10000 when you are only using about 20-500 degrees?
Is this a hardware limitation? I would at least cut the range down to 0 to 1000 so the temperature resolution is better than 0.1 degree
How is your output scaled? Knowing KC, the first ration and the third ratio we can compute the second ratio which is the controller gain.

Ron Beaufort should check my assumptions.
None of this affects the problem with the spikes. What temperature are you controlling?
 
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!
 
Last edited:
Hi,
I've given a solution just minutes ago. Search for name.
Cheers
That would help but you seem to miss the part about what temperature is michaeli trying to control. That is the main problem. Does he want to control the temperature between the widgets or the temperature of the widgets. You can see from the plots that the feedback temperature changes rapidly depending on whether a widget is there or not. Once that problem is solved then the feed forwards would help.

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!!!
This is so wrong.
https://youtu.be/Ba1yJhvOmvc
Look at the derivative gain.
Without the derivative gain this system can't be tuned.
You need to study pole placement.
Here is a pdf made from a Mathcad worksheet. This worksheet was made for this forum when someone else said the derivative gain is useless or similar.
The first part, pages 1-12, is my calculations for using a full PID with a critically damped response.
The second, pages 13-14, part is Pandiani's best efforts to control the same system without a derivtive gain. He knew a derivative gain was required but he was playing along.
The third part, pages 15-23, is my best efforts to tune the system witout a derivative gain.
http://deltamotion.com/peter/Mathcad/Mathcad - T0C1 MassOnASpring-PID.pdf
Here is a temperature example. I calculate what the gains should be. Follow the math if you can. See equation 19.
http://deltamotion.com/peter/Mathcad/SOPDT/Mathcad - SOPDT SP.pdf
You can find the same equations for the controller gain and the integrator and derivative time constants elsewhere on the web. I just showed how the gains are derived.

I get involved with systems that require a second derivative gain.
 
Peter,
Sadly you once again did not understand what was written.
In your first part I agree with you, that the disturbances are external to the control. Sudden changes in process variable represent load changes or sensor problems (failed/failing sensor or sensor located where it does not properly read). The trend shows only one heat source and one sensor, so I assume that it is an oven/furnace with one heat source and one sensor. While there are NO external disturbances, a stable temperature should be achievable with a stable heating power. This is what the feed forward is for. We know where we need to be, so GO THERE, no mucking about. If the temperature mysteriously changes for no apparent reason, then the reason needs to be found and the problem rectified. Who knows, the furnace could have been opened, the conveyor entry may be leaking hot/cold air? It cannot be fixed with control, unless you sense the disturbance and adjust for it.

On the second point about derivative, I said "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!!!"
In plain English, meaning that if you ARE doing servo position control you DO need P & "D". You seemed to misunderstand as you proceeded to post a video on Servo control with derivative, exactly what I had said.
I don't think we are on different pages, but don't try to be smart. I too have a ton of REAL WORLD problem solving experience and many successful projects behind me!
 
I read what you wrote. That is why I included the SOPDT example with the derivation for the controller gains including the derivative time constant.
The SOPDT is a temperature example, not a position control example.
If you study pole placement you will find you need 1 gain to place 1 pole. A SOPDT systems has two poles. This mean is requires two gains excluding the integrator because the integrator comes with its own pole.
The two required gains, excluding the integrator, are the proportional and derivative gains.
In reality there are no FOPDT systems but manual system identification makes identifying a SOPDT impossible so people approximate with the FOPDT and ignore the derivative time constant but it isn't optimal.
 
pid tuning for oven temperature

Peter/Coldownunder - the oven/furnace has, at most times, parts going in a rate of 100/hour. so the temperature inside the furnace chamber (with thermocouple about 1 foot above parts) is very stable at +/- 2c. but if there is a gap, where the operator didn't load a part on the conveyor, the temperature can deviate a little more than this. also the furnace is shut down only once a month so it is not ramping up that is a problem. the PID needs are for adjusting for disturbances from gaps on the conveyor. also the parts are entering this first zone of the furnace at a temperature of about 250c so they are preheated. just having problem with converting the values generated from the open loop test to the PLC Kp, Ki and Kd values. I can post PLC pid block setup if this is of benefit.
 

Similar Topics

Hello, I am attempting to tune a PID loop on a process. The process involves a valve with electronic actuator that has quite a high deadband...
Replies
10
Views
2,199
so i have 4 25gpm wells feeding a 1000gal tank (T-1), with an additional 15gpm from a decant tank for 3hrs every 12hrs. P1 and P2 both controlled...
Replies
154
Views
35,938
Hi everyone, yet another PID problem. I'm hoping I understand enough of the process I'm controlling that my request for help is reasonable. If a...
Replies
113
Views
28,235
A few months ago, I started to look into PID controllers and the tuning of first order processes. This has, partly thanks to you, resulted in a...
Replies
162
Views
62,575
I haven't had to tune a PID loop in a very long time. It's actually a PI loop for a pulse width modulation s.v. What was the name of that tuning...
Replies
16
Views
4,122
Back
Top Bottom