Ron Beaufort
Lifetime Supporting Member
Recently I have been trying to learn more about the so-called “Lambda” or “setpoint” tuning method for PID control. I have a small heating system which I use for lab experiments with an Allen-Bradley PLC-5. The data shown below was generated by this system using the Dependent Gains (ISA standard) equation for PID.
Figure 1 shows the results of using RSTune’s recommended tuning values for “setpoint” tuning with a Lambda of 4 minutes. A test of the system is performed by making a step change to the setpoint (shown in blue) – changing it suddenly from 100 degrees to 300 degrees. After four Lambda periods (4 * 4 minutes = 16 minutes) the PV (Process Variable – shown in red) has stabilized “on target”. There is no tendency to overshoot the setpoint nor for the process to oscillate. The basic idea as I understand it: “Lambda” is actually a period of time which the programmer selects. Whenever a change in the PID setpoint occurs, the system should recover and be back “on target” again after four of these Lambda time periods have elapsed – with no overshoot and with no oscillation. Figure 1 shows that the PID settings recommended by RSTune satisfy these requirements.
[attachment]
Figure 2 shows a common test of the process which is performed under manual control to determine the system’s characteristics. The CV (Control Variable – shown in yellow) is first set to 10% and the system is allowed to stabilize. The resulting PV (Process Variable) is 117 degrees. Next the CV is stepped to 80% and the system is again allowed to stabilize. The resulting PV is now 375 degrees. A straight line (S) is drawn tangent to the PV curve at the point of maximum slope. Horizontal lines (X and Y) are drawn to extend the PV1 (starting temperature) and PV2 (final temperature) traces across the graph. Noted as distance “A”, the total rise in temperature (117 to 375) is 258 degrees. Calculating 63.2% of 258 gives 163 degrees which is noted as distance “B”. A horizontal line (P) is drawn to indicate where the temperature reached this percentage of its total rise. A vertical line (D) is drawn where line (S) intersects line (X). Another vertical line (T) is drawn from the point at which line (P) intersects the PV trace.
The distance DT (Deadtime) is measured between the point at which the CV step change occurred and the vertical line (D). A ratio is used to convert this distance to 0.69 minutes. The distance T1 (the system’s Time Constant) is measured between vertical lines (D) and (T). A ratio is used to convert this distance to 3.41 minutes. The system gain (G) is calculated by G=((PV2-PV1)/(CV2-CV1)). Thus G=3.69 degrees/%CV - or in other words, each change of 1% to the CV produces a change of 3.69 degrees in temperature.
Now for the big question. How can I make use of the information given in Figure 2 to manually calculate the tuning values shown in Figure 1? Or at least come up with values that are “close enough” to work. I know that manually calculating the values will help me understand the material far better than simply relying on RSTune to crank out the tuning values for me. I know that this manual calculation can be done – the procedure was explained to me several years ago. Since then I have lost my notes and forgotten nearly everything I once knew about how to solve this problem. I vaguely remember something along the lines of “set the integral equal to ...” and “multiply ... times ... to get the derivative setting” and “multiply ... times ... to find the setting for proportional”.
I have searched the Internet and consulted every book on loop tuning that I can put my hands on. I can find many references to “lambda tuning” but nothing which is specific enough to actually allow me to perform the calculations. I would sincerely appreciate any help which anyone can provide. Thank you.
Figure 1 shows the results of using RSTune’s recommended tuning values for “setpoint” tuning with a Lambda of 4 minutes. A test of the system is performed by making a step change to the setpoint (shown in blue) – changing it suddenly from 100 degrees to 300 degrees. After four Lambda periods (4 * 4 minutes = 16 minutes) the PV (Process Variable – shown in red) has stabilized “on target”. There is no tendency to overshoot the setpoint nor for the process to oscillate. The basic idea as I understand it: “Lambda” is actually a period of time which the programmer selects. Whenever a change in the PID setpoint occurs, the system should recover and be back “on target” again after four of these Lambda time periods have elapsed – with no overshoot and with no oscillation. Figure 1 shows that the PID settings recommended by RSTune satisfy these requirements.
[attachment]
Figure 2 shows a common test of the process which is performed under manual control to determine the system’s characteristics. The CV (Control Variable – shown in yellow) is first set to 10% and the system is allowed to stabilize. The resulting PV (Process Variable) is 117 degrees. Next the CV is stepped to 80% and the system is again allowed to stabilize. The resulting PV is now 375 degrees. A straight line (S) is drawn tangent to the PV curve at the point of maximum slope. Horizontal lines (X and Y) are drawn to extend the PV1 (starting temperature) and PV2 (final temperature) traces across the graph. Noted as distance “A”, the total rise in temperature (117 to 375) is 258 degrees. Calculating 63.2% of 258 gives 163 degrees which is noted as distance “B”. A horizontal line (P) is drawn to indicate where the temperature reached this percentage of its total rise. A vertical line (D) is drawn where line (S) intersects line (X). Another vertical line (T) is drawn from the point at which line (P) intersects the PV trace.
The distance DT (Deadtime) is measured between the point at which the CV step change occurred and the vertical line (D). A ratio is used to convert this distance to 0.69 minutes. The distance T1 (the system’s Time Constant) is measured between vertical lines (D) and (T). A ratio is used to convert this distance to 3.41 minutes. The system gain (G) is calculated by G=((PV2-PV1)/(CV2-CV1)). Thus G=3.69 degrees/%CV - or in other words, each change of 1% to the CV produces a change of 3.69 degrees in temperature.
Now for the big question. How can I make use of the information given in Figure 2 to manually calculate the tuning values shown in Figure 1? Or at least come up with values that are “close enough” to work. I know that manually calculating the values will help me understand the material far better than simply relying on RSTune to crank out the tuning values for me. I know that this manual calculation can be done – the procedure was explained to me several years ago. Since then I have lost my notes and forgotten nearly everything I once knew about how to solve this problem. I vaguely remember something along the lines of “set the integral equal to ...” and “multiply ... times ... to get the derivative setting” and “multiply ... times ... to find the setting for proportional”.
I have searched the Internet and consulted every book on loop tuning that I can put my hands on. I can find many references to “lambda tuning” but nothing which is specific enough to actually allow me to perform the calculations. I would sincerely appreciate any help which anyone can provide. Thank you.