Simple two-theta virtual motor
r2107 | dcl | 2007-08-10 10:33:21 +1000 (Fri, 10 Aug 2007) | 2 lines
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
VarMake detector_distance Float User
|
||||
VarMake detector_base Float User
|
||||
VarMake slit4_distance Float User
|
||||
VarMake slit4_base Float User
|
||||
VarMake sample_distance Float User
|
||||
VarMake sample_base Float User
|
||||
VarMake slit3_distance Float User
|
||||
VarMake slit3_base Float User
|
||||
|
||||
detector_distance 10000
|
||||
detector_base 300
|
||||
slit4_distance 6000
|
||||
slit4_base 20
|
||||
sample_distance 5800
|
||||
sample_base 50
|
||||
slit3_distance 5600
|
||||
slit3_base 20
|
||||
|
||||
proc set_two_theta { arg } {
|
||||
set d1 [expr [SplitReply [detector_distance]] - [SplitReply [sample_distance]]]
|
||||
set d2 [expr [SplitReply [slit4_distance]] - [SplitReply [sample_distance]]]
|
||||
set h1 [expr [SplitReply [detector_base]] + $d1 * tan($arg)]
|
||||
set h2 [expr [SplitReply [slit4_base]] + $d2 * tan($arg)]
|
||||
return "dz=$h1,st4vt=$h2"
|
||||
}
|
||||
publish set_two_theta user
|
||||
|
||||
proc get_two_theta {} {
|
||||
set d1 [expr [SplitReply [detector_distance]] - [SplitReply [sample_distance]]]
|
||||
set h1 [expr [SplitReply [dz]] - [SplitReply [detector_base]]]
|
||||
return [expr atan2($h1, $d1)]
|
||||
}
|
||||
publish get_two_theta user
|
||||
|
||||
MakeConfigurableMotor two_theta
|
||||
two_theta readscript get_two_theta
|
||||
two_theta drivescript set_two_theta
|
||||
|
||||
|
||||
Reference in New Issue
Block a user