# Temperature control

Not a true analytical control's guy but I would like to take an educated guess---Putting a limit on the system probably results in the loss of a
(varying) feedback signal such that the closed loop now turns into an open loop with an associated gain change. Or--Temperature overshoot (beyond the set limits) results in a deadband which keeps the system hunting. Probably off base but-----. MLD

<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Denis wrote:

Your integrator is probably winding up. Look for references to integrator windup on the web, or read my article at http://www.wescottdesign.com/articles/pidwophd.html , which is mostly about implementing PID in C but has a section on integrator windup, why it's a problem and what to do about it.
--

Tim Wescott
Wescott Design Services
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Any time you have limits you are effectively opening the loop. Then the integral term winds up and you get a big delay on response when the situation returns to normal, followed by a big overshoot to the other side.
How do you control the temperature of the pipe? Are you controlling the temperature of hot water flowing through it? Remember that you still haven't told us exactly what kind of a heating system you are dealing with. If you are heating the water, that is a good place to put feedforward control. That is, do a rough energy balance for the heat losses for any given ambient temperature. Make sure the hot water system is capable of delivering approximately twice that much heat. Then your local temperature control has a */- 50% control margin on both sides. That way you should be able to stay away from limits easily. Oh, by-the-way, make sure you stop your integrator whenever you hit a limit.
Walter.

