-
Notifications
You must be signed in to change notification settings - Fork 48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
32-bit limitation on raw motor positions #192
Comments
I stumbled accross the same problem while working with a piezo stage. Something like FRBV, FRMP, FREP. |
I would be interested to know what would break if RRBV, etc. were changed to double and the motor record modified accordingly. It could still treat them as integers, but the number of effective bits would be 52 rather than 32. Would that affect drivers? |
I don't think adding extra asyn parameters & records solves the problem. The motor record thinks the motor is moving in the wrong direction when the raw position rolls over when it hits 32 bits. The workaround we've used for encoders higher than 32-bits is to convert the raw encoder reading into motor units and use it in the RDBL input of the motor with URIP=Yes. |
@MarkRivers Changing RRBV, REP and RMP into double does not give any compilation warnings for All in all, the RDBL solution seems a good way forward to me, thanks @kmpeters |
The
RRBV
,REP
, andRMP
are currently limited to 32 bits:motor/motorApp/MotorSrc/motorRecord.dbd
Lines 578 to 589 in 302d4d6
Changing the fields from
DBF_LONG
toDBF_INT64
will break compability with EPICS base 3.15. Higher-resolution encoders are going to be increasingly common.The text was updated successfully, but these errors were encountered: