Limiting PID Loop Overshoot

Entropy wrote:


HA! Read _my_ book -- while I can't claim that I really pounded it home (wait for the 2nd-edition, and thanks for making me look) I do mention bandwidth limitations, and ultimate limitations due to plant design.
I'm not sure if you're too focused on your phase properties, or if you haven't thought it through, but a 'conventional' PID with all three terms in the forward path will always overshoot, because of the zeros in the transfer function. Forget any claims of re-tuning -- just remember that any undershoot before zero error is reached must be paid for with exactly the same area of overshoot.
As the group has so excellently pointed out, in a linear system you can fix this by having only the integrator in the forward path, which removes those untoward zeros from the (s-domain) transfer function. This still leaves you with overshoot for large excursions and for overshoot as a result of disturbances -- both of these can be controlled to some degree or another by clever methods of limiting windup, which is what I thought I was asking for when I wrote the post.
--

Tim Wescott
Wescott Design Services
  Click to see the full signature.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

I don't understand. I would say 1/(s+1) has a pretty limited bandwidth. It is MUCH less than 1 kHz. Tam, you have not made it clear by what you mean by adding phase lead. Do you mean adding a derivative term in the forward path?
Peter Nachtwey
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

that
Ok what I mean is that the transfer function you have is un-realistic. Here is a better one
1/(s+1). G2(s)
where G2(s)=wn^2/(s^2+2.zeta.wn.s+wn^2)
at least this is a simplified model. A first order in cascade with a second order where zeta<1 ie it has a resonance. Practically it will have more than one resonance but let's just consider the first. This is your limiting factor on bandwidth for your controller. Now you cannot simply notch out this resonance since there will be many more waiting for you at slightly higher frequencies (though sometimes you can). The resonance(s) contribute to oodles of phase lag. Phase-lead is derivative action of sorts in that it is bandlimited to a defined freq range ie
(1+sT1)/(1+sT2) where T1>T2
You cannot use pure differentiation - it's too noise for one thing. You always need to filter it.
If it's not resonances then higher oreder poles introduce phase lag. Either way there is always a limiting factor on bandwidth. Becuase of this you need to compare like with like and hence keep the unity-gain crossing frequency constant when comparing controllers.
Tam
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Tam, your new plant has 3 poles. So how do you place the poles with your simple lead-lag controller? You keep saying the same thing over and over but saying the same thing over and over doesn't make it so. Show me a close loop transfer function that can be verified. In any case you are changing the topic which is about integrator limiting. My threads were just to refute the statement that traditional integrators always cause the PV to over shoot the SP. I have shown this isn't necessarily so with type 0 plants.
The closed loop poles can be placed to there is no overshoot even without a integrator limit. The controller is a PID with an extra higher order derivative gain.
For your plant I assume G=1 omega = 1 zeta=.5 alpha=1 The real pole
My desired response has four real poles at -0.63 and it critically damped.
My gains are Ki = 0.157 Kp=0 Kd=.381 Kdd=.52
Tam, now it is your turn to provide your proof.
Peter Nachtwey
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Doesn't mean anything - what is your BANDWIDTH!!? We can easily get a greta response if you have very little bandwidth.

Who says I am using a lead-lag controller? For your plant I would use the following
(1+sT1)/s - that's what you would call PI I think using your terminology.
Then I would add a second integrator making the system unstable. I would add a lead to stabilise this out but would have to be careful of the resonance.We also have to maximise the bandwith without letting the resonant peak show through.
So we have
(1+sT1)/s^2.(1+sT3)/(1+sT4)
However, I would probably add a second phase advance. To see what's going on you must draw a Bode Plot. All this time domain stuff and placing poles is crap - you have no concept of bandwidth. The basic Bode Plot will have a -12dB/octave roll off then -6dB/Octave then -12 then the resonance with teh peak at least 6dB down below 6dB.I mean this is basic stuff why the mystery? Every disk-drive in the world is controlled this way.It is true that there is an effect you can get from integrators which I believe you call wind-up. I get around this by putting diodes back to back around the integrators (or several as the case may be).You can do the same in software.
Now, this PID stuff is crap, it's for amateurs who cannot draw a Bode Plot and don't understand phase-margins.In some large plants this is quite hard to do and the PID methods are best however but not for let's say basic speed controllers and position servos.
Tam
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
| > Tam, your new plant has 3 poles. So how do you place the poles with | > your simple lead-lag controller? You keep saying the same thing over | > and over but saying the same thing over and over doesn't make it so. | > Show me a close loop transfer function that can be verified. | > In any case you are changing the topic which is about integrator | > limiting. My threads were just to refute the statement that | > traditional integrators always cause the PV to over shoot the SP. I | > have shown this isn't necessarily so with type 0 plants. | > | > The closed loop poles can be placed to there is no overshoot even | > without a integrator limit. The controller is a PID with an extra | > higher order derivative gain. | > | > For your plant I assume | > G=1 | > omega = 1 | > zeta=.5 | > alpha=1 The real pole | > | > My desired response has four real poles at -0.63 and it critically | > damped. | > | | Doesn't mean anything - what is your BANDWIDTH!!? We can easily get a greta | response if you have very little bandwidth.
bandwidth = .51 of the -real pole.
| | > My gains are | > Ki = 0.157 | > Kp=0 | > Kd=.381 | > Kdd=.52 | > | > Tam, now it is your turn to provide your proof. | > | > Peter Nachtwey | > | Who says I am using a lead-lag controller?
What is this that you posted in your previous thread? (1+sT1)/(1+sT2) where T1>T2 I see below you mean this to be only part of the controller but you haven't made that clear.