<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Thanks Tim, I've eliminated integral windup by limiting to drive maximum. But now (with limited integral part and output) I can't find purpose for using integral at all(I don't see any considerable speed up in settle to target) But when I remove limiting from drive it gets faster to target when I use integral. Any suggestions? With big simlification I use now such equation:
dT/dt=Stream_from_pipe/density*mass*volume(of concrete)
Where Stream_from_pipe = Square_pipe*coef_heat_conductivity/d*(T_pipe-T_con)
Where d=(d_pipe_external - d_pipe_internal)/log(d_pipe_external/pipe_internal)
Where Volume = a* b* h; a,b - size of the room,h - thickness of floor So, when calculate with numbers I get a system 1/(680*s+1)
And maybe anybody can advice easy for implementation algorithm for auto-tuning. Is Ziegler's the best?
Denis.
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Denis wrote:

With a "perfect" controller how fast you get to target depends entirely on your drive limit, nothing else. In general the integrator in your controller isn't there to get you to target faster, it's to keep you exactly on target as your steady-state drive requirements change. If you need integral control at all it's to keep your room temperature exactly the same in July as it is in January.
--

Tim Wescott
Wescott Design Services
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Good day, Sirs. Now I am confronted by some difficulties with tuning PID. My chief engineer said that Ziegler closed-loop method is unsuitable for temperature cntrol in the big room (for example swimming pool).Because process of tuning will take too long time.
I have got a book :"Good Tuning:A Pocket Guide By Gregory K. McMillan" And there is written :"The Shortcut Open-loop Method. The shortcut method is ideally suited for very slow responses such as column temperature where there is a good control valve and positioner and you need to get a quick estimate of the controller tuning settings. This method looks at the change in ramp rate of the %PV for about two to three dead times. It doesn't require the loop to be at steady state."
So what advices you can give in this case. How I can fight with this problem?
Thanks. Denis.
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

There are a couple of points which need to be known before you dash off and do the tuning. Is the heater (or cooler) just an on/off control or can it be throttled? How big is the room, and what is the heating/cooling capacity of the temperature control? Is the room air well mixed? How closely do you need to control the temperature? What other things affect the temperature in the room?
Basically, you are going to need to turn the heater on, and record the time it takes for the room to start to respond, then its response rate. Record the dead time and the temperature rise with time. Depending on the controls you have, this dead time may be just about all you need. If you have the equipment for it, then you need to find out how much the room temperature rises per percent valve opening or per percent duty cycle. This is probably covered in your tuning book.
If push comes to shove, and the heater isn't so large that it overwhelms the room, then a simple thermostat may be all that is needed. Some already come with built in autotuners.
Michael
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

The heater(radiator with valve) can be throttled. Rooms have different size (it can be 5x4m or 100x100m) Air isn't well mixed. Precision = 1-2 degrees. Other things that affect temperature - warm floor(water).

How I can use these measurements. Any algorithm? This book is something like scetch. There isn't much information.

I need to design my own thermostat because many rooms will be controlled by one system. So there will be PID in every room and SetPoint for every one will be set remotely.
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
wrote in message news:

and
it
affect
time
Record
you
This
the
come
Lets see if I remember anything from my control courses..... nope... forgot the whole blessed thing. Found the book. I'll use Process Control by Peter Harriot, Page 180.
Firstly, there are already systems which allow each room to be controlled independently off of one main header. We can reinvent the wheel here a bit. Reinventing the wheel is fun sometimes.
Start your system and set each heating valve to some nominal valve opening. Increase the valve position by some amout delta V. You will get the dead time (or lag L) and the slope (N) of the heating curve once the room starts warming up. Get the slope from about half way up the curve.
For proportional control, k = deltaV/NL for PI control k = 0.9 deltaV/NL, Tr = L/0.3 for PID control k = 1.2deltaV/NL, Tr = L/0.5, Td = 0.5L
Note that the book I'm looking at cites this as another Ziegler Nichols method. I've substituted deltaV = deltaP/12. detaP/12 was the fractional change in input on a pneumatic controller. I have a feeling that the 12 might be based on a standard property of a pneumatic device.
Is that any help?
Michael
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Thank You for help, Michael. You helped me to move in right way. I found a lot of literature about open-loop tuning of PID. Denis.
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
I would be surprised if you really need PID control. Most times, like a house thermostat, on/off is all you need. For PID control you should have some way of modulating the amount of heat going into each room. OK, you have radiator valves, but do you really want to modulate them all? Isn't is much cheaper to just switch the flow to each radiator on and off, using the (hand) modulating valve just to balance the flows to the various rooms? How much does the temperature rise after you switch the flow to a radiator off? If it is less than your control limits (your 1-2 degs) then modulating is not going to make much difference. And also remember that you have no way of increasing the cooling (as I read it you only have heating), so PID will be ineffective when the room is too hot, as it will not be able to move its effect continuously from heating to cooling anyway. Francis
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
On Thu, 19 Aug 2004 14:11:03 GMT, the renowned "Francis"

Why do house thermostats typically include an "anticipator" then?
Best regards, Spehro Pefhany
--
"it's the network..." "The Journey is the reward"
snipped-for-privacy@interlog.com Info for manufacturers: http://www.trexon.com
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
A bit of derivative I guess.
Info for manufacturers: http://www.trexon.com

http://www.speff.com
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
On Sat, 21 Aug 2004 00:03:55 GMT, the renowned "Francis"
You'd think that from the name wouldn't you?
I think they actually "anticipate" the change from the output being on, so they end up being an integrator wrapped around a hysteresis block. End result is proportional control using an on-off output.
Best regards, Spehro Pefhany
--
"it's the network..." "The Journey is the reward"
snipped-for-privacy@interlog.com Info for manufacturers: http://www.trexon.com
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
I think I answered that in another thread only I didn't know it was called an 'anticipator'. There is a small heater built into the thermostat to slightly heat the sensor as long as the furnace is on. This will cause the TS to cut out just a little earlier than it would if it had to wait for the all the heat to get back to it. It is a form of implied derivative in that it adds to the measured PV in proportional (very roughly) to the heat input and thus to the rate of rise of temperature. It prevents a temperature overshoot at the end of the cycle.
Walter.

<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

I didn't either. I thought it is called sliding mode control. However, anticipator is descriptive.

the
the
that
input
That is a strange way to 'anticipate' it would work in theory but it seems like a lot of effort to separately heat the sensor. Why not do something simple like:
error = sp - pv s = tau * error' + error If s > 0 then heater on else heater off.
This is a simple example of sliding mode control. SMC. This can be done easily using op amps or a very small micro controller.
Notice that there is no integrator to wind up or gain to tune or change when the load changes. Tau, the time constant, need only be set to a time that is not too short. This is very robust. If the ambient temperature changes ( load ) then only the duty cycle changes.
Peter Nachtwey
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Actually it is extremely simple. The TS is a simple temperature switch which closes a contact when the temperature is below the setpoint. This energizes the fuel gas solenoid. In series with the contact is a small heater element that warms the temperature sensor. The one I have is even simpler; the current flows through the bimetallic spiral on its way to the mercury switch. Since the current flows as long as the contact is closed, the heater subtracts from the deviation whenever the temperature is rising. The cost is zero since not a single component is added to the design.
I love simple.
Walter.

<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>

## Site Timeline

• ### 6th International Conference on Control, Modeling and Computing (CMC 2020) -Ju...

• Share To

Polytechforum.com is a website by engineers for engineers. It is not affiliated with any of manufacturers or vendors discussed here. All logos and trade names are the property of their respective owners.