Closed-Loop PID Algorithms in Motion/Motor Control

Use Differential Feed Forward for Numerical Controls or Integrate Backward for Trajectory Control of Motion

By Ernst Dummermuth

1 of 2 < 1 | 2 View on one page

First published here in April 2007, this timeless back-to-basics tutorial by Ernst Dummermuth, one of several popular articles he wrote for us, generated a large number of page views on for years after we first posted it, and still draws attention today.


The basic function of closed-loop control is to maintain a process characteristic (temperature, flow, pressure, speed, torque) at a desired value. The process can deviate from this desired set point (SP) value as a result of changing material, load requirements, interaction with other processes, and so on. The actual condition of the process characteristic measured is the process variable (PV). The deviation of the measured process variable from the desired set point is the error (E).

The formula for process error is thus: E = SP – PV

Once an error is determined, the function of the control loop is to output a control variable to the process to force the error E to zero. Figure 1 below shows a basic PID closed loop control.

There's More to This Story
Get more. You can read the rest of this story and other exclusive content as a Control Design community member. It's FREE, and it’s easy. We just need your name and email address. Then you can read everything you want on our site and even comment on it.

1 of 2 < 1 | 2 View on one page

Join the discussion

We welcome your thoughtful comments. Please comply with our Community rules.
All comments will display your user name.

Want to participate in the discussion?

Register for free

Log in for complete access.


  • <p>This is not "your basic PID controller" as the caption on figure 1 indicates. This is "your basic PID controller supplemented with constant feedforward control." See for example a more comprehensive PID survey such as the chapter by K.J. Astrom and T. Hagglund in the 1996 edition of the CRC Control Handbook.</p> <p>The basic idea of the feedforward control extension is a good one. If you know the VS value that must be applied to cause the plant to hold the desired PS setpoint level, and you use this as the feedforward signal, the integral term of the PID controller is no longer necessary to drive the system to the desired operating level. In fact, when the system stabilizes, the controller output (including the integral portion) goes to 0. Thus freed from the obligation to drive the system to reach the desired output level, the integral control can be better tuned for rejecting small output level disturbances.</p> <p>Drawbacks? The scheme isn't as easy as it sounds when the system is somewhat nonlinear, or when it must operate at various different setpoint levels. The combination of PID controller plus the feedforward control can sometimes increase the amount of transient overshoot. As is the case with any of the PID extensions, every added feature adds a certain amount of complication to the implementation and to the application. It is a better idea to start with the basic PID scheme, and build from there, even if the extensions are relatively good ones. </p>


  • <p>" It is a better idea to start with the basic PID scheme, and build from there, even if the extensions are relatively good ones." I agree that one should first get control of the system but as soon as possible the feed forwards should be adjusted until the error is minimized. If the velocity and acceleration feed forwards can be tuned well enough to provide the correct control output within 5% then the PID only needs to correct the last 5% which is must faster than if the PID must supply the whole control signal. After the feed forwards gains are optimized the PID gains can be revisited to correct for non-linearities and changes in load.</p> <p>If you think about it the PID gains are the inverse of the system transfer function. If the feed forward gains are accurate enough the system model and PID gains can be computed. </p>


RSS feed for comments on this page | RSS feed for all comments