Tuning PI controler for integrating process without time delay

Tuning PI controler for integrating process without time delay
HI THERE: I'm trying to tune a PI controller for controlling an integrating
process which does not have time delay for disturbance rejections . The process is characterised by the following transfer function: (-1.84*10^-4)/s . I have read many papers in this field but unfortunately all of them about tuning PI controller for integrating process with time delay. If any of you has idea about how to do the job then his help is greatly appreciated. If also you know any paper which talks about this topic then I will be very happy to know it as soon as possible. Thank you and waiting for help as soon as possible,
Add pictures here
βœ–
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Nasser wrote:

If you're using a formula that includes time delay as a parameter, set the delay to zero. Resolve any computational ambiguity (0/0) with L'Hopital's rule.
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
Hi Jerry : Thanx for ur reply: If I put time delay to zero then the integral term will be zero for all the Tuning formula which I have come across, so, this trick did not work with me. I also I tried to include very small time delay but also it didn't work. I have not heard about L'Hopital's rule before. If you have them can you please forward them to me. I still looking for your help to solve this problem. Thanx and ur help and other helps are highly appreciated. Nasser
Add pictures here
βœ–
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Nasser wrote:

If there really is no delay, you don't really need to tune anything. The chance is very good, though, that your model is too simple to tell the whole story.
For of a description of L'Hopital's rule an explanation of how it's used, see http://www.ies.co.jp/math/java/calc/lopi/lopi.html
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
HI Jerry; What do u mean by saying that the chance to tune the controller is very good. In fact it is not , I'm trying to tune it for disturbance rejection not for set-point tracking. I know it is very easy to tune it for set-point tacking by using only proportional term. But for disturbance rejection , u must use PI controller. I could find a good response by using trial and error appraoch but I'm looking for formulas or PI correlations which can make the job easier.I'm also looking if there is a rule of thumb for this problem or not. Thanx and waiting for ur reply.

Add pictures here
βœ–
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Nasser wrote:

I meant to say that if your model assumes that there's no delay, it's probably ("chances are") overly simple. Remember Einstein's famous dictum: "Everything should be as simple as possible, but not more so."
If the delay really is insignificant, then tuning merely moves the frequency of the stable resonant peak. Moving it away from a disturbing frequency is about all you can do. A derivative term is needed to damp the resonance.
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
Nasser wrote:

The reason they include time delay in most rules is that there is almost no such thing as a process loop with zero time delay. Either the process has some delay, or the output device valve positioner, etc.) has some delay, or the transmitter measuring the process has some delay, or the controller (especially if it is implemented in digital form) has some delay, or more likely, a combination of all of these. That said, if you have a perfectly integrating process that has exactly zero delay, then there is not tuning that can screw it up. Everything works. Changing the tuning constants just changes the responsiveness and the resonant peaking at some frequency. But they are all stable.
So the first thing you need to do (besides being suspicious of the assumption that your LaPlace transform actually describes the process) is to decide what the goal of the tuning is. Do you want minimum output movement that keeps the process within some boundaries for a given disturbance size, or do you want the tightest control of the process variable in the presence of some expected disturbance, or do you want the controller to be well behaved (however you define that) when the process character shifts within some boundaries, etc. Only after you have defined your goal does 'optimum tuning' make any sense.
--
John Popelish

Add pictures here
βœ–
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Hi John: Thanx for your nice reply and advice. Actually I'm trying to model the water level behaviour in an arbitaray three-phase separator. I have ignored the fast dynamics elements such as valve, transmitter,etc. I'm trying to tune the controller for regulatory problem , disturbance rejection for tighest control, i.e I want from the controller to bring the water level back to its set-point when ever there is a disturbance. The maximum amount that the disturbance can have is twice the nominal value. Can you please explain to me what do u mean by saying everything works. Also I would like from u to suggest to me the following: 1- How can I tune the controller , if the disturbance has the following dynamics 1.84/s, and the nominal value of the disturbance is 0.005 m^3/s , and it takes step changes. 2- In case I decided to use the rule that are available for integrating process with time delay , what is the suitable value for the time delay that i can use , the simulation step is done every 1 second . I'm really waiting for ur help and if u feel that I'm missing some points plz let me know as soon as possible.
Add pictures here
βœ–
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Nasser wrote:

I meant that any tuning you try will result in a stable level in the absence of disturbance. How it approaches that stable level is all that changes as you vary the tuning. For instance, if you truly had a perfectly integrating, zero delay process loop, you could apply infinite proportional gain (two state output) and the level would head toward setpoint at maximum possible speed from either side, and vibrate there at infinite frequency and zero amplitude, thereafter. No other tuning could exceed this performance at disturbance rejection. But, of course, no such loop exists.

There is a 1/2 second average delay, right there. The level transmitter (especially if it includes a filter time constant) adds some more.

I would start with the integral time at a minute or so, so that it is not significant, compared to the process speed. Then I would start turning the proportional gain up till the level showed significant oscillatory behavior. Then cut that gain in half.
Then start shortening the integral time till the oscillatory behavior starts to show up on a step disturbance, again (at a lower frequency than you got with excessive proportional gain) and double that time.
Then you are set to investigate if a bit of derivative is useful or not to help clip the peak level swing right after the disturbance and damp the settling back to setpoint. If you use too much, you will get a higher frequency oscillation than you got with the excessive proportional gain. Again, a fair rule of thumb is ti increase the derivative time till oscillations start to show up (they will appear at the output before they are much visible on the level measurement) and then cut it in half.
This method makes no assumptions about how much loop delay is present, but just reacts to it as it is.
You might well also improve the disturbance rejection if it is predictable. For instance, if some other available piece of information coincides with the flow change that disturbs the level, you can make a model that predicts the controller output that cancels this flow change, and add it to the controller output so that mist of the output correction is based on this model. Then the controller tuning is just there to correct for the error of the model, not to handle the whole disturbance after the fact.
--
John Popelish

Add pictures here
βœ–
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
John Popelish wrote:

There's a more detailed account of how to tune a PID controller accessible from http://www.wescottdesign.com/articles/pidwophd.html . It's written for implementing control loops in embedded software but it shows nice pictures of what happens as you tune the controller (and it'll give you a chance to reconcile the terms "integral gain" and "integral time").
Note that this technique has always given me a controller that's a bit on the "unsafe" side -- i.e. I always end up with about 45 degrees of phase margin, and I often end up with gain margins shy of 6dB. It's probably as safe as houses is you're tuning a one-off system, but I've never been entirely pleased with it for production systems -- but then on a production system you can nearly always do a frequency sweep or other qualification, where that's rarely practical with a mill or other large installation.
--

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

Since P+I has the Transfer Function: K*(1+sTi)/sTi, simply combine that with your Ppen-Loop plant transfer function, do the usual bit of manipulation to get the Closed-Loop Transfer Function and, and there's your answer, parameterised in terms of K and Ti. Now select K & Ti to give the response you require.
Kelvin B. Hales Kelvin Hales Associates Limited Consulting Process Control Engineers E-mail: snipped-for-privacy@khace.com Web: www.khace.com
Add pictures here
βœ–
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Don't confuse him. To start with, since this is an integrating process, just use a "P" term with the correct sign, play with the number (increase/decrease) until you are happy.
glu

Add pictures here
βœ–
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

HI gLU: ur idea works vey well if i'm tuning the controller for set-point tracking. I did that and it works very well. But the same idea does not work with disturbance rejection. Do u know PI correlations which can help me. Thanx.
Add pictures here
βœ–
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
For an integrating level control with no time delay (just the single large lag of the level) a P only controller with a high gain should work well (assuming you want tight level control; for the level to fluctuate and absorb load changes, a low gain would be used).
The P only will work not only for setpoint changes but for disturbances. If you really want the level to be held closely to the setpoint, add a little reset (long reset time). Just adjust the gain as high as you can without getting oscillation, then cut back.
I have seen this type of loop often in paper mills. They have all be easy to tune just by watching the loop and adjusting the gain.
Is this a loop that you are currently trying to tune or one that you haven't had hands on experience with yet (e.g. still under construction)?
John Shaw www.jashaw.com/pid
snipped-for-privacy@gmail.com (Nasser) wrote in message

Add pictures here
βœ–
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
snipped-for-privacy@jashaw.com (John Shaw) wrote in message

Add pictures here
βœ–
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
snipped-for-privacy@jashaw.com (John Shaw) wrote in message

Hi John: Well , I'm trying to control the water level via simulation for tight control for disturbance rejection. I found that there is always off-set when there is disturbance. I could get nice terms for the proportional and integral terms by using trial and error plus some control sense. However, my supervisor asks me to find some correlation between the tuning terms which can be used directly without consuming time in using trial and error method. I mean , he wants me to find relationships for the tuning terms which relate them to the dynamics of the process like what is available in the literature by Cooper and others for integrating process with time delay. However, by using the IMC approach , I arrived to the following relationships: kc=(2/(lemda*Kp)) and Ti=2*lemda. where: Kc is the proportional gain ,,, Ti is the integral reset time, Kp is the process gain and lemda is the tuning parameter which is user-defined term. The question which puzzeles me now , how can we select the lemda term. I found in the literature by Tyreus for the integrating process with time delay , lemda=time-delay *sqrt(10) where , sqrt= square root. Can someone suggest to me good value for lemda for integrating process without time delay. if some one can suggest it will really help alot. Thanx and waiting for me help.
Add pictures here
βœ–
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Nasser wrote:

Nasser:
Am I correct in assuming that you have missed out on basic control theory? If not forgive me; if so you really need a book on basic control theory such as "Feedback Control of Dynamic Systems" by Gene Franklin, Prentice-Hall. It's in its 4th edition now, the copy I've seen was the 1st or 2nd edition and it struck me as being a good book for self-study.
For the mean time I'm going to throw a couple of results at you and hope that (a) they'll help, (b) you'll understand them, and (c) your process doesn't violate the assumptions I'm making.
The first result: If you have a plant with transfer function H_p(s) and a controller with transfer function H_c(s) and you arrange them in the usual way:
U_d | | | .---------. .---------. | | | | | |+ U + | | | | + V Y ------->O---->| H_c(s) |------>| H_p(s) |----->O-----o------> ^ | | | | | - | | | | | | | '---------' '---------' | | | | | | | '----------------------------------------------' created by Andy΄s ASCII-Circuit v1.24.140803 Beta www.tech-chat.de
The transfer function from the intended input U/Y will be
T_i(s) = (H_c(s)H_p(s))/(1 + H_c(s)H_p(s)).
The transfer function from the disturbance to the output will be
T_d(s) = 1 / (1 + H_c(s)H_p(s)).
The second result: The way that you maximize your disturbance rejection is by maximizing the product H_c(s)H_p(s) in the frequencies where the disturbance is strong. In theory you do this by pushing the system to infinite bandwidth by applying infinite gain. That's the algorithm, and it's too small to devote a web page to.
The third result: The reason the second result isn't applied much is because real systems (as you've mentioned in other posts) always have unmodeled dynamics, or characteristics that change over time or from one system to the next.
So you know your model hasn't included all the dynamics of your system. This means that there is some limit beyond which you cannot push the system bandwidth. To get your best response you need to push this bandwidth as high as you can without running into the problems with your system model, or perhaps pushing it high enough to exceed your disturbance rejection requirements by a comfortable degree and then stopping.
If you want to have an algorithm to get the "best" disturbance rejection then you need to look to optimal control theory. Unless applied with care this will shatter your assumptions about your plant and give you an unstable system. To get the best disturbance rejection attainable without an unstable system use robust control theory or intuition, plus a good idea about where your system model starts breaking down.
This is where that "delay" term comes in. I haven't used the technique, but the delay term will provide a nice catch-all term for all of the system's unmodeled dynamics, basically putting a limit on the amount of gain that you can build into your controller before everything goes to hell.
If your problem is that your system is nonlinear, with small disturbances giving you a small effective delay and large disturbances giving you a large effective delay, then you need to use you own judgment on what figure to put in there, or you need some nonlinear compensation to go with your system nonlinearities.
I hope this helps.
--

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

