Flow Balancing Valves - Control Theory

moistcat

Member
Join Date
Jun 2020
Location
Melbourne
Posts
54
Hi all, i'm after some help on a flow control valve control strategy. There are 8 parallel vessels that require evenly distributed flow.

Each vessel features a flow control valve on the inlet, and a flow transmitter on the outlet.

Currently the algorithm is:

1. Add all vessel_flow values and divide by number of vessels = vessel required_flow.
2. Individual vessel_flow - required_flow = diff_flow
3. Each control valve has a PID controller that will modulate the valve position to set diff_flow to zero.

This initially works well and will balance diff_flow within 0.1L/.s. (Total flow upto 200 L/s).
This issue occurs after the the most restrictive vessel changes, all valves will readjust and bring diff_flow back within spec. However, now none of the valves are at their maximum value, introducing further resistance on the system.

I need a way to bias the balancing valves so they are all trying to open further (while none are at maximum value), while also maintaining balanced a flow.

I'm thinking a periodic addition to all valves, or a cascaded loop that will try to increase "average valve position" etc

Any ideas, comments, links, videos or thoughts would be awesome!
 
a little bit idiotic
1. open all valves
2. vessel required_flow (PID SP):= minimum_flow
3. apply PID SP for all valves

PS just kidding. More detailed system description required, i presume.
 
Last edited:
create a tag called flow_bias, intialize it to zero, and add flow_bias to the required_flow calculation.

once per minute (30s? 10min),

  • if none of the valves are at their maximum position, then add 0.1 to flow_bias.
  • OR
  • if any valve is at its maximum position, then subtract 0.15 to flow_bias.
This is just an idea, I think it might end up causing an oscillation.

It might need a deadband, e.g. do nothing if at least one valve is within 2% of its maximum.
 
[*]if any valve is at its maximum position, then subtract 0.15 to flow_bias.

If we use the maximum valve position (100%), then we will be blind behind the upper value. If we use, for example, 95%, then we can choose the gain for the given flow / deviation of the valve position.

This is just an idea, I think it might end up causing an oscillation.

There will definitely be oscillation, because valve position deviations will be related to the operation of the valve PID controllers, so the use of a dead zone is mandatory, I better filter the valve positions with a very slow low-pass filter.

The question that worries me is whether the vessel will surprise us.
 
I think the valve position max will be something like 70%, we really don't see any real change in flow until valve pos = 60% (Butterfly valves).

But i agree, a dead zone would be required.

With a big blockage, the valve PID has a varying gain (higher when further from the optimum), so it balances out relativity quickly to catch that.

+ Over pressure and high flow monitoring interlocks.
 
There will be many letters below. But without understanding how the system works, we can give bad advice.

Imagine the pump->valve->vessel system. At the moment when the resistance in the vessel increases, the flow in the system will decrease, and the pressure will increase. The flow rate will be the same when the valve opens so much that the total resistance of the valve and the vessel becomes equal to the resistance before the change in the resistance in the vessel.

Now imagine that the pump is one and there is two groups valve + vessel . As the resistance in vessel 1 increases, the flow through vessel 1 will decrease and the pressure in the system will increase, causing the flow through valve 2 to increase. PID controllers will change the positions of the valves: open valve 1, close valve 2, the pressure value at this time without calculations is not clear.
In your system, not 2, but 8 valve + vessel groups. I.e. it's not so simple system.

I have 2 questions:
1. What a vessel is? How does the resistance to flow changes in it?
2. Why is it required that 1/8 of the total flow, not a fixed flow, pass through the vessels?
 
1. Vessels are filled with a medium that will filter water. The differential pressure across the filter will increase gradually over time until it is replaced. There is chance for blockages however.
2. 1/8 of the total flow through each vessel is the same as fixed flow, as total flow can be selected by operations 10-200L/s.
 
2. 1/8 of the total flow through each vessel is the same as fixed flow, as total flow can be selected by operations 10-200L/s.


Wait a just a doggone minute.

If total flow is selected, and presumably controlled(?), why not divide that selected flow by 8 for per-vessel flow setpoints to the valve controllers?

