Feedforward Control

Chapter 34 - Basic Process Control Strategies and Control System Configurations

PDF Version

“Feedforward” is a rather under-used control strategy capable of managing a great many types of process problems. It is based on the principle of preemptive load counter-action: that if all significant loads on a process variable are monitored, and their effects on that process variable are well-understood, a control system programmed to take appropriate action based on load changes will shield the process variable from any ill effect. That is to say, the feedforward control system uses data from load sensors to predict when an upset is about to occur, then feeds that information forward to the final control element to counteract the load change before it has an opportunity to affect the process variable. Feedback control systems are reactive, taking action after to changes in the process variable occur. Feedforward control systems are proactive, taking action before changes to the process variable can occur.

This photograph shows a kind of feedforward strategy employed by human operators running a retort: a steam-powered machine used to pressure-treat wooden beams at a milled lumber operation. The sign taped to this control panel reminds the operator to warn the maintenance department of an impending steam usage:

The story behind this sign is that a sudden demand in retort steam causes the entire facility’s steam supply pressure to sag if it happens at a time when the boiler is idling. Since the boiler’s pressure control system can only react to deviations in steam pressure from setpoint, the boiler pressure controller will not take any action to compensate for sudden demand until after it sees the steam pressure fall, at which point it may be too late to fully recover. If operators give the maintenance personnel advance notice of the steam demand, though, the boiler may be fired up for extra steam capacity and thus will be prepared for the extra demand when it comes. The upset avoided here is abnormally low steam header pressure, with the predictive load being the retort operator’s planned usage of steam. Crude as this solution might be, it illustrates the fundamental concept of feedforward control: information about a load change is “fed forward” to the final control element to preemptively stabilize the process variable.

As the following section explains, perfect feedforward control action is nearly impossible to achieve. However, even imperfect feedforward action is often far better than none at all, and so this control strategy is quite valuable in process control applications challenged by frequent and/or large variations in load.

Load Compensation

Feedback control works on the principle of information from the outlet of a process being “fed back” to the input of that process for corrective action. A block diagram of feedback control looks like a loop:

The reason any control system is necessary at all1000 to maintain a process variable at some stable value is the existence of something called a load. A “load” is a variable influencing a process that is not itself under direct control, and may be represented in the block diagram as an arrow entering the process, but not within the control loop:

For example, consider the problem of controlling the speed of an automobile. In this scenario, vehicle speed is the process variable being measured and controlled, while the final control device is the accelerator pedal controlling engine power output. If it were not for the existence of hills and valleys, head-winds and tail-winds, air temperature changes, road surface variations, and a host of other “load” variables affecting car speed, maintaining a constant speed would be as simple as holding the accelerator pedal at a constant position.

However, the presence of these “load” variables makes necessitates a human driver (or a cruise control system) continually adjusting engine power to maintain constant speed. Using the car’s measured speed as feedback, the driver (or cruise control) adjusts the accelerator pedal position as necessary based on whether or not the car’s speed matches the desired “setpoint” value.

An inherent weakness of any feedback control system is that it can never be proactive. The best any feedback control system can ever do is react to detected disturbances in the process variable. This makes deviations from setpoint inevitable, even if only for short periods of time. In the context of our automobile cruise control system, this means the car can never maintain a perfectly constant speed in the face of loads because the control system does not have the ability to anticipate loads (e.g. hills, wind gusts, changes in air temperature, changes in road surface, etc.). At best, all the feedback cruise control system can do is react to changes in speed it senses after some load has disturbed it.

Feedforward control addresses this weakness by taking a fundamentally different approach, basing final control decisions on the states of load variables rather than the process variable. In other words, a feedforward control system monitors the factor(s) influencing a process and decides how to compensate ahead of time before the process variable deviates from setpoint. If all loads are accurately measured, and the control algorithm realistic enough to predict process response for these known load values, the process variable (ideally) need not be measured at all:

As was the case with cascade control, feedforward control also has an analogue in workplace management. If you consider a supervisor to be the “controller” of a work group (issuing orders to his or her subordinates to accomplish important tasks), a feedforward system would be when someone informs the supervisor of an important change that will soon impact the work group. By having this information “fed forward” to the supervisor, the supervisor may then take preemptive measures to better manage this change before its effects are fully felt. If this predictive information is accurate, and the supervisor’s response appropriate, any negative impacts of the change will be minimized to the point where no reactive steps will be needed. Stated differently, good feedforward control action translates what would otherwise be a crisis into an insignificant event.

Returning to the cruise control application, a purely feedforward automobile cruise control system would be interfaced with topographical maps, real-time weather monitors, and road surface sensors to decide how much engine power was necessary at any given time to attain the desired speed1001. Assuming all relevant load variables are accounted for, the cruise control would be able to maintain constant speed regardless of conditions, and without the need to even monitor the car’s speed.

This is the promise of feedforward control: a method of controlling a process variable so perfect in its predictive power that it eliminates the need to even measure that process variable. If you are skeptical of this feedforward principle and its ability to control a process variable without even measuring it, this is a good thing – you are thinking critically! In practice, it is nearly impossible to accurately account for all loads influencing a process and to both anticipate and counter-act their combined effects, and so pure feedforward control systems are rare1002. Instead, the feedforward principle finds use as a supplement to normal feedback control. To understand feedforward control better, however, we will consider its pure application before exploring how it may be combined with feedback control.

First, let us consider a liquid level control system on an open tank, where three different fluid ingredients (shown in the following P&ID simply as A, B, and C) are mixed to produce a final product. A level transmitter (LT) measures liquid level, while a level controller (LC) compares this level to a setpoint value, and outputs a signal calling for a certain amount of discharge flow. A cascaded (slave) flow controller (FC) senses outgoing flow via a flow transmitter (FT) and works to maintain whatever rate of flow is “asked” for by the level controller:

The level control system acts to keep liquid level constant in the vessel, ensuring adequate mixing of the three ingredients1003. Being a feedback level control system, it adjusts the discharge flow rate in response to measured changes in liquid level. Like all feedback control systems, this one is reactive in nature: it can only take corrective action after a deviation between process variable (level) and setpoint is detected. As a result, temporary deviations from setpoint are guaranteed to occur with this control system every time the combined flow rate of the three ingredients increases or decreases.

Let us now change the control system strategy from feedback to feedforward. It is clear what the loads are in this process: the three ingredient flows entering the vessel. If we measure and sum these three flow rates1004, then use the total incoming flow signal as a setpoint for the discharge flow controller, the outlet flow should (ideally) match the inlet flow, resulting in a constant liquid level. Being a purely feedforward control system, there is no level transmitter (LT) any more, just flow transmitters measuring the three loads:

If all flow transmitter calibrations are perfect, the summing of flow rates flawless, and the flow controller’s tuning robust, this level control system should control liquid level in the vessel by proactive effort (“thinking ahead”) rather than reactive effort (“after the fact”). Any change in the flow rate of ingredients A, B, and/or C is quickly matched by an equal adjustment to the discharge flow rate. So long as total volumetric flow out of the vessel is held equal to total volumetric flow into the vessel, the liquid level inside the vessel cannot change1005.

If this feedforward strategy reminds you of ratio control, you are thinking correctly: the ingredient flow sum signal is the wild variable, and the discharge flow signal is the captive variable. The flow controller simply maintains the discharge flow rate at a 1:1 ratio with the (total) ingredient flow rate. In fact, pure feedforward control is a variation of 1:1 ratio control, except that the real process variable (tank level) is neither the wild (total incoming flow) nor the captive variable (discharge flow) in the process.

An interesting property of feedforward and ratio control systems alike is that they cannot generate oscillations as is the case with an over-tuned (excessive gain) feedback system. Since a feedforward system does not monitor the effects of its actions, it cannot react to something it did to the process, which is the root cause of feedback oscillation. While it is entirely possible for a feedforward control system to be configured with too much gain, the effect of this will be overcompensation for a load change rather than oscillation. In the case of the mixing tank feedforward level control process, improper instrument scaling and/or offsets will merely cause the discharge and inlet flows to mis-match, resulting in a liquid level that either continues to increase or decrease over time (“integrate”). However, no amount of mis-adjustment can cause this feedforward system to produce oscillations in the liquid level.

In reality, this pure feedforward control system is impractical even if all instrument calibrations and control calculations are perfect. There are still loads unaccounted for: evaporation of liquid from the vessel, for example, or the occasional pipe fitting leak. Furthermore, since the control system has no “knowledge” of the actual liquid level, it cannot make adjustments to that level. If an operator, for instance, desired to decrease the liquid level in order to reduce the residence time (also known as “retention time”)1006, he or she would have to manually drain liquid out of the vessel, or temporarily place the discharge flow controller in “manual” mode and increase the flow there (then place back into “cascade” mode where it follows the remote setpoint signal again). The advantage of proactive control and minimum deviation from setpoint over time comes at a fairly high price of impracticality and inconvenience.

