Skip to main content

Overview

BufferMode

Some function blocks have a BufferMode input which is used to control the chronological order of movements. The buffer mode defines whether the function block works in non-buffered mode ("Aborting", standard behavior) or in buffered mode ("Buffered"). The difference between these two modes is the time when they begin their actions:

  • "Non-buffered Mode": The movement command is effective immediately, even if this interrupts another movement. The buffer of the commanded movements is deleted.

  • "Buffered Mode": The movement command waits until the current function block sets its output Done (or InPosition, or InVelocity, etc.). The buffer modes are also used to define how the velocity curve should look at the transition of the movements.

Table 38. The BufferMode input is an ENUM of type MC_BUFFER_MODE.

Aborting

Default mode without buffering. The function block starts immediately and aborts an active movement. The command takes immediate effect on the axis.

Buffered

The function block starts as soon as the last commanded movement is finished. No blending takes place here. The new movement starts at the velocity that the previous movement has when the end condition is reached (Done, InVelocity, InEndVelocity, InGear, InSync, EndOfProfile, etc.). If the previous movement was MC_MoveAbsolute or MC_MoveRelative, then the new movement starts at standstill.

BlendingLow

The function block starts as soon as the last commanded movement is finished. The axis does not stop between movements, but passes through the end position of the first movement at the lower velocity of the two movement commands.

BlendingPrevious

The function block starts as soon as the last commanded movement is finished. The axis does not stop between movements, but passes through the end position of the first movement at the velocity of the first movement command.

BlendingNext

The function block starts as soon as the last commanded movement is finished. The axis does not stop between movements, but passes through the end position of the first movement at the velocity of the second movement command.

BlendingHigh

The function block starts as soon as the last commanded movement is finished. The axis does not stop between movements, but passes through the end position of the first movement at the higher velocity of the two movement commands.



Supported Function Blocks

All function blocks that can be specified as buffered/blending commands have the following inputs and outputs:

  • BufferMode input (MC_BUFFER_MODE type)

  • Active output: (BOOL type)

A command is accepted when the function block switches to the state Busy after a new movement has been commanded.

Function Block

Can be Defined as a Buffered/Blending Command

Can be Followed by a Buffered/Blending Command

Relevant Signal for Activating the Next Buffered/Blending FB

MC_Power

No

No

MC_Home

No

No

MC_Stop

No

No

MC_Halt

No

No

MC_MoveAbsolute

MC_MoveRelative

Yes

Yes

Done

MC_MoveAdditive

No

Yes (Buffered only)

Done

MC_MoveSuperImposed

MC_HaltSuperImposed

No

No

For more information, see: Behavior of MC_MoveSuperImposed and MC_HaltSuperImposed

MC_MoveVelocity

Yes

Yes (Buffered only)

InVelocity

SMC_MoveContinuousAbsolute

SMC_MoveContinuousRelative

No

Yes (Buffered only)

InEndVelocity

MC_PositionProfile

MC_VelocityProfile

MC_AccelerationProfile

No

Yes (Buffered only)

Done

MC_CamIn

Yes (only Buffered and BlendingPrevious)

Yes, also if periodic (only Buffered)

EndOfProfile

MC_CamOut

No

Yes (Buffered only)

Done

MC_GearIn

Yes (BlendingPrevious only)

Yes (Buffered only)

InGear

MC_GearOut

No

Yes (Buffered only)

Done

MC_GearInPos

Yes (BlendingPrevious only)

Yes (Buffered only)

InSync

SMC_FollowPosition

SMC_FollowVelocity

SMC_FollowPositionVelocity

SMC_FollowSetValues

No

No

SMC_SetTorque

No

No

MC_Phasing

No

No

MC_Jog

SMC_Inch

No

No

These function blocks should not be used when movements are commanded with buffer mode Buffered or Blending*. Jogging and the commanded movements could interrupt each other.

SMC_BacklashCompensation

No

No

SMC_TrackAxis

No

No

SMC_TrackSetValues

No

No

Note for MC_GearInPos and MC_GearIn: The behavior of other buffer modes as BlendingPrevious is difficult to establish. The main problem is that the velocity of these function blocks can change at any time depending on the master axis. Because blending works best when the blending speed is known as early as possible, only BlendingPrevious is supported.

In the case of BlendingPrevious, the direction of the master axis can also change at any time. This means that the direction that the slave axis should have for MC_GearInPos is known only when the blending is complete. However, we need a direction for the blending movement right when the blending begins. This is why the first movement defines both the blending velocity and the direction, regardless of the direction defined by the subsequent MC_GearIn(Pos).