| following | | (1+sT1)/s - that's what you would call PI I think using your terminology.
You can't place all the poles with that.
| | Then I would add a second integrator making the system unstable. I would add | a lead to stabilise this out but would have to be careful of the | resonance.We also have to maximise the bandwith without letting the resonant | peak show through. | | So we have | | (1+sT1)/s^2.(1+sT3)/(1+sT4)
This looks like a PID with an extra integrator and a low pass filter. | | However, I would probably add a second phase advance. To see what's going on | you must draw a Bode Plot.
Fine, but how does the avoid the integrator windup so the closed loop system doesn't overshoot. That is what this thread is about.
| All this time domain stuff and placing poles is crap
So how do you get a critically damped or overdamped response? How do you keep the integrator from winding up. It is clear from this post you do use integrators.
| - you have no concept | of bandwidth
I do but this thread isn't about bandwidth, it is about not overshooting the SP due to integrator windup. My examples were meant to be text book like examples. I pointed that out in previous post. I was trying to impress anybody with high bandwidth exampless. The theory at 1Hz, 10Hz or 100Hz is all the same.

Yes, but you still haven't made the case that your double integrator will not overshoot. I don't see how the phase lead will help. That is a mystery. You haven't proven to me that your PID with an extra integrator and low pass filter will control without overshooting. Especially not a type 1 system disk drive system. I assume you are trying to control the seeking action of the heads.
| Now, this PID stuff is crap, it's for amateurs who cannot draw a Bode Plot | and don't understand phase-margins.
Who do you think most users are? I make motion control products. My customers understand PID. It is hard to get many to use the derivative let alone the higher order derivatives for errors in acceleration and jerk. It is my job to make the product easy for the users to use by providing tools like graphing and auto tuning. I don't impress users by blowing them away with technology they don't understand and can't use. You may be able to do what ever you want with your disk drive controller because the users will never see it.

| to do and the PID methods are best however but not for let's say basic speed | controllers and position servos. | | Tam
That depends on what one is trying to control.
Peter Nachtwey
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

structural
amplify
That's becuase the loop does not have the maximum bandwidth that it could. You can always reduce overshoot by reducing bandwidth (and hence increasing phase margin) but that's not always a good call.Come on - this is basic stuff - why are you still debating this in the 21st century!
Tam
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Entropy wrote:

Not so. A classical linear PID overshoots 11% in response to a step change of command. A practical PID with limited proportional band that is allowed to enter that band with a saturated (fully wound up) integrator usually overshoots more. A more practical PID whose integrator is disabled until it reaches the proportional band overshoots 11% of half the width of the proportion band. Once the error charges the integrator, overshoot is needed to discharge it.
There are many controllers that don't overshoot. Those that don't aren't really PID, whatever they're called.
Jerry
--
Engineering is the art of making what you want from things you can get.

  Click to see the full signature.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Jerry Avins wrote:

The simplest option that limits overshoot on setpoint step change is to drive the proportional term only with the process measurement, not with error. This causes the process to ramp to setpoint with integral action, only. Changes in process are reacted to by all 3 terms.
In the Honeywell 3000 DCS system, this version of the PID is called equation C.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
John Popelish wrote:

The action is then very similar to what's described on my website, except that integrator windup is handled /ad hoc/ if at all.

