PID ??? Tank level switch feed by a variable valve.

ViperDaSnake

Member
Join Date
Mar 2010
Location
Texas
Posts
45
Hey guys

Thanks in advance for the help.

Equipment - Boiler, with 2 position level switch (full and low)
Variable supply valve
Compact Logix PLC

Right now when the level switch hits low, the variable valve turns wide open and fills the boiler (tank) until the full switch is made and then the valve closes. What a waste of a good valve.

I would like to throttle the valve but I am not sure how to approach this.
The setpoint is anywhere between and including the two switch conditions.
Can you use a digital input to run a PID control?
Is there a better way to attack this without changing the level control to analog...?
 
Is the process batch or continous?

Batch = Fill, heat, empty, repeat - in which case just a full on/off valve is appropriate.

Continous - start with full on and full off. Each time the high level switch is hit transfer to the current 'off' setting but decrease the 'on' setting by one increment. Similarly each time the low level switch is hit transfer to the current 'on' setting but increase the 'off' setting one increment. Maintain a minimum seperation between the 'on' and 'off' values. You should arrive at some useful intermediate values. Of course you will still use full on and full off for process start and end operations.
 
Which part of the boiler?

If the Process Variable is digital, there's really no point of using a PID. I have seen using PID to control digital output with analog input though.
 
I would kind of do what Bernie suggests but with a twist. Maintain a single "desired" valve position. In normal between the limits cases the valve uses this as the command. If you hit the full switch, decrease the desired value slightly and close the valve completely for some time. After this time revert to the "desired" value. If you hit the empty limit, increase the valve desired value slightly and open the valve fully for some time. Then revert to the desired value.

If you want to get clever, occasionally do a full off/full on/full off cycle and record how long it takes to make those transitions. This will give you some idea of a desired valve starting point. You can also try and determine how much to change the desired value by looking at how long it takes hit a limit after an adjustment.

Keith
 
Is the process batch or continuous?

Continuous - start with full on and full off. Each time the high level switch is hit transfer to the current 'off' setting but decrease the 'on' setting by one increment. Similarly each time the low level switch is hit transfer to the current 'on' setting but increase the 'off' setting one increment. Maintain a minimum seperation between the 'on' and 'off' values. You should arrive at some useful intermediate values. Of course you will still use full on and full off for process start and end operations.


Continuous is what I am looking for. Actually the scenario that described is exactly what I was thinking of... I just cant seem to visualize that as ladder logic. My thinking was that I time the fill time vs the drain time and calculate some mythical:geek: PV to run the PID on, but the more I think through it the more confusing it seems. :sick:

Could you explain the concept in greater detail? I think its a viable solution I'm just not sure how to calculate the "setting" your referring to.

Just to kind of put things in perspective, the low level makes, the water fills to the high level in ~ a minute and then 5 minutes later the low level makes...
===================================================

I reread your post and maybe I'm over thinking it....
Are you saying that when the low level switch is made,
transfer a value to the valve position command (SETPOINT.)
A completely open, large value (OPEN).

When the high level is made,
transfer a completely closed, small value (CLOSE)

if HIGH then SETPOINT = CLOSE
if [OPEN - 5] > CLOSE then OPEN = OPEN - 1

Then when the low level switch is made again

if LOW then SETPOINT = OPEN
if [CLOSE + 5] < OPEN then CLOSE = CLOSE +1

This will give a deadband to work with but wont you just wind up in the middle...?
Do you look at the high level vs time to close the valve completely to keep from overfilling? and the same for the low level?
Am I getting this right?
It seems too simple...

I know the above code isn't ladder logic, its just easier to represent the code in text for now so I apologize if its confusing.

again again again THANKS...!!!
 
Which part of the boiler?

If the Process Variable is digital, there's really no point of using a PID. I have seen using PID to control digital output with analog input though.

This is the boiler level control, a high OR low digital switch.
Ive used PID with digital outputs, just didnt know if digital in could work.
 
Last edited:
I would kind of do what Bernie suggests but with a twist. Maintain a single "desired" valve position. In normal between the limits cases the valve uses this as the command. If you hit the full switch, decrease the desired value slightly and close the valve completely for some time. After this time revert to the "desired" value. If you hit the empty limit, increase the valve desired value slightly and open the valve fully for some time. Then revert to the desired value.
Keith

