Aborting versus Buffered Modes¶
Some of the Function Blocks have an input called BufferMode. With this input, the Function Block can either work in a Non-buffered mode (default behavior) or in a Buffered mode. The difference between those modes is when they should start their action:
- A command in a non-buffered mode acts immediately, even if this interrupts another motion,
- A command in a buffered mode waits till the current Function Block sets its output Done (or InPosition, InVelocity…).
There are several options for the buffered mode. For this reason, this input is an ENUM of type MC_BUFFERMODE. The following modes have been identified:
- McAborting:Default mode without buffering. The next Function Block aborts an ongoing motion and the command affects the axis immediately.
- McBuffered:The next Function Block affects the axis as soon as the previous movement is Done There is no blending.
- McBlendingLow:The next Function Block controls the axis after the previous Function Block has finished (equivalent to MC_Buffered), but the axis will not stop between the movements. The velocity is blended with the lowest velocity of both commands (1 and 2) at the first end-position (1).
- McBlendingPrevious: Blending with the velocity of Function Block 1 at end-position of Function Block 1.
- McBlendingNext:Blending with velocity of Function Block 2 at end-position of Function Block 1.
- McBlendingHigh: Blending with highest velocity of Function Block 1 and Function Block 2 at end-position of Function Block 1.
ABB specific extensions are allowed after these defined Enums.
The following examples describe the different behavior of these modes:
Example 1: Standard behaviour of 2 following absolute Movements
Basic example with two MC_MoveAbsolute on same axis
Timing diagram for example above without interference between Function Block 1 and Function Block 2
Example 2: Aborting Motion
Timing diagram for example above with Function Block 2 interrupting Function Block 1 (McAborting Mode)
Example 3: Buffered Motion
Timing diagram for example above in Buffered Mode (Stopping to velocity 0 and starting Function Block 2 at that point without delay)
The following table shows an overview of the effects on the defined Function Blocks:
Function Block | Can be specified as a buffered command | Can be followed by a buffered command | Relevant signal to activate the next buffered Function Block |
---|---|---|---|
MC_MoveAbsolute | Yes | Yes | Done |
MC_MoveRelative | Yes | Yes | Done |
MC_MoveAdditive | Yes | Yes | Done |
MC_MoveSuperimposed | Yes | Yes | – |
MC_MoveVelocity | Yes | Yes | In Velocity |
MC_Home | Yes | Yes | Done |
MC_Stop | Yes | Yes | Done AND NOT Execute |
MC_Power | Yes | Yes | Status |
MC_PositionProfile | Yes | Yes | Done |
MC_VelocityProfile | Yes | Yes | Done |
MC_AccelerationProfile | Yes | Yes | Done |
MC_CamIn | Yes | Yes - (in single mode) | EndOfProfile |
MC_CamOut | Yes | Yes | Done |
MC_GearIn | Yes | No | – |
MC_GearOut | Yes | Yes | Done |
MC_Phasing | Yes | Yes | – |
Note
The (administrative) Function Blocks not listed here are basically not buffered, nor can be followed by a buffered Function Block. However, the supplier may choose to support the various buffering / blending modes.
If an on-going motion is aborted by another movement, it can occur that the braking distance is not sufficient due to deceleration limits.
In rotary axis, a modulo can be added. A modulo axis could go to the earliest repetition of the absolute position specified, in cases where the axis should not change direction and reverse to attain the target position.
In linear systems, the resulting overshoot can be resolved by reversing, as each position is unique and therefore there is no need to add a modulo to reach the correct position..