For an application involving the use of a motor with a multi-turn absolute encoder for a limited axis, I need to define the best homing mode.
After performing a homing direct for the first calibration, the help (Decision tree for homing mode) specifies that if the encoder range is greater than the movement range, then the modes to be used are Absolute or Absolute correction, otherwise if the encoder range is less than the movement range the mode to be used is restore position.
As I delve deeper into the three modes, however, a series of questions arise as to which is the correct mode to use in the case of a multi-turn absolute encoder.
In particular, my doubts concern:
Does the encoder range of a multiturn encoder correspond to single-turn resolution * multiturn resolution?
Why is it better to choose the restore position when the encoder range is smaller than the movement range?
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?
Is the restore position mode equivalent to absolute (or absolute correction), just using a retain structure with which to automatically homing on initialisation?
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?
That’s a lot of questions I know, but I just can’t figure out which is the right way to go.
Thank you to anyone who can help me.
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).
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. ***
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.
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)
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.
first of all, thank you for all your answers!
I still have one doubt left:
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.
I am still confused about this aspect. If the encoder range is less than the movement range, it means that the axis limits are not contained in the encoder range, so the 1:1 relationship is only true if there is no movement more than half of the encoder counting range, right? So is it better to choose the restore position mode because it is based on the assumption that no movement greater than half the encoder counting range is made even when the 1:1 relationship cannot be maintained? Or is the reason that in this case there is no difference in using the restore position mode compared to the absolute mode, and that you can therefore use the restore position mode to recover the position automatically?
Sorry, I misread the original question #2 and didn’t answer your actual question. You can disregard my previous attempt at an answer, it’s just wrong .
Okay, let me try again .
Why is it better to choose the restore position when the encoder range is smaller than the movement range?
I assume you are referring to the section in the decision tree marked with the blue box below.
The reason to use the restore position is that it tracks encoder rollovers while power is on and can compensate for them when the power switches back on again. The restore position includes the limitation that you can’t move more than 50% of the full encoder rollover while the power is off but will be able to track the encoder rollovers, unlike Home_Absolute/Absolute_Correction.
Regarding the general topic of homing, here you can find an Online Course for beginners: Link
Note:
The contents are only visible when logged in . You can log in using the access data for the B&R website . B&R customers can obtain their access data from their B&R sales representative or use our Contact form.