Is there a pump upstream of the filter vessels, with approximately the same fixed pressure upstream of each vessel, so the intent of the valves is to make the [vessel + valve] resistances all equal?
 
Wait a just a doggone minute.

If total flow is selected, and presumably controlled(?), why not divide that selected flow by 8 for per-vessel flow setpoints to the valve controllers?

Is there a pump upstream of the filter vessels, with approximately the same fixed pressure upstream of each vessel, so the intent of the valves is to make the [vessel + valve] resistances all equal?

Because the total flow sensor will show the sum of the flow rates through the valves, and it is equal to 8 * current valve required_flow
Because PID controllers will adjust the flows to the setpoints


About the setpoint control. I-regulator copes well with the task.
At each scan SP := SP + k*(required maximum valve position - maximum from 8 valves positions)


And one more stupid question:
Why not control by a given pressure in the system?
 
Last edited:
Exactly MaxK, The flow balancing through all vessels is perfect, however the question was more surrounding the PID's causing valve setpoint to creep down over time and valves inching towards closed.
eg: flow is still evenly balanced at:
Code:
V1:100% V2:80% V3:70% << Perfect as one valve is fully open
&
V1:50% V2:40% V3:35% << however this introduces unnecessary resistance.


We have added a bias to the PID SP (Flow) when no valves are at 100%, and this seems to be working pretty well.
 
Because the total flow sensor will show the sum of the flow rates through the valves, and it is equal to 8 * current valve required_flow...


I get all that. But OP also said the total flow could be selected by the operator.

Assuming that means there is some feedback control of total flow, e.g. perhaps via a VFD, and the sum of the 8 vessels' measured flows is the PV to that total flow feedback control.

So the goals are

  • run the selected total flow i.e. total flow SP,
  • run the VFD to meet that total flow SP with the minimum power requirement such that
  • the flow rate through each vessel is the same as the flow rate through all other vessels.
That being the case, sum of the 8 vessels' measured flow rates should be the same as the total flow rate PV, and since the total flow rate is under feedback control, that sum will also be the same as the total flow rate SP when that control is working. So the SPs for the individual vessels' flow valves should be 1/8 of the total flow rate SP.
 
We have added a bias to the PID SP (Flow) when no valves are at 100%, and this seems to be working pretty well.

I’m not such good at PID blocks, but as I as far as i can tell bias finally will be “eaten” by I-term

I made a rough model of the process, so if you want to check something, throw questions
# 10 Statements are at least partially verified on the model
 
I am going to assume you have a common centrifugal pump feeding the system. That matters because pump flow will change as valves move and system restriction and back pressure change.

The simplest way to do this is with a modified pressure control controlling pump flow. The pump flow can be modulated by throttling or variable speed, but if you use throttling you won't save any power with MOV logic. The pressure setpoint is modulated up or down based on the percentage open of the most open valve.

This article is based on blowers and airflow, but the concept is similar for pumps and water. Water is actually easier because it is incompressible. Look at the pressure-based systems section.

https://www.blowervacuumbestpractic.../calculating-most-open-valve-aeration-control
 
Last edited:

Similar Topics

Hi, The hardware is: Click Plc model # CO-O1DD1-O HMI model # S3ML-R magnetic-inductive flow meter model # FMM100-1001. I will set the flow meter...
Replies
4
Views
118
Dear All, I need a sample PLC program to count the output pulse of a mass flow meter so that a specific amount of mass (for example 100gm)can be...
Replies
2
Views
143
Has anyone installed Hp laserjet pro 4203 to OMNI 3000 or 6000 via ethernet..Is there a specific Config? I have a problem..Please advise
Replies
0
Views
54
I can't seem to figure out how to add descriptors to I/O points on an RMC using PCCU. Say, for example, I want to use "Valve_1" as a descriptor...
Replies
0
Views
70
Greetings ... someone sent me a request for some student handsouts that I developed ... turns out that I had this hosted on my business website...
Replies
0
Views
128
Back
Top Bottom