Two Destination Flow Split - Most Open Valve w/o pressure?

Lakee911

Member
Join Date
May 2006
Location
Columbus, OH
Posts
98
Hi All,

I've got a unique application that I've got my head wrapped around, but I'm having trouble writing my functional description or breaking it down sufficiently for implementation. Can y'all help?

PROBLEM: I have a pressurized forcemain w/ two flow control valves. I want maintain a level in a tank on one destination and send all excess flows, if any, to the other destination. One valve should be full open at all times.

So my thoughts were that I could use a reverse acting PID loop to control the valve to the tank. As the level rises, I begin close the tank valve and I fully open the other valve. If my tank level begins to drop, I'll open the tank valve. When it reaches 100%, I'll park it there and switch my PID output to direct acting and control the other valve so that it begins to close. As my tank level drops, the other destination valve will move closed. Then I'm ready to repeat.

I'm having difficulty determining just how I'd implement this. Any ideas in how to break it down or at least write it up in a functional that could be programmed? It's like I need to make an assumption on which one to control from and then it's just flip flopping on which valve its controlling.

Thanks,
Jason
 
One valve should be full open at all times.

Valve 1 is open 100% and valve 2 closed at 0% until tank is full. When tank is full, valve 1 closes to 0% and valve 2 opens to 100%. Create a delay or low-level well below 100% before filling tank again. No PID needed.

I'm sure I'm missing something as this seems too straightforward.
 
Valve 1 is open 100% and valve 2 closed at 0% until tank is full. When tank is full, valve 1 closes to 0% and valve 2 opens to 100%. Create a delay or low-level well below 100% before filling tank again. No PID needed.

I'm sure I'm missing something as this seems too straightforward.

this really does what he is saying, but...

If you want to control with PID's, you wont be able to keep 1 valve fully open at all times.

it would be more like when main valve fully open, divert valve fully closed. As main valve starts to close, divert valve starts to open. really you could do this with 1 pid, and then just invert the signal to the main valve to have the signal to the divert valve, however if there is not a positioner on each of the valves and just an i2p, then the valves will have a deadband before it starts to open, and this could cause issues as the main valve pinches back but the divert valve isnt opening yet. so the signal may need a "0" offset to the valves to compensate.
 
You only need one PID. Think about how the valves should work if the level is controlled using proportional control with the output proportional to the level. When the level is 0, the makeup should be 100%, the excess valve should be 0%. When the level rises to 50%, the makeup is still 100%, but the excess valve should close to 0%. So scale the excess valve 0 to 100% open corresponds to PID.CV 0 to 50. Then as the tank level continues to rise, the makeup valve closes, but the excess valve stays at 100%. So scale the makeup valve so that 100 to 0% corresponds to PIC.CV 50 to 100. It should work the same way if the control is changed from proportional to PI control. Note that the 50% may not be the best number to use as a cut-over. The cutover point could change depending on the line restrictions to the tank and in the excess water line.
 
Thanks for the help everyone!

Valve 1 is open 100% and valve 2 closed at 0% until tank is full. When tank is full, valve 1 closes to 0% and valve 2 opens to 100%. Create a delay or low-level well below 100% before filling tank again. No PID needed.

I'm sure I'm missing something as this seems too straightforward.

This is an all or nothing approach. I want to use a PID to maintain the tank level at or below a setpoint so I'm going to need partially open valves.

this really does what he is saying, but...

If you want to control with PID's, you wont be able to keep 1 valve fully open at all times.

I need to keep one valve fully opened at all times, otherwise I'm going to be driving the pressure up on the forcemain which is going to be inefficient and prevents it from flowing at its full potential. The pumps on the forcemain are maintaining a level in a tank so what comes in has to go out.

it would be more like when main valve fully open, divert valve fully closed. As main valve starts to close, divert valve starts to open. really you could do this with 1 pid, and then just invert the signal to the main valve to have the signal to the divert valve

I'm beginning to think that one PID loop could be the way to go, however, I'm not sure this is the exact right approach. You seem to be describing an overlap in the ranges (as one opens, one closes), such that we might be at like 25% w/ one and 75% with another or 20% on one and 80% on another but this doesn't allow one to be full opened all of the time. Hydrulics and valve selection are not my specialty, but I'm told that two valves with position set points that total to 100% is not the same as a valve at 100%. True?

however if there is not a positioner on each of the valves and just an i2p, then the valves will have a deadband before it starts to open, and this could cause issues as the main valve pinches back but the divert valve isnt opening yet. so the signal may need a "0" offset to the valves to compensate.

