MC_LimitMotion (FB)

FUNCTION_BLOCK MC_LimitMotion

This function block limits the movement of an axis. Changes in load can result in inexpectant velocity/acceleration deviations, and thus inaccurate limitations

../../../../../_images/plcopen.png

This function block activates a limitation of the motion values of an axis. These are ‘Position’, ‘Velocity’, ‘Acceleration’, ‘Deceleration’ and ‘Jerk’. The measures taken to keep the limits are vendor specific; switching between motion and load control depends on the external load conditions of the axis. The function block sets the ‘Busy’ output when the limiting measures are standby on the axis. The ‘Active’ output is set, when the limiting measures are active on the axis.

Use Case Rational

The function block MC_LimitMotion is intended to protect a process from undefined movements during load/torque control Possible application: e.g. force fitting. The function block is intended to be used in conjunction with a MC_LoadControl or MC_TorqueControl having primary control on the axis. The MC_LimitMotion should be enabled by the ‘Active’ output of the MC_LoadControl / MC_TorqueControl. If motion values on the axis exceed the given limit, appropriate measures are taken to keep to these limits, implying that the load/torque will not follow the programmed trajectory but depend on the external load conditions. However, the ‘Active’ output of the MC_LoadControl/MC_TorqueControl will stay TRUE in this case, following the modified PLCopen definition “The ‘Active’ output indicates, that the function block has control on the set-value generation of the axis”. This is despite the fact, that physically only the load-conditions or the movement of an axis can be controlled. With actual motion states below programmed limits, the programmed load/torque trajectory will proceed. Enabling the limiter block with activation of the MC_LoadControl/MC_TorqueControl ensures that limits are only supervised when the MC_LoadControl/MC_TorqueControl takes control on the axis for the first time. Disabling the limiter block with de-activation of the MC_LoadControl/MC_TorqueControl ensures that limits are no more supervised when the MC_LoadControl/MC_TorqueControl looses control on the axis by ‘CommandAborted’ or ‘Error’

Note

It is not guaranteed that activity of the limiting measures will be seen by the function block: a short pulse of the limited quantities could be over before the next Function Block cycle occurs.

Note

With the given direction CURRENT or DEFAULT, the position will not be limited and the velocity will be limited in both directions. With the given direction POSITIVE, the position will be limited below the given value and the velocity will be limited in both direction. The function block will not start a movement in the opposite direction when the position is already higher when the function block is enabled. It will at maximum reduce the velocity to 0. (same principle behavior in negative direction). The limitations will just be activated when the axis is actually controlled by the LOAD value, e.g. LoadProfile or LoadControl

Note

Use just one instance of this block per load axis, because the “Enable” has to define clearly if the functionality is activated. It is not foreseen to interrupt an instance by another of the same type, so the behavior is undefined.

InOut:

Scope

Name

Type

Comment

Input

Enable

BOOL

Allows function block to modify (clamp) a load command

Position

LREAL

[u] = technical unit. The position limitation is just activated if Direction is Positive or Negative, and will limit the position if reached in the respective direction

Velocity

LREAL

[u/s] = technical unit. Absolute value of the maximum velocity. Velocity=0 will switch off the velocity limitation

Acceleration

LREAL

[u/s°°2] = technical unit. Value of the maximum acceleration (acceleration is applicable with same sign of torque and velocity) Acceleration = 0 will switch off the acceleration limitation.

Deceleration

LREAL

[u/s°°2] = technical unit. Value of the maximum deceleration (deceleration is applicable with opposite signs of torque and velocity) deceleration = 0 will switch off the deceleration limitation.

Jerk

LREAL

Value of the maximum jerk (not used)

Direction

MC_Direction

Supported direction: Positive, negative, current, default. The direction determines if just positive or negative load values are to be limited, or both (default)

Output

Busy

BOOL

The function block is not finished. Output is independent of Axis status

Active

BOOL

Indicates that the function block has influence on the axis

Error

BOOL

Signals that error has occurred within function block

ErrorID

AC500_MotionControl.ERROR_ID

Error identification. For error details refer to enumeration ERROR_ID from AC500_MotionControl library

Inout

Load_Axis

Load_Ref

Reference to axis