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
(orInPosition
, orInVelocity
, etc.). The buffer modes are also used to define how the velocity curve should look at the transition of the movements.
| Default mode without buffering. The function block starts immediately and aborts an active movement. The command takes immediate effect on the axis. |
| 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 ( |
| 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. |
| 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. |
| 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. |
| 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 |
---|---|---|---|
| No | No | |
| No | No | |
| No | No | |
| No | No | |
| Yes | Yes |
|
| No | Yes ( |
|
| No | No For more information, see: Behavior of MC_MoveSuperImposed and MC_HaltSuperImposed | |
| Yes | Yes ( |
|
| No | Yes ( |
|
| No | Yes ( |
|
| Yes (only | Yes, also if periodic (only |
|
| No | Yes ( |
|
| Yes ( | Yes ( |
|
| No | Yes ( |
|
| Yes ( | Yes ( |
|
| No | No | |
| No | No | |
| No | No | |
| No | No These function blocks should not be used when movements are commanded with buffer mode | |
| No | No | |
| No | No | |
| 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)
.