MCA_MoveBuffered¶
The function block triggers an absolute, linear movement at a rising edge of input Execute. The first movement will be started directly. Any following rising edge on input Execute will store the given movement to input BufferRef. The output MovesPending will indicate how many entries in BufferRef are occupied and wait for execution. They will be executed automatically and movements will be blended. The behavior of blending can be modified by the inputs EndVelocity, CornerDistance,BufferMode,TransitionMode.
Example
The movement will start at position (1) with velocity = 0. Different behavior will be reached depending on the value for EndVelocity. The velocity which is reached at position (4) depends on the chosen BufferMode. The velocity curve is also modified by the TransitionMode.
Legend for all examples: s = distance to move, v = velocity, a = deceleration
Behavior of Blending modified by EndVelocity
With input EndVelocity = 0, the movement will be planned in a way that it could stop at the corner (position). So the blending might be executed in a lower velocity.
With input EndVelocity > 0, the movement will be executed in a way that at the corner EndVelocity would be reached. An EndVelocity > 0 should not be used for the last intended movement as this will mean that no deceleration ramp is planned.
Example
With EndVelocity = 0, depending on the value for Deceleration, it might be necessary to start a brake ramp at a certain position (2). The ramp is calculated in a way that a stop would be reached at the corner:
s = 0.5*v*v/a
s < input CornerDistance: No deceleration ramp.
s > input CornerDistance: Decelerate from a distance s from the corner, a smaller velocity is reached at position 3.
At CornerDistance, position (3), the blending to the next movement is executed.
With EndVelocity = Velocity, the movement will continue at constant speed. When CornerDistance is reached, the blending to the next movement is executed.
Behavior of Blending modified by CornerDistance
With CornerDistance D = 0, the movement will stop at the given position and then continue with the next movement. This requires EndVelocity = 0.
With CornerDistance D > 0: If the distance between two positions is < 2*CornerDistance, half position distance is used instead as CornerDistance. At a distance CornerDistance from the target position of a given movement, the direction is changed towards the next position. It is assumed that the velocity for the next movement can be reached within the CornerDistance D.
Behavior of Blending modified by BufferMode
The input BufferMode will determine which velocity will be reached at the end of the corner, when the next movement is running. It can be either the actual velocity at position (3) or the commanded velocity for the next movement.
Option | Description |
---|---|
mcBlendingLow | Default. The smaller velocity is used. |
mcBlendingHigh | The higher velocity is used. |
mcBlendingPrevious | The current velocity at positioin (3) is used. |
mcBlendingNext | The commanded velocity for the next movement is used. |
Behavior of Blending modified by TransitionMode
At input TransitionMode you can choose TMConstantVelocity or other values.
With TransitionMode = TMConstantVelocity, the velocity will be kept constant if for position (3) and (4) an identical value is commanded. In case of two different values, a linear transition is performed. The position movement will be circular.
With TransitionMode = NOT TMConstantVelocity: Depending on the angle between the two movements, the velocity will decelerate. A smaller angle will mean a slower movement at the corner.
Angle | Velocity corner |
---|---|
0° | 0 |
60° | 0.5*v |
90° | 0.67*v |
135° | 0.87*v |
180° | 1*v = a straight line |
Example 1
Movement in X/Y coordinates modified with CornerDistance.
Resulting velocity curves when CornerDistance = 50, TransitionMode = TMConstantVelocity and EndVelocity = Velocity. In this case, BufferMode does not make a difference as the velocity values are identical.
Resulting velocity curves when CornerDistance = 0 and EndVelocity = 0. In this case, BufferMode and TransitionMode do not make a difference.
Example 2
Movement in X/Y coordinates modified with CornerDistance.
Resulting velocity curves with different velocity values for each segment. BufferMode = MCBlendingLow and TransitionMode = TMConstantVelocity.
BufferMode | TransitionMode | EndVelocity | CornerDistance | Behavior |
---|---|---|---|---|
x | x | 0 | 0 | Stop at the corner, use deceleration. |
x | x | > 0 | 0 | Reach EndVelocity at the corner, switch direction without ramp. |
! | TMConstantVelocity | =Velocity | > 0 | Move at commanded velocity until CornerDistance is reached, decide next velocity depending on BufferMode, perform any velocity transition during the corner (if different velocity are commanded). |
! | NOT TMConstantVelocity | = Velocity | > 0 | As above, but movement during the corner will be slower. |
! | ! | > 0 | > 0 | Plan the movement to reach EndVelocity at the corner, use the BufferMode and TransitionMode parameter when CornerDistance is. |