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.
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 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.
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.
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.
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
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: https://blog.opticontrols.com/archives/383
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.
– Jacques
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: https://blog.opticontrols.com/archives/165. This is feedforward and cascade control combined.
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.
https://docs.google.com/file/d/0B3A30WvckCixT0hCOUZ4RFIyV1k/edit?usp=docslist_api
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.
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
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.
Hello,
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.
Hello Jacques,
Your book shows how to calculate KFF. I am unsure if this applies to multiplicative feedforward control or just additive.
I want to apply feedforward control to a heat exchanger like in your book, but I’m struggling to calculate KFF, because the process gain depends on the throughput, hence my desire for feedforward control.
Any advice?
Thanks,
Matt
Matthew – You have to pick a reference operating point to calculate Kff. Using the heat exchanger example, let’s say when your process flow rate is 1000 kg/h, you need 50 kg/h of steam to heat it up to temperature. Then Kff will be 50/1000 = 0.05. You can use historical data of process- and steam-flow values from times when the temp was at setpoint. You should do this for a few different operating points, in case Kff is not constant. In that case you should use an f(x) curve instead of a constant Kff.
Hi Jacques,
Can you explain a little more what you mean when you said lead dominate vs lag dominate? What difference is there in the effect on the final control action and when do you use one or the other?
Thanks!
William – Lead dominant means that in the feedforward controller’s lead-lag block, the lead action is stronger than the lag action. This is achieved by setting the lead time constant greater than that of the lag, and vice versa. The feedforward’s lead speeds up control action should be set equal to the process lag between the controller output and the process variable. The feedforward’s lag slows down the control action and should be set equal to the process lag between the disturbance and the process variable.
Hi Jacques,
1. Why do many PID controllers expect the feedforward signal to be scaled between -100% and +100%.? Why are not scaled between 0% and 100%?
2. Is there a difference between ratio control and multiplicative feedforward control?
3. Does the feedforward gain change when you use additive feedforward control versus multiplicative feedforward control?
4. How do you make sure that the added, multiplied, or function generated feedforward value does not saturate a valve?
Added example:
Suppose that your Kff = 0.5 [%/lb/s] your process fluid (F in lb/s) is your disturbance variable, and the steam valve controller output (CO) is your manipulated variable. Let F = 10 and CO = 70%. Therefore, if you add the feedback and feedforward signals you acquire a controller output above 100%. CO + Kff*F = 70+10*0.5 = 70+50 = 120% > 100%. How does the PID function block combat this? Do you have to condition the feedforward in such a manner to prevent this from happening? Is a bad example of using additive feedforward control?
Multiplied example:
Suppose that your Kff = 0.5 [%/lb/s] your process fluid (F in lb/s) is your disturbance variable, and the steam valve controller output (CO) is your manipulated variable. Let F = 10 and CO = 70%. Therefore if you multiply the feedback and feedforward signals you acquire a controller output above 100%. CO * Kff*F = 7*(10*0.5)= 70*50 = 3500% 100%. How does the PID function block combat this? Do you have to condition the feedforward in such a manner to prevent this from happening? Is a bad example of using feedforward control with a function generator?
First I’ll explain to readers that understanding Cade’s questions has a lot to do with the following points:
a) Most industrial PID controllers with feedforward (let’s call them PID-FF) have a dedicated input for the feedforward signal so that the feedforward processing is done internally to the PID-FF block and does not have to be done outside the PID controller as shown in the Feedforward + Feedback Control diagram above. This helps with output limiting and with initialization for bumpless manual to auto transfer.
b) Some PID-FF controllers have an option to multiply the PID algorithm’s output by the feedforward signal in addition to the standard option for adding the two signals.
c) Many PID-FF controllers also have an internal feedforward gain (Kff) setting that is applied to the incoming feedforward signal before it is added to, or multiplied by, the PID algorithm’s output. If Kff is not available, the scaling of engineering units to percent has to be done outside the PID-FF block, if necessary.
1. It is to allow the feedforward to add and/or subtract from the PID algorithm’s output. Note that most PID-FF controllers place no limitation on the limits of the feedforward signal.
2. Mathematically, multiplicative feedforward control is the same as ratio control. The PID algorithm’s output adjusts the ratio between the feedforward input signal and the controller output signal.
3. Absolutely, but they are very different animals. It is CO = PID + FF (x Kff) versus CO = PID x FF (x Kff).
4. When a PID-FF controller’s mode is changed from manual to auto, the PID algorithm is instantly initialized to ensure that the controller output doesn’t bump because of a mismatch. (This is normally done by back-calculating the integral term’s value.) From this point onwards, the PID-FF controller’s output will change based on changes in the feedforward signal or in the PID algorithm’s output. The controller’s output will be limited by its low limit and high limit settings. If a limit is reached, integral action is frozen to prevent integral windup. Other than this, it’s up to the process design to ensure that the valve can remain in a controllable range while keeping the process on setpoint under all normal operating conditions.
Hello. Let’s say I implement feedforward on a particular loop and for a given disturbance I apply a feedforward value of +5%, and it effectively rejects that instance of disturbance and the loop stays on setpoint satisfactorily. Life is good. But I am still applying the +5% feedforward. If I change that +5% FF back to 0% in preparation for the next disturbance, it has the same effect as applying a -5% FF, which I don’t want to do because the loop is steady-state and on setpoint. So I think I need to apply the FF at the occurrence of the disturbance, but then reduce that applied FF value back to back to 0%, slowly enough that it has minimal effect on the loop. What am I missing?
Ken,
If you have a disturbance that always moves in the same direction, then what you suggest is true. However, this means that over enough time the disturbance will accumulate an enormously large value, which is generally not possible in process control. In the example above, the process flow through the heat exchanger will not continuously increase. At some point it will reach its maximum possible value, after which it can only remain constant or decrease in value. The control valve (or feedforward) will loosely follow the flow rate, i.e., open when the flow increases and close when the flow decreases.