Is it really PID if the block diagram is different?
Jerry
--
Engineering is the art of making what you want from things you can get.

  Click to see the full signature.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Jerry Avins wrote:

Its not classical PID (everything based on error), but a variation. What I want is a controller that allows me to not just select if the proportional and derivative gains are based on error or process (the Honeywell equation selections), but allow a continuous variation between all process and all error for these terms (or a separate gain for setpoint and process changes for these two terms). This would make tuning of cascade loops much more customizable. And it would allow tuning with no overshoot on setpoint changes possible without the very over damped response of Equation C.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Our new controller provide this capability but how is one to select the PID gains and the coefficients when most can even get the PID gains right? My company makes motion controllers. I need to provide this flexibilty to maximize bandwith. I would think process people would do just fine with the I-PD.

Yes, but how would you optimize all these numbers? I know how I would do it, but must don't have the math capability.

Again, I-PD will do what you want. Cascaded I-PD should work just fine. I-PD gives up bandwidth for two important features: 1. It doesn't overshoot when tuned properly 2. It works well as an inner loop because it only the I term works on the error. The output of the outer loop or set point to the inner loop is usually noisy. If the inner loop is a PID, the inner loop would respond to all the 'noise' in the set point that the I-PD doesn't. This allows one to crank up of the gains on the inner loop which makes the system 'stiffer'.
When following a motion profile one want all the available bandwidth so the actual position can follow the target position during quick accelerations. In this case a PID is best.
Peter Nachtwey
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Peter Nachtwey wrote:

I guess that is why I get the big bucks. ;-)
I tune by trial, both with output disturbance, and setpoint disturbance. Very little math involved.
> My

(snip)
That sounds like "Equation C" I mentioned. It is my default choice, unless its slow setpoint response is a problem.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

I think it is more a matter of implementation and proper tuning. I still think you have to look at pole placement first. If the closed loop poles are placed on the negative real axis the result will be either a critically or overdamped response. I still like dynamic integrator limiting when using the standard form of PID, but I prefer the incremental form because the P and D gains can be in the forward path or feedback path and not overshoot when properly tuned.
Peter Nachtwey
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

One way to prevent integral windup is add a limiter as the last element in the PID. Set the high and low limits that you want - typically 0 to 100. However in some cases, such as oversized valves, you may want to use a high limit less than 100 - as you get all the flow through the valve at a lower output. Subtract the input of the limiter from the output, multply by a gain obtaining: k*(output - input). Add this value to the input of the integrator. As long as the output doesn't exceed the limit, the value is 0.0. You don't want to make k too large.
Fred Thomasson
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Another comment. We use the integrator wind up error as a 'you must tune your feed forwards alarm. If the feed forwards are adjusted properly the integrator will not wind up at all. We provide a means of graphing the integrator contribution. If the feed forwards are properly tuned the integrator term remains very close to 0. One can tell by the integrator's slight variances from 0 where the feed forwards must be adjusted and it what direction. We have used this technique for years. I know that using the integrator as a tuning tool for the feed forward seems backwards but think about it. PID, in any form, only works where there is an error. If the feed forwards ( inverse of plant model ) are correct, there is very little error with even without the PID. The PID is just there to provide the necessary corrections to the output in response to load changes and modeling errors.
The use of feed forwards allows one to dodge the integrator windup problem.
Peter Nachtwey
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Peter Nachtwey wrote:

I agree. This is another benefit of having two proportional gains, one derived from setpoint and one derived from process. The one derived from setpoint is essentially a linear setpoint to output feed forward term. The I-PD form does not provide this feature.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
John Popelish wrote:

With my servos there is no integrator windup. In fact, when one of my position servos gets a step command, the integrator immediately tells the motor to back up. That's because the difference between the actual position and the desired one is great enough to saturate the output. The bound circuit (or software module) doesn't let that happen. The output amplifier is held at the edge of saturation by forcing the integrator so that its sum with unconstrained error and derivative are appropriate. As the load accelerates, the derivative increases and the error decreases, so the integrator has less excess drive to overcome. When the error becomes small, the residual on the integrator along with the derivative, brake the load. Once into the proportional band, the integrator charges just enough to hold the load in place. Everything Peter and Tim say about the similarity of I-PD and PID (except for the integrator's appropriate time constant) is valid in the linear region (proportional band). The difference in behavior lies in how the system behaves outside that band.
Jerry
--
Engineering is the art of making what you want from things you can get.

  Click to see the full signature.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
There is a thread on www.controlguru.com that covers limiting the integrator.
Peter Nachtwey
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

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.