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-----.
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.
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.
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
With big simlification I use now such equation:
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?
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.
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
So what advices you can give in this case. How I can fight with this
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.
The heater(radiator with valve) can be throttled. Rooms have different
(it can be 5x4m or 100x100m) Air isn't well mixed. Precision = 1-2
Other things that affect temperature - warm floor(water).
How I can use these measurements. Any algorithm? This book is
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.
Can You advice algorithm and maybe implementation of autotuner.
Thanks for Your answers.
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?
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
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
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.
"it's the network..." "The Journey is the reward"
firstname.lastname@example.org Info for manufacturers: http://www.trexon.com
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.
I didn't either. I thought it is called sliding mode control. However,
anticipator is descriptive.
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
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.
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.
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.