After search, use << and >> links at top of page to view other pages.
Get Updates on Facebook

A Tutorial on Feedforward Control

Feedforward control can be used very successfully to improve a control loop’s response to disturbances. Feedforward control reacts the moment a disturbance occurs, without having to wait for a deviation in process variable. If any process control loop is subject to large, measurable disturbances, it can benefit greatly from feedforward control.

Feedforward control reducing effects of a disturbance

Feedforward control reducing effects of a disturbance

To understand feedforward control, let’s first review feedback control.

Feedback Control

Feedback control is typically done with PID (proportional + integral + derivative) controllers. The process variable of interest is measured and the controller’s output is calculated based on the process variable and its set point. Although external disturbances often affect the process variable, they are not used directly for control. Instead, if a disturbance affects the process variable, the control action is based on the process variable and not the disturbance.

As an example, the outlet temperature of a heat exchanger can be measured and used for feedback control. The feedback controller will manipulate the steam flow to the heat exchanger and keep the outlet temperature as close to set point as possible.

Feedback Control

Feedback Control

Feedback Control and Disturbances

Many process control loops are affected by large disturbances. Feedback control can act only on the result of a disturbance, which means feedback control cannot do anything until the process variable has been affected by the disturbance.

In the example of the heat exchanger above, changes in process flow rate will be a major source of disturbances to the outlet temperature. If the process flow rate through the heater is increased, the original steam flow rate will not be enough to heat up the increased amount of process liquid and the outlet temperature will decrease. Feedback control will eventually increase the steam flow rate and bring the outlet temperature back to its set point, but not until there has been a significant deviation in temperature.

Feedforward Control

In contrast to feedback control, feedforward control acts the moment a disturbance occurs, without having to wait for a deviation in process variable. This enables a feedforward controller to quickly and directly cancel out the effect of a disturbance. To do this, a feedforward controller produces its control action based on a measurement of the disturbance.

When used, feedforward control is almost always implemented as an add-on to feedback control. The feedforward controller takes care of the major disturbance, and the feedback controller takes care of everything else that might cause the process variable to deviate from its set point.

Feedforward + Feedback Control

Feedforward + Feedback Control

In our example of the heat exchanger, in which the major disturbances come from changes in process flow rate, the latter can be measured and used for adjusting the steam flow rate proportionally. This is done by the feedforward controller.

Implementing Feedforward Control

Many PID controllers have an external connection for adding an input from a feedforward controller. Otherwise the output of the feedforward controller can be externally added to the output of the feedback controller. Review your controller documentation and take special care with scaling the feedforward signal. Many PID controllers expect the feedforward signal to be scaled between -100% and +100%.

Feedforward and feedback control is often combined with cascade control, to ensure that their control actions manipulate the physical process linearly, eliminating control valve nonlinearities and mechanical problems.

If several major disturbances exist, a feedforward controller can be implemented for each of them. The outputs of all the feedforward controllers can be added together to produce one final feedforward signal. Only consider disturbances that meet these criteria:

  • Measurable – if it can’t be measured you can’t control from it
  • Predictable effect on the process variable – most disturbances will fall in this class
  • Occur so rapidly that the feedback control cannot deal with them as they happen.

Feedforward Controller Design and Tuning

A feedforward controller essentially consists of a lead-lag function with an adjustable gain. A dead-time function (Ttd) can be added if the effect of the disturbance has a long time delay while the control action is much more immediate.

Feedforward controller design

Feedforward controller design

The feedforward gain (Kff) is set to obtain the required control action for a given disturbance. For example, it controls the ratio of steam flow to process flow in the example used previously. The lead and lag time constants are set to get the right timing for the control action. The feedforward’s lead (Tld) will speed up control action should be set equal to the process lag between the controller output and the process variable. The feedforward’s lag (Tlg) will slow down the control action and should be set equal to the process lag between the disturbance and the process variable.

You can use an alternative design for a feedforward controller that makes tuning easy. This is to simply use a function generator as the feedforward controller. Before implementing the feedforward controller, take note of the feedback controller’s output and the disturbance measurement at various levels of the disturbance. Use this relationship to set up the curve in the function generator.

Simplified feedforward controller design

Simplified feedforward controller design

For the heat exchanger example, we should tabulate the temperature controller’s output and process flow rates under various steady-state production rates. Then we program a curve in the function generator to produce the desired controller output at each of the process flow rates we measured.

Stay tuned!

Jacques Smuts – Author of the book Process Control for Practitioners


