From Peter on forum http://www.linuxcnc.org/index.php/english/forum/39-pncconf/26860-tuning-values The FF are feed forward values: FF0 adds a portion of the command to the output FF1 adds a portion the first derivative of the command to the output FF2 adds a portion of the second derivative of the command to the output I tend to think of feed forward terms being used to center the operating point of the PID loop. For example, if linuxcnc is controlling a velocity mode servo, almost all tuning (on linuxCNC) will be done with FF1 and P (FF1 is velocity feed forward if the PID command is position) With a velocity mode servo the PID output is a velocity command to the drive. This means the PID output will be near full-scale when doing rapids. If only P was used, there would have to be enough position error to generate a near full scale signal when moving at full speed. Practically what this means is that the actual position will lag the commanded position by an amount proportional to the full scale PID output / Pgain, which is quite significant. FF1 is used here to "forward" the commanded velocity to the PID output so that the PID output will be set to the required value for the current commanded velocity _before_ any P correction is applied, centering the PIDs operating point around the current velocity Another example is controlling a torque mode drive. In this case, FF2 (acceleration feed forward if the command is position) is used to compensate for the system inertia. No controlled system is a perfect velocity or torque mode device so often a bit of FF2 can be used to tune velocity mode drives error during acceleration, and a bit of FF1 can compensate for velocity dependent drag on a a torque mode system |