48 lines
1.4 KiB
Plaintext
Executable File
48 lines
1.4 KiB
Plaintext
Executable File
Take a six circle diffractometer with angles:
|
|
|
|
delta, nu, mu, eta, chi, phi
|
|
|
|
and virtual angles:
|
|
|
|
qaz, naz, psi, alpha, beta.
|
|
|
|
Many combinations of these can be constrained:
|
|
|
|
|
|
constrain
|
|
>>> con nu
|
|
>>> con psi
|
|
>>> con mu
|
|
>>> con nu mu a_eq_b
|
|
|
|
real angles are always constrained to there last set position. If they are too far from here
|
|
an error will result.
|
|
|
|
>>> pos nu 0 (moves, parameter tracks last set value (actually checks it when hkl moved))
|
|
>>> pos psi 90 (does not move, sets parameter in diffcalc)
|
|
>>> pos mu 0 (moves)
|
|
>>> pos hkl [1 0 0] (moves based on last set nu, psi, mu)
|
|
>>> pos betain --> Exception, not constrained
|
|
|
|
moving a virtual angle simply sets it to efftec the next hkl move
|
|
|
|
Here we need onlu con, uncon and pos.
|
|
|
|
......
|
|
|
|
However it would be nice to be able to pos betain for example and have it change
|
|
betain while staying on the same reflection. This might be enabled by locking the
|
|
the current hkl position. It would be trick to make this work with the physical angles though.
|
|
|
|
>>> lock hkl
|
|
>>> pos psi 90 (moves immediately)
|
|
>>> scan psi 0 90 1 (scans, moving immediately)
|
|
>>> pos mu 0 (does not move immediately) (could work by listening to target positions, and triggering move when complete)
|
|
>>> pos c(mu) moves
|
|
>>> pos mu_c moves
|
|
|
|
Only one thing would be varyable at a time unless they are put in a CoordinatedMotionGroup,
|
|
which would be hard for the real motors)
|
|
|
|
|