Forums

PID autotuning - not working for heating application

Started by Frank W. November 5, 2009
clip....
> They are all independent but the results at the temperature sensors > will be from the sum of the 3 heaters. =A0This should hold true unless > there is something that I don't know where superimposition doesn't > apply. =A0The states for a system of SOPDT equations would simply have > the temperature and the temperature rate at each of the 3 temperature > sensors. =A0I don't see how the temperature at one sensor will affect > another temperature since the temperature sensors are not heat > sources. > > Peter Nachtwey
Your right; and I see how the dependent/independent has to be handled for state-space representation. A state space reduction to a non- singular matrix is required to make A nonsingular in the ABCD representation.
> > t1'=3DA1*t1+B11*u1(t-dt11)+B12*u2(t-dt12)+B13*u3(t-dt13)+C > > t2'=3DA2*t2+B21*u1(t-dt21)+B22*u2(t-dt22)+B23*u3(t-dt23)+C > > t3'=3DA3*t3+B31*u1(t-dt31)+B32*u2(t-dt32)+B33*u3(t-dt33)+C
As a note: In more complicated systems you need additional terms on the left. m1*t1''' + n1*t1'' + p1*t1' m2*t2''' + n2*t2'' + p2*t2' Ray
On 2009-11-06 00:55, Tim Wescott wrote:
> 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. >
For simple temperature control applications such as using small TE coolers to stabilize diode lasers and optical detectors, we use a very simple autotuning algorithm that works really well. We hit the plant with a step function, and fit the T(t) curve to a plant model consisting of a time delay tau followed by an integrator. That has a simple transform proportional to exp(-j omega tau)/(j omega), so we compute P and I to get about a 65-degree phase margin, and wind up with a nice-looking transient response and decent bandwidth. This is done at test time using BIST functions in firmware. The main thing that improves the BW is to put an 0603 thermistor on the bottom of the cold plate circuit board, right next to the TEC and connected to the top plate of the TEC by a ground pour. That gets the response down into 100-ms territory. (It's hard to measure at that rate, because it's faster than the TEC itself.) As I say, that's a much simpler plant than a domestic heating system, but it works great. Cheers Phil Hobbs -- Dr Philip C D Hobbs Principal Consultant ElectroOptical Innovations LLC / Hobbs ElectroOptics Optics, Electro-optics, Photonics, Analog Electronics Briarcliff Manor NY 10510 http://electrooptical.net http://hobbs-eo.com
On 2020-01-09 10:38, Phil Hobbs wrote:
> On 2009-11-06 00:55, Tim Wescott wrote: >> 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. >> > > For simple temperature control applications such as using small TE > coolers to stabilize diode lasers and optical detectors, we use a very > simple autotuning algorithm that works really well. > > We hit the plant with a step function, and fit the T(t) curve to a plant > model consisting of a time delay tau followed by an integrator.  That > has a simple transform proportional to exp(-j omega tau)/(j omega), so > we compute P and I to get about a 65-degree phase margin, and wind up > with a nice-looking transient response and decent bandwidth.  This is > done at test time using BIST functions in firmware. > > The main thing that improves the BW is to put an 0603 thermistor on the > bottom of the cold plate circuit board, right next to the TEC and > connected to the top plate of the TEC by a ground pour.  That gets the > response down into 100-ms territory.  (It's hard to measure at that > rate, because it's faster than the TEC itself.) > > As I say, that's a much simpler plant than a domestic heating system, > but it works great. > > Cheers > > Phil Hobbs >
Doh, just noticed the time stamp. Weirdly this thread came up as unread in Thunderbird this morning. Cheers Phil Hobbs -- Dr Philip C D Hobbs Principal Consultant ElectroOptical Innovations LLC / Hobbs ElectroOptics Optics, Electro-optics, Photonics, Analog Electronics Briarcliff Manor NY 10510 http://electrooptical.net http://hobbs-eo.com