Skip to main content

Tolerances for Path Accuracy

Tolerances for path accuracy can be set for axis groups. In the event of an unexpected movement of a dynamic coordinate system, these tolerances allow an axis group to catch up with this coordinate system instead of stopping with error SMC_AXIS_GROUP_MAX_AXIS_LAG_EXCEEDED, SMC_AXIS_GROUP_MAX_POSITION_LAG_EXCEEDED, or SMC_AXIS_GROUP_MAX_ORIENTATION_LAG_EXCEEDED.

Overview

Why are tolerances necessary for path accuracy? Ideally, the axis group should follow the path exactly. However, if a dynamic coordinate system is used (for example, an object on a belt or rotary table, or a coordinate system specified by another axis group), then in some cases it is not possible to follow the path.

Example: A robot should place a part on a conveyor belt. The belt moves at a constant velocity, but just before the robot reaches the position to place the part, the belt accelerates unexpectedly. In this situation, the trajectory for placing the part has already been calculated, but with the assumption that the belt continues to move at a constant velocity. Therefore, the remaining movement may now lead to a violation of the maximum acceleration of one of the axes of the robot.

In situations like this, the tolerances are important. They allow the axis group to deviate from the path within the specified limits and catch up with the coordinate system again.

The path accuracy is controlled by a filter. The filter receives the planned trajectory (q_ref) and the last calculated target positions (q_set) as input. The output of the filter are the target positions (q_set), which are transferred to the drives. If q_ref violates one of the axis limits, then the filter leaves the path and follows the planned trajectory as closely as possible without violating an axis limit. As long as the lag between q_set and q_ref is within the tolerances, no error is output.

_sm_img_path_tolerances.png

The tolerances for the path accuracy consist of several values:

  • Maximum lag of the TCP in technical units (default value: 1 u)

  • Maximum orientation error of the TCP in angular degrees (default value: 1 deg)

  • Maximum allowed lag of each axis in technical units of the axis (default value: infinity)

Effect on administrative function blocks

The values for position, velocity, acceleration, and jerk which are returned by the SMC_GroupReadSetPosition, SMC_GroupReadSetVelocity, SMC_GroupReadSetAcceleration, and SMC_GroupReadSetJerk function blocks are calculated based on the planned trajectory (q_ref). Therefore, they do not contain the contribution of the filter.

On the other hand, the actual values of position, velocity, and jerk – which are returned by the MC_GroupReadActualPosition, MC_GroupReadActualVelocity, and MC_GroupReadActualAcceleration function blocks – are calculated based on the actual position of the drives of the axis group. Therefore, they also contain the contribution of the filter.

The path dynamics which are returned by SMC_GroupReadPathDynamics with Source = MC_SOURCE.SET is based on the planned trajectory (q_ref) and is therefore not influenced by the filter. (For other values of the Source input, the contribution of the filter is included)

Triggers always refer to the planned trajectory (q_ref). The time which is returned by MC_GroupReadTrigger is the time when the planned trajectory reaches the trigger. When the filter is active (q_ref<>q_set), the axis group does not usually reach the position and/or time of the trigger exactly.

Note: A movement reports Done only when both the planned trajectory (q_ref) has reached the end of the movement and the filter is not (or no longer) active (i.e. a possible lag has been eliminated). Then the set position (q_set) corresponds to the target position of the movement.

Setting the tolerances and monitoring of the path deviation

The tolerances can be set using the SMC_GroupSetPathTolerance function block.

The status of the filter and the current lag between the planned trajectory q_ref and the set values q_set of the axis group can be monitored with the InSync, PositionLag, and OrientationLag outputs of MC_GroupReadStatus. InSync = TRUE means that q_ref = q_set and that the filter is not active. InSync = FALSE means that q_ref<>q_set and that the filter is active.