Homing with absolute encoders

More
5 years 5 months ago #208374 by PKM
Hello!
I am building a machine with absolute encoders.
So I would like to understand the homing.
linuxcnc.org/docs/html/config/ini-homing...ome_absolute_encoder says:

When a request is made to home the joint, the current joint position is set to the [JOINT_n]HOME_OFFSET value.

Say, I run the machine, encoder positions are read from the drives and passed to joint.N.motor-pos-fb
But why set the current position to [JOINT_n]HOME_OFFSET while it's reasonable to add some pre-defined offset to the motor position instead?
I.e., how is it different from an incremental encoder?

Please Log in to join the conversation.

More
5 years 5 months ago #208504 by andypugh
I don't think that is actually what happens. ie, I suspect that the documentation is wrong.

I don't have actual absolute encoders, but I do have HOME_ABSOLUTE_ENCODER set because there is a way to fake it with single-turn absolute and the position.txt file.

And, what happens, is that the axis position becomes the encoder output position.

Please Log in to join the conversation.

More
5 years 5 months ago #209920 by PKM
Replied by PKM on topic Homing with absolute encoders
I have some troubles with this setting.
Either it doesn't work as supposed or I don't understand something.
I tested at the machine with actual absolute encoders, but it works the same in sim.
Say, edit a [JOINT_0] section in axis_mm config like this
HOME = 10.00
HOME_OFFSET = 10.00
HOME_ABSOLUTE_ENCODER = 2
Then start the machine, home, close the machine. Repeat a few times. Note the axes values. Correspondingly joint.0.motor-offset is decreasing by 10 each time, why?

Please Log in to join the conversation.

More
5 years 5 months ago #209947 by andypugh
I think that HOME_OFFSET needs to be zero.

Please Log in to join the conversation.

More
5 years 5 months ago #210211 by PKM
Replied by PKM on topic Homing with absolute encoders
Not working well either.
Each start of the machine (even doing nothing at all) the joint 0 position gets increased by joint.0.motor-pos-fb value.

Please Log in to join the conversation.

More
5 years 5 months ago #210214 by andypugh
github.com/LinuxCNC/linuxcnc/blob/master...motion/homing.c#L649

Goes straight to
github.com/LinuxCNC/linuxcnc/blob/master...motion/homing.c#L988

Which looks like (with an offset of zero) it should be doing the right thing.

github.com/LinuxCNC/linuxcnc/blob/2e75b0...otion/control.c#L376

Is where joint->pos_fb is updated. I haven't found anywhere in the code that joint->motor_offset is given a non-zero value. There is a command, but as far as I can see it is never called.

github.com/LinuxCNC/linuxcnc/blob/2e75b0...ask/taskintf.cc#L208

Please Log in to join the conversation.

More
5 years 5 months ago #210223 by PKM
Replied by PKM on topic Homing with absolute encoders
This looks like a suspect

github.com/LinuxCNC/linuxcnc/blob/2e58fb...motion/homing.c#L997

I compiled from source, so I can try to change something...

Please Log in to join the conversation.

More
5 years 5 months ago #210225 by PKM
Replied by PKM on topic Homing with absolute encoders
Oh.
I mentioned that the position changed even without homing.
So it must be somewhere else, right?

Please Log in to join the conversation.

More
5 years 5 months ago #210232 by andypugh

PKM wrote: This looks like a suspecthttps://github.com/LinuxCNC/linuxcnc/blob/2e58fb153ca8197d5a2149313fbc7cb300ca0b2f/src/emc/motion/homing.c#L997


That line shouldn't execute if HOME_ABSOLUTE_ENCODER is set.

Please Log in to join the conversation.

More
5 years 5 months ago #210236 by PKM
Replied by PKM on topic Homing with absolute encoders
I understand that it should not...
Anyways, it changes even without homing.
Is the offset kept somewhere when the machine is off? The problem might be there

Please Log in to join the conversation.

Time to create page: 0.105 seconds
Powered by Kunena Forum