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
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
EnableBOOLAllows function block to modify (clamp) a load command
PositionLREAL[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
VelocityLREAL[u/s] = technical unit. Absolute value of the maximum velocity. Velocity=0 will switch off the velocity limitation
AccelerationLREAL[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.
DecelerationLREAL[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.
JerkLREALValue of the maximum jerk (not used)
DirectionMC_DirectionSupported direction: Positive, negative, current, default. The direction determines if just positive or negative load values are to be limited, or both (default)
Output
BusyBOOLThe function block is not finished. Output is independent of Axis status
ActiveBOOLIndicates that the function block has influence on the axis
ErrorBOOLSignals that error has occurred within function block
ErrorIDAC500_MotionControl.ERROR_IDError identification. For error details refer to enumeration ERROR_ID from AC500_MotionControl library
Inout
Load_AxisReference to axis