SSI ABS Encoder
06 May 2021 14:27 - 04 Nov 2022 00:53 #208118
by nhanpham
Replied by nhanpham on topic SSI ABS Encoder
What does hm2_7i80.0.ssi.00.zencoder.rawcounts
show?
it shows from 0-4096
But when I restart linux cnc, the values (3072 to 4096 ) is negative numbers from -1024 ->-1
Last edit: 04 Nov 2022 00:53 by nhanpham.
Please Log in or Create an account to join the conversation.
06 May 2021 14:32 #208121
by andypugh
This is starting to look like it's my fault, then.
However I am fairly sure that the encoder wrapping logic works properly, as it is used extensively by things like the smart-serial MPG counters.
Is the returned position continuous at least? If it is then the conventional axis home offsets will mask the issue.
Replied by andypugh on topic SSI ABS Encoder
The values return from 0x0000000->0x0000ffff for 0->4096
This is starting to look like it's my fault, then.
However I am fairly sure that the encoder wrapping logic works properly, as it is used extensively by things like the smart-serial MPG counters.
Is the returned position continuous at least? If it is then the conventional axis home offsets will mask the issue.
Please Log in or Create an account to join the conversation.
06 May 2021 14:34 #208122
by nhanpham
Replied by nhanpham on topic SSI ABS Encoder
can you see the video?
thank you very much
thank you very much
Please Log in or Create an account to join the conversation.
06 May 2021 14:39 #208123
by andypugh
I think what is happening is that the initial change from the initialisation value of zero and the first real data is looking like an encoder wrap. But if the M flag is set then it shouldn't even be running the wrap code.
Replied by andypugh on topic SSI ABS Encoder
But when I restart linux cnc, the values (3072 to 4096 ) is negative numbers from -1024 ->-1
I think what is happening is that the initial change from the initialisation value of zero and the first real data is looking like an encoder wrap. But if the M flag is set then it shouldn't even be running the wrap code.
Please Log in or Create an account to join the conversation.
06 May 2021 14:46 #208125
by nhanpham
i only reboot my LinuxCNC. The power of the encoder is still ON
Replied by nhanpham on topic SSI ABS Encoder
But when I restart linux cnc, the values (3072 to 4096 ) is negative numbers from -1024 ->-1
I think what is happening is that the initial change from the initialisation value of zero and the first real data is looking like an encoder wrap. But if the M flag is set then it shouldn't even be running the wrap code.
i only reboot my LinuxCNC. The power of the encoder is still ON
Please Log in or Create an account to join the conversation.
06 May 2021 14:52 #208126
by andypugh
Replied by andypugh on topic SSI ABS Encoder
And I think I see the problem.
github.com/LinuxCNC/linuxcnc/blob/master...2/abs_encoder.c#L258
The check will fail for a "me" as the check list does not contain "m".
Which means that you can't use the "%12me" specifier (that would raise an error) and "%12em" will simply not parse the m.
Are you running LinuxCNC 2.8 or are you running master from buildbot? I can get a fix in to the master .debs pretty quickly.
If you are building from source then that would be even better, as you can test the fix before I make it...
github.com/LinuxCNC/linuxcnc/blob/master...2/abs_encoder.c#L258
The check will fail for a "me" as the check list does not contain "m".
Which means that you can't use the "%12me" specifier (that would raise an error) and "%12em" will simply not parse the m.
Are you running LinuxCNC 2.8 or are you running master from buildbot? I can get a fix in to the master .debs pretty quickly.
If you are building from source then that would be even better, as you can test the fix before I make it...
Please Log in or Create an account to join the conversation.
06 May 2021 15:00 #208128
by andypugh
Yes, but when you reboot LinuxCNC the internal "last position" is zero, and the wrap-detection kicks in.
This isn't typically wrong as-such, though it really should be returning -2048 for 2048 and 2047 for 2047
I think that you should see the same behaviour if the encoder is also powered down?
Replied by andypugh on topic SSI ABS Encoder
i only reboot my LinuxCNC. The power of the encoder is still ON
Yes, but when you reboot LinuxCNC the internal "last position" is zero, and the wrap-detection kicks in.
This isn't typically wrong as-such, though it really should be returning -2048 for 2048 and 2047 for 2047
I think that you should see the same behaviour if the encoder is also powered down?
Please Log in or Create an account to join the conversation.
06 May 2021 15:16 #208130
by nhanpham
i tried to turn off the power of encoder when the linuxcnc work. When i turn on the power then the data is correct.
I am using the brand s_kins ( github.com/LinuxCNC/linuxcnc/tree/dgarr/s_kins)
Sorry for my English. I am learning English.
Replied by nhanpham on topic SSI ABS Encoder
i only reboot my LinuxCNC. The power of the encoder is still ON
Yes, but when you reboot LinuxCNC the internal "last position" is zero, and the wrap-detection kicks in.
This isn't typically wrong as-such, though it really should be returning -2048 for 2048 and 2047 for 2047
I think that you should see the same behaviour if the encoder is also powered down?
i tried to turn off the power of encoder when the linuxcnc work. When i turn on the power then the data is correct.
I am using the brand s_kins ( github.com/LinuxCNC/linuxcnc/tree/dgarr/s_kins)
Sorry for my English. I am learning English.
Please Log in or Create an account to join the conversation.
06 May 2021 16:21 #208132
by andypugh
Replied by andypugh on topic SSI ABS Encoder
If you are building from source, can you try editing abs_encoder.c, so that line 258 is
And then see if "%12me" fixes the problem?
else if (strchr("bBuUsSeEfFpPgGhHlLmM", *format)){
And then see if "%12me" fixes the problem?
Please Log in or Create an account to join the conversation.
06 May 2021 16:40 - 06 May 2021 16:42 #208133
by nhanpham
i tried this. The encoder data returned : 0->2047 - 2047 -2046 ...->-1 for 0->4096 datas
Is it correct?
Replied by nhanpham on topic SSI ABS Encoder
If you are building from source, can you try editing abs_encoder.c, so that line 258 is
else if (strchr("bBuUsSeEfFpPgGhHlLmM", *format)){
And then see if "%12me" fixes the problem?
i tried this. The encoder data returned : 0->2047 - 2047 -2046 ...->-1 for 0->4096 datas
Is it correct?
Last edit: 06 May 2021 16:42 by nhanpham.
Please Log in or Create an account to join the conversation.
Time to create page: 0.081 seconds