Name | Last modified | Size | Description | |
---|---|---|---|---|
Parent Directory | - | |||
README.html | 2024-11-28 14:28 | 55K | ||
README.html.folkmigration | 2015-11-12 17:18 | 49K | ||
correction.pdf | 2010-07-15 10:59 | 205K | ||
finalpaper.pdf | 2022-11-29 18:02 | 331K | ||
mathworks/ | 2010-07-15 10:59 | - | ||
mfiles/ | 2010-07-15 10:59 | - | ||
mic-version/ | 2010-07-15 10:59 | - | ||
more/ | 2022-01-04 15:00 | - | ||
presentation/ | 2010-07-15 10:59 | - | ||
smooth_tunings/ | 2010-07-15 10:59 | - | ||
Abstract. The aim of this paper is to present analytic tuning rules which are as simple as possible and still result in a good closed-loop behavior. The starting point has been the IMC PID tuning rules of Rivera, Morari and Skogestad (1986) which have achieved widespread industrial acceptance. The integral term has been modified to improve disturbance rejection for integrating processes. Furthermore, rather than deriving separate rules for each transfer function model, there is just a single rule for a first-order or second-order time delay model. Simple analytic rules for model reduction are presented to obtain a model in this form, including the "half rule" for obtaining the effective time delay.
------------ MISPRINTS ------------- Please see the "yellow stickers" in the file finalpaper.pdf for misprints. These misprints include: p. 293, eq. (6): sign error in the denominator of the dead time expression, i.e. should be 1/e^{theta*s}. p. 293, equation following eq. (8): e^-theta*s (before approx-symbol) should be replaced by e^-theta0*s p. 293, eq. (9): Add Laplace variable s before + in the numerator. p. 294, eq.(12): Rule T3, denominator. Should be: (tilde{tau0} - T0)s+1 (i.e., T0 instead of tau0). (Comment added 21Nov2004: more generally, replace theta by tauc where tauc is the desired closed-loop response time) p. 294, eq.(15): Lower fraction line extends too far. Should read [1/(y/ys)desired]-1 p. 299, Table 4: Case E5 (PI). 0.0008 should be 0.008 p. 299, Table 4: Case E6 (PI). theta=1.19 (and not 1.69) (this changes also the settings and the values for Ms and performance) p. 299, Table 4: Case E8 (PID). Should be Kc=1 (and not 1.5). This makes the design more robust (reduces Ms etc.) p. 302, Table 6: heading of column 2. Should be: Kc*k (and NOT: Kc*k') p. 302, Table 6: heading of column 3. Should be: KI*k*theta (and NOT: KI*tauI/theta) p. 208, Eq (42): Should be (0.17s+1)^2 p. 208, theta= 1/2 + 0.66 + 0.028 = 1.19 (and NOT 1.69) COMMENT: The journal is to blame for the rather large number of typo's in this paper. The typesetting (or translation of the latex file) was very poor, and afterwards they did not even fix many of the errors that were pointed out by the author. The Erratum in Vol.14 (2004) is intended to take care of the more serious and "non-obvious" errors. ----------------- CORRECTIONS ----------------- Numerator time constant rules in eq. (12): Replace theta by tauc in all places (so there is no change for the "tight" rule with tauc=theta, but the result may change in other cases). Comment: This makes the model reduction a bit more genereral, and also removes some of the iterative nature of the rule (as theta is unknown at this point in time, whereas tauc is an engineering choice). However, the fact that you have to choose tauc in order to do the approximation is somewhat of an disadvantage because it couples the model reduction with the tuning. Thus, some iteration may be required in practice if you follow the "tight rule" tauc=theta. Actually, this is not too surprising, because for good performance you want to have a good approximation close to the closed-loop time constant tauc. ----------------------- ADDITIONAL INFORMATION ----------------------- Directory mathworks contains: Matlab files for SIMC model reduction (simc_reduce.m) and PID tuning (simc_pidtune.m) (by Bora Erylmaz, Mathworks) Directory more contains: 1. The "old-final" version of the paper as it was submitted to the journal (contains fewer typos... check this first if you suspect a possible typo). 2. A version of the paper presented at the 2001 AIChE Annual Meeting (Reno, Nevada, USA, Nov. 2001) with the title "Probably the best simple PID tuning rules in the world". (this is a humorous spin-off from the Carlsberg brewery commercial from about 1997 with the slogan "Probably the best beer in the world". 3. Link to the project by S. Hellem (2001) which concludes, based on trying to recreate the original Ziegler/Nichols simulations, that the ZN-tunings are for the ideal PID. 4. + some additional stuff, including an early version of the rules from 1998 (in Norwegian) and student projects with evaluations of the rules (Holm-Butler 1998; Hareldseid-Johansen 1999). Directory mfiles contains: Matlab files used to generate results, including IAE-optimal PID settings. Directory presentation contains: Powerpoint presentation from AIChE Annual meeting (Nov. 2001) -------------------------------------- ADDITIONAL COMMENTS FROM THE AUTHOR -------------------------------------- The first 8 comments are from August 2003/ March 2004/ May 2004 (they are included as comments in the version reprinted in the Norwegian bulletin "Modeling, Identification and Control" in 2004): ---------------------------------- 0. Total variation ---------------------------------- The total variation (TV) of the input (u) is used as measure of input quality. We want TV(u) small. Note that the Total variation of a signal u is TV(u) = \int |du/dt| dt. Thus, TV is large for a signal u with large values of |uy/dt|. Thus, if we want "smooth control" then TV should be small. ................................... 1. Model reduction. ................................... The main contribution in terms of model reduction is the simple HALF RULE for the effective delay. It started in 1997 as a simple empirical rule that I used for teaching in my process control class; see the following handout from 1998 (in Norwegian): http://www.nt.ntnu.no/users/skoge/publications/2003/tuningPID/more/1998 Before 1997, when teaching the students about the "effective delay", I had added the inverse time constant and ALL of the smaller (neglected) denominator time constants. However, this gives a conservative (too large) estimate of the delay when it is applied to common PID-rules, and gives rather sluggish tunings. The reason is that a time constant is not quite "as bad" as a delay. I experimented a bit and found that adding only half of the largest neglected time constant (and adding the rest to the smallest retained time constant) gave better tunings. The validity of the half rule was later confirmed by testing it on a large number of processes; see the paper and three student projects from 1998, 1999 and 2001 (see directory more). In summary, the main justification of the half rule in the context of PID-tuning is that it when combined with the SIMC PID-tuning rules consistently results in good tunings with Ms about 1.7 (with tauc=theta). The half rule is reasonable but clearly not optimal in terms of open-loop model fitting (e.g. in the time or frequency domains). On the other hand, open-loop model fitting is not the objective, but rather that the resulting PID-tunings should work well. We have tried other values than a half (in the range from 0 to 1), e.g. see some of the student projects, but this did not improve the results. Let me give some justification for the half rule in terms of tuning. Recall the tuning rules Kc k = tau1 / (tauc+theta); tauI = min(4(tauc+theta), tau1); Typical choice: tauc=theta and consider an original second-order model on the form g0(S) = k e-theta0 s / (1+tau10 s) (1+tau20 s) which we want to approcimate with a first-order model, g(S) = k e-theta s / (1+tau1 s) The "first part" of the half rule is the effective delay. According to the half rule theta = theta0 + tau20/s Compared with the conservative alternative of adding all of tau20 to the delay (i.e. theta=theta0+tau20), the half rule gives a shorter delay (up to a factor 2), which as expected results in a larger controller gain Kc (with the choice tauc=theta the increase in Kc is up to a factor of 2 for a small original delay theta0). The integral time tauI may also be reduced by up to a factor of 2. Thus, the "first part" of the half rule makes both the high-frequency (Kc) and low-frequency (Kc/tauI) controller gain larger, and the effect is largest when the original delay theta0 is small compared to tau20. Let us next consider the "second part" of the half rule, which is the increase in tau1 (from tau10 to tau10+tau20/2). This increases the controller gain Kc by up to a factor 1.5 (the largest increase is when tau10=tau20). However, exactly for cases where we get an increase in Kc (which is when tau20 is large), we also get an increase in the integral time because tauI=tau1. Thus, the value of Kc/tauI (which is the low-frequency controller gain) is unchanged. Thus, the "second part" of the half rule makes the high-frequency controller gain Kc larger, and the effect is largest when tau20 is close to tau10. In summary, we see that "both parts" the half rule result in less conservative settings, especially for cases where tau20 (the largest neglected time constant) is large. ................................... 2. Tuning rules. ................................... The main contribution of the paper in terms of tuning is the modification on the integral time for integrating processes. This significantly improves the load rejection (input disturbance) capabilities when compared to the IMC tuning rules of Rivera et al. (1986). When deriving this modification it was required that the system is just at the limit to oscillations (zeta=1 in eq. 20), which results in the factor 4 in the expression tauI = 4 (tauc+theta). More generally, the factor (or zeta) could be left as a degree of freedom (thanks to Finn Haugen for pointing this out) which would result in the following intergral time for an "integrating" process: tauI = c (tauc+theta) where c = 4*zeta^2. For example, c=2 (corresponding to zeta=0.7. i.e. some low-frequency oscillations allowed) gives tauI=2(tauc+theta). This gives a faster approach to steady state than the original value c=4 (corresponding to zeta=1), but on the other hand robustness is not as good. Added July 2009: This is shown in the following table which applies to an integrating process and choosing tauc=theta (extends the right column in Table 2): c 4 (orig) 2 1.5 tauc/theta 1 1 1 Kc*k'*theta 0.5 0.5 0.5 tauI/theta 8 4 3 GM 2.96 2.74 2.57 PM 46.9 34.1 26.9 Ms 1.70 1.96 2.32 Mt 1.30 1.74 2.17 w180*theta 1.49 1.39 1.32 wc*theta 0.51 0.55 0.58 dtheta 1.59 1.08 0.81 (allowed relative time delay error to remain stable) Note in particular that the phase margin and thus the allowed time delay error is significantly reduced when c (and the integral time) is reduced. Thus, one should only reduce c for cases where performance is important so that one is willing to sacrifice robustness. Added July 2012: The following Tables (prepared by Chriss Grimholt) for an integrating process has tauc adjusted so that the Ms-value is the same for all choices for c (two Ms-values are considered: 1) Ms=1.59 and 2) Ms=1.70). This gives a fairer comparison. Note: J below refers to the IAE-performance with 50/50 weight on setpoints/input disturbances (as defined in PID papers from 2012), that is, J = 0.5 J_ys + 0.5 J_d. Result: We see that for both Ms=1.59 and Ms=1.70, the best performance (minimum J) is obtained with c=2.6. More generally, c=2.6 gives PI-tunings very close to the Pareto-optimal curve for J vs. Ms (thanks to David di Ruscio for pointing this out). The reason for the improved J is better disturbance response (Ms=1.7: Jd decreases from 1.07 with c=4 to 0.82 with c=2.6), whereas the setpoint response is only a little worse (Jys increases from 1.81 to 1.86). However, lowering c (relative to the SIMC value c=4), decreases the delay margin dtheta (from about 1.59 to 1.51), and also requires choosing tauc larger (although not too much; tauc/theta increases from 1.0 to 1.18). 1. Ms = 1.59 c 4.00 3.00 2.60 2.00 tauc/theta 1.24 1.35 1.43 1.66 Kc*k'*theta 0.45 0.43 0.41 0.38 tauI/theta 8.97 7.06 6.32 5.32 GM 3.35 3.45 3.54 3.80 PM 50.05 46.82 45.07 41.84 Ms 1.59 1.59 1.59 1.59 Mt 1.26 1.35 1.41 1.52 w180*theta 1.50 1.48 1.46 1.44 wc*theta 0.46 0.45 0.44 0.41 dtheta 1.90 1.83 1.80 1.77 J 1.63 1.53 1.50 1.59 J_ys 1.93 1.96 1.98 2.15 J_d 1.33 1.10 1.02 1.02 2. Ms = 1.70 c 4.00 3.00 2.60 2.00 tauc/theta 1.0 1.11 1.18 1.39 Kc*k'*theta 0.50 0.47 0.46 0.42 tauI/theta 8.0 6.33 5.68 4.78 GM 2.96 3.07 3.14 3.37 PM 46.9 43.89 42.23 39.20 Ms 1.70 1.70 1.70 1.70 Mt 1.30 1.40 1.46 1.58 w180*theta 1.49 1.46 1.45 1.42 wc*theta 0.51 0.50 0.49 0.46 dtheta 1.59 1.54 1.51 1.49 J 1.44 1.36 1.34 1.43 J_ys 1.81 1.83 1.86 2.02 J_d 1.07 0.89 0.82 0.83 Note: With the SIMC-rule we always have c=Kc*tauI*k' ................................... 3. Tuning parameter ................................... The simple choice tauc=theta for the tuning parameter was also originally chosen for its simplicity, and it is further justified because the resulting value of Ms in the range 1.6 to 1.7 usually gives a good trade-off between speed of response and robutness. Note: For more on the choice of tauc, especially for processes with a small delay, see comment 23 and for a little on lambda tuning, see comment 24. ................................... 4. Derivative action. ................................... Derivative action is recommended only for dominant second order processes (with tau2 larger then theta, approximately). In the simulations I selected the filter time constant tauF = 0.01 tauD (see page 292), but this is NOT the recommended value. Rather, as mentioned on page 303, tauF should be adjusted online in order to reduce the input usage and sensitivity to measurement noise. A typical value is tauF = 0.1 - 0.2*tauD (see also page 292), but as mentioned on page 304, one may increase tauF up to about 0.5*tauD if measurement noise is a serious problem. Added July 2009: Also note that derivative action on the setpoint is not included in this paper to reduce the input usage. This makes the setpoint response slower than expected from the selected closed-loop response time tauc. This is clear from the simulations in Figure 4 for cases 3 (int+lag) and 4 (double int.). ................................... 5. Smooth control. ................................... The tunings in this work are chosen to give "fast but still robust control". However, there are cases where this gives unneccessary fast control. This is further discussed in the following paper: "Tuning for smooth control: Lower limit on the controller gain for acceptable disturbance rejection", which was presented at the IFAC DYCOPS conference (Hong Kong 2003/2004), and was finally published in Ind.Eng.Chem.Res. in 2006. See: http://www.nt.ntnu.no/users/skoge/publications/2006/skogestad_iecr_smooth-pid/ ................................... 6. Second-order oscillatory process. ................................... As mentioned in Remark 3 on page 304, the ideal PID controller should be used to derive settings for an oscillatory process, as shown in the following. We start with a second-order with delay process in standard form g(s) = k e-theta*s / (tau0^2 s^2 + 2*tau0*zeta*s + 1) where tau0 is the time constant (tau0=1/omega0 where omega0 is the natural frequency of oscillations for the plant) and zeta is the damping factor for the plant. |zeta|<1 gives and underdamped system with oscillations. We here assume a stable process with zeta non-negative. We use the IDEAL-FORM (PARALLEL) PID controller c(s) = Kc' (1 + 1/tauI'*s + tauD'*s) = (Kc'/tauI'*s) (tauI'*tauD'*s^2 + tauI'*s + 1) Direct synthesis For setpoint tracking based on g(s) yields a controller c(s) = (1/k)*(1/(tauc+theta)*s) (tauO^2 s^2 + 2*tau0*zeta*s + 1) and matching terms yields the following settings for the ideal form (parallel) PID controller: (x) Kc' = (1/k) * 2*tau0*zeta / (tauc+theta) (y) tauI' = 2*tau0*zeta (z) tauD' = 0.5*tau0/zeta With the choice tauc=theta the controller gain becomes Kc' = (1/k) * tau0*zeta/theta Comments: A. The stability margins with this choice are given by the first column in Table 2 (GM=3.14, PM=61.4 degrees, Ms=1.59). B. For zeta>1 (overdamped process) we get a second-order process, g(s) = k e-theta*s ( (tau1*s+1)(tau2*s+1)) and the above rules reduce to the ones for "second-order" process given in Table 1 (However, note that the settings in Table 1 are for the cascade form, so they need to be translated using (36) to get the "ideal-form" settings in (x)-(z)). C. The settings (x)-(z) will give poor load rejection for "integrating" processes with tau0/theta large. The integral action will then need to be modified (see subdirectory more/extensions for some ideas) D. (Aug. 2008) More generally, for systems with complex poles, I have not derived any good rules. One reason is that I do not thing it is very important because it is well known that complex poles are relatively rare in chemical engineering processes, except for cases where the lower control loops are tuned too agressively (but this should not happen if you use robst settings as recommended in this paper!) .................................. 7. Unstable process. ................................... Rules are yet to be derived for this case. Some preliminary attempts are found in the early Norwegian 1998-version. ................................... 8. Ziegler Nichols tunings. ................................... The PID tuning rules in the original 1942-paper of Ziegler and Nichols state that the integral time is four times the derivative time. I have assumed in this paper that this is for the ideal (parallel form), so that for the cascade form we have that the integral time is equal to the derivative time; taui=taud (ZN), see section 5.3. Actually, I originally assumed that the ZN-tunings were for the cascade form controller, and this can be found the original version of the paper presented at 2001 AIChE Meeting in Reno. This was based on the argument of Shinskey and others, that the pneumatic PID-controllers at that time gave a cascade form. However, after studying it in more detail (see diploma thesis by Hellem from 2001) and discussing it with Dale Seborg and Karl Johan Åstrøm, I became convinced that the ZN-settings are for the ideal (parallel) form. First, they work best for the ideal form. Second, I think Nichols did numerical computations on an electronic computer where the ideal form was implemented. Ziegler and Nichols were possibly not aware of the difference between the two forms or did not think it was important. We tried to search back into old reports, but unfortunately it seems that we were too late to find out conclusively. ................................... 9. (Oct. 2004): On approximating integrating processes. ................................... The half rule should be used also for integrating processes, but note here that tau1 is already infinite so it is does not change. For example, to get a PI-controller for the process g0(s) = k / [s * (tau0*s+1)] we use the approximation g(s) = k e-theta*s / s with theta=tau0/2 This agrees with the entry for process E8(PI) in Table 4. However, there is a MISPRINT for E6(PI) in Table 4 where we should have theta=1/2 + 1 + 0.028 - 2*0.17 = 1.19 (and not 1.69). ................................... 10. (Oct. 2004). Total variation (TV) ................................... Why consider the total variation (TV) of the input (Tables 3,4,5,6,7)? One justification is that it is the same as using a penalty term for input moves (changes), which is common when using model predictice control (MPC). That is, with MPC we usually try to minimize the cost J = IAE + k*TV where k is a tuning factor. ................................... 11 (Oct. 2004, Aug. 2007) Bandwidth) ................................... This is an addition to Table 2. Define wB: Frequency where |S|=0.707. ws: Frequency where |S|=1. Then for tauc=theta: tauI=tau Integrating process w/ tauI=8 theta L = 0.5 e-thetas/thetas L = (0.5/8) (8thetas+1)e-thetas / (thetas)^2 ws*theta 0.511 0.404 wB*theta 0.355 0.297 For other values of tauc/theta (for the case tauI=tau): tauc/theta 0 1 2 3 4 5 ws*theta (|S|=1) 0.74 0.51 0.42 0.36 0.32 0.29 wpeakS*theta 1.39 1.13 1.00 0.90 0.84 0.79 Ms (peak |S|) 3.13 1.59 1.35 1.25 1.19 1.16 .............................................................. 12. (Dec. 2007) Correction of rules for approximating zeros .............................................................. In rules T1 to T3, theta (the time delay) should be replaced by tauc (the closed-loop time constant). This is clear from the derivation in the Appendix where it is stated that "it is most critical to have a good approximation at the bandwidth frequency", which is generally at frequency 1/tauc. Comment: This is not a very serious correction, because the rules given in the paper are OK for the case with "tight" tuning (tauc=theta), which is when we really need a good approximation. ................................... 13. (Oct. 2004). Prefilter for setpoints. ................................... In a standard "one degree-of-freedom" feedback scheme, the input to the controller c(s) is the setpoint error, i.e. (X) u = c(s) (ys-y) In a "two degrees-of-freedom" scheme, the signals ys and y are treated differently by the controller. One option is to prefilter the setpoint, (Y) ys' = f(s) y where f(s) is the prefilter, and send this to the controller. We then have (Z) u = c(s) (ys' - y) Note that with a prefilter f(s), we can in theory make the setpoint response look as we want (subject to the constraint that f(s) should be realizable, e.g. no prediction, and stable). Let us now look at two alternative prefilter designs. I. A somewhat indirect method of prefiltering ys is to not send ys through the D-term (see eq.2) or only send a fraction b through the I-term (see eq.3). In the latter case (Astrom) (3) u = Kc (b*ys-y) + Kc/tauIs (ys-y) Let us assume we have PI-control and let us consider the latter. With c(s) = Kc(1+1/tauIs), (Z) can be rewritten u = Kc (1+1/tauIs) f(s) ys - c(s) y Similarly, (3) can be rewritten u = Kc (b+1/tauIs) ys - c(s) y By comparison, we then have (CONCLUSION) f(s) = (b*tauI*s + 1) / (tauI*s+1) Thus, f(s)=1 (no filter) for b=1 and f(s)=1/(tauI*s+1) for b=0. It is also possible to let b>1 if we want to "speed up" the setpoint response. Note that in the paper, we have chosen b=1. II. Let us now look at a more direct design of f(s). Recall from Figure 3, that the setpoint response has an undesirable overshoot if we use the SIMC-settings for an near-to-integrating process. The reason is that we instead of the original IMC-setting tauI=tau use a smaller value for tauI in order to improve the load disturbance response. However, note that we have the option at "fixing up" the setpoint response by prefiltering the setpoint. Let us assume that we want to get the same setpoint response as with the original IMC-settings. With the original IMC-settings we design the controller to get (appoximately) (X1) y/ys = e-theta*s / (tauc*s+1) where theta is the (unavoidable) time delay, and tauc is the desired closed-loop response time. For a first-order with delay process g(s) = k e-theta*s / (tau*s+1) we must then select tauI=tau, see derivation of eq. (19), where we make use of the approximation e-theta*s=1-theta*s. Let us now assume that we use a different value for tauI. We evaluate gc and making use of the same approximation e-theta*s=1-theta*s, we find that closed-loop response without a prefilter is (Y1) y/ys'=gc/(1+gc) = (tauI*s + 1) e-theta*s / x(s) where x(s) = tauI*tauc*s^2 + [(tauI/tau)*(theta+tauc) + tauI - theta]*s + 1 and tauc is the closed-loop time constant.With a prefilter f(s) the setpoint response is y/ys = f(s) * gc/(1+gc) Comparing (X1) and (Y1) then gives (CONCLUSION) f(s) = x(s) / (tauc*s+1)*(tauI*s+1) where tauc is the desired response time for the setpoint response. For example, for the almost-integrating process in Figure 3 (tau=30, theta=1), we get for the SIMC-tunings (tauI=8, tauc=theta=1) the following setpoint prefilter: x(s) = 8s^2 + 7.53 s + 1 = (6.25s+1)(1.28s+1) f(s) = (6.25s+1)(1.28s+1)/(8s+1)(s+1) = (8s^2+7.53s+1)/(8s^2+9s+1) This prefilter makes the setpoint response for tauI=8 almost identical to the one shown with tauI=30 (Fig.3). (I checked with Matlab and it works like a charm!) Note that we for the case tauI=tau get x(s)=(tauc*s+1)(tauI*s+1) and f(s)=1 (as excpected). ................................... 14. (29 July 2005). Further improved integral (or derivative) time ................................... This comments is based on the paper: M.W. Foley, N.R. Ramharack, B.R. Copeland: "Comparison of PI controller tuning methods", I&EC Res. (2005) From the analysis in this paper it seems clear that a simple modification of the SIMC rule may be proposed: --- In the expressions for Kc and tauI, replace tau1 by tau1+theta/2 where theta is the delay. --- According to the results of Foley et al. (2005) this will improve the perfomance for delay-dominant processes, but it will hardly have any effect for processes with a relatively small delay (where the SIMC rules work best). Comment: When I proposed my simple IMC (SIMC) rules I put relatively little emphasis on delay-dominant processes because they are relatively rare in practice, but this simple modification may nevertheless be worthwhile. Comment added 2014: In the "improved" SIMC-PI rule from 2012, we use the modification of Foley et al. (2005), but with theta/3 rather than theta/2. Alternatively, we may use the related "improved" SIMC-PID rule from 2013 (Grimholt and Skogestad, presented at the Nordic Process Control workshop in Aug. 2013), where we add theta/3 to taud (taud is the derivative time for the cascade form PID). ................................... 15. (31 Jan 2006). Tuning for IPZ-process ................................... This comment is based on: O. Slatteke, Ph.D. Thesis, Lund Univ., 2006 and K. Forsman, "Reglerteknik for processindustrien", Studentlitteratur, 2005. An IPZ-process is an integrating process with an additional pole (with time constant tau) and zero (with time constant T>tau): g0(s) = k'*e-theta*s/s * (Ts+1)/(tau s+1) This process may, for example, respresent the response from steam flow to pressure. To get a PI controller we need to get rid of the zero (T) and we use "rule T2" to cancel it against the integrator (we could have cancelled it against the pole (tau), but since T is large it is better to cancel it against the integrator): (Ts+1)/s \approx T to get g(s) = k'*T*e-theta*s / (tau s+1) Using the SIMC rules the resulting PI-tunings are (with tauc as the tuning parameter) Kc = (1/k')*(tau/T) / (tauc+theta); tauI = min[tau, 4*(tauc+theta)] These tunings turn out to be almost identical to the tunings given on page 104-106 in the thesis of Slatteke. ...................................................... 16. (12 Mar 2007). Comment on rule for integral time ...................................................... On page 224 in the book "Advanced PID controller" by Åström and Hägglund (ISA, 2006) it is stated: "Skogestad's internal model controller avoids the cancellation (between tauI and tau1 for slow processes) by an ad hoc modification of the integral time". I think this is a bit unfair and inaccurate, as the modification is actually derived analytically. The starting point is setpoint tracking where direct synthesis gives tauI = tau1. However, this (and the resulting cancellation) is not a good setting for disturbance rejection for "slow" processes with tau1 is large. We therefore want to reduce tauI, but this may give robustness problems and introduce slow oscillations. If we require that we should not introduce slow oscillations then Kc*tauI*k' >= 4 (derived neglecting the delay theta), or with with the aleady derived value for the controller gain Kc: tauI >= 4(tauc+theta). In summary, we have: (1) For performance we want tauI <= tau1 (i.e., we want tauI small and always smaller than tau1). (2) For robustness (no oscillations) for the case when tauI <= tau1, we want tauI >= 4(tauc+theta). The rule tauI = min (tau1, 4(tauc+theta)) then follows. .......................................................................................... 17. (06 Aug 2007). Tuning for plants with large parameter changes (large changes in b) .......................................................................................... We here consider robustness with respect to changes in the parameters k, tau and theta in the plant g. Define b=k*theta/tau = k'*theta for the most common case where tau>theta, and b=k*theta for the case where the time delay is large (theta>tau). (actually b is a measure of the loop gain at high frequencies; see below) For the "tight" tuning rules (with tauc=theta), the conclusion is that if the parameter b is larger than 2, then for stability reasons, tuning should be based on the operationg point with the largest value of b. To show this, consider the loop gain |L(jw180)| at frequency w180, which must remain be less than 1 for stability. We have |L(jw180)|=1/GM where GM (>1) is the gain margin. The controller is fixed (c0), so we have |L(jw180)| = |c0*g| = L0*b where L0 is a constant and b is a function of k, tau and theta. The "tight" tuning rules derived in this paper (with tauc = theta) give GM=3 nominally and thus work OK for plants where the variation (increase) in b is about 2 or less. If b may increase by more than a factor of 2, the tuning of the controller must for robustness reasons be based on the operating point with the largest value of b. We distinguish between two cases. Case 1. "Normal" case with tau>theta: In this case b=k*theta/tau = k'*theta Proof: At frequency w180, we assume that the term (tau*s+1) is approx tau*s in both c and g. Then, at frequency w180, the controller behaves as c0=Kc0 (constant) and the plant as |g|=k*e-theta*s/tau*s = k'*e-theta*s/s (integrator). We get w180=(pi/2)*(1/theta), which gives |L(jwu)|=Kc0*k/tau*w180 and we find b=k*theta/tau. (see also p.205 in the book "Multivariable Feedback control" by Skogestad and Postlethwaite (2005); p.196 in the first edition (1996)). Case 2. "Large delay" case with tauOther literature see heretheta1/3. ---------------------------------------------------------------------------------- 19. (21Sep 2007) Should level control have integral action? ---------------------------------------------------------------------------------- See handwritten notes in subdirectory more/notes. ---------------------------------------------------------------------------------- 20. (21Sep 2007) Selection of closed-loop time constant tauc ---------------------------------------------------------------------------------- New results on relationship with input usage, and new interpretation on "speedup" tau/tauc required for performance. See handwritten notes in subdirectory more/notes; see also "smooth-tuning" paper (2006) and the summary paper from 2012 (IFAC PID-conference in Brescia). ---------------------------------------------------------------------------------- 21. (02Jan 2009) Further justification for "tight control" recommendation tauc=theta ---------------------------------------------------------------------------------- Cvejn (2009) shows that selecting tauc=theta is optimal if the optimal modulus (OM) criterion is used as a performance specification. OM corresponds to a having a "flattest" possible T(s) (i.e. having |T| close to 1) at low frequencies. ----------------------------------------------------- 22. (15 May 2014) Improved approximation of zeros ----------------------------------------------------- Lee, Cho and Edgar (2013) has revisted the SIMC model reduction and PID tuning and have some very interesting results. The most useful is probably the following approximation which replaces model reduction rules T1, T1a, T1b and T2 for approximating zeros. Their recommendation is to replace the term (T0s+1)/(tau0s+1) by the value evaluated at the frequency s=j/tauc. For example, for (5s+1)/(2s+1) and tauc=1.5, their approximation becomes to replace it by the constant sqrt( (5/1.5)^2+1)/ sqrt( (2/1.5)^2+1) = 2.1 (whereas the original rule would give To/tau0=2.5). They also have a modification for rule T3 (see their paper). Reference: J Lee, W Cho and TF Edgar, "Simple Analytic PID Controller Rules Revisited", I&EC Research, Vol. 53, 5038-5047 (2013). ----------------------------------------------------------------------------- 23. (11 and 27 Nov 2014) More on the choice of tauc ----------------------------------------------------------------------------- The "default" value for the SIMC tuning parameter is tauc=theta, although one may of course use tauc=2*theta or larger to get a more robust system with less input usage, or even choose tauc=theta/2 to get better performance (but less robustness). However, I often get asked the following question: What about processes with no delay or a very short delay, where the choice tauc=theta gives too aggressive control, what value should we select for tauc? Here are three approaches: 1. The simplest is to select tauc (the closed-loop time constant) based on physical insight: How fast do you wan the system to respond? 2. "Smooth tuning". A more systematic approach is to select tauc to (just) achieve disturbance rejection, that is: What is the (largest) tauc that gives acceptable disturbance rejection? (a) Rule A: Select tauc=1/wd. Proof: The model is y = G*u + Gd*d. The closed-loop disturbance response is y = Gd*d/(1+L) (where L=loop transger function) and to achieve |y| |Gd'| (for frequencies w wd or tauc<1/wd which is just satisfied with tauc=1/wd (qed) (b) Rule B: Select Kc = ud/ymax (and then back-calculate tauc from the SIMC-rules). where ud = input magnitude required to reject largest disturbance (dmax). Rule B can be conservative (meaning that the value of Kc is too high), but it gives the same result as rule A in many cases. Rule B has the advantage that one does not have to think about the disturbance, and ud may be obtained from historical data. Proof of Rule B (see also "smooth tunings" paper from 2006): Again consider the closed-loop disturbance response, y = Gd*d/(1+L) where L=GC. Assume 1+L \approx L and introduce ud=-Gd*d/G (input required for perfect disturbance rejection): to get: y = -ud/C. To achieve |y| ud/ymax, which is just satisfied with Kc=ud/ymax (qed). Note: This value for Kc may be conservative (too high) because ud (input to reject disturbance) may occur at a frequency where |C| is larger than Kc. To reduce this conservativeness, we should consider disturbances at "intermediate" frequencies (where |C| has its minimum value Kc). Example: Here is a case where the two rules give the same result. Let G=k/tau*s+1, Gd = kd/taud*s+1. Introduce the scaled disturbance gain kd'=kd*dmax/ymax and assume kd'>1. Rule A: |Gd'|=1 at frequency wd=kd' so from Rule A: (**) tauc = 1/wd = taud/kd'. Rule B: We need to find |ud|=|Gd|*dmax/|G|. We consider intermediate frequencies, where |Gd|/|G|=|(kd/taud)/(k/tau)| and we get from Rule B: Kc = ud/ymax = |(kd/taud)/(k/tau)|*dmax/ymax. To find the corresponding tauc, we use the SIMC rule (with theta=0), Kc = 1/[(k/tau)*tauc], and we get tauc = 1/Kc*(k/tau) = taud*ymax/kd*dmax = taud/kd' (which is the same as found from Rule A!) Comment: Both rules (A and B) give the minimum input usage that gives acceptable disturbance rejection. Thus, if we find, for example, that the resulting controller gain (Kc) is too large and gives input saturation, then the process is simply not (input-output) controllable. 3. In some cases, tauc must be selected to avoid input constraints. In particular, this is the case if the choice tauc=theta results in a large value of Kc. Typically, this is the case for a process with a large time constant, but where k remains fixed (so this is not really an integrating process). This is discussed in more detail here: Sigurd Skogestad and Chriss Grimholt, ''The SIMC Method for Smooth PID Controller Tuning'', Chapter 5 in: R. Vilanova, A. Visioli (eds.), PID Control in the Third Millennium, Advances in Industrial Control, DOI 10.1007/978-1-4471-2425-2_5, © Springer-Verlag London Limited 2012 For input disturbances, saturation is not a problem with tauc=theta, but it may give satiration for output disturbances or measurement noise (the latter is not mentioned in the above paper and I should study it further). --------------------------------------------------------- 24. (2014, 2022, 2024) Lambda tuning for choosing tauc --------------------------------------------------------- Another approach for selecting tauc is the socalled "lambda"-tuning. tauc=lambda First: Where does the symbol lambda come from? 1. Most likely (I'm almost 100% sure) it comes the book by Morari and Zafiriou (1989) who use the symbol lambda for tauc. Note: The original IMC PID-paper (Rivera, Morari, Skogestad, 1986) uses the symbol epsilon for tauc, but it was changed to lambda in the IMC-book by Morari and Zafiriou (1989), because "epsilon" gave the impression that tauc should always be small. 2. The symbol lambda is used in the similar digital tuning method by E.B. Dahlin (1968), but here lambda is actually the inverse (of tauc). Lambda-tuning found widespread industrial usage in the 1990s, especially in the Pulp and paper industry. An early reference (1995) is two book chapters in the following book: Nancy J. Sell, "Process control fundamentals for the pulp and paper industry", TAPPI Press, 1995. Chapter 6 (p. 215-271): "Controller Tuning methods" by Frederick Y. Thomasson (this chapter referes to Chien and Fruehaud, Consider IMC tuning to improve controller performance", Chemical engineering progress, p. 334-41, Oct. 1990) Chapter 7 (p. 275-325): "Control objectives for uniformity in the pulp and paper manufacturing", W.L. Bialkowski (this paper does not have any tuning references, but in the following Ch.8 on IMC, he refers to the book by Morari ad Zafiriou (1989). The references can be found here:
In the "lambda literature", is often recommended to relate lambda (tauc) to the open-loop time constant tau. We define tauc=lambda= kappa*tau where kappa is known as the "lambda-factor". With the SIMC/IMC/Lambda-rules, the PI tunings are (assuming the process has no delay, so theta=0): Kc = 1/(k*kappa), taui=tau With kappa<1, we get a "speed-up" by closing the loop (i.e. tauc1 the response is slowed down. A common tuning rule, especially in the pulp and paper industry, is to select kappa in the range 1-3. (This is confirmed by a search on the internet; for example, the first hit I got was "Fundamentals of lambda tuning" by Vance van Doren in Control Engineering (2013) who writes that "lambda is generally assigned a value between tau and 3*tau"). I have often wondered why the "lambda literature" makes a coupling between tauc and tau. It seems strange: Strange-1. An integrating process has tau=infinity, so "lambda-tuning" would give lambda=tauc=infinity and control is turned off (wheras the SIMC-rule gives tauc > theta which can be small). Strange-2. On the other hand, for a pure time delay process (tau=0), "lambda-tuning" gives lambda=tauc=0, which means control is infinitely fast and the closed-loop system will be unstable. Strange-3 For more "normal" processes, the rule that lambda is between tau and 3 tau will give a rather slow tuning. So what is the justification for relating lambda (=tauc) to the time constat tau (whereas I recommend relating it to the delay theta)? Reason 0 (added Jan. 2024): Thomasson (1995, chapter 6) (see reference above) gives the rule lambda > tau + theta and gives the following justification: "For this value, there will no overshoot in the setpoint response" (p. 262). From his simulations it is clear that he talks about overshoot of the output y (not in the input u as I discuss in Reason 1 below). My comment is: But why care so much about setpoints, because one can always add a prefilter on the setpoints (see item 13 above). I think that the disturbance response should determine the tuning! In the following chapter 7, Bialkowski writes that in Rule 5 that "a simple rule of thumb is that as long as lambda > 3 tau there is little danger of model mismatch causing serious problems. The faster values of lambda increasingly endanger the robustness of the loop" (p. 324). However, this rule of thumb is not suppoerted by the results in my paper (20003). (By the way, just three lines below, Bialkowski writes in Rule 6: "Outer cascade loops must be slower than inner cascade loops. A rule of thumb is to plan for the outer cascade loop to be five to ten times slower than the inner loop". Yes, this I agree on!) But, of course, there could be other reasons for relating lambda (tauc) to tau as discussed in the following. Reason 1 (Added Sep. 2022): Maybe the reason for recommending kappa>1 (with lambda-tuning) is to avoid overshoot in the input for setpoint changes. Assume g=k/(tau*s+1) and the desired closed-loop setpoint response is T=1/(tauc*s+1). The response from ys to u is then: u/ys = c/(1+gc) = (1/g) gc/(1+gc) = (1/g) T = (1/k) * (tau*s+1)/(tauc*s+1). To avoid overshoot in u (i.e. u exceeding 1/k) we must avoid "speeding up" the response, that is, we must have tauc>tau or kappa=tauc/tau > 1. QED Reason 2 (Oct. 2022 (Reason 2): Another reason for selecting tauc=tau is to get Kc=1/k, is that the initial ("feedforward") response from ys to y is perfect! This follows sinve without feedback (for example, initially before the feedback becomes effective), we have y = Kc*k * ys = 1*ys with Kc=1/k. So this is good in terms of the inital response to setpoints. This is important especially for a slave loop in cascade control where setpoint changes are very common. An alternative to selecting tauc=tau, if Reason 2 is correct, is to introduce a factor on how much Kc is used on the setpoint (as suggested by Astrom in PID-book) Reason 3 (2014): Here is another possible reason related to input (load) disturbance rejection: ** Start Special case: Note the similarity between equations (***) with the smooth tuning formula (**). This leads to the following special case where the "lambda literature"-tuning approach is reasonable: Consider a first-order process with no delay and assume we have a disturbance at the input which should be rejected with as little control effort as possible. Then taud=tau and from (**) (Rule A) we get that for acceptable disturbance rejection ("smooth tuning") we must require: tauc = 1/wd = tau/kd' where kd' is the scaled disturbance gain (gain from d to y with no control). This implies that we have the following tuning rule in terms of kappa, kappa = 1/kd'. Here kd' = kd*dmax/ymax, so we have that kappa = 1/kd' = ymax/(kd*dmax) = ratio between max. allowed output change (ymax) and output change without control (kd*umax) (steady-state) Alterntively, in terms of lambda=tauc: lambda=tauc = tau*kappa = tau*ymax/(kd*dmax) For k'd>1, we need to "speed up" the response by a factor k'd to get acceptable disturbance rejection. Note: the above analysis used the approximation |1+L|\approx |L|. Here is a bit more accurate analysis. The disturbance response is y = Gd*d/(1+L). Here Gd = kd/(tau*s+1) and with the SIMC tunings we get, L = GC = 1/(tauc*s) so S=1/(1+L) = tauc*s/(tauc*s+1). For tauc < tau, the peak value of the transfer function |SG_d| is approximately (asymptotic value) kd*tauc/tau = kd*kappa which holds well for kappa<1. However, for kappa=1 the asymptotic analysis does not quite hold, and the peak is only half (0.5*kd). This follows from 1/sqrt(2)*sqrt(2)=1/2=0.5 Note that we have here considered sinusoidal disturbances. For comparison, Forsman ("Reglerteknik", p. 49, 2005, in Swedish) finds a factor 0.368 (rather than 0.5) for a step disturbance. Thus, selecting kappa=1 reduces the disturbance sensitivity by a factor about 2, and this explains why kappa=1 may be a reasonable starting point for the tuning. As mentioned, a common tuning rule is to select kappa even larger, say kappa=3, which must mean that, strictly speaking, we do not need control for disturbance rejection, but rather we use control to stabilize and avoid drift. Conclusion: From my derivation with sinusoidal input disturbances, the recommended value for kappa (the "lambda-factor") is: kappa = Ratio between allowed output variation and output variation without control (steady-state) BUT: There is also the issue of input saturation due to noise if Kc is too large, and this may a reason for not speeding up the response too much, see approach 3. End Special Case. ----------------------------------------------------------------------------------------------------- 25. (11 Nov. 2014. 21 Mar 2018) Use of derivative action for processes with time delay ("improved SIMC PID rules") ----------------------------------------------------------------------------------------------------- See: Chriss Grimholt and Sigurd Skogestad, ''Optimal PID-Control on First Order Plus Time Delay Systems & Verification of the SIMC Rules'', Published at NPC workshop (Aug. 2013) and DYCOPS Symposium (Dec. 2013). For first-order with delay processes, the optimality of the SIMC PI rules has been studied by Skogestad and Grimholt (PID-conference, 2012) by comparing the performance (J=IAE) versus robustness (Ms) trade-off with the Pareto-optimal curve. The difference is small which leads to the conclusion that the SIMC PI-rules are close to optimal. The only exception is for pure time delay processes, so the "improved" SIMC rule is introduced to improve the performance for this case. 1. For PI-control, the improvement is to add theta/3 to tau1, and then use the original rule. This resulting PI-controller is close to the optimal one (Skogestad and Grimholt (2012)). 2. The original SIMC-rule gives a PI-controller for a first-order plus delay process, but in theory the performance can be improved significantkly, especially for processes with large rime constants, like integrating processes, To get a PID-controller, the very simple change is to add theta/3 to taud (cascade PID form). We show in the Dycops paper (2013) that this is close to the optimal PID-controller, but to take advantage of the derivative action one should choose tauc=theta/2, rather than the standard value tauc=theta. 3. The reason for putting "improved" in quotes, is because it can be argued that the improved performance by the D-action may not be worth the increased complexity of the controller and the increased sensitivity to noise. 4. For a pure time delay process, the two "improved" PID controller is in fact an ID-controller which can be rewritten as the "improved" PI-controller. This "improved" SIMC PI-controller has integral time taui=theta/3 and gain Kc = 1/(3*k) * theta/(tauc+theta)) We get Kc=0.17/k is for tauc=theta and Kc=0.22/k for tauc=theta/2. ----------------------------------------------------------------------------------------------------- 26. (02 Dec. 2023) SIMC PID rules with measurement dynamics gm(s). ----------------------------------------------------------------------------------------------------- In the paper, we assume gm=1. More generally, you simply include any measurement dynamics gm(s) in the process model g(s) and apply the SIMC-rules unchanged. This applies both to the model approximation (half rule) to get a 1st or 2nd model and to the PI- or PID-tuning, including the choice of tauc. For example, see a handwritten note (pdf-file) in directory more/notes for a "proof" that the total delay should include the delay in the measurement gm. ----------------------------------------------------------------------------------------------------- 27. (28 Nov. 2024) New rule for approximation of LHP-zeros (Rule T4) ----------------------------------------------------------------------------------------------------- The following rule makes both the initial response and stedy-state unchanged (but it will remove overshoot) (T0*s+1)/(tau10*s+)*(tau20*s+1) is approximated as 1/(tau*s+1) with tau=(tau10*tau20)/T0 Example: (533*s+1)/(335*s+1)*(212*s+1) is approximated as 1/(133*s+1). This is because (335*212)/533= 133