Limiter

Keep every axis setpoint inside its position limits and within its velocity, acceleration and jerk limits.

The limiter turns each axis’s setpoint into one that stays between the position limits and never moves faster, accelerates harder or jerks more than you allow. It looks ahead. When the setpoint heads for a position limit, it brakes in time to stop on the limit, not past it.

time position positionUpperLimit positionLowerLimit acceleration and jerk shape the start velocity limit sets the slope brakes in time and stops on the limit your setpoint limited setpoint

Set the limits

Each axis has its own set under root/AxesControl/axesLimiters/LimitsNN/, where NN is the axis number. The units are those of the axis: rad or m, per second.

Parameter What it limits Default
positionLowerLimit, positionUpperLimit The position range -1, 1
velocityLimit The velocity, in both directions 1
accelerationLimit The acceleration, in both directions 10
jerkLimit How fast the acceleration may change 100
maxAccelerationBraking, maxJerkBraking Extra braking the limiter may use to stop on a position limit; 0 means the same as the normal limit 0, 0
  1. In Desk, open root/AxesControl/axesLimiters/Limits01 for axis 1.
  2. Set the position limits to the range the axis may use.
  3. Set velocityLimit, accelerationLimit and jerkLimit to what the axis and its load can handle.
  4. Repeat for every axis, then save the parameter tree.

A change takes effect in the next cycle, even while the axis moves. A value that makes no sense, such as a negative velocity or a lower limit above the upper limit, is ignored and the limiter keeps the last valid set.

Check that the limits fit

A full stop from velocityLimit needs room. If the position range is too short for it, the limiter sets LimitsNN/warningSettingsMayCausePositionLimitOvershoot. Lower velocityLimit, or raise the braking limits, until it clears.

Setting LimitsNN/autoAdjustBraking to 1 makes the limiter raise the braking limits itself until the warning cannot occur. Read maxAccelerationBraking and maxJerkBraking back afterwards: the values it chose may be more than the drive can deliver.

What the limiter reports

Output True when
LimitsNN/isLimiting Any limit changed the setpoint this cycle
LimitsNN/positionLimitActive, velocityLimitActive, accelerationLimitActive, jerkLimitActive That limit is active
LimitsNN/warningNotAbleToStopBeforeLimit The axis can no longer stop before the position limit
StateNN/active Same as isLimiting. The robot application shows it as warning WA_PVA_LIMITER_ACTIVE (211)

Turn it off

axesLimiters/enable turns the limiter off for all axes, LimitsNN/enable for one axis. A limiter that is off passes the setpoint through unchanged.

Axes with a velocity setpoint

An axis that gets a velocity setpoint through axesVelocitiesInput has no position setpoint for the limiter to follow. Tell the limiter to take the velocity as its command instead:

Parameter under LimitsNN/ Set to Why
enableInput 0 There is no position setpoint
enableInputDot 1 Use the velocity setpoint
enablePositionLimit 0 for a wheel, 1 otherwise With 1, the axis still stops on its position limits