Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.arch.embedded > #29717

Re: PID controller: dummy questions

From pozz <pozzugno@gmail.com>
Newsgroups comp.arch.embedded
Subject Re: PID controller: dummy questions
Date 2020-06-27 16:53 +0200
Organization A noiseless patient Spider
Message-ID <rd7mh9$81b$1@dont-email.me> (permalink)
References (4 earlier) <R5yJG.196$cc1.128@fx29.iad> <875zbd15oo.fsf@nightsong.com> <xnwo3tccnd.fsf@delorie.com> <871rm111h9.fsf@nightsong.com> <1a04bc83-d541-4210-8959-7ad8562f6224o@googlegroups.com>

Show all headers | View raw


Il 27/06/2020 09:07, Rick C ha scritto:
> On Saturday, June 27, 2020 at 2:12:21 AM UTC-4, Paul Rubin wrote:
>> DJ Delorie <dj@delorie.com> writes:
>>> Typical systems will limit the I term to some range so it won't go out
>>> of bounds (or "wind up" as they say).  It doesn't decay on its own, but
>>> the system can cause its value to reduce to zero due to the Ki math.
>>
>> Do you mean it saturates (controller stops increasing it once it reaches
>> some maximum)?  Ok, but won't it reach the maximum and stay there?  The
>> Ki math I think was:
>>
>>    I += Ki * err   (note += not = )
>>    Vout = P + I
>>
>> So if the error is almost always positive, I will keep increasing.
>>
>>>> E.g. in a thermal system, you have to keep adding heat
>>>
>>> Yes, but the amount of extra energy you put in is constant in that case,
>>> and when the extra energy balances so that you stay at your set point,
>>> the I term stops increasing, because the error is now zero.  Drain more
>>> hot water, the I term goes up.  Insulate the tank, the I term goes down..
>>
>> I'm imagining a tank starting with 20 degree water and you want to heat
>> it to 50 degrees.  Now the error is 30 degrees, or am I interpreting the
>> wrong thing as the error?  You turn on the heat and the error decreases
>> as the water gets hotter.  Eventually the water reaches 50 degrees and
>> the error is 0, but I is some positive number (the integral of the error
>> over the time it took to reach 50 degrees).
>>
>> Now you draw out some hot water, say to wash dishes; you replace it with
>> more 20 degree water, so the system is say at 40 degrees now (error is
>> 10).  You turn the heat back on, but again, I keeps increasing.  You
>> might overshoot a little (say to 51 degrees, error is -1) in which case
>> I might decrease a little until the tank cools back down.  But really,
>> the error will always be either positive or near 0.  So I keeps increasing.
>>
>> I have to be missing something.  Thanks.
> 
> Yes, you are missing that the error variable can be both positive and negative and by definition will balance the I variable to a value that makes error return to zero.
> 
> Once the water in your heater reaches the set temperature the error will be zero but the heat sent to the water heater won't be zero.  If water is drawn the temperature will drop and the error term will go positive again, the integral term will increase to restore the error to zero, but at that point the heat into the tank will be higher than before so that the temperature will rise above the set point and the error will go negative.
> 
> It is a mistake to think there will be more positive error than negative error.  Once the water is warmed to the appropriate temperature the integral value will be back at the value it had before cold water was added.

I think the wrong assumption was: as soon as the error goes to zero, P 
and I term should be zero as well, because we reached the set-point.

For example, when I need to move the optical bar of a scanner to a 
certain position.
As soon as the bar reached the wanted position, the power from the 
motors must be cut off immediately (because the bar doesn't move if the 
motors are off).
This means that when the error is zero, P+I must be zero as well. 
However this is impossible. P is really zero, but I isn't zero, because 
it's the sum of all the previous errors that are all positive. So the 
power doesn't drop to zero and we have an overshoot (the bar moves after 
the wanted position). Now the error starts being negative and I starts 
decreasing.

I think that systems similar to optical bars (where the controlled 
signal must be stopped as soon as the set-point is reached) is best 
controlled by a P-only algorithm.

Now come to mind another scenario. Suppose I need to transfer heat to a 
liquid to reach a set-point temperature, for example 80°C starting from 
20°C. It's very import to avoid overshoots, because some strange and 
very dangerous chemical reactions happen when the temperature is over 82°C.
I know I can tune the PID controller (i.e., find an optimal Kp, Ki, Kd) 
to avoid overshoots, but I'm wondering if some other techniques can be 
implemented too.

For example, changing dynamically PID coefficients when the error is 
negative.

Back to comp.arch.embedded | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

PID controller: dummy questions pozz <pozzugno@gmail.com> - 2020-06-25 19:55 +0200
  Re: PID controller: dummy questions Hans-Bernhard Bröker <HBBroeker@t-online.de> - 2020-06-25 21:14 +0200
  Re: PID controller: dummy questions DJ Delorie <dj@delorie.com> - 2020-06-25 15:29 -0400
    Re: PID controller: dummy questions David Brown <david.brown@hesbynett.no> - 2020-06-26 08:43 +0200
  Re: PID controller: dummy questions Richard Damon <Richard@Damon-Family.org> - 2020-06-25 22:21 -0400
  Re: PID controller: dummy questions pozz <pozzugno@gmail.com> - 2020-06-26 10:59 +0200
    Re: PID controller: dummy questions David Brown <david.brown@hesbynett.no> - 2020-06-26 11:07 +0200
    Re: PID controller: dummy questions Rick C <gnuarm.deletethisbit@gmail.com> - 2020-06-26 09:10 -0700
    Re: PID controller: dummy questions Richard Damon <Richard@Damon-Family.org> - 2020-06-26 12:29 -0400
      Re: PID controller: dummy questions Rick C <gnuarm.deletethisbit@gmail.com> - 2020-06-26 12:00 -0700
        Re: PID controller: dummy questions Richard Damon <Richard@Damon-Family.org> - 2020-06-26 22:24 -0400
          Re: PID controller: dummy questions Paul Rubin <no.email@nospam.invalid> - 2020-06-26 21:41 -0700
            Re: PID controller: dummy questions DJ Delorie <dj@delorie.com> - 2020-06-27 01:15 -0400
              Re: PID controller: dummy questions Paul Rubin <no.email@nospam.invalid> - 2020-06-26 23:12 -0700
                Re: PID controller: dummy questions Rick C <gnuarm.deletethisbit@gmail.com> - 2020-06-27 00:07 -0700
                Re: PID controller: dummy questions pozz <pozzugno@gmail.com> - 2020-06-27 16:53 +0200
                Re: PID controller: dummy questions David Brown <david.brown@hesbynett.no> - 2020-06-27 17:31 +0200
                Re: PID controller: dummy questions Rick C <gnuarm.deletethisbit@gmail.com> - 2020-06-27 10:09 -0700
                Re: PID controller: dummy questions Rick C <gnuarm.deletethisbit@gmail.com> - 2020-06-27 15:44 -0700
                Re: PID controller: dummy questions Richard Damon <Richard@Damon-Family.org> - 2020-06-27 12:34 -0400
                Re: PID controller: dummy questions DJ Delorie <dj@delorie.com> - 2020-06-27 11:51 -0400
            Re: PID controller: dummy questions Rick C <gnuarm.deletethisbit@gmail.com> - 2020-06-26 23:06 -0700
              Re: PID controller: dummy questions Paul Rubin <no.email@nospam.invalid> - 2020-06-26 23:18 -0700
                Re: PID controller: dummy questions Rick C <gnuarm.deletethisbit@gmail.com> - 2020-06-27 00:23 -0700
            Re: PID controller: dummy questions Tauno Voipio <tauno.voipio@notused.fi.invalid> - 2020-06-27 10:28 +0300
            Re: PID controller: dummy questions Richard Damon <Richard@Damon-Family.org> - 2020-06-27 18:13 -0400
    Re: PID controller: dummy questions Hans-Bernhard Bröker <HBBroeker@t-online.de> - 2020-06-26 22:30 +0200
      Re: PID controller: dummy questions Phil Martel <pomartel@comcast.net> - 2020-06-28 13:10 -0400

csiph-web