Homing mode for multi-turn absolute encoder and limited axis

Hello Nicolò,

  1. Does the encoder range of a multiturn encoder correspond to single-turn resolution * multiturn resolution?

It refers to the entire multiturn encoder range (X counts per rev * Y multi-turn revs).

  1. Why is it better to choose the restore position when the encoder range is smaller than the movement range?

To speed up the startup of the axis. If the axis limits are within the encoder range, then there is a 1:1 mapping between encoder positions and valid axis positions. Just by reading the encoder, and using a stored homing offset, the physical position is always known.
*** This doesn’t answer the above question. See later posts for correction. ***

  1. Why, with the restore position mode, when the power is switched off, the encoder is not permitted to change by more than one half of the counting range in order for the position to be successfully restored? Is it possible to have an example that explains this problem?

This is because there is an implicit assumption that the encoder hasn’t moved more than half of the counting range in the software. It’s the (best?) way to determine how the encoder has moved. The encoder can’t track full multi-turn roll-overs, so while the power is off, this information is lost.

Example (numbers simplified to make it easier):
I have a multiturn encoder that has 10 counts per revolution and can track 10 revolutions. This means I will receive a number between 0 and 100 back from the encoder. The encoder is the physical count value from the encoder, the axis is the position tracked by the drive/motion software.

  • I start my machine and perform a full home (to some calibrated stop). The encoder reports position 40 at my home location.
    [Encoder says 40, Axis says 0]
  • I run my axis and move to position 240. The encoder rolls over its multiturn twice and is reporting 40. The axis is tracking the rollovers and therefore reports the accurate position.
    [Encoder says 40, Axis says 200]
  • My machine is then powered off. The axis remembers an offset of 160 (restore position).
  • My machine powers on, and the encoder reports position 35. We as humans would make the assumption that the motor only moved 5 counts backwards, the axis does the same. Restores the offset of 160 and the axis says position 195.
    [Encoder says 35, Axis says 195]
  • Power cycle the machine again, and now the encoder reports 95. The axis must now make a decision as to whether the motor rolled forward 60 counts, or backwards 40 counts. The axis uses the lower movement count, and assumes the motor moved back 40 counts.
    [Encoder says 95, Axis says 155]

Note that there is no difference in the encoder position if I was at axis position 55, 155 or 255. In each position, the Encoder would report back 95. Since the axis can’t track encoder multi-turn rollovers while the power is off, there is an implicit assumption that the axis has not moved more than half its maximum value.
Bonus example: If the encoder is a 10 count single-turn encoder, then the motor can’t move more than 5 counts while the power is off. This makes axis position 55, 65, 75, etc. have the same encoder position.

  1. Is the restore position mode equivalent to absolute (or absolute correction), just using a retain structure with which to automatically homing on [initialization]?

Functionally, yes. (Not 100% sure there’s not some caveat I’m missing here)

  1. If I use the absolute correction homing mode instead of the absolute homing mode, but have no overflow, is this a problem? Does the overflow of a multiturn encoder correspond to the number of revolutions going to 0?

Should not be a problem. Yes, the multiturn encoder overflow occurs when the number of revolutions the encoder is tracking resets to 0.

2 Likes