For these reasons, feedforward control is most often found in conjunction with feedback control. To show how this would work in the liquid level control system, we will incorporate a level transmitter and level controller back into the system, the output of that level controller being summed with the feedforward flow signal (by the LY summing relay) before going to the cascaded setpoint input of the discharge flow controller:

This hybrid control strategy is sometimes called feedforward with trim. In this context, “trim” refers to the level controller’s (LC) output signal contributing to the discharge flow setpoint, helping to compensate for any unaccounted loads (evaporation, leaks) and provide for level setpoint changes. This “trim” signal should do very little of the control work in this system, the bulk of the liquid level stability coming from the feedforward signals provided by the incoming flow transmitters.

A very similar control strategy commonly used on large steam boilers for the precise control of steam drum water level goes by the name of three-element feedwater control. The following illustration shows an example of this control strategy implemented with pneumatic (3-15 PSI signal) instruments:

Such a control system is called “three-element” because it makes use of three process measurements:

  • Feedwater flow rate
  • Steam drum water level
  • Steam flow rate

Feedwater flow is controlled by a dedicated flow controller (FIC), receiving a remote setpoint signal from a summing relay (LY). The summer receives two inputs: a steam flow signal and the output signal (trim) from the level controller (LIC). The feedforward portion of this system (steam flow feeding forward to water flow) is intended to match the mass flow rates of water into the boiler with steam flow out of the boiler. If steam demand suddenly increases, this feedforward portion of the system immediately calls for a matching increase in water flow into the boiler, since every molecule of steam exiting the boiler must come from one molecule of water entering the boiler. The level controller and transmitter act as a feedback control loop, supplementing the feedforward signal to the cascaded water flow controller to make up for (“trim”) any shortcomings of the feedforward loop.

A three-element boiler feedwater control system is a good example of a feedforward strategy designed to ensure mass balance, defined as a state of equality between all incoming mass flow rates and all outgoing mass flow rates. The steam flow transmitter measures outgoing mass flow, its signal being used to adjust incoming water mass rate. Since mass cannot be created or destroyed (the Law of Mass Conservation), every unit of steam mass leaving the boiler must be accounted for as an equivalent unit of water mass entering the boiler. If the control system perfectly balances these mass flow rates, water level inside the boiler cannot change.

In processes where the process variable is affected by energy flow rates rather than mass, the balance maintained by a feedforward control system will be energy balance rather than mass balance. Like mass, energy cannot be created or destroyed (the Law of Energy Conservation), but must be accounted for. A feedforward control system monitoring all incoming energy flows into a process and adjusting the outgoing energy flow rate (or vice-versa) will ensure no energy is depleted from or accumulated within the process, thus ensuring the stability of the processes’ internal energy state.

An example of energy-balance feedforward control appears in this heat exchanger temperature control system:

The two transmitters on the incoming (cold oil) line measure oil temperature and oil flow rate, respectively. The first “summing” function subtracts the incoming oil temperature from the setpoint (desired) temperature, and then the difference of these two temperatures is then multiplied by the flow rate signal to produce a signal representing the energy demand1007 of the incoming oil (i.e. how much energy will be required to elevate the oil flow’s temperature to setpoint). The “energy demand” signal is summed with the temperature controller’s output signal to set the steam valve position (adding energy to the process).

There do exist other loads in this process, such as ambient air temperature and chemical composition of the oil, but these variables are generally less influential on discharge temperature than feed temperature and flow rate. This illustrates a practical facet of feedforward control: although there may be a great many loads affecting our process variable, we must generally limit our application of feedforward to only the most dominant loads in order to limit control system cost. Simply put, we usually cannot justify the expense and complexity of a feedforward control system compensating for every single load in a system.

Proportioning feedforward action

Feedforward control works by directly modulating the manipulated variable in a control system according to changes sensed in the load(s). In order for feedforward to function optimally, it must adjust the manipulated variable in a manner that is proportionate to the need: no more, and no less. At this juncture it is appropriate to ask the question, “how do we know the amount of feedforward action that will be adequate for a process, and how do we adjust it if it is too much or too little?”

In processes where the feedforward control strategy attempts to achieve direct mass- or energy-balance, the question of adequate feedforward action is answered in the mathematics of measuring the incoming and outgoing flows. Consider the following mass-balance level control system where the combined sum of three inlet flows is routed to the setpoint of the exit flow control loop. In this diagram, the portions of the control strategy implemented as function blocks (algorithms in software) appear inside a yellow-colored bounded area, while all real physical instruments appear outside the yellow area:

If all flowmeters are calibrated in pounds per minute, then the feedforward signal will likewise be scaled in pounds per minute, and so will the setpoint be for flow control loop. In a digital control system, it is quite customary to scale each and every analog input signal with some real “engineering unit” of measurement, so that the signal will be treated as a physical quantity throughout as opposed to being treated as some anonymous percentage value. Not only is this consistent scaling a standard feature in digital control systems, but it also helps the implementation of this feedforward control strategy, because we desire the out-going mass flow rate to precisely match the (total) in-coming flow rate. So long as all flowmeters and their associated scaling factors are accurate, the feedforward control’s action must be exactly right: an increase of +5 pounds per minute in incoming flow rate will prompt an immediate increase of +5 pounds per minute in outgoing flow rate, simply by virtue of all these measured flows having been scaled in the same unit of measurement.

The situation is not as simple in systems where the feedforward control is not precisely balancing mass-flow or energy rates. By contrast, let us examine the following pH neutralization system equipped with feedforward control action. Here, the incoming liquid is alkaline (pH greater than 7), and the control system’s job is to mix just enough acid reagent to “neutralize” the solution (bring the pH value down to 7):

Controlling the pH (acidity/alkalinity) of a liquid solution is challenging for many reasons, not the least of which being the need to have adequate mixing time for the reagent to react with the influent. This mixing time translates to dead time in the feedback control system. If the influent’s pH suddenly changes for any reason, the feedback control system will be slow to alter the reagent flow rate due to this dead time, causing long-lasting deviations from setpoint. The goal of the feedforward signal (from the influent pH transmitter to the summer) is to preemptively adjust reagent flow rate according to how alkaline the incoming flow is, countering any sudden changes in influent pH so the feedback control system doesn’t have to take (delayed) action.

Once again, it is appropriate to ask the question, “how do we know the amount of feedforward action that will be adequate for this process, and how do we adjust it if it is too much or too little?” It would be blind luck if the system happened to work perfectly as shown, with the influent pH transmitter’s signal going straight to the summing function to be added to the pH controller’s output signal. Certainly, an increase in influent pH would cause more acid to be added to the mix thanks to feedforward action, but it would likely add either too much or too little acid than it should. The scale of the influent pH transmitter does not match the scale of the signal sent to the control valve, and so we do not have a neat “pound-for-pound” balance of mass flow as we did in the case of the level control system.

A neat solution to this problem is to add another function block to the feedforward portion of the control system. This block takes the influent pH transmitter signal and skews it using multiplication and addition, using the familiar linear equation \(y = mx + b\) (where \(y\) is the output signal of the function and \(x\) is the input signal; \(m\) and \(b\) being constants). This function block is typically called a gain and bias block:

The gain adjustment (\(m\)) in this function block serves to amplify or attenuate the feedforward signal’s magnitude, while the bias adjustment (\(b\)) offsets it.

Determining practical values for these “feedforward tuning constants” is relatively easy. First, disable feedback control1008 with the output value at or near 50%. Next, introduce load changes to the process while watching the process variable’s value after sufficient time has elapsed to see the effects of those load changes. Increase or decrease the gain value until step-changes in load cease to yield significant changes in the process variable. The following trends show what too much and too little feedforward gain would look like in this pH control system:

If the gain is properly set in the gain/bias function block, these load changes should have minimal effect on the process variable. Step-changes in influent pH should have little effect on the process variable after sufficient time has passed for the load change to have fully propagated through the process.

Once a good gain value has been found, change the bias value until the process variable approaches the normal setpoint value1009.

Some control systems provide convenient methods of incorporating feedforward action. The standard FOUNDATION Fieldbus PID function block, for example, has its own dedicated signal input for feedforward, with feedforward gain as an existing parameter. The following illustration shows Fieldbus function blocks used to implement normal feedback (PID) control, and also PID with feedforward control:

As you can see, all that is required to augment a FOUNDATION Fieldbus control system with feedforward control action is the addition of one more analog input (AI) function block for the load transmitter, and one connecting line between that block and the PID block’s “FF_Val” input.

Other control systems require a bit more programming to implement feedforward. For example, consider the standard “Factory Configured Option 101” function block program for basic PID feedback control in a Siemens model 353 panel-mounted loop controller, contrasted against the version necessary for implementing feedforward action:

Note the necessary addition of two “math” function blocks as well as the extra analog input block for receiving the feedforward (load variable) transmitter’s signal: MTH1 needed to add the load transmitter’s feedforward signal to the controller’s output signal, and MTH2 needed to ensure output tracking still works properly between the PID and A/M function blocks when the human operator switches between automatic and manual modes. The amount of feedforward action is specified by the “gain” parameter for input B of both math function blocks, which means any adjustment to feedforward action must be manually entered in two different places!