MCA_MoveBuffered

../_images/104162fe0d8457cc0a317d3166bd9d61

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

../_images/fcd298c50d93285a0a317d3114375b17

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

../_images/aa0360aa0d93feae0a317d316ad4609c

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.

../_images/7e8796ef0d98d0f20a317d31323d3b54

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
60° 0.5*v
90° 0.67*v
135° 0.87*v
180° 1*v = a straight line

Example 1

../_images/c75e5a7f0da0c0ce0a317d313be83c6f

Movement in X/Y coordinates modified with CornerDistance.

../_images/51fcc4ea0dcd1e070a317d317ee296fe

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.

../_images/b8f32d4b0dcebebf0a317d311cbaee1f

Resulting velocity curves when CornerDistance = 0 and EndVelocity = 0. In this case, BufferMode and TransitionMode do not make a difference.

Example 2

../_images/c75e5a7f0da0c0ce0a317d313be83c6f

Movement in X/Y coordinates modified with CornerDistance.

../_images/1f7ce5460dd19c3b0a317d310b821d6f

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.