Determining Feed Forwards

This section covers how to set each feed forward.

Torque Feed Forwards

  • Acceleration Feed forward: Compensates for mass of the load, higher load = higher acceleration feed forward

  • Velocity Feed forward: Compensates for viscous friction

  • Friction Feed forward: Compensates for static friction

Determining the Acceleration and Velocity Feed Forwards

To tune the Acceleration and Velocity Feed Forwards, complete the following:

  1. Set the drive units.

  2. Set up Motion Tasks 0 and 1 as shown. Use a 50 ms dwell delay between motion tasks

  3. Home the axis.

  4. Set Velocity feed forward to unity (pass through) and the integral gains and acceleration feed forward to zero.

    Save the integral gain values before setting them to zero so they can be set back after tuning the feed forwards.

    Note: Integral gains must be set to zero for visual feed forward tuning. Integral gains distort the shapes

  5. Set Scope channels.

    Note:

    • Channels shown are for AKD2. For AKD1 simply remove AXIS#.

    • TRAJ.VCMD does not exist for AKD1, instead use MT.VCMD for AKD1

  6. Set up the recorder.

    Note: TRAJ.VCMD does not exist for AKD1 instead use MT.VCMD for AKD1.

  7. Enable the motor, then Arm the recorder.

  8. Start Motion to trigger scope recording.

  9. Verify feed forwards are cleared:

    • AXIS1.IL.FRICTION = 0 (Friction)

    • AXIS1.IL.KACCFF = 0 (Acceleration)

    • AXIS1.IL.KVFF = 0 (Current)

    • AXIS1.VL.KVFF = 1 (Velocity)

    • Note: To return to a default state, reset all three of these keywords.

Tuning Feed Forwards

Follow these steps to tune your feed forwards:

Identify which trajectory component contributes the most error. In this example, every time the axis accelerates, the error increases in the same direction, so begin with IL.KACCFF.

Record the PL.ERR min/max before changing any tuning parameter so you can measured any improvement (or regression).

Start changing gains slowly, too much feed forward can be worse than too little.

Change IL.KACCFF from 0 to a small value, here we use 0.1.

Visually the plot of PL.ERR does not change much, but if comparing Peak-Peak indicates we reduced Peak-Peak error from 86 to 79 degrees. This is approximately 10% reduction. Using this information we should try ~10x the gain.

Changing IL.KACCFF to 1.0 (10x our previous gain), we see significant improvement, now the error profile no longer follows the acceleration of the trajectory.

Since the shape now appears to follow the Trajectory Velocity, so IL.KVFF should be the next gain. Follow the same strategy.

Repeat process as needed until performance requirements are met.

Referenced Parameters

Parameter Description Drive Keyword

IL.CMD

Current Loop Current Command

AXIS#.IL.CMD

IL.CMDACC

Current Loop Command Acceleration

AXIS#.IL.CMDACC

IL.FRICTION

Current Loop Friction Feed Forward

AXIS#.IL.FRICTION

IL.KACCFF

Current Loop Acceleration Feed Forward

AXIS#.IL.KACCFF

PL.ERR

Position Loop Error

AXIS#.PL.ERR

PL.KI

Positioon Loop Integral Gain

AXIS#.PL.KI

PL.KP

Position Loop Proportional Gain

AXIS#.PL.KP

TRAJ.VCMD

Trajectory Command

AXIS#.TRAJ.VCMD

VL.CMD

Velocity Command

AXIS#.VL.CMD

VL.FB

Velocity Feedback

AXIS#.VL.FB

VL.KI

Velocity Loop Integral Gain

AXIS#.VL.KI

VL.KP

Velocity Loop Proportional Gain

AXIS#.VL.KP

VL.KVFF

Velocity Loop Feed Forward

AXIS#.VL.KVFF