Nasser,
There is a straightforward for selecting the PI tuning parameters. It is described in "Process Control Fundamentals for the Pulp & Paper Industry" which is published by TAPPI PRESS (1995). I will cover the procedure briefly. Almost always you are trying to tune for disturbance rejection instead of level SP changes. Assume that the disturbance is the outlet flow and you are controlling the inlet flow to maintain the level.
a. Let the process be Gp = [ Kp/s ] b. The controller is Gc = Kc[ 1 + Ki / 60s ] ; Kc = Proportional Gain, Ki = Integral Gain, Kp = Process Gain.The number 60 is in the transfer function since the time units is seconds. c. The input to the process is [ Flow In - Flow Out ] d. Assume that the dynamics of the inlet flow are fast ( this is usually the case ) i.e. no deadtime or lag. e. The response of level to a change in the flow out ( disturbance ) is given by the transfer function: Gd = [ Kp s ] / [ s^2 + KcKp s + KcKpKi /60 ] It is informative to look at a sketch of the Root Locus for this system. There are two closed loop poles at the origin for Kc = 0.0. As Kc is increased the poles will have a real and an imaginary component. You don't want an imaginary component as it will result in oscillatory action. But if you continue to increase Kc the closed loop poles will approach the negative real axis at point A. The required relationship to place the poles at point A is:
Ki = 15 KcKp or Kc = Ki / 15 Kp where the closed loop time constant is given by: Tcl = 2 / KpKc (seconds) and there will be no overshoot in level.
The primary control objective the level control loop is usually to allow the tank to absorb flow variations so that the effects have a minimum impact on the upstream (downstream) process. You must let the level droop (or rise) instead of tuning the loop so tight that the level nearly draws a straight line. The concept of Allowable Level Variation (ALV) simplifies the tuning of level control loops. The ALV is the maximum variation from setpoint that you are willing to permit under all operating conditions. ALV is expressed in percent (%). Use the largest ALV possible so the tank can absorb the flow disturbances. For example, if the level setpoint is 60% and an ALV of 25% is selected, then the level will remain between 35% & 85%. This is true even if the flow out is increased from 0% to 100%. After the ALV has been selected and the process gain (Kp) has been determined by a simple open loop "bump" test, the following tuning equations can be used (assumes level in %):
Kc = 100 / ALV, Ki = 15 KcKp and the closed loop time constant is Tcl = ALV / 50 Kp
Example:
Kp = 0.002 select ALV = 33.33% Setpoint = 60% so the level will remain between 26.7% and 93.3% for all conditions.
Kc = 100 / ALV = 3.0 and Ki = 15 KcKp = 0.09
If we relaxed the ALV to 50.0% we get Kc = 2.0 and Ki = 0.06
Hope this helps. It really does work.
Fred Thomasson
change
Add pictures here
βœ–
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Hi
I have made an interactive simulator with a useful Bode plot of the case you describe, see
http://techteach.no/kybsim/buffer_tank/index.php
Material about a procedure of how to tune a PI controller from specifications of disturbance (flow) attenuation is available from that page.
Best regards, FinnH
Add pictures here
βœ–
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Disturbances do not follow specifications.

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.