PID Level Controller

S

Thread Starter

Shabir

Hi,

I am involved in tuning Level Control valve of Flash Drum of Dehydration plant. The PID Controller cannot maintain a particular opening (anything between 5-20%). I tried it PI only and with very small values of P gain=0.1 and Integral gain=0.5, but the system got unstable. The SP is 38 and the Operation Engineer wants to maintain constant valve opening of 5-20%. Any help is highly appreciated
 
Changing the PID settings will NOT magically make your controller output suddenly work in the 5 to 20% range if it does not already operate there.

For any given setpoint the required valve opening depends on the physical design of the plant (ie the valve size) and the load (ie the throughput)

Changing the PID settings can make the controller more or less stable. The more stable the controller, the less the valve will move, but the longer it will take for your controller to recover from a disturbance.

If you want the valve to move less, then decrease the gain or increase the integral time - but the penalty is your control will be slower, and may be too slow to effectively control level.

If you want to change the typical operating position of the valve, then change the valve, change the setpoint or change the load on the process. (ie run faster or slower)

If your original PID tuning values gave you stable, accurate control then changing them was likely a bad idea. If your original tuning values used to work well but now don't, then its probably something physically wrong with your valve or somewhere else in your process and you should fix that instead of re-tuning. Maybe 70% of "tuning" problems are due to faulty equipment, not bad tuning.

Nobody can tell you what numbers to put in your particular controller to get "good" tuning unless they are able to get real numerical data from your site by bump testing your loop and analysing the result.

Rob
www[.]lymac.co.nz
 
Hi,

It sounds like your control valve is too large if it is operating at the 5-20% opening range. With a control valve that is too large, any small movement of the PID controller output is magnified. Also is the problem that level control is difficult anyway and you cannot expect a PI (please forget D) controller to maintain a constant setpoint.

The most common solution is to install a smaller control valve so that it will operate in the 40-60% opening range. That may be expensive unless you have another use for the large control valve you remove. Some people with this type of problem have installed a flow-limiting orifice in a pipe flange upstream of the control valve, but if the liquid temperature is close to the flash point, you may just get cavitation in such an orifice. Also, if the liquid temperature is close to the flash-point, cavitation in your control valve may actually be contributing to your problem. You cannot do a good job of control with cavitation in the control valve, and the valve itself will not last very long.

The last resort is to replace the constant speed motor starter/ motor control center with a Variable Frequency Drive and connect the drive's 4-20ma input to the PID controller output. This will allow you to pump a flashing temperature fluid at a controlled rate without flashing in the control valve. You would either remove the control valve, bypass it, or just force it wide open.

Dick Caro
 
D
> The PID Controller cannot maintain a particular opening (anything between 5-20%). I tried it PI only and
> with very small values of P gain=0.1 and Integral gain=0.5, but the system got unstable.

One problem might be your use of integral. Level in a tank is by nature "self-integrating." Hence you shouldn't use integral, or your loop will have two integrators in series, leading to instability.

Proportional gain (P) causes controller output (valve position) to change "proportional" to the error. P alone leaves an offset (bias), when it chooses the wrong valve position (input) to balance the load. Integral (I) takes care of this offset by "integrating" the error over time and adding a bias to the controller output. Over time, the output changes enough to eliminate the bias, and now the valve is at the correct position.

Now consider a level control. It changes the input valve position based on the error (difference of tank level from setpoint). The valve is either spot on for the load, and the tank level remains stable, or not. If the valve is too closed, the level begins decreasing. This increases the error, and so (since valve position is proportional to error) the valve will open further. At some point you overcome the difference and the tank level begins increasing back toward SP. As the error decreases, the valve will close further and further (just based on the P part of PID). When the error reaches zero (at SP), the valve is at the correct position to balance the load exactly.

No integral (in the PID controller) is needed because the tank <i>itself</i> is integrating the error. That is, the tank level changes if the valve is not set correctly. This change in level changes the error, which causes the valve position to adjust in the correct direction.

So, bottom line, <b>your integral gain should be zero</b>. You'll have to pick a proportional gain that makes the performance responsive enough, but avoids oscillation. <b>P can probably be higher</b> than you now have it, though, because the integral gain was causing instability.

Hope this (simplified, but still long-winded) explanation helps. Good luck!

--Dan
 
J
> The PID Controller cannot maintain a particular opening (anything between 5-20%).

That statement says that the purpose of this control loop is to maintain the controller's output within a specific range, not control to setpoint.

A PID/PI/P controller might have an output limit function, to limit the output from something other than the normal 0-100%, but that's a controller accessory function beyond PID/PI/P.

The purpose of PID/PI/P is to calculate an output that will drive the error (process variable minus setpoint) to zero, with whatever tuning constants its been assigned with its calculated output.

The purpose is not to limit the output to a specific range.

Limiting the output to a specific range is best done as others have suggested - valve, setpoint, load or a controller limiter function.
 
Top