Author Archive
How to Fill a Container
Recently, I helped a company with an interesting, but very commonly occurring problem. They fill containers one-by-one and stop filling at an exact weight of material. However, the final weight always overshoots its set point. A common analog to their setup is that of filling a tank or container with liquid to an exact level.
The filling sequence begins by placing an empty container on a digital scale. The scale tares the weight of the container so the fill can begin from zero weight. Then a PLC turns on a vibratory feeder to fill the container. During the fill cycle the weight is continuously sent back to the PLC. The PLC shuts off the vibratory feeder when the set point is reached. The filled container is then removed, and the next empty one is positioned on the scale. Then the fill sequence is repeated. The set point is kept constant between fills.
To improve the accuracy and repeatability of the fill, the company replaced the PLC program with a continuous controller, i.e. a PID controller. This was a very good decision indeed. The newly implemented PID controller worked very well, except that the weight always overshot the set point. And that’s when they contacted me.
I reviewed their setup and fill sequence with them and asked for the PID controller’s settings. They were using the P, I, and D modes of the controller. And there was the problem. If one uses the integral mode in a controller filling a container – the process will always overshoot its set point.
To work properly and not have overshoot, the controller’s output must go to zero when the process reaches set point. But when using integral, it tries to correct the error throughout the duration of the fill and accumulates a positive value. When the set point is reached, this accumulated value keeps the controller output at an elevated level, even though the error is zero. Then the process overshoots the set point, the error goes negative, the integral term begins to reverse the accumulation and eventually the controller output ends up to zero.
The solution is to use no integral action in a controller on systems like filling a vessel or container. Also, in this setup derivative is of no use, so that should be set to zero to simplify matters.
However, in the customer’s particular setup, simply turning off the integral term would create a new problem. The bumpless transfer feature of the controller will ignore the initial error when the controller is placed in auto at the beginning of the fill sequence. The controller output will begin at zero (this is desirable), but because of no integral action, nothing would drive the controller’s output.
The solution was to set the set point to zero before the fill begins. After the tare, the controller is placed in automatic mode. Then the set point is changed to the desired weight. The controller output responds to the set point change and the fill begins. As the container fills up, the error gets less and the controller output eventually settles back to zero in a nice exponential fashion as the set point is reached. Voila, no overshoot! Once the controller output is back at zero, it can be turned to manual control mode to be ready for the next fill.
With proportional control only, the controller is also very easily tuned by adjusting the proportional gain (only active setting) to change the controller’s response.
Stay tuned!
Jacques Smuts – Author of the book Process Control for Practitioners