Prev: Artesyn BAJA PPC 750
Next: FPGA Soft Core CPUs
From: Frank W. on 5 Nov 2009 12:37 Is there a control engineering expert here? I could us a bit of help on how to implement a PID autotune function for a heating application (a small boiler). My current PID autotune function produces no reliable results. I use the relay feedback method (�strom and H�gglund) but it seems that the ultimate period Tu - one of the paramters determined with the relay feedback test - is directly correlated to the relay output step u. u is an arbitrary value which makes Tu an arbitary value. Since Tu is required to compute Ti and Td (e.g. Ti = 0.5 Tu = Ziegler-Nichols), autotune is not possible. I believe this is because the machine heats very quickly (1500W boiler) and cools down very slowly, so the process value isn't a sinusoid. Here is an example graphics, green line is setpoint, red plot is process value and the grey vertical bars represent heat output u: http://img196.imageshack.us/img196/7409/examplejr.jpg Regardless of u, the temperature always dips the same, small amount below setpoint - because the machine cools slowly, the temperature can not fall far below setpoint before it's reacting to the heat. It then shoots up by an amount that is proportional to u. As a result, the plot resembles mountains above setpoint. If u is large, temperature will shoot high above the setpoint and take very long to cool down. Big mountains, so Tu gets large, Tu ~ u = my problem. Since all PID temperature controllers have Autotune, there must be a solution for this problem. Any ideas?
From: Vladimir Vassilevsky on 5 Nov 2009 14:09 Frank W. wrote: > Is there a control engineering expert here? You can contact Tim Wescott who is the expert in control systems, however the problem is not really a rocket science. > I could us a bit of help on how to implement a PID autotune function for a > heating application (a small boiler). It looks like a huge lag in the control loop. PID approach won't work very well. Is your heater on-off type or proportionally regulated? > Since all PID temperature controllers have Autotune, there must be a > solution for this problem. Any ideas? To begin with, abandon autotune and see if you can get good control by manual adjustment of parameters. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
From: Bob on 5 Nov 2009 17:43 Frank W. wrote: > Is there a control engineering expert here? > > I could us a bit of help on how to implement a PID autotune function for a > heating application (a small boiler). > > My current PID autotune function produces no reliable results. I use the > relay feedback method (�strom and H�gglund) but it seems that the ultimate > period Tu - one of the paramters determined with the relay feedback test - > is directly correlated to the relay output step u. u is an arbitrary value > which makes Tu an arbitary value. Since Tu is required to compute Ti and Td > (e.g. Ti = 0.5 Tu = Ziegler-Nichols), autotune is not possible. > > I believe this is because the machine heats very quickly (1500W boiler) and > cools down very slowly, so the process value isn't a sinusoid. Here is an > example graphics, green line is setpoint, red plot is process value and the > grey vertical bars represent heat output u: > > http://img196.imageshack.us/img196/7409/examplejr.jpg > > Regardless of u, the temperature always dips the same, small amount below > setpoint - because the machine cools slowly, the temperature can not fall > far below setpoint before it's reacting to the heat. It then shoots up by an > amount that is proportional to u. As a result, the plot resembles mountains > above setpoint. If u is large, temperature will shoot high above the > setpoint and take very long to cool down. Big mountains, so Tu gets large, > Tu ~ u = my problem. > > Since all PID temperature controllers have Autotune, there must be a > solution for this problem. Any ideas? > As someone else said: try manually adjusting parameters, instead. Do you really need autotune? If the boiler/heater/load/setpoint don't change much, then twiddle the parameters until you like the result. That said, there are at least a dozen algorithms for autotuning. They fall into two basic methods (relay and step), but the parameters they generate can be quite different due to the different desired responses (e.g. "fastest to reach a certain error after a step change in setpoint" vs "little or no overshoot after a disturbance", etc.). You have to be clear about what you're trying to do before you bother trying to tune it. Large delay and overshoot are common to heater control loops. Placing the sensor as close as possible to the heater can help, but then you might not be measuring the thing you want hot. I just had a (maybe) similar problem that included a requirement for a smooth ramp of the temperature. That led me to close the loop around the slope (calculated with an extremely simple FIR filter) during ramping. The slope-loop worked far better than trying get the temperature-loop to follow a ramping setpoint. YMMV Bob
From: Tim Wescott on 6 Nov 2009 00:48 On Thu, 05 Nov 2009 13:09:43 -0600, Vladimir Vassilevsky wrote: > Frank W. wrote: > >> Is there a control engineering expert here? > > You can contact Tim Wescott who is the expert in control systems, > however the problem is not really a rocket science. Or you can wait for him to get around to doing the newsgroup thang. (thanks for the plug). I'll bet there's rockets out there with temperature loops. >> I could us a bit of help on how to implement a PID autotune function >> for a heating application (a small boiler). > > It looks like a huge lag in the control loop. PID approach won't work > very well. Is your heater on-off type or proportionally regulated? > >> Since all PID temperature controllers have Autotune, there must be a >> solution for this problem. Any ideas? > > To begin with, abandon autotune and see if you can get good control by > manual adjustment of parameters. > Ditto -- try it by hand, and go from there. -- www.wescottdesign.com
From: Tim Wescott on 6 Nov 2009 00:55
On Thu, 05 Nov 2009 18:37:21 +0100, Frank W. wrote: > Is there a control engineering expert here? > > I could us a bit of help on how to implement a PID autotune function for > a heating application (a small boiler). > > My current PID autotune function produces no reliable results. I use the > relay feedback method (Åstrom and Hägglund) but it seems that the > ultimate period Tu - one of the paramters determined with the relay > feedback test - is directly correlated to the relay output step u. u is > an arbitrary value which makes Tu an arbitary value. Since Tu is > required to compute Ti and Td (e.g. Ti = 0.5 Tu = Ziegler-Nichols), > autotune is not possible. Are you sure you haven't just stopped too soon in turning the output step down? I see where you're having trouble with this; is there some reason you can't turn u down even further? Things may start looking better when you get it down to where the temperature curve is roughly symmetrical around the average. > I believe this is because the machine heats very quickly (1500W boiler) > and cools down very slowly, so the process value isn't a sinusoid. Here > is an example graphics, green line is setpoint, red plot is process > value and the grey vertical bars represent heat output u: > > http://img196.imageshack.us/img196/7409/examplejr.jpg > > Regardless of u, the temperature always dips the same, small amount > below setpoint - because the machine cools slowly, the temperature can > not fall far below setpoint before it's reacting to the heat. It then > shoots up by an amount that is proportional to u. As a result, the plot > resembles mountains above setpoint. If u is large, temperature will > shoot high above the setpoint and take very long to cool down. Big > mountains, so Tu gets large, Tu ~ u = my problem. > > Since all PID temperature controllers have Autotune, there must be a > solution for this problem. Any ideas? Why do you want to use autotune? If this is a product that you're working on, and if the boiler design is the same for all of the parts that you ship, then you should just need one tuning. Autotune is for when you're selling a shrink-wrapped controller that has to work for anything -- and autotune is often considered to be a good way to get the tuning in the ballpark so that a human can get involved and actually make it work right. Unless you need to adapt to a variety of different, unexpected boiler combinations -- that don't change as the boiler is operating -- then there's not much value in autotune, IMHO. -- www.wescottdesign.com |