I like that even better, It is absolutely critical that this never overfills (boiler shuts down) and A B S O L U T E L Y critical that this never ever ever gets to low (boiler blows up)

I going to do some thinking on this, seems like a good way to start.
The desired value should actually be quite low. The valve should just crack open maybe 1/8 ~ 1/4 open to make things happy.
The system is quite often prone to surges so high and low limits would be common.

If you want to get clever, occasionally do a full off/full on/full off cycle and record how long it takes to make those transitions. This will give you some idea of a desired valve starting point. You can also try and determine how much to change the desired value by looking at how long it takes hit a limit after an adjustment.

So with error correction...? sounds even better... đź“š:unsure:
 
Thinking about what I wrote - there would be no way to back out of the established deadband if the flow should change. Have to think about that a bit.

Let's say if the low doesn't clear in x seconds then bump the OPEN up by a bunch. Similarly if the high doesn't clear bump the CLOSE down by a bunch. (Sorry for the imprecise language. Just babbling along here.)

The same would be true if the high or low makes twice before the other (e.g. the emptying flow gets larger while re-filling.) Bump the fill values by a bunch.
 
Bump controllers work fine, IF you have a decent amount of feed forward. That is, as long as you know approximately where you need to be, trimming with a bump control works well. Using a bump controller for 100% control though would be an issue.
 
I hate threads like this

There have been too many posts and we still don't know if the rate of fluid leaving the boiler is constant. I suspect not but I also think that is a key.

I actually think this is nuts. Yes, you can get open and shut the valve between the two level sensors and go a slower rates but there isn't much you can do without more feedback.
 
"Be the machine". You are the controller. You have an "Low" light, a "Full" light and a variable feed knob. You don't have a level indicator. What do you do?
 
Inference, Peter. Inference.

From post #7:
Originally posted by ViperDaSnake:

The system is quite often prone to surges so high and low limits would be common.

I think we can assume it is not completely constant. There is likely a general bias to the flow but that is about it.

It sounds to me like ViperDaSkake has some time on his hands and is looking to play. Far be it from me to dissuade some possibly value added play time. What value it adds I'm not sure. But who knows.

Keith
 
The rate of "fluid" is nill... nota... nothing....

The amount of steam varies though, due to changing loads.

Play friendly Peter... You post was not in a spirit of cooperation...



The boiler feeds 4 20' presses. When they load a press the load on the boiler increases, the cycle times on the press is different so sometimes 2 presses come online at the same time and sometimes they load all 4 at the same time...! With that said the boiler usually runs at a 30% rate and for the most part is stable.

Time on my hands.... HA...!!!

The payback on this... We just replaced the system that feeds the boiler (Deaerator and Surge tank)This new system is PLC controlled with every pump on a VFD and all valves (supply, transfer and dump) are variable rate.
The tank levels are analog feedback. The whole thing screams analog control except for the damn boiler who either says, Im Full or Im empty...!!!

So when the boiler needs water, the whole system reacts but not in a smooth analog way. In a "o ****" << (i can say damn but i cant say c r a p?) digital manor. So all of my new controls go wide open then the boiler is filled, then everything shuts off. I've tuned the system as much as possible but when the head of the system is digital...
 
Last edited:

Similar Topics

I'm wondering if you guys can help me decide the best way to go about controlling the level on a tank. I want to use a Pneumatic actuator and...
Replies
23
Views
5,993
Hello All, I am currently working on Controling the water level in a tank using a PID instruction in RSlogix 5000 via VFD. I have set my...
Replies
4
Views
3,206
Hi everyone, Im having some questions regarding how to tune the PID for this application. It is a jacketed tank, lets say 1000 liters, and its...
Replies
17
Views
6,431
Dear all, I have quite an experience in programming PLCs but it is the first time I get to Implement a process control. This is not a thread...
Replies
5
Views
5,533
Hai welcome to automation world recently i am working on MICROLOGIX 1100 i did the operation for PID block. that is one tank is there and one...
Replies
1
Views
4,100
Back
Top Bottom