Skip to content
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

Reflectometry: A user can zero the motors from the OPI #3895

Closed
John-Holt-Tessella opened this issue Dec 18, 2018 · 6 comments
Closed

Reflectometry: A user can zero the motors from the OPI #3895

John-Holt-Tessella opened this issue Dec 18, 2018 · 6 comments
Assignees

Comments

@John-Holt-Tessella
Copy link
Contributor

As an instrument scientist I want to be able to "zero" a motor when it is on the straight through beamline this is so I can lock in the alignment I have performed.

Ideally this would work in the same way as SECI; if this is hard check with the reflectometry scientists if we can just change offset in IBEX motors.

@ThomasLohnert
Copy link
Contributor

Being able to set 0 on the motor itself is a hard requirement at least for the beginning so that users can switch seamlessly between SECI and IBEX (e.g align beamline in IBEX, then switch to SECI later and have the positions preserved - this would not work with offsets as they are in the motor controller and not available in SECI)

The procedure for redefining zero on a motor in IBEX is setting the motor .SET field to "Set", setting 0 as the motor position, then setting the .SET field back to "Use". The scientists want this operation to be encapsulated in some way, such that they can zero the motors with just one click / command line instrunction.

@ThomasLohnert
Copy link
Contributor

ThomasLohnert commented Mar 15, 2019

Implemented as a function in the scans library. This simply encapsulates a sequence of channel access commands required to redefine zero on a motor. It also uses a lookup dictionary hardcoded to CRISP to lookup the correct motor based on the axis name. Requires a change in genie_python that implements a simple waitfor_pv which waits for a given PV (rather than block) to reach a given value.

This is a temporary solution for convenience while testing on CRISP, hence I have just left it on the branch. Eventually the goal is to zero motors via high level reflectometry parameters. Ticket for this is here: #4131

Scans code
Genie_Python PR

@Tom-Willemsen
Copy link
Contributor

@DominicOram are you still reviewing this or should someone else pick up the review?

@DominicOram
Copy link
Contributor

Sorry, I must have missed that my name was on this. I'll drop it for someone else to pick up.

@John-Holt-Tessella
Copy link
Contributor Author

This needs a test.

@ThomasLohnert
Copy link
Contributor

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants