Buffer Modes

Some of the function blocks (FBs) have an input called BufferMode.

  • With this input, the FB can either work in a Non-buffered mode (default behavior) or in a buffered mode.
    • The difference between those modes is when they start their action:
      • A non-buffered mode command acts immediately, even if this interrupts another motion.
      • A buffered mode command waits until the current FB sets its Done output (or InPosition or InVelocity).

This table lists the buffer modes that can be specified at the BufferMode input of the function blocks.

Value

Buffer Mode

Short Name

Description

0

BM_ABORTING

Abort

A move that specifies Abort:

  • Aborts the active move.
  • Removes the next move from the queue.
  • Immediately becomes the active move and begins executing.

1

BM_BUFFERED

Buffer

One of these events can happen with a move that specifies Buffer:

  • Case 1: If there is no active move, this move immediately becomes the active move and begins executing.
  • Case 2: If there is an active move but no next move queued, this move is queued as the next move.
    • It begins executing when the active move has completed and decelerated to zero velocity.
  • Case 3: If there is an active move and a queued next move, this move does not execute but returns the error queue full at the ErrorID output.

2

BM_BLENDING_PREVIOUS

Blend to Previous

A move specifying Blend-to-Active behaves the same as Buffer in Cases 1 and 3.

  • In Case 2, this move is queued as the next move.
  • The active move stays at its programmed velocity to its endpoint.
  • When the active move reaches its endpoint, this move becomes active and begins to accelerate or decelerate to its programmed velocity.

3

BM_BLENDING_NEXT

Blend to Next

A move specifying Blend-to-Next behaves the same as Buffer in Cases 1 and 3.

  • In Case 2, this move is queued as the next move.
  • When the expected time is reached, the active move begins to accelerate or decelerate so it reaches this move's programmed velocity at the time the active move reaches its endpoint.

4

BM_BLENDING_LOW

Blend to Low

A move specifying Blend-to-Low behaves like Blend-to-Active if the active move's velocity is lower than this move's velocity.

  • It behaves like Blend-to-Next if this move's velocity is lower than the active move's velocity.

5

BM_BLENDING_HIGH

Blend to High

A move specifying Blend-to-High behaves like Blend-to-Active if the active move's velocity is higher than this move's velocity.

  • It behaves like Blend-to-Next if this move's velocity is higher than the active move's velocity.

  • The MC_BUFFER_MODE_BLENDING_NEXT and MC_BUFFER_MODE_BLENDING_HIGH buffer modes may increase the acceleration to meet the target position at the specified velocity.
    The acceleration is automatically re-calculated to reach the target position at the specified velocity if the specified acceleration is too small to reach the target velocity within the specified distance.

    Example: These absolute position moves are commanded:
    Move #1:

    Position = 90, Velocity = 180, Accel = 360

    Move #2: (with Blending High or Blending Next)

    Position = 360, Velocity = 360, Accel = 360

    To reach velocity = 360 within a distance of 90, the acceleration must be 720.
    The function block automatically calculates and applies an acceleration of 720 to reach the target position at the specified velocity: