After search, use << and >> links at top of page to view other pages.
Get Updates on Facebook

An Oscillating Level Control Loop

When I do onsite control loop optimization services I often see level controllers oscillating. Most often they oscillate because of one or more of the following reasons:

  • The control valve has a dead band. (Yes, level loops with dead band oscillate continuously if you are using a PI or PID controller.)
  • The control valve has stiction.
  • The integral time is set too short for the amount of controller gain being used.

However, these are not the only problems and I have often been amazed at the actual cause of oscillations.

So to keep me from guessing, I systematically analyze a loop for problems before I tune the controller. I always try to follow the same basic sequence of tests, and then delve deeper into any problems I notice. The sequence of tests:

  1. See how the loop performs in automatic control under normal operating conditions.
  2. Do a set point change (this is very helpful for various reasons that I’ll write about in future).
  3. Place the controller in manual.
  4. Do various valve performance tests (these can be quite challenging on a level loop).
  5. Assuming no insurmountable problems were found, do step-tests for tuning (if you don’t have enough data already).
  6. Tune the controller and repeat steps 2 and 1 to ensure the loop meets its performance objectives.

Some (non-readers of this blog) may try to address all control problems with tuning. But the simple steps listed above have served me very well over the years and I often smile to think that someone could be wasting hours of fruitless tuning if a loop really has other problems.

Case in Point

A few weeks ago I was optimizing the control performance of loops an oil platform in the Gulf of Mexico. Quite early in the project I got to a level control problem on one of their separator vessels. Step 1 of my test sequence revealed the oil level control loop was oscillating. The period of the oscillations was slightly shorter than one minute.

Level loop oscillating.

Going on to Step 2, we made a set point change. I noticed the loop actually performed very well on the change in set point (ignoring the oscillation). From that I concluded the problem is not the controller’s tuning.

I also noticed that the process variable took about two minutes to cross over its set point for the first time and about six minutes to settle out at set point. This meant the response time of the loop was far slower than the period of its oscillations. It would be impossible for stiction or dead band to cause the loop to oscillate with a one-minute period if it takes the loop so much longer to reach set point. Although I would later test for stiction and dead band, I basically ruled them out as causes of the oscillation.

Loop performed well on a set point change.

Step 3 calls for placing the controller in manual control mode. This provides a good test to see if the oscillations are caused by something in the control loop. We placed the loop in manual, and the oscillations continued. At this point I concluded that the oscillations were not caused by controller tuning, stiction, or dead band.

Oscillations continued with controller in manual.

So what could it be? A quick inspection of the level control valve indicated that the valve was rock-solid in holding its position with the controller in manual. The oscillations were not coming from the valve and therefore they had to be coming from the process. We looked at time trends of the flow rate into the separator vessel and the gas pressure inside the vessel, but these were not oscillating (at least not at one-minute periods).

Then we found the cause. The vessel is a three-phase separator: gas, oil, and water. The oil floats on a layer of water in the bottom of the separator. It was the oil-water interface level that was oscillating, moving the oil level up and down with it. After some more investigation, we found the water level control loop was operating virtually in on-off control mode. Only then could we focus on solving the real problem.

We are all sometimes tempted to tweak controller settings without looking any further, but a systematic approach to analyzing control loops and solving control problems really pays off.


Stay tuned!
Jacques Smuts – Author of the book Process Control for Practitioners


4 Responses to “An Oscillating Level Control Loop”

  • Mary:

    How did you solve the problem?

  • We did step tests and properly tuned the water level controller. That solved the problem.

  • Nhan:

    Which tuning rule did you apply for the oil level control loop, level averaging or lambda? Thanks

  • Nhan, the tuning rule of choice should always depend on the application:
    – For fast response, the Ziegler-Nichols rules for integrating processes work well, provided you divide the controller gain by two, and multiply the integral time by two.
    – For slow response, I recommend level-averaging (I still need to write an article about it).

    In the case of the oil level, I proposed using level averaging to make maximum use of the surge capacity of the separator, but the operations personnel wanted the oil to stay as close to setpoint as possible (fast control). So we ended up using Z/N for tuning the oil level loop.

    I think Lambda tuning for levels is good as an academic exercise, but I don’t see its need for tuning level controllers, and I have never used it for tuning levels. However, the Lambda tuning rules certainly have a place with self-regulating processes.

Leave a Reply

The Book for Practitioners