In motion control, there are typically two types of positioning that can be used for a linear or rotary axis: relative, in which each position is based on a previous position, regardless of the actual position of the axis; or absolute, in which each position is referenced to a home, or zero, point.

Axes that have very long strokes, or those with “endless” positioning, such as rotary tables and conveyors, typically use multi-turn absolute encoders. Multi-turn designs can track the encoder’s position over many revolutions – typically up to 4096. (This is in contrast to single-turn encoders, which reset the position value after each full encoder revolution.) But even absolute positioning using a multi-turn encoder leaves the axis at risk of significant positioning error if the application exceeds the maximum number of encoder revolutions.

*In mathematics, the **modulo operation** finds the remainder after the division of two numbers. A simple example: (9 mod 4) equates to 1, because when 9 is divided by 4, the remainder is 1.*

This is where **modulo positioning** comes in. Take for example, a rotary table with a 16-bit multi-turn absolute encoder (capable of 2^{16}, or 4096 turns) mounted to the motor, and driven through a 5:1 gear ratio. In this configuration, every 1 turn of the table requires 5 turns of the motor and encoder. Once the encoder exceeds 4096 turns, an overflow occurs, and the encoder starts counting from zero again.

The first move requires 4.8 table revolutions (4 revolutions + 288 degrees), meaning the motor and encoder have made 24 revolutions (4.8 * 5 = 24). The encoder stores this information, and when the system is powered off and back on, it recognizes the position correctly.

The next move is much larger, with 825.6 table revolutions (825 revolutions + 216 degrees), meaning the motor and encoder make 4128 revolutions (825.6 * 5 = 4128). Because the encoder has exceeded its maximum of 4096 revolutions, an overflow occurs, and the encoder starts counting from zero again, recording only 32 motor/encoder revolutions (4128 – 4096).

When the system is switched off and then on again, it only recognizes that 32 motor/encoder revolutions, or 6.4 table revolutions (6 revolutions + 144 degrees), have taken place. The additional 72 degrees of table movement (216 – 144 = 72), which equals one full motor revolution (72 * 5 = 360), is missing. This loss of position happens each time the encoder exceeds its 4096 revolution limit.

*Note that the overflow problem does not occur if the maximum number of encoder turns can be evenly divided by the gear ratio. For example, a gear ratio of 8:1, when used with a multi-turn encoder that has a maximum of 4096 turns, does not cause lost position, because 8 divides into 4096 evenly (4096 ÷ 8 = 512).*

With modulo positioning, the overflow occurrence is stored in the controller, preventing the loss of positioning information. Alternatively, if the drive offers a “modulo” function, it can be enabled to track and store any encoder overflows. The modulo function is straight-forward to use, requiring the user to enter the modulo value (typically 360 degrees), the relationship between motor/encoder turns and axis turns (or linear travel), and the encoder type and resolution. Both modulo positioning solutions – controller-based or drive-based – ensure that the overflow is accounted for and the actual position is corrected accordingly.