How to handle movements next to or to the software position end limit

1 Introduction
In the past there has been some support cases addressing the ACOPOS error 5003: “Positive SW limit reached” and 5004: “Negative SW limit reached” (ACP10) or -1067379828 and or -1067379829 (mappMotion) when a movement command to the exact software position end limit gets executed.

Such an error case e.g. can happen when someone uses a cnc program which includes a movement command to the exact software position end limit for a specific axis. On the other hand, the same situation can happen e.g. when someone is using the MC_BR_MoveCyclicPosition FB and moves to the configured software position end limit. Generally said, any movement command to the software position end limit can trigger such an error.

1.1 Useful AS help sections
Motion control → ACP10/ARNC0 → Reference manual → ACP10 → ACOPOS Error Texts → 5003: Positive SW limit reached (or 5004: Negative SW limit reached)

Motion control → mapp Motion → General information →Status numbers → ACOPOS Error Texts → -1067379829: Positive SW limit reached (or -1067379828: Negative SW limit reached)

Motion control → mapp Motion → General information → Status numbers → Axes group status numbers → -1067245426: Axis out of position limits. Axis {Name}. Position: {Value}.

1.2 Configuration place in AS project

Axis init parameter table in ACP10:

Axis configuration file in mappMotion:

2 Analysis and root cause
Some improvements from the software side got made here, in order to make the position area for triggering the error around the software position end limit more tolerant.

Latest improvement seems to be the following according the ACP10 RevInfo:

ID400309072 : solved problem, solved since V5.14.1

SW limits, cyclic network coupling: Error 5003 or 5004 when moving with cyclical setpoint generation via network coupling

When moving with a cyclical position set value generation (CMD_CYC_ABS_MOVE), in certain cases, the following errors were incorrectly reported:*

- 5003: “Positive SW limit reached”

- 5004: “Negative SW limit reached”

This error behavior occurred especially when the target position was exactly the positive or negative Software end position and with quadratic network interpolation. Disruptive effects resulted primarily in connection with the PLCopen function blocks

- MC_BR_MoveCyclicPosition

- MC_BR_MoveCyclicPositionExt

or with axes group movements.

3 Possible Workaround and suggestion
The error regarding exceeding the software end limit can be caused by the quadratic interpolation in connection with the setpoint generation and the resulting oscillation in the decimal place range of the position values.

This oscillation makes it possible, that trying to move exactly to the software end position is causing an error. This oscillation in connection with the set position generation cannot be prevented, and also depends on different parameters like e.g. also the movement parameters like velocity and acceleration. In connection with the evaluation of the error linked to exceeding the software limits, a tolerance window is taken into consideration. This tolerance window allows to slightly exceed the software end limit during this oscillation phase.

In connection with the linked A&P to support ticket 400309072 (from RevInfo) this tolerance window got increased in order to be able to move to the software limits with the given movement parameters. This tolerance window increasement nevertheless also has its limits and due to this is not working for all might possible parameter combinations.

Since increasing the tolerance window also means, that the triggering of the error might get falsified or is happening to late, a further increase is not possible or found to be good anymore.

Suggestions/Solution for that:
Do not move directly to the software end limits. This is a limit value which is observed in connection with triggering a linked error. Solution is, to move to a value at least 1 unit within the software limit’s range.

It gets suggested to check inside the project/Network command trace what the configured values for AXLIM_POS_SW_END and AXLIM_NEG_SW_END are and then verify if the actual movement of the axis stays within those limit values. Those limit values are not allowed to get exceeded with active software end limit monitoring.