Modulo positioning
The modulo positioning can be applied to closed linear axes as well as to rotary axes. TwinCAT does not distinguish between these types. A modulo axis has a consecutive absolute position in the range ±∞. The modulo position of the axis provides additional information about the absolute axis position. Modulo positioning represents the required target position in a different way.
Unlike absolute positioning, in which the user specifies the target unambiguously, in MC3 modulo positioning, the absolute target position is determined based on the following parameters:
- MC3 axis parameters:
- Position Modulus
- Position Modulo Tolerance Window
- Tc3_Mc3Ptp.MC_MoveModulo input parameters
- MC_MoveModulo.Position
- MC_MoveModulo.AdditionalTurns
- MC_MoveModulo.Direction
Axis parameterization
Modulo support must be enabled on an MC3 axis using the “Is Modulo Axis” parameter. If this parameter is set, the other modulo parameters can be set.

Position Modulus
The Position Modulus parameter defines the modulo factor used to calculate the modulo rotation and modulo position.
Position Modulo Tolerance Window
The Position Modulo Tolerance Window parameter defines a position window around the current modulo target position of the axis. The position window is equal to twice the specified value (target position ± position window).
The positioning of an axis is always referenced to its current actual position. Unintentional revolutions may be performed if the actual position and the target position are very close to each other. For example, if the actual position is slightly greater than the target position and MC_MoveModulo.Direction= EModuloDirection.PositiveDirection has been selected. This can occur, in particular, when the actual position is determined inaccurately. In order to avoid this, a tolerance window for modulo positioning can be set. If the distance between the start and target positions is less than or equal to the tolerance window, the target position is approached via the shortest path (as with MC_ MoveModulo.Direction = EModuloDirection.ShortestDistance), i.e. even if this is opposite to the specified direction.

Cyclical interface
The target and actual modulo positions can be included in the cyclic interface.


PLC programming
An MC3 axis is moved to a modulo position using the MC_MoveModulo function block from the Tc3_Mc3Ptp library.
MC_MoveModulo.Position
With modulo positioning, the target position must be less than or equal to the axis's configured position modulus.
MC_MoveModulo.AdditionalTurns
If a defined number of revolutions is to be performed before reaching the target position, this number must be specified via the AdditionalTurns input.
MC_MoveModulo.Direction
The direction of motion is specified via the Direction input of the EModuloDirection type from the Tc3_Mc3Ptp library. The possible values are:
ShortestDistancePositiveDirectionNegativeDirection