Feed Forward Bias PLC5 Integer PID

jrowe4

Member
Join Date
Jul 2012
Location
palos park
Posts
16
Hello! I have a question that I can't seem to find a solution to here on the forums. I am working on an evaporator system where there are several PID loops that are being used as a feed forward bias to other PID Loops.

One arrangement in particular has me scratching my head. I have a "Loop 4" that tries to control the level inside the evaporator based on a level transmitter. The loop is direct controlling (SP-PV) which to me makes sense. "If I want more level, then open the valve!" The CV of this loop is being written to N10:167.

I have another loop, "loop 9” that tries to control the inlet feed to the evaporator based off a flow transmitter. This loop is also direct controlling (SP-PV). Loop 9's control block is N10:161, meaning that the CV from Loop 4 is sent to Loop 9 as a feed forward bias.

In a way, I understand what the programmer was trying to do. We want to maintain flow, but for some reason if the level is off then kick the flow loop to get the level back into spec. However, I only see output from the level PID loop 4 when transmitted level is below setpoint.

According to the manual, the Feed Forward Bias parameter has the range 0-4095 for integer PID blocks. Does this mean that the feed forward bias cannot send negative bias? I think it’s odd in this setup that I can only account for Level below SP scenarios and not above. It’s almost a one sided feed forward. Does anyone have any information on the PLC5 FF? I can't seem to find anything out there. Thanks, much appreciated!
 
Last edited:
Thanks, in my head I knew the correct control scheme but had a brain **** and put the wrong one down.

I must have an earlier version of the PLC5 manual because it states that the feed forward terms range is only 0-4095. I will have to check on the type of processor and revision of my PLC5.

However, do feed forward values usually stay constant? I have attached a picture of the loops in question. In the previous post I said loop 9, but meant to say loop 8. You can see that loop 2 is writing its CV to loop 8's FF word. My original confusion stemmed from this because it seems to me that Loop 4's CV will always be ranged from 0-100% (0-4095) and will not contain negative values. This only makes me more confused as how Loop 4's CV now being used as a FF combines with Loop 8's CV.


picture of Loops2.jpg
 
You are going to have to post your program, its .RSP file for someone to see how and
what gets written to the feedforward registers. Zip the file first if you can post it.
 
However, do feed forward values usually stay constant?
No, the purpose of "feedforward" to bump the output up or down depending on process conditions.

My original confusion stemmed from this because it seems to me that Loop 4's CV will always be ranged from 0-100% (0-4095) and will not contain negative values. This only makes me more confused as how Loop 4's CV now being used as a FF combines with Loop 8's CV.
This is true.

So the question remains, does it work? If so don't fix it.

And I do see now that the output (CV) of loop 4 is being written to the feedforward (FF) of loop 8 (word 6).
 
Thanks for the reply!

We are working on analyzing control loops in this process. All the legacy knowledge is long gone, and programmers did not leave ANY comments in the ladder files for what they were trying to accomplish.

I am suggesting new streamlined PID control based off of different process variables as is suggested by the manufacture of our equipment. I wanted to know how the current system worked so we could use that knowledge to move forward.

I can't say for sure if it is working correctly because I don't know what "working" was intended to mean (due to lack of documentation, etc....). I do know though that sometimes if one variable is off, the whole system shuts down. It wasn't until recent that we started to look at the code and find stuff like this feed forward loop. The info you posted is really helping to remove some of the fog of war.

I have attached another picture of the PID loops. The yellow block shows loop 4's SP, PV and current CV based on the error and PID constants. Since Loop 4 is reverse controlling, the CV is positive. This CV value is fed into Loop 8's FF/Bias word (that’s why I was wondering if this value could ever be negative)

In this case, does the value at the FF/Bias word just simply add on to the PID loops calculated output? For example, if the FF/Bias word had raw 500 counts and the PID loop calculated output was raw 700 counts, then the PID loop CV would be 1300? Does FF/Bias usually come from a PID loop as it does in my example? Thanks, I really appreciate it!

feed forward loops.png
 
Last edited:
In this case, does the value at the FF/Bias word just simply add on to the PID loops CV?
Yes, add or subtract. But in your case just add, to me very unusual.

I have never seen the CV of one PID loop being sent to anothers FF.

The feedforward value is usually calculated based on process influences that can cause an upset in the process being controlled. (Get moving before something happens so to speak.)

Some reading material for you, see link.

http://www.controlguru.com/2008/050408.html

And hopefully the PID gurus will check in soon.
 
