In a standard feedback control system, you have a set point, a controller, a plant, and a sensor to enable feedback. The sensor measures the process variable (or in other words, the argument you are actually trying to control).

Now, I want to add a feedforward component. Referring to this MATLAB example, when implementing feedforward component, you require an additional disturbance model and a feedforward controller.

This is where I need some clarification. When adding a feedforward component, do I have to measure the disturbance separately from the process variable? Or is disturbance equal to my process variable itself? If the prior, in my system, I only have a sensor to measure to the process variable and I have no way of measuring the disturbance. Is it possible to implement a feedforward component into my control system?


Yes - I support the answer from Marko Bursic; more than that, I would not use the term "feedforward loop" (because it is, in fact no loop at all). For my opinion, it is better to say "feedforward path".

Such a path does exist sometimes - depending on the actual system. Sometimes it contains a disturbance signal but it also can be responsible for feeding through a paprt of the input signal.

Simple example: A resistor Rb between the base and the collector of a common-emitter gain stage. The resistor Rb has the task to provide DC or/and AC negative feedback - however, at the same time it allows a small feedthrough signal from the input directly to the output (collector node). At this node it is added (with 180deg phase shift) to the "normal" output voltage (caused by the collector current variations).

Therefore, there are two open questions: (a) Why do you "want" to add a feedforward path and (b) why do you think we would in this case "require an additional disturbance model"?

  • \$\begingroup\$ Correct, it should not be called loop, since I explicitely wrote that it may not be closed, looped. I will correct my answer, thanks. \$\endgroup\$ – Marko Buršič Aug 23 '16 at 19:02
  • \$\begingroup\$ @LvW Hello, (a) I want to add a FF component because my disturbance rejection in my system is poor. The poor performance is because of large delays in the sensor I am stuck with. My gain margin is already very low and I have little room to work with using stand closed-loop PID. (b) I have never implemented FF into a system and I am learning what is it/how to use it using the MATLAB example I linked in the OP. If you have any other sources for FF control, I'd like to take a look at them. \$\endgroup\$ – gelman_grad Aug 24 '16 at 14:23
  • \$\begingroup\$ Danny G., I think, it would be very helpful to seee a block diagram with all the relevant blocks and entries. In particular, because you have mentioned the problem of delay. \$\endgroup\$ – LvW Aug 24 '16 at 15:37

Don't understand what you mean by measuring disturbance. Usually disturbance is some unwanted noise, that of course can't be measured. The feedforward loop path is a kind of benefical disturbance, but still a disturbance.
You may not close the loop with the feedforward, because it will change the system behaviour: a feedforward loop path is an open-loop control, while the controller operates in a closed loop. The injection of signal trough a feedforward loop path means a disturbance for the closed-loop, so if the controller is properly tuned so that will remain at safe margin from oscillation, then we can say that feedforward loop path has no influence on the stability. The HF excitation injected from FF loop path is rejected by closed-loop.
The FF is function of setpoint parameter, MUST BE OPEN LOOP.

  • \$\begingroup\$ A disturbance may, e.g., be a change of ambient conditions that is measurable. \$\endgroup\$ – Chu Aug 23 '16 at 22:21
  • \$\begingroup\$ @Chu In that case, like in the example from OP, you may estimate the transfer function of the disturbance and inject a countermeasure disturbance, but still in open-loop fashion. \$y_{FF}=f(d)\$. Usually the FF path is used to speed up the response of entire control by adding a known output value \$y_{FF}=f(x_{SP})\$ with respect to setpoint value. \$\endgroup\$ – Marko Buršič Aug 24 '16 at 6:00
  • \$\begingroup\$ The classical structure adds the measured disturbance after the process so that it's inside the main control loop and hence rejected by the (PID) controller. \$\endgroup\$ – Chu Aug 24 '16 at 7:30
  • \$\begingroup\$ @MarkoBuršič Hello Marco, yes I understand that FF is open loop. I did not mention that it is in a loop, I apologize if my original question gives that sense. Let me try and rephrase my confusion. I am trying to add a feedforward component to my system. The process variable (the argument I am trying to control) is force provided by a strain gauge. This is the one and only thing I am measuring. A required disturbance model describes the relationship between a disturbance (input) and the process variable/force (output). Will I not need to measure disturbance? \$\endgroup\$ – gelman_grad Aug 24 '16 at 14:02
  • \$\begingroup\$ @DannyGelman It would be easier if you make a descriptrion of the entire system, specialy the actuator - what does the manipulated value actuate? And, if there is a known steady state characterisctics between: manipulated value VS. force. Now forget the disturbance input, since you don't have it. You can make a control with or without FF, even without the disturbance input. \$\endgroup\$ – Marko Buršič Aug 24 '16 at 14:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.