Velocity Blending Functions

Use the velocity blending functions to blend more than one coordinated move into a continuous motion path. Velocity blending can only be applied to coordinated moves such as MoveLinear(), MoveCw(), and MoveCcw().

When velocity blending is on, each move in a coordinated move sequence does not start and stop at zero velocity. The ending velocity of each coordinated move is matched to the starting velocity of the next move, so that the moves can blend into one profile.

Use the VelocityBlendingOn() function or the G108 command to turn on velocity blending.

function VelocityBlendingOn()

Enables velocity profiling mode.

Use the VelocityBlendingOff() function or the G109 command to turn on velocity blending.

function VelocityBlendingOff()

Disables velocity profiling mode.

At the end of a velocity blended sequence, motion decelerates to zero velocity. Motion also decelerates to zero velocity if a function that pauses motion (such as Dwell()) is between two consecutive moves in the velocity blended sequence.

During velocity blending, the controller tries to keep the vector speed the same as the coordinated speed that is specified in the DefaultCoordinatedSpeed Parameter or in the SetupCoordinatedSpeed() function.

Use the SetupCoordinatedSpeed() function to change the target velocity during a velocity blended sequence. The controller will smoothly accelerate or decelerate to the new target speed.

When you turn velocity blending on, the controller activates lookahead, which calculates information before a move occurs to determine when decelerations need to occur.

Conditions that Cause Decelerations During Velocity Blending

Deceleration to Non-Zero Velocity

If the velocity limit is set to a slower velocity for a condition other than the specified coordinated speed, the controller decreases the vector speed to obey that limit. The controller decreases the vector speed to the highest possible velocity in the acceleration limit. If possible, the controller accelerates back to full velocity when the limited velocity condition is finished. The conditions that follow cause the controller to reduce the velocity speed during velocity blending:

  • Non-tangent acceleration limit: The DefaultCoordinatedAccelLimit Parameter and the SetupCoordinatedAccelLimit() function set a non-tangent acceleration limit.
  • Circular acceleration limit: The DefaultCoordinatedCircularAccelLimit Parameter and the SetupCoordinatedAccelLimit() function set the acceleration limit around an arc width.
  • Dependent axis acceleration limit: The DefaultDependentCoordinatedAccelLimit Parameter and the SetupDependentCoordinatedAccelLimit() function set the acceleration limit for dependent axes (or non-vector axes) during a move. If the acceleration limit of a dependent axis is higher than the acceleration limit set, the controller decreases the vector speed of all dominant axes that are part of the move. Dependent axis acceleration is limited only if the dependent axis is commanded on the same line as the dominant axis or if a normalcy axis is part of a move.
  • Move duration limit: The CoordinatedMoveDurationMinimum Parameter specifies the minimum quantity of time in which the controller can execute a program block. If the duration of the move would be less than what this parameter specifies, the controller decreases the vector speed.

Deceleration to Zero Velocity

The conditions that follow cause the controller to decelerate motion to zero velocity during a velocity blending sequence.

  • The controller must have more precalculated moves than what is specified in the MaxLookaheadMoves Parameter.
  • The controller must do a normalcy alignment move.
  • The CoordinatedAccelLimitSetup Parameter is configured to decelerate to zero velocity and the controller encounters a non-tangency that would cause accelerations greater than what is specified in the DefaultCoordinatedAccelLimit parameter.
  • The controller detects a change in which axes are dominant and dependent.
  • Breakpoints or step mode.
  • When the controller starts to execute the function that is specified by the onerror() statement. For more information about this statement, see OnError Statement.

Optimizing Performance in Velocity Blending

Velocity blending can have a negative effect on servo loop performance and overall part quality because of fast axis accelerations. Velocity blending can also increase the workload of the controller, which can have a negative effect on part quality. To balance part quality, cycle time, and the workload of the controller, you can do the adjustments that follow.

Improve Overall Automation1 Performance

To prevent overloading the processing capability of the controller, see Performance Optimization.

Tune the Servo Loop

Tune the servo loop gains of the axes for optimal servo loop tracking. Use Machine Setup and EasyTune to set up and tune the axes.

Select an Optimal Coordinated Speed and Ramp Rate

When you increase the coordinated speed and coordinated ramp rate, the cycle time is better, but the higher axis accelerations can reduce part quality. Also, if you set the coordinated speed and coordinated ramp rate too high and there are too many moves to process, you can overload the controller. See Motion Setup Functions for more information about how to configure coordinated speed and ramp rates.

Use Automatic Feed Rate Reduction Features

Some parameters automatically reduce the coordinated speed when high accelerations might occur. This lets you set the coordinated speed to a high velocity but prevents accelerations that are too high by automatically decreasing the speed when necessary.

Use Corner Rounding

To reduce cycle time, use corner rounding to remove non-tangencies between consecutive moves. Corner rounding causes the controller to automatically insert an arc between consecutive non-tangent moves, which can allow the axes to continue moving at a higher speed without unsafe accelerations.

Select an Optimal Motion Update Rate

Increase the value of the MotionUpdateRate Parameter to improve the quality of a part without decreasing the coordinated speed. For systems that can achieve high acceleration rates, the MotionUpdateRate Parameter lets the controller more accurately follow the coordinated path. Larger values might cause the workload of the controller to increase.

  • For servo axes, a value of 1kHz, 10kHz, or 20kHz is recommended.
  • For galvo axes, a value of 50kHz or 100kHZ is recommended.

Prevent Short Duration Moves

If the duration of some moves are less than the reciprocal of the MotionUpdateRate parameter, the controller cannot reproduce the moves exactly. At a given speed, this can mean that the move distances are too small.

Short duration moves can increase the workload of the controller. Use the solutions that follow if you overload the controller's processing capabilities because of short duration moves.

  • Increase the distance of your linear, clockwise, and counterclockwise moves in your AeroScript program. This solution is best if your moves are automatically generated by a software package and you have control over how individual moves are generated.
  • Use the CoordinatedMoveDurationMinimum Parameter to configure the controller to automatically reduce the coordinated speed of short moves so that the duration is greater than or equal to the reciprocal of MotionUpdateRate Parameter. This increases cycle time, but the controller can accurately reproduce the part.