APIs, concepts, guides, and more
Feed Rate

Adjust the speed of a loaded motion profile without affecting its trajectory, allowing for stops, pauses, and reversals along the path, useful for operations like retracing and altering operating speeds dynamically.

🔹 What is Feed Rate?

Feed Rate (or Retrace) is a functionality that allows you to alter the speed of a loaded motion profile without affecting the motion profile (trajectory) itself.

Using Feed Rate, you can bring an Axis or MultiAxis to a stop (or pause) without going into an ERROR state. This allows the motion profile to be resumed to complete the rest of your motion profile.

Feed Rate also allows you to move in reverse along the path of the current loaded profile (“retrace”).

EXAMPLE 1 - Retrace

Machine is laser etching and the user decides that previous laser etched areas need to redone. In this case, the user can simply change the feed rate, retrace, and repeat the motion instead of loading a new motion profile into the motion controller.

EXAMPLE 2 - Alter Operating Speed

Using vision or proximity sensor(s), machine operating speed automatically reduces when an operator is detected in various zones around the machine.

Orange zone: Machine operating speed reduces by 50%

Red zone: Machine operating speed reduces by 90%

Image

🔹 Why use Feed Rate?

Feed rate gives you the ability to go back in a commanded motion without affecting any of the previously loaded motion’s frames that reside in the controller.

EXAMPLE 3 - .Net Application

// Start Position Move
axis.MoveSCurve(15); // Call MoveScurve to move to position 15.
while (axis.ActualPositionGet() < 10) { } // Once position "10" is reached:
axis.Stop(); // Stop the axis/motor. (This will use the value from StopTimeSet())
axis.MotionDoneWait(); // Wait for axis to stop completely.
axis.FeedRateSet(-1); // Change FeedRate to reverse motion.
axis.Resume(); // Start Reverse Motion.
while (axis.ActualPositionGet() > 5) { } // Once position "5" is reached:
axis.Stop(); // Stop the axis/motor. (This will use the value from StopTimeSet())
axis.MotionDoneWait(); // Wait for axis to stop completely.
axis.FeedRateSet(1); // Change FeedRate to default value.
axis.Resume(); // Resume the MoveScurve Motion that was commanded initially..
axis.MotionDoneWait(); // Wait for MoveScurve to complete.

Image

🔹 How does Feed Rate work?

Feed Rate accepts 64-bit double precision floating point values in between 2 and -2.

Note
Velocity (shown below) is the commanded velocity defined by user when loading a motion profile

FeedRate(2) → Velocity = 2 x Velocity

:

FeedRate(1) → Velocity = Velocity

:

FeedRate(0) → Velocity = 0 x Velocity

:

FeedRate(-1) → Velocity = -1 x Velocity

:

FeedRate(-2) → Velocity = -2 x Velocity

Note
For a position move Feed Rate will only function if the axis is within the origin position and the target position. If the origin position or target position is reached then the controller will command MOTION DONE.\ For a velocity move Feed Rate does not take into consideration position. Therefore, velocity can be adjusted at all times no matter what the position is.

🔹 FAQ’s

  1. Do feedrate/retrace methods work with multi-axis streaming motion?
    Yes, feedrate override and retrace methods work with multi-axis streaming motion.

📜 Sample Code

  • C#

    Console.WriteLine("Start Motion");
    axis.MoveSCurve(100); // Call MoveScurve to move to a position.
    // set feedrate for axis to 150%
    axis.FeedRateSet(1.5);
    while (axis.CommandPositionGet() < 5)
    {
    Thread.Sleep(1); // Wait here until we reach position "15".
    }
    axis.Stop(); // Stop the axis/motor.
    axis.MotionDoneWait(); // Wait for move to complete.
    axis.FeedRateSet(-1); // Change FeedRate to reverse motion.
    axis.Resume(); // Start Reverse Motion.
    Console.WriteLine("New Feed Rate Start");
    axis.FeedRateSet(1); //restore default