Last edited:
What is the primary aim of the system? Is it to maintain a steady flow into the tank? Or is it to maintain a steady level in the tank? You haven't indicated what is acting to reduce tank level (i.e. an outlet valve).
Changing level in the tank represents the integral of the difference between inflow and outflow. For a steady inflow, you need to adjust outflow to maintain level. On the other hand, if level is critical, then one or the other of the flows should be adjusted.
A cascade configuration might be more appropriate, with level as the outer loop.
 
This is an acid evaporator system. Right now there are 4 control loops that are intertwined - flow in, level of evaporator, flow out, and temperature of discharge acid. Discharge acid temperature is related to the density of the acid for a given steam and vacuum setting.

So the operator has to independently pick 4 set points for the variables above. These all go back to their own PID blocks in the PLC5, with respective PVs coming from various transmitters.

The level PID block directly sends its CV to the feed forward/bias term of the flow in loop. Therefore it only biases flow when level is below set point and not above. Also, the programmer put in some sort of dead band control where if the level reaches +-5% of what the level SP was, the flow in SP will change by -+1 GPM. The temperature loop is basically the same in how it affects the flow out loop. It sends its CV straight to the flow out feedforward bias term.

Everything oscillates. I'm thinking of getting rid of all this feed forward and bias stuff and go for a cascade loop system using level as the master and flow as the slave. I'll let the PLC decide and have complete control of what flow it needs to maintain level. Anyway, I think that’s my next step.
 
It obvious to me the PID loops will fight each other.

Why does the operator need to change the four set points?
If there are no loses then the in-flow better match the out-flow. If some of the fluid evaporates then the out-flow should be a little less than the in-flow. Therefore the operator shouldn't be adjusting both the in-flow and the out-flow.
The same set point should be used for both the in-flow and the out-flow but one of the two set points needs to have an offset that is added to the SP. This offset should come from the level control.

So how is this system supposed to work?
 
Peter,

Update - found some notes from the maker of the evaporator while googling

"In applications where liquid re-circulation is required to maintain sufficient wetting in the final stage of the evaporator, the product concentration control is simple and accurate. The procedure is to set the steam flow rate at the design value, remove product based on density in the recirculation loop, and adjust the feed flow to maintain liquid levels in the evaporator. When a higher throughput is required, then the steam rate is increased. "

Granted all the instrumentation is calibrated, I'm thinking I can create two cascade loops - 1) Level primary and Feed in secondary ; 2) Density out primary and feed out secondary

I was thinking about what you said with feed in & feed out SP equal with bias from the level. What we want coming out of the evaporator is a certain density though, so depending on it we either keep product in longer or send it out faster.

Brought the cascade topology up to the production engineer for the process, they are a little worried on such a drastic change. I'm thinking we can probably add a selector switch from the HMI that will toggle which control strategy we want to use from a cold start up. I'll update the thread if anything exciting happens. Thanks everyone for all the help, I really appreciate it!
 
I've done evaporator control before but cannot tell if it is like what you're facing. A P&ID of your process along with typical flowstream rates/concentrations would really demystify things for people trying to help you here.

Presumably, you'll want to be able to vary the throughput of the unit. If that's the case, you'll want to have both material and energy balance controls. I'll guess that very little acid is present in the vapor stream and that your inlet acid concentraion is constant or slowly varying. If that's the case, at steady state operation the outflow from the evap will be proportional to inflow. This suggests 2 things for your energy and material balance control.
Material balance: Level is your primary with its output as a ratio; the ratio is multiplied by the throughput rate to cascade to the secondary flow controller setpoint.
Energy balance: For a given density, heat input rate will be proportional to throughput. This suggests how to control heat input.
Also, many coriolis type flowmeters offer a direct density measurement along with flow measurement. This would be preferred over using temperature as an inferred density measurement. Using temperature requires precise/excellent control of evaporator pressure and/or pressure compensation of the temperature signal to reflect the vapor-liquid equilibrium your system is designed to operate at.
 

Similar Topics

Hey All, I am working on the programming to maintain level and pressure in a 80 gallon surge tank. This tank feeds fillers that fill either 2.5...
Replies
2
Views
1,532
I have a startup issue in need of a solution, the problem involves 3 valves on a evaporation system. The three valves are a evaporator feed water...
Replies
3
Views
1,514
I do a lot of hot water set projects, which are simply a steam heat exchanger with a steam control valve that adjusts to a PID setpoint- the water...
Replies
3
Views
1,766
Hi guys! It seems to me that PID loops with feed forward are underutilized. Maybe it's just me but I think almost every loop would work better...
Replies
6
Views
2,689
I have a conveyor full of product in an oven, I am trying to control the final temperature of the product using conveyor speed. I have 4 product...
Replies
0
Views
1,449
Back
Top Bottom