Fortunately, I have motorized valves that are relative quick acting and my deadband should be relatively small. I can command them to a specific position and I can also read their feedback.

You only need one PID. Think about how the valves should work if the level is controlled using proportional control with the output proportional to the level. When the level is 0, the makeup should be 100%, the excess valve should be 0%. When the level rises to 50%, the makeup is still 100%, but the excess valve should close to 0%. So scale the excess valve 0 to 100% open corresponds to PID.CV 0 to 50. Then as the tank level continues to rise, the makeup valve closes, but the excess valve stays at 100%. So scale the makeup valve so that 100 to 0% corresponds to PIC.CV 50 to 100. It should work the same way if the control is changed from proportional to PI control. Note that the 50% may not be the best number to use as a cut-over. The cutover point could change depending on the line restrictions to the tank and in the excess water line.

I think we might be heading in the right direction.

Here's what I've got:

Level > Setpoint : Tank valve moves closed OR bypass valve moved open.
Level < Setpoint : Tank valve moves opened OR bypass valve moved closed.

Problem is, I don't always know which valve I should be modulating. It depends on the hydraulic preference. For example, if tank level is reaching setpoint and PID loop starts closing the tank valve, I need to open the bypass valve fully. Once that's open, either I need to continue to modulate the tank valve and if it gets full open then I know that I'm controlling the wrong valve and I switch to the bypass valve and begin to close it (to push more flow through the tank valve). Conversely, the opposite is true, if I'm trying to raise the level to its setpoint (and it's okay if I'm below it), I'll either open the tank valve further or I'll close the bypass valve.

So, I think that I need some sort of split range PID or I need to manipulate the PID output to control the valves.

So, now what?

Thanks everyone!
 
I'm beginning to think that one PID loop could be the way to go however, I'm not sure this is the exact right approach. You seem to be describing an overlap in the ranges (as one opens, one closes), such that we might be at like 25% w/ one and 75% with another or 20% on one and 80% on another but this doesn't allow one to be full opened all of the time. Hydrulics and valve selection are not my specialty, but I'm told that two valves with position set points that total to 100% is not the same as a valve at 100%. True?


One PID with inverted outputs to each valve is the way to do what you want. As everybody else has explained, some tuning/logic would be required to compensate for deadband, flow profile, etc.

You've been told correct, the flow through a valve is not linear with respect to the %open, and thus 20% + 80% would most likely not be equal to 100%. To compensate, find the valve manufacturer's flow curve/profile and use this info to linearize the output of your PID before sending it to the valve.

To what accuracy does this tank level need to be maintained? If you've got time to let the level lower and fill, my crude method above may still make sense.
 
Before setting out to define a control strategy, it's a good idea to clearly define your process objectives.

If your process objective was to maximize flow through the header while ensuring tank level setpoint control, you might consider valve position (or optimizing) control. You'd have to decide if it was worth the added complexity.

Basically, you have your tank level controller working on the one valve conventionally. Then define another PI controller for the other valve. This controller uses the valve position of the tank fill control valve as its input, and a highish value (say 90%) as it's setpoint. This new controller will act indirectly to maximize flow through the header while still allowing the level controller to fully function.

This would work best if you had a flowmeter on the flow to the tank; you would then use a level to flow cascade arrangement for level control. Basically, the flow PI would be fast acting, the valve postion controller slower acting, and the level controller essentially a proportional controller with just a little I action. You might be able to do it without the flowmeter, but it would likely be more difficult to tune the system well.
 

Similar Topics

Hello, I am having trouble with the CPT in RSLogix 500, with a ML1400. At first I had everything in one equation, it gave me the Source and...
Replies
5
Views
2,025
Good Afternoon , I created a small FactoryTalk View application , and created a runtime. I want to download it to a Panelview Plus 6 700 ...
Replies
4
Views
4,423
TIA v15.1 CPU 1512SP F-1 PN Took a program that was working fine on one system and downloaded it into an identical system. I've got a fault on...
Replies
4
Views
6,767
Is it possible to configure the MSG block (RSLogix 500 / Micrologix 1400) to have a dynamic destination IP adress?
Replies
1
Views
1,530
AB Logix 5000 Controllers Compact Logix L24ER PLCs Can not use Produced / Consumed (due to network / bandwidth limitations) so this is not an...
Replies
2
Views
3,344
Back
Top Bottom