10 Responses to “A Tutorial on Feedforward Control”

  • Noel Guiriba:

    Hi. I’m dealing with a process that involves a heated bath where product is dipped for about 100 minutes. We control the temperature of the bath to about 190°F. When product is initially immersed in the bath, the bath temperature drops 3F° for the first 15 minutes and gradually rises to the set temperature, about 45 minutes after the product was initially loaded. When the set temperature is reached, temperature is kept at +/-0.1°F of setpoint. We currently use a PID temperature controller and I think a feedforward controller will help us a lot. I was thinking of a function generator that is triggered by a signal of the product coming into the bath. I’d appreciate any comment or suggestions you may have. Thanks!

  • Noel, it sounds like your process might benefit from using feedforward, however use this only if the feedback controller has been tuned optimally and the temperature still deviates excessively. I don’t know the size of your process, but it sounds like the loop is responding very slow. See this link for a recommended tuning method:
    If you do end up using a feedforward, I think you should consider using a lead/lag with a dominant lead. It will give you a large initial increase in controller output that will die away over time. Contact me if you need more help with this:
    – Jacques

  • dhruv prajapati:

    sir i wanted to know that how the feedforward and cascade control scheme can be combined…pls give some idea on it. thank you.

  • Dhruv, you can take a look at three-element drum level control at this link: This is feedforward and cascade control combined.

  • Andrew:

    Hi. I would like to implement feedforward control on boiler outlet steam temperature.
    We have a base loaded chemical recovery boiler. To manage the variable steam loads in our pulp mill we have a single wood waste boiler who’s boiler master is driven by the main site 650psi header pressure. Our wood waste boiler outlet steam flow is quite variable depending on our users. The steam passes through a primary and secondary superheater. Between the primary and secondary superheaters we add feed water through a de-superheater station to control the secondary superheater outlet temperature. Currently there is only feedback control for this temperature control. Normal operation can have a dead time through the secondary superheater of about 20 to 60 seconds but could be outside this range also. The feedback control struggles to control temperature and is tuned aggressively to compensate for this dead time.

    I wish to add feed forward control to this loop. I have no intermediate temperature measurement but we do measure outlet steam flow. I have the following questions and comments regarding the modelling and implementation of feedforward using the outlet steam flow.

    1. What is the best way to determine the model of the steam flow influence on outlet steam flow? This is particularly tricky given that the steam demand on the wood waste boiler is so variable.
    2. Will the feedforward model and therefore the feedforward signal to the outlet steam temperature control become the main control action?
    3. How accurate does the feedforward model for this application need to be?
    4. Once the feedforward control is implemented does the feedback control only become a trim for non-measured variations in the process that affect the outlet steam temperature?
    5. Once feedforward control is implemented how should the tuning parameters for the feedback control be determined?

    Please find a link to the P&ID part for this below.

  • Andrew,
    1. You should plot the steam temperature controller’s output against steam flow rates. If you get a nice line or curve, feedforward will likely work well. If you get a lot of scatter, don’t bother using feedforward. Assuming there is a good correlation, make the fastest possible step change in steam flow with the temperature controller in manual to determine the dynamics (dead time and lag) between changes in steam flow and temperature. You also need to do this for your steam temperature controller. The feedforward should have a lead lag comprising both system’s dynamics. I describe how to do this in detail in my book, Process Control for Practitioners.
    2. It depends if the line you get in the previous step has a 0,0 origin (when extrapolated). But I doubt that it will.
    3. The improvement in control is directly proportional to the accuracy of the feedforward. In other words, if your model is only half accurate, you’ll get only half the potential improvement.
    4. Yes.
    5. If the feedforward becomes the main control action, you will likely need to back down the temperature controller’s gain. This is best determined by looking for signs of overcorrection during testing with the feedforward in place.

  • Alan:

    Hi sir,
    I’m a software engineer that my current project is dealing with a 3 way regulating valve where i need to control the temperature on the heat exchanger. I found this Feed forward control PID block in my PLC programming and I’m had to use this 1 without other choices because this controller gives me a digital output, in this case, i review many articles where i came across this feed forward control. I know that, some of the controller have disturbance measurements which can determine how much is the disturbance on the transmission. In my controlling block where the disturbance is inputted directly without any disturbance measuring step, etc, or can i directly tap the temperature feedback as the disturbance i have measured?

    Please comment
    Thank you


  • Alan,
    Yes, you can use the source of the disturbance to drive the feedforward.
    You cannot use the effect of a disturbance (temperature in this case) to drive the feedforward.

  • Daniel:


    I am trying to control the contact-force (process variable) on the end-effector of a robotic arm. I have a force sensor that measures the imparted force on the end effector. I believe that a feedforward controller will greatly improve disturbance rejection. However I need some clarification.

    Does the disturbance have to be measured separately from the process variable? If so, I have no way of doing this, is it possible to implement some sort of feedforward component into the control system.

  • Daniel, for feedforward control, the disturbance is something other than the control action that affects the process variable. It is not the process variable itself.

Leave a Reply

The Book for Practitioners