• Not Answered

PID loop bounces when using a function generator

I have an issue whereby a PID loop "bounces" its output when the Pv drops.

Background: We have a large valve (supplied by 2 pumps) which cavitates at low flows. To try and stop this from happening, our Process engineers want the valve to close when the PID output reaches 20% (a step change cutoff, if you like). What we have done is create a function generator that manipulates the PID output so that when the PID output is 20%, then the ANO gets a 0% input - make sense?  the control module is configured as: PID output -> function generator -> ANO input. While this works fine in principal, when the PID output goes to 20% the ANO goes to zero and the valve goes shut, but this drops the flow off, which the PID tries to correct for and increases the output above 20%, opening the valve again, and the cycle begins again.

Is there anyway to stop the PID response from cycling like this when the PID output gets < 20%. Its almost as if we want the PID action to continue as if it were seeing a nice slow drop off in flow, not the sudden shut off we are actually performing via the function generator. Can we setup 2 sets of tuning parameters for each operating range; one for outputs< 20, one for outputs > 20%. We can't put in a mechanical stop as we need the flow to stop (the mechanical stop would allow a flow through the pump, and we can't trip the pumps as they need to run on a recycle loop), and the valve needs to be sized for a wide range of flows. We are going to change the pump controls to invertors in the next 6 months, and then remove the valve, but until then we have been asked for the above control scheme.

Anyone got any bright ideas?

Colin

4 Replies

  • As long as you keep your PID in AUTO (or CAS if it's a slave loop), I can't see a way around your issue.

    Instead of using a function generator, you could try one of two things:

    1) Add a condition/action block combo which forces the PID to MAN mode with a 0% output if the output ever gets below 20%.

    OR

    2) Add a condition block which is connected to your TRK_IN_D param which will enable output tracking if the output goes below 20%. Your TRK_VAL would be 0%.

    These "solve" your problem, but create another problem. You now need a way to know if and when the PID can be put back into AUTO/CAS. Since you aren't getting real flow at this point, and you aren't utilizing the PID feedback control, you will need to come up with a heuristic which potentially maps what conditions would cause your PID (if it were in AUTO/CAS) to give an output greater than 20%. Not knowing the process, or flow curve, I couldn't tell you what this might be. Perhaps you could work with your process engineer to come up with something. For example, is the flow that's being called for based on a level upstream or downstream? Then you could say if the level gets to a point where you would need high flow, switch the flow loop PID back into AUTO/CAS. Or something like that.

    I may be overlooking an easier solution, but this is what I came up with off the top of my head.
  • A splitter block after PID with 20-100 & 0-20 range might work in this case. Only caveat is you need the splitter to have symmetrical control (I think there was a KBA discussing the behavior), you can set the lower range to a dummy block.
  • I'm not sure if a control answer is the best solution here. Can you add a spillback flow? It would divert some flow from the discharge to the suction side of the pumps. The loop would need another flowmeter somewhere. You could put a flowmeter in the recycle line and add it to the existing flow or you could put a flowmeter before the split between the spillback and the downstream flow. The idea would be to use the spillback to control total flow. When the downstream flow is high enough that there is no cavitation, the spillback would be closed. As the downstream flow was reduced below the point where cavitation begins, the spillback would open on total flow control.
  • What drives the flow? Is this a cascade flow off a level downstream? Since flow is a self regulating process, the output drops below 20% when demand on the flow setpoint drives the loop to a lower flow. The valve will cause the PV to drop, and proportional action causes the output to bump. What if you look at the Setpoint to determine when to allow control of the valve to return. When the valve reaches 20%, capture the Setpoint value and track the valve until the setpoint is increased, indicating the valve can open to more than 20%.

    It's like the valve needs to operate with a duty cycle below 20% to avoid cavitation. The PID cannot do this, so maybe you bypass the PID and control the output directly with a variable on/off cycle between 0 and 20%, until flow demand allows the PID to operate continuously above 20% output.

    If the flow is controlling a level, the on/off flows are averaged and the level sees a bit of oscillation instead of a bigger swing.

    Remember, you asked for ideas.

